diff --git a/client.cpp b/client.cpp index 194ee8d113..d2cf338707 100644 --- a/client.cpp +++ b/client.cpp @@ -110,11 +110,9 @@ Client::Client( Workspace *ws ) keep_above = FALSE; keep_below = FALSE; is_shape = FALSE; - may_move = TRUE; - may_resize = TRUE; - may_minimize = TRUE; - may_maximize = TRUE; - may_close = TRUE; + motif_may_move = TRUE; + motif_may_resize = TRUE; + motif_may_close = TRUE; fullscreen_mode = FullScreenNone; skip_taskbar = FALSE; original_skip_taskbar = false; @@ -577,7 +575,7 @@ void Client::hideClient( bool hide ) bool Client::isMinimizable() const { if( !wantsTabFocus() // SELI co NET::Utility? a proc wantsTabFocus() - skiptaskbar? ? - || !may_minimize || ( isSpecialWindow() && !isOverride())) + || ( isSpecialWindow() && !isOverride())) return false; if( isTransient()) { // transients may be minimized only if mainwindow is not shown @@ -977,7 +975,7 @@ static void sendClientMessage(Window w, Atom a, long x) */ bool Client::isCloseable() const { - return may_close && ( !isSpecialWindow() || isOverride()); // TODO is NET::Override special? + return motif_may_close && ( !isSpecialWindow() || isOverride()); // TODO is NET::Override special? } /*! @@ -1577,7 +1575,7 @@ bool Client::wantsInput() const */ bool Client::isMovable() const { - return may_move && !isFullScreen() && + return motif_may_move && !isFullScreen() && ( !isSpecialWindow() || isOverride() || isSplash() || isToolbar()) && // allow moving of splashscreens :) ( maximizeMode() != MaximizeFull || options->moveResizeMaximizedWindows() ); } diff --git a/client.h b/client.h index 1bb2bd29b3..bbb1e38f3a 100644 --- a/client.h +++ b/client.h @@ -396,7 +396,6 @@ class Client : public QObject, public KDecorationDefines uint active :1; uint keep_above : 1; // NET::KeepAbove (was stays_on_top) uint is_shape :1; - uint may_move :1; uint skip_taskbar :1; uint original_skip_taskbar :1; // unaffected by KWin uint Pdeletewindow :1; // does the window understand the DeleteWindow protocol? @@ -406,10 +405,9 @@ class Client : public QObject, public KDecorationDefines uint input :1; // does the window want input in its wm_hints uint store_settings : 1; uint skip_pager : 1; - uint may_resize : 1; - uint may_maximize : 1; - uint may_minimize : 1; - uint may_close : 1; + uint motif_may_resize : 1; + uint motif_may_move :1; + uint motif_may_close : 1; uint keep_below : 1; // NET::KeepBelow uint minimized : 1; uint hidden : 1; // forcibly hidden by calling hide() diff --git a/events.cpp b/events.cpp index f3d27b4a97..3aae5ff443 100644 --- a/events.cpp +++ b/events.cpp @@ -744,7 +744,7 @@ void Client::configureRequestEvent( XConfigureRequestEvent* e ) QPoint np( nx-ox, ny-oy); #if 0 - if ( windowType() == NET::Normal && may_move ) + if ( windowType() == NET::Normal && isMovable()) { // crap for broken netscape QRect area = workspace()->clientArea(); diff --git a/geometry.cpp b/geometry.cpp index 82a5ea7daf..bf4bd7f40e 100644 --- a/geometry.cpp +++ b/geometry.cpp @@ -547,7 +547,7 @@ void Client::checkDirection( int new_diff, int old_diff, QRect& rect, const QRec } return; } - if( may_resize ) + if( isResizable()) { if( rect.width() > area.width()) rect.setWidth( area.width()); @@ -559,17 +559,17 @@ void Client::checkDirection( int new_diff, int old_diff, QRect& rect, const QRec rect.setRight( area.right() - ( old_diff - 1 )); } } - if( may_move ) + if( isMovable()) { if( old_diff < 0 ) // was in left third, keep distance from left edge rect.moveLeft( area.left() + ( -old_diff - 1 )); else // old_diff > 0 // was in right third, keep distance from right edge rect.moveRight( area.right() - ( old_diff - 1 )); } - // this may_resize block is copied from above, the difference is + // this isResizable() block is copied from above, the difference is // the condition with 'area.width() / 2' - for windows that are not wide, // moving is preffered to resizing - if( may_resize ) + if( isResizable()) { if( old_diff < 0 ) rect.setLeft( area.left() + ( -old_diff - 1 ) ); @@ -579,7 +579,7 @@ void Client::checkDirection( int new_diff, int old_diff, QRect& rect, const QRec } if( rect.right() < area.left() + 5 || rect.left() > area.right() - 5 ) { // not visible (almost) at all - try to make it at least partially visible - if( may_move ) + if( isMovable()) { if( rect.left() < area.left() + 5 ) rect.moveRight( area.left() + 5 ); @@ -772,7 +772,7 @@ void Client::sendSyntheticConfigureNotify() */ bool Client::isResizable() const { - if ( !isMovable() || !may_resize || isSplash()) + if ( !isMovable() || !motif_may_resize || isSplash()) return FALSE; if ( ( xSizeHint.flags & PMaxSize) == 0 || (xSizeHint.flags & PMinSize ) == 0 ) @@ -788,7 +788,7 @@ bool Client::isMaximizable() const { if ( maximizeMode() != MaximizeRestore ) return TRUE; - if( !isResizable() || isToolbar() || !may_maximize ) // SELI isToolbar() ? + if( !isResizable() || isToolbar()) // SELI isToolbar() ? return false; if( xSizeHint.max_height < 32767 || xSizeHint.max_width < 32767 ) // sizes are 16bit with X return false; diff --git a/manage.cpp b/manage.cpp index e240366d66..6591687bae 100644 --- a/manage.cpp +++ b/manage.cpp @@ -101,11 +101,11 @@ bool Client::manage( Window w, bool isMapped ) bool mresize, mmove, mminimize, mmaximize, mclose; if( Motif::funcFlags( client, mresize, mmove, mminimize, mmaximize, mclose )) { - may_resize = mresize; - may_move = mmove; - may_minimize = mminimize; - may_maximize = mmaximize; - may_close = mclose; + motif_may_resize = mresize; // this should be set using minsize==maxsize, but oh well + motif_may_move = mmove; + // mminimize; - ignore, bogus - e.g. shading or sending to another desktop is "minimizing" too + // mmaximize; - ignore, bogus - maximizing is basically just resizing + motif_may_close = mclose; // motif apps like to crash when they set this hint and WM closes them anyway } XClassHint classHint; @@ -272,7 +272,7 @@ bool Client::manage( Window w, bool isMapped ) if (xSizeHint.flags & PMinSize) geom.setSize( geom.size().expandedTo( QSize(xSizeHint.min_width, xSizeHint.min_height ) ) ); - if( may_move ) + if( isMovable()) { if( geom.x() > area.right() || geom.y() > area.bottom()) placementDone = FALSE; // weird, do not trust. @@ -290,7 +290,7 @@ bool Client::manage( Window w, bool isMapped ) placementDone = TRUE; } - if (( !isSpecialWindow() || isToolbar()) && may_move ) + if (( !isSpecialWindow() || isToolbar()) && isMovable()) { if ( geometry().right() > area.right() && width() < area.width() ) move( area.right() - width(), y() );