summaryrefslogtreecommitdiffstats
path: root/opensuse/tdelibs/fix-qxembed.diff
diff options
context:
space:
mode:
Diffstat (limited to 'opensuse/tdelibs/fix-qxembed.diff')
-rw-r--r--opensuse/tdelibs/fix-qxembed.diff80
1 files changed, 0 insertions, 80 deletions
diff --git a/opensuse/tdelibs/fix-qxembed.diff b/opensuse/tdelibs/fix-qxembed.diff
deleted file mode 100644
index 8ea18d69d..000000000
--- a/opensuse/tdelibs/fix-qxembed.diff
+++ /dev/null
@@ -1,80 +0,0 @@
-Index: kdeui/qxembed.h
-===================================================================
---- kdeui/qxembed.h.orig
-+++ kdeui/qxembed.h
-@@ -191,6 +191,11 @@ public:
- void enterWhatsThisMode(); // temporary, fix in Qt (Matthias, Mon Jul 17 15:20:55 CEST 2000 )
- virtual void reparent( QWidget * parent, WFlags f, const QPoint & p, bool showIt = false );
-
-+ /**
-+ * @internal
-+ */
-+ void updateEmbeddedFocus( bool hasfocus );
-+
- signals:
- /**
- * This signal is emitted when the embedded window has been lost (destroyed or reparented away)
-Index: kdeui/qxembed.cpp
-===================================================================
---- kdeui/qxembed.cpp.orig
-+++ kdeui/qxembed.cpp
-@@ -314,8 +314,8 @@ bool QXEmbedAppFilter::eventFilter( QObj
- if ( qApp->focusWidget() == o &&
- ((QPublicWidget*)qApp->focusWidget()->topLevelWidget())->topData()->embedded ) {
- QFocusEvent* fe = (QFocusEvent*) e;
-- if ( obeyFocus || fe->reason() == QFocusEvent::Mouse ||
-- fe->reason() == QFocusEvent::Shortcut ) {
-+ if ( obeyFocus || fe->reason() != QFocusEvent::ActiveWindow /*|| fe->reason() == QFocusEvent::Mouse ||
-+ fe->reason() == QFocusEvent::Shortcut*/ ) {
- // L0614: A widget in the embedded client was just given the Qt focus.
- // Variable `obeyFocus' suggests that this is the result of mouse
- // activity in the client. The XEMBED_REQUEST_FOCUS message causes
-@@ -478,8 +478,11 @@ static int qxembed_x11_event_filter( XEv
- switch ( detail ) {
- case XEMBED_FOCUS_CURRENT:
- // L0683: Set focus on saved focus widget
-- if ( focusCurrent )
-+ if ( focusCurrent ) {
- focusCurrent->setFocus();
-+ if( QXEmbed* emb = dynamic_cast< QXEmbed* >( focusCurrent ))
-+ emb->updateEmbeddedFocus( true );
-+ }
- else if ( !w->topLevelWidget()->focusWidget() )
- w->topLevelWidget()->setFocus();
- break;
-@@ -511,6 +514,8 @@ static int qxembed_x11_event_filter( XEv
- // We first record what the focus widget was
- // and clear the Qt focus.
- if ( w->topLevelWidget()->focusWidget() ) {
-+ if( QXEmbed* emb = dynamic_cast< QXEmbed* >( w->topLevelWidget()->focusWidget()))
-+ emb->updateEmbeddedFocus( false );
- focusMap->insert( w->topLevelWidget(),
- new QGuardedPtr<QWidget>(w->topLevelWidget()->focusWidget() ) );
- w->topLevelWidget()->focusWidget()->clearFocus();
-@@ -919,6 +924,17 @@ void QXEmbed::focusOutEvent( QFocusEvent
- }
-
-
-+// When QXEmbed has Qt focus and gets/loses X focus, make sure the client knows
-+// about the state of the focus.
-+void QXEmbed::updateEmbeddedFocus( bool hasfocus ){
-+ if (!window || d->xplain)
-+ return;
-+ if( hasfocus )
-+ sendXEmbedMessage( window, XEMBED_FOCUS_IN, XEMBED_FOCUS_CURRENT);
-+ else
-+ sendXEmbedMessage( window, XEMBED_FOCUS_OUT);
-+}
-+
- // L1600: Helper for QXEmbed::embed()
- // Check whether a window is in withdrawn state.
- static bool wstate_withdrawn( WId winid )
-@@ -1161,6 +1177,8 @@ bool QXEmbed::x11Event( XEvent* e)
- // L2085: The client asks for the focus.
- case XEMBED_REQUEST_FOCUS:
- if( ((QPublicWidget*)topLevelWidget())->topData()->embedded ) {
-+ focusMap->remove( topLevelWidget() );
-+ focusMap->insert( topLevelWidget(), new QGuardedPtr<QWidget>( this ));
- WId window = ((QPublicWidget*)topLevelWidget())->topData()->parentWinId;
- sendXEmbedMessage( window, XEMBED_REQUEST_FOCUS );
- } else {