From f18b13c902b99a19b7098c735da2ebae9fc62dae Mon Sep 17 00:00:00 2001 From: Carsten Haitzler Date: Mon, 4 Jul 2005 08:19:44 +0000 Subject: [PATCH] implemented position and size locking for user and client. now for more locks to be implemented... SVN revision: 15635 --- TODO | 2 ++ src/bin/e_border.c | 22 +++++++++++++++++----- 2 files changed, 19 insertions(+), 5 deletions(-) diff --git a/TODO b/TODO index 884f13aae..6c4f6361e 100644 --- a/TODO +++ b/TODO @@ -40,6 +40,8 @@ Some of the things (in very short form) that need to be done to E17... ESSENTIAL FEATURES ------------------------------------------------------------------------------- +* add window placement optiond like place at pointer +* add option like "focus all new windows" etc. * shaded windows should not allow border changes by the user * if a border is borderless it should not be allowed to be shaded (padl/r/t/b is 0) diff --git a/src/bin/e_border.c b/src/bin/e_border.c index 2de4b202b..a136d5596 100644 --- a/src/bin/e_border.c +++ b/src/bin/e_border.c @@ -1581,6 +1581,7 @@ e_border_clients_get() void e_border_act_move_begin(E_Border *bd, Ecore_X_Event_Mouse_Button_Down *ev) { + if (bd->lock_user_location) return; if (!bd->moving) { if (!_e_border_move_begin(bd)) @@ -1611,6 +1612,7 @@ e_border_act_move_end(E_Border *bd, Ecore_X_Event_Mouse_Button_Up *ev) void e_border_act_resize_begin(E_Border *bd, Ecore_X_Event_Mouse_Button_Down *ev) { + if (bd->lock_user_size) return; if (bd->resize_mode == RESIZE_NONE) { if (!_e_border_resize_begin(bd)) @@ -2165,10 +2167,18 @@ _e_border_cb_window_configure_request(void *data, int ev_type, void *ev) e->value_mask & ECORE_X_WINDOW_CONFIGURE_MASK_H, e->w, e->h); #endif - e_border_move_resize(bd, x, y, w, h); + if ((!bd->lock_client_location) && (!bd->lock_client_size)) + e_border_move_resize(bd, x, y, w, h); + else if (!bd->lock_client_location) + e_border_move(bd, x, y); + else if (!bd->lock_client_size) + e_border_resize(bd, w, h); } else - e_border_move(bd, x, y); + { + if (!bd->lock_client_location) + e_border_move(bd, x, y); + } } else if ((e->value_mask & ECORE_X_WINDOW_CONFIGURE_MASK_W) || (e->value_mask & ECORE_X_WINDOW_CONFIGURE_MASK_H)) @@ -2188,7 +2198,8 @@ _e_border_cb_window_configure_request(void *data, int ev_type, void *ev) e->value_mask & ECORE_X_WINDOW_CONFIGURE_MASK_H, e->w, e->h); #endif - e_border_resize(bd, w, h); + if (!bd->lock_client_size) + e_border_resize(bd, w, h); } if ((e->value_mask & ECORE_X_WINDOW_CONFIGURE_MASK_STACK_MODE) && (e->value_mask & ECORE_X_WINDOW_CONFIGURE_MASK_SIBLING)) @@ -5471,7 +5482,8 @@ _e_border_resize_begin(E_Border *bd) int w, h; e_border_raise(bd); - if ((bd->shaded) || (bd->shading) || (bd->maximized) || (bd->fullscreen)) + if ((bd->shaded) || (bd->shading) || (bd->maximized) || (bd->fullscreen) || + (bd->lock_user_size)) return 0; if ((bd->client.icccm.base_w >= 0) && @@ -5543,7 +5555,7 @@ static int _e_border_move_begin(E_Border *bd) { e_border_raise(bd); - if ((bd->maximized) || (bd->fullscreen)) + if ((bd->maximized) || (bd->fullscreen) || (bd->lock_user_location)) return 0; if (grabbed)