discomfitor pushed a commit to branch master.

http://git.enlightenment.org/core/elementary.git/commit/?id=3bfe3ca79763e86d2f7bcb2f5581cdb5425013bb

commit 3bfe3ca79763e86d2f7bcb2f5581cdb5425013bb
Author: Mike Blumenkrantz <zm...@osg.samsung.com>
Date:   Tue Nov 17 18:19:15 2015 -0500

    win: only perform maximize frame state updating during ecore-evas callback
    
    running this during csd button activation leads to state mismatches when
    maximize is not triggered from the csd button
    
    @fix
---
 src/lib/elm_win.c | 37 ++++++++++++++++++-------------------
 1 file changed, 18 insertions(+), 19 deletions(-)

diff --git a/src/lib/elm_win.c b/src/lib/elm_win.c
index a1d38cc..01e1f91 100644
--- a/src/lib/elm_win.c
+++ b/src/lib/elm_win.c
@@ -1289,6 +1289,23 @@ _elm_win_frame_obj_update(Elm_Win_Data *sd)
 }
 
 static void
+_elm_win_frame_maximized_state_update(Elm_Win_Data *sd, Eina_Bool maximized)
+{
+   const char *emission;
+
+   if (maximized)
+     emission = "elm,state,maximized";
+   else
+     emission = "elm,state,unmaximized";
+
+   edje_object_signal_emit(sd->frame_obj, emission, "elm");
+   edje_object_message_signal_process(sd->frame_obj);
+   evas_object_smart_calculate(sd->frame_obj);
+
+   _elm_win_frame_obj_update(sd);
+}
+
+static void
 _elm_win_state_change(Ecore_Evas *ee)
 {
    Elm_Win_Data *sd = _elm_win_associate_get(ee);
@@ -1409,6 +1426,7 @@ _elm_win_state_change(Ecore_Evas *ee)
              if (_elm_config->atspi_mode)
                elm_interface_atspi_window_restored_signal_emit(obj);
           }
+        _elm_win_frame_maximized_state_update(sd, sd->maximized);
      }
    if (ch_profile)
      {
@@ -2841,23 +2859,6 @@ _elm_win_frame_cb_minimize(void *data,
 }
 
 static void
-_elm_win_frame_maximized_state_update(Elm_Win_Data *sd, Eina_Bool maximized)
-{
-   const char *emission;
-
-   if (maximized)
-     emission = "elm,state,maximized";
-   else
-     emission = "elm,state,unmaximized";
-
-   edje_object_signal_emit(sd->frame_obj, emission, "elm");
-   edje_object_message_signal_process(sd->frame_obj);
-   evas_object_smart_calculate(sd->frame_obj);
-
-   _elm_win_frame_obj_update(sd);
-}
-
-static void
 _elm_win_frame_cb_maximize(void *data,
                            Evas_Object *obj EINA_UNUSED,
                            const char *sig EINA_UNUSED,
@@ -2870,8 +2871,6 @@ _elm_win_frame_cb_maximize(void *data,
    if (sd->maximized) value = EINA_FALSE;
    else value = EINA_TRUE;
 
-   _elm_win_frame_maximized_state_update(sd, value);
-
    TRAP(sd, maximized_set, value);
 }
 

-- 


Reply via email to