Qt 4.8
Public Types | Signals | Public Functions | Protected Functions | List of all members
QX11EmbedContainer Class Reference

The QX11EmbedContainer class provides an XEmbed container widget. More...

#include <qx11embed_x11.h>

Inheritance diagram for QX11EmbedContainer:
QWidget QObject QPaintDevice

Public Types

enum  Error { Unknown, Internal, InvalidWindowID }
 
- Public Types inherited from QWidget
enum  RenderFlag { DrawWindowBackground = 0x1, DrawChildren = 0x2, IgnoreMask = 0x4 }
 This enum describes how to render the widget when calling QWidget::render(). More...
 
- Public Types inherited from QPaintDevice
enum  PaintDeviceMetric {
  PdmWidth = 1, PdmHeight, PdmWidthMM, PdmHeightMM,
  PdmNumColors, PdmDepth, PdmDpiX, PdmDpiY,
  PdmPhysicalDpiX, PdmPhysicalDpiY
}
 

Signals

void clientClosed ()
 This signal is emitted by the container when the client widget closes. More...
 
void clientIsEmbedded ()
 This signal is emitted by the container when a client widget has been embedded. More...
 
void error (QX11EmbedContainer::Error)
 This signal is emitted if an error occurred when embedding or communicating with a client. More...
 
- Signals inherited from QWidget
void customContextMenuRequested (const QPoint &pos)
 This signal is emitted when the widget's contextMenuPolicy is Qt::CustomContextMenu, and the user has requested a context menu on the widget. More...
 
- Signals inherited from QObject
void destroyed (QObject *=0)
 This signal is emitted immediately before the object obj is destroyed, and can not be blocked. More...
 

Public Functions

WId clientWinId () const
 If the container has an embedded widget, this function returns the X11 window ID of the client; otherwise it returns 0. More...
 
void discardClient ()
 Detaches the client from the embedder. More...
 
void embedClient (WId id)
 Instructs the container to embed the X11 window with window ID id. More...
 
Error error () const
 Returns the last error that occurred. More...
 
QSize minimumSizeHint () const
 Ask the window manager to give us a default minimum size. More...
 
 QX11EmbedContainer (QWidget *parent=0)
 Creates a QX11EmbedContainer object with the given parent. More...
 
 ~QX11EmbedContainer ()
 Destructs a QX11EmbedContainer. More...
 
- Public Functions inherited from QWidget
bool acceptDrops () const
 
QString accessibleDescription () const
 
QString accessibleName () const
 
QList< QAction * > actions () const
 Returns the (possibly empty) list of this widget's actions. More...
 
void activateWindow ()
 Sets the top-level widget containing this widget to be the active window. More...
 
void addAction (QAction *action)
 Appends the action action to this widget's list of actions. More...
 
void addActions (QList< QAction *> actions)
 Appends the actions actions to this widget's list of actions. More...
 
void adjustSize ()
 Adjusts the size of the widget to fit its contents. More...
 
bool autoFillBackground () const
 
QPalette::ColorRole backgroundRole () const
 Returns the background role of the widget. More...
 
QSize baseSize () const
 
QWidgetchildAt (int x, int y) const
 Returns the visible child widget at the position ({x}, {y}) in the widget's coordinate system. More...
 
QWidgetchildAt (const QPoint &p) const
 Returns the visible child widget at point p in the widget's own coordinate system. More...
 
QRect childrenRect () const
 
QRegion childrenRegion () const
 
void clearFocus ()
 Takes keyboard input focus from the widget. More...
 
void clearMask ()
 Removes any mask set by setMask(). More...
 
QMargins contentsMargins () const
 The contentsMargins function returns the widget's contents margins. More...
 
QRect contentsRect () const
 Returns the area inside the widget's margins. More...
 
Qt::ContextMenuPolicy contextMenuPolicy () const
 
void createWinId ()
 
QCursor cursor () const
 
int devType () const
 
WId effectiveWinId () const
 Returns the effective window system identifier of the widget, i. More...
 
void ensurePolished () const
 Ensures that the widget has been polished by QStyle (i.e., has a proper font and palette). More...
 
Qt::FocusPolicy focusPolicy () const
 
QWidgetfocusProxy () const
 Returns the focus proxy, or 0 if there is no focus proxy. More...
 
QWidgetfocusWidget () const
 Returns the last child of this widget that setFocus had been called on. More...
 
const QFontfont () const
 
QFontInfo fontInfo () const
 Returns the font info for the widget's current font. More...
 
QFontMetrics fontMetrics () const
 Returns the font metrics for the widget's current font. More...
 
QPalette::ColorRole foregroundRole () const
 Returns the foreground role. More...
 
QRect frameGeometry () const
 
QSize frameSize () const
 
const QRectgeometry () const
 
void getContentsMargins (int *left, int *top, int *right, int *bottom) const
 Returns the widget's contents margins for left, top, right, and bottom. More...
 
HDC getDC () const
 Returns the window system handle of the widget, for low-level access. More...
 
void grabGesture (Qt::GestureType type, Qt::GestureFlags flags=Qt::GestureFlags())
 Subscribes the widget to a given gesture with specific flags. More...
 
void grabKeyboard ()
 Grabs the keyboard input. More...
 
void grabMouse ()
 Grabs the mouse input. More...
 
void grabMouse (const QCursor &)
 
int grabShortcut (const QKeySequence &key, Qt::ShortcutContext context=Qt::WindowShortcut)
 Adds a shortcut to Qt's shortcut system that watches for the given key sequence in the given context. More...
 
QGraphicsEffectgraphicsEffect () const
 The graphicsEffect function returns a pointer to the widget's graphics effect. More...
 
QGraphicsProxyWidgetgraphicsProxyWidget () const
 Returns the proxy widget for the corresponding embedded widget in a graphics view; otherwise returns 0. More...
 
bool hasFocus () const
 
bool hasMouseTracking () const
 
int height () const
 
virtual int heightForWidth (int) const
 Returns the preferred height for this widget, given the width w. More...
 
QInputContextinputContext ()
 This function returns the QInputContext for this widget. More...
 
Qt::InputMethodHints inputMethodHints () const
 
virtual QVariant inputMethodQuery (Qt::InputMethodQuery) const
 This method is only relevant for input widgets. More...
 
void insertAction (QAction *before, QAction *action)
 Inserts the action action to this widget's list of actions, before the action before. More...
 
void insertActions (QAction *before, QList< QAction *> actions)
 Inserts the actions actions to this widget's list of actions, before the action before. More...
 
WId internalWinId () const
 Returns the window system identifier of the widget, or 0 if the widget is not created yet. More...
 
bool isActiveWindow () const
 
bool isAncestorOf (const QWidget *child) const
 Returns true if this widget is a parent, (or grandparent and so on to any level), of the given child, and both widgets are within the same window; otherwise returns false. More...
 
bool isEnabled () const
 
bool isEnabledTo (QWidget *) const
 Returns true if this widget would become enabled if ancestor is enabled; otherwise returns false. More...
 
bool isEnabledToTLW () const
 This function is deprecated. More...
 
bool isFullScreen () const
 
bool isHidden () const
 Returns true if the widget is hidden, otherwise returns false. More...
 
bool isLeftToRight () const
 
bool isMaximized () const
 
bool isMinimized () const
 
bool isModal () const
 
bool isRightToLeft () const
 
bool isTopLevel () const
 Use isWindow() instead. More...
 
bool isVisible () const
 
bool isVisibleTo (QWidget *) const
 Returns true if this widget would become visible if ancestor is shown; otherwise returns false. More...
 
bool isWindow () const
 Returns true if the widget is an independent window, otherwise returns false. More...
 
bool isWindowModified () const
 
QLayoutlayout () const
 Returns the layout manager that is installed on this widget, or 0 if no layout manager is installed. More...
 
Qt::LayoutDirection layoutDirection () const
 
QLocale locale () const
 
Qt::HANDLE macCGHandle () const
 Returns the CoreGraphics handle of the widget. More...
 
Qt::HANDLE macQDHandle () const
 Returns the QuickDraw handle of the widget. More...
 
QPoint mapFrom (QWidget *, const QPoint &) const
 Translates the widget coordinate pos from the coordinate system of parent to this widget's coordinate system. More...
 
QPoint mapFromGlobal (const QPoint &) const
 Translates the global screen coordinate pos to widget coordinates. More...
 
QPoint mapFromParent (const QPoint &) const
 Translates the parent widget coordinate pos to widget coordinates. More...
 
QPoint mapTo (QWidget *, const QPoint &) const
 Translates the widget coordinate pos to the coordinate system of parent. More...
 
QPoint mapToGlobal (const QPoint &) const
 Translates the widget coordinate pos to global screen coordinates. More...
 
QPoint mapToParent (const QPoint &) const
 Translates the widget coordinate pos to a coordinate in the parent widget. More...
 
QRegion mask () const
 Returns the mask currently set on a widget. More...
 
int maximumHeight () const
 
QSize maximumSize () const
 
int maximumWidth () const
 
int minimumHeight () const
 
QSize minimumSize () const
 
int minimumWidth () const
 
void move (int x, int y)
 This corresponds to move(QPoint(x, y)). More...
 
void move (const QPoint &)
 
QWidgetnativeParentWidget () const
 Returns the native parent for this widget, i. More...
 
QWidgetnextInFocusChain () const
 Returns the next widget in this widget's focus chain. More...
 
QRect normalGeometry () const
 
void overrideWindowFlags (Qt::WindowFlags type)
 Sets the window flags for the widget to flags, without telling the window system. More...
 
void overrideWindowState (Qt::WindowStates state)
 
QPaintEnginepaintEngine () const
 Returns the widget's paint engine. More...
 
const QPalettepalette () const
 
QWidgetparentWidget () const
 Returns the parent of this widget, or 0 if it does not have any parent widget. More...
 
QPoint pos () const
 
QWidgetpreviousInFocusChain () const
 The previousInFocusChain function returns the previous widget in this widget's focus chain. More...
 
 QWidget (QWidget *parent=0, Qt::WindowFlags f=0)
 Constructs a widget which is a child of parent, with widget flags set to f. More...
 
QRect rect () const
 
void releaseDC (HDC) const
 Releases the HDC hdc acquired by a previous call to getDC(). More...
 
void releaseKeyboard ()
 Releases the keyboard grab. More...
 
void releaseMouse ()
 Releases the mouse grab. More...
 
void releaseShortcut (int id)
 Removes the shortcut with the given id from Qt's shortcut system. More...
 
void removeAction (QAction *action)
 Removes the action action from this widget's list of actions. More...
 
void render (QPaintDevice *target, const QPoint &targetOffset=QPoint(), const QRegion &sourceRegion=QRegion(), RenderFlags renderFlags=RenderFlags(DrawWindowBackground|DrawChildren))
 Renders the sourceRegion of this widget into the target using renderFlags to determine how to render. More...
 
void render (QPainter *painter, const QPoint &targetOffset=QPoint(), const QRegion &sourceRegion=QRegion(), RenderFlags renderFlags=RenderFlags(DrawWindowBackground|DrawChildren))
 Renders the widget into the painter's QPainter::device(). More...
 
void repaint (int x, int y, int w, int h)
 This version repaints a rectangle (x, y, w, h) inside the widget. More...
 
void repaint (const QRect &)
 This version repaints a rectangle rect inside the widget. More...
 
void repaint (const QRegion &)
 This version repaints a region rgn inside the widget. More...
 
void resize (int w, int h)
 This corresponds to resize(QSize(w, h)). More...
 
void resize (const QSize &)
 
bool restoreGeometry (const QByteArray &geometry)
 Restores the geometry and state top-level widgets stored in the byte array geometry. More...
 
QByteArray saveGeometry () const
 Saves the current geometry and state for top-level widgets. More...
 
void scroll (int dx, int dy)
 Scrolls the widget including its children dx pixels to the right and dy downward. More...
 
void scroll (int dx, int dy, const QRect &)
 This version only scrolls r and does not move the children of the widget. More...
 
void setAcceptDrops (bool on)
 
void setAccessibleDescription (const QString &description)
 
void setAccessibleName (const QString &name)
 
void setAttribute (Qt::WidgetAttribute, bool on=true)
 Sets the attribute attribute on this widget if on is true; otherwise clears the attribute. More...
 
void setAutoFillBackground (bool enabled)
 
void setBackgroundRole (QPalette::ColorRole)
 Sets the background role of the widget to role. More...
 
void setBaseSize (const QSize &)
 
void setBaseSize (int basew, int baseh)
 This corresponds to setBaseSize(QSize(basew, baseh)). More...
 
void setContentsMargins (int left, int top, int right, int bottom)
 Sets the margins around the contents of the widget to have the sizes left, top, right, and bottom. More...
 
void setContentsMargins (const QMargins &margins)
 The setContentsMargins function sets the margins around the widget's contents. More...
 
void setContextMenuPolicy (Qt::ContextMenuPolicy policy)
 
void setCursor (const QCursor &)
 
void setFixedHeight (int h)
 Sets both the minimum and maximum heights of the widget to h without changing the widths. More...
 
void setFixedSize (const QSize &)
 Sets both the minimum and maximum sizes of the widget to s, thereby preventing it from ever growing or shrinking. More...
 
void setFixedSize (int w, int h)
 Sets the width of the widget to w and the height to h. More...
 
void setFixedWidth (int w)
 Sets both the minimum and maximum width of the widget to w without changing the heights. More...
 
void setFocus (Qt::FocusReason reason)
 Gives the keyboard input focus to this widget (or its focus proxy) if this widget or one of its parents is the active window. More...
 
void setFocusPolicy (Qt::FocusPolicy policy)
 
void setFocusProxy (QWidget *)
 Sets the widget's focus proxy to widget w. More...
 
void setFont (const QFont &)
 Use the single-argument overload instead. More...
 
void setForegroundRole (QPalette::ColorRole)
 Sets the foreground role of the widget to role. More...
 
void setGeometry (int x, int y, int w, int h)
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.This corresponds to setGeometry(QRect(x, y, w, h)). More...
 
void setGeometry (const QRect &)
 
void setGraphicsEffect (QGraphicsEffect *effect)
 The setGraphicsEffect function is for setting the widget's graphics effect. More...
 
void setInputContext (QInputContext *)
 This function sets the input context context on this widget. More...
 
void setInputMethodHints (Qt::InputMethodHints hints)
 
void setLayout (QLayout *)
 Sets the layout manager for this widget to layout. More...
 
void setLayoutDirection (Qt::LayoutDirection direction)
 
void setLocale (const QLocale &locale)
 
void setMask (const QBitmap &)
 Causes only the pixels of the widget for which bitmap has a corresponding 1 bit to be visible. More...
 
void setMask (const QRegion &)
 Causes only the parts of the widget which overlap region to be visible. More...
 
void setMaximumHeight (int maxh)
 
void setMaximumSize (const QSize &)
 
void setMaximumSize (int maxw, int maxh)
 This function corresponds to setMaximumSize(QSize(maxw, maxh)). More...
 
void setMaximumWidth (int maxw)
 
void setMinimumHeight (int minh)
 
void setMinimumSize (const QSize &)
 
void setMinimumSize (int minw, int minh)
 This function corresponds to setMinimumSize(QSize(minw, minh)). More...
 
void setMinimumWidth (int minw)
 
void setMouseTracking (bool enable)
 
void setPalette (const QPalette &)
 Use the single-argument overload instead. More...
 
void setParent (QWidget *parent)
 Sets the parent of the widget to parent, and resets the window flags. More...
 
void setParent (QWidget *parent, Qt::WindowFlags f)
 This function also takes widget flags, f as an argument. More...
 
void setShortcutAutoRepeat (int id, bool enable=true)
 If enable is true, auto repeat of the shortcut with the given id is enabled; otherwise it is disabled. More...
 
void setShortcutEnabled (int id, bool enable=true)
 If enable is true, the shortcut with the given id is enabled; otherwise the shortcut is disabled. More...
 
void setSizeIncrement (const QSize &)
 
void setSizeIncrement (int w, int h)
 Sets the x (width) size increment to w and the y (height) size increment to h. More...
 
void setSizePolicy (QSizePolicy)
 
void setSizePolicy (QSizePolicy::Policy horizontal, QSizePolicy::Policy vertical)
 Sets the size policy of the widget to horizontal and vertical, with standard stretch and no height-for-width. More...
 
void setStatusTip (const QString &)
 
void setStyle (QStyle *)
 Sets the widget's GUI style to style. More...
 
void setToolTip (const QString &)
 
void setUpdatesEnabled (bool enable)
 
void setupUi (QWidget *widget)
 Sets up the user interface for the specified widget. More...
 
void setWhatsThis (const QString &)
 
void setWindowFilePath (const QString &filePath)
 
void setWindowFlags (Qt::WindowFlags type)
 
void setWindowIcon (const QIcon &icon)
 
void setWindowIconText (const QString &)
 
void setWindowModality (Qt::WindowModality windowModality)
 
void setWindowOpacity (qreal level)
 
void setWindowRole (const QString &)
 Sets the window's role to role. More...
 
void setWindowState (Qt::WindowStates state)
 Sets the window state to windowState. More...
 
void setWindowSurface (QWindowSurface *surface)
 Sets the window surface to be the surface specified. More...
 
QSize size () const
 
virtual QSize sizeHint () const
 
QSize sizeIncrement () const
 
QSizePolicy sizePolicy () const
 
void stackUnder (QWidget *)
 Places the widget under w in the parent widget's stack. More...
 
QString statusTip () const
 
QStylestyle () const
 
QString styleSheet () const
 
bool testAttribute (Qt::WidgetAttribute) const
 Returns true if attribute attribute is set on this widget; otherwise returns false. More...
 
QString toolTip () const
 
QWidgettopLevelWidget () const
 
bool underMouse () const
 Returns true if the widget is under the mouse cursor; otherwise returns false. More...
 
void ungrabGesture (Qt::GestureType type)
 Unsubscribes the widget from a given gesture type. More...
 
void unsetCursor ()
 
void unsetLayoutDirection ()
 
void unsetLocale ()
 
void update (int x, int y, int w, int h)
 This version updates a rectangle (x, y, w, h) inside the widget. More...
 
void update (const QRect &)
 This version updates a rectangle rect inside the widget. More...
 
void update (const QRegion &)
 This version repaints a region rgn inside the widget. More...
 
void updateGeometry ()
 Notifies the layout system that this widget has changed and may need to change geometry. More...
 
bool updatesEnabled () const
 
QRegion visibleRegion () const
 Returns the unobscured region where paint events can occur. More...
 
QString whatsThis () const
 
int width () const
 
QWidgetwindow () const
 Returns the window for this widget, i.e. More...
 
QString windowFilePath () const
 
Qt::WindowFlags windowFlags () const
 Window flags are a combination of a type (e. More...
 
QIcon windowIcon () const
 
QString windowIconText () const
 
Qt::WindowModality windowModality () const
 
qreal windowOpacity () const
 
QString windowRole () const
 Returns the window's role, or an empty string. More...
 
Qt::WindowStates windowState () const
 Returns the current window state. More...
 
QWindowSurfacewindowSurface () const
 Returns the QWindowSurface this widget will be drawn into. More...
 
QString windowTitle () const
 
Qt::WindowType windowType () const
 Returns the window type of this widget. More...
 
WId winId () const
 Returns the window system identifier of the widget. More...
 
int x () const
 
const QX11Infox11Info () const
 Returns information about the configuration of the X display used to display the widget. More...
 
Qt::HANDLE x11PictureHandle () const
 Returns the X11 Picture handle of the widget for XRender support. More...
 
int y () const
 
 ~QWidget ()
 Destroys the widget. More...
 
- Public Functions inherited from QObject
bool blockSignals (bool b)
 If block is true, signals emitted by this object are blocked (i.e., emitting a signal will not invoke anything connected to it). More...
 
const QObjectListchildren () const
 Returns a list of child objects. More...
 
bool connect (const QObject *sender, const char *signal, const char *member, Qt::ConnectionType type=Qt::AutoConnection) const
 
bool disconnect (const char *signal=0, const QObject *receiver=0, const char *member=0)
 
bool disconnect (const QObject *receiver, const char *member=0)
 
void dumpObjectInfo ()
 Dumps information about signal connections, etc. More...
 
void dumpObjectTree ()
 Dumps a tree of children to the debug output. More...
 
QList< QByteArraydynamicPropertyNames () const
 Returns the names of all properties that were dynamically added to the object using setProperty(). More...
 
template<typename T >
findChild (const QString &aName=QString()) const
 Returns the child of this object that can be cast into type T and that is called name, or 0 if there is no such object. More...
 
template<typename T >
QList< T > findChildren (const QString &aName=QString()) const
 Returns all children of this object with the given name that can be cast to type T, or an empty list if there are no such objects. More...
 
template<typename T >
QList< T > findChildren (const QRegExp &re) const
 
bool inherits (const char *classname) const
 Returns true if this object is an instance of a class that inherits className or a QObject subclass that inherits className; otherwise returns false. More...
 
void installEventFilter (QObject *)
 Installs an event filter filterObj on this object. More...
 
bool isWidgetType () const
 Returns true if the object is a widget; otherwise returns false. More...
 
void killTimer (int id)
 Kills the timer with timer identifier, id. More...
 
virtual const QMetaObjectmetaObject () const
 Returns a pointer to the meta-object of this object. More...
 
void moveToThread (QThread *thread)
 Changes the thread affinity for this object and its children. More...
 
QString objectName () const
 
QObjectparent () const
 Returns a pointer to the parent object. More...
 
QVariant property (const char *name) const
 Returns the value of the object's name property. More...
 
Q_INVOKABLE QObject (QObject *parent=0)
 Constructs an object with parent object parent. More...
 
void removeEventFilter (QObject *)
 Removes an event filter object obj from this object. More...
 
void setObjectName (const QString &name)
 
void setParent (QObject *)
 Makes the object a child of parent. More...
 
bool setProperty (const char *name, const QVariant &value)
 Sets the value of the object's name property to value. More...
 
void setUserData (uint id, QObjectUserData *data)
 
bool signalsBlocked () const
 Returns true if signals are blocked; otherwise returns false. More...
 
int startTimer (int interval)
 Starts a timer and returns a timer identifier, or returns zero if it could not start a timer. More...
 
QThreadthread () const
 Returns the thread in which the object lives. More...
 
QObjectUserDatauserData (uint id) const
 
virtual ~QObject ()
 Destroys the object, deleting all its child objects. More...
 
- Public Functions inherited from QPaintDevice
int colorCount () const
 
int depth () const
 
int height () const
 
int heightMM () const
 
int logicalDpiX () const
 
int logicalDpiY () const
 
QT_DEPRECATED int numColors () const
 
bool paintingActive () const
 
int physicalDpiX () const
 
int physicalDpiY () const
 
int width () const
 
int widthMM () const
 
virtual ~QPaintDevice ()
 

Protected Functions

bool event (QEvent *)
 Reimplemented Function More...
 
bool eventFilter (QObject *, QEvent *)
 Handles key, activation and focus events for the container. More...
 
void hideEvent (QHideEvent *)
 We use the QHideEvent to signal to our client that we want it to unmap itself. More...
 
void paintEvent (QPaintEvent *e)
 Reimplemented Function More...
 
void resizeEvent (QResizeEvent *)
 Whenever the container is resized, we need to resize our client. More...
 
void showEvent (QShowEvent *)
 We use the QShowEvent to signal to our client that we want it to map itself. More...
 
bool x11Event (XEvent *)
 Handles X11 events for the container. More...
 
- Protected Functions inherited from QWidget
virtual void actionEvent (QActionEvent *)
 This event handler is called with the given event whenever the widget's actions are changed. More...
 
virtual void changeEvent (QEvent *)
 This event handler can be reimplemented to handle state changes. More...
 
virtual void closeEvent (QCloseEvent *)
 This event handler is called with the given event when Qt receives a window close request for a top-level widget from the window system. More...
 
virtual void contextMenuEvent (QContextMenuEvent *)
 This event handler, for event event, can be reimplemented in a subclass to receive widget context menu events. More...
 
void create (WId=0, bool initializeWindow=true, bool destroyOldWindow=true)
 Creates a new widget window if window is 0, otherwise sets the widget's window to window. More...
 
void destroy (bool destroyWindow=true, bool destroySubWindows=true)
 Frees up window system resources. More...
 
virtual void dragEnterEvent (QDragEnterEvent *)
 This event handler is called when a drag is in progress and the mouse enters this widget. More...
 
virtual void dragLeaveEvent (QDragLeaveEvent *)
 This event handler is called when a drag is in progress and the mouse leaves this widget. More...
 
virtual void dragMoveEvent (QDragMoveEvent *)
 This event handler is called if a drag is in progress, and when any of the following conditions occur: the cursor enters this widget, the cursor moves within this widget, or a modifier key is pressed on the keyboard while this widget has the focus. More...
 
virtual void dropEvent (QDropEvent *)
 This event handler is called when the drag is dropped on this widget. More...
 
virtual void enabledChange (bool)
 
virtual void enterEvent (QEvent *)
 This event handler can be reimplemented in a subclass to receive widget enter events which are passed in the event parameter. More...
 
virtual void focusInEvent (QFocusEvent *)
 This event handler can be reimplemented in a subclass to receive keyboard focus events (focus received) for the widget. More...
 
bool focusNextChild ()
 Finds a new widget to give the keyboard focus to, as appropriate for Tab, and returns true if it can find a new widget, or false if it can't. More...
 
virtual bool focusNextPrevChild (bool next)
 Finds a new widget to give the keyboard focus to, as appropriate for Tab and Shift+Tab, and returns true if it can find a new widget, or false if it can't. More...
 
virtual void focusOutEvent (QFocusEvent *)
 This event handler can be reimplemented in a subclass to receive keyboard focus events (focus lost) for the widget. More...
 
bool focusPreviousChild ()
 Finds a new widget to give the keyboard focus to, as appropriate for Shift+Tab, and returns true if it can find a new widget, or false if it can't. More...
 
virtual void fontChange (const QFont &)
 
virtual void inputMethodEvent (QInputMethodEvent *)
 This event handler, for event event, can be reimplemented in a subclass to receive Input Method composition events. More...
 
virtual void keyPressEvent (QKeyEvent *)
 This event handler, for event event, can be reimplemented in a subclass to receive key press events for the widget. More...
 
virtual void keyReleaseEvent (QKeyEvent *)
 This event handler, for event event, can be reimplemented in a subclass to receive key release events for the widget. More...
 
virtual void languageChange ()
 
virtual void leaveEvent (QEvent *)
 This event handler can be reimplemented in a subclass to receive widget leave events which are passed in the event parameter. More...
 
virtual bool macEvent (EventHandlerCallRef, EventRef)
 This special event handler can be reimplemented in a subclass to receive native Macintosh events. More...
 
int metric (PaintDeviceMetric) const
 Internal implementation of the virtual QPaintDevice::metric() function. More...
 
virtual void mouseDoubleClickEvent (QMouseEvent *)
 This event handler, for event event, can be reimplemented in a subclass to receive mouse double click events for the widget. More...
 
virtual void mouseMoveEvent (QMouseEvent *)
 This event handler, for event event, can be reimplemented in a subclass to receive mouse move events for the widget. More...
 
virtual void mousePressEvent (QMouseEvent *)
 This event handler, for event event, can be reimplemented in a subclass to receive mouse press events for the widget. More...
 
virtual void mouseReleaseEvent (QMouseEvent *)
 This event handler, for event event, can be reimplemented in a subclass to receive mouse release events for the widget. More...
 
virtual void moveEvent (QMoveEvent *)
 This event handler can be reimplemented in a subclass to receive widget move events which are passed in the event parameter. More...
 
virtual void paletteChange (const QPalette &)
 
 QWidget (QWidgetPrivate &d, QWidget *parent, Qt::WindowFlags f)
 
virtual bool qwsEvent (QWSEvent *)
 This special event handler can be reimplemented in a subclass to receive native Qt for Embedded Linux events which are passed in the event parameter. More...
 
void resetInputContext ()
 This function can be called on the widget that currently has focus to reset the input method operating on it. More...
 
virtual void styleChange (QStyle &)
 
virtual void tabletEvent (QTabletEvent *)
 This event handler, for event event, can be reimplemented in a subclass to receive tablet events for the widget. More...
 
virtual void wheelEvent (QWheelEvent *)
 This event handler, for event event, can be reimplemented in a subclass to receive wheel events for the widget. More...
 
virtual void windowActivationChange (bool)
 
virtual bool winEvent (MSG *message, long *result)
 This special event handler can be reimplemented in a subclass to receive native Windows events which are passed in the message parameter. More...
 
- Protected Functions inherited from QObject
virtual void childEvent (QChildEvent *)
 This event handler can be reimplemented in a subclass to receive child events. More...
 
virtual void connectNotify (const char *signal)
 This virtual function is called when something has been connected to signal in this object. More...
 
virtual void customEvent (QEvent *)
 This event handler can be reimplemented in a subclass to receive custom events. More...
 
virtual void disconnectNotify (const char *signal)
 This virtual function is called when something has been disconnected from signal in this object. More...
 
 QObject (QObjectPrivate &dd, QObject *parent=0)
 
int receivers (const char *signal) const
 Returns the number of receivers connected to the signal. More...
 
QObjectsender () const
 Returns a pointer to the object that sent the signal, if called in a slot activated by a signal; otherwise it returns 0. More...
 
int senderSignalIndex () const
 
virtual void timerEvent (QTimerEvent *)
 This event handler can be reimplemented in a subclass to receive timer events for the object. More...
 
- Protected Functions inherited from QPaintDevice
 QPaintDevice ()
 

Additional Inherited Members

- Public Slots inherited from QWidget
bool close ()
 Closes this widget. More...
 
void hide ()
 Hides the widget. More...
 
void lower ()
 Lowers the widget to the bottom of the parent widget's stack. More...
 
void raise ()
 Raises this widget to the top of the parent widget's stack. More...
 
void repaint ()
 Repaints the widget directly by calling paintEvent() immediately, unless updates are disabled or the widget is hidden. More...
 
void setDisabled (bool)
 Disables widget input events if disable is true; otherwise enables input events. More...
 
void setEnabled (bool)
 
void setFocus ()
 Gives the keyboard input focus to this widget (or its focus proxy) if this widget or one of its parents is the active window. More...
 
void setHidden (bool hidden)
 Convenience function, equivalent to setVisible(!hidden). More...
 
QT_MOC_COMPAT void setShown (bool shown)
 Use setVisible(shown) instead. More...
 
void setStyleSheet (const QString &styleSheet)
 
virtual void setVisible (bool visible)
 
void setWindowModified (bool)
 
void setWindowTitle (const QString &)
 
void show ()
 Shows the widget and its child widgets. More...
 
void showFullScreen ()
 Shows the widget in full-screen mode. More...
 
void showMaximized ()
 Shows the widget maximized. More...
 
void showMinimized ()
 Shows the widget minimized, as an icon. More...
 
void showNormal ()
 Restores the widget after it has been maximized or minimized. More...
 
void update ()
 Updates the widget unless updates are disabled or the widget is hidden. More...
 
- Public Slots inherited from QObject
void deleteLater ()
 Schedules this object for deletion. More...
 
- Static Public Functions inherited from QWidget
static QWidgetfind (WId)
 Returns a pointer to the widget with window identifer/handle id. More...
 
static QWidgetkeyboardGrabber ()
 Returns the widget that is currently grabbing the keyboard input. More...
 
static QWidgetmouseGrabber ()
 Returns the widget that is currently grabbing the mouse input. More...
 
static void setTabOrder (QWidget *, QWidget *)
 Puts the second widget after the first widget in the focus order. More...
 
- Static Public Functions inherited from QObject
static bool connect (const QObject *sender, const char *signal, const QObject *receiver, const char *member, Qt::ConnectionType=Qt::AutoConnection)
 Creates a connection of the given type from the signal in the sender object to the method in the receiver object. More...
 
static bool connect (const QObject *sender, const QMetaMethod &signal, const QObject *receiver, const QMetaMethod &method, Qt::ConnectionType type=Qt::AutoConnection)
 
static bool disconnect (const QObject *sender, const char *signal, const QObject *receiver, const char *member)
 Disconnects signal in object sender from method in object receiver. More...
 
static bool disconnect (const QObject *sender, const QMetaMethod &signal, const QObject *receiver, const QMetaMethod &member)
 
static uint registerUserData ()
 
static QString tr (const char *sourceText, const char *comment=0, int n=-1)
 
static QString trUtf8 (const char *sourceText, const char *comment=0, int n=-1)
 
- Static Public Functions inherited from QPaintDevice
static QWSDisplayqwsDisplay ()
 
- Static Public Variables inherited from QObject
static const QMetaObject staticMetaObject
 This variable stores the meta-object for the class. More...
 
- Protected Slots inherited from QWidget
void updateMicroFocus ()
 Updates the widget's micro focus. More...
 
- Protected Variables inherited from QObject
QScopedPointer< QObjectDatad_ptr
 
- Protected Variables inherited from QPaintDevice
ushort painters
 
- Static Protected Variables inherited from QObject
static const QMetaObject staticQtMetaObject
 

Detailed Description

The QX11EmbedContainer class provides an XEmbed container widget.

XEmbed is an X11 protocol that supports the embedding of a widget from one application into another application.

An XEmbed container is the graphical location that embeds an external {client widget}. A client widget is a window that is embedded into a container.

When a widget has been embedded and the container receives tab focus, focus is passed on to the widget. When the widget reaches the end of its focus chain, focus is passed back to the container. Window activation, accelerator support, modality and drag and drop (XDND) are also handled.

QX11EmbedContainer is commonly used for writing panels or toolbars that hold applets, or for swallowing X11 applications. When writing a panel application, one container widget is created on the toolbar, and it can then either swallow another widget using embed(), or allow an XEmbed widget to be embedded into itself. The container's X11 window ID, which is retrieved with winId(), must then be known to the client widget. After embedding, the client's window ID can be retrieved with clientWinId().

In the following example, a container widget is created as the main widget. It then invokes an application called "playmovie", passing its window ID as a command line argument. The "playmovie" program is an XEmbed client widget. The widget embeds itself into the container using the container's window ID.

int main(int argc, char *argv[])
{
QApplication app(argc, argv);
if (app.arguments().count() != 2) {
qFatal("Error - expected executable path as argument");
return 1;
}
QX11EmbedContainer container;
container.show();
QProcess process(&container);
QString executable(app.arguments()[1]);
QStringList arguments;
arguments << QString::number(container.winId());
process.start(executable, arguments);
int status = app.exec();
process.close();
return status;
}

When the client widget is embedded, the container emits the signal clientIsEmbedded(). The signal clientClosed() is emitted when a widget is closed.

It is possible for QX11EmbedContainer to embed XEmbed widgets from toolkits other than Qt, such as GTK+. Arbitrary (non-XEmbed) X11 widgets can also be embedded, but the XEmbed-specific features such as window activation and focus handling are then lost.

The GTK+ equivalent of QX11EmbedContainer is GtkSocket. The corresponding KDE 3 widget is called QXEmbed.

See also
QX11EmbedWidget, {XEmbed Specification}

Definition at line 88 of file qx11embed_x11.h.

Enumerations

◆ Error

  • Unknown An unrecognized error occurred.
  • InvalidWindowID The X11 window ID of the container was invalid. This error is usually triggered by passing an invalid window ID to embed().
  • Internal
Enumerator
Unknown 
Internal 
InvalidWindowID 

Definition at line 102 of file qx11embed_x11.h.

Constructors and Destructors

◆ QX11EmbedContainer()

QX11EmbedContainer::QX11EmbedContainer ( QWidget parent = 0)

Creates a QX11EmbedContainer object with the given parent.

Definition at line 1097 of file qx11embed_x11.cpp.

1098  : QWidget(*new QX11EmbedContainerPrivate, parent, 0)
1099 {
1101  XSetErrorHandler(x11ErrorHandler);
1102 
1105  createWinId();
1106 
1109  // ### PORT setKeyCompression(false);
1110  setAcceptDrops(true);
1111  setEnabled(false);
1112 
1113  // Everybody gets a focus proxy, but only one toplevel container's
1114  // focus proxy is actually in use.
1115  d->focusProxy = new QWidget(this);
1116  d->focusProxy->setAttribute(Qt::WA_NativeWindow);
1117  d->focusProxy->setAttribute(Qt::WA_DontCreateNativeAncestors);
1118  d->focusProxy->createWinId();
1119  d->focusProxy->setGeometry(-1, -1, 1, 1);
1120 
1121  // We need events from the window (activation status) and
1122  // from qApp (keypress/release).
1123  qApp->installEventFilter(this);
1124 
1125  // Install X11 event filter.
1126  if (!oldX11EventFilter)
1128 
1129  XSelectInput(x11Info().display(), internalWinId(),
1130  KeyPressMask | KeyReleaseMask
1131  | ButtonPressMask | ButtonReleaseMask | ButtonMotionMask
1132  | KeymapStateMask
1133  | PointerMotionMask
1134  | EnterWindowMask | LeaveWindowMask
1135  | FocusChangeMask
1136  | ExposureMask
1137  | StructureNotifyMask
1138  | SubstructureNotifyMask);
1139 
1140  // Make sure our new event mask takes effect as soon as possible.
1141  XFlush(x11Info().display());
1142 
1143  // Move input to our focusProxy if this widget is active, and not
1144  // shaded by a modal dialog (in which case isActiveWindow() would
1145  // still return true, but where we must not move input focus).
1146  if (qApp->activeWindow() == window() && !d->isEmbedded())
1147  d->moveInputToProxy();
1148 
1149 #ifdef QX11EMBED_DEBUG
1150  qDebug() << "QX11EmbedContainer::QX11EmbedContainer: constructed container"
1151  << (void *)this << "with winId" << winId();
1152 #endif
1153 }
double d
Definition: qnumeric_p.h:62
static QCoreApplication::EventFilter oldX11EventFilter
const QX11Info & x11Info() const
Returns information about the configuration of the X display used to display the widget.
EventFilter setEventFilter(EventFilter filter)
Replaces the event filter function for the QCoreApplication with filter and returns the pointer to th...
#define Q_D(Class)
Definition: qglobal.h:2482
Q_CORE_EXPORT void qDebug(const char *,...)
Q_GUI_EXPORT EGLDisplay display()
Definition: qegl.cpp:589
#define qApp
QWidget(QWidget *parent=0, Qt::WindowFlags f=0)
Constructs a widget which is a child of parent, with widget flags set to f.
Definition: qwidget.cpp:1189
static int x11ErrorHandler(Display *, XErrorEvent *)
void setEnabled(bool)
Definition: qwidget.cpp:3447
void setAcceptDrops(bool on)
Definition: qwidget.cpp:3534
static QCoreApplication * instance()
Returns a pointer to the application&#39;s QCoreApplication (or QApplication) instance.
static bool x11EventFilter(void *message, long *result)
WId internalWinId() const
Returns the window system identifier of the widget, or 0 if the widget is not created yet...
Definition: qwidget.h:244
void setAttribute(Qt::WidgetAttribute, bool on=true)
Sets the attribute attribute on this widget if on is true; otherwise clears the attribute.
Definition: qwidget.cpp:11087
QWidget * window() const
Returns the window for this widget, i.e.
Definition: qwidget.cpp:4492
void createWinId()
Definition: qwidget.cpp:2626
WId winId() const
Returns the window system identifier of the widget.
Definition: qwidget.cpp:2557
void setSizePolicy(QSizePolicy)
Definition: qwidget.cpp:10198
The QX11EmbedContainer class provides an XEmbed container widget.
Definition: qx11embed_x11.h:88
void setFocusPolicy(Qt::FocusPolicy policy)
Definition: qwidget.cpp:7631

◆ ~QX11EmbedContainer()

QX11EmbedContainer::~QX11EmbedContainer ( )

Destructs a QX11EmbedContainer.

Definition at line 1158 of file qx11embed_x11.cpp.

1159 {
1161  if (d->client) {
1162  XUnmapWindow(x11Info().display(), d->client);
1163  XReparentWindow(x11Info().display(), d->client, x11Info().appRootWindow(x11Info().screen()), 0, 0);
1164  }
1165 
1166  if (d->xgrab)
1167  XUngrabButton(x11Info().display(), AnyButton, AnyModifier, internalWinId());
1168 }
double d
Definition: qnumeric_p.h:62
const QX11Info & x11Info() const
Returns information about the configuration of the X display used to display the widget.
#define Q_D(Class)
Definition: qglobal.h:2482
Q_GUI_EXPORT EGLDisplay display()
Definition: qegl.cpp:589
static const int AnyButton
WId internalWinId() const
Returns the window system identifier of the widget, or 0 if the widget is not created yet...
Definition: qwidget.h:244
The QX11EmbedContainer class provides an XEmbed container widget.
Definition: qx11embed_x11.h:88

Functions

◆ clientClosed

void QX11EmbedContainer::clientClosed ( )
signal

This signal is emitted by the container when the client widget closes.

Referenced by eventFilter(), and x11Event().

◆ clientIsEmbedded

void QX11EmbedContainer::clientIsEmbedded ( )
signal

This signal is emitted by the container when a client widget has been embedded.

◆ clientWinId()

WId QX11EmbedContainer::clientWinId ( ) const

If the container has an embedded widget, this function returns the X11 window ID of the client; otherwise it returns 0.

Definition at line 1212 of file qx11embed_x11.cpp.

1213 {
1214  Q_D(const QX11EmbedContainer);
1215  return d->client;
1216 }
double d
Definition: qnumeric_p.h:62
#define Q_D(Class)
Definition: qglobal.h:2482
The QX11EmbedContainer class provides an XEmbed container widget.
Definition: qx11embed_x11.h:88

◆ discardClient()

void QX11EmbedContainer::discardClient ( )

Detaches the client from the embedder.

The client will appear as a standalone window on the desktop.

Definition at line 1872 of file qx11embed_x11.cpp.

1873 {
1875  if (d->client) {
1876  XResizeWindow(x11Info().display(), d->client, d->clientOriginalRect.width(),
1877  d->clientOriginalRect.height());
1878 
1879  d->rejectClient(d->client);
1880  }
1881 }
double d
Definition: qnumeric_p.h:62
const QX11Info & x11Info() const
Returns information about the configuration of the X display used to display the widget.
#define Q_D(Class)
Definition: qglobal.h:2482
Q_GUI_EXPORT EGLDisplay display()
Definition: qegl.cpp:589
The QX11EmbedContainer class provides an XEmbed container widget.
Definition: qx11embed_x11.h:88

◆ embedClient()

void QX11EmbedContainer::embedClient ( WId  id)

Instructs the container to embed the X11 window with window ID id.

The client widget will then move on top of the container window and be resized to fit into the container.

The id should be the ID of a window controlled by an XEmbed enabled application, but this is not mandatory. If id does not belong to an XEmbed client widget, then focus handling, activation, accelerators and other features will not work properly.

Definition at line 1229 of file qx11embed_x11.cpp.

1230 {
1232 
1233  if (id == 0) {
1234  d->emitError(InvalidWindowID);
1235  return;
1236  }
1237 
1238  // Walk up the tree of parent windows to prevent embedding of ancestors.
1239  WId thisId = internalWinId();
1240  Window rootReturn;
1241  Window parentReturn;
1242  Window *childrenReturn = 0;
1243  unsigned int nchildrenReturn;
1244  do {
1245  if (XQueryTree(x11Info().display(), thisId, &rootReturn,
1246  &parentReturn, &childrenReturn, &nchildrenReturn) == 0) {
1247  d->emitError(InvalidWindowID);
1248  return;
1249  }
1250  if (childrenReturn) {
1251  XFree(childrenReturn);
1252  childrenReturn = 0;
1253  }
1254 
1255  thisId = parentReturn;
1256  if (id == thisId) {
1257  d->emitError(InvalidWindowID);
1258  return;
1259  }
1260  } while (thisId != rootReturn);
1261 
1262  // watch for property notify events (see below)
1263  XGrabServer(x11Info().display());
1264  XWindowAttributes attrib;
1265  if (!XGetWindowAttributes(x11Info().display(), id, &attrib)) {
1266  XUngrabServer(x11Info().display());
1267  d->emitError(InvalidWindowID);
1268  return;
1269  }
1270  XSelectInput(x11Info().display(), id, attrib.your_event_mask | PropertyChangeMask | StructureNotifyMask);
1271  XUngrabServer(x11Info().display());
1272 
1273  // Put the window into WithdrawnState
1274  XUnmapWindow(x11Info().display(), id);
1275  XSync(x11Info().display(), False); // make sure the window is hidden
1276 
1277  /*
1278  Wait for notification from the window manager that the window is
1279  in withdrawn state. According to the ICCCM section 4.1.3.1,
1280  we should wait for the WM_STATE property to either be deleted or
1281  set to WithdrawnState.
1282 
1283  For safety, we will not wait more than 500 ms, so that we can
1284  preemptively workaround buggy window managers.
1285  */
1286  QElapsedTimer t;
1287  t.start();
1288 
1289  functorData data;
1290  data.id = id;
1291  data.rootWindow = attrib.root;
1292  data.clearedWmState = false;
1293  data.reparentedToRoot = false;
1294 
1295  do {
1296  if (t.elapsed() > 500) // time-out after 500 ms
1297  break;
1298 
1299  XEvent event;
1300  if (!XCheckIfEvent(x11Info().display(), &event, functor, (XPointer) &data)) {
1301  XSync(x11Info().display(), False);
1302  usleep(50000);
1303  continue;
1304  }
1305 
1306  qApp->x11ProcessEvent(&event);
1307  } while (!data.clearedWmState || !data.reparentedToRoot);
1308 
1309  // restore the event mask
1310  XSelectInput(x11Info().display(), id, attrib.your_event_mask);
1311 
1312  switch (XReparentWindow(x11Info().display(), id, internalWinId(), 0, 0)) {
1313  case BadWindow:
1314  case BadMatch:
1315  d->emitError(InvalidWindowID);
1316  break;
1317  default:
1318  break;
1319  }
1320 }
double d
Definition: qnumeric_p.h:62
unsigned long WId
Definition: qwindowdefs.h:119
const QX11Info & x11Info() const
Returns information about the configuration of the X display used to display the widget.
#define Q_D(Class)
Definition: qglobal.h:2482
The QElapsedTimer class provides a fast way to calculate elapsed times.
Definition: qelapsedtimer.h:53
qint64 elapsed() const
Returns the number of milliseconds since this QElapsedTimer was last started.
union _XEvent XEvent
Definition: qwindowdefs.h:116
Q_GUI_EXPORT EGLDisplay display()
Definition: qegl.cpp:589
#define qApp
QWidgetData * data
Definition: qwidget.h:815
char * XPointer
Definition: qt_x11_p.h:180
bool event(QEvent *)
Reimplemented Function
WId internalWinId() const
Returns the window system identifier of the widget, or 0 if the widget is not created yet...
Definition: qwidget.h:244
static Bool functor(Display *display, XEvent *event, XPointer arg)
void start()
Starts this timer.
The QX11EmbedContainer class provides an XEmbed container widget.
Definition: qx11embed_x11.h:88

◆ error() [1/2]

QX11EmbedContainer::Error QX11EmbedContainer::error ( ) const

Returns the last error that occurred.

Definition at line 1171 of file qx11embed_x11.cpp.

1171  {
1172  return d_func()->lastError;
1173 }

◆ error [2/2]

void QX11EmbedContainer::error ( QX11EmbedContainer::Error  error)
signal

This signal is emitted if an error occurred when embedding or communicating with a client.

The specified error describes the problem that occurred.

See also
QX11EmbedContainer::Error

◆ event()

bool QX11EmbedContainer::event ( QEvent event)
protectedvirtual

Reimplemented Function

Reimplemented from QWidget.

Definition at line 1666 of file qx11embed_x11.cpp.

Referenced by embedClient(), and x11Event().

1667 {
1668  if (event->type() == QEvent::ParentChange) {
1669  XSelectInput(x11Info().display(), internalWinId(),
1670  KeyPressMask | KeyReleaseMask
1671  | ButtonPressMask | ButtonReleaseMask | ButtonMotionMask
1672  | KeymapStateMask
1673  | PointerMotionMask
1674  | EnterWindowMask | LeaveWindowMask
1675  | FocusChangeMask
1676  | ExposureMask
1677  | StructureNotifyMask
1678  | SubstructureNotifyMask);
1679  }
1680  return QWidget::event(event);
1681 }
const QX11Info & x11Info() const
Returns information about the configuration of the X display used to display the widget.
Q_GUI_EXPORT EGLDisplay display()
Definition: qegl.cpp:589
WId internalWinId() const
Returns the window system identifier of the widget, or 0 if the widget is not created yet...
Definition: qwidget.h:244
bool event(QEvent *)
This is the main event handler; it handles event event.
Definition: qwidget.cpp:8636
Type type() const
Returns the event type.
Definition: qcoreevent.h:303

◆ eventFilter()

bool QX11EmbedContainer::eventFilter ( QObject o,
QEvent event 
)
protectedvirtual

Handles key, activation and focus events for the container.

Warning
This function is not part of the public interface.

Reimplemented from QObject.

Definition at line 1329 of file qx11embed_x11.cpp.

1330 {
1332  switch (event->type()) {
1333  case QEvent::KeyPress:
1334  // Forward any keypresses to our client.
1335  if (o == this && d->client) {
1336  lastKeyEvent.window = d->client;
1337  XSendEvent(x11Info().display(), d->client, false, KeyPressMask, (XEvent *) &lastKeyEvent);
1338  return true;
1339  }
1340  break;
1341  case QEvent::KeyRelease:
1342  // Forward any keyreleases to our client.
1343  if (o == this && d->client) {
1344  lastKeyEvent.window = d->client;
1345  XSendEvent(x11Info().display(), d->client, false, KeyReleaseMask, (XEvent *) &lastKeyEvent);
1346  return true;
1347  }
1348  break;
1349 
1351  // When our container window is activated, we pass the
1352  // activation message on to our client. Note that X input
1353  // focus is set to our focus proxy. We want to intercept all
1354  // keypresses.
1355  if (o == window() && d->client) {
1356  if (d->clientIsXEmbed) {
1358  } else {
1359  d->checkGrab();
1360  if (hasFocus())
1361  XSetInputFocus(x11Info().display(), d->client, XRevertToParent, x11Time());
1362  }
1363  if (!d->isEmbedded())
1364  d->moveInputToProxy();
1365  }
1366  break;
1368  // When our container window is deactivated, we pass the
1369  // deactivation message to our client.
1370  if (o == window() && d->client) {
1371  if (d->clientIsXEmbed)
1373  else
1374  d->checkGrab();
1375  }
1376  break;
1377  case QEvent::FocusIn:
1378  // When receiving FocusIn events generated by Tab or Backtab,
1379  // we pass focus on to our client. Any mouse activity is sent
1380  // directly to the client, and it will ask us for focus with
1381  // XEMBED_REQUEST_FOCUS.
1382  if (o == this && d->client) {
1383  if (!d->isEmbedded())
1384  d->activeContainer = this;
1385 
1386  if (d->clientIsXEmbed) {
1387  if (!d->isEmbedded())
1388  d->moveInputToProxy();
1389 
1390  QFocusEvent *fe = (QFocusEvent *)event;
1391  switch (fe->reason()) {
1392  case Qt::TabFocusReason:
1394  break;
1397  break;
1398  default:
1400  break;
1401  }
1402  } else {
1403  d->checkGrab();
1404  XSetInputFocus(x11Info().display(), d->client, XRevertToParent, x11Time());
1405  }
1406  }
1407 
1408  break;
1409  case QEvent::FocusOut: {
1410  // When receiving a FocusOut, we ask our client to remove its
1411  // focus.
1412  if (o == this && d->client) {
1413  if (!d->isEmbedded()) {
1414  d->activeContainer = 0;
1415  if (isActiveWindow())
1416  d->moveInputToProxy();
1417  }
1418 
1419  if (d->clientIsXEmbed) {
1420  QFocusEvent *fe = (QFocusEvent *)event;
1421  if (o == this && d->client && fe->reason() != Qt::ActiveWindowFocusReason)
1423  } else {
1424  d->checkGrab();
1425  }
1426  }
1427  }
1428  break;
1429 
1430  case QEvent::Close: {
1431  if (o == this && d->client) {
1432  // Unmap the client and reparent it to the root window.
1433  // Wait until the messages have been processed. Then ask
1434  // the window manager to delete the window.
1435  XUnmapWindow(x11Info().display(), d->client);
1436  XReparentWindow(x11Info().display(), d->client, x11Info().appRootWindow(x11Info().screen()), 0, 0);
1437  XSync(x11Info().display(), false);
1438 
1439  XEvent ev;
1440  memset(&ev, 0, sizeof(ev));
1441  ev.xclient.type = ClientMessage;
1442  ev.xclient.window = d->client;
1443  ev.xclient.message_type = ATOM(WM_PROTOCOLS);
1444  ev.xclient.format = 32;
1445  ev.xclient.data.s[0] = ATOM(WM_DELETE_WINDOW);
1446  XSendEvent(x11Info().display(), d->client, false, NoEventMask, &ev);
1447 
1448  XFlush(x11Info().display());
1449  d->client = 0;
1450  d->clientIsXEmbed = false;
1451  d->wmMinimumSizeHint = QSize();
1452  updateGeometry();
1453  setEnabled(false);
1454  update();
1455 
1456  emit clientClosed();
1457  }
1458  }
1459  default:
1460  break;
1461  }
1462 
1463  return QWidget::eventFilter(o, event);
1464 }
double d
Definition: qnumeric_p.h:62
static XKeyEvent lastKeyEvent
const QX11Info & x11Info() const
Returns information about the configuration of the X display used to display the widget.
bool isActiveWindow() const
bool hasFocus() const
Definition: qwidget.cpp:6583
#define Q_D(Class)
Definition: qglobal.h:2482
union _XEvent XEvent
Definition: qwindowdefs.h:116
#define ATOM(x)
Definition: qt_x11_p.h:723
void update()
Updates the widget unless updates are disabled or the widget is hidden.
Definition: qwidget.cpp:10883
Q_GUI_EXPORT EGLDisplay display()
Definition: qegl.cpp:589
#define emit
Definition: qobjectdefs.h:76
static void sendXEmbedMessage(WId window, Display *display, long message, long detail=0, long data1=0, long data2=0)
void setEnabled(bool)
Definition: qwidget.cpp:3447
virtual bool eventFilter(QObject *, QEvent *)
Filters events if this object has been installed as an event filter for the watched object...
Definition: qobject.cpp:1375
void clientClosed()
This signal is emitted by the container when the client widget closes.
if(void) toggleToolbarShown
Qt::FocusReason reason()
Definition: qevent.cpp:1197
QWidget * window() const
Returns the window for this widget, i.e.
Definition: qwidget.cpp:4492
The QSize class defines the size of a two-dimensional object using integer point precision.
Definition: qsize.h:53
void updateGeometry()
Notifies the layout system that this widget has changed and may need to change geometry.
Definition: qwidget.cpp:10372
Type type() const
Returns the event type.
Definition: qcoreevent.h:303
The QX11EmbedContainer class provides an XEmbed container widget.
Definition: qx11embed_x11.h:88
The QFocusEvent class contains event parameters for widget focus events.
Definition: qevent.h:275
static Display * display()
Returns the default display for the application.
static Time x11Time()

◆ hideEvent()

void QX11EmbedContainer::hideEvent ( QHideEvent )
protectedvirtual

We use the QHideEvent to signal to our client that we want it to unmap itself.

Warning
This function is not part of the public interface.

We do this by changing its window property XEMBED_INFO. The client will get an X11 PropertyNotify.

Reimplemented from QWidget.

Definition at line 1653 of file qx11embed_x11.cpp.

1654 {
1656  if (d->client) {
1657  long data[] = {XEMBED_VERSION, XEMBED_MAPPED};
1658  XChangeProperty(x11Info().display(), d->client, ATOM(_XEMBED_INFO), ATOM(_XEMBED_INFO), 32,
1659  PropModeReplace, (unsigned char *) data, 2);
1660  }
1661 }
double d
Definition: qnumeric_p.h:62
const QX11Info & x11Info() const
Returns information about the configuration of the X display used to display the widget.
static unsigned int XEMBED_VERSION
#define Q_D(Class)
Definition: qglobal.h:2482
#define ATOM(x)
Definition: qt_x11_p.h:723
Q_GUI_EXPORT EGLDisplay display()
Definition: qegl.cpp:589
QWidgetData * data
Definition: qwidget.h:815
The QX11EmbedContainer class provides an XEmbed container widget.
Definition: qx11embed_x11.h:88

◆ minimumSizeHint()

QSize QX11EmbedContainer::minimumSizeHint ( ) const
virtual

Ask the window manager to give us a default minimum size.

Warning
This function is not part of the public interface.

Reimplemented from QWidget.

Definition at line 1840 of file qx11embed_x11.cpp.

1841 {
1842  Q_D(const QX11EmbedContainer);
1843  if (!d->client || !d->wmMinimumSizeHint.isValid())
1844  return QWidget::minimumSizeHint();
1845  return d->wmMinimumSizeHint;
1846 }
double d
Definition: qnumeric_p.h:62
virtual QSize minimumSizeHint() const
#define Q_D(Class)
Definition: qglobal.h:2482
The QX11EmbedContainer class provides an XEmbed container widget.
Definition: qx11embed_x11.h:88

◆ paintEvent()

void QX11EmbedContainer::paintEvent ( QPaintEvent e)
protectedvirtual

Reimplemented Function

Reimplemented from QWidget.

Definition at line 1178 of file qx11embed_x11.cpp.

1179 {
1180 }

◆ resizeEvent()

void QX11EmbedContainer::resizeEvent ( QResizeEvent )
protectedvirtual

Whenever the container is resized, we need to resize our client.

Warning
This function is not part of the public interface.

Reimplemented from QWidget.

Definition at line 1618 of file qx11embed_x11.cpp.

1619 {
1621  if (d->client)
1622  XResizeWindow(x11Info().display(), d->client, width(), height());
1623 }
double d
Definition: qnumeric_p.h:62
const QX11Info & x11Info() const
Returns information about the configuration of the X display used to display the widget.
#define Q_D(Class)
Definition: qglobal.h:2482
int height() const
Q_GUI_EXPORT EGLDisplay display()
Definition: qegl.cpp:589
int width() const
The QX11EmbedContainer class provides an XEmbed container widget.
Definition: qx11embed_x11.h:88

◆ showEvent()

void QX11EmbedContainer::showEvent ( QShowEvent )
protectedvirtual

We use the QShowEvent to signal to our client that we want it to map itself.

Warning
This function is not part of the public interface.

We do this by changing its window property XEMBED_INFO. The client will get an X11 PropertyNotify.

Reimplemented from QWidget.

Definition at line 1634 of file qx11embed_x11.cpp.

1635 {
1637  if (d->client) {
1638  long data[] = {XEMBED_VERSION, XEMBED_MAPPED};
1639  XChangeProperty(x11Info().display(), d->client, ATOM(_XEMBED_INFO), ATOM(_XEMBED_INFO), 32,
1640  PropModeReplace, (unsigned char *) data, 2);
1641  }
1642 }
double d
Definition: qnumeric_p.h:62
const QX11Info & x11Info() const
Returns information about the configuration of the X display used to display the widget.
static unsigned int XEMBED_VERSION
#define Q_D(Class)
Definition: qglobal.h:2482
#define ATOM(x)
Definition: qt_x11_p.h:723
Q_GUI_EXPORT EGLDisplay display()
Definition: qegl.cpp:589
QWidgetData * data
Definition: qwidget.h:815
The QX11EmbedContainer class provides an XEmbed container widget.
Definition: qx11embed_x11.h:88

◆ x11Event()

bool QX11EmbedContainer::x11Event ( XEvent event)
protectedvirtual

Handles X11 events for the container.

Warning
This function is not part of the public interface.

Reimplemented from QWidget.

Definition at line 1473 of file qx11embed_x11.cpp.

1474 {
1476 
1477  switch (event->type) {
1478  case CreateNotify:
1479  // The client created an embedded window.
1480  if (d->client)
1481  d->rejectClient(event->xcreatewindow.window);
1482  else
1483  d->acceptClient(event->xcreatewindow.window);
1484  break;
1485  case DestroyNotify:
1486  if (event->xdestroywindow.window == d->client) {
1487  // The client died.
1488  d->client = 0;
1489  d->clientIsXEmbed = false;
1490  d->wmMinimumSizeHint = QSize();
1491  updateGeometry();
1492  update();
1493  setEnabled(false);
1494  emit clientClosed();
1495  }
1496  break;
1497  case ReparentNotify:
1498  // The client sends us this if it reparents itself out of our
1499  // widget.
1500  if (event->xreparent.window == d->client && event->xreparent.parent != internalWinId()) {
1501  d->client = 0;
1502  d->clientIsXEmbed = false;
1503  d->wmMinimumSizeHint = QSize();
1504  updateGeometry();
1505  update();
1506  setEnabled(false);
1507  emit clientClosed();
1508  } else if (event->xreparent.parent == internalWinId()) {
1509  // The client reparented itself into this window.
1510  if (d->client)
1511  d->rejectClient(event->xreparent.window);
1512  else
1513  d->acceptClient(event->xreparent.window);
1514  }
1515  break;
1516  case ClientMessage: {
1517  if (event->xclient.message_type == ATOM(_XEMBED)) {
1518  // Ignore XEMBED messages not to ourselves
1519  if (event->xclient.window != internalWinId())
1520  break;
1521 
1522  // Receiving an XEmbed message means the client
1523  // is an XEmbed client.
1524  d->clientIsXEmbed = true;
1525 
1526  Time msgtime = (Time) event->xclient.data.l[0];
1527  if (msgtime > X11->time)
1528  X11->time = msgtime;
1529 
1530  switch (event->xclient.data.l[1]) {
1531  case XEMBED_REQUEST_FOCUS: {
1532  // This typically happens when the client gets focus
1533  // because of a mouse click.
1534  if (!hasFocus())
1536 
1537  // The message is passed along to the topmost container
1538  // that eventually responds with a XEMBED_FOCUS_IN
1539  // message. The focus in message is passed all the way
1540  // back until it reaches the original focus
1541  // requestor. In the end, not only the original client
1542  // has focus, but also all its ancestor containers.
1543  if (d->isEmbedded()) {
1544  // If our window's embedded flag is set, then
1545  // that suggests that we are part of a client. The
1546  // parentWinId will then point to an container to whom
1547  // we must pass this message.
1548  sendXEmbedMessage(d->topLevelParentWinId(), x11Info().display(), XEMBED_REQUEST_FOCUS);
1549  } else {
1550  // Our window's embedded flag is not set,
1551  // so we are the topmost container. We respond to
1552  // the focus request message with a focus in
1553  // message. This message will pass on from client
1554  // to container to client until it reaches the
1555  // originator of the XEMBED_REQUEST_FOCUS message.
1557  }
1558 
1559  break;
1560  }
1561  case XEMBED_FOCUS_NEXT:
1562  // Client sends this event when it received a tab
1563  // forward and was at the end of its focus chain. If
1564  // we are the only widget in the focus chain, we send
1565  // ourselves a FocusIn event.
1566  if (d->focus_next != this) {
1567  focusNextPrevChild(true);
1568  } else {
1570  qApp->sendEvent(this, &event);
1571  }
1572 
1573  break;
1574  case XEMBED_FOCUS_PREV:
1575  // Client sends this event when it received a backtab
1576  // and was at the start of its focus chain. If we are
1577  // the only widget in the focus chain, we send
1578  // ourselves a FocusIn event.
1579  if (d->focus_next != this) {
1580  focusNextPrevChild(false);
1581  } else {
1583  qApp->sendEvent(this, &event);
1584  }
1585 
1586  break;
1587  default:
1588  break;
1589  }
1590  }
1591  }
1592  break;
1593  case XButtonPress:
1594  if (!d->clientIsXEmbed) {
1596  XAllowEvents(x11Info().display(), ReplayPointer, CurrentTime);
1597  return true;
1598  }
1599  break;
1600  case XButtonRelease:
1601  if (!d->clientIsXEmbed)
1602  XAllowEvents(x11Info().display(), SyncPointer, CurrentTime);
1603  break;
1604  default:
1605  break;
1606  }
1607 
1608  return QWidget::x11Event(event);
1609 }
double d
Definition: qnumeric_p.h:62
const QX11Info & x11Info() const
Returns information about the configuration of the X display used to display the widget.
bool hasFocus() const
Definition: qwidget.cpp:6583
#define X11
Definition: qt_x11_p.h:724
#define Q_D(Class)
Definition: qglobal.h:2482
#define ATOM(x)
Definition: qt_x11_p.h:723
void update()
Updates the widget unless updates are disabled or the widget is hidden.
Definition: qwidget.cpp:10883
Q_GUI_EXPORT EGLDisplay display()
Definition: qegl.cpp:589
#define qApp
#define emit
Definition: qobjectdefs.h:76
virtual bool x11Event(XEvent *)
This special event handler can be reimplemented in a subclass to receive native X11 events passed in ...
Definition: qwidget.cpp:9969
static void sendXEmbedMessage(WId window, Display *display, long message, long detail=0, long data1=0, long data2=0)
void setEnabled(bool)
Definition: qwidget.cpp:3447
void setFocus()
Gives the keyboard input focus to this widget (or its focus proxy) if this widget or one of its paren...
Definition: qwidget.h:432
void clientClosed()
This signal is emitted by the container when the client widget closes.
bool event(QEvent *)
Reimplemented Function
virtual bool focusNextPrevChild(bool next)
Finds a new widget to give the keyboard focus to, as appropriate for Tab and Shift+Tab, and returns true if it can find a new widget, or false if it can&#39;t.
Definition: qwidget.cpp:6836
const int XButtonPress
if(void) toggleToolbarShown
WId internalWinId() const
Returns the window system identifier of the widget, or 0 if the widget is not created yet...
Definition: qwidget.h:244
const int XButtonRelease
The QSize class defines the size of a two-dimensional object using integer point precision.
Definition: qsize.h:53
void updateGeometry()
Notifies the layout system that this widget has changed and may need to change geometry.
Definition: qwidget.cpp:10372
The QX11EmbedContainer class provides an XEmbed container widget.
Definition: qx11embed_x11.h:88
The QFocusEvent class contains event parameters for widget focus events.
Definition: qevent.h:275
static Display * display()
Returns the default display for the application.

The documentation for this class was generated from the following files: