widget/windows/nsWindowDefs.h

Thu, 22 Jan 2015 13:21:57 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Thu, 22 Jan 2015 13:21:57 +0100
branch
TOR_BUG_9701
changeset 15
b8a032363ba2
permissions
-rw-r--r--

Incorporate requested changes from Mozilla in review:
https://bugzilla.mozilla.org/show_bug.cgi?id=1123480#c6

     1 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
     2 /* This Source Code Form is subject to the terms of the Mozilla Public
     3  * License, v. 2.0. If a copy of the MPL was not distributed with this
     4  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
     6 #ifndef WindowDefs_h__
     7 #define WindowDefs_h__
     9 /*
    10  * nsWindowDefs - nsWindow related definitions, consts, and macros.
    11  */
    13 #include "nsBaseWidget.h"
    14 #include "nsdefs.h"
    15 #include "resource.h"
    17 /**************************************************************
    18  *
    19  * SECTION: defines
    20  * 
    21  **************************************************************/
    23 // A magic APP message that can be sent to quit, sort of like a QUERYENDSESSION/ENDSESSION,
    24 // but without the query.
    25 #define MOZ_WM_APP_QUIT                   (WM_APP+0x0300)
    26 // Used as a "tracer" event to probe event loop latency.
    27 #define MOZ_WM_TRACE                      (WM_APP+0x0301)
    28 // Our internal message for WM_MOUSEWHEEL, WM_MOUSEHWHEEL, WM_VSCROLL and
    29 // WM_HSCROLL
    30 #define MOZ_WM_MOUSEVWHEEL                (WM_APP+0x0310)
    31 #define MOZ_WM_MOUSEHWHEEL                (WM_APP+0x0311)
    32 #define MOZ_WM_VSCROLL                    (WM_APP+0x0312)
    33 #define MOZ_WM_HSCROLL                    (WM_APP+0x0313)
    34 #define MOZ_WM_MOUSEWHEEL_FIRST           MOZ_WM_MOUSEVWHEEL
    35 #define MOZ_WM_MOUSEWHEEL_LAST            MOZ_WM_HSCROLL
    36 // If a popup window is being activated, we try to reactivate the previous
    37 // window with this message.
    38 #define MOZ_WM_REACTIVATE                 (WM_APP+0x0314)
    40 // Internal message for ensuring the file picker is visible on multi monitor
    41 // systems, and when the screen resolution changes.
    42 #define MOZ_WM_ENSUREVISIBLE              (WM_APP+0x374F)
    44 #ifndef SM_CXPADDEDBORDER
    45 #define SM_CXPADDEDBORDER                 92
    46 #endif
    48 #ifndef WM_THEMECHANGED
    49 #define WM_THEMECHANGED                   0x031A
    50 #endif
    52 #ifndef WM_GETOBJECT
    53 #define WM_GETOBJECT                      0x03d
    54 #endif
    56 #ifndef PBT_APMRESUMEAUTOMATIC
    57 #define PBT_APMRESUMEAUTOMATIC            0x0012
    58 #endif
    60 #ifndef WM_MOUSEHWHEEL
    61 #define WM_MOUSEHWHEEL                    0x020E
    62 #endif
    64 #ifndef MOUSEEVENTF_HWHEEL
    65 #define MOUSEEVENTF_HWHEEL                0x01000
    66 #endif
    68 #ifndef WM_MOUSELEAVE
    69 #define WM_MOUSELEAVE                     0x02A3
    70 #endif
    72 #ifndef SPI_GETWHEELSCROLLCHARS
    73 #define SPI_GETWHEELSCROLLCHARS           0x006C
    74 #endif
    76 #ifndef SPI_SETWHEELSCROLLCHARS
    77 #define SPI_SETWHEELSCROLLCHARS           0x006D
    78 #endif
    80 #ifndef MAPVK_VSC_TO_VK
    81 #define MAPVK_VK_TO_VSC                   0
    82 #define MAPVK_VSC_TO_VK                   1
    83 #define MAPVK_VK_TO_CHAR                  2
    84 #define MAPVK_VSC_TO_VK_EX                3
    85 #define MAPVK_VK_TO_VSC_EX                4
    86 #endif
    88 // ConstrainPosition window positioning slop value
    89 #define kWindowPositionSlop               20
    91 // Origin of the system context menu when displayed in full screen mode
    92 #define MOZ_SYSCONTEXT_X_POS              20
    93 #define MOZ_SYSCONTEXT_Y_POS              20
    95 // Drop shadow window style
    96 #define CS_XP_DROPSHADOW                  0x00020000
    98 // Don't put more than this many rects in the dirty region, just fluff
    99 // out to the bounding-box if there are more
   100 #define MAX_RECTS_IN_REGION               100
   102 // App Command messages for IntelliMouse and Natural Keyboard Pro
   103 // These messages are not included in Visual C++ 6.0, but are in 7.0+
   104 #ifndef WM_APPCOMMAND
   105 #define WM_APPCOMMAND                     0x0319
   106 #endif
   108 #define FAPPCOMMAND_MASK                  0xF000
   110 #ifndef WM_GETTITLEBARINFOEX
   111 #define WM_GETTITLEBARINFOEX              0x033F
   112 #endif
   114 #ifndef CCHILDREN_TITLEBAR
   115 #define CCHILDREN_TITLEBAR                5
   116 #endif
   118 #ifndef APPCOMMAND_BROWSER_BACKWARD
   119   #define APPCOMMAND_BROWSER_BACKWARD       1
   120   #define APPCOMMAND_BROWSER_FORWARD        2
   121   #define APPCOMMAND_BROWSER_REFRESH        3
   122   #define APPCOMMAND_BROWSER_STOP           4
   123   #define APPCOMMAND_BROWSER_SEARCH         5
   124   #define APPCOMMAND_BROWSER_FAVORITES      6
   125   #define APPCOMMAND_BROWSER_HOME           7
   127   /* 
   128    * Additional commands currently not in use.
   129    *
   130    *#define APPCOMMAND_VOLUME_MUTE            8
   131    *#define APPCOMMAND_VOLUME_DOWN            9
   132    *#define APPCOMMAND_VOLUME_UP              10
   133    *#define APPCOMMAND_MEDIA_NEXTTRACK        11
   134    *#define APPCOMMAND_MEDIA_PREVIOUSTRACK    12
   135    *#define APPCOMMAND_MEDIA_STOP             13
   136    *#define APPCOMMAND_MEDIA_PLAY_PAUSE       14
   137    *#define APPCOMMAND_LAUNCH_MAIL            15
   138    *#define APPCOMMAND_LAUNCH_MEDIA_SELECT    16
   139    *#define APPCOMMAND_LAUNCH_APP1            17
   140    *#define APPCOMMAND_LAUNCH_APP2            18
   141    *#define APPCOMMAND_BASS_DOWN              19
   142    *#define APPCOMMAND_BASS_BOOST             20
   143    *#define APPCOMMAND_BASS_UP                21
   144    *#define APPCOMMAND_TREBLE_DOWN            22
   145    *#define APPCOMMAND_TREBLE_UP              23
   146    *#define FAPPCOMMAND_MOUSE                 0x8000
   147    *#define FAPPCOMMAND_KEY                   0
   148    *#define FAPPCOMMAND_OEM                   0x1000
   149    */
   151   #define GET_APPCOMMAND_LPARAM(lParam)     ((short)(HIWORD(lParam) & ~FAPPCOMMAND_MASK))
   153   /*
   154    *#define GET_DEVICE_LPARAM(lParam)         ((WORD)(HIWORD(lParam) & FAPPCOMMAND_MASK))
   155    *#define GET_MOUSEORKEY_LPARAM             GET_DEVICE_LPARAM
   156    *#define GET_FLAGS_LPARAM(lParam)          (LOWORD(lParam))
   157    *#define GET_KEYSTATE_LPARAM(lParam)       GET_FLAGS_LPARAM(lParam)
   158    */
   159 #endif // #ifndef APPCOMMAND_BROWSER_BACKWARD
   161 //Tablet PC Mouse Input Source
   162 #define TABLET_INK_SIGNATURE 0xFFFFFF00
   163 #define TABLET_INK_CHECK     0xFF515700
   164 #define TABLET_INK_TOUCH     0x00000080
   165 #define MOUSE_INPUT_SOURCE() WinUtils::GetMouseInputSource()
   167 /**************************************************************
   168  *
   169  * SECTION: enums
   170  * 
   171  **************************************************************/
   173 // nsWindow::sCanQuit
   174 typedef enum
   175 {
   176     TRI_UNKNOWN = -1,
   177     TRI_FALSE = 0,
   178     TRI_TRUE = 1
   179 } TriStateBool;
   181 /**************************************************************
   182  *
   183  * SECTION: constants
   184  * 
   185  **************************************************************/
   187 /*
   188  * Native windows class names
   189  *
   190  * ::: IMPORTANT :::
   191  *
   192  * External apps and drivers depend on window class names.
   193  * For example, changing the window classes could break
   194  * touchpad scrolling or screen readers.
   195  */
   196 const uint32_t kMaxClassNameLength   = 40;
   197 const char kClassNameHidden[]        = "MozillaHiddenWindowClass";
   198 const char kClassNameGeneral[]       = "MozillaWindowClass";
   199 const char kClassNameDialog[]        = "MozillaDialogClass";
   200 const char kClassNameDropShadow[]    = "MozillaDropShadowWindowClass";
   201 const char kClassNameTemp[]          = "MozillaTempWindowClass";
   203 /**************************************************************
   204  *
   205  * SECTION: structs
   206  * 
   207  **************************************************************/
   209 // Used for synthesizing events
   210 struct KeyPair {
   211   uint8_t mGeneral;
   212   uint8_t mSpecific;
   213   KeyPair(uint32_t aGeneral, uint32_t aSpecific)
   214     : mGeneral(uint8_t(aGeneral)), mSpecific(uint8_t(aSpecific)) {}
   215 };
   217 #if (WINVER < 0x0600)
   218 struct TITLEBARINFOEX
   219 {
   220     DWORD cbSize;
   221     RECT rcTitleBar;
   222     DWORD rgstate[CCHILDREN_TITLEBAR + 1];
   223     RECT rgrect[CCHILDREN_TITLEBAR + 1];
   224 };
   225 #endif
   227 namespace mozilla {
   228 namespace widget {
   230 struct MSGResult
   231 {
   232   // Result for the message.
   233   LRESULT& mResult;
   234   // If mConsumed is true, the caller shouldn't call next wndproc.
   235   bool mConsumed;
   237   MSGResult(LRESULT* aResult = nullptr) :
   238     mResult(aResult ? *aResult : mDefaultResult), mConsumed(false)
   239   {
   240   }
   242 private:
   243   LRESULT mDefaultResult;
   244 };
   246 } // namespace widget
   247 } // namespace mozilla
   249 /**************************************************************
   250  *
   251  * SECTION: macros
   252  * 
   253  **************************************************************/
   255 #define NSRGB_2_COLOREF(color) \
   256       RGB(NS_GET_R(color),NS_GET_G(color),NS_GET_B(color))
   257 #define COLOREF_2_NSRGB(color) \
   258       NS_RGB(GetRValue(color), GetGValue(color), GetBValue(color))
   260 #define VERIFY_WINDOW_STYLE(s) \
   261       NS_ASSERTION(((s) & (WS_CHILD | WS_POPUP)) != (WS_CHILD | WS_POPUP), \
   262       "WS_POPUP and WS_CHILD are mutually exclusive")
   264 #endif /* WindowDefs_h__ */

mercurial