diff --git a/src/bin/e_border.c b/src/bin/e_border.c
index 0f6f90500..64140e904 100644
--- a/src/bin/e_border.c
+++ b/src/bin/e_border.c
@@ -2448,11 +2448,18 @@ e_border_icon_add(E_Border *bd, Evas *evas)
if (bd->internal)
{
o = edje_object_add(evas);
- if (!bd->internal_icon)
+ if ((!bd->internal_icon) && (!bd->module_eap))
e_util_edje_icon_set(o, "enlightenment/e");
- else
- if (!e_util_edje_icon_set(o, bd->internal_icon))
- e_util_edje_icon_set(o, "enlightenment/e");
+ else if (bd->internal_icon)
+ {
+ if (!e_util_edje_icon_set(o, bd->internal_icon))
+ e_util_edje_icon_set(o, "enlightenment/e");
+ }
+ else if (bd->module_eap)
+ {
+ if (!edje_object_file_set(o, bd->module_eap, "icon"))
+ e_util_edje_icon_set(o, "enlightenment/e");
+ }
return o;
}
if (e_config->use_app_icon)
@@ -3030,6 +3037,7 @@ _e_border_free(E_Border *bd)
if (bd->client.netwm.name) free(bd->client.netwm.name);
if (bd->client.netwm.icon_name) free(bd->client.netwm.icon_name);
e_object_del(E_OBJECT(bd->shape));
+ if (bd->module_eap) evas_stringshare_del(bd->module_eap);
if (bd->internal_icon) evas_stringshare_del(bd->internal_icon);
if (bd->icon_object) evas_object_del(bd->icon_object);
evas_object_del(bd->bg_object);
diff --git a/src/bin/e_border.h b/src/bin/e_border.h
index e4e3e6cec..efc8477f6 100644
--- a/src/bin/e_border.h
+++ b/src/bin/e_border.h
@@ -135,7 +135,8 @@ struct _E_Border
Evas_Object *icon_object;
Ecore_X_Window event_win;
const char *internal_icon;
-
+ const char *module_eap;
+
struct {
Ecore_X_Window shell_win;
Ecore_X_Window win;
diff --git a/src/bin/e_module.c b/src/bin/e_module.c
index 9bb785b1c..ffcf70f5d 100644
--- a/src/bin/e_module.c
+++ b/src/bin/e_module.c
@@ -26,6 +26,7 @@ static void _e_module_control_menu_configuration(void *data, E_Menu *m, E_Menu_I
static void _e_module_control_menu_enabled(void *data, E_Menu *m, E_Menu_Item *mi);
static void _e_module_dialog_disable_show(const char *title, const char *body, E_Module *m);
static void _e_module_cb_dialog_disable(void *data, E_Dialog *dia);
+static void _e_module_dialog_icon_set(E_Dialog *dia, const char *icon);
/* local subsystem globals */
static Evas_List *_e_modules = NULL;
@@ -356,20 +357,30 @@ e_module_list(void)
}
EAPI void
-e_module_dialog_show(const char *title, const char *body)
+e_module_dialog_show(E_Module *m, const char *title, const char *body)
{
E_Dialog *dia;
+ E_Border *bd;
+ char eap[4096];
+
+ if (!m) return;
+ snprintf(eap, sizeof(eap), "%s/module.eap", e_module_dir_get(m));
+
dia = e_dialog_new(e_container_current_get(e_manager_current_get()));
if (!dia) return;
e_dialog_title_set(dia, title);
- e_dialog_icon_set(dia, "enlightenment/modules", 64);
+ _e_module_dialog_icon_set(dia, eap);
e_dialog_text_set(dia, body);
e_dialog_button_add(dia, _("OK"), NULL, NULL, NULL);
e_dialog_button_focus_num(dia, 0);
e_win_centered_set(dia->win, 1);
e_dialog_show(dia);
+ if (!eap) return;
+ bd = dia->win->border;
+ if (!bd) return;
+ bd->module_eap = evas_stringshare_add(eap);
}
/* local subsystem functions */
@@ -421,7 +432,7 @@ _e_module_control_menu_new(E_Module *mod)
m = e_menu_new();
mi = e_menu_item_new(m);
- e_menu_item_label_set(mi, _("About…"));
+ e_menu_item_label_set(mi, _("About..."));
e_menu_item_callback_set(mi, _e_module_control_menu_about, mod);
mi = e_menu_item_new(m);
@@ -529,3 +540,17 @@ _e_module_cb_dialog_disable(void *data, E_Dialog *dia)
e_object_del(E_OBJECT(dia));
e_config_save_queue();
}
+
+static void
+_e_module_dialog_icon_set(E_Dialog *dia, const char *icon)
+{
+ /* These should never happen, but just in case */
+ if (!dia) return;
+ if (!icon) return;
+
+ dia->icon_object = edje_object_add(e_win_evas_get(dia->win));
+ edje_object_file_set(dia->icon_object, icon, "icon");
+ edje_extern_object_min_size_set(dia->icon_object, 64, 64);
+ edje_object_part_swallow(dia->bg_object, "icon_swallow", dia->icon_object);
+ evas_object_show(dia->icon_object);
+}
diff --git a/src/bin/e_module.h b/src/bin/e_module.h
index 789d92049..d7ec49e02 100644
--- a/src/bin/e_module.h
+++ b/src/bin/e_module.h
@@ -57,7 +57,7 @@ EAPI int e_module_enabled_get(E_Module *m);
EAPI int e_module_save_all(void);
EAPI E_Module *e_module_find(const char *name);
EAPI Evas_List *e_module_list(void);
-EAPI void e_module_dialog_show(const char *title, const char *body);
+EAPI void e_module_dialog_show(E_Module *m, const char *title, const char *body);
#endif
#endif
diff --git a/src/modules/battery/e_mod_main.c b/src/modules/battery/e_mod_main.c
index ff335bf0e..1e07de9b8 100644
--- a/src/modules/battery/e_mod_main.c
+++ b/src/modules/battery/e_mod_main.c
@@ -1430,7 +1430,7 @@ e_modapi_save(E_Module *m)
EAPI int
e_modapi_about(E_Module *m)
{
- e_module_dialog_show(_("Enlightenment Battery Module"),
+ e_module_dialog_show(m, _("Enlightenment Battery Module"),
_("A basic battery meter that uses either"
"ACPI or APM
"
"on Linux to monitor your battery and AC power adaptor
"
diff --git a/src/modules/clock/e_mod_main.c b/src/modules/clock/e_mod_main.c
index d7be1810c..0bf621165 100644
--- a/src/modules/clock/e_mod_main.c
+++ b/src/modules/clock/e_mod_main.c
@@ -146,7 +146,7 @@ e_modapi_save(E_Module *m)
EAPI int
e_modapi_about(E_Module *m)
{
- e_module_dialog_show(_("Enlightenment Clock Module"),
+ e_module_dialog_show(m, _("Enlightenment Clock Module"),
_("A simple module to give E17 a clock."));
return 1;
}
diff --git a/src/modules/cpufreq/e_mod_main.c b/src/modules/cpufreq/e_mod_main.c
index ee8c9ae34..45e4afe98 100644
--- a/src/modules/cpufreq/e_mod_main.c
+++ b/src/modules/cpufreq/e_mod_main.c
@@ -936,7 +936,7 @@ e_modapi_save(E_Module *m)
EAPI int
e_modapi_about(E_Module *m)
{
- e_module_dialog_show(_("CPU Frequency Controller Module"),
+ e_module_dialog_show(m, _("CPU Frequency Controller Module"),
_("A simple module to control the frequency of the system CPU.
"
"This is especially useful to save power on laptops."));
return 1;
diff --git a/src/modules/dropshadow/e_mod_main.c b/src/modules/dropshadow/e_mod_main.c
index 445e61753..b7b76c3a6 100644
--- a/src/modules/dropshadow/e_mod_main.c
+++ b/src/modules/dropshadow/e_mod_main.c
@@ -154,7 +154,7 @@ e_modapi_save(E_Module *m)
EAPI int
e_modapi_about(E_Module *m)
{
- e_module_dialog_show(_("Enlightenment Dropshadow Module"),
+ e_module_dialog_show(m, _("Enlightenment Dropshadow Module"),
_("This is the dropshadow module that allows dropshadows to be cast
"
"on the desktop background - without special X-Server extensions
"
"or hardware acceleration."));
diff --git a/src/modules/ibar/e_mod_main.c b/src/modules/ibar/e_mod_main.c
index 1e5dde435..db7021543 100644
--- a/src/modules/ibar/e_mod_main.c
+++ b/src/modules/ibar/e_mod_main.c
@@ -1377,7 +1377,7 @@ e_modapi_save(E_Module *m)
EAPI int
e_modapi_about(E_Module *m)
{
- e_module_dialog_show(_("Enlightenment IBar Module"),
+ e_module_dialog_show(m, _("Enlightenment IBar Module"),
_("This is the IBar Application Launcher bar module for Enlightenment.
"
"It is a first example module and is being used to flesh out several
"
"interfaces in Enlightenment 0.17.0. It is under heavy development,
"
diff --git a/src/modules/ibox/e_mod_main.c b/src/modules/ibox/e_mod_main.c
index db71fa6a2..efd1941a0 100644
--- a/src/modules/ibox/e_mod_main.c
+++ b/src/modules/ibox/e_mod_main.c
@@ -1418,7 +1418,7 @@ e_modapi_save(E_Module *m)
EAPI int
e_modapi_about(E_Module *m)
{
- e_module_dialog_show(_("Enlightenment IBox Module"),
+ e_module_dialog_show(m, _("Enlightenment IBox Module"),
_("This is the IBox Iconified Application module for Enlightenment.
"
"It will hold minimized applications"));
return 1;
diff --git a/src/modules/itray/e_mod_main.c b/src/modules/itray/e_mod_main.c
index c4b029947..83b867a0c 100644
--- a/src/modules/itray/e_mod_main.c
+++ b/src/modules/itray/e_mod_main.c
@@ -158,7 +158,7 @@ e_modapi_info(E_Module *m)
EAPI int
e_modapi_about(E_Module *m)
{
- e_module_dialog_show(_("Enlightenment ITray Module"),
+ e_module_dialog_show(m, _("Enlightenment ITray Module"),
_("This is the ITray system tray module for Enlightenment.
"
"It will hold system tray icons.
"
"Beware that this can be buggy due to many systray providing
"
diff --git a/src/modules/pager/e_mod_main.c b/src/modules/pager/e_mod_main.c
index 844d38ce4..07e708a78 100644
--- a/src/modules/pager/e_mod_main.c
+++ b/src/modules/pager/e_mod_main.c
@@ -1825,7 +1825,7 @@ e_modapi_save(E_Module *m)
EAPI int
e_modapi_about(E_Module *m)
{
- e_module_dialog_show(_("Enlightenment Pager Module"),
+ e_module_dialog_show(m, _("Enlightenment Pager Module"),
_("A pager module to navigate virtual desktops."));
return 1;
}
diff --git a/src/modules/start/e_mod_main.c b/src/modules/start/e_mod_main.c
index 10317b600..8ea654a17 100644
--- a/src/modules/start/e_mod_main.c
+++ b/src/modules/start/e_mod_main.c
@@ -252,7 +252,7 @@ e_modapi_save(E_Module *m)
EAPI int
e_modapi_about(E_Module *m)
{
- e_module_dialog_show(_("Enlightenment Start Module"),
+ e_module_dialog_show(m, _("Enlightenment Start Module"),
_("Experimental Button module for E17"));
return 1;
}
diff --git a/src/modules/temperature/e_mod_main.c b/src/modules/temperature/e_mod_main.c
index 20511e3bb..4feda2ca5 100644
--- a/src/modules/temperature/e_mod_main.c
+++ b/src/modules/temperature/e_mod_main.c
@@ -446,7 +446,7 @@ e_modapi_save(E_Module *m)
EAPI int
e_modapi_about(E_Module *m)
{
- e_module_dialog_show(_("Enlightenment Temperature Module"),
+ e_module_dialog_show(m, _("Enlightenment Temperature Module"),
_("A module to measure the ACPI Thermal sensor on Linux.
"
"It is especially useful for modern Laptops with high speed
"
"CPUs that generate a lot of heat."));