Enlightenment CVS committal

Author  : handyande
Project : misc
Module  : engage

Dir     : misc/engage/src/module


Modified Files:
        e_mod_main.c tray.c 


Log Message:
fix tray layout and avoid much of the flickering
===================================================================
RCS file: /cvsroot/enlightenment/misc/engage/src/module/e_mod_main.c,v
retrieving revision 1.82
retrieving revision 1.83
diff -u -3 -r1.82 -r1.83
--- e_mod_main.c        6 Dec 2005 22:30:18 -0000       1.82
+++ e_mod_main.c        7 Dec 2005 12:57:07 -0000       1.83
@@ -133,6 +133,9 @@
 
 extern void    _engage_tray_init(Engage_Bar *eb);
 extern void    _engage_tray_shutdown(Engage_Bar *eb);
+extern void    _engage_tray_layout(Engage_Bar *eb);
+extern void    _engage_tray_freeze(Engage_Bar *eb);
+extern void    _engage_tray_thaw(Engage_Bar *eb);
 
 
 static int      _engage_zoom_in_slave(void *data);
@@ -1489,7 +1492,9 @@
      }
    evas_object_resize(eb->event_object, w, h);
 
+   _engage_tray_freeze(eb);
    edje_object_part_unswallow(eb->bar_object, eb->box_object);
+   _engage_tray_thaw(eb);
    edje_extern_object_min_size_set(eb->box_object, w, h);
    edje_extern_object_max_size_set(eb->box_object, w, h);
    edje_object_part_swallow(eb->bar_object, "items", eb->box_object);
@@ -2313,8 +2318,10 @@
        case E_GADMAN_CHANGE_MOVE_RESIZE:
          e_gadman_client_geometry_get(eb->gmc, &eb->x, &eb->y, &eb->w, &eb->h);
 
-         edje_extern_object_min_size_set(eb->box_object, eb->w, eb->h);
+         _engage_tray_freeze(eb);
          edje_object_part_unswallow(eb->bar_object, eb->box_object);
+         _engage_tray_thaw(eb);
+         edje_extern_object_min_size_set(eb->box_object, eb->w, eb->h);
          edje_object_part_swallow(eb->bar_object, "items", eb->box_object);
 
          evas_object_move(eb->bar_object, eb->x, eb->y);
===================================================================
RCS file: /cvsroot/enlightenment/misc/engage/src/module/tray.c,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -3 -r1.14 -r1.15
--- tray.c      6 Dec 2005 16:16:10 -0000       1.14
+++ tray.c      7 Dec 2005 12:57:07 -0000       1.15
@@ -19,6 +19,8 @@
 static void    _engage_tray_cb_resize(void *data, Evas_Object *o, Evas_Coord 
w, Evas_Coord h);
 
 void           _engage_tray_layout(Engage_Bar *eb);
+void           _engage_tray_freeze(Engage_Bar *eb);
+void           _engage_tray_thaw(Engage_Bar *eb);
 extern void    _engage_bar_frame_resize(Engage_Bar *eb);
 
 void
@@ -40,8 +42,7 @@
    evas_object_resize(eb->tray->tray, eb->tray->w, eb->tray->h);
    evas_object_color_set(eb->tray->tray, 180, 0, 0, 255);
    evas_object_show(eb->tray->tray);
-   evas_object_intercept_move_callback_add(eb->tray->tray, 
_engage_tray_cb_move, eb);
-   evas_object_intercept_resize_callback_add(eb->tray->tray, 
_engage_tray_cb_resize, eb);
+   _engage_tray_thaw(eb);
 
    edje_object_part_swallow(eb->bar_object, "tray", eb->tray->tray);
    _engage_tray_active_set(eb, eb->conf->tray);
@@ -51,6 +52,7 @@
 void
 _engage_tray_shutdown(Engage_Bar *eb)
 {
+   _engage_tray_freeze(eb);
    edje_object_part_unswallow(eb->bar_object, eb->tray->tray);
    _engage_tray_active_set(eb, 0);
 
@@ -110,8 +112,27 @@
      }
 }
 
+void
+_engage_tray_freeze(Engage_Bar *eb)
+{
+   if (!eb->tray)
+     return;
+   evas_object_intercept_move_callback_del(eb->tray->tray, 
_engage_tray_cb_move);
+   evas_object_intercept_resize_callback_del(eb->tray->tray, 
_engage_tray_cb_resize);
+}
+
+void
+_engage_tray_thaw(Engage_Bar *eb)
+{
+   if (!eb->tray)
+     return;
+   evas_object_intercept_move_callback_add(eb->tray->tray, 
_engage_tray_cb_move, eb);
+   evas_object_intercept_resize_callback_add(eb->tray->tray, 
_engage_tray_cb_resize, eb);
+}
+
 static void
-_engage_tray_add(Engage_Bar *eb, Ecore_X_Window win) {
+_engage_tray_add(Engage_Bar *eb, Ecore_X_Window win)
+{
 
   if (!eb->conf->tray)
     return;
@@ -235,7 +256,6 @@
          }
        edje_object_part_unswallow(eb->bar_object, eb->tray->tray);
        evas_object_resize(eb->tray->tray, w, h);
-       ecore_x_window_resize(eb->tray->win, (int) w, (int) h);
 
        edje_extern_object_min_size_set(eb->tray->tray, w, h);
        edje_extern_object_max_size_set(eb->tray->tray, w, h);
@@ -247,25 +267,28 @@
    if (h < 24)
      h = 24;
    c = (h - (h % 24)) / 24;
-   w = ((eb->tray->icons + (eb->tray->icons % c)) / c) * 24;
-   
+   w = (eb->tray->icons / c);
+   if ((eb->tray->icons % c) != 0)
+     w++;
+   w *= 24;
+
+   _engage_tray_freeze(eb);
+   edje_object_part_unswallow(eb->bar_object, eb->tray->tray);
    if (edge == E_GADMAN_EDGE_BOTTOM || edge == E_GADMAN_EDGE_TOP) {
-     edje_object_part_unswallow(eb->bar_object, eb->tray->tray);
      evas_object_resize(eb->tray->tray, w, h);
      ecore_x_window_resize(eb->tray->win, (int) w, (int) h);
 
      edje_extern_object_min_size_set(eb->tray->tray, w, h);
      edje_extern_object_max_size_set(eb->tray->tray, w, h);
-     edje_object_part_swallow(eb->bar_object, "tray", eb->tray->tray);
    } else {
-     edje_object_part_unswallow(eb->bar_object, eb->tray->tray);
      evas_object_resize(eb->tray->tray, h, w);
      ecore_x_window_resize(eb->tray->win, (int) h, (int) w);
 
      edje_extern_object_min_size_set(eb->tray->tray, h, w);
      edje_extern_object_max_size_set(eb->tray->tray, h, w);
-     edje_object_part_swallow(eb->bar_object, "tray", eb->tray->tray);
    }
+   _engage_tray_thaw(eb);
+   edje_object_part_swallow(eb->bar_object, "tray", eb->tray->tray);
    
    x = 0;
    if (edge == E_GADMAN_EDGE_BOTTOM || edge == E_GADMAN_EDGE_RIGHT)




-------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc. Do you grep through log files
for problems?  Stop!  Download the new AJAX search engine that makes
searching your log files as easy as surfing the  web.  DOWNLOAD SPLUNK!
http://ads.osdn.com/?ad_id=7637&alloc_id=16865&op=click
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to