summaryrefslogtreecommitdiffstats
path: root/twin/geometry.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'twin/geometry.cpp')
-rw-r--r--twin/geometry.cpp133
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