display: Keep track of the original tile state during drag
Drag operations may be cancelled, in which case the dragged window should be restored to the position/state it had when the drag was initialized. In order to do this for tiled states, the original state has to be saved during the operation. https://bugzilla.gnome.org/show_bug.cgi?id=639988
This commit is contained in:
parent
58068260a5
commit
286160646b
@ -77,6 +77,13 @@ typedef enum {
|
|||||||
*/
|
*/
|
||||||
#define N_IGNORED_SERIALS 4
|
#define N_IGNORED_SERIALS 4
|
||||||
|
|
||||||
|
typedef enum {
|
||||||
|
META_TILE_NONE,
|
||||||
|
META_TILE_LEFT,
|
||||||
|
META_TILE_RIGHT,
|
||||||
|
META_TILE_MAXIMIZED
|
||||||
|
} MetaTileMode;
|
||||||
|
|
||||||
struct _MetaDisplay
|
struct _MetaDisplay
|
||||||
{
|
{
|
||||||
GObject parent_instance;
|
GObject parent_instance;
|
||||||
@ -179,6 +186,7 @@ struct _MetaDisplay
|
|||||||
int grab_anchor_root_x;
|
int grab_anchor_root_x;
|
||||||
int grab_anchor_root_y;
|
int grab_anchor_root_y;
|
||||||
MetaRectangle grab_anchor_window_pos;
|
MetaRectangle grab_anchor_window_pos;
|
||||||
|
MetaTileMode grab_tile_mode;
|
||||||
int grab_latest_motion_x;
|
int grab_latest_motion_x;
|
||||||
int grab_latest_motion_y;
|
int grab_latest_motion_y;
|
||||||
gulong grab_mask;
|
gulong grab_mask;
|
||||||
|
@ -553,6 +553,7 @@ meta_display_open (void)
|
|||||||
the_display->grab_window = NULL;
|
the_display->grab_window = NULL;
|
||||||
the_display->grab_screen = NULL;
|
the_display->grab_screen = NULL;
|
||||||
the_display->grab_resize_popup = NULL;
|
the_display->grab_resize_popup = NULL;
|
||||||
|
the_display->grab_tile_mode = META_TILE_NONE;
|
||||||
|
|
||||||
the_display->grab_edge_resistance_data = NULL;
|
the_display->grab_edge_resistance_data = NULL;
|
||||||
|
|
||||||
@ -3580,6 +3581,7 @@ meta_display_begin_grab_op (MetaDisplay *display,
|
|||||||
display->grab_xwindow = grab_xwindow;
|
display->grab_xwindow = grab_xwindow;
|
||||||
display->grab_button = button;
|
display->grab_button = button;
|
||||||
display->grab_mask = modmask;
|
display->grab_mask = modmask;
|
||||||
|
display->grab_tile_mode = window->tile_mode;
|
||||||
display->grab_anchor_root_x = root_x;
|
display->grab_anchor_root_x = root_x;
|
||||||
display->grab_anchor_root_y = root_y;
|
display->grab_anchor_root_y = root_y;
|
||||||
display->grab_latest_motion_x = root_x;
|
display->grab_latest_motion_x = root_x;
|
||||||
@ -3776,6 +3778,7 @@ meta_display_end_grab_op (MetaDisplay *display,
|
|||||||
display->grab_window = NULL;
|
display->grab_window = NULL;
|
||||||
display->grab_screen = NULL;
|
display->grab_screen = NULL;
|
||||||
display->grab_xwindow = None;
|
display->grab_xwindow = None;
|
||||||
|
display->grab_tile_mode = META_TILE_NONE;
|
||||||
display->grab_op = META_GRAB_OP_NONE;
|
display->grab_op = META_GRAB_OP_NONE;
|
||||||
|
|
||||||
if (display->grab_resize_popup)
|
if (display->grab_resize_popup)
|
||||||
|
@ -61,13 +61,6 @@ typedef enum {
|
|||||||
|
|
||||||
#define NUMBER_OF_QUEUES 3
|
#define NUMBER_OF_QUEUES 3
|
||||||
|
|
||||||
typedef enum {
|
|
||||||
META_TILE_NONE,
|
|
||||||
META_TILE_LEFT,
|
|
||||||
META_TILE_RIGHT,
|
|
||||||
META_TILE_MAXIMIZED
|
|
||||||
} MetaTileMode;
|
|
||||||
|
|
||||||
struct _MetaWindow
|
struct _MetaWindow
|
||||||
{
|
{
|
||||||
GObject parent_instance;
|
GObject parent_instance;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user