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.