diff options
author | Mike Blumenkrantz <zmike@osg.samsung.com> | 2015-11-17 18:19:15 -0500 |
---|---|---|
committer | Mike Blumenkrantz <zmike@osg.samsung.com> | 2015-11-17 18:20:04 -0500 |
commit | 3bfe3ca79763e86d2f7bcb2f5581cdb5425013bb (patch) | |
tree | e2b4a3c0fd2d4e681e14f6386fa4542d006e45c2 | |
parent | 779b834c8d4a7ffbbd4c60d46397c0ed78e0715d (diff) | |
download | elementary-3bfe3ca79763e86d2f7bcb2f5581cdb5425013bb.tar.gz |
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
-rw-r--r-- | src/lib/elm_win.c | 37 |
1 files changed, 18 insertions, 19 deletions
diff --git a/src/lib/elm_win.c b/src/lib/elm_win.c index a1d38cc91..01e1f9169 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); } |