summaryrefslogtreecommitdiffstats
path: root/opensuse/core/qt3/0079-compositing-types.patch
diff options
context:
space:
mode:
Diffstat (limited to 'opensuse/core/qt3/0079-compositing-types.patch')
-rw-r--r--opensuse/core/qt3/0079-compositing-types.patch413
1 files changed, 0 insertions, 413 deletions
diff --git a/opensuse/core/qt3/0079-compositing-types.patch b/opensuse/core/qt3/0079-compositing-types.patch
deleted file mode 100644
index 7899cf584..000000000
--- a/opensuse/core/qt3/0079-compositing-types.patch
+++ /dev/null
@@ -1,413 +0,0 @@
-qt-bugs@ issue : none
-bugs.kde.org number : none
-applied: no
-author: Lubos Lunak <l.lunak@kde.org>
-
-This patch adds support for window types used for compositing (popup menu, dropdown menu,
-tooltip, combobox, dnd).
-
---- src/kernel/qdnd_x11.cpp.sav 2007-05-25 18:56:23.000000000 +0200
-+++ src/kernel/qdnd_x11.cpp 2007-05-31 10:30:58.000000000 +0200
-@@ -261,6 +261,7 @@ public:
- QWidget(QApplication::desktop()->screen( screen ),
- 0, WStyle_Customize | WStyle_Tool | WStyle_NoBorder | WX11BypassWM ), oldpmser( 0 ), oldbmser( 0 )
- {
-+ x11SetWindowType( X11WindowTypeDND );
- }
-
- void setPixmap(QPixmap pm, QPoint hot)
-@@ -1221,6 +1222,7 @@ void QDragManager::move( const QPoint &
- // recreate the pixmap on the new screen...
- delete qt_xdnd_deco;
- qt_xdnd_deco = new QShapedPixmapWidget( screen );
-+ qt_xdnd_deco->x11SetWindowTransient( dragSource->topLevelWidget());
- if (!QWidget::mouseGrabber()) {
- updatePixmap();
- qt_xdnd_deco->grabMouse();
-@@ -1774,6 +1776,7 @@ bool QDragManager::drag( QDragObject * o
-
- dragSource = (QWidget *)(object->parent());
-
-+ qt_xdnd_deco->x11SetWindowTransient( dragSource->topLevelWidget());
- qApp->installEventFilter( this );
- qt_xdnd_source_current_time = qt_x_time;
- XSetSelectionOwner( QPaintDevice::x11AppDisplay(), qt_xdnd_selection,
---- src/kernel/qapplication_x11.cpp.sav 2007-05-29 16:24:58.000000000 +0200
-+++ src/kernel/qapplication_x11.cpp 2007-05-31 10:30:58.000000000 +0200
-@@ -268,6 +268,11 @@ Atom qt_net_wm_window_type_menu = 0;
- Atom qt_net_wm_window_type_utility = 0;
- Atom qt_net_wm_window_type_splash = 0;
- Atom qt_net_wm_window_type_override = 0; // KDE extension
-+Atom qt_net_wm_window_type_dropdown_menu = 0;
-+Atom qt_net_wm_window_type_popup_menu = 0;
-+Atom qt_net_wm_window_type_tooltip = 0;
-+Atom qt_net_wm_window_type_combo = 0;
-+Atom qt_net_wm_window_type_dnd = 0;
- Atom qt_net_wm_frame_strut = 0; // KDE extension
- Atom qt_net_wm_state_stays_on_top = 0; // KDE extension
- Atom qt_net_wm_pid = 0;
-@@ -1920,6 +1925,11 @@ void qt_init_internal( int *argcptr, cha
- qt_x11_intern_atom( "_NET_WM_WINDOW_TYPE_UTILITY", &qt_net_wm_window_type_utility );
- qt_x11_intern_atom( "_NET_WM_WINDOW_TYPE_SPLASH", &qt_net_wm_window_type_splash );
- qt_x11_intern_atom( "_KDE_NET_WM_WINDOW_TYPE_OVERRIDE", &qt_net_wm_window_type_override );
-+ qt_x11_intern_atom( "_NET_WM_WINDOW_TYPE_DROPDOWN_MENU", &qt_net_wm_window_type_dropdown_menu );
-+ qt_x11_intern_atom( "_NET_WM_WINDOW_TYPE_POPUP_MENU", &qt_net_wm_window_type_popup_menu );
-+ qt_x11_intern_atom( "_NET_WM_WINDOW_TYPE_TOOLTIP", &qt_net_wm_window_type_tooltip );
-+ qt_x11_intern_atom( "_NET_WM_WINDOW_TYPE_COMBO", &qt_net_wm_window_type_combo );
-+ qt_x11_intern_atom( "_NET_WM_WINDOW_TYPE_DND", &qt_net_wm_window_type_dnd );
- qt_x11_intern_atom( "_KDE_NET_WM_FRAME_STRUT", &qt_net_wm_frame_strut );
- qt_x11_intern_atom( "_NET_WM_STATE_STAYS_ON_TOP",
- &qt_net_wm_state_stays_on_top );
---- src/kernel/qwidget_x11.cpp.sav 2007-05-25 18:56:23.000000000 +0200
-+++ src/kernel/qwidget_x11.cpp 2007-05-31 10:30:58.000000000 +0200
-@@ -125,6 +125,11 @@ extern Atom qt_net_wm_window_type_menu;
- extern Atom qt_net_wm_window_type_utility;
- extern Atom qt_net_wm_window_type_splash;
- extern Atom qt_net_wm_window_type_override;
-+extern Atom qt_net_wm_window_type_dropdown_menu;
-+extern Atom qt_net_wm_window_type_popup_menu;
-+extern Atom qt_net_wm_window_type_combo;
-+extern Atom qt_net_wm_window_type_dnd;
-+extern Atom qt_net_wm_window_type_tooltip;
- extern Atom qt_net_wm_pid;
- extern Atom qt_net_wm_user_time;
- extern Atom qt_enlightenment_desktop;
-@@ -448,10 +453,6 @@ void QWidget::create( WId window, bool i
- x11Colormap() );
- #endif // QT_NO_XFTFREETYPE
-
-- // NET window types
-- long net_wintypes[7] = { 0, 0, 0, 0, 0, 0, 0 };
-- int curr_wintype = 0;
--
- // NET window states
- long net_winstates[6] = { 0, 0, 0, 0, 0, 0 };
- int curr_winstate = 0;
-@@ -473,7 +474,6 @@ void QWidget::create( WId window, bool i
- if ( testWFlags(WStyle_Splash) ) {
- if (qt_net_supports(qt_net_wm_window_type_splash)) {
- clearWFlags( WX11BypassWM );
-- net_wintypes[curr_wintype++] = qt_net_wm_window_type_splash;
- } else {
- setWFlags( WX11BypassWM | WStyle_Tool | WStyle_NoBorder );
- }
-@@ -482,27 +482,22 @@ void QWidget::create( WId window, bool i
- mwmhints.decorations = 0L;
- mwmhints.flags |= (1L << 1); // MWM_HINTS_DECORATIONS
-
-- if ( testWFlags( WStyle_NoBorder ) ) {
-- // override netwm type - quick and easy for KDE noborder
-- net_wintypes[curr_wintype++] = qt_net_wm_window_type_override;
-- } else {
-- if ( testWFlags( WStyle_NormalBorder | WStyle_DialogBorder ) ) {
-- mwmhints.decorations |= (1L << 1); // MWM_DECOR_BORDER
-- mwmhints.decorations |= (1L << 2); // MWM_DECOR_RESIZEH
-- }
-+ if ( testWFlags( WStyle_NormalBorder | WStyle_DialogBorder ) ) {
-+ mwmhints.decorations |= (1L << 1); // MWM_DECOR_BORDER
-+ mwmhints.decorations |= (1L << 2); // MWM_DECOR_RESIZEH
-+ }
-
-- if ( testWFlags( WStyle_Title ) )
-- mwmhints.decorations |= (1L << 3); // MWM_DECOR_TITLE
-+ if ( testWFlags( WStyle_Title ) )
-+ mwmhints.decorations |= (1L << 3); // MWM_DECOR_TITLE
-
-- if ( testWFlags( WStyle_SysMenu ) )
-- mwmhints.decorations |= (1L << 4); // MWM_DECOR_MENU
-+ if ( testWFlags( WStyle_SysMenu ) )
-+ mwmhints.decorations |= (1L << 4); // MWM_DECOR_MENU
-
-- if ( testWFlags( WStyle_Minimize ) )
-- mwmhints.decorations |= (1L << 5); // MWM_DECOR_MINIMIZE
-+ if ( testWFlags( WStyle_Minimize ) )
-+ mwmhints.decorations |= (1L << 5); // MWM_DECOR_MINIMIZE
-
-- if ( testWFlags( WStyle_Maximize ) )
-- mwmhints.decorations |= (1L << 6); // MWM_DECOR_MAXIMIZE
-- }
-+ if ( testWFlags( WStyle_Maximize ) )
-+ mwmhints.decorations |= (1L << 6); // MWM_DECOR_MAXIMIZE
-
- if (testWFlags(WStyle_Tool)) {
- wsa.save_under = True;
-@@ -522,23 +517,6 @@ void QWidget::create( WId window, bool i
- }
- }
-
-- // ### need a better way to do this
-- if (inherits("QPopupMenu")) {
-- // menu netwm type
-- net_wintypes[curr_wintype++] = qt_net_wm_window_type_menu;
-- } else if (inherits("QToolBar")) {
-- // toolbar netwm type
-- net_wintypes[curr_wintype++] = qt_net_wm_window_type_toolbar;
-- } else if (testWFlags(WStyle_Customize) && testWFlags(WStyle_Tool)) {
-- // utility netwm type
-- net_wintypes[curr_wintype++] = qt_net_wm_window_type_utility;
-- }
--
-- if (dialog) // dialog netwm type
-- net_wintypes[curr_wintype++] = qt_net_wm_window_type_dialog;
-- // normal netwm type - default
-- net_wintypes[curr_wintype++] = qt_net_wm_window_type_normal;
--
- // stays on top
- if (testWFlags(WStyle_StaysOnTop)) {
- net_winstates[curr_winstate++] = qt_net_wm_state_above;
-@@ -573,6 +551,7 @@ void QWidget::create( WId window, bool i
- wsa.save_under = True;
- XChangeWindowAttributes( dpy, id, CWOverrideRedirect | CWSaveUnder,
- &wsa );
-+ x11SetWindowType();
- } else if ( topLevel && !desktop ) { // top-level widget
- QWidget *p = parentWidget(); // real parent
- if (p)
-@@ -632,12 +611,7 @@ void QWidget::create( WId window, bool i
- else
- XDeleteProperty(dpy, id, qt_xa_motif_wm_hints);
-
-- // set _NET_WM_WINDOW_TYPE
-- if (curr_wintype > 0)
-- XChangeProperty(dpy, id, qt_net_wm_window_type, XA_ATOM, 32, PropModeReplace,
-- (unsigned char *) net_wintypes, curr_wintype);
-- else
-- XDeleteProperty(dpy, id, qt_net_wm_window_type);
-+ x11SetWindowType();
-
- // set _NET_WM_WINDOW_STATE
- if (curr_winstate > 0)
-@@ -896,6 +870,64 @@ void QWidget::reparentSys( QWidget *pare
- setMouseTracking(mouse_tracking);
- }
-
-+// Sets the EWMH (netwm) window type. Needed as a separate function
-+// because create() may be too soon in some cases.
-+void QWidget::x11SetWindowType( X11WindowType type )
-+{
-+ // NET window types
-+ long net_wintypes[7] = { 0, 0, 0, 0, 0, 0, 0 };
-+ int curr_wintype = 0;
-+ if( testWFlags(WType_Desktop))
-+ return;
-+ if( type == X11WindowTypeSelect ) {
-+ if ( testWFlags(WStyle_Splash)) {
-+ if (qt_net_supports(qt_net_wm_window_type_splash)) {
-+ net_wintypes[curr_wintype++] = qt_net_wm_window_type_splash;
-+ }
-+ } else if (inherits("QToolBar")) {
-+ // toolbar netwm type
-+ net_wintypes[curr_wintype++] = qt_net_wm_window_type_toolbar;
-+ } else if (testWFlags(WStyle_Customize) && testWFlags(WStyle_Tool)) {
-+ // utility netwm type
-+ net_wintypes[curr_wintype++] = qt_net_wm_window_type_utility;
-+ } else if (testWFlags(WType_Dialog)) {
-+ // dialog netwm type
-+ net_wintypes[curr_wintype++] = qt_net_wm_window_type_dialog;
-+ }
-+ } else if( type == X11WindowTypeCombo ) {
-+ // combo netwm type
-+ net_wintypes[curr_wintype++] = qt_net_wm_window_type_combo;
-+ } else if( type == X11WindowTypeDND ) {
-+ // dnd netwm type
-+ net_wintypes[curr_wintype++] = qt_net_wm_window_type_dnd;
-+ } else if( type == X11WindowTypeDropdown ) {
-+ // dropdown netwm type
-+ net_wintypes[curr_wintype++] = qt_net_wm_window_type_dropdown_menu;
-+ } else if( type == X11WindowTypePopup ) {
-+ // popup netwm type
-+ net_wintypes[curr_wintype++] = qt_net_wm_window_type_popup_menu;
-+ } else if( type == X11WindowTypeMenu ) {
-+ // menu netwm type
-+ net_wintypes[curr_wintype++] = qt_net_wm_window_type_menu;
-+ } else if( type == X11WindowTypeTooltip ) {
-+ // tooltip netwm type
-+ net_wintypes[curr_wintype++] = qt_net_wm_window_type_tooltip;
-+ }
-+
-+ // normal netwm type - default
-+ net_wintypes[curr_wintype++] = qt_net_wm_window_type_normal;
-+ // set _NET_WM_WINDOW_TYPE
-+ if (curr_wintype > 0)
-+ XChangeProperty(x11Display(), winId(), qt_net_wm_window_type, XA_ATOM, 32, PropModeReplace,
-+ (unsigned char *) net_wintypes, curr_wintype);
-+ else
-+ XDeleteProperty(x11Display(), winId(), qt_net_wm_window_type);
-+}
-+
-+void QWidget::x11SetWindowTransient( QWidget* parent )
-+{
-+ XSetTransientForHint( x11Display(), winId(), parent->winId());
-+}
-
- /*!
- Translates the widget coordinate \a pos to global screen
---- src/kernel/qwidget.h.sav 2007-05-25 18:56:23.000000000 +0200
-+++ src/kernel/qwidget.h 2007-05-31 10:30:58.000000000 +0200
-@@ -464,7 +464,19 @@ public:
- CGContextRef macCGContext(bool clipped=TRUE) const;
- #endif
- #endif
--
-+#if defined(Q_WS_X11)
-+ enum X11WindowType {
-+ X11WindowTypeSelect,
-+ X11WindowTypeCombo,
-+ X11WindowTypeDND,
-+ X11WindowTypeTooltip,
-+ X11WindowTypeMenu, // torn-off
-+ X11WindowTypeDropdown,
-+ X11WindowTypePopup
-+ };
-+ void x11SetWindowType( X11WindowType type = X11WindowTypeSelect );
-+ void x11SetWindowTransient( QWidget* parent );
-+#endif
- void setWindowOpacity(double level);
- double windowOpacity() const;
-
---- src/dialogs/qdialog.cpp.sav 2007-05-25 18:56:23.000000000 +0200
-+++ src/dialogs/qdialog.cpp 2007-05-31 10:30:58.000000000 +0200
-@@ -705,7 +701,7 @@ void QDialog::show()
- && qApp->mainWidget() && qApp->mainWidget()->isVisible()
- && !qApp->mainWidget()->isMinimized()) {
- // make sure the transient for hint is set properly for modal dialogs
-- XSetTransientForHint( x11Display(), winId(), qApp->mainWidget()->winId() );
-+ x11SetWindowTransient( qApp->mainWidget());
- }
- #endif // Q_WS_X11
-
---- src/widgets/qtooltip.cpp.sav 2007-05-25 18:56:23.000000000 +0200
-+++ src/widgets/qtooltip.cpp 2007-05-31 10:30:58.000000000 +0200
-@@ -72,6 +72,7 @@ public:
- polish();
- setText(text);
- adjustSize();
-+ x11SetWindowType( X11WindowTypeTooltip );
- }
- void setWidth( int w ) { resize( sizeForWidth( w ) ); }
- };
-@@ -528,6 +529,10 @@ void QTipManager::showTip()
- if (!widget)
- return;
-
-+#ifdef Q_WS_X11
-+ label->x11SetWindowTransient( widget->topLevelWidget());
-+#endif
-+
- #ifdef Q_WS_MAC
- QRect screen = QApplication::desktop()->availableGeometry( scr );
- #else
---- src/widgets/qcombobox.cpp.sav 2007-05-25 18:56:23.000000000 +0200
-+++ src/widgets/qcombobox.cpp 2007-05-31 10:49:13.000000000 +0200
-@@ -389,12 +389,8 @@ public:
- inline QListBox * listBox() { return lBox; }
- inline QComboBoxPopup * popup() { return pop; }
- void updateLinedGeometry();
--
-- void setListBox( QListBox *l ) { lBox = l ; usingLBox = TRUE;
-- l->setMouseTracking( TRUE );}
--
-- void setPopupMenu( QComboBoxPopup * pm, bool isPopup=TRUE )
-- { pop = pm; if(isPopup) usingLBox = FALSE; }
-+ void setListBox( QListBox *l );
-+ void setPopupMenu( QComboBoxPopup * pm, bool isPopup=TRUE );
-
- int current;
- int maxCount;
-@@ -440,6 +436,30 @@ void QComboBoxData::updateLinedGeometry(
- ed->setGeometry( r );
- }
-
-+void QComboBoxData::setListBox( QListBox *l )
-+{
-+ lBox = l;
-+ usingLBox = TRUE;
-+ l->setMouseTracking( TRUE );
-+#ifdef Q_WS_X11
-+ l->x11SetWindowType( QWidget::X11WindowTypeCombo );
-+ l->x11SetWindowTransient( combo->topLevelWidget());
-+#endif
-+}
-+
-+void QComboBoxData::setPopupMenu( QComboBoxPopup * pm, bool isPopup )
-+{
-+ pop = pm;
-+ if(isPopup)
-+ usingLBox = FALSE;
-+#ifdef Q_WS_X11
-+ if( pm ) {
-+ pm->x11SetWindowType( QWidget::X11WindowTypeCombo );
-+ pm->x11SetWindowTransient( combo->topLevelWidget());
-+ }
-+#endif
-+}
-+
- static inline bool checkInsertIndex( const char *method, const char * name,
- int count, int *index)
- {
---- src/widgets/qpopupmenu.cpp.sav 2007-05-25 18:56:23.000000000 +0200
-+++ src/widgets/qpopupmenu.cpp 2007-05-31 11:09:22.000000000 +0200
-@@ -298,6 +298,9 @@ QPopupMenu::QPopupMenu( QWidget *parent,
- connectModalRecursionSafety = 0;
-
- setFocusPolicy( StrongFocus );
-+#ifdef Q_WS_X11
-+ x11SetWindowType( X11WindowTypePopup );
-+#endif
- }
-
- /*!
-@@ -537,6 +540,29 @@ void QPopupMenu::popup( const QPoint &po
- emit aboutToShow();
- updateSize(TRUE);
- }
-+#ifdef Q_WS_X11
-+#ifndef QT_NO_MENUBAR
-+ QMenuData *top = this; // find top level
-+ while ( top->parentMenu )
-+ top = top->parentMenu;
-+ if( top->isMenuBar )
-+ x11SetWindowType( X11WindowTypeDropdown );
-+ if( parentMenu && parentMenu->isMenuBar )
-+ x11SetWindowTransient( static_cast< QMenuBar* >( parentMenu )->topLevelWidget());
-+#endif
-+ if( parentMenu && !parentMenu->isMenuBar )
-+ x11SetWindowTransient( static_cast< QPopupMenu* >( parentMenu ));
-+ if( !parentMenu ) {
-+ // hackish ... try to find the main window related to this popup
-+ QWidget* parent = parentWidget() ? parentWidget()->topLevelWidget() : NULL;
-+ if( parent == NULL )
-+ parent = QApplication::widgetAt( pos );
-+ if( parent == NULL )
-+ parent = qApp->activeWindow();
-+ if( parent != NULL )
-+ x11SetWindowTransient( parent );
-+ }
-+#endif
-
- int sw = screen.width(); // screen width
- int sh = screen.height(); // screen height
-@@ -1390,6 +1416,13 @@ void QPopupMenu::hide()
- #if defined(QT_ACCESSIBILITY_SUPPORT)
- QAccessible::updateAccessibility( this, 0, QAccessible::PopupMenuEnd );
- #endif
-+#ifndef QT_NO_MENUBAR
-+ QMenuData *top = this; // find top level
-+ while ( top->parentMenu )
-+ top = top->parentMenu;
-+ if( top->isMenuBar )
-+ x11SetWindowType( X11WindowTypePopup ); // reset
-+#endif
- parentMenu = 0;
- hidePopups();
- QWidget::hide();
-@@ -2713,6 +2746,9 @@ void QPopupMenu::toggleTearOff()
- geometry().topLeft(), FALSE );
- p->mitems->setAutoDelete( FALSE );
- p->tornOff = TRUE;
-+#ifdef Q_WS_X11
-+ p->x11SetWindowType( X11WindowTypeMenu );
-+#endif
- for ( QMenuItemListIt it( *mitems ); it.current(); ++it ) {
- if ( it.current()->id() != QMenuData::d->aInt && !it.current()->widget() )
- p->mitems->append( it.current() );