qtbase/src/corelib/global/qnamespace.h

1816 lines
54 KiB
C
Raw Normal View History

/****************************************************************************
**
** Copyright (C) 2016 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see https://www.qt.io/terms-conditions. For further
** information use the contact form at https://www.qt.io/contact-us.
**
** GNU Lesser General Public License Usage
** Alternatively, this file may be used under the terms of the GNU Lesser
** General Public License version 3 as published by the Free Software
** Foundation and appearing in the file LICENSE.LGPL3 included in the
** packaging of this file. Please review the following information to
** ensure the GNU Lesser General Public License version 3 requirements
** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 2.0 or (at your option) the GNU General
** Public license version 3 or any later version approved by the KDE Free
** Qt Foundation. The licenses are as published by the Free Software
** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
** included in the packaging of this file. Please review the following
** information to ensure the GNU General Public License requirements will
** be met: https://www.gnu.org/licenses/gpl-2.0.html and
** https://www.gnu.org/licenses/gpl-3.0.html.
**
** $QT_END_LICENSE$
**
****************************************************************************/
#ifndef QNAMESPACE_H
#define QNAMESPACE_H
#include <QtCore/qglobal.h>
#if defined(__OBJC__) && !defined(__cplusplus)
# warning "File built in Objective-C mode (.m), but using Qt requires Objective-C++ (.mm)"
#endif
QT_BEGIN_NAMESPACE
#if !defined(Q_QDOC) && !defined(Q_MOC_RUN)
struct QMetaObject;
const QMetaObject *qt_getQtMetaObject() Q_DECL_NOEXCEPT; // defined in qobject.h (which can't be included here)
#define QT_Q_ENUM(ENUM) \
inline const QMetaObject *qt_getEnumMetaObject(ENUM) Q_DECL_NOEXCEPT { return qt_getQtMetaObject(); } \
inline Q_DECL_CONSTEXPR const char *qt_getEnumName(ENUM) Q_DECL_NOEXCEPT { return #ENUM; }
#define QT_Q_FLAG(ENUM) QT_Q_ENUM(ENUM)
#else
#define QT_Q_ENUM Q_ENUM
#define QT_Q_FLAG Q_FLAG
#endif
#ifndef Q_MOC_RUN
namespace
#else
class Q_CORE_EXPORT
#endif
Qt {
#if defined(Q_MOC_RUN)
Q_OBJECT
public:
#endif
enum GlobalColor {
color0,
color1,
black,
white,
darkGray,
gray,
lightGray,
red,
green,
blue,
cyan,
magenta,
yellow,
darkRed,
darkGreen,
darkBlue,
darkCyan,
darkMagenta,
darkYellow,
transparent
};
enum KeyboardModifier {
NoModifier = 0x00000000,
ShiftModifier = 0x02000000,
ControlModifier = 0x04000000,
AltModifier = 0x08000000,
MetaModifier = 0x10000000,
KeypadModifier = 0x20000000,
GroupSwitchModifier = 0x40000000,
// Do not extend the mask to include 0x01000000
KeyboardModifierMask = 0xfe000000
};
Q_DECLARE_FLAGS(KeyboardModifiers, KeyboardModifier)
//shorter names for shortcuts
// The use of all-caps identifiers has the potential for clashing with
// user-defined or third-party macros. More so when the identifiers are not
// "namespace"-prefixed. This is considered bad practice and is why
// KeypadModifier was not added to the Modifier enum.
enum Modifier {
META = Qt::MetaModifier,
SHIFT = Qt::ShiftModifier,
CTRL = Qt::ControlModifier,
ALT = Qt::AltModifier,
MODIFIER_MASK = KeyboardModifierMask,
UNICODE_ACCEL = 0x00000000
};
enum MouseButton {
NoButton = 0x00000000,
LeftButton = 0x00000001,
RightButton = 0x00000002,
MidButton = 0x00000004, // ### Qt 6: remove me
MiddleButton = MidButton,
BackButton = 0x00000008,
XButton1 = BackButton,
ExtraButton1 = XButton1,
ForwardButton = 0x00000010,
XButton2 = ForwardButton,
ExtraButton2 = ForwardButton,
TaskButton = 0x00000020,
ExtraButton3 = TaskButton,
ExtraButton4 = 0x00000040,
ExtraButton5 = 0x00000080,
ExtraButton6 = 0x00000100,
ExtraButton7 = 0x00000200,
ExtraButton8 = 0x00000400,
ExtraButton9 = 0x00000800,
ExtraButton10 = 0x00001000,
ExtraButton11 = 0x00002000,
ExtraButton12 = 0x00004000,
ExtraButton13 = 0x00008000,
ExtraButton14 = 0x00010000,
ExtraButton15 = 0x00020000,
ExtraButton16 = 0x00040000,
ExtraButton17 = 0x00080000,
ExtraButton18 = 0x00100000,
ExtraButton19 = 0x00200000,
ExtraButton20 = 0x00400000,
ExtraButton21 = 0x00800000,
ExtraButton22 = 0x01000000,
ExtraButton23 = 0x02000000,
ExtraButton24 = 0x04000000,
AllButtons = 0x07ffffff,
MaxMouseButton = ExtraButton24,
// 4 high-order bits remain available for future use (0x08000000 through 0x40000000).
MouseButtonMask = 0xffffffff
};
Q_DECLARE_FLAGS(MouseButtons, MouseButton)
enum Orientation {
Horizontal = 0x1,
Vertical = 0x2
};
Q_DECLARE_FLAGS(Orientations, Orientation)
enum FocusPolicy {
NoFocus = 0,
TabFocus = 0x1,
ClickFocus = 0x2,
StrongFocus = TabFocus | ClickFocus | 0x8,
WheelFocus = StrongFocus | 0x4
};
enum TabFocusBehavior {
NoTabFocus = 0x00,
TabFocusTextControls = 0x01,
TabFocusListControls = 0x02,
TabFocusAllControls = 0xff
};
enum SortOrder {
AscendingOrder,
DescendingOrder
};
enum TileRule {
StretchTile,
RepeatTile,
RoundTile
};
// Text formatting flags for QPainter::drawText and QLabel.
// The following two enums can be combined to one integer which
// is passed as 'flags' to QPainter::drawText, QFontMetrics::boundingRect and qt_format_text.
enum AlignmentFlag {
AlignLeft = 0x0001,
AlignLeading = AlignLeft,
AlignRight = 0x0002,
AlignTrailing = AlignRight,
AlignHCenter = 0x0004,
AlignJustify = 0x0008,
AlignAbsolute = 0x0010,
AlignHorizontal_Mask = AlignLeft | AlignRight | AlignHCenter | AlignJustify | AlignAbsolute,
AlignTop = 0x0020,
AlignBottom = 0x0040,
AlignVCenter = 0x0080,
AlignBaseline = 0x0100,
// Note that 0x100 will clash with Qt::TextSingleLine = 0x100 due to what the comment above
// this enum declaration states. However, since Qt::AlignBaseline is only used by layouts,
// it doesn't make sense to pass Qt::AlignBaseline to QPainter::drawText(), so there
// shouldn't really be any ambiguity between the two overlapping enum values.
AlignVertical_Mask = AlignTop | AlignBottom | AlignVCenter | AlignBaseline,
AlignCenter = AlignVCenter | AlignHCenter
};
Q_DECLARE_FLAGS(Alignment, AlignmentFlag)
enum TextFlag {
TextSingleLine = 0x0100,
TextDontClip = 0x0200,
TextExpandTabs = 0x0400,
TextShowMnemonic = 0x0800,
TextWordWrap = 0x1000,
TextWrapAnywhere = 0x2000,
TextDontPrint = 0x4000,
TextIncludeTrailingSpaces = 0x08000000,
TextHideMnemonic = 0x8000,
TextJustificationForced = 0x10000,
TextForceLeftToRight = 0x20000,
TextForceRightToLeft = 0x40000,
// Ensures that the longest variant is always used when computing the
// size of a multi-variant string.
TextLongestVariant = 0x80000,
TextBypassShaping = 0x100000
};
enum TextElideMode {
ElideLeft,
ElideRight,
ElideMiddle,
ElideNone
};
enum WhiteSpaceMode {
WhiteSpaceNormal,
WhiteSpacePre,
WhiteSpaceNoWrap,
WhiteSpaceModeUndefined = -1
};
enum HitTestAccuracy { ExactHit, FuzzyHit };
enum WindowType {
Widget = 0x00000000,
Window = 0x00000001,
Dialog = 0x00000002 | Window,
Sheet = 0x00000004 | Window,
Drawer = Sheet | Dialog,
Popup = 0x00000008 | Window,
Tool = Popup | Dialog,
ToolTip = Popup | Sheet,
SplashScreen = ToolTip | Dialog,
Desktop = 0x00000010 | Window,
SubWindow = 0x00000012,
ForeignWindow = 0x00000020 | Window,
CoverWindow = 0x00000040 | Window,
WindowType_Mask = 0x000000ff,
MSWindowsFixedSizeDialogHint = 0x00000100,
MSWindowsOwnDC = 0x00000200,
BypassWindowManagerHint = 0x00000400,
X11BypassWindowManagerHint = BypassWindowManagerHint,
FramelessWindowHint = 0x00000800,
WindowTitleHint = 0x00001000,
WindowSystemMenuHint = 0x00002000,
WindowMinimizeButtonHint = 0x00004000,
WindowMaximizeButtonHint = 0x00008000,
WindowMinMaxButtonsHint = WindowMinimizeButtonHint | WindowMaximizeButtonHint,
WindowContextHelpButtonHint = 0x00010000,
WindowShadeButtonHint = 0x00020000,
WindowStaysOnTopHint = 0x00040000,
WindowTransparentForInput = 0x00080000,
WindowOverridesSystemGestures = 0x00100000,
WindowDoesNotAcceptFocus = 0x00200000,
MaximizeUsingFullscreenGeometryHint = 0x00400000,
CustomizeWindowHint = 0x02000000,
WindowStaysOnBottomHint = 0x04000000,
WindowCloseButtonHint = 0x08000000,
MacWindowToolBarButtonHint = 0x10000000,
BypassGraphicsProxyWidget = 0x20000000,
NoDropShadowWindowHint = 0x40000000,
WindowFullscreenButtonHint = 0x80000000
};
Q_DECLARE_FLAGS(WindowFlags, WindowType)
enum WindowState {
WindowNoState = 0x00000000,
WindowMinimized = 0x00000001,
WindowMaximized = 0x00000002,
WindowFullScreen = 0x00000004,
WindowActive = 0x00000008
};
Q_DECLARE_FLAGS(WindowStates, WindowState)
QPA: Add interface for setting the application state explicitly The motivation for this patch is twofold: 1: we need a way (for iOS/Android) to tell the current window to remove focus from the focus object when the user hides the input panel. Otherwise, if the focus object is e.g a line edit, the cursor will continue to blink inside it, which is wrong. As it stands, telling the active window to deactivate (by calling QWindowSystemInterface::handleWindowActivated(0)), will cause the whole application to deactivate if no windows are active, which is not what we want. 2: Qt currently understands just two application states, Activated and Deactivated. On mobile platforms we can have other states as well, like "suspended" on iOS. So controlling the application state should not depend on window activation, but instead be controlled through a separate API by the platform plugin. This patch will add the following function: QWindowSystemInterface::handleApplicationStateChanged(Qt::ApplicationState newState) that lets us control the application state from the plugin. This also means that we factor out application state handling from window activation, which also gives us a way to remove focus from a window while keeping the application active. To not break existing desktop platforms that relies on application activation being tied to window activation, we need to make this API opt-in by using a platform integration capability hint. This is not optimal, but found necessary after investigating several other solutions. Which states (other that active/inactive) it makes sense to add to Qt::ApplicationState will be a topic for later patches. Change-Id: Ic6fdd3b66867abb67da43eba04ec86f06d82ff94 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com> Reviewed-by: Samuel Rødal <samuel.rodal@digia.com>
2013-01-28 14:16:02 +00:00
enum ApplicationState {
ApplicationSuspended = 0x00000000,
ApplicationHidden = 0x00000001,
ApplicationInactive = 0x00000002,
ApplicationActive = 0x00000004
QPA: Add interface for setting the application state explicitly The motivation for this patch is twofold: 1: we need a way (for iOS/Android) to tell the current window to remove focus from the focus object when the user hides the input panel. Otherwise, if the focus object is e.g a line edit, the cursor will continue to blink inside it, which is wrong. As it stands, telling the active window to deactivate (by calling QWindowSystemInterface::handleWindowActivated(0)), will cause the whole application to deactivate if no windows are active, which is not what we want. 2: Qt currently understands just two application states, Activated and Deactivated. On mobile platforms we can have other states as well, like "suspended" on iOS. So controlling the application state should not depend on window activation, but instead be controlled through a separate API by the platform plugin. This patch will add the following function: QWindowSystemInterface::handleApplicationStateChanged(Qt::ApplicationState newState) that lets us control the application state from the plugin. This also means that we factor out application state handling from window activation, which also gives us a way to remove focus from a window while keeping the application active. To not break existing desktop platforms that relies on application activation being tied to window activation, we need to make this API opt-in by using a platform integration capability hint. This is not optimal, but found necessary after investigating several other solutions. Which states (other that active/inactive) it makes sense to add to Qt::ApplicationState will be a topic for later patches. Change-Id: Ic6fdd3b66867abb67da43eba04ec86f06d82ff94 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com> Reviewed-by: Samuel Rødal <samuel.rodal@digia.com>
2013-01-28 14:16:02 +00:00
};
Q_DECLARE_FLAGS(ApplicationStates, ApplicationState)
enum ScreenOrientation {
PrimaryOrientation = 0x00000000,
PortraitOrientation = 0x00000001,
LandscapeOrientation = 0x00000002,
InvertedPortraitOrientation = 0x00000004,
InvertedLandscapeOrientation = 0x00000008
};
Q_DECLARE_FLAGS(ScreenOrientations, ScreenOrientation)
enum WidgetAttribute {
WA_Disabled = 0,
WA_UnderMouse = 1,
WA_MouseTracking = 2,
WA_ContentsPropagated = 3, // ## deprecated
WA_OpaquePaintEvent = 4,
WA_NoBackground = WA_OpaquePaintEvent, // ## deprecated
WA_StaticContents = 5,
WA_LaidOut = 7,
WA_PaintOnScreen = 8,
WA_NoSystemBackground = 9,
WA_UpdatesDisabled = 10,
WA_Mapped = 11,
WA_MacNoClickThrough = 12, // Mac only
WA_InputMethodEnabled = 14,
WA_WState_Visible = 15,
WA_WState_Hidden = 16,
WA_ForceDisabled = 32,
WA_KeyCompression = 33,
WA_PendingMoveEvent = 34,
WA_PendingResizeEvent = 35,
WA_SetPalette = 36,
WA_SetFont = 37,
WA_SetCursor = 38,
WA_NoChildEventsFromChildren = 39,
WA_WindowModified = 41,
WA_Resized = 42,
WA_Moved = 43,
WA_PendingUpdate = 44,
WA_InvalidSize = 45,
WA_MacBrushedMetal = 46, // Mac only
WA_MacMetalStyle = WA_MacBrushedMetal, // obsolete
WA_CustomWhatsThis = 47,
WA_LayoutOnEntireRect = 48,
WA_OutsideWSRange = 49,
WA_GrabbedShortcut = 50,
WA_TransparentForMouseEvents = 51,
WA_PaintUnclipped = 52,
WA_SetWindowIcon = 53,
WA_NoMouseReplay = 54,
WA_DeleteOnClose = 55,
WA_RightToLeft = 56,
WA_SetLayoutDirection = 57,
WA_NoChildEventsForParent = 58,
WA_ForceUpdatesDisabled = 59,
WA_WState_Created = 60,
WA_WState_CompressKeys = 61,
WA_WState_InPaintEvent = 62,
WA_WState_Reparented = 63,
WA_WState_ConfigPending = 64,
WA_WState_Polished = 66,
WA_WState_DND = 67, // ## deprecated
WA_WState_OwnSizePolicy = 68,
WA_WState_ExplicitShowHide = 69,
WA_ShowModal = 70, // ## deprecated
WA_MouseNoMask = 71,
WA_GroupLeader = 72, // ## deprecated
WA_NoMousePropagation = 73, // ## for now, might go away.
WA_Hover = 74,
WA_InputMethodTransparent = 75, // Don't reset IM when user clicks on this (for virtual keyboards on embedded)
WA_QuitOnClose = 76,
WA_KeyboardFocusChange = 77,
WA_AcceptDrops = 78,
WA_DropSiteRegistered = 79, // internal
WA_ForceAcceptDrops = WA_DropSiteRegistered, // ## deprecated
WA_WindowPropagation = 80,
WA_NoX11EventCompression = 81,
WA_TintedBackground = 82,
WA_X11OpenGLOverlay = 83,
WA_AlwaysShowToolTips = 84,
WA_MacOpaqueSizeGrip = 85,
WA_SetStyle = 86,
WA_SetLocale = 87,
WA_MacShowFocusRect = 88,
WA_MacNormalSize = 89, // Mac only
WA_MacSmallSize = 90, // Mac only
WA_MacMiniSize = 91, // Mac only
WA_LayoutUsesWidgetRect = 92,
WA_StyledBackground = 93, // internal
WA_MSWindowsUseDirect3D = 94, // Win only
WA_CanHostQMdiSubWindowTitleBar = 95, // Internal
WA_MacAlwaysShowToolWindow = 96, // Mac only
WA_StyleSheet = 97, // internal
WA_ShowWithoutActivating = 98,
WA_X11BypassTransientForHint = 99,
WA_NativeWindow = 100,
WA_DontCreateNativeAncestors = 101,
WA_MacVariableSize = 102, // Mac only
WA_DontShowOnScreen = 103,
// window types from http://standards.freedesktop.org/wm-spec/
WA_X11NetWmWindowTypeDesktop = 104,
WA_X11NetWmWindowTypeDock = 105,
WA_X11NetWmWindowTypeToolBar = 106,
WA_X11NetWmWindowTypeMenu = 107,
WA_X11NetWmWindowTypeUtility = 108,
WA_X11NetWmWindowTypeSplash = 109,
WA_X11NetWmWindowTypeDialog = 110,
WA_X11NetWmWindowTypeDropDownMenu = 111,
WA_X11NetWmWindowTypePopupMenu = 112,
WA_X11NetWmWindowTypeToolTip = 113,
WA_X11NetWmWindowTypeNotification = 114,
WA_X11NetWmWindowTypeCombo = 115,
WA_X11NetWmWindowTypeDND = 116,
WA_MacFrameworkScaled = 117,
WA_SetWindowModality = 118,
WA_WState_WindowOpacitySet = 119, // internal
WA_TranslucentBackground = 120,
WA_AcceptTouchEvents = 121,
WA_WState_AcceptedTouchBeginEvent = 122,
WA_TouchPadAcceptSingleTouchEvents = 123,
WA_X11DoNotAcceptFocus = 126,
WA_MacNoShadow = 127,
WA_AlwaysStackOnTop = 128,
// Add new attributes before this line
WA_AttributeCount
};
enum ApplicationAttribute
{
AA_ImmediateWidgetCreation = 0,
AA_MSWindowsUseDirect3DByDefault = 1, // Win only
AA_DontShowIconsInMenus = 2,
AA_NativeWindows = 3,
AA_DontCreateNativeWidgetSiblings = 4,
AA_PluginApplication = 5,
AA_MacPluginApplication = AA_PluginApplication, // ### Qt 6: remove me
AA_DontUseNativeMenuBar = 6,
AA_MacDontSwapCtrlAndMeta = 7,
AA_Use96Dpi = 8,
AA_X11InitThreads = 10,
Added application flags to translate between touch and mouse events. The current way we do it of having the platform or touch plugin send both mouse and touch events is not ideal. There's no good way to write an application that works sanely both on a touch-only device and on a desktop except by restricting yourself to only handling mouse events. If you try to handle touch events you don't get any events at all on desktop, and if you try to handle both, you end up getting duplicate events on touch devices. Instead, we should get rid of the code in the plugins that automatically sends mouse events translated from touch events. This change enables that by making the behaviour fully configurable in QtGui. Two new application attributes are added to explicitly say whether unhandled touch events should be sent as synthesized mouse events and vice versa, and no duplicates are automatically sent as the current situation. Synthesized mouse events are enabled by default. We also get rid of the QTouchEvent::TouchPoint::Primary flag, which was only used to signal that the windowing system automatically generated mouse events for that touch point. Now we only generate mouse events from the first touch point in the list. Change-Id: I8e20f3480407ca8c31b42de0a4d2b319e1346b65 Reviewed-by: Laszlo Agocs <laszlo.p.agocs@nokia.com> Reviewed-by: Jocelyn Turcotte <jocelyn.turcotte@nokia.com> Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@nokia.com> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@nokia.com> Reviewed-by: Lars Knoll <lars.knoll@nokia.com> Reviewed-by: Denis Dzyubenko <denis.dzyubenko@nokia.com>
2012-01-12 07:53:13 +00:00
AA_SynthesizeTouchForUnhandledMouseEvents = 11,
AA_SynthesizeMouseForUnhandledTouchEvents = 12,
AA_UseHighDpiPixmaps = 13,
AA_ForceRasterWidgets = 14,
Dynamic GL switch on Windows The patch introduces a new build configuration on Windows which can be requested by passing -opengl dynamic to configure. Platforms other than Windows (including WinRT) are not affected. The existing Angle and desktop configurations are not affected. These continue to function as before and Angle remains the default. In the future, when all modules have added support for the dynamic path, as described below, the default configuration could be changed to be the dynamic one. This would allow providing a single set of binaries in the official builds instead of the current two. When requesting dynamic GL, Angle is built but QT_OPENGL_ES[_2] are never defined. Instead, the code path that has traditionally been desktop GL only becomes the dynamic path that has to do runtime checks. Qt modules and applications are not linked to opengl32.dll or libegl/glesv2.dll in this case. Instead, QtGui exports all necessary egl/egl/gl functions which will, under the hood, forward all requests to a dynamically loaded EGL/WGL/GL implementation. Porting guide (better said, changes needed to prepare your code to work with dynamic GL builds when the fallback to Angle is utilized): 1. In !QT_OPENGL_ES[_2] code branches use QOpenGLFunctions::isES() to differentiate between desktop and ES where needed. Keep in mind that it is the desktop GL header (plus qopenglext.h) that is included, not the GLES one. QtGui's proxy will handle some differences, for example calling glClearDepth will route to glClearDepthf when needed. The built-in eglGetProcAddress is able to retrieve pointers for standard GLES2 functions too so code resolving OpenGL 2 functions will function in any case. 2. QT_CONFIG will contain "opengl" and "dynamicgl" in dynamic builds, but never "angle" or "opengles2". 3. The preprocessor define QT_OPENGL_DYNAMIC is also available in dynamic builds. The usage of this is strongly discouraged and should not be needed anywhere except for QtGui and the platform plugin. 4. Code in need of the library handle can use QOpenGLFunctions::platformGLHandle(). The decision on which library to load is currently based on a simple test that creates a dummy window/context and tries to resolve an OpenGL 2 function. If this fails, it goes for Angle. This seems to work well on Win7 PCs for example that do not have proper graphics drivers providing OpenGL installed but are D3D9 capable using the default drivers. Setting QT_OPENGL to desktop or angle skips the test and forces usage of the given GL. There are also two new application attributes that could be used for the same purpose. If Angle is requested but the libraries are not present, desktop is tried. If desktop is requested, or if angle is requested but nothing works, the EGL/WGL functions will still be callable but will return 0. This conveniently means that eglInitialize() and such will report a failure. Debug messages can be enabled by setting QT_OPENGLPROXY_DEBUG. This will tell which implementation is chosen. The textures example application is ported to OpenGL 2, the GL 1 code path is removed. [ChangeLog][QtGui] Qt builds on Windows can now be configured for dynamic loading of the OpenGL implementation. This can be requested by passing -opengl dynamic to configure. In this mode no modules will link to opengl32.dll or Angle's libegl/libglesv2. Instead, QtGui will dynamically choose between desktop and Angle during the first GL/EGL/WGL call. This allows deploying applications with a single set of Qt libraries with the ability of transparently falling back to Angle in case the opengl32.dll is not suitable, due to missing graphics drivers for example. Task-number: QTBUG-36483 Change-Id: I716fdebbf60b355b7d9ef57d1e069eef366b4ab9 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com> Reviewed-by: Jørgen Lind <jorgen.lind@digia.com>
2014-01-27 13:45:11 +00:00
AA_UseDesktopOpenGL = 15,
AA_UseOpenGLES = 16,
Load winsys and gl dynamically in the windows plugin The dynamic builds (-opengl dynamic) are now functional on Windows. In such a build no components in Qt link to any OpenGL libraries directly and qmake will not automatically add any such libraries to the applications' makefiles. Instead, the libraries are chosen and loaded during runtime and applications are expected to use QOpenGLFunctions instead of direct OpenGLfunction calls. Set the environment variable QT_OPENGL to desktop or angle to skip testing and force the given implementation. The application attributes (AA_UseOpenGLES and such) are also taken into account. The testing logic is same as before: We try to load opengl32 and resolve a shader related function. If this fails, ANGLE is chosen. This allows utilizing full desktop OpenGL on systems that have proper drivers, while a transparent fallback to ANGLE will be done automatically for systems that don't. The latter includes also remote desktop connections. Software rendering via Mesa llvmpipe is supported too. The fallback is automatic on systems where the desktop test fails and ANGLE fails to load or initialize (e.g. due to missing libs like d3dcompiler), as long as a suitable patched build of Mesa is available. [ChangeLog][QtGui] Dynamic OpenGL implementation loading is now supported on Windows. This requires Qt to be configured with -opengl dynamic. Task-number: QTBUG-36483 Change-Id: Ie8bb25a6d55b3a1609b00150aeccd909aec27313 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
2014-04-24 12:36:49 +00:00
AA_UseSoftwareOpenGL = 17,
AA_ShareOpenGLContexts = 18,
AA_SetPalette = 19,
AA_EnableHighDpiScaling = 20,
AA_DisableHighDpiScaling = 21,
AA_UseStyleSheetPropagationInWidgetStyles = 22, // ### Qt 6: remove me
AA_DontUseNativeDialogs = 23,
add cross-platform tablet->mouse event synth; enable on Android It's urgent to fix the issue that on Android, it became impossible to interact with any widget or MouseArea which handles only mouse events but not tablet events, using the stylus, because stylus events are sent only as QTabletEvents. Before 5.6 (change 01d78ba86a631386a4d47b7c12d2a359da28f517) they were sent as touch events, and mouse events were synthesized from those. Whereas on other platforms, every QTabletEvent is followed by a synthesized QMouseEvent. This fix proceeds in the direction that event synthesis should be done in cross-platform code so that platform plugins don't have to repeat it, following the same pattern as for touch->mouse synthesis. Just as in that case, the application can disable it, and the platform plugin can also report that it's unnecessary for Qt to do the synthesis because the platform already does. So QTBUG-51618 is fixed, but QTBUG-47007 requires us to remove the tablet->mouse synthesis from all platform plugins, because the plugin does not know whether the tablet event was accepted or not, so it does not have enough information to decide whether to synthesize a mouse event. Synthesis has been unconditional until now, which contradicts what the documentation says: the mouse event should be sent only if the tablet event is NOT accepted. We can now gradually make this promise come true. [ChangeLog][QtCore][Tablet support] A synthetic mouse event will no longer be sent after every QTabletEvent, only after those which are not accepted (as documented). Task-number: QTBUG-47007 Task-number: QTBUG-51618 Change-Id: I99404e0c2b39bbca4377be6fd48e0c6b20338466 Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
2016-04-07 13:07:04 +00:00
AA_SynthesizeMouseForUnhandledTabletEvents = 24,
AA_DontCheckOpenGLContextThreadAffinity = 25,
// Add new attributes before this line
AA_AttributeCount
};
// Image conversion flags. The unusual ordering is caused by
// compatibility and default requirements.
enum ImageConversionFlag {
ColorMode_Mask = 0x00000003,
AutoColor = 0x00000000,
ColorOnly = 0x00000003,
MonoOnly = 0x00000002,
// Reserved = 0x00000001,
AlphaDither_Mask = 0x0000000c,
ThresholdAlphaDither = 0x00000000,
OrderedAlphaDither = 0x00000004,
DiffuseAlphaDither = 0x00000008,
NoAlpha = 0x0000000c, // Not supported
Dither_Mask = 0x00000030,
DiffuseDither = 0x00000000,
OrderedDither = 0x00000010,
ThresholdDither = 0x00000020,
// ReservedDither = 0x00000030,
DitherMode_Mask = 0x000000c0,
AutoDither = 0x00000000,
PreferDither = 0x00000040,
AvoidDither = 0x00000080,
NoOpaqueDetection = 0x00000100,
NoFormatConversion = 0x00000200
};
Q_DECLARE_FLAGS(ImageConversionFlags, ImageConversionFlag)
enum BGMode {
TransparentMode,
OpaqueMode
};
enum Key {
Key_Escape = 0x01000000, // misc keys
Key_Tab = 0x01000001,
Key_Backtab = 0x01000002,
Key_Backspace = 0x01000003,
Key_Return = 0x01000004,
Key_Enter = 0x01000005,
Key_Insert = 0x01000006,
Key_Delete = 0x01000007,
Key_Pause = 0x01000008,
Key_Print = 0x01000009,
Key_SysReq = 0x0100000a,
Key_Clear = 0x0100000b,
Key_Home = 0x01000010, // cursor movement
Key_End = 0x01000011,
Key_Left = 0x01000012,
Key_Up = 0x01000013,
Key_Right = 0x01000014,
Key_Down = 0x01000015,
Key_PageUp = 0x01000016,
Key_PageDown = 0x01000017,
Key_Shift = 0x01000020, // modifiers
Key_Control = 0x01000021,
Key_Meta = 0x01000022,
Key_Alt = 0x01000023,
Key_CapsLock = 0x01000024,
Key_NumLock = 0x01000025,
Key_ScrollLock = 0x01000026,
Key_F1 = 0x01000030, // function keys
Key_F2 = 0x01000031,
Key_F3 = 0x01000032,
Key_F4 = 0x01000033,
Key_F5 = 0x01000034,
Key_F6 = 0x01000035,
Key_F7 = 0x01000036,
Key_F8 = 0x01000037,
Key_F9 = 0x01000038,
Key_F10 = 0x01000039,
Key_F11 = 0x0100003a,
Key_F12 = 0x0100003b,
Key_F13 = 0x0100003c,
Key_F14 = 0x0100003d,
Key_F15 = 0x0100003e,
Key_F16 = 0x0100003f,
Key_F17 = 0x01000040,
Key_F18 = 0x01000041,
Key_F19 = 0x01000042,
Key_F20 = 0x01000043,
Key_F21 = 0x01000044,
Key_F22 = 0x01000045,
Key_F23 = 0x01000046,
Key_F24 = 0x01000047,
Key_F25 = 0x01000048, // F25 .. F35 only on X11
Key_F26 = 0x01000049,
Key_F27 = 0x0100004a,
Key_F28 = 0x0100004b,
Key_F29 = 0x0100004c,
Key_F30 = 0x0100004d,
Key_F31 = 0x0100004e,
Key_F32 = 0x0100004f,
Key_F33 = 0x01000050,
Key_F34 = 0x01000051,
Key_F35 = 0x01000052,
Key_Super_L = 0x01000053, // extra keys
Key_Super_R = 0x01000054,
Key_Menu = 0x01000055,
Key_Hyper_L = 0x01000056,
Key_Hyper_R = 0x01000057,
Key_Help = 0x01000058,
Key_Direction_L = 0x01000059,
Key_Direction_R = 0x01000060,
Key_Space = 0x20, // 7 bit printable ASCII
Key_Any = Key_Space,
Key_Exclam = 0x21,
Key_QuoteDbl = 0x22,
Key_NumberSign = 0x23,
Key_Dollar = 0x24,
Key_Percent = 0x25,
Key_Ampersand = 0x26,
Key_Apostrophe = 0x27,
Key_ParenLeft = 0x28,
Key_ParenRight = 0x29,
Key_Asterisk = 0x2a,
Key_Plus = 0x2b,
Key_Comma = 0x2c,
Key_Minus = 0x2d,
Key_Period = 0x2e,
Key_Slash = 0x2f,
Key_0 = 0x30,
Key_1 = 0x31,
Key_2 = 0x32,
Key_3 = 0x33,
Key_4 = 0x34,
Key_5 = 0x35,
Key_6 = 0x36,
Key_7 = 0x37,
Key_8 = 0x38,
Key_9 = 0x39,
Key_Colon = 0x3a,
Key_Semicolon = 0x3b,
Key_Less = 0x3c,
Key_Equal = 0x3d,
Key_Greater = 0x3e,
Key_Question = 0x3f,
Key_At = 0x40,
Key_A = 0x41,
Key_B = 0x42,
Key_C = 0x43,
Key_D = 0x44,
Key_E = 0x45,
Key_F = 0x46,
Key_G = 0x47,
Key_H = 0x48,
Key_I = 0x49,
Key_J = 0x4a,
Key_K = 0x4b,
Key_L = 0x4c,
Key_M = 0x4d,
Key_N = 0x4e,
Key_O = 0x4f,
Key_P = 0x50,
Key_Q = 0x51,
Key_R = 0x52,
Key_S = 0x53,
Key_T = 0x54,
Key_U = 0x55,
Key_V = 0x56,
Key_W = 0x57,
Key_X = 0x58,
Key_Y = 0x59,
Key_Z = 0x5a,
Key_BracketLeft = 0x5b,
Key_Backslash = 0x5c,
Key_BracketRight = 0x5d,
Key_AsciiCircum = 0x5e,
Key_Underscore = 0x5f,
Key_QuoteLeft = 0x60,
Key_BraceLeft = 0x7b,
Key_Bar = 0x7c,
Key_BraceRight = 0x7d,
Key_AsciiTilde = 0x7e,
Key_nobreakspace = 0x0a0,
Key_exclamdown = 0x0a1,
Key_cent = 0x0a2,
Key_sterling = 0x0a3,
Key_currency = 0x0a4,
Key_yen = 0x0a5,
Key_brokenbar = 0x0a6,
Key_section = 0x0a7,
Key_diaeresis = 0x0a8,
Key_copyright = 0x0a9,
Key_ordfeminine = 0x0aa,
Key_guillemotleft = 0x0ab, // left angle quotation mark
Key_notsign = 0x0ac,
Key_hyphen = 0x0ad,
Key_registered = 0x0ae,
Key_macron = 0x0af,
Key_degree = 0x0b0,
Key_plusminus = 0x0b1,
Key_twosuperior = 0x0b2,
Key_threesuperior = 0x0b3,
Key_acute = 0x0b4,
Key_mu = 0x0b5,
Key_paragraph = 0x0b6,
Key_periodcentered = 0x0b7,
Key_cedilla = 0x0b8,
Key_onesuperior = 0x0b9,
Key_masculine = 0x0ba,
Key_guillemotright = 0x0bb, // right angle quotation mark
Key_onequarter = 0x0bc,
Key_onehalf = 0x0bd,
Key_threequarters = 0x0be,
Key_questiondown = 0x0bf,
Key_Agrave = 0x0c0,
Key_Aacute = 0x0c1,
Key_Acircumflex = 0x0c2,
Key_Atilde = 0x0c3,
Key_Adiaeresis = 0x0c4,
Key_Aring = 0x0c5,
Key_AE = 0x0c6,
Key_Ccedilla = 0x0c7,
Key_Egrave = 0x0c8,
Key_Eacute = 0x0c9,
Key_Ecircumflex = 0x0ca,
Key_Ediaeresis = 0x0cb,
Key_Igrave = 0x0cc,
Key_Iacute = 0x0cd,
Key_Icircumflex = 0x0ce,
Key_Idiaeresis = 0x0cf,
Key_ETH = 0x0d0,
Key_Ntilde = 0x0d1,
Key_Ograve = 0x0d2,
Key_Oacute = 0x0d3,
Key_Ocircumflex = 0x0d4,
Key_Otilde = 0x0d5,
Key_Odiaeresis = 0x0d6,
Key_multiply = 0x0d7,
Key_Ooblique = 0x0d8,
Key_Ugrave = 0x0d9,
Key_Uacute = 0x0da,
Key_Ucircumflex = 0x0db,
Key_Udiaeresis = 0x0dc,
Key_Yacute = 0x0dd,
Key_THORN = 0x0de,
Key_ssharp = 0x0df,
Key_division = 0x0f7,
Key_ydiaeresis = 0x0ff,
// International input method support (X keycode - 0xEE00, the
// definition follows Qt/Embedded 2.3.7) Only interesting if
// you are writing your own input method
// International & multi-key character composition
Key_AltGr = 0x01001103,
Key_Multi_key = 0x01001120, // Multi-key character compose
Key_Codeinput = 0x01001137,
Key_SingleCandidate = 0x0100113c,
Key_MultipleCandidate = 0x0100113d,
Key_PreviousCandidate = 0x0100113e,
// Misc Functions
Key_Mode_switch = 0x0100117e, // Character set switch
//Key_script_switch = 0x0100117e, // Alias for mode_switch
// Japanese keyboard support
Key_Kanji = 0x01001121, // Kanji, Kanji convert
Key_Muhenkan = 0x01001122, // Cancel Conversion
//Key_Henkan_Mode = 0x01001123, // Start/Stop Conversion
Key_Henkan = 0x01001123, // Alias for Henkan_Mode
Key_Romaji = 0x01001124, // to Romaji
Key_Hiragana = 0x01001125, // to Hiragana
Key_Katakana = 0x01001126, // to Katakana
Key_Hiragana_Katakana = 0x01001127, // Hiragana/Katakana toggle
Key_Zenkaku = 0x01001128, // to Zenkaku
Key_Hankaku = 0x01001129, // to Hankaku
Key_Zenkaku_Hankaku = 0x0100112a, // Zenkaku/Hankaku toggle
Key_Touroku = 0x0100112b, // Add to Dictionary
Key_Massyo = 0x0100112c, // Delete from Dictionary
Key_Kana_Lock = 0x0100112d, // Kana Lock
Key_Kana_Shift = 0x0100112e, // Kana Shift
Key_Eisu_Shift = 0x0100112f, // Alphanumeric Shift
Key_Eisu_toggle = 0x01001130, // Alphanumeric toggle
//Key_Kanji_Bangou = 0x01001137, // Codeinput
//Key_Zen_Koho = 0x0100113d, // Multiple/All Candidate(s)
//Key_Mae_Koho = 0x0100113e, // Previous Candidate
// Korean keyboard support
//
// In fact, many Korean users need only 2 keys, Key_Hangul and
// Key_Hangul_Hanja. But rest of the keys are good for future.
Key_Hangul = 0x01001131, // Hangul start/stop(toggle)
Key_Hangul_Start = 0x01001132, // Hangul start
Key_Hangul_End = 0x01001133, // Hangul end, English start
Key_Hangul_Hanja = 0x01001134, // Start Hangul->Hanja Conversion
Key_Hangul_Jamo = 0x01001135, // Hangul Jamo mode
Key_Hangul_Romaja = 0x01001136, // Hangul Romaja mode
//Key_Hangul_Codeinput = 0x01001137, // Hangul code input mode
Key_Hangul_Jeonja = 0x01001138, // Jeonja mode
Key_Hangul_Banja = 0x01001139, // Banja mode
Key_Hangul_PreHanja = 0x0100113a, // Pre Hanja conversion
Key_Hangul_PostHanja = 0x0100113b, // Post Hanja conversion
//Key_Hangul_SingleCandidate = 0x0100113c, // Single candidate
//Key_Hangul_MultipleCandidate = 0x0100113d, // Multiple candidate
//Key_Hangul_PreviousCandidate = 0x0100113e, // Previous candidate
Key_Hangul_Special = 0x0100113f, // Special symbols
//Key_Hangul_switch = 0x0100117e, // Alias for mode_switch
// dead keys (X keycode - 0xED00 to avoid the conflict)
Key_Dead_Grave = 0x01001250,
Key_Dead_Acute = 0x01001251,
Key_Dead_Circumflex = 0x01001252,
Key_Dead_Tilde = 0x01001253,
Key_Dead_Macron = 0x01001254,
Key_Dead_Breve = 0x01001255,
Key_Dead_Abovedot = 0x01001256,
Key_Dead_Diaeresis = 0x01001257,
Key_Dead_Abovering = 0x01001258,
Key_Dead_Doubleacute = 0x01001259,
Key_Dead_Caron = 0x0100125a,
Key_Dead_Cedilla = 0x0100125b,
Key_Dead_Ogonek = 0x0100125c,
Key_Dead_Iota = 0x0100125d,
Key_Dead_Voiced_Sound = 0x0100125e,
Key_Dead_Semivoiced_Sound = 0x0100125f,
Key_Dead_Belowdot = 0x01001260,
Key_Dead_Hook = 0x01001261,
Key_Dead_Horn = 0x01001262,
// multimedia/internet keys - ignored by default - see QKeyEvent c'tor
Key_Back = 0x01000061,
Key_Forward = 0x01000062,
Key_Stop = 0x01000063,
Key_Refresh = 0x01000064,
Key_VolumeDown = 0x01000070,
Key_VolumeMute = 0x01000071,
Key_VolumeUp = 0x01000072,
Key_BassBoost = 0x01000073,
Key_BassUp = 0x01000074,
Key_BassDown = 0x01000075,
Key_TrebleUp = 0x01000076,
Key_TrebleDown = 0x01000077,
Key_MediaPlay = 0x01000080,
Key_MediaStop = 0x01000081,
Key_MediaPrevious = 0x01000082,
Key_MediaNext = 0x01000083,
Key_MediaRecord = 0x01000084,
Key_MediaPause = 0x1000085,
Key_MediaTogglePlayPause = 0x1000086,
Key_HomePage = 0x01000090,
Key_Favorites = 0x01000091,
Key_Search = 0x01000092,
Key_Standby = 0x01000093,
Key_OpenUrl = 0x01000094,
Key_LaunchMail = 0x010000a0,
Key_LaunchMedia = 0x010000a1,
Key_Launch0 = 0x010000a2,
Key_Launch1 = 0x010000a3,
Key_Launch2 = 0x010000a4,
Key_Launch3 = 0x010000a5,
Key_Launch4 = 0x010000a6,
Key_Launch5 = 0x010000a7,
Key_Launch6 = 0x010000a8,
Key_Launch7 = 0x010000a9,
Key_Launch8 = 0x010000aa,
Key_Launch9 = 0x010000ab,
Key_LaunchA = 0x010000ac,
Key_LaunchB = 0x010000ad,
Key_LaunchC = 0x010000ae,
Key_LaunchD = 0x010000af,
Key_LaunchE = 0x010000b0,
Key_LaunchF = 0x010000b1,
Key_MonBrightnessUp = 0x010000b2,
Key_MonBrightnessDown = 0x010000b3,
Key_KeyboardLightOnOff = 0x010000b4,
Key_KeyboardBrightnessUp = 0x010000b5,
Key_KeyboardBrightnessDown = 0x010000b6,
Key_PowerOff = 0x010000b7,
Key_WakeUp = 0x010000b8,
Key_Eject = 0x010000b9,
Key_ScreenSaver = 0x010000ba,
Key_WWW = 0x010000bb,
Key_Memo = 0x010000bc,
Key_LightBulb = 0x010000bd,
Key_Shop = 0x010000be,
Key_History = 0x010000bf,
Key_AddFavorite = 0x010000c0,
Key_HotLinks = 0x010000c1,
Key_BrightnessAdjust = 0x010000c2,
Key_Finance = 0x010000c3,
Key_Community = 0x010000c4,
Key_AudioRewind = 0x010000c5, // Media rewind
Key_BackForward = 0x010000c6,
Key_ApplicationLeft = 0x010000c7,
Key_ApplicationRight = 0x010000c8,
Key_Book = 0x010000c9,
Key_CD = 0x010000ca,
Key_Calculator = 0x010000cb,
Key_ToDoList = 0x010000cc,
Key_ClearGrab = 0x010000cd,
Key_Close = 0x010000ce,
Key_Copy = 0x010000cf,
Key_Cut = 0x010000d0,
Key_Display = 0x010000d1, // Output switch key
Key_DOS = 0x010000d2,
Key_Documents = 0x010000d3,
Key_Excel = 0x010000d4,
Key_Explorer = 0x010000d5,
Key_Game = 0x010000d6,
Key_Go = 0x010000d7,
Key_iTouch = 0x010000d8,
Key_LogOff = 0x010000d9,
Key_Market = 0x010000da,
Key_Meeting = 0x010000db,
Key_MenuKB = 0x010000dc,
Key_MenuPB = 0x010000dd,
Key_MySites = 0x010000de,
Key_News = 0x010000df,
Key_OfficeHome = 0x010000e0,
Key_Option = 0x010000e1,
Key_Paste = 0x010000e2,
Key_Phone = 0x010000e3,
Key_Calendar = 0x010000e4,
Key_Reply = 0x010000e5,
Key_Reload = 0x010000e6,
Key_RotateWindows = 0x010000e7,
Key_RotationPB = 0x010000e8,
Key_RotationKB = 0x010000e9,
Key_Save = 0x010000ea,
Key_Send = 0x010000eb,
Key_Spell = 0x010000ec,
Key_SplitScreen = 0x010000ed,
Key_Support = 0x010000ee,
Key_TaskPane = 0x010000ef,
Key_Terminal = 0x010000f0,
Key_Tools = 0x010000f1,
Key_Travel = 0x010000f2,
Key_Video = 0x010000f3,
Key_Word = 0x010000f4,
Key_Xfer = 0x010000f5,
Key_ZoomIn = 0x010000f6,
Key_ZoomOut = 0x010000f7,
Key_Away = 0x010000f8,
Key_Messenger = 0x010000f9,
Key_WebCam = 0x010000fa,
Key_MailForward = 0x010000fb,
Key_Pictures = 0x010000fc,
Key_Music = 0x010000fd,
Key_Battery = 0x010000fe,
Key_Bluetooth = 0x010000ff,
Key_WLAN = 0x01000100,
Key_UWB = 0x01000101,
Key_AudioForward = 0x01000102, // Media fast-forward
Key_AudioRepeat = 0x01000103, // Toggle repeat mode
Key_AudioRandomPlay = 0x01000104, // Toggle shuffle mode
Key_Subtitle = 0x01000105,
Key_AudioCycleTrack = 0x01000106,
Key_Time = 0x01000107,
Key_Hibernate = 0x01000108,
Key_View = 0x01000109,
Key_TopMenu = 0x0100010a,
Key_PowerDown = 0x0100010b,
Key_Suspend = 0x0100010c,
Key_ContrastAdjust = 0x0100010d,
Key_LaunchG = 0x0100010e,
Key_LaunchH = 0x0100010f,
Key_TouchpadToggle = 0x01000110,
Key_TouchpadOn = 0x01000111,
Key_TouchpadOff = 0x01000112,
Key_MicMute = 0x01000113,
Key_Red = 0x01000114,
Key_Green = 0x01000115,
Key_Yellow = 0x01000116,
Key_Blue = 0x01000117,
Key_ChannelUp = 0x01000118,
Key_ChannelDown = 0x01000119,
Key_Guide = 0x0100011a,
Key_Info = 0x0100011b,
Key_Settings = 0x0100011c,
Key_MicVolumeUp = 0x0100011d,
Key_MicVolumeDown = 0x0100011e,
Key_New = 0x01000120,
Key_Open = 0x01000121,
Key_Find = 0x01000122,
Key_Undo = 0x01000123,
Key_Redo = 0x01000124,
Key_MediaLast = 0x0100ffff,
// Keypad navigation keys
Key_Select = 0x01010000,
Key_Yes = 0x01010001,
Key_No = 0x01010002,
// Newer misc keys
Key_Cancel = 0x01020001,
Key_Printer = 0x01020002,
Key_Execute = 0x01020003,
Key_Sleep = 0x01020004,
Key_Play = 0x01020005, // Not the same as Key_MediaPlay
Key_Zoom = 0x01020006,
//Key_Jisho = 0x01020007, // IME: Dictionary key
//Key_Oyayubi_Left = 0x01020008, // IME: Left Oyayubi key
//Key_Oyayubi_Right = 0x01020009, // IME: Right Oyayubi key
Key_Exit = 0x0102000a,
// Device keys
Key_Context1 = 0x01100000,
Key_Context2 = 0x01100001,
Key_Context3 = 0x01100002,
Key_Context4 = 0x01100003,
Key_Call = 0x01100004, // set absolute state to in a call (do not toggle state)
Key_Hangup = 0x01100005, // set absolute state to hang up (do not toggle state)
Key_Flip = 0x01100006,
Key_ToggleCallHangup = 0x01100007, // a toggle key for answering, or hanging up, based on current call state
Key_VoiceDial = 0x01100008,
Key_LastNumberRedial = 0x01100009,
Key_Camera = 0x01100020,
Key_CameraFocus = 0x01100021,
Key_unknown = 0x01ffffff
};
enum ArrowType {
NoArrow,
UpArrow,
DownArrow,
LeftArrow,
RightArrow
};
enum PenStyle { // pen style
NoPen,
SolidLine,
DashLine,
DotLine,
DashDotLine,
DashDotDotLine,
CustomDashLine
#ifndef Q_MOC_RUN
, MPenStyle = 0x0f
#endif
};
enum PenCapStyle { // line endcap style
FlatCap = 0x00,
SquareCap = 0x10,
RoundCap = 0x20,
MPenCapStyle = 0x30
};
enum PenJoinStyle { // line join style
MiterJoin = 0x00,
BevelJoin = 0x40,
RoundJoin = 0x80,
SvgMiterJoin = 0x100,
MPenJoinStyle = 0x1c0
};
enum BrushStyle { // brush style
NoBrush,
SolidPattern,
Dense1Pattern,
Dense2Pattern,
Dense3Pattern,
Dense4Pattern,
Dense5Pattern,
Dense6Pattern,
Dense7Pattern,
HorPattern,
VerPattern,
CrossPattern,
BDiagPattern,
FDiagPattern,
DiagCrossPattern,
LinearGradientPattern,
RadialGradientPattern,
ConicalGradientPattern,
TexturePattern = 24
};
enum SizeMode {
AbsoluteSize,
RelativeSize
};
enum UIEffect {
UI_General,
UI_AnimateMenu,
UI_FadeMenu,
UI_AnimateCombo,
UI_AnimateTooltip,
UI_FadeTooltip,
UI_AnimateToolBox
};
enum CursorShape {
ArrowCursor,
UpArrowCursor,
CrossCursor,
WaitCursor,
IBeamCursor,
SizeVerCursor,
SizeHorCursor,
SizeBDiagCursor,
SizeFDiagCursor,
SizeAllCursor,
BlankCursor,
SplitVCursor,
SplitHCursor,
PointingHandCursor,
ForbiddenCursor,
WhatsThisCursor,
BusyCursor,
OpenHandCursor,
ClosedHandCursor,
DragCopyCursor,
DragMoveCursor,
DragLinkCursor,
LastCursor = DragLinkCursor,
BitmapCursor = 24,
CustomCursor = 25
};
enum TextFormat {
PlainText,
RichText,
AutoText
};
enum AspectRatioMode {
IgnoreAspectRatio,
KeepAspectRatio,
KeepAspectRatioByExpanding
};
enum DockWidgetArea {
LeftDockWidgetArea = 0x1,
RightDockWidgetArea = 0x2,
TopDockWidgetArea = 0x4,
BottomDockWidgetArea = 0x8,
DockWidgetArea_Mask = 0xf,
AllDockWidgetAreas = DockWidgetArea_Mask,
NoDockWidgetArea = 0
};
enum DockWidgetAreaSizes {
NDockWidgetAreas = 4
};
Q_DECLARE_FLAGS(DockWidgetAreas, DockWidgetArea)
enum ToolBarArea {
LeftToolBarArea = 0x1,
RightToolBarArea = 0x2,
TopToolBarArea = 0x4,
BottomToolBarArea = 0x8,
ToolBarArea_Mask = 0xf,
AllToolBarAreas = ToolBarArea_Mask,
NoToolBarArea = 0
};
enum ToolBarAreaSizes {
NToolBarAreas = 4
};
Q_DECLARE_FLAGS(ToolBarAreas, ToolBarArea)
enum DateFormat {
TextDate, // default Qt
ISODate, // ISO 8601
SystemLocaleDate, // deprecated
LocalDate = SystemLocaleDate, // deprecated
LocaleDate, // deprecated
SystemLocaleShortDate,
SystemLocaleLongDate,
DefaultLocaleShortDate,
DefaultLocaleLongDate,
RFC2822Date // RFC 2822 (+ 850 and 1036 during parsing)
};
enum TimeSpec {
LocalTime,
UTC,
OffsetFromUTC,
TimeZone
};
enum DayOfWeek {
Monday = 1,
Tuesday = 2,
Wednesday = 3,
Thursday = 4,
Friday = 5,
Saturday = 6,
Sunday = 7
};
enum ScrollBarPolicy {
ScrollBarAsNeeded,
ScrollBarAlwaysOff,
ScrollBarAlwaysOn
};
enum CaseSensitivity {
CaseInsensitive,
CaseSensitive
};
enum Corner {
TopLeftCorner = 0x00000,
TopRightCorner = 0x00001,
BottomLeftCorner = 0x00002,
BottomRightCorner = 0x00003
};
enum Edge {
TopEdge = 0x00001,
LeftEdge = 0x00002,
RightEdge = 0x00004,
BottomEdge = 0x00008
};
Q_DECLARE_FLAGS(Edges, Edge)
enum ConnectionType {
AutoConnection,
DirectConnection,
QueuedConnection,
BlockingQueuedConnection,
UniqueConnection = 0x80
};
enum ShortcutContext {
WidgetShortcut,
WindowShortcut,
ApplicationShortcut,
WidgetWithChildrenShortcut
};
enum FillRule {
OddEvenFill,
WindingFill
};
enum MaskMode {
MaskInColor,
MaskOutColor
};
enum ClipOperation {
NoClip,
ReplaceClip,
IntersectClip
};
// Shape = 0x1, BoundingRect = 0x2
enum ItemSelectionMode {
ContainsItemShape = 0x0,
IntersectsItemShape = 0x1,
ContainsItemBoundingRect = 0x2,
IntersectsItemBoundingRect = 0x3
};
enum ItemSelectionOperation {
ReplaceSelection,
AddToSelection
};
enum TransformationMode {
FastTransformation,
SmoothTransformation
};
enum Axis {
XAxis,
YAxis,
ZAxis
};
enum FocusReason {
MouseFocusReason,
TabFocusReason,
BacktabFocusReason,
ActiveWindowFocusReason,
PopupFocusReason,
ShortcutFocusReason,
MenuBarFocusReason,
OtherFocusReason,
NoFocusReason
};
enum ContextMenuPolicy {
NoContextMenu,
DefaultContextMenu,
ActionsContextMenu,
CustomContextMenu,
PreventContextMenu
};
enum InputMethodQuery {
ImEnabled = 0x1,
ImCursorRectangle = 0x2,
ImMicroFocus = 0x2, // deprecated
ImFont = 0x4,
ImCursorPosition = 0x8,
ImSurroundingText = 0x10,
ImCurrentSelection = 0x20,
ImMaximumTextLength = 0x40,
ImAnchorPosition = 0x80,
ImHints = 0x100,
ImPreferredLanguage = 0x200,
ImAbsolutePosition = 0x400,
ImTextBeforeCursor = 0x800,
ImTextAfterCursor = 0x1000,
ImEnterKeyType = 0x2000,
ImAnchorRectangle = 0x4000,
ImPlatformData = 0x80000000,
ImQueryInput = ImCursorRectangle | ImCursorPosition | ImSurroundingText |
ImCurrentSelection | ImAnchorRectangle | ImAnchorPosition,
ImQueryAll = 0xffffffff
};
Q_DECLARE_FLAGS(InputMethodQueries, InputMethodQuery)
enum InputMethodHint {
ImhNone = 0x0,
ImhHiddenText = 0x1,
ImhSensitiveData = 0x2,
ImhNoAutoUppercase = 0x4,
ImhPreferNumbers = 0x8,
ImhPreferUppercase = 0x10,
ImhPreferLowercase = 0x20,
ImhNoPredictiveText = 0x40,
ImhDate = 0x80,
ImhTime = 0x100,
ImhPreferLatin = 0x200,
ImhMultiLine = 0x400,
ImhDigitsOnly = 0x10000,
ImhFormattedNumbersOnly = 0x20000,
ImhUppercaseOnly = 0x40000,
ImhLowercaseOnly = 0x80000,
ImhDialableCharactersOnly = 0x100000,
ImhEmailCharactersOnly = 0x200000,
ImhUrlCharactersOnly = 0x400000,
ImhLatinOnly = 0x800000,
ImhExclusiveInputMask = 0xffff0000
};
Q_DECLARE_FLAGS(InputMethodHints, InputMethodHint)
enum EnterKeyType {
EnterKeyDefault,
EnterKeyReturn,
EnterKeyDone,
EnterKeyGo,
EnterKeySend,
EnterKeySearch,
EnterKeyNext,
EnterKeyPrevious
};
enum ToolButtonStyle {
ToolButtonIconOnly,
ToolButtonTextOnly,
ToolButtonTextBesideIcon,
ToolButtonTextUnderIcon,
ToolButtonFollowStyle
};
enum LayoutDirection {
LeftToRight,
RightToLeft,
LayoutDirectionAuto
};
enum AnchorPoint {
AnchorLeft = 0,
AnchorHorizontalCenter,
AnchorRight,
AnchorTop,
AnchorVerticalCenter,
AnchorBottom
};
enum FindChildOption {
FindDirectChildrenOnly = 0x0,
FindChildrenRecursively = 0x1
};
Q_DECLARE_FLAGS(FindChildOptions, FindChildOption)
enum DropAction {
CopyAction = 0x1,
MoveAction = 0x2,
LinkAction = 0x4,
ActionMask = 0xff,
TargetMoveAction = 0x8002,
IgnoreAction = 0x0
};
Q_DECLARE_FLAGS(DropActions, DropAction)
enum CheckState {
Unchecked,
PartiallyChecked,
Checked
};
enum ItemDataRole {
DisplayRole = 0,
DecorationRole = 1,
EditRole = 2,
ToolTipRole = 3,
StatusTipRole = 4,
WhatsThisRole = 5,
// Metadata
FontRole = 6,
TextAlignmentRole = 7,
BackgroundColorRole = 8,
BackgroundRole = 8,
TextColorRole = 9,
ForegroundRole = 9,
CheckStateRole = 10,
// Accessibility
AccessibleTextRole = 11,
AccessibleDescriptionRole = 12,
// More general purpose
SizeHintRole = 13,
InitialSortOrderRole = 14,
// Internal UiLib roles. Start worrying when public roles go that high.
DisplayPropertyRole = 27,
DecorationPropertyRole = 28,
ToolTipPropertyRole = 29,
StatusTipPropertyRole = 30,
WhatsThisPropertyRole = 31,
// Reserved
UserRole = 0x0100
};
enum ItemFlag {
NoItemFlags = 0,
ItemIsSelectable = 1,
ItemIsEditable = 2,
ItemIsDragEnabled = 4,
ItemIsDropEnabled = 8,
ItemIsUserCheckable = 16,
ItemIsEnabled = 32,
ItemIsAutoTristate = 64,
#if QT_DEPRECATED_SINCE(5, 6)
ItemIsTristate = ItemIsAutoTristate,
#endif
ItemNeverHasChildren = 128,
ItemIsUserTristate = 256
};
Q_DECLARE_FLAGS(ItemFlags, ItemFlag)
enum MatchFlag {
MatchExactly = 0,
MatchContains = 1,
MatchStartsWith = 2,
MatchEndsWith = 3,
MatchRegExp = 4,
MatchWildcard = 5,
MatchFixedString = 8,
MatchCaseSensitive = 16,
MatchWrap = 32,
MatchRecursive = 64
};
Q_DECLARE_FLAGS(MatchFlags, MatchFlag)
typedef void * HANDLE;
#if QT_DEPRECATED_SINCE(5, 0)
typedef WindowFlags WFlags;
#endif
enum WindowModality {
NonModal,
WindowModal,
ApplicationModal
};
enum TextInteractionFlag {
NoTextInteraction = 0,
TextSelectableByMouse = 1,
TextSelectableByKeyboard = 2,
LinksAccessibleByMouse = 4,
LinksAccessibleByKeyboard = 8,
TextEditable = 16,
TextEditorInteraction = TextSelectableByMouse | TextSelectableByKeyboard | TextEditable,
TextBrowserInteraction = TextSelectableByMouse | LinksAccessibleByMouse | LinksAccessibleByKeyboard
};
Q_DECLARE_FLAGS(TextInteractionFlags, TextInteractionFlag)
enum EventPriority {
HighEventPriority = 1,
NormalEventPriority = 0,
LowEventPriority = -1
};
enum SizeHint {
MinimumSize,
PreferredSize,
MaximumSize,
MinimumDescent,
NSizeHints
};
enum WindowFrameSection {
NoSection,
LeftSection, // For resize
TopLeftSection,
TopSection,
TopRightSection,
RightSection,
BottomRightSection,
BottomSection,
BottomLeftSection,
TitleBarArea // For move
};
#if defined(Q_COMPILER_CLASS_ENUM) && defined(Q_COMPILER_CONSTEXPR)
enum class Initialization {
Uninitialized
};
static constexpr Q_DECL_UNUSED Initialization Uninitialized = Initialization::Uninitialized;
#else
enum Initialization {
Uninitialized
};
#endif
enum CoordinateSystem {
DeviceCoordinates,
LogicalCoordinates
};
enum TouchPointState {
TouchPointPressed = 0x01,
TouchPointMoved = 0x02,
TouchPointStationary = 0x04,
TouchPointReleased = 0x08
};
Q_DECLARE_FLAGS(TouchPointStates, TouchPointState)
#ifndef QT_NO_GESTURES
enum GestureState
{
NoGesture,
GestureStarted = 1,
GestureUpdated = 2,
GestureFinished = 3,
GestureCanceled = 4
};
enum GestureType
{
TapGesture = 1,
TapAndHoldGesture = 2,
PanGesture = 3,
PinchGesture = 4,
SwipeGesture = 5,
CustomGesture = 0x0100,
LastGestureType = ~0u
};
enum GestureFlag
{
DontStartGestureOnChildren = 0x01,
ReceivePartialGestures = 0x02,
IgnoredGesturesPropagateToParent = 0x04
};
Q_DECLARE_FLAGS(GestureFlags, GestureFlag)
enum NativeGestureType
{
BeginNativeGesture,
EndNativeGesture,
PanNativeGesture,
ZoomNativeGesture,
SmartZoomNativeGesture,
RotateNativeGesture,
SwipeNativeGesture
};
#endif // QT_NO_GESTURES
enum NavigationMode
{
NavigationModeNone,
NavigationModeKeypadTabOrder,
NavigationModeKeypadDirectional,
NavigationModeCursorAuto,
NavigationModeCursorForceVisible
};
enum CursorMoveStyle {
LogicalMoveStyle,
VisualMoveStyle
};
enum TimerType {
PreciseTimer,
CoarseTimer,
VeryCoarseTimer
};
enum ScrollPhase {
NoScrollPhase = 0,
ScrollBegin,
ScrollUpdate,
ScrollEnd
};
enum MouseEventSource {
MouseEventNotSynthesized,
MouseEventSynthesizedBySystem,
MouseEventSynthesizedByQt,
MouseEventSynthesizedByApplication
};
enum MouseEventFlag {
MouseEventCreatedDoubleClick = 0x01,
MouseEventFlagMask = 0xFF
};
Q_DECLARE_FLAGS(MouseEventFlags, MouseEventFlag)
#ifndef Q_QDOC
// NOTE: Generally, do not add QT_Q_ENUM if a corresponding Q_Q_FLAG exists.
QT_Q_ENUM(ScrollBarPolicy)
QT_Q_ENUM(FocusPolicy)
QT_Q_ENUM(ContextMenuPolicy)
QT_Q_ENUM(ArrowType)
QT_Q_ENUM(ToolButtonStyle)
QT_Q_ENUM(PenStyle)
QT_Q_ENUM(PenCapStyle)
QT_Q_ENUM(PenJoinStyle)
QT_Q_ENUM(BrushStyle)
QT_Q_ENUM(FillRule)
QT_Q_ENUM(MaskMode)
QT_Q_ENUM(BGMode)
QT_Q_ENUM(ClipOperation)
QT_Q_ENUM(SizeMode)
QT_Q_ENUM(Axis)
QT_Q_ENUM(Corner)
QT_Q_ENUM(Edge)
QT_Q_ENUM(LayoutDirection)
QT_Q_ENUM(SizeHint)
QT_Q_ENUM(Orientation)
QT_Q_ENUM(DropAction)
QT_Q_FLAG(Alignment)
QT_Q_FLAG(Orientations)
QT_Q_FLAG(DropActions)
QT_Q_FLAG(Edges)
QT_Q_FLAG(DockWidgetAreas)
QT_Q_FLAG(ToolBarAreas)
QT_Q_ENUM(DockWidgetArea)
QT_Q_ENUM(ToolBarArea)
QT_Q_ENUM(TextFormat)
QT_Q_ENUM(TextElideMode)
QT_Q_ENUM(DateFormat)
QT_Q_ENUM(TimeSpec)
QT_Q_ENUM(DayOfWeek)
QT_Q_ENUM(CursorShape)
QT_Q_ENUM(GlobalColor)
QT_Q_ENUM(AspectRatioMode)
QT_Q_ENUM(TransformationMode)
QT_Q_FLAG(ImageConversionFlags)
QT_Q_ENUM(Key)
QT_Q_ENUM(ShortcutContext)
QT_Q_ENUM(TextInteractionFlag)
QT_Q_FLAG(TextInteractionFlags)
QT_Q_ENUM(ItemSelectionMode)
QT_Q_ENUM(ItemSelectionOperation)
QT_Q_FLAG(ItemFlags)
QT_Q_ENUM(CheckState)
QT_Q_ENUM(ItemDataRole)
QT_Q_ENUM(SortOrder)
QT_Q_ENUM(CaseSensitivity)
QT_Q_FLAG(MatchFlags)
QT_Q_FLAG(KeyboardModifiers)
QT_Q_FLAG(MouseButtons)
QT_Q_ENUM(WindowType)
QT_Q_ENUM(WindowState)
QT_Q_ENUM(WindowModality)
QT_Q_ENUM(WidgetAttribute)
QT_Q_ENUM(ApplicationAttribute)
QT_Q_FLAG(WindowFlags)
QT_Q_FLAG(WindowStates)
QT_Q_ENUM(FocusReason)
QT_Q_ENUM(InputMethodHint)
QT_Q_ENUM(InputMethodQuery)
QT_Q_FLAG(InputMethodHints)
QT_Q_ENUM(EnterKeyType)
QT_Q_FLAG(InputMethodQueries)
QT_Q_FLAG(TouchPointStates)
QT_Q_ENUM(ScreenOrientation)
QT_Q_FLAG(ScreenOrientations)
QT_Q_ENUM(ConnectionType)
QT_Q_ENUM(ApplicationState)
#ifndef QT_NO_GESTURES
QT_Q_ENUM(GestureState)
QT_Q_ENUM(GestureType)
QT_Q_ENUM(NativeGestureType)
#endif
QT_Q_ENUM(CursorMoveStyle)
QT_Q_ENUM(TimerType)
QT_Q_ENUM(ScrollPhase)
QT_Q_ENUM(MouseEventSource)
QT_Q_FLAG(MouseEventFlag)
QT_Q_ENUM(TabFocusBehavior)
#endif // Q_DOC
}
#ifdef Q_MOC_RUN
;
#endif
#undef QT_Q_ENUM
#undef QT_Q_FLAG
Q_DECLARE_OPERATORS_FOR_FLAGS(Qt::MouseButtons)
Q_DECLARE_OPERATORS_FOR_FLAGS(Qt::Orientations)
Q_DECLARE_OPERATORS_FOR_FLAGS(Qt::KeyboardModifiers)
Q_DECLARE_OPERATORS_FOR_FLAGS(Qt::WindowFlags)
Q_DECLARE_OPERATORS_FOR_FLAGS(Qt::Alignment)
Q_DECLARE_OPERATORS_FOR_FLAGS(Qt::Edges)
Q_DECLARE_OPERATORS_FOR_FLAGS(Qt::ImageConversionFlags)
Q_DECLARE_OPERATORS_FOR_FLAGS(Qt::DockWidgetAreas)
Q_DECLARE_OPERATORS_FOR_FLAGS(Qt::ToolBarAreas)
Q_DECLARE_OPERATORS_FOR_FLAGS(Qt::WindowStates)
Q_DECLARE_OPERATORS_FOR_FLAGS(Qt::ScreenOrientations)
Q_DECLARE_OPERATORS_FOR_FLAGS(Qt::DropActions)
Q_DECLARE_OPERATORS_FOR_FLAGS(Qt::ItemFlags)
Q_DECLARE_OPERATORS_FOR_FLAGS(Qt::MatchFlags)
Q_DECLARE_OPERATORS_FOR_FLAGS(Qt::TextInteractionFlags)
Q_DECLARE_OPERATORS_FOR_FLAGS(Qt::InputMethodQueries)
Q_DECLARE_OPERATORS_FOR_FLAGS(Qt::InputMethodHints)
Q_DECLARE_OPERATORS_FOR_FLAGS(Qt::TouchPointStates)
Q_DECLARE_OPERATORS_FOR_FLAGS(Qt::MouseEventFlags)
#ifndef QT_NO_GESTURES
Q_DECLARE_OPERATORS_FOR_FLAGS(Qt::GestureFlags)
#endif
typedef bool (*qInternalCallback)(void **);
class Q_CORE_EXPORT QInternal {
public:
enum PaintDeviceFlags {
UnknownDevice = 0x00,
Widget = 0x01,
Pixmap = 0x02,
Image = 0x03,
Printer = 0x04,
Picture = 0x05,
Pbuffer = 0x06, // GL pbuffer
FramebufferObject = 0x07, // GL framebuffer object
CustomRaster = 0x08,
MacQuartz = 0x09,
PaintBuffer = 0x0a,
OpenGL = 0x0b
};
enum RelayoutType {
RelayoutNormal,
RelayoutDragging,
RelayoutDropped
};
enum DockPosition {
LeftDock,
RightDock,
TopDock,
BottomDock,
DockCount
};
enum Callback {
EventNotifyCallback,
LastCallback
};
static bool registerCallback(Callback, qInternalCallback);
static bool unregisterCallback(Callback, qInternalCallback);
static bool activateCallbacks(Callback, void **);
};
QT_END_NAMESPACE
#endif // QNAMESPACE_H