Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Loading...
Searching...
No Matches
qxcbwindow.cpp File Reference

(f2319ada91a27b0fc08646be178a9c6193c7e0e1)

#include "qxcbwindow.h"
#include <QtDebug>
#include <QMetaEnum>
#include <QScreen>
#include <QtCore/QFileInfo>
#include <QtGui/QIcon>
#include <QtGui/QRegion>
#include <QtGui/private/qhighdpiscaling_p.h>
#include "qxcbintegration.h"
#include "qxcbconnection.h"
#include "qxcbscreen.h"
#include "qxcbkeyboard.h"
#include "qxcbimage.h"
#include "qxcbwmsupport.h"
#include "qxcbnativeinterface.h"
#include "qxcbsystemtraytracker.h"
#include <qpa/qplatformintegration.h>
#include <qpa/qplatformcursor.h>
#include <algorithm>
#include <xcb/xcb_icccm.h>
#include <xcb/xfixes.h>
#include <xcb/shape.h>
#include <xcb/xinput.h>
#include <private/qguiapplication_p.h>
#include <private/qwindow_p.h>
#include <qpa/qplatformbackingstore.h>
#include <qpa/qwindowsysteminterface.h>
#include <stdio.h>
#include <unistd.h>
Include dependency graph for qxcbwindow.cpp:

Go to the source code of this file.

Classes

struct  QtMotifWmHints

Macros

#define XCOORD_MAX   32767
#define qt_xcb_mask_is_set(ptr, event)

Enumerations

enum  { defaultWindowWidth = 160 , defaultWindowHeight = 160 , defaultWindowWidth = 160 , defaultWindowHeight = 160 }
enum  QX11EmbedFocusInDetail {
  XEMBED_FOCUS_CURRENT = 0 , XEMBED_FOCUS_FIRST = 1 , XEMBED_FOCUS_LAST = 2 , XEMBED_FOCUS_CURRENT = 0 ,
  XEMBED_FOCUS_FIRST = 1 , XEMBED_FOCUS_LAST = 2
}
enum  QX11EmbedInfoFlags { XEMBED_MAPPED = (1 << 0) , XEMBED_MAPPED = (1 << 0) }
enum  QX11EmbedMessageType {
  XEMBED_EMBEDDED_NOTIFY = 0 , XEMBED_WINDOW_ACTIVATE = 1 , XEMBED_WINDOW_DEACTIVATE = 2 , XEMBED_REQUEST_FOCUS = 3 ,
  XEMBED_FOCUS_IN = 4 , XEMBED_FOCUS_OUT = 5 , XEMBED_FOCUS_NEXT = 6 , XEMBED_FOCUS_PREV = 7 ,
  XEMBED_MODALITY_ON = 10 , XEMBED_MODALITY_OFF = 11 , XEMBED_REGISTER_ACCELERATOR = 12 , XEMBED_UNREGISTER_ACCELERATOR = 13 ,
  XEMBED_ACTIVATE_ACCELERATOR = 14 , XEMBED_EMBEDDED_NOTIFY = 0 , XEMBED_WINDOW_ACTIVATE = 1 , XEMBED_WINDOW_DEACTIVATE = 2 ,
  XEMBED_REQUEST_FOCUS = 3 , XEMBED_FOCUS_IN = 4 , XEMBED_FOCUS_OUT = 5 , XEMBED_FOCUS_NEXT = 6 ,
  XEMBED_FOCUS_PREV = 7 , XEMBED_MODALITY_ON = 10 , XEMBED_MODALITY_OFF = 11 , XEMBED_REGISTER_ACCELERATOR = 12 ,
  XEMBED_UNREGISTER_ACCELERATOR = 13 , XEMBED_ACTIVATE_ACCELERATOR = 14
}
enum  : quint32 {
  baseEventMask , defaultEventMask , transparentForInputEventMask , baseEventMask ,
  defaultEventMask , transparentForInputEventMask
}
enum  {
  MWM_HINTS_FUNCTIONS = (1L << 0) , MWM_FUNC_ALL = (1L << 0) , MWM_FUNC_RESIZE = (1L << 1) , MWM_FUNC_MOVE = (1L << 2) ,
  MWM_FUNC_MINIMIZE = (1L << 3) , MWM_FUNC_MAXIMIZE = (1L << 4) , MWM_FUNC_CLOSE = (1L << 5) , MWM_HINTS_DECORATIONS = (1L << 1) ,
  MWM_DECOR_ALL = (1L << 0) , MWM_DECOR_BORDER = (1L << 1) , MWM_DECOR_RESIZEH = (1L << 2) , MWM_DECOR_TITLE = (1L << 3) ,
  MWM_DECOR_MENU = (1L << 4) , MWM_DECOR_MINIMIZE = (1L << 5) , MWM_DECOR_MAXIMIZE = (1L << 6) , MWM_HINTS_FUNCTIONS = (1L << 0) ,
  MWM_FUNC_ALL = (1L << 0) , MWM_FUNC_RESIZE = (1L << 1) , MWM_FUNC_MOVE = (1L << 2) , MWM_FUNC_MINIMIZE = (1L << 3) ,
  MWM_FUNC_MAXIMIZE = (1L << 4) , MWM_FUNC_CLOSE = (1L << 5) , MWM_HINTS_DECORATIONS = (1L << 1) , MWM_DECOR_ALL = (1L << 0) ,
  MWM_DECOR_BORDER = (1L << 1) , MWM_DECOR_RESIZEH = (1L << 2) , MWM_DECOR_TITLE = (1L << 3) , MWM_DECOR_MENU = (1L << 4) ,
  MWM_DECOR_MINIMIZE = (1L << 5) , MWM_DECOR_MAXIMIZE = (1L << 6)
}
enum  { defaultWindowWidth = 160 , defaultWindowHeight = 160 , defaultWindowWidth = 160 , defaultWindowHeight = 160 }
enum  QX11EmbedFocusInDetail {
  XEMBED_FOCUS_CURRENT = 0 , XEMBED_FOCUS_FIRST = 1 , XEMBED_FOCUS_LAST = 2 , XEMBED_FOCUS_CURRENT = 0 ,
  XEMBED_FOCUS_FIRST = 1 , XEMBED_FOCUS_LAST = 2
}
enum  QX11EmbedInfoFlags { XEMBED_MAPPED = (1 << 0) , XEMBED_MAPPED = (1 << 0) }
enum  QX11EmbedMessageType {
  XEMBED_EMBEDDED_NOTIFY = 0 , XEMBED_WINDOW_ACTIVATE = 1 , XEMBED_WINDOW_DEACTIVATE = 2 , XEMBED_REQUEST_FOCUS = 3 ,
  XEMBED_FOCUS_IN = 4 , XEMBED_FOCUS_OUT = 5 , XEMBED_FOCUS_NEXT = 6 , XEMBED_FOCUS_PREV = 7 ,
  XEMBED_MODALITY_ON = 10 , XEMBED_MODALITY_OFF = 11 , XEMBED_REGISTER_ACCELERATOR = 12 , XEMBED_UNREGISTER_ACCELERATOR = 13 ,
  XEMBED_ACTIVATE_ACCELERATOR = 14 , XEMBED_EMBEDDED_NOTIFY = 0 , XEMBED_WINDOW_ACTIVATE = 1 , XEMBED_WINDOW_DEACTIVATE = 2 ,
  XEMBED_REQUEST_FOCUS = 3 , XEMBED_FOCUS_IN = 4 , XEMBED_FOCUS_OUT = 5 , XEMBED_FOCUS_NEXT = 6 ,
  XEMBED_FOCUS_PREV = 7 , XEMBED_MODALITY_ON = 10 , XEMBED_MODALITY_OFF = 11 , XEMBED_REGISTER_ACCELERATOR = 12 ,
  XEMBED_UNREGISTER_ACCELERATOR = 13 , XEMBED_ACTIVATE_ACCELERATOR = 14
}
enum  : quint32 {
  baseEventMask , defaultEventMask , transparentForInputEventMask , baseEventMask ,
  defaultEventMask , transparentForInputEventMask
}
enum  {
  MWM_HINTS_FUNCTIONS = (1L << 0) , MWM_FUNC_ALL = (1L << 0) , MWM_FUNC_RESIZE = (1L << 1) , MWM_FUNC_MOVE = (1L << 2) ,
  MWM_FUNC_MINIMIZE = (1L << 3) , MWM_FUNC_MAXIMIZE = (1L << 4) , MWM_FUNC_CLOSE = (1L << 5) , MWM_HINTS_DECORATIONS = (1L << 1) ,
  MWM_DECOR_ALL = (1L << 0) , MWM_DECOR_BORDER = (1L << 1) , MWM_DECOR_RESIZEH = (1L << 2) , MWM_DECOR_TITLE = (1L << 3) ,
  MWM_DECOR_MENU = (1L << 4) , MWM_DECOR_MINIMIZE = (1L << 5) , MWM_DECOR_MAXIMIZE = (1L << 6) , MWM_HINTS_FUNCTIONS = (1L << 0) ,
  MWM_FUNC_ALL = (1L << 0) , MWM_FUNC_RESIZE = (1L << 1) , MWM_FUNC_MOVE = (1L << 2) , MWM_FUNC_MINIMIZE = (1L << 3) ,
  MWM_FUNC_MAXIMIZE = (1L << 4) , MWM_FUNC_CLOSE = (1L << 5) , MWM_HINTS_DECORATIONS = (1L << 1) , MWM_DECOR_ALL = (1L << 0) ,
  MWM_DECOR_BORDER = (1L << 1) , MWM_DECOR_RESIZEH = (1L << 2) , MWM_DECOR_TITLE = (1L << 3) , MWM_DECOR_MENU = (1L << 4) ,
  MWM_DECOR_MINIMIZE = (1L << 5) , MWM_DECOR_MAXIMIZE = (1L << 6)
}

Functions

 Q_STATIC_LOGGING_CATEGORY (lcQpaWindow, "qt.qpa.window")
 Q_STATIC_LOGGING_CATEGORY (lcQpaXcbWindow, "qt.qpa.xcb.window")
 Q_DECLARE_TYPEINFO (xcb_rectangle_t, Q_PRIMITIVE_TYPE)
static bool isTransient (const QWindow *w)
static QWindowchildWindowAt (QWindow *win, const QPoint &p)
static bool doCheckUnGrabAncestor (QXcbConnection *conn)
static bool ignoreLeaveEvent (quint8 mode, quint8 detail, QXcbConnection *conn)
static bool ignoreEnterEvent (quint8 mode, quint8 detail, QXcbConnection *conn=nullptr)
static int fixed1616ToInt (xcb_input_fp1616_t val)
static uint qtEdgesToXcbMoveResizeDirection (Qt::Edges edges)
static bool focusWindowChangeQueued (const QWindow *window)
static xcb_rectangle_t qRectToXCBRectangle (const QRect &r)
QList< xcb_rectangle_t > qRegionToXcbRectangleList (const QRegion &region)

Variables

const quint32 XEMBED_VERSION = 0
static const char * wm_window_type_property_id = "_q_xcb_wm_window_type"
static const char * wm_window_role_property_id = "_q_xcb_wm_window_role"

Macro Definition Documentation

◆ qt_xcb_mask_is_set

#define qt_xcb_mask_is_set ( ptr,
event )
Value:
(((unsigned char*)(ptr))[(event)>>3] & (1 << ((event) & 7)))
static ControlElement< T > * ptr(QWidget *widget)
struct _cl_event * event

Definition at line 2116 of file qxcbwindow.cpp.

◆ XCOORD_MAX

#define XCOORD_MAX   32767

Definition at line 54 of file qxcbwindow.cpp.

Enumeration Type Documentation

◆ anonymous enum [1/2]

anonymous enum
Enumerator
defaultWindowWidth 
defaultWindowHeight 
defaultWindowWidth 
defaultWindowHeight 

Definition at line 55 of file qxcbwindow.cpp.

◆ anonymous enum [2/2]

anonymous enum
Enumerator
defaultWindowWidth 
defaultWindowHeight 
defaultWindowWidth 
defaultWindowHeight 

Definition at line 55 of file qxcbwindow.cpp.

◆ anonymous enum [1/2]

anonymous enum : quint32
Enumerator
baseEventMask 
defaultEventMask 
transparentForInputEventMask 
baseEventMask 
defaultEventMask 
transparentForInputEventMask 

Definition at line 212 of file qxcbwindow.cpp.

◆ anonymous enum [2/2]

anonymous enum : quint32
Enumerator
baseEventMask 
defaultEventMask 
transparentForInputEventMask 
baseEventMask 
defaultEventMask 
transparentForInputEventMask 

Definition at line 212 of file qxcbwindow.cpp.

◆ anonymous enum [1/2]

anonymous enum
Enumerator
MWM_HINTS_FUNCTIONS 
MWM_FUNC_ALL 
MWM_FUNC_RESIZE 
MWM_FUNC_MOVE 
MWM_FUNC_MINIMIZE 
MWM_FUNC_MAXIMIZE 
MWM_FUNC_CLOSE 
MWM_HINTS_DECORATIONS 
MWM_DECOR_ALL 
MWM_DECOR_BORDER 
MWM_DECOR_RESIZEH 
MWM_DECOR_TITLE 
MWM_DECOR_MENU 
MWM_DECOR_MINIMIZE 
MWM_DECOR_MAXIMIZE 
MWM_HINTS_FUNCTIONS 
MWM_FUNC_ALL 
MWM_FUNC_RESIZE 
MWM_FUNC_MOVE 
MWM_FUNC_MINIMIZE 
MWM_FUNC_MAXIMIZE 
MWM_FUNC_CLOSE 
MWM_HINTS_DECORATIONS 
MWM_DECOR_ALL 
MWM_DECOR_BORDER 
MWM_DECOR_RESIZEH 
MWM_DECOR_TITLE 
MWM_DECOR_MENU 
MWM_DECOR_MINIMIZE 
MWM_DECOR_MAXIMIZE 

Definition at line 868 of file qxcbwindow.cpp.

◆ anonymous enum [2/2]

anonymous enum
Enumerator
MWM_HINTS_FUNCTIONS 
MWM_FUNC_ALL 
MWM_FUNC_RESIZE 
MWM_FUNC_MOVE 
MWM_FUNC_MINIMIZE 
MWM_FUNC_MAXIMIZE 
MWM_FUNC_CLOSE 
MWM_HINTS_DECORATIONS 
MWM_DECOR_ALL 
MWM_DECOR_BORDER 
MWM_DECOR_RESIZEH 
MWM_DECOR_TITLE 
MWM_DECOR_MENU 
MWM_DECOR_MINIMIZE 
MWM_DECOR_MAXIMIZE 
MWM_HINTS_FUNCTIONS 
MWM_FUNC_ALL 
MWM_FUNC_RESIZE 
MWM_FUNC_MOVE 
MWM_FUNC_MINIMIZE 
MWM_FUNC_MAXIMIZE 
MWM_FUNC_CLOSE 
MWM_HINTS_DECORATIONS 
MWM_DECOR_ALL 
MWM_DECOR_BORDER 
MWM_DECOR_RESIZEH 
MWM_DECOR_TITLE 
MWM_DECOR_MENU 
MWM_DECOR_MINIMIZE 
MWM_DECOR_MAXIMIZE 

Definition at line 868 of file qxcbwindow.cpp.

◆ QX11EmbedFocusInDetail [1/2]

Enumerator
XEMBED_FOCUS_CURRENT 
XEMBED_FOCUS_FIRST 
XEMBED_FOCUS_LAST 
XEMBED_FOCUS_CURRENT 
XEMBED_FOCUS_FIRST 
XEMBED_FOCUS_LAST 

Definition at line 71 of file qxcbwindow.cpp.

◆ QX11EmbedFocusInDetail [2/2]

Enumerator
XEMBED_FOCUS_CURRENT 
XEMBED_FOCUS_FIRST 
XEMBED_FOCUS_LAST 
XEMBED_FOCUS_CURRENT 
XEMBED_FOCUS_FIRST 
XEMBED_FOCUS_LAST 

Definition at line 71 of file qxcbwindow.cpp.

◆ QX11EmbedInfoFlags [1/2]

Enumerator
XEMBED_MAPPED 
XEMBED_MAPPED 

Definition at line 77 of file qxcbwindow.cpp.

◆ QX11EmbedInfoFlags [2/2]

Enumerator
XEMBED_MAPPED 
XEMBED_MAPPED 

Definition at line 77 of file qxcbwindow.cpp.

◆ QX11EmbedMessageType [1/2]

Enumerator
XEMBED_EMBEDDED_NOTIFY 
XEMBED_WINDOW_ACTIVATE 
XEMBED_WINDOW_DEACTIVATE 
XEMBED_REQUEST_FOCUS 
XEMBED_FOCUS_IN 
XEMBED_FOCUS_OUT 
XEMBED_FOCUS_NEXT 
XEMBED_FOCUS_PREV 
XEMBED_MODALITY_ON 
XEMBED_MODALITY_OFF 
XEMBED_REGISTER_ACCELERATOR 
XEMBED_UNREGISTER_ACCELERATOR 
XEMBED_ACTIVATE_ACCELERATOR 
XEMBED_EMBEDDED_NOTIFY 
XEMBED_WINDOW_ACTIVATE 
XEMBED_WINDOW_DEACTIVATE 
XEMBED_REQUEST_FOCUS 
XEMBED_FOCUS_IN 
XEMBED_FOCUS_OUT 
XEMBED_FOCUS_NEXT 
XEMBED_FOCUS_PREV 
XEMBED_MODALITY_ON 
XEMBED_MODALITY_OFF 
XEMBED_REGISTER_ACCELERATOR 
XEMBED_UNREGISTER_ACCELERATOR 
XEMBED_ACTIVATE_ACCELERATOR 

Definition at line 81 of file qxcbwindow.cpp.

◆ QX11EmbedMessageType [2/2]

Enumerator
XEMBED_EMBEDDED_NOTIFY 
XEMBED_WINDOW_ACTIVATE 
XEMBED_WINDOW_DEACTIVATE 
XEMBED_REQUEST_FOCUS 
XEMBED_FOCUS_IN 
XEMBED_FOCUS_OUT 
XEMBED_FOCUS_NEXT 
XEMBED_FOCUS_PREV 
XEMBED_MODALITY_ON 
XEMBED_MODALITY_OFF 
XEMBED_REGISTER_ACCELERATOR 
XEMBED_UNREGISTER_ACCELERATOR 
XEMBED_ACTIVATE_ACCELERATOR 
XEMBED_EMBEDDED_NOTIFY 
XEMBED_WINDOW_ACTIVATE 
XEMBED_WINDOW_DEACTIVATE 
XEMBED_REQUEST_FOCUS 
XEMBED_FOCUS_IN 
XEMBED_FOCUS_OUT 
XEMBED_FOCUS_NEXT 
XEMBED_FOCUS_PREV 
XEMBED_MODALITY_ON 
XEMBED_MODALITY_OFF 
XEMBED_REGISTER_ACCELERATOR 
XEMBED_UNREGISTER_ACCELERATOR 
XEMBED_ACTIVATE_ACCELERATOR 

Definition at line 81 of file qxcbwindow.cpp.

Function Documentation

◆ childWindowAt()

QWindow * childWindowAt ( QWindow * win,
const QPoint & p )
static

Definition at line 184 of file qxcbwindow.cpp.

◆ doCheckUnGrabAncestor()

bool doCheckUnGrabAncestor ( QXcbConnection * conn)
inlinestatic

Definition at line 1983 of file qxcbwindow.cpp.

Referenced by ignoreEnterEvent(), and ignoreLeaveEvent().

Here is the caller graph for this function:

◆ fixed1616ToInt()

int fixed1616ToInt ( xcb_input_fp1616_t val)
inlinestatic

Definition at line 2111 of file qxcbwindow.cpp.

◆ focusWindowChangeQueued()

bool focusWindowChangeQueued ( const QWindow * window)
static

Definition at line 2511 of file qxcbwindow.cpp.

◆ ignoreEnterEvent()

bool ignoreEnterEvent ( quint8 mode,
quint8 detail,
QXcbConnection * conn = nullptr )
static

Definition at line 2007 of file qxcbwindow.cpp.

References doCheckUnGrabAncestor().

Here is the call graph for this function:

◆ ignoreLeaveEvent()

bool ignoreLeaveEvent ( quint8 mode,
quint8 detail,
QXcbConnection * conn )
static

Definition at line 1998 of file qxcbwindow.cpp.

References doCheckUnGrabAncestor().

Here is the call graph for this function:

◆ isTransient()

bool isTransient ( const QWindow * w)
inlinestatic

Definition at line 115 of file qxcbwindow.cpp.

◆ Q_DECLARE_TYPEINFO()

Q_DECLARE_TYPEINFO ( xcb_rectangle_t ,
Q_PRIMITIVE_TYPE  )

◆ Q_STATIC_LOGGING_CATEGORY() [1/2]

Q_STATIC_LOGGING_CATEGORY ( lcQpaWindow ,
"qt.qpa.window"  )

◆ Q_STATIC_LOGGING_CATEGORY() [2/2]

Q_STATIC_LOGGING_CATEGORY ( lcQpaXcbWindow ,
"qt.qpa.xcb.window"  )

◆ qRectToXCBRectangle()

xcb_rectangle_t qRectToXCBRectangle ( const QRect & r)
inlinestatic

Definition at line 2561 of file qxcbwindow.cpp.

◆ qRegionToXcbRectangleList()

QList< xcb_rectangle_t > qRegionToXcbRectangleList ( const QRegion & region)

Definition at line 2588 of file qxcbwindow.cpp.

◆ qtEdgesToXcbMoveResizeDirection()

uint qtEdgesToXcbMoveResizeDirection ( Qt::Edges edges)
static

Definition at line 2443 of file qxcbwindow.cpp.

Variable Documentation

◆ wm_window_role_property_id

const char * wm_window_role_property_id = "_q_xcb_wm_window_role"
static

Definition at line 204 of file qxcbwindow.cpp.

◆ wm_window_type_property_id

const char * wm_window_type_property_id = "_q_xcb_wm_window_type"
static

Definition at line 203 of file qxcbwindow.cpp.

◆ XEMBED_VERSION

const quint32 XEMBED_VERSION = 0

Definition at line 97 of file qxcbwindow.cpp.