This is an automated email from the git hooks/post-receive script. olivier pushed a commit to branch master in repository xfce/xfwm4.
commit a596e12cae86a653993570ed871afb9ced1a8f6e Author: Cédric Leporcq <ced...@gmail.com> Date: Sun Jun 22 14:03:03 2014 +0200 Improve corner tiling on move --- src/moveresize.c | 65 +++++++++++++++++++++++++++++++++++++++++++----------- 1 file changed, 52 insertions(+), 13 deletions(-) diff --git a/src/moveresize.c b/src/moveresize.c index 558fcb2..a217ab4 100644 --- a/src/moveresize.c +++ b/src/moveresize.c @@ -57,6 +57,7 @@ LeaveWindowMask #define TILE_DISTANCE 10 +#define BORDER_TILE_LENGTH_RELATIVE 5 #define use_xor_move(screen_info) (screen_info->params->box_move && !screen_info->compositor_active) #define use_xor_resize(screen_info) (screen_info->params->box_resize && !screen_info->compositor_active) @@ -761,7 +762,7 @@ clientMoveTile (Client *c, XMotionEvent *xevent) { ScreenInfo *screen_info; GdkRectangle rect; - int x, y, disp_x, disp_y, disp_max_x, disp_max_y, dist; + int x, y, disp_x, disp_y, disp_max_x, disp_max_y, dist, dist_corner; NetWmDesktopLayout layout; screen_info = c->screen_info; @@ -782,23 +783,61 @@ clientMoveTile (Client *c, XMotionEvent *xevent) layout = screen_info->desktop_layout; dist = MIN (TILE_DISTANCE, frameDecorationTop (screen_info) / 2); + dist_corner = (MIN (disp_max_x, disp_max_y)) / BORDER_TILE_LENGTH_RELATIVE; - if ((x >= disp_x - 1) && (x < disp_x + dist) && + /* make sure the mouse position is inside the screen edges */ + if ((x >= disp_x - 1) && (x < disp_max_x + 1) && (y >= disp_y - 1) && (y < disp_max_y + 1)) { - return clientTile (c, x, y, TILE_LEFT, !screen_info->params->box_move); - } + /* tile window depending on the mouse position on the screen */ - if ((x >= disp_max_x - dist) && (x < disp_max_x + 1) && - (y >= disp_y - 1) && (y < disp_max_y + 1)) - { - return clientTile (c, x, y, TILE_RIGHT, !screen_info->params->box_move); - } + if ((y > disp_y + dist_corner) && (y < disp_max_y - dist_corner)) + { + /* mouse pointer on left edge excluding corners */ + if (x < disp_x + dist) + { + return clientTile (c, x, y, TILE_LEFT, !screen_info->params->box_move); + } + /* mouse pointer on right edge excluding corners */ + if (x >= disp_max_x - dist) + { + return clientTile (c, x, y, TILE_RIGHT, !screen_info->params->box_move); + } + } - if ((x >= disp_x - 1) && (x < disp_max_x + 1) && - (y >= disp_y - 1) && (y < disp_y + dist)) - { - return clientToggleMaximized (c, CLIENT_FLAG_MAXIMIZED, FALSE); + if ((x >= disp_x + dist_corner) && (x < disp_max_x - dist_corner)) + { + /* mouse pointer on top edge excluding corners */ + if (y < disp_y + dist) + { + return clientToggleMaximized (c, CLIENT_FLAG_MAXIMIZED, FALSE); + } + } + + /* mouse pointer on top left corner */ + if (((x < disp_x + dist_corner) && (y < disp_y + dist)) + || ((x < disp_x + dist) && (y < disp_y + dist_corner))) + { + return clientTile (c, x, y, TILE_UP_LEFT, !screen_info->params->box_move); + } + /* mouse pointer on top right corner */ + if (((x >= disp_max_x - dist_corner) && (y < disp_y + dist)) + || ((x >= disp_max_x - dist) && (y < disp_y + dist_corner))) + { + return clientTile (c, x, y, TILE_UP_RIGHT, !screen_info->params->box_move); + } + /* mouse pointer on bottom left corner */ + if (((x < disp_x + dist_corner) && (y >= disp_max_y - dist)) + || ((x < disp_x + dist) && (y >= disp_max_y - dist_corner))) + { + return clientTile (c, x, y, TILE_DOWN_LEFT, !screen_info->params->box_move); + } + /* mouse pointer on bottom right corner */ + if (((x >= disp_max_x - dist_corner) && (y >= disp_max_y - dist)) + || ((x >= disp_max_x - dist) && (y >= disp_max_y - dist_corner))) + { + return clientTile (c, x, y, TILE_DOWN_RIGHT, !screen_info->params->box_move); + } } return FALSE; -- To stop receiving notification emails like this one, please contact the administrator of this repository. _______________________________________________ Xfce4-commits mailing list Xfce4-commits@xfce.org https://mail.xfce.org/mailman/listinfo/xfce4-commits