diff --git a/client.cpp b/client.cpp index ef58095be0..52a53e00b2 100644 --- a/client.cpp +++ b/client.cpp @@ -2245,6 +2245,7 @@ void Client::takeFocus( bool force ) return; // menus and dock windows don't take focus if not forced if ( input ) { + setActive( TRUE ); // Qt may delay the mapping which may cause XSetInputFocus to fail, force show window QApplication::sendPostedEvents( windowWrapper(), QEvent::ShowWindowRequest ); diff --git a/default/kdedefault.cpp b/default/kdedefault.cpp index aed28d5f73..c1984d0b07 100644 --- a/default/kdedefault.cpp +++ b/default/kdedefault.cpp @@ -790,7 +790,6 @@ void KDEClient::showEvent(QShowEvent *ev) Client::showEvent(ev); doShape(); calcHiddenButtons(); - repaint(); } void KDEClient::mouseDoubleClickEvent( QMouseEvent * e ) diff --git a/workspace.cpp b/workspace.cpp index 7561fe39eb..ad45d45d39 100644 --- a/workspace.cpp +++ b/workspace.cpp @@ -90,7 +90,7 @@ static bool block_focus = FALSE; // does the window w need a shape combine mask around it? bool Shape::hasShape( WId w){ int xws, yws, xbs, ybs; - unsigned int wws, hws, wbs, hbs; + unsigned int wws, hws, wbs, hbs; int boundingShaped, clipShaped; if (!kwin_has_shape) return FALSE; @@ -408,7 +408,7 @@ bool Workspace::workspaceEvent( XEvent * e ) if ( netCheck( e ) ) return TRUE; } - + Client * c = findClient( e->xany.window ); if ( c ) return c->windowEvent( e ); @@ -2267,9 +2267,9 @@ void Workspace::killWindowAtPosition(int x, int y) { Client *client = (*it); if ( client->frameGeometry().contains(QPoint(x, y)) && - client->isOnDesktop( currentDesktop() ) && - !client->isIconified() ) - { + client->isOnDesktop( currentDesktop() ) && + !client->isMenu() && !client->isDesktop() && + !client->isIconified() ) { client->killWindow(); return; }