diff options
Diffstat (limited to 'twin/geometry.cpp')
-rw-r--r-- | twin/geometry.cpp | 133 |
1 files changed, 76 insertions, 57 deletions
diff --git a/twin/geometry.cpp b/twin/geometry.cpp index 2f9988e6b..6adad44fe 100644 --- a/twin/geometry.cpp +++ b/twin/geometry.cpp @@ -223,12 +223,12 @@ TQRect Workspace::clientArea( clientAreaOption opt, int screen, int desktop ) co { if( desktop == NETWinInfo::OnAllDesktops || desktop == 0 ) desktop = currentDesktop(); - TQDesktopWidget *desktopwidget = kapp->desktop(); + TQDesktopWidget *desktopwidget = tdeApp->desktop(); TQRect sarea = screenarea // may be NULL during KWin initialization ? screenarea[ desktop ][ screen ] : desktopwidget->screenGeometry( screen ); TQRect warea = workarea[ desktop ].isNull() - ? kapp->desktop()->geometry() + ? tdeApp->desktop()->geometry() : workarea[ desktop ]; switch (opt) { @@ -337,23 +337,23 @@ TQPoint Workspace::adjustClientPosition( Client* c, TQPoint pos ) int snap = options->borderSnapZone; //snap trigger if (snap) { - if ((sOWO?(cx<xmin):true) && (QABS(xmin-cx)<snap)) + if ((sOWO?(cx<xmin):true) && (TQABS(xmin-cx)<snap)) { deltaX = xmin-cx; nx = xmin; } - if ((sOWO?(rx>xmax):true) && (QABS(rx-xmax)<snap) && (QABS(xmax-rx) < deltaX)) + if ((sOWO?(rx>xmax):true) && (TQABS(rx-xmax)<snap) && (TQABS(xmax-rx) < deltaX)) { deltaX = rx-xmax; nx = xmax - cw; } - if ((sOWO?(cy<ymin):true) && (QABS(ymin-cy)<snap)) + if ((sOWO?(cy<ymin):true) && (TQABS(ymin-cy)<snap)) { deltaY = ymin-cy; ny = ymin; } - if ((sOWO?(ry>ymax):true) && (QABS(ry-ymax)<snap) && (QABS(ymax-ry) < deltaY)) + if ((sOWO?(ry>ymax):true) && (TQABS(ry-ymax)<snap) && (TQABS(ymax-ry) < deltaY)) { deltaY =ry-ymax; ny = ymax - ch; @@ -380,14 +380,14 @@ TQPoint Workspace::adjustClientPosition( Client* c, TQPoint pos ) (( ry >= ly ) && ( ry <= lry )) || (( cy <= ly ) && ( ry >= lry )) ) { - if ((sOWO?(cx<lrx):true) && (QABS(lrx-cx)<snap) && ( QABS(lrx -cx) < deltaX) ) + if ((sOWO?(cx<lrx):true) && (TQABS(lrx-cx)<snap) && ( TQABS(lrx -cx) < deltaX) ) { - deltaX = QABS( lrx - cx ); + deltaX = TQABS( lrx - cx ); nx = lrx; } - if ((sOWO?(rx>lx):true) && (QABS(rx-lx)<snap) && ( QABS( rx - lx )<deltaX) ) + if ((sOWO?(rx>lx):true) && (TQABS(rx-lx)<snap) && ( TQABS( rx - lx )<deltaX) ) { - deltaX = QABS(rx - lx); + deltaX = TQABS(rx - lx); nx = lx - cw; } } @@ -396,15 +396,15 @@ TQPoint Workspace::adjustClientPosition( Client* c, TQPoint pos ) (( rx >= lx ) && ( rx <= lrx )) || (( cx <= lx ) && ( rx >= lrx )) ) { - if ((sOWO?(cy<lry):true) && (QABS(lry-cy)<snap) && (QABS( lry -cy ) < deltaY)) + if ((sOWO?(cy<lry):true) && (TQABS(lry-cy)<snap) && (TQABS( lry -cy ) < deltaY)) { - deltaY = QABS( lry - cy ); + deltaY = TQABS( lry - cy ); ny = lry; } - //if ( (QABS( ry-ly ) < snap) && (QABS( ry - ly ) < deltaY )) - if ((sOWO?(ry>ly):true) && (QABS(ry-ly)<snap) && (QABS( ry - ly ) < deltaY )) + //if ( (TQABS( ry-ly ) < snap) && (TQABS( ry - ly ) < deltaY )) + if ((sOWO?(ry>ly):true) && (TQABS(ry-ly)<snap) && (TQABS( ry - ly ) < deltaY )) { - deltaY = QABS( ry - ly ); + deltaY = TQABS( ry - ly ); ny = ly - ch; } } @@ -451,30 +451,30 @@ TQRect Workspace::adjustClientSize( Client* c, TQRect moveResizeGeom, int mode ) deltaY = int(snap); #define SNAP_BORDER_TOP \ - if ((sOWO?(newcy<ymin):true) && (QABS(ymin-newcy)<deltaY)) \ + if ((sOWO?(newcy<ymin):true) && (TQABS(ymin-newcy)<deltaY)) \ { \ - deltaY = QABS(ymin-newcy); \ + deltaY = TQABS(ymin-newcy); \ newcy = ymin; \ } #define SNAP_BORDER_BOTTOM \ - if ((sOWO?(newry>ymax):true) && (QABS(ymax-newry)<deltaY)) \ + if ((sOWO?(newry>ymax):true) && (TQABS(ymax-newry)<deltaY)) \ { \ - deltaY = QABS(ymax-newcy); \ + deltaY = TQABS(ymax-newcy); \ newry = ymax; \ } #define SNAP_BORDER_LEFT \ - if ((sOWO?(newcx<xmin):true) && (QABS(xmin-newcx)<deltaX)) \ + if ((sOWO?(newcx<xmin):true) && (TQABS(xmin-newcx)<deltaX)) \ { \ - deltaX = QABS(xmin-newcx); \ + deltaX = TQABS(xmin-newcx); \ newcx = xmin; \ } #define SNAP_BORDER_RIGHT \ - if ((sOWO?(newrx>xmax):true) && (QABS(xmax-newrx)<deltaX)) \ + if ((sOWO?(newrx>xmax):true) && (TQABS(xmax-newrx)<deltaX)) \ { \ - deltaX = QABS(xmax-newrx); \ + deltaX = TQABS(xmax-newrx); \ newrx = xmax; \ } switch ( mode ) @@ -543,30 +543,30 @@ TQRect Workspace::adjustClientSize( Client* c, TQRect moveResizeGeom, int mode ) #define SNAP_WINDOW_TOP if ( (sOWO?(newcy<lry):true) \ && WITHIN_WIDTH \ - && (QABS( lry - newcy ) < deltaY) ) { \ - deltaY = QABS( lry - newcy ); \ + && (TQABS( lry - newcy ) < deltaY) ) { \ + deltaY = TQABS( lry - newcy ); \ newcy=lry; \ } #define SNAP_WINDOW_BOTTOM if ( (sOWO?(newry>ly):true) \ && WITHIN_WIDTH \ - && (QABS( ly - newry ) < deltaY) ) { \ - deltaY = QABS( ly - newry ); \ + && (TQABS( ly - newry ) < deltaY) ) { \ + deltaY = TQABS( ly - newry ); \ newry=ly; \ } #define SNAP_WINDOW_LEFT if ( (sOWO?(newcx<lrx):true) \ && WITHIN_HEIGHT \ - && (QABS( lrx - newcx ) < deltaX)) { \ - deltaX = QABS( lrx - newcx ); \ + && (TQABS( lrx - newcx ) < deltaX)) { \ + deltaX = TQABS( lrx - newcx ); \ newcx=lrx; \ } #define SNAP_WINDOW_RIGHT if ( (sOWO?(newrx>lx):true) \ && WITHIN_HEIGHT \ - && (QABS( lx - newrx ) < deltaX)) \ + && (TQABS( lx - newrx ) < deltaX)) \ { \ - deltaX = QABS( lx - newrx ); \ + deltaX = TQABS( lx - newrx ); \ newrx=lx; \ } @@ -679,7 +679,7 @@ void Workspace::updateTopMenuGeometry( Client* c ) static Atom msg_type_atom = XInternAtom( tqt_xdisplay(), "_KDE_TOPMENU_MINSIZE", False ); ev.xclient.message_type = msg_type_atom; ev.xclient.format = 32; - ev.xclient.data.l[0] = GET_QT_X_TIME(); + ev.xclient.data.l[0] = get_tqt_x_time(); ev.xclient.data.l[1] = topmenu_space->width(); ev.xclient.data.l[2] = topmenu_space->height(); ev.xclient.data.l[3] = 0; @@ -802,7 +802,7 @@ TQRect Client::adjustedClientArea( const TQRect &desktopArea, const TQRect& area // HACK: workarea handling is not xinerama aware, so if this strut // reserves place at a xinerama edge that's inside the virtual screen, // ignore the strut for workspace setting. - if( area == kapp->desktop()->geometry()) + if( area == tdeApp->desktop()->geometry()) { if( stareaL.left() < screenarea.left()) stareaL = TQRect(); @@ -1451,6 +1451,8 @@ const TQPoint Client::calculateGravitation( bool invert, int gravity ) const void Client::configureRequest( int value_mask, int rx, int ry, int rw, int rh, int gravity, bool from_tool ) { + inhibitConfigureRequests = true; + configureRequestTimer->start(100, true); if( gravity == 0 ) // default (nonsense) value for the argument gravity = xSizeHint.win_gravity; if( value_mask & ( CWX | CWY )) @@ -1690,7 +1692,7 @@ bool Client::isMaximizable() const return false; } if ( maximizeMode() != MaximizeRestore ) - return TRUE; + return true; TQSize max = maxSize(); #if 0 if( max.width() < 32767 || max.height() < 32767 ) // sizes are 16bit with X @@ -1913,12 +1915,12 @@ void Client::changeMaximize( bool vertical, bool horizontal, bool adjust ) TQRect clientArea = workspace()->clientArea( MaximizeArea, this ); // save sizes for restoring, if maximalizing - if( !adjust && !( y() == clientArea.top() && height() == clientArea.height())) + if( !activeTiled && !adjust && !( y() == clientArea.top() && height() == clientArea.height())) { geom_restore.setTop( y()); geom_restore.setHeight( height()); } - if( !adjust && !( x() == clientArea.left() && width() == clientArea.width())) + if( !activeTiled && !adjust && !( x() == clientArea.left() && width() == clientArea.width())) { geom_restore.setLeft( x()); geom_restore.setWidth( width()); @@ -2311,9 +2313,9 @@ bool Client::startMoveResize() XMapRaised( tqt_xdisplay(), move_resize_grab_window ); if( XGrabPointer( tqt_xdisplay(), move_resize_grab_window, False, ButtonPressMask | ButtonReleaseMask | PointerMotionMask | EnterWindowMask | LeaveWindowMask, - GrabModeAsync, GrabModeAsync, move_resize_grab_window, cursor.handle(), GET_QT_X_TIME() ) == Success ) + GrabModeAsync, GrabModeAsync, move_resize_grab_window, cursor.handle(), get_tqt_x_time() ) == Success ) has_grab = true; - if( XGrabKeyboard( tqt_xdisplay(), frameId(), False, GrabModeAsync, GrabModeAsync, GET_QT_X_TIME() ) == Success ) + if( XGrabKeyboard( tqt_xdisplay(), frameId(), False, GrabModeAsync, GrabModeAsync, get_tqt_x_time() ) == Success ) has_grab = true; if( !has_grab ) // at least one grab is necessary in order to be able to finish move/resize { @@ -2326,26 +2328,19 @@ bool Client::startMoveResize() moveResizeMode = true; initialMoveResizeGeom = geometry(); - if (activeTiled) + if ( maximizeMode() != MaximizeRestore ) { - // Restore original geometry - activeTiled = false; if (options->resetMaximizedWindowGeometry() && isMove()) { /* Original geometry might be smaller than the tiled one, so the * mouse pointer might appear off-window when untiling. * Here we center the window horizontally under the mouse pointer. * This should work with most window decorations. */ - activeTiledOrigGeom.moveLeft(TQCursor::pos().x() - (activeTiledOrigGeom.width() / 2)); - moveOffset.setX(TQCursor::pos().x() - activeTiledOrigGeom.x()); + geom_restore.moveLeft(TQCursor::pos().x() - (geom_restore.width() / 2)); + moveOffset.setX(TQCursor::pos().x() - geom_restore.x()); - setGeometry(activeTiledOrigGeom); - } - } + setGeometry(geom_restore); - if ( maximizeMode() != MaximizeRestore ) - { - if (options->resetMaximizedWindowGeometry() && isMove()) { maximize(MaximizeRestore); } else { @@ -2374,14 +2369,14 @@ bool Client::startMoveResize() || ( isResize() && rules()->checkMoveResizeMode( options->resizeMode ) != Options::Opaque ) ) { grabXServer(); - kapp->sendPostedEvents(); + tdeApp->sendPostedEvents(); // we have server grab -> nothing should cause paint events // unfortunately, that's not completely true, Qt may generate // paint events on some widgets due to FocusIn(?) // eat them, otherwise XOR painting will be broken (#58054) // paint events for the geometrytip need to be allowed, though // eater = new EatAllPaintEvents; -// not needed anymore? kapp->installEventFilter( eater ); +// not needed anymore? tdeApp->installEventFilter( eater ); } Notify::raise( isResize() ? Notify::ResizeStart : Notify::MoveStart ); @@ -2409,7 +2404,7 @@ void Client::finishMoveResize( bool cancel ) kdDebug() <<"finishing moveresize in active mode, cancel is " << cancel << endl; activeMaximizing = false; activeTiled = true; - activeTiledOrigGeom = initialMoveResizeGeom; + geom_restore = initialMoveResizeGeom; switch (activeMode) { case ActiveMaximizeMode: { @@ -2423,7 +2418,6 @@ void Client::finishMoveResize( bool cancel ) setGeometry(cancel ? initialMoveResizeGeom : activeBorderMaximizeGeometry()); } - activeTiledOrigGeom.moveTopLeft(rect().topLeft()); } checkMaximizeGeometry(); @@ -2448,8 +2442,8 @@ void Client::leaveMoveResize() if ( ( isMove() && rules()->checkMoveResizeMode( options->moveMode ) != Options::Opaque ) || ( isResize() && rules()->checkMoveResizeMode( options->resizeMode ) != Options::Opaque ) ) ungrabXServer(); - XUngrabKeyboard( tqt_xdisplay(), GET_QT_X_TIME() ); - XUngrabPointer( tqt_xdisplay(), GET_QT_X_TIME() ); + XUngrabKeyboard( tqt_xdisplay(), get_tqt_x_time() ); + XUngrabPointer( tqt_xdisplay(), get_tqt_x_time() ); XDestroyWindow( tqt_xdisplay(), move_resize_grab_window ); move_resize_grab_window = None; workspace()->setClientIsMoving(0); @@ -2710,7 +2704,7 @@ void Client::handleMoveResize(int x, int y, int x_root, int y_root) { } } if (isMove()) { - workspace()->checkActiveBorder(globalPos, GET_QT_X_TIME()); + workspace()->checkActiveBorder(globalPos, get_tqt_x_time()); } } @@ -2724,6 +2718,16 @@ ActiveMaximizingMode Client::activeBorderMode() const return activeMode; } +void Client::setActiveBorderPos( TQPoint pos ) +{ + activePos = pos; +} + +TQPoint Client::activeBorderPos() const +{ + return activePos; +} + void Client::setActiveBorder(ActiveBorder border) { currentActiveBorder = border; } @@ -2764,7 +2768,7 @@ void Client::cancelActiveBorderMaximizing() { TQRect Client::activeBorderMaximizeGeometry() { TQRect ret; - TQRect max = workspace()->clientArea(MaximizeArea, TQCursor::pos(), workspace()->currentDesktop()); + TQRect max = workspace()->clientArea(MaximizeArea, activePos, workspace()->currentDesktop()); switch (activeBorderMode()) { case ActiveMaximizeMode: @@ -2826,4 +2830,19 @@ TQRect Client::activeBorderMaximizeGeometry() return ret; } +void Client::tileToBorder(ActiveBorder border) { + if (!isResizable()) return; + activeTiled = true; + if (maximizeMode() == MaximizeRestore) + geom_restore = geometry(); + setActiveBorderMode(ActiveTilingMode); + setActiveBorderPos(TQCursor().pos()); + setActiveBorder(border); + TQRect geo = activeBorderMaximizeGeometry(); + if (geo.isValid() && !geo.isEmpty()) { + setGeometry(geo); + } + workspace()->raiseClient(this); +} + } // namespace |