/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ /* ***** BEGIN LICENSE BLOCK ***** * Version: MPL 1.1/GPL 2.0/LGPL 2.1 * * The contents of this file are subject to the Mozilla Public License Version * 1.1 (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" basis, * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License * for the specific language governing rights and limitations under the * License. * * The Original Code is mozilla.org code. * * The Initial Developer of the Original Code is * Mozilla Foundation. * Portions created by the Initial Developer are Copyright (C) 2009 * the Initial Developer. All Rights Reserved. * * Contributor(s): * Jim Mathies . * * Alternatively, the contents of this file may be used under the terms of * either the GNU General Public License Version 2 or later (the "GPL"), or * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), * in which case the provisions of the GPL or the LGPL are applicable instead * of those above. If you wish to allow use of your version of this file only * under the terms of either the GPL or the LGPL, and not to allow others to * use your version of this file under the terms of the MPL, indicate your * decision by deleting the provisions above and replace them with the notice * and other provisions required by the GPL or the LGPL. If you do not delete * the provisions above, a recipient may use your version of this file under * the terms of any one of the MPL, the GPL or the LGPL. * * ***** END LICENSE BLOCK ***** */ #ifndef WindowDefs_h__ #define WindowDefs_h__ /* * nsWindowDefs - nsWindow related definitions, consts, and macros. */ #include "nsBaseWidget.h" #include "nsdefs.h" #include "resource.h" /************************************************************** * * SECTION: defines * **************************************************************/ // GetWindowsVersion constants #define WIN2K_VERSION 0x500 #define WINXP_VERSION 0x501 #define WIN2K3_VERSION 0x502 #define VISTA_VERSION 0x600 #define WIN7_VERSION 0x601 #define WM_XP_THEMECHANGED 0x031A #ifndef WM_GETOBJECT #define WM_GETOBJECT 0x03d #endif #ifndef PBT_APMRESUMEAUTOMATIC #define PBT_APMRESUMEAUTOMATIC 0x0012 #endif #ifndef WM_MOUSEHWHEEL #define WM_MOUSEHWHEEL 0x020E #endif #ifndef WM_MOUSELEAVE #define WM_MOUSELEAVE 0x02A3 #endif #ifndef SPI_GETWHEELSCROLLCHARS #define SPI_GETWHEELSCROLLCHARS 0x006C #endif #ifndef MAPVK_VSC_TO_VK #define MAPVK_VK_TO_VSC 0 #define MAPVK_VSC_TO_VK 1 #define MAPVK_VK_TO_CHAR 2 #endif // ConstrainPosition window positioning slop value #define kWindowPositionSlop 20 // Drop shadow window style #define CS_XP_DROPSHADOW 0x00020000 // Don't put more than this many rects in the dirty region, just fluff // out to the bounding-box if there are more #define MAX_RECTS_IN_REGION 100 // App Command messages for IntelliMouse and Natural Keyboard Pro // These messages are not included in Visual C++ 6.0, but are in 7.0+ #ifndef WM_APPCOMMAND #define WM_APPCOMMAND 0x0319 #endif #define FAPPCOMMAND_MASK 0xF000 #ifndef APPCOMMAND_BROWSER_BACKWARD #define APPCOMMAND_BROWSER_BACKWARD 1 #define APPCOMMAND_BROWSER_FORWARD 2 #define APPCOMMAND_BROWSER_REFRESH 3 #define APPCOMMAND_BROWSER_STOP 4 #define APPCOMMAND_BROWSER_SEARCH 5 #define APPCOMMAND_BROWSER_FAVORITES 6 #define APPCOMMAND_BROWSER_HOME 7 /* * Additional commands currently not in use. * *#define APPCOMMAND_VOLUME_MUTE 8 *#define APPCOMMAND_VOLUME_DOWN 9 *#define APPCOMMAND_VOLUME_UP 10 *#define APPCOMMAND_MEDIA_NEXTTRACK 11 *#define APPCOMMAND_MEDIA_PREVIOUSTRACK 12 *#define APPCOMMAND_MEDIA_STOP 13 *#define APPCOMMAND_MEDIA_PLAY_PAUSE 14 *#define APPCOMMAND_LAUNCH_MAIL 15 *#define APPCOMMAND_LAUNCH_MEDIA_SELECT 16 *#define APPCOMMAND_LAUNCH_APP1 17 *#define APPCOMMAND_LAUNCH_APP2 18 *#define APPCOMMAND_BASS_DOWN 19 *#define APPCOMMAND_BASS_BOOST 20 *#define APPCOMMAND_BASS_UP 21 *#define APPCOMMAND_TREBLE_DOWN 22 *#define APPCOMMAND_TREBLE_UP 23 *#define FAPPCOMMAND_MOUSE 0x8000 *#define FAPPCOMMAND_KEY 0 *#define FAPPCOMMAND_OEM 0x1000 */ #define GET_APPCOMMAND_LPARAM(lParam) ((short)(HIWORD(lParam) & ~FAPPCOMMAND_MASK)) /* *#define GET_DEVICE_LPARAM(lParam) ((WORD)(HIWORD(lParam) & FAPPCOMMAND_MASK)) *#define GET_MOUSEORKEY_LPARAM GET_DEVICE_LPARAM *#define GET_FLAGS_LPARAM(lParam) (LOWORD(lParam)) *#define GET_KEYSTATE_LPARAM(lParam) GET_FLAGS_LPARAM(lParam) */ #endif // #ifndef APPCOMMAND_BROWSER_BACKWARD #if defined(WINCE) #ifndef RDW_NOINTERNALPAINT #define RDW_NOINTERNALPAINT 0 #endif #ifndef ERROR #define ERROR 0 #endif #endif // defined(WINCE) /************************************************************** * * SECTION: enums * **************************************************************/ // nsWindow::sCanQuit typedef enum { TRI_UNKNOWN = -1, TRI_FALSE = 0, TRI_TRUE = 1 } TriStateBool; /************************************************************** * * SECTION: constants * **************************************************************/ /* * Native windows class names * * ::: IMPORTANT ::: * * External apps and drivers depend on window class names. * For example, changing the window classes could break * touchpad scrolling or screen readers. */ const PRUint32 kMaxClassNameLength = 40; const LPCWSTR kClassNameHidden = L"MozillaHiddenWindowClass"; const LPCWSTR kClassNameUI = L"MozillaUIWindowClass"; const LPCWSTR kClassNameContent = L"MozillaContentWindowClass"; const LPCWSTR kClassNameContentFrame = L"MozillaContentFrameWindowClass"; const LPCWSTR kClassNameGeneral = L"MozillaWindowClass"; const LPCWSTR kClassNameDialog = L"MozillaDialogClass"; const LPCWSTR kClassNameDropShadow = L"MozillaDropShadowWindowClass"; static const PRUint32 sModifierKeyMap[][3] = { { nsIWidget::CAPS_LOCK, VK_CAPITAL, 0 }, { nsIWidget::NUM_LOCK, VK_NUMLOCK, 0 }, { nsIWidget::SHIFT_L, VK_SHIFT, VK_LSHIFT }, { nsIWidget::SHIFT_R, VK_SHIFT, VK_RSHIFT }, { nsIWidget::CTRL_L, VK_CONTROL, VK_LCONTROL }, { nsIWidget::CTRL_R, VK_CONTROL, VK_RCONTROL }, { nsIWidget::ALT_L, VK_MENU, VK_LMENU }, { nsIWidget::ALT_R, VK_MENU, VK_RMENU } }; /************************************************************** * * SECTION: structs * **************************************************************/ // Used in OnKeyDown struct nsAlternativeCharCode; // defined in nsGUIEvent.h struct nsFakeCharMessage { UINT mCharCode; UINT mScanCode; }; // Used in char processing struct nsModifierKeyState { PRBool mIsShiftDown; PRBool mIsControlDown; PRBool mIsAltDown; nsModifierKeyState(); nsModifierKeyState(PRBool aIsShiftDown, PRBool aIsControlDown, PRBool aIsAltDown) : mIsShiftDown(aIsShiftDown), mIsControlDown(aIsControlDown), mIsAltDown(aIsAltDown) { } }; // Used for synthesizing events struct KeyPair { PRUint8 mGeneral; PRUint8 mSpecific; KeyPair(PRUint32 aGeneral, PRUint32 aSpecific) : mGeneral(PRUint8(aGeneral)), mSpecific(PRUint8(aSpecific)) {} }; /************************************************************** * * SECTION: macros * **************************************************************/ #define NSRGB_2_COLOREF(color) \ RGB(NS_GET_R(color),NS_GET_G(color),NS_GET_B(color)) #define COLOREF_2_NSRGB(color) \ NS_RGB(GetRValue(color), GetGValue(color), GetBValue(color)) #define VERIFY_WINDOW_STYLE(s) \ NS_ASSERTION(((s) & (WS_CHILD | WS_POPUP)) != (WS_CHILD | WS_POPUP), \ "WS_POPUP and WS_CHILD are mutually exclusive") #endif /* WindowDefs_h__ */