BUGS / FIXES
-------------------------------------------------------------------------------
+* BUG: itray. need i say more (it's riddled with problems)
* BUG: dnd icon from window that has no .eap defining its ocon to ibar and the
ibar icon ends up blank (cant build .eap freom ARGB pixels)
* BUG: edge flip for desktops still active if turned off when dragging a window
adjusted size) is smaller that screen max size, fill in space in between
with black. for 3. we want to fill the inbewteen space with some theme
defined image data
-* netwm window types and states need addressing (do special/appropriate things)
- for each of them.
-* do something with the icccm urgency field hint
-* different borders for non-resizable windows, shaped windows etc.
-* window icons should be able to be chosen if e eapp icon overrides netwm
- icon or the other way around (and remember this).
* actions to make current zone different (warp mouse to there)
* actions to make the current container different
* titlebar/border expansion/gadget panel for modules to put window widgets in
e_util_edje_icon_set(o, "enlightenment/e");
return o;
}
- if ((bd->client.icccm.name) && (bd->client.icccm.class))
+ if (e_config->use_app_icon)
{
- char *title = "";
-
- if (bd->client.netwm.name) title = bd->client.netwm.name;
- else title = bd->client.icccm.title;
- a = e_app_window_name_class_title_role_find(bd->client.icccm.name,
- bd->client.icccm.class,
- title,
- bd->client.icccm.window_role);
- }
- if (!a)
- {
- a = e_app_launch_id_pid_find(bd->client.netwm.startup_id,
- bd->client.netwm.pid);
- }
- if (a)
- {
- o = e_app_icon_add(evas, a);
- bd->app = a;
- e_object_ref(E_OBJECT(bd->app));
- return o;
+ if (bd->client.netwm.icons)
+ {
+ o = e_icon_add(evas);
+ e_icon_data_set(o, bd->client.netwm.icons[0].data,
+ bd->client.netwm.icons[0].width,
+ bd->client.netwm.icons[0].height);
+ e_icon_alpha_set(o, 1);
+ return o;
+ }
}
- else if (bd->client.netwm.icons)
+ if (!o)
{
- o = e_icon_add(evas);
- e_icon_data_set(o, bd->client.netwm.icons[0].data,
- bd->client.netwm.icons[0].width,
- bd->client.netwm.icons[0].height);
- e_icon_alpha_set(o, 1);
- return o;
+ if ((bd->client.icccm.name) && (bd->client.icccm.class))
+ {
+ char *title = "";
+
+ if (bd->client.netwm.name) title = bd->client.netwm.name;
+ else title = bd->client.icccm.title;
+ a = e_app_window_name_class_title_role_find(bd->client.icccm.name,
+ bd->client.icccm.class,
+ title,
+ bd->client.icccm.window_role);
+ }
+ if (!a)
+ {
+ a = e_app_launch_id_pid_find(bd->client.netwm.startup_id,
+ bd->client.netwm.pid);
+ }
+ if (a)
+ {
+ o = e_app_icon_add(evas, a);
+ bd->app = a;
+ e_object_ref(E_OBJECT(bd->app));
+ return o;
+ }
+ else if (bd->client.netwm.icons)
+ {
+ o = e_icon_add(evas);
+ e_icon_data_set(o, bd->client.netwm.icons[0].data,
+ bd->client.netwm.icons[0].width,
+ bd->client.netwm.icons[0].height);
+ e_icon_alpha_set(o, 1);
+ return o;
+ }
}
if (!o)
{
static void
_e_border_eval(E_Border *bd)
{
+ int change_urgent = 0;
+
/* fetch any info queued to be fetched */
if (bd->client.icccm.fetch.title)
{
&is_urgent))
{
bd->client.icccm.accepts_focus = accepts_focus;
+ if (bd->client.icccm.urgent != is_urgent)
+ change_urgent = 1;
bd->client.icccm.urgent = is_urgent;
/* If this is a new window, set the state as requested. */
edje_object_signal_emit(bd->bg_object, "fullscreen", "");
if (bd->hung)
edje_object_signal_emit(bd->bg_object, "hung", "");
+ if (bd->client.icccm.urgent)
+ edje_object_signal_emit(bd->bg_object, "urgent", "");
evas_object_move(bd->bg_object, 0, 0);
evas_object_resize(bd->bg_object, bd->w, bd->h);
}
bd->changes.icon = 0;
}
+
+ if (change_urgent)
+ {
+ if (bd->client.icccm.urgent)
+ edje_object_signal_emit(bd->bg_object, "urgent", "");
+ else
+ edje_object_signal_emit(bd->bg_object, "not_urgent", "");
+ /* FIXME: we should probably do something with the pager or
+ * maybe raising the window if it becomes urgent
+ */
+ }
bd->new_client = 0;
E_CONFIG_VAL(D, T, exebuf_pos_max_w, INT);
E_CONFIG_VAL(D, T, exebuf_pos_max_h, INT);
E_CONFIG_LIST(D, T, color_classes, _e_config_color_class_edd);
+ E_CONFIG_VAL(D, T, use_app_icon, INT);
e_config = e_config_domain_load("e", _e_config_edd);
if (e_config)
{
e_config->exebuf_pos_min_h = 160;
e_config->exebuf_pos_max_w = 400;
e_config->exebuf_pos_max_h = 320;
+ e_config->color_classes = NULL;
+ e_config->use_app_icon = 0;
{
E_Config_Module *em;
E_CONFIG_LIMIT(e_config->menu_eap_name_show, 0, 1);
E_CONFIG_LIMIT(e_config->menu_eap_generic_show, 0, 1);
E_CONFIG_LIMIT(e_config->menu_eap_comment_show, 0, 1);
+ E_CONFIG_LIMIT(e_config->use_app_icon, 0, 1);
return 1;
}
int border_shade_animate;
int border_shade_transition;
double border_shade_speed;
+ int use_app_icon;
};
/* a nice easy setup function that does the dirty work */
cfdata->resize_info_visible) cfdata->move_resize_info = 1;
if (cfdata->border_shade_animate) cfdata->animate_shading = 1;
cfdata->placement = cfdata->window_placement_policy;
+ cfdata->use_app_icon = e_config->use_app_icon;
}
static void *
e_config->border_shade_animate = cfdata->border_shade_animate;
e_config->border_shade_transition = cfdata->border_shade_transition;
e_config->border_shade_speed = cfdata->border_shade_speed;
+ e_config->use_app_icon = cfdata->use_app_icon;
e_config_save_queue();
return 1; /* Apply was OK */
}
e_widget_framelist_object_append(of, ob);
e_widget_list_object_append(o, of, 1, 1, 0.5);
+ of = e_widget_framelist_add(evas, _("Window Frame"), 0);
+ ob = e_widget_check_add(evas, _("Use application provided icon instead"), &(cfdata->use_app_icon));
+ e_widget_framelist_object_append(of, ob);
+ e_widget_list_object_append(o, of, 1, 1, 0.5);
+
return o;
}