[Xfce4-commits] <xfwm4:master> Revert PointerMotionHintMask (commit 7c095f5f), Add special treatment for full de-maximization, Do not always configure windows on tiling to avoid redraw artifacts when opaque-move is disabled.
Olivier Fourdan
noreply at xfce.org
Mon Feb 13 23:12:02 CET 2012
Updating branch refs/heads/master
to 2e5da52da598f0146b3869ad5763927686f87466 (commit)
from ff9bfd5ebfe7e7dad4751448034c4e21588aee63 (commit)
commit 2e5da52da598f0146b3869ad5763927686f87466
Author: Olivier Fourdan <ofourdan at redhat.com>
Date: Mon Feb 13 23:06:40 2012 +0100
Revert PointerMotionHintMask (commit 7c095f5f),
Add special treatment for full de-maximization,
Do not always configure windows on tiling to avoid redraw artifacts when opaque-move is disabled.
src/client.c | 52 +++++++++++++++++++++++++++++++++++-----------------
src/events.c | 8 ++++----
src/moveresize.c | 9 ++++-----
3 files changed, 43 insertions(+), 26 deletions(-)
diff --git a/src/client.c b/src/client.c
index 1149cb2..de741a6 100644
--- a/src/client.c
+++ b/src/client.c
@@ -3033,6 +3033,25 @@ clientRemoveMaximizeFlag (Client * c)
static void
clientNewMaxState (Client * c, XWindowChanges *wc, int mode)
{
+ if (FLAG_TEST_ALL (mode, CLIENT_FLAG_MAXIMIZED))
+ {
+ /*
+ * We need to test specifically for full de-maximization
+ * otherwise it's too confusing when the window changes
+ * from horiz to vertical maximization or vice-versa.
+ */
+ if (FLAG_TEST (c->flags, CLIENT_FLAG_MAXIMIZED))
+ {
+ FLAG_UNSET (c->flags, CLIENT_FLAG_MAXIMIZED);
+ wc->x = c->old_x;
+ wc->y = c->old_y;
+ wc->width = c->old_width;
+ wc->height = c->old_height;
+
+ return;
+ }
+ }
+
if (FLAG_TEST (mode, CLIENT_FLAG_MAXIMIZED_HORIZ))
{
if (!FLAG_TEST (c->flags, CLIENT_FLAG_MAXIMIZED_HORIZ))
@@ -3187,16 +3206,14 @@ clientToggleMaximized (Client * c, int mode, gboolean restore_position)
wc.width = c->width;
wc.height = c->height;
- if (restore_position && !FLAG_TEST (c->flags, CLIENT_FLAG_MAXIMIZED_VERT))
- {
- c->old_y = c->y;
- c->old_height = c->height;
- }
-
- if (restore_position && !FLAG_TEST (c->flags, CLIENT_FLAG_MAXIMIZED_HORIZ))
+ if (restore_position &&
+ FLAG_TEST (mode, CLIENT_FLAG_MAXIMIZED) &&
+ !FLAG_TEST (c->flags, CLIENT_FLAG_MAXIMIZED))
{
c->old_x = c->x;
+ c->old_y = c->y;
c->old_width = c->width;
+ c->old_height = c->height;
}
/* 1) Compute the new state */
@@ -3229,7 +3246,7 @@ clientToggleMaximized (Client * c, int mode, gboolean restore_position)
}
void
-clientTile (Client * c, gint cx, gint cy, tilePositionType tile)
+clientTile (Client * c, gint cx, gint cy, tilePositionType tile, gboolean send_configure)
{
DisplayInfo *display_info;
ScreenInfo *screen_info;
@@ -3287,16 +3304,17 @@ clientTile (Client * c, gint cx, gint cy, tilePositionType tile)
c->height = wc.height;
c->width = wc.width;
- setNetFrameExtents (display_info,
- c->window,
- frameTop (c),
- frameLeft (c),
- frameRight (c),
- frameBottom (c));
-
- clientSetNetActions (c);
- if (FLAG_TEST (c->xfwm_flags, XFWM_FLAG_MANAGED))
+ if (send_configure)
{
+ setNetFrameExtents (display_info,
+ c->window,
+ frameTop (c),
+ frameLeft (c),
+ frameRight (c),
+ frameBottom (c));
+
+ clientSetNetActions (c);
+
clientConfigure (c, &wc, CWWidth | CWHeight | CWX | CWY, CFG_FORCE_REDRAW);
}
clientSetNetState (c);
diff --git a/src/events.c b/src/events.c
index 6ef3b22..df30ff9 100644
--- a/src/events.c
+++ b/src/events.c
@@ -433,22 +433,22 @@ handleKeyPress (DisplayInfo *display_info, XKeyEvent * ev)
case KEY_TILE_DOWN:
clientTile (c, frameX (c) + frameWidth (c) / 2,
frameY (c) + frameHeight (c) / 2,
- TILE_DOWN);
+ TILE_DOWN, TRUE);
break;
case KEY_TILE_LEFT:
clientTile (c, frameX (c) + frameWidth (c) / 2,
frameY (c) + frameHeight (c) / 2,
- TILE_LEFT);
+ TILE_LEFT, TRUE);
break;
case KEY_TILE_RIGHT:
clientTile (c, frameX (c) + frameWidth (c) / 2,
frameY (c) + frameHeight (c) / 2,
- TILE_RIGHT);
+ TILE_RIGHT, TRUE);
break;
case KEY_TILE_UP:
clientTile (c, frameX (c) + frameWidth (c) / 2,
frameY (c) + frameHeight (c) / 2,
- TILE_UP);
+ TILE_UP, TRUE);
break;
default:
break;
diff --git a/src/moveresize.c b/src/moveresize.c
index 40fe38a..8fe4390 100644
--- a/src/moveresize.c
+++ b/src/moveresize.c
@@ -51,7 +51,6 @@
#define MOVERESIZE_EVENT_MASK \
PointerMotionMask | \
- PointerMotionHintMask | \
ButtonMotionMask | \
ButtonReleaseMask | \
LeaveWindowMask
@@ -778,28 +777,28 @@ clientMoveTile (Client *c, XMotionEvent *xevent)
(y >= disp_y - 1) && (y < disp_max_y + 1))
{
TRACE ("event (%i,%i) monitor (%i,%i) %ix%i tile LEFT", x, y, disp_x, disp_y, disp_max_x, disp_max_y);
- clientTile (c, x, y, TILE_LEFT);
+ clientTile (c, x, y, TILE_LEFT, !screen_info->params->box_move);
return TRUE;
}
if ((x >= disp_max_x - dist) && (x < disp_max_x + 1) &&
(y >= disp_y - 1) && (y < disp_max_y + 1))
{
TRACE ("event (%i,%i) monitor (%i,%i) %ix%i tile RIGHT", x, y, disp_x, disp_y, disp_max_x, disp_max_y);
- clientTile (c, x, y, TILE_RIGHT);
+ clientTile (c, x, y, TILE_RIGHT, !screen_info->params->box_move);
return TRUE;
}
if ((x >= disp_x - 1) && (x < disp_max_x + 1) &&
(y >= disp_y - 1) && (y < disp_y + dist))
{
TRACE ("event (%i,%i) monitor (%i,%i) %ix%i tile UP", x, y, disp_x, disp_y, disp_max_x, disp_max_y);
- clientTile (c, x, y, TILE_UP);
+ clientTile (c, x, y, TILE_UP, !screen_info->params->box_move);
return TRUE;
}
if ((x >= disp_x - 1) && (x < disp_max_x + 1) &&
(y >= disp_max_y - dist) && (y < disp_max_y + 1))
{
TRACE ("event (%i,%i) monitor (%i,%i) %ix%i tile DOWN", x, y, disp_x, disp_y, disp_max_x, disp_max_y);
- clientTile (c, x, y, TILE_DOWN);
+ clientTile (c, x, y, TILE_DOWN, !screen_info->params->box_move);
return TRUE;
}
More information about the Xfce4-commits
mailing list