diff options
author | Mike Blumenkrantz <zmike@osg.samsung.com> | 2016-04-04 14:02:39 -0400 |
---|---|---|
committer | Mike Blumenkrantz <zmike@osg.samsung.com> | 2016-04-04 14:02:39 -0400 |
commit | 687b5fb6b69f4847c2d68aa0d047955d771ca873 (patch) | |
tree | 84ec29ca7daaf1a14bda4cdf00ebe57443389f6b | |
parent | 6617a8440cebffa0c9553eb8e58cc5ecebc20763 (diff) | |
download | enlightenment-687b5fb6b69f4847c2d68aa0d047955d771ca873.tar.gz |
set maximizing flag during maximize resizing for wl clients
a helpful indicator for when to avoid potentially leaking positioning info
-rw-r--r-- | src/bin/e_comp_wl.c | 27 | ||||
-rw-r--r-- | src/bin/e_comp_wl.h | 1 |
2 files changed, 26 insertions, 2 deletions
diff --git a/src/bin/e_comp_wl.c b/src/bin/e_comp_wl.c index 8a4009ea81..f47cc1f663 100644 --- a/src/bin/e_comp_wl.c +++ b/src/bin/e_comp_wl.c @@ -588,6 +588,15 @@ _e_comp_wl_evas_cb_move(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_U } static void +_e_comp_wl_evas_cb_maximize_pre(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) +{ + E_Client *ec = data; + + if (!e_object_is_del(E_OBJECT(ec))) + ec->comp_data->maximizing = 1; +} + +static void _e_comp_wl_evas_cb_resize(void *data, Evas_Object *obj EINA_UNUSED, void *event EINA_UNUSED) { E_Client *ec; @@ -662,6 +671,16 @@ _e_comp_wl_evas_cb_state_update(void *data, Evas_Object *obj EINA_UNUSED, void * } static void +_e_comp_wl_evas_cb_maximize_done(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) +{ + E_Client *ec = data; + + if (e_object_is_del(E_OBJECT(ec))) return; + ec->comp_data->maximizing = 0; + _e_comp_wl_evas_cb_state_update(ec, NULL, NULL); +} + +static void _e_comp_wl_evas_cb_delete_request(void *data, Evas_Object *obj EINA_UNUSED, void *event EINA_UNUSED) { E_Client *ec = data; @@ -783,10 +802,14 @@ _e_comp_wl_client_evas_init(E_Client *ec) { evas_object_smart_callback_add(ec->frame, "client_resize", _e_comp_wl_evas_cb_resize, ec); + evas_object_smart_callback_add(ec->frame, "maximize_pre", + _e_comp_wl_evas_cb_maximize_pre, ec); + evas_object_smart_callback_add(ec->frame, "unmaximize_pre", + _e_comp_wl_evas_cb_maximize_pre, ec); evas_object_smart_callback_add(ec->frame, "maximize_done", - _e_comp_wl_evas_cb_state_update, ec); + _e_comp_wl_evas_cb_maximize_done, ec); evas_object_smart_callback_add(ec->frame, "unmaximize_done", - _e_comp_wl_evas_cb_state_update, ec); + _e_comp_wl_evas_cb_maximize_done, ec); evas_object_smart_callback_add(ec->frame, "fullscreen", _e_comp_wl_evas_cb_state_update, ec); evas_object_smart_callback_add(ec->frame, "unfullscreen", diff --git a/src/bin/e_comp_wl.h b/src/bin/e_comp_wl.h index d6a52d35cc..84fbd48109 100644 --- a/src/bin/e_comp_wl.h +++ b/src/bin/e_comp_wl.h @@ -314,6 +314,7 @@ struct _E_Comp_Wl_Client_Data Eina_Bool frame_update : 1; Eina_Bool cursor : 1; Eina_Bool moved : 1; + Eina_Bool maximizing : 1; }; struct _E_Comp_Wl_Output |