Make sure also dialogs are not placed under toplevel menubar or
Kicker at the top edge. svn path=/trunk/kdebase/kwin/; revision=177159
This commit is contained in:
parent
7a9e7dbb24
commit
20f980dff7
1 changed files with 15 additions and 12 deletions
27
client.cpp
27
client.cpp
|
@ -698,18 +698,6 @@ bool Client::manage( bool isMapped, bool doNotShow, bool isInitial )
|
|||
if ( ( (xSizeHint.flags & PPosition) && !ignorePPosition ) ||
|
||||
(xSizeHint.flags & USPosition) ) {
|
||||
placementDone = TRUE;
|
||||
if ( windowType() == NET::Normal && !area.contains( geom.topLeft() ) && may_move ) {
|
||||
int tx = geom.x();
|
||||
int ty = geom.y();
|
||||
if ( tx >= 0 && tx < area.x() )
|
||||
tx = area.x();
|
||||
if ( ty >= 0 && ty < area.y() )
|
||||
ty = area.y();
|
||||
if ( tx > area.right() || ty > area.bottom() )
|
||||
placementDone = FALSE; // weird, do not trust.
|
||||
else
|
||||
geom.moveTopLeft( QPoint( tx, ty ) );
|
||||
}
|
||||
}
|
||||
if ( (xSizeHint.flags & USSize) || (xSizeHint.flags & PSize) ) {
|
||||
// keep in mind that we now actually have a size :-)
|
||||
|
@ -720,6 +708,21 @@ bool Client::manage( bool isMapped, bool doNotShow, bool isInitial )
|
|||
geom.setSize( geom.size().expandedTo( QSize(xSizeHint.min_width, xSizeHint.min_height ) ) );
|
||||
}
|
||||
|
||||
if ( ( windowType() == NET::Normal || windowType() == NET::Dialog || windowType() == NET::Unknown
|
||||
|| windowType() == NET::Menu )
|
||||
&& !area.contains( geom.topLeft() ) && may_move ) {
|
||||
int tx = geom.x();
|
||||
int ty = geom.y();
|
||||
if ( tx >= 0 && tx < area.x() )
|
||||
tx = area.x();
|
||||
if ( ty >= 0 && ty < area.y() )
|
||||
ty = area.y();
|
||||
if ( tx > area.right() || ty > area.bottom() )
|
||||
placementDone = FALSE; // weird, do not trust.
|
||||
else
|
||||
geom.moveTopLeft( QPoint( tx, ty ) );
|
||||
}
|
||||
|
||||
windowWrapper()->resize( geom.size() );
|
||||
// the clever activate() trick is necessary
|
||||
activateLayout();
|
||||
|
|
Loading…
Reference in a new issue