[Xfce4-commits] [xfce/xfwm4] 02/03: Fix to erratic unmaximization by dragging
noreply at xfce.org
noreply at xfce.org
Fri Jan 19 19:15:56 CET 2018
This is an automated email from the git hooks/post-receive script.
o l i v i e r p u s h e d a c o m m i t t o b r a n c h m a s t e r
in repository xfce/xfwm4.
commit 84b905b7854bc04b00b681588b8d9cbd7f29493e
Author: Adam Purkrt <adam at purkrt.net>
Date: Thu Jan 18 19:52:15 2018 +0100
Fix to erratic unmaximization by dragging
Bug: 11960
This patch fixes the erratic behaviour when unmaximizing a window by
dragging it from the absolute top.
clientToggleMaximized is now called with each motion event if
a window is maximized, hence it is always unmaximized before possibly
toggling maximization again in clientTile further down.
---
src/moveresize.c | 58 +++++++++++++++++++++++---------------------------------
1 file changed, 24 insertions(+), 34 deletions(-)
diff --git a/src/moveresize.c b/src/moveresize.c
index 8a23e76..3a75400 100644
--- a/src/moveresize.c
+++ b/src/moveresize.c
@@ -1032,47 +1032,37 @@ clientMoveEventFilter (XfwmEvent *event, gpointer data)
if (FLAG_TEST (c->flags, CLIENT_FLAG_RESTORE_SIZE_POS))
{
+ gboolean size_changed;
+ /* to keep the distance from the edges of the window proportional. */
+ double xratio, yratio;
- if ((ABS (event->motion.x_root - passdata->mx) > 15) ||
- (ABS (event->motion.y_root - passdata->my) > 15))
- {
- gboolean size_changed;
- /* to keep the distance from the edges of the window proportional. */
- double xratio, yratio;
+ xratio = (event->motion.x_root - frameExtentX (c)) / (double) frameExtentWidth (c);
+ yratio = (event->motion.y_root - frameExtentY (c)) / (double) frameExtentHeight (c);
- xratio = (event->motion.x_root - frameExtentX (c)) / (double) frameExtentWidth (c);
- yratio = (event->motion.y_root - frameExtentY (c)) / (double) frameExtentHeight (c);
+ size_changed = clientToggleMaximized (c, c->flags & CLIENT_FLAG_MAXIMIZED, FALSE);
+ if (clientRestoreSizePos (c))
+ {
+ size_changed = TRUE;
+ }
+ if (size_changed)
+ {
+ passdata->move_resized = TRUE;
- size_changed = clientToggleMaximized (c, c->flags & CLIENT_FLAG_MAXIMIZED, FALSE);
- if (clientRestoreSizePos (c))
+ passdata->ox = c->x;
+ passdata->mx = frameExtentX (c) + passdata->px;
+ if ((passdata->mx < frameExtentX (c)) || (passdata->mx > frameExtentX (c) + frameExtentWidth (c)))
{
- size_changed = TRUE;
+ passdata->mx = CLAMP(frameExtentX (c) + frameExtentWidth (c) * xratio, frameExtentX (c), frameExtentX (c) + frameExtentWidth (c));
}
- if (size_changed)
- {
- passdata->move_resized = TRUE;
-
- passdata->ox = c->x;
- passdata->mx = frameExtentX (c) + passdata->px;
- if ((passdata->mx < frameExtentX (c)) || (passdata->mx > frameExtentX (c) + frameExtentWidth (c)))
- {
- passdata->mx = CLAMP(frameExtentX (c) + frameExtentWidth (c) * xratio, frameExtentX (c), frameExtentX (c) + frameExtentWidth (c));
- }
- passdata->oy = c->y;
- passdata->my = frameExtentY (c) + passdata->py;
- if ((passdata->my < frameExtentY (c)) || (passdata->my > frameExtentY (c) + frameExtentHeight (c)))
- {
- passdata->my = CLAMP(frameExtentY (c) + frameExtentHeight (c) * yratio, frameExtentY (c), frameExtentY (c) + frameExtentHeight (c));
- }
-
- passdata->configure_flags = CFG_FORCE_REDRAW;
+ passdata->oy = c->y;
+ passdata->my = frameExtentY (c) + passdata->py;
+ if ((passdata->my < frameExtentY (c)) || (passdata->my > frameExtentY (c) + frameExtentHeight (c)))
+ {
+ passdata->my = CLAMP(frameExtentY (c) + frameExtentHeight (c) * yratio, frameExtentY (c), frameExtentY (c) + frameExtentHeight (c));
}
- }
- else
- {
- event->motion.x_root = c->x - passdata->ox + passdata->mx;
- event->motion.y_root = c->y - passdata->oy + passdata->my;
+
+ passdata->configure_flags = CFG_FORCE_REDRAW;
}
}
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.
More information about the Xfce4-commits
mailing list