This is an automated email from the git hooks/post-receive script.

git pushed a commit to reference refs/pull/116/head
in repository enlightenment.

View the commit online.

commit f46a2dc8b1a295b1970a0ca85babfbe97ac991a4
Author: Swagtoy <m...@ow.swag.toys>
AuthorDate: Wed Jun 25 01:27:27 2025 -0400

    Ibar: Start showing multiple windows in client menu
---
 src/modules/ibar/e_mod_main.c | 86 +++++++++++++++++++++++++++----------------
 1 file changed, 54 insertions(+), 32 deletions(-)

diff --git a/src/modules/ibar/e_mod_main.c b/src/modules/ibar/e_mod_main.c
index 56802469a..e58052687 100644
--- a/src/modules/ibar/e_mod_main.c
+++ b/src/modules/ibar/e_mod_main.c
@@ -1083,6 +1083,12 @@ _ibar_cb_menu_icon_remove(void *data, E_Menu *m EINA_UNUSED, E_Menu_Item *mi EIN
    _ibar_resize_handle(i);
 }
 
+static void
+_ibar_cb_menu_client_show(void* data, E_Menu *m EINA_UNUSED, E_Menu_Item *mi EINA_UNUSED)
+{
+   e_client_activate(data, 1);
+}
+
 static void
 _ibar_cb_menu_configuration(void *data, E_Menu *m EINA_UNUSED, E_Menu_Item *mi EINA_UNUSED)
 {
@@ -1601,6 +1607,7 @@ _ibar_cb_icon_mouse_down(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_
         E_Menu *m, *mo;
         E_Menu_Item *mi;
         Efreet_Desktop_Action *action;
+        Eina_Bool _only_one_win_ = (eina_list_count(ic->exes) == 1);
         char buf[256];
         int cx, cy;
 
@@ -1659,24 +1666,39 @@ _ibar_cb_icon_mouse_down(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_
              e_menu_item_callback_set(mi, _ibar_cb_menu_icon_remove, ic);
           }
 		
-		if (ic->exes && eina_list_count(ic->exes) == 1)
-		  {
-		     E_Exec_Instance *exe = eina_list_nth(ic->exes, 0);
-			 E_Client *client = eina_list_data_get(exe->clients);
-			 e_int_client_menu_create(client);
-			 
-			 mi = e_menu_item_new_relative(m, NULL);
-			 e_menu_item_label_set(mi, _("Window"));
-             e_util_desktop_menu_item_icon_add(ic->app,
-                                               e_util_icon_size_normalize(96 * e_scale),
-                                               mi);
-			 e_menu_item_submenu_set(mi, client->border_menu);
-			 
+        if (ic->exes)
+          {
+             E_Exec_Instance *exe = eina_list_nth(ic->exes, 0);
+             int i = 0;
+             mi = NULL;
+             EINA_LIST_FOREACH(ic->exes, it, exe)
+               {
+                  ++i;
+                  E_Client *client = eina_list_data_get(exe->clients);
+                  e_int_client_menu_create(client);
+	 		 	  
+                  mi = e_menu_item_new_relative(m, mi);
+				  if (only_one_win)
+				    {
+					   e_menu_item_label_set(mi, _("Window"));
+					}
+				  else
+				    {
+                  	   snprintf(buf, sizeof(buf), _("Window %d"), i);
+                  	   e_menu_item_label_set(mi, buf);
+					}
+                  e_util_desktop_menu_item_icon_add(ic->app,
+                                                    e_util_icon_size_normalize(96 * e_scale),
+                                                    mi);
+                  e_menu_item_callback_set(mi, _ibar_cb_menu_client_show, client);
+                  e_menu_item_submenu_set(mi, client->border_menu);
+                  client->border_menu = NULL;
+               }
+			   
+			   
              mi = e_menu_item_new_relative(m, mi);
              e_menu_item_separator_set(mi, 1);
-			 
-			 client->border_menu = NULL;
-		  }
+          }
 
         mi = e_menu_item_new_relative(m, mi);
         snprintf(buf, sizeof(buf), _("Icon %s"), ic->app->name);
@@ -1686,7 +1708,7 @@ _ibar_cb_icon_mouse_down(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_
                                           mi);
         e_menu_item_submenu_set(mi, mo);
         e_object_unref(E_OBJECT(mo));
-		
+        
 
         if (ic->app->actions)
           {
@@ -1837,13 +1859,13 @@ _ibar_icon_go(IBar_Icon *ic, Eina_Bool keep_going, Eina_Bool force_open)
                   count++;
                   if (count > 1)
                     {
-					   if (ic->ibar->inst->ci->activate_click)
-					     {
-					       E_Client *client = _ibar_next_client(ic, 1);
-						   if (client)
-						     e_client_activate(client, 1);
-					     }
-					   else
+                       if (ic->ibar->inst->ci->activate_click)
+                         {
+                            E_Client *client = _ibar_next_client(ic, 1);
+                            if (client)
+                              e_client_activate(client, 1);
+                         }
+                       else
                          ecore_job_add((Ecore_Cb)_ibar_cb_icon_menu_job_cb, ic);
                        return;
                     }
@@ -1851,14 +1873,14 @@ _ibar_icon_go(IBar_Icon *ic, Eina_Bool keep_going, Eina_Bool force_open)
                }
           }
         if (eclast)
-		  {
-            if (e_client_focused_get() == eclast)
-              e_client_iconify(eclast);
-            else
-              e_client_activate(eclast, 1);
-	      }
-		if (!ic->ibar->inst->ci->activate_click || eclast)
-		  return;
+          {
+             if (e_client_focused_get() == eclast)
+               e_client_iconify(eclast);
+             else
+               e_client_activate(eclast, 1);
+          }
+        if (!ic->ibar->inst->ci->activate_click || eclast)
+          return;
      }
    if (ic->app->type == EFREET_DESKTOP_TYPE_APPLICATION)
      {

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.

Reply via email to