summaryrefslogtreecommitdiffstats
path: root/widget/windows/nsWindowDefs.h
blob: dfe79299561859fe7cd7620e2d17463ae8ba06bc (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */

#ifndef WindowDefs_h__
#define WindowDefs_h__

/*
 * nsWindowDefs - nsWindow related definitions, consts, and macros.
 */

#include "mozilla/widget/WinMessages.h"
#include "nsBaseWidget.h"
#include "nsdefs.h"
#include "resource.h"

/**************************************************************
 *
 * SECTION: defines
 *
 **************************************************************/

// ConstrainPosition window positioning slop value
#define kWindowPositionSlop 20

// Origin of the system context menu when displayed in full screen mode
#define MOZ_SYSCONTEXT_X_POS 20
#define MOZ_SYSCONTEXT_Y_POS 20

// 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

// Tablet PC Mouse Input Source
#define TABLET_INK_SIGNATURE 0xFFFFFF00
#define TABLET_INK_CHECK 0xFF515700
#define TABLET_INK_TOUCH 0x00000080
#define TABLET_INK_ID_MASK 0x0000007F
#define MOUSE_INPUT_SOURCE() WinUtils::GetMouseInputSource()
#define MOUSE_POINTERID() WinUtils::GetMousePointerID()

/**************************************************************
 *
 * 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.
 *
 * See bug 1776498.
 */
const wchar_t kClassNameHidden[] = L"MozillaHiddenWindowClass";
const wchar_t kClassNameGeneral[] = L"MozillaWindowClass";
const wchar_t kClassNameDialog[] = L"MozillaDialogClass";
const wchar_t kClassNameDropShadow[] = L"MozillaDropShadowWindowClass";
const wchar_t kClassNameTemp[] = L"MozillaTempWindowClass";
const wchar_t kClassNameTransition[] = L"MozillaTransitionWindowClass";

/**************************************************************
 *
 * SECTION: structs
 *
 **************************************************************/

// Used for synthesizing events
struct KeyPair {
  uint8_t mGeneral;
  uint8_t mSpecific;
  uint16_t mScanCode;
  KeyPair(uint32_t aGeneral, uint32_t aSpecific)
      : mGeneral(aGeneral & 0xFF),
        mSpecific(aSpecific & 0xFF),
        mScanCode((aGeneral & 0xFFFF0000) >> 16) {}
  KeyPair(uint8_t aGeneral, uint8_t aSpecific, uint16_t aScanCode)
      : mGeneral(aGeneral), mSpecific(aSpecific), mScanCode(aScanCode) {}
};

#if (WINVER < 0x0600)
struct TITLEBARINFOEX {
  DWORD cbSize;
  RECT rcTitleBar;
  DWORD rgstate[CCHILDREN_TITLEBAR + 1];
  RECT rgrect[CCHILDREN_TITLEBAR + 1];
};
#endif

namespace mozilla {
namespace widget {

struct MSGResult {
  // Result for the message.
  LRESULT& mResult;
  // If mConsumed is true, the caller shouldn't call next wndproc.
  bool mConsumed;

  explicit MSGResult(LRESULT* aResult = nullptr)
      : mResult(aResult ? *aResult : mDefaultResult), mConsumed(false) {}

 private:
  LRESULT mDefaultResult;
};

}  // namespace widget
}  // namespace mozilla

/**************************************************************
 *
 * 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__ */