Enlightenment CVS committal

Author  : handyande
Project : misc
Module  : engage

Dir     : misc/engage/src/module


Modified Files:
        e_mod_main.c 


Log Message:
Detect open windows on module enable - thanks to Florian Zaehringer
===================================================================
RCS file: /cvsroot/enlightenment/misc/engage/src/module/e_mod_main.c,v
retrieving revision 1.63
retrieving revision 1.64
diff -u -3 -r1.63 -r1.64
--- e_mod_main.c        13 Aug 2005 10:33:48 -0000      1.63
+++ e_mod_main.c        13 Aug 2005 10:36:58 -0000      1.64
@@ -15,7 +15,6 @@
  * * store ignore list in config
  * * fix mouse overs etc to reach all the sub icons (currently missine ends)
  *
- * * pick up apps on enable (startup OK, disable then enable not)
  * * When a window gets focus move the selected_app pointer
  * * bounce icons on click ( following e_app exec hints? )
  *
@@ -56,6 +55,7 @@
 static int     _engage_cb_event_border_remove(void *data, int type, void 
*event);
 static int     _engage_cb_event_border_iconify(void *data, int type, void 
*event);
 static int     _engage_cb_event_border_uniconify(void *data, int type, void 
*event);
+static int     _engage_cb_border_add(Engage_Bar *eb, E_Border *bd);
 
 static Engage_Bar *_engage_bar_new(Engage *e, E_Container *con);
 static void    _engage_bar_free(Engage_Bar *eb);
@@ -351,6 +351,14 @@
                  e_menu_item_label_set(mi, con->name);
                  e_menu_item_submenu_set(mi, eb->menu);
 
+                 /* include apps already running */
+                 Evas_List *list;
+
+                 for (list = e_border_focus_stack_get(); list; list = 
list->next)
+                   {
+                      _engage_cb_border_add(eb, list->data);
+                   }
+
                  /* Setup */
                  if (!eb->conf->enabled)
                    _engage_bar_disable(eb);
@@ -1184,28 +1192,28 @@
 }
 
 static int
-_engage_cb_event_border_add(void *data, int type, void *event)
+_engage_cb_border_add(Engage_Bar *eb, E_Border *bd)
 {
-   Engage_Bar *eb;
    Engage_Icon *ic;
    Engage_App_Icon *ai;
-   E_Event_Border_Add *e;
    E_App *app;
    char *title;
-
-   e = event;
-   eb = data;
-   if (e->border->zone->container != eb->con)
+   
+   if (bd->zone->container != eb->con)
+     return 1;
+   
+   /* border not fully evaluated - can't use that*/
+   if (bd->new_client)
      return 1;
 
-   if (_engage_border_ignore(e->border))
+   if (_engage_border_ignore(bd))
      return 1;
-   if (e->border->client.netwm.name) title = e->border->client.netwm.name;
-   else title = e->border->client.icccm.title;
-   app = e_app_window_name_class_title_role_find(e->border->client.icccm.name,
-                                                e->border->client.icccm.class,
+   if (bd->client.netwm.name) title = bd->client.netwm.name;
+   else title = bd->client.icccm.title;
+   app = e_app_window_name_class_title_role_find(bd->client.icccm.name,
+                                                bd->client.icccm.class,
                                                 title,
-                                                
e->border->client.icccm.window_role);
+                                                bd->client.icccm.window_role);
    if (!app)
      app = _engage_unmatched_app;
    ic = _engage_icon_find(eb, app);
@@ -1220,8 +1228,8 @@
      }
    if (ic)
      {
-       ai = _engage_app_icon_new(ic, e->border, 0);
-       if (ai && e->border->iconic)
+       ai = _engage_app_icon_new(ic, bd, 0);
+       if (ai && bd->iconic)
          {
             ai->min = 1;
             edje_object_signal_emit(ai->overlay_object, "iconify", "");
@@ -1232,6 +1240,18 @@
 }
 
 static int
+_engage_cb_event_border_add(void *data, int type, void *event)
+{
+   Engage_Bar *eb;
+   E_Event_Border_Add *e;
+
+   e = event;
+   eb = data;
+
+   return _engage_cb_border_add(eb, e->border);
+}
+
+static int
 _engage_cb_event_border_remove(void *data, int type, void *event)
 {
    Engage_Bar *eb;




-------------------------------------------------------
SF.Net email is Sponsored by the Better Software Conference & EXPO
September 19-22, 2005 * San Francisco, CA * Development Lifecycle Practices
Agile & Plan-Driven Development * Managing Projects & Teams * Testing & QA
Security * Process Improvement & Measurement * http://www.sqe.com/bsce5sf
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to