discomfitor pushed a commit to branch master.

http://git.enlightenment.org/enlightenment/modules/desksanity.git/commit/?id=81101718581e44327a4a47c63ba18749ff3c2792

commit 81101718581e44327a4a47c63ba18749ff3c2792
Author: Mike Blumenkrantz <[email protected]>
Date:   Tue Aug 19 17:46:17 2014 -0400

    fix maximize of fullscreen clients
---
 src/maximize.c | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

diff --git a/src/maximize.c b/src/maximize.c
index 77b40e2..7b0314f 100644
--- a/src/maximize.c
+++ b/src/maximize.c
@@ -17,6 +17,7 @@ _ds_unmaximize_post(void *data, Evas_Object *obj, void 
*event_info EINA_UNUSED)
    evas_object_geometry_get(ec->frame, &x, &y, NULL, NULL);
 
    rect = evas_object_data_del(obj, "__DSUMAX");
+   if (!rect) return;
    evas_object_geometry_set(obj, rect->x, rect->y, rect->w, rect->h);
    free(rect);
    efx_resize(ec->frame, EFX_EFFECT_SPEED_SINUSOIDAL, EFX_POINT(x, y), w, h, 
time, NULL, NULL);
@@ -79,6 +80,17 @@ _ds_maximize(void *data, Evas_Object *obj EINA_UNUSED, void 
*event_info EINA_UNU
 }
 
 static void
+_ds_fullscreen(void *data, Evas_Object *obj EINA_UNUSED, void *event_info 
EINA_UNUSED)
+{
+   E_Client *ec = data;
+
+   evas_object_data_del(ec->frame, "__DSMAX");
+   free(evas_object_data_del(ec->frame, "__DSUMAX"));
+   ec->maximize_override = 0;
+   efx_resize_stop(ec->frame);
+}
+
+static void
 _ds_maximize_check(E_Client *ec)
 {
    if (e_client_util_ignored_get(ec)) return;
@@ -86,6 +98,7 @@ _ds_maximize_check(E_Client *ec)
    evas_object_smart_callback_add(ec->frame, "unmaximize_pre", 
_ds_unmaximize_pre, ec);
    evas_object_smart_callback_add(ec->frame, "unmaximize", _ds_unmaximize, ec);
    evas_object_smart_callback_add(ec->frame, "unmaximize_done", 
_ds_unmaximize_post, ec);
+   evas_object_smart_callback_add(ec->frame, "fullscreen", _ds_fullscreen, ec);
 }
 
 static Eina_Bool
@@ -117,6 +130,7 @@ maximize_shutdown(void)
         evas_object_smart_callback_del(ec->frame, "unmaximize_pre", 
_ds_unmaximize_pre);
         evas_object_smart_callback_del(ec->frame, "unmaximize", 
_ds_unmaximize);
         evas_object_smart_callback_del(ec->frame, "unmaximize_done", 
_ds_unmaximize_post);
+        evas_object_smart_callback_del(ec->frame, "fullscreen", 
_ds_fullscreen);
      }
    E_FREE_FUNC(eh, ecore_event_handler_del);
 }

-- 


Reply via email to