solution for #48194, BUT...
Michael Brade
brade at kde.org
Fri Jun 27 15:29:35 BST 2003
Hi,
I have a problem accurately explaining #48194 although I've got a patch that
fixes it. I need someone with deep Qt/QEventLoop knowledge...
What usually happens is this: KWinModule emits currentDesktopChanged() after
switching desktops. That causes the minipagerapplet to change the pressed
button. But if Kicker is in auto-hide mode with "Show panel when switching
desktop" on, only one KWinModule emits the signal. Here's part of the code:
bool KWinModulePrivate::x11Event( XEvent * ev )
{
if ( ev->xany.window == qt_xrootwin() ) {
int m = NETRootInfo::event( ev );
if ( m & CurrentDesktop )
{
for ( module = modules.first(); module; module = modules.next() )
emit module->currentDesktopChanged( currentDesktop() );
The loop is not fully executed, it "breaks" after the first "emit". The first
emit causes Kicker to show because PanelContainer connects to
currentDesktopChanged(). To show Kicker PanelContainer::autoHide(false) is
called which in turn calls qApp->processEvents(). And that is apparently the
reason the loop above is not fully executed.
Any explanation why? I had a look at qeventloop.cpp but didn't really
understand all of it... :-} I first thought that KWinModulePrivate being
static might be part of the reason, but I dropped that idea.
The fix is to comment out all three qApp->processEvents() in
PanelContainer::autoHide() in container_panel.cpp but I guess they are there
for a reason.
--
Michael Brade; KDE Developer, Student of Computer Science
|-mail: echo brade !#|tr -d "c oh"|s\e\d 's/e/\@/2;s/$/.org/;s/bra/k/2'
°--web: http://www.kde.org/people/michaelb.html
KDE 3: The Next Generation in Desktop Experience
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: signature
URL: <http://mail.kde.org/pipermail/kde-core-devel/attachments/20030628/6a157193/attachment.sig>
More information about the kde-core-devel
mailing list