michael@0: /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ michael@0: /* This Source Code Form is subject to the terms of the Mozilla Public michael@0: * License, v. 2.0. If a copy of the MPL was not distributed with this michael@0: * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ michael@0: michael@0: #ifndef WindowDefs_h__ michael@0: #define WindowDefs_h__ michael@0: michael@0: /* michael@0: * nsWindowDefs - nsWindow related definitions, consts, and macros. michael@0: */ michael@0: michael@0: #include "nsBaseWidget.h" michael@0: #include "nsdefs.h" michael@0: #include "resource.h" michael@0: michael@0: /************************************************************** michael@0: * michael@0: * SECTION: defines michael@0: * michael@0: **************************************************************/ michael@0: michael@0: // A magic APP message that can be sent to quit, sort of like a QUERYENDSESSION/ENDSESSION, michael@0: // but without the query. michael@0: #define MOZ_WM_APP_QUIT (WM_APP+0x0300) michael@0: // Used as a "tracer" event to probe event loop latency. michael@0: #define MOZ_WM_TRACE (WM_APP+0x0301) michael@0: // Our internal message for WM_MOUSEWHEEL, WM_MOUSEHWHEEL, WM_VSCROLL and michael@0: // WM_HSCROLL michael@0: #define MOZ_WM_MOUSEVWHEEL (WM_APP+0x0310) michael@0: #define MOZ_WM_MOUSEHWHEEL (WM_APP+0x0311) michael@0: #define MOZ_WM_VSCROLL (WM_APP+0x0312) michael@0: #define MOZ_WM_HSCROLL (WM_APP+0x0313) michael@0: #define MOZ_WM_MOUSEWHEEL_FIRST MOZ_WM_MOUSEVWHEEL michael@0: #define MOZ_WM_MOUSEWHEEL_LAST MOZ_WM_HSCROLL michael@0: // If a popup window is being activated, we try to reactivate the previous michael@0: // window with this message. michael@0: #define MOZ_WM_REACTIVATE (WM_APP+0x0314) michael@0: michael@0: // Internal message for ensuring the file picker is visible on multi monitor michael@0: // systems, and when the screen resolution changes. michael@0: #define MOZ_WM_ENSUREVISIBLE (WM_APP+0x374F) michael@0: michael@0: #ifndef SM_CXPADDEDBORDER michael@0: #define SM_CXPADDEDBORDER 92 michael@0: #endif michael@0: michael@0: #ifndef WM_THEMECHANGED michael@0: #define WM_THEMECHANGED 0x031A michael@0: #endif michael@0: michael@0: #ifndef WM_GETOBJECT michael@0: #define WM_GETOBJECT 0x03d michael@0: #endif michael@0: michael@0: #ifndef PBT_APMRESUMEAUTOMATIC michael@0: #define PBT_APMRESUMEAUTOMATIC 0x0012 michael@0: #endif michael@0: michael@0: #ifndef WM_MOUSEHWHEEL michael@0: #define WM_MOUSEHWHEEL 0x020E michael@0: #endif michael@0: michael@0: #ifndef MOUSEEVENTF_HWHEEL michael@0: #define MOUSEEVENTF_HWHEEL 0x01000 michael@0: #endif michael@0: michael@0: #ifndef WM_MOUSELEAVE michael@0: #define WM_MOUSELEAVE 0x02A3 michael@0: #endif michael@0: michael@0: #ifndef SPI_GETWHEELSCROLLCHARS michael@0: #define SPI_GETWHEELSCROLLCHARS 0x006C michael@0: #endif michael@0: michael@0: #ifndef SPI_SETWHEELSCROLLCHARS michael@0: #define SPI_SETWHEELSCROLLCHARS 0x006D michael@0: #endif michael@0: michael@0: #ifndef MAPVK_VSC_TO_VK michael@0: #define MAPVK_VK_TO_VSC 0 michael@0: #define MAPVK_VSC_TO_VK 1 michael@0: #define MAPVK_VK_TO_CHAR 2 michael@0: #define MAPVK_VSC_TO_VK_EX 3 michael@0: #define MAPVK_VK_TO_VSC_EX 4 michael@0: #endif michael@0: michael@0: // ConstrainPosition window positioning slop value michael@0: #define kWindowPositionSlop 20 michael@0: michael@0: // Origin of the system context menu when displayed in full screen mode michael@0: #define MOZ_SYSCONTEXT_X_POS 20 michael@0: #define MOZ_SYSCONTEXT_Y_POS 20 michael@0: michael@0: // Drop shadow window style michael@0: #define CS_XP_DROPSHADOW 0x00020000 michael@0: michael@0: // Don't put more than this many rects in the dirty region, just fluff michael@0: // out to the bounding-box if there are more michael@0: #define MAX_RECTS_IN_REGION 100 michael@0: michael@0: // App Command messages for IntelliMouse and Natural Keyboard Pro michael@0: // These messages are not included in Visual C++ 6.0, but are in 7.0+ michael@0: #ifndef WM_APPCOMMAND michael@0: #define WM_APPCOMMAND 0x0319 michael@0: #endif michael@0: michael@0: #define FAPPCOMMAND_MASK 0xF000 michael@0: michael@0: #ifndef WM_GETTITLEBARINFOEX michael@0: #define WM_GETTITLEBARINFOEX 0x033F michael@0: #endif michael@0: michael@0: #ifndef CCHILDREN_TITLEBAR michael@0: #define CCHILDREN_TITLEBAR 5 michael@0: #endif michael@0: michael@0: #ifndef APPCOMMAND_BROWSER_BACKWARD michael@0: #define APPCOMMAND_BROWSER_BACKWARD 1 michael@0: #define APPCOMMAND_BROWSER_FORWARD 2 michael@0: #define APPCOMMAND_BROWSER_REFRESH 3 michael@0: #define APPCOMMAND_BROWSER_STOP 4 michael@0: #define APPCOMMAND_BROWSER_SEARCH 5 michael@0: #define APPCOMMAND_BROWSER_FAVORITES 6 michael@0: #define APPCOMMAND_BROWSER_HOME 7 michael@0: michael@0: /* michael@0: * Additional commands currently not in use. michael@0: * michael@0: *#define APPCOMMAND_VOLUME_MUTE 8 michael@0: *#define APPCOMMAND_VOLUME_DOWN 9 michael@0: *#define APPCOMMAND_VOLUME_UP 10 michael@0: *#define APPCOMMAND_MEDIA_NEXTTRACK 11 michael@0: *#define APPCOMMAND_MEDIA_PREVIOUSTRACK 12 michael@0: *#define APPCOMMAND_MEDIA_STOP 13 michael@0: *#define APPCOMMAND_MEDIA_PLAY_PAUSE 14 michael@0: *#define APPCOMMAND_LAUNCH_MAIL 15 michael@0: *#define APPCOMMAND_LAUNCH_MEDIA_SELECT 16 michael@0: *#define APPCOMMAND_LAUNCH_APP1 17 michael@0: *#define APPCOMMAND_LAUNCH_APP2 18 michael@0: *#define APPCOMMAND_BASS_DOWN 19 michael@0: *#define APPCOMMAND_BASS_BOOST 20 michael@0: *#define APPCOMMAND_BASS_UP 21 michael@0: *#define APPCOMMAND_TREBLE_DOWN 22 michael@0: *#define APPCOMMAND_TREBLE_UP 23 michael@0: *#define FAPPCOMMAND_MOUSE 0x8000 michael@0: *#define FAPPCOMMAND_KEY 0 michael@0: *#define FAPPCOMMAND_OEM 0x1000 michael@0: */ michael@0: michael@0: #define GET_APPCOMMAND_LPARAM(lParam) ((short)(HIWORD(lParam) & ~FAPPCOMMAND_MASK)) michael@0: michael@0: /* michael@0: *#define GET_DEVICE_LPARAM(lParam) ((WORD)(HIWORD(lParam) & FAPPCOMMAND_MASK)) michael@0: *#define GET_MOUSEORKEY_LPARAM GET_DEVICE_LPARAM michael@0: *#define GET_FLAGS_LPARAM(lParam) (LOWORD(lParam)) michael@0: *#define GET_KEYSTATE_LPARAM(lParam) GET_FLAGS_LPARAM(lParam) michael@0: */ michael@0: #endif // #ifndef APPCOMMAND_BROWSER_BACKWARD michael@0: michael@0: //Tablet PC Mouse Input Source michael@0: #define TABLET_INK_SIGNATURE 0xFFFFFF00 michael@0: #define TABLET_INK_CHECK 0xFF515700 michael@0: #define TABLET_INK_TOUCH 0x00000080 michael@0: #define MOUSE_INPUT_SOURCE() WinUtils::GetMouseInputSource() michael@0: michael@0: /************************************************************** michael@0: * michael@0: * SECTION: enums michael@0: * michael@0: **************************************************************/ michael@0: michael@0: // nsWindow::sCanQuit michael@0: typedef enum michael@0: { michael@0: TRI_UNKNOWN = -1, michael@0: TRI_FALSE = 0, michael@0: TRI_TRUE = 1 michael@0: } TriStateBool; michael@0: michael@0: /************************************************************** michael@0: * michael@0: * SECTION: constants michael@0: * michael@0: **************************************************************/ michael@0: michael@0: /* michael@0: * Native windows class names michael@0: * michael@0: * ::: IMPORTANT ::: michael@0: * michael@0: * External apps and drivers depend on window class names. michael@0: * For example, changing the window classes could break michael@0: * touchpad scrolling or screen readers. michael@0: */ michael@0: const uint32_t kMaxClassNameLength = 40; michael@0: const char kClassNameHidden[] = "MozillaHiddenWindowClass"; michael@0: const char kClassNameGeneral[] = "MozillaWindowClass"; michael@0: const char kClassNameDialog[] = "MozillaDialogClass"; michael@0: const char kClassNameDropShadow[] = "MozillaDropShadowWindowClass"; michael@0: const char kClassNameTemp[] = "MozillaTempWindowClass"; michael@0: michael@0: /************************************************************** michael@0: * michael@0: * SECTION: structs michael@0: * michael@0: **************************************************************/ michael@0: michael@0: // Used for synthesizing events michael@0: struct KeyPair { michael@0: uint8_t mGeneral; michael@0: uint8_t mSpecific; michael@0: KeyPair(uint32_t aGeneral, uint32_t aSpecific) michael@0: : mGeneral(uint8_t(aGeneral)), mSpecific(uint8_t(aSpecific)) {} michael@0: }; michael@0: michael@0: #if (WINVER < 0x0600) michael@0: struct TITLEBARINFOEX michael@0: { michael@0: DWORD cbSize; michael@0: RECT rcTitleBar; michael@0: DWORD rgstate[CCHILDREN_TITLEBAR + 1]; michael@0: RECT rgrect[CCHILDREN_TITLEBAR + 1]; michael@0: }; michael@0: #endif michael@0: michael@0: namespace mozilla { michael@0: namespace widget { michael@0: michael@0: struct MSGResult michael@0: { michael@0: // Result for the message. michael@0: LRESULT& mResult; michael@0: // If mConsumed is true, the caller shouldn't call next wndproc. michael@0: bool mConsumed; michael@0: michael@0: MSGResult(LRESULT* aResult = nullptr) : michael@0: mResult(aResult ? *aResult : mDefaultResult), mConsumed(false) michael@0: { michael@0: } michael@0: michael@0: private: michael@0: LRESULT mDefaultResult; michael@0: }; michael@0: michael@0: } // namespace widget michael@0: } // namespace mozilla michael@0: michael@0: /************************************************************** michael@0: * michael@0: * SECTION: macros michael@0: * michael@0: **************************************************************/ michael@0: michael@0: #define NSRGB_2_COLOREF(color) \ michael@0: RGB(NS_GET_R(color),NS_GET_G(color),NS_GET_B(color)) michael@0: #define COLOREF_2_NSRGB(color) \ michael@0: NS_RGB(GetRValue(color), GetGValue(color), GetBValue(color)) michael@0: michael@0: #define VERIFY_WINDOW_STYLE(s) \ michael@0: NS_ASSERTION(((s) & (WS_CHILD | WS_POPUP)) != (WS_CHILD | WS_POPUP), \ michael@0: "WS_POPUP and WS_CHILD are mutually exclusive") michael@0: michael@0: #endif /* WindowDefs_h__ */