[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: KDE/kdelibs/kdeui/windowmanagement
From: Luboš Luňák <l.lunak () kde ! org>
Date: 2010-03-02 13:11:06
Message-ID: 1267535466.068424.14826.nullmailer () svn ! kde ! org
[Download RAW message or body]
SVN commit 1097933 by lunakl:
With viewports, use cached geometry value instead of querying
X about it, avoids threading problems in KRunner.
Patch by Danny Baumann.
M +4 -12 kwindowinfo_x11.cpp
--- trunk/KDE/kdelibs/kdeui/windowmanagement/kwindowinfo_x11.cpp #1097932:1097933
@@ -67,6 +67,8 @@
properties |= NET::WMStrut; // will be used as fallback
if( properties & NET::WMWindowType )
properties2 |= NET::WM2TransientFor; // will be used when type is not set
+ if( ( properties & NET::WMDesktop ) && KWindowSystem::mapViewport() )
+ properties |= NET::WMGeometry; // for viewports, the desktop (workspace) is \
determined from the geometry
properties |= NET::XAWMState; // force to get error detection for valid()
unsigned long props[ 2 ] = { properties, properties2 };
d->info = new NETWinInfo( QX11Info::display(), _win, QX11Info::appRootWindow(), \
props, 2 ); @@ -298,13 +300,7 @@
if( KWindowSystem::mapViewport()) {
if( onAllDesktops())
return true;
- Window dummy;
- int x, y;
- unsigned int w, h, b, dp;
- XGetGeometry( QX11Info::display(), d->win_, &dummy, &x, &y, &w, &h, &b, &dp \
);
- // get global position
- XTranslateCoordinates( QX11Info::display(), d->win_, \
QX11Info::appRootWindow(), 0, 0, &x, &y, &dummy );
- return KWindowSystem::viewportWindowToDesktop( QRect( x, y, w, h )) == \
_desktop; + return KWindowSystem::viewportWindowToDesktop( d->geometry_ ) == \
_desktop; }
return d->info->desktop() == _desktop || d->info->desktop() == \
NET::OnAllDesktops; }
@@ -333,11 +329,7 @@
if( KWindowSystem::mapViewport()) {
if( onAllDesktops())
return NET::OnAllDesktops;
- Window r;
- int x, y;
- unsigned int w, h, b, dp;
- XGetGeometry( QX11Info::display(), d->win_, &r, &x, &y, &w, &h, &b, &dp );
- return KWindowSystem::viewportWindowToDesktop( QRect( x, y, w, h ));
+ return KWindowSystem::viewportWindowToDesktop( d->geometry_ );
}
return d->info->desktop();
}
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic