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 290d5a618f5a77ab02498fc1b496fe9037705f4d
Author: Swagtoy <m...@ow.swag.toys>
AuthorDate: Tue Jun 24 22:58:12 2025 -0400

    ibar: Allow for activating windows on click
    
    Makes clicking an instance feel more 'traditional' in the sense that it won't launch a new instance on each left click.
    
    Doesn't know anything about the last used window yet and could use some more tuneups
---
 src/modules/ibar/e_mod_config.c |  5 +++++
 src/modules/ibar/e_mod_main.c   | 15 +++++++++++----
 src/modules/ibar/e_mod_main.h   |  1 +
 3 files changed, 17 insertions(+), 4 deletions(-)

diff --git a/src/modules/ibar/e_mod_config.c b/src/modules/ibar/e_mod_config.c
index d8c4c5a5b..b384af0ac 100644
--- a/src/modules/ibar/e_mod_config.c
+++ b/src/modules/ibar/e_mod_config.c
@@ -9,6 +9,7 @@ struct _E_Config_Dialog_Data
    int               track_launch;
    int               dont_add_nonorder;
    int               icon_menu_mouseover;
+   int               activate_click;
 
    Evas_Object      *tlist;
    Evas_Object      *radio_name;
@@ -71,6 +72,7 @@ _fill_data(Config_Item *ci, E_Config_Dialog_Data *cfdata)
    cfdata->lock_move = ci->lock_move;
    cfdata->dont_add_nonorder = ci->dont_add_nonorder;
    cfdata->track_launch = !ci->dont_track_launch;
+   cfdata->activate_click = ci->activate_click;
    cfdata->icon_menu_mouseover = !ci->dont_icon_menu_mouseover;
 }
 
@@ -148,6 +150,8 @@ _basic_create_widgets(E_Config_Dialog *cfd EINA_UNUSED, Evas *evas, E_Config_Dia
    of = e_widget_framelist_add(evas, _("Misc"), 0);
    ob = e_widget_check_add(evas, _("Lock icon move"), &(cfdata->lock_move));
    e_widget_framelist_object_append(of, ob);
+   ob = e_widget_check_add(evas, _("Activate window on click"), &(cfdata->activate_click));
+   e_widget_framelist_object_append(of, ob);
    ob = e_widget_check_add(evas, _("Don't show active windows"), &(cfdata->dont_add_nonorder));
    e_widget_framelist_object_append(of, ob);
    ob = e_widget_check_add(evas, _("Track launch"), &(cfdata->track_launch));
@@ -174,6 +178,7 @@ _basic_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
    ci->lock_move = cfdata->lock_move;
    ci->dont_add_nonorder = cfdata->dont_add_nonorder;
    ci->dont_track_launch = !cfdata->track_launch;
+   ci->activate_click = cfdata->activate_click;
    ci->dont_icon_menu_mouseover = !cfdata->icon_menu_mouseover;
    _ibar_config_update(ci);
    e_config_save_queue();
diff --git a/src/modules/ibar/e_mod_main.c b/src/modules/ibar/e_mod_main.c
index 38581484a..a348738e6 100644
--- a/src/modules/ibar/e_mod_main.c
+++ b/src/modules/ibar/e_mod_main.c
@@ -1797,7 +1797,7 @@ _ibar_instance_watch(void *data, E_Exec_Instance *inst, E_Exec_Watch_Type type)
 static void
 _ibar_icon_go(IBar_Icon *ic, Eina_Bool keep_going)
 {
-   if (ic->not_in_order)
+   if (ic->not_in_order || ic->ibar->inst->ci->activate_click)
      {
         Eina_List *l, *ll;
         E_Exec_Instance *exe;
@@ -1809,7 +1809,7 @@ _ibar_icon_go(IBar_Icon *ic, Eina_Bool keep_going)
              EINA_LIST_FOREACH(exe->clients, ll, ec)
                {
                   count++;
-                  if (count > 1)
+                  if (count > 1 && !ic->ibar->inst->ci->activate_click)
                     {
                        ecore_job_add((Ecore_Cb)_ibar_cb_icon_menu_job_cb, ic);
                        return;
@@ -1818,8 +1818,14 @@ _ibar_icon_go(IBar_Icon *ic, Eina_Bool keep_going)
                }
           }
         if (eclast)
-          e_client_activate(eclast, 1);
-        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)
      {
@@ -2882,6 +2888,7 @@ e_modapi_init(E_Module *m)
    E_CONFIG_VAL(D, T, lock_move, INT);
    E_CONFIG_VAL(D, T, dont_add_nonorder, INT);
    E_CONFIG_VAL(D, T, dont_track_launch, UCHAR);
+   E_CONFIG_VAL(D, T, activate_click, UCHAR);
    E_CONFIG_VAL(D, T, dont_icon_menu_mouseover, UCHAR);
 
    conf_edd = E_CONFIG_DD_NEW("IBar_Config", Config);
diff --git a/src/modules/ibar/e_mod_main.h b/src/modules/ibar/e_mod_main.h
index 5f587e75b..6c065ca4d 100644
--- a/src/modules/ibar/e_mod_main.h
+++ b/src/modules/ibar/e_mod_main.h
@@ -23,6 +23,7 @@ struct _Config_Item
    int eap_label;
    int lock_move;
    int dont_add_nonorder;
+   unsigned char activate_click;
    unsigned char dont_track_launch;
    unsigned char dont_icon_menu_mouseover;
 };

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

Reply via email to