elm/win: Backport 191b71fa86bd56b9d213b538ce8d92d9c23fc59f.
authorRafael Antognolli <rafael.antognolli@intel.com>
Mon, 29 Apr 2013 18:07:36 +0000 (15:07 -0300)
committerRafael Antognolli <rafael.antognolli@intel.com>
Mon, 29 Apr 2013 18:07:36 +0000 (15:07 -0300)
and dont set states until state change cb tells u they changed in
elm_win. more testing needed.

src/lib/elm_win.c

index 3dea07645aaeb4b6995b09a927dfcee649cc1d4e..d46bacebd1462c2797afca6b1b993299f76b14b2 100644 (file)
@@ -2043,7 +2043,7 @@ _elm_win_frame_cb_minimize(void *data,
    Elm_Win_Smart_Data *sd;
 
    if (!(sd = data)) return;
-   sd->iconified = EINA_TRUE;
+   // sd->iconified = EINA_TRUE;
    TRAP(sd, iconified_set, EINA_TRUE);
 }
 
@@ -2308,6 +2308,24 @@ _elm_x_io_err(void *data __UNUSED__)
 }
 #endif
 
+static void
+_elm_win_cb_hide(void *data __UNUSED__,
+                 Evas *e __UNUSED__,
+                 Evas_Object *obj __UNUSED__,
+                 void *event_info __UNUSED__)
+{
+   _elm_win_state_eval_queue();
+}
+
+static void
+_elm_win_cb_show(void *data __UNUSED__,
+                 Evas *e __UNUSED__,
+                 Evas_Object *obj __UNUSED__,
+                 void *event_info __UNUSED__)
+{
+   _elm_win_state_eval_queue();
+}
+
 EAPI Evas_Object *
 elm_win_add(Evas_Object *parent,
             const char *name,
@@ -2667,6 +2685,8 @@ elm_win_add(Evas_Object *parent,
    ecore_evas_callback_focus_out_set(sd->ee, _elm_win_focus_out);
    ecore_evas_callback_move_set(sd->ee, _elm_win_move);
    ecore_evas_callback_state_change_set(sd->ee, _elm_win_state_change);
+   evas_object_event_callback_add(obj, EVAS_CALLBACK_HIDE, _elm_win_cb_hide, sd);
+   evas_object_event_callback_add(obj, EVAS_CALLBACK_SHOW, _elm_win_cb_show, sd);
 
    evas_image_cache_set(sd->evas, (_elm_config->image_cache * 1024));
    evas_font_cache_set(sd->evas, (_elm_config->font_cache * 1024));
@@ -3112,7 +3132,7 @@ elm_win_fullscreen_set(Evas_Object *obj,
      }
    else
      {
-        sd->fullscreen = fullscreen;
+        // sd->fullscreen = fullscreen;
 
         if (fullscreen)
           {
@@ -3161,7 +3181,7 @@ elm_win_maximized_set(Evas_Object *obj,
    ELM_WIN_CHECK(obj);
    ELM_WIN_DATA_GET_OR_RETURN(obj, sd);
 
-   sd->maximized = maximized;
+   // sd->maximized = maximized;
    // YYY: handle if sd->img_obj
    TRAP(sd, maximized_set, maximized);
 #ifdef HAVE_ELEMENTARY_X
@@ -3185,7 +3205,7 @@ elm_win_iconified_set(Evas_Object *obj,
    ELM_WIN_CHECK(obj);
    ELM_WIN_DATA_GET_OR_RETURN(obj, sd);
 
-   sd->iconified = iconified;
+   // sd->iconified = iconified;
    TRAP(sd, iconified_set, iconified);
 #ifdef HAVE_ELEMENTARY_X
    _elm_win_xwin_update(sd);
@@ -3208,7 +3228,7 @@ elm_win_withdrawn_set(Evas_Object *obj,
    ELM_WIN_CHECK(obj);
    ELM_WIN_DATA_GET_OR_RETURN(obj, sd);
 
-   sd->withdrawn = withdrawn;
+   // sd->withdrawn = withdrawn;
    TRAP(sd, withdrawn_set, withdrawn);
 #ifdef HAVE_ELEMENTARY_X
    _elm_win_xwin_update(sd);
@@ -3472,7 +3492,7 @@ elm_win_sticky_set(Evas_Object *obj,
    ELM_WIN_CHECK(obj);
    ELM_WIN_DATA_GET_OR_RETURN(obj, sd);
 
-   sd->sticky = sticky;
+   // sd->sticky = sticky;
    TRAP(sd, sticky_set, sticky);
 #ifdef HAVE_ELEMENTARY_X
    _elm_win_xwin_update(sd);