Enlightenment CVS committal

Author  : englebass
Project : e17
Module  : libs/efreet

Dir     : e17/libs/efreet/src/lib


Modified Files:
        efreet_utils.c efreet_utils.h 


Log Message:
Search for desktop with right startup_wm_class.

===================================================================
RCS file: /cvs/e/e17/libs/efreet/src/lib/efreet_utils.c,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -3 -r1.10 -r1.11
--- efreet_utils.c      25 Mar 2007 13:43:52 -0000      1.10
+++ efreet_utils.c      25 Mar 2007 15:52:18 -0000      1.11
@@ -22,11 +22,13 @@
 struct _Efreet_Cache_Search
 {
     Efreet_Desktop *desktop;
-    const char     *what;
+    const char     *what1;
+    const char     *what2;
 };
 
 static int  _efreet_util_cache_fill(void *data);
 static void _efreet_util_cache_dir_free(void *data);
+static void _efreet_util_cache_search_wmclass(void *value, void *data);
 static void _efreet_util_cache_search_name(void *value, void *data);
 static void _efreet_util_cache_search_generic_name(void *value, void *data);
 
@@ -160,6 +162,19 @@
 }
 
 Efreet_Desktop *
+efreet_util_desktop_wmclass_find(const char *wmname, const char *wmclass)
+{
+    Efreet_Cache_Search search;
+
+    if ((!wmname) && (!wmclass)) return NULL;
+    search.desktop = NULL;
+    search.what1 = wmname;
+    search.what2 = wmclass;
+    ecore_hash_for_each_node(desktop_by_exec, 
_efreet_util_cache_search_wmclass, &search);
+    return search.desktop;
+}
+
+Efreet_Desktop *
 efreet_util_desktop_file_id_find(const char *file_id)
 {
     Efreet_Desktop *desktop = NULL;
@@ -224,7 +239,8 @@
 
     if (!name) return NULL;
     search.desktop = NULL;
-    search.what = name;
+    search.what1 = name;
+    search.what2 = NULL;
     ecore_hash_for_each_node(desktop_by_exec, _efreet_util_cache_search_name, 
&search);
     return search.desktop;
 }
@@ -236,7 +252,8 @@
 
     if (!generic_name) return NULL;
     search.desktop = NULL;
-    search.what = generic_name;
+    search.what1 = generic_name;
+    search.what2 = NULL;
     ecore_hash_for_each_node(desktop_by_exec, 
_efreet_util_cache_search_generic_name, &search);
     return search.desktop;
 }
@@ -365,6 +382,24 @@
 }
 
 static void
+_efreet_util_cache_search_wmclass(void *value, void *data)
+{
+    Ecore_Hash_Node     *node;
+    Efreet_Cache_Search *search;
+    Efreet_Desktop      *desktop;
+
+    node = value;
+    search = data;
+
+    desktop = node->value;
+    if (!desktop->startup_wm_class) return;
+    if ((search->what1) && (!strcmp(desktop->startup_wm_class, search->what1)))
+        search->desktop = desktop;
+    else if ((search->what2) && (!strcmp(desktop->startup_wm_class, 
search->what2)))
+        search->desktop = desktop;
+}
+
+static void
 _efreet_util_cache_search_name(void *value, void *data)
 {
     Ecore_Hash_Node     *node;
@@ -376,7 +411,7 @@
 
     desktop = node->value;
     if (!desktop->name) return;
-    if (!strcmp(desktop->name, search->what)) search->desktop = desktop;
+    if (!strcmp(desktop->name, search->what1)) search->desktop = desktop;
 }
 
 static void
@@ -391,5 +426,5 @@
 
     desktop = node->value;
     if (!desktop->generic_name) return;
-    if (!strcmp(desktop->generic_name, search->what)) search->desktop = 
desktop;
+    if (!strcmp(desktop->generic_name, search->what1)) search->desktop = 
desktop;
 }
===================================================================
RCS file: /cvs/e/e17/libs/efreet/src/lib/efreet_utils.h,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -3 -r1.8 -r1.9
--- efreet_utils.h      25 Mar 2007 13:43:52 -0000      1.8
+++ efreet_utils.h      25 Mar 2007 15:52:18 -0000      1.9
@@ -5,6 +5,7 @@
 char           *efreet_util_path_in_default(const char *section, const char 
*path);
 const char     *efreet_util_path_to_file_id(const char *path);
 
+Efreet_Desktop *efreet_util_desktop_wmclass_find(const char *wmname, const 
char *wmclass);
 Efreet_Desktop *efreet_util_desktop_file_id_find(const char *file_id);
 Efreet_Desktop *efreet_util_desktop_exec_find(const char *exec);
 Efreet_Desktop *efreet_util_desktop_name_find(const char *name);



-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys-and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to