Log:
e's compositor now obeys _NET_WM_WINDOW_OPACITY as a normal atom in e_border
additionally:
* actions are now available for setting/changing window opacity
* window remembers can now remember window opacity
Author: discomfitor
Date: 2013-02-22 01:33:13 -0800 (Fri, 22 Feb 2013)
New Revision: 84303
Trac: http://trac.enlightenment.org/e/changeset/84303
Modified:
trunk/e/ChangeLog trunk/e/NEWS trunk/e/src/bin/e_border.c trunk/e/src/bin/e_border.h trunk/e/src/bin/e_comp.c trunk/e/src/bin/e_comp.h trunk/e/src/bin/e_int_border_remember.c trunk/e/src/bin/e_main.c trunk/e/src/bin/e_remember.c trunk/e/src/bin/e_remember.h
Modified: trunk/e/ChangeLog
===================================================================
--- trunk/e/ChangeLog 2013-02-22 09:33:11 UTC (rev 84302)
+++ trunk/e/ChangeLog 2013-02-22 09:33:13 UTC (rev 84303)
@@ -1,3 +1,7 @@
+2013-02-22 Mike Blumenkrantz
+
+ * compositor now allows user changing/remembering of object opacity
+
2013-02-20 Mike Blumenkrantz
* toolbar gadgets no longer crash when trying to display a popup
Modified: trunk/e/NEWS
===================================================================
--- trunk/e/NEWS 2013-02-22 09:33:11 UTC (rev 84302)
+++ trunk/e/NEWS 2013-02-22 09:33:13 UTC (rev 84303)
@@ -113,6 +113,7 @@
* e_popup is now a wrapper for drawing objects onto the compositor canvas
* compositor nocomp mode now dynamically enables/disables based on the state and stacking of fullscreen windows and comp objects
* e_util_size_debug_set now displays delete events
+ * compositor now allows user changing/remembering of object opacity
Fixes:
* IBar menu didn't allow to configure different icon sources, show contents menu even on empty IBar.
Modified: trunk/e/src/bin/e_border.c
===================================================================
--- trunk/e/src/bin/e_border.c 2013-02-22 09:33:11 UTC (rev 84302)
+++ trunk/e/src/bin/e_border.c 2013-02-22 09:33:13 UTC (rev 84303)
@@ -71,11 +71,7 @@
static Eina_Bool _e_border_cb_window_focus_out(void *data,
int ev_type,
void *ev);
-#if (ECORE_VERSION_MAJOR > 1) || (ECORE_VERSION_MINOR >= 8)
-static Eina_Bool _e_border_cb_client_message(void *data,
- int ev_type,
- void *ev);
-#endif
+static Eina_Bool _e_border_cb_client_message(void *data, int ev_type, void *ev);
static Eina_Bool _e_border_cb_window_state_request(void *data,
int ev_type,
void *ev);
@@ -322,10 +318,8 @@
_e_border_cb_window_focus_in, NULL);
E_LIST_HANDLER_APPEND(handlers, ECORE_X_EVENT_WINDOW_FOCUS_OUT,
_e_border_cb_window_focus_out, NULL);
-#if (ECORE_VERSION_MAJOR > 1) || (ECORE_VERSION_MINOR >= 8)
E_LIST_HANDLER_APPEND(handlers, ECORE_X_EVENT_CLIENT_MESSAGE,
_e_border_cb_client_message, NULL);
-#endif
E_LIST_HANDLER_APPEND(handlers, ECORE_X_EVENT_WINDOW_STATE_REQUEST,
_e_border_cb_window_state_request, NULL);
E_LIST_HANDLER_APPEND(handlers, ECORE_X_EVENT_WINDOW_MOVE_RESIZE_REQUEST,
@@ -634,6 +628,8 @@
{
bd->client.netwm.fetch.state = 1;
}
+ else if (atoms[i] == ECORE_X_ATOM_NET_WM_WINDOW_OPACITY)
+ bd->client.netwm.fetch.opacity = 1;
}
/* other misc atoms */
for (i = 0; i < at_num; i++)
@@ -5951,6 +5947,16 @@
bd->client.netwm.fetch.state = 1;
bd->changed = 1;
}
+ else if (e->atom == ECORE_X_ATOM_NET_WM_WINDOW_OPACITY)
+ {
+ if (bd->client.netwm.opacity_changed)
+ bd->client.netwm.opacity_changed = 0;
+ else
+ {
+ bd->client.netwm.fetch.opacity = 1;
+ bd->changed = 1;
+ }
+ }
#if (ECORE_VERSION_MAJOR > 1) || (ECORE_VERSION_MINOR >= 8)
else if (e->atom == ECORE_X_ATOM_E_WINDOW_PROFILE_SUPPORTED)
{
@@ -6186,28 +6192,31 @@
return ECORE_CALLBACK_PASS_ON;
}
-#if (ECORE_VERSION_MAJOR > 1) || (ECORE_VERSION_MINOR >= 8)
static Eina_Bool
-_e_border_cb_client_message(void *data __UNUSED__,
- int ev_type __UNUSED__,
- void *ev)
+_e_border_cb_client_message(void *data __UNUSED__, int ev_type __UNUSED__, void *ev)
{
E_Border *bd;
- Ecore_X_Event_Client_Message *e;
- char *profile = NULL;
-
- e = (Ecore_X_Event_Client_Message *)ev;
+ Ecore_X_Event_Client_Message *e = ev;
+
bd = e_border_find_by_client_window(e->win);
if (!bd) return ECORE_CALLBACK_PASS_ON;
- if (e->message_type == ECORE_X_ATOM_E_WINDOW_PROFILE_CHANGE)
+ if (e->message_type == ECORE_X_ATOM_NET_WM_WINDOW_OPACITY)
{
+ bd->client.netwm.fetch.opacity = 1;
+ bd->changed = 1;
+ }
+#if (ECORE_VERSION_MAJOR > 1) || (ECORE_VERSION_MINOR >= 8)
+ else if (e->message_type == ECORE_X_ATOM_E_WINDOW_PROFILE_CHANGE)
+ {
if (bd->client.e.state.profile.use)
{
+ char *profile;
profile = ecore_x_atom_name_get(e->data.l[1]);
ecore_x_e_window_profile_change_request_send(bd->client.win,
profile);
bd->client.e.state.profile.wait_for_done = 1;
+ free(profile);
}
}
else if (e->message_type == ECORE_X_ATOM_E_WINDOW_PROFILE_CHANGE_DONE)
@@ -6217,29 +6226,25 @@
{
E_Container *con = bd->zone->container;
E_Desk *desk = NULL;
+ char *profile;
profile = ecore_x_atom_name_get(e->data.l[1]);
if (profile)
- {
- if (bd->client.e.state.profile.name)
- eina_stringshare_del(bd->client.e.state.profile.name);
- bd->client.e.state.profile.name = eina_stringshare_add(profile);
- }
+ eina_stringshare_replace(&bd->client.e.state.profile.name, profile);
bd->client.e.state.profile.wait_for_done = 0;
desk = e_container_desk_window_profile_get(con, profile);
if ((desk) && (bd->desk != desk))
e_border_desk_set(bd, desk);
+ free(profile);
}
}
+#endif
- free(profile);
-
return ECORE_CALLBACK_PASS_ON;
}
-#endif
static Eina_Bool
_e_border_cb_window_state_request(void *data __UNUSED__,
int ev_type __UNUSED__,
@@ -7726,6 +7731,13 @@
bd->client.netwm.fetch.icon_name = 0;
rem_change = 1;
}
+ if (bd->client.netwm.fetch.opacity)
+ {
+ unsigned int val;
+
+ if (ecore_x_window_prop_card32_get(bd->client.win, ECORE_X_ATOM_NET_WM_WINDOW_OPACITY, &val, 1) > 0)
+ bd->client.netwm.opacity = (val >> 24);
+ }
if (bd->client.netwm.fetch.icon)
{
int i;
@@ -8460,6 +8472,11 @@
bd->changes.prop = 0;
if (rem_change) e_remember_update(bd);
+ /* the below function updates the border's remember
+ * and relevant netwm atom
+ * ...eventually
+ */
+ e_comp_win_opacity_set(bd->cw, bd->client.netwm.opacity);
if (change_urgent)
{
Modified: trunk/e/src/bin/e_border.h
===================================================================
--- trunk/e/src/bin/e_border.h 2013-02-22 09:33:11 UTC (rev 84302)
+++ trunk/e/src/bin/e_border.h 2013-02-22 09:33:13 UTC (rev 84303)
@@ -192,6 +192,7 @@
int l, r, t, b;
} client_inset;
+ E_Comp_Win *cw;
Ecore_Evas *bg_ecore_evas;
Evas *bg_evas;
Ecore_X_Window bg_win;
@@ -295,6 +296,8 @@
Ecore_X_Icon *icons;
int num_icons;
unsigned int user_time;
+ unsigned char opacity;
+ Eina_Bool opacity_changed : 1; // prevent fetching opacity next prop change
struct
{
int left;
@@ -365,6 +368,7 @@
unsigned char strut : 1;
unsigned char type : 1;
unsigned char state : 1;
+ unsigned char opacity : 1;
/* No, fetch on new_client, shouldn't be changed after map.
unsigned char pid : 1;
*/
Modified: trunk/e/src/bin/e_comp.c
===================================================================
--- trunk/e/src/bin/e_comp.c 2013-02-22 09:33:11 UTC (rev 84302)
+++ trunk/e/src/bin/e_comp.c 2013-02-22 09:33:13 UTC (rev 84303)
@@ -17,7 +17,6 @@
// 3. for unmapped windows - when window goes out of unmapped comp cache
// make a miniature copy (1/4 width+height?) and set property on window
// with pixmap id
-// 8. obey transparent property
// 9. shortcut lots of stuff to draw inside the compositor - shelf,
// wallpaper, efm - hell even menus and anything else in e (this is what
// e18 was mostly about)
@@ -31,6 +30,7 @@
static Eina_Hash *borders = NULL;
static Eina_Hash *damages = NULL;
static Eina_Hash *ignores = NULL;
+static Eina_List *actions = NULL;
static E_Comp_Config *conf = NULL;
static E_Config_DD *conf_edd = NULL;
@@ -1484,6 +1484,7 @@
ecore_x_sync_counter_inc(cw->counter, 1);
}
if (cw->bd) eina_hash_del(borders, e_util_winid_str_get(cw->bd->client.win), cw);
+ cw->bd->cw = NULL;
cw->bd = NULL;
evas_object_data_del(cw->shobj, "border");
// hmm - lockup?
@@ -2023,6 +2024,7 @@
eina_hash_add(borders, e_util_winid_str_get(cw->bd->client.win), cw);
cw->dfn = e_object_delfn_add(E_OBJECT(cw->bd), _e_comp_object_del, cw);
cw->shape = cw->bd->shape;
+ cw->bd->cw = cw;
// setup on show
// _e_comp_win_sync_setup(cw, cw->bd->client.win);
}
@@ -2194,6 +2196,7 @@
e_object_unref(E_OBJECT(cw->eobj));
cw->eobj = NULL;
}
+ E_FN_DEL(ecore_timer_del, cw->opacity_set_timer);
if (cw->animating)
{
cw->c->animating--;
@@ -2219,6 +2222,7 @@
{
eina_hash_del(borders, e_util_winid_str_get(cw->bd->client.win), cw);
e_object_delfn_del(E_OBJECT(cw->bd), cw->dfn);
+ cw->bd->cw = NULL;
cw->bd = NULL;
}
else if (cw->pop)
@@ -2886,33 +2890,7 @@
return ECORE_CALLBACK_PASS_ON;
}
-static void
-_e_comp_win_opacity_set(E_Comp_Win *cw)
-{
- unsigned int val;
-
- if (ecore_x_window_prop_card32_get(cw->win, ECORE_X_ATOM_NET_WM_WINDOW_OPACITY, &val, 1) > 0)
- {
- cw->opacity = (val >> 24);
- evas_object_color_set(cw->shobj, cw->opacity, cw->opacity, cw->opacity, cw->opacity);
- }
-}
-
static Eina_Bool
-_e_comp_property(void *data EINA_UNUSED, int type EINA_UNUSED, void *event EINA_UNUSED)
-{
- Ecore_X_Event_Window_Property *ev = event;
-
- if (ev->atom == ECORE_X_ATOM_NET_WM_WINDOW_OPACITY)
- {
- E_Comp_Win *cw = _e_comp_win_find(ev->win);
- if (!cw) return ECORE_CALLBACK_PASS_ON;
- _e_comp_win_opacity_set(cw);
- }
- return ECORE_CALLBACK_PASS_ON;
-}
-
-static Eina_Bool
_e_comp_message(void *data EINA_UNUSED, int type EINA_UNUSED, void *event)
{
Ecore_X_Event_Client_Message *ev = event;
@@ -2920,14 +2898,6 @@
int version, w = 0, h = 0;
Eina_Bool force = 0;
- if (ev->message_type == ECORE_X_ATOM_NET_WM_WINDOW_OPACITY)
- {
- cw = _e_comp_win_find(ev->win);
- if (!cw) return ECORE_CALLBACK_PASS_ON;
- _e_comp_win_opacity_set(cw);
- return ECORE_CALLBACK_PASS_ON;
- }
-
if ((ev->message_type != ECORE_X_ATOM_E_COMP_SYNC_DRAW_DONE) ||
(ev->format != 32)) return ECORE_CALLBACK_PASS_ON;
version = ev->data.l[1];
@@ -4515,6 +4485,77 @@
e_configure_option_category_icon_set(_("composite"), "preferences-composite");
}
+static Eina_Bool
+_e_comp_opacity_set_timer_cb(E_Comp_Win *cw)
+{
+ unsigned int opacity;
+
+ cw->bd->client.netwm.opacity = cw->opacity;
+ e_remember_update(cw->bd);
+ opacity = (cw->opacity << 24);
+ ecore_x_window_prop_card32_set(cw->bd->client.win, ECORE_X_ATOM_NET_WM_WINDOW_OPACITY, &opacity, 1);
+ cw->bd->client.netwm.opacity_changed = 1;
+ cw->opacity_set_timer = NULL;
+ return EINA_FALSE;
+}
+
+static E_Comp_Win *
+_e_comp_act_opacity_win_finder(E_Object *obj)
+{
+ E_Border *bd;
+
+ switch (obj->type)
+ {
+ case E_WIN_TYPE:
+ bd = ((E_Win*)obj)->border;
+ if (!bd) return NULL;
+ return _e_comp_border_client_find(bd->client.win);
+ case E_BORDER_TYPE:
+ bd = (E_Border*)obj;
+ return _e_comp_border_client_find(bd->client.win);
+ case E_POPUP_TYPE:
+ return evas_object_data_get(((E_Popup*)obj)->content, "comp_win");
+ default:
+ case E_ZONE_TYPE:
+ case E_CONTAINER_TYPE:
+ case E_MANAGER_TYPE:
+ case E_MENU_TYPE:
+ bd = e_border_focused_get();
+ if (bd) return _e_comp_border_client_find(bd->client.win);
+ }
+ return NULL;
+}
+
+static void
+_e_comp_act_opacity_change_go(E_Object *obj, const char *params)
+{
+ int opacity;
+ E_Comp_Win *cw;
+
+ if ((!params) || (!params[0])) return;
+ cw = _e_comp_act_opacity_win_finder(obj);
+ if (!cw) return;
+ opacity = atoi(params);
+ opacity = E_CLAMP(opacity, -255, 255);
+ opacity += cw->opacity;
+ opacity = MAX(0, opacity);
+ e_comp_win_opacity_set(cw, opacity);
+}
+
+static void
+_e_comp_act_opacity_set_go(E_Object * obj __UNUSED__, const char *params)
+{
+ int opacity;
+ E_Comp_Win *cw;
+
+ if ((!params) || (!params[0])) return;
+ cw = _e_comp_act_opacity_win_finder(obj);
+ if (!cw) return;
+ opacity = atoi(params);
+ opacity = E_CLAMP(opacity, 0, 255);
+ e_comp_win_opacity_set(cw, opacity);
+}
+
//////////////////////////////////////////////////////////////////////////
EINTERN Eina_Bool
@@ -4555,7 +4596,6 @@
E_LIST_HANDLER_APPEND(handlers, ECORE_X_EVENT_WINDOW_REPARENT, _e_comp_reparent, NULL);
E_LIST_HANDLER_APPEND(handlers, ECORE_X_EVENT_WINDOW_CONFIGURE, _e_comp_configure, NULL);
E_LIST_HANDLER_APPEND(handlers, ECORE_X_EVENT_WINDOW_STACK, _e_comp_stack, NULL);
- E_LIST_HANDLER_APPEND(handlers, ECORE_X_EVENT_WINDOW_PROPERTY, _e_comp_property, NULL);
E_LIST_HANDLER_APPEND(handlers, ECORE_X_EVENT_CLIENT_MESSAGE, _e_comp_message, NULL);
E_LIST_HANDLER_APPEND(handlers, ECORE_X_EVENT_WINDOW_SHAPE, _e_comp_shape, NULL);
E_LIST_HANDLER_APPEND(handlers, ECORE_X_EVENT_DAMAGE_NOTIFY, _e_comp_damage, NULL);
@@ -4609,6 +4649,23 @@
gl_avail = EINA_TRUE;
}
+ {
+ E_Action *act;
+
+ act = e_action_add("opacity_change");
+ act->func.go = _e_comp_act_opacity_change_go;
+ e_action_predef_name_set(N_("Compositor"),
+ N_("Change current window opacity"), "opacity_change",
+ NULL, "syntax: +/- the amount to change opacity by (>0 for more opaque)", 1);
+ actions = eina_list_append(actions, act);
+ act = e_action_add("opacity_set");
+ act->func.go = _e_comp_act_opacity_set_go;
+ e_action_predef_name_set(N_("Compositor"),
+ N_("Set current window opacity"), "opacity_set",
+ "255", "syntax: number between 0-255 to set for transparent-opaque", 1);
+ actions = eina_list_append(actions, act);
+ }
+
#ifdef HAVE_WAYLAND_CLIENTS
if (!e_comp_wl_init())
EINA_LOG_ERR("Failed to initialize Wayland Client Support !!");
@@ -4642,6 +4699,7 @@
E_FN_DEL(ecore_timer_del, action_timeout);
E_FREE_LIST(compositors, _e_comp_del);
E_FREE_LIST(handlers, ecore_event_handler_del);
+ E_FREE_LIST(actions, e_object_del);
#ifdef HAVE_WAYLAND_CLIENTS
e_comp_wl_shutdown();
@@ -5079,6 +5137,20 @@
eina_hash_add(ignores, e_util_winid_str_get(win), (void*)1);
}
+EAPI void
+e_comp_win_opacity_set(E_Comp_Win *cw, unsigned int opacity)
+{
+ EINA_SAFETY_ON_NULL_RETURN(cw);
+ if (opacity == cw->opacity) return;
+ opacity = MIN(opacity, 255);
+ cw->opacity = opacity;
+ if (cw->bd)
+ {
+ if (cw->opacity_set_timer) ecore_timer_reset(cw->opacity_set_timer);
+ else cw->opacity_set_timer = ecore_timer_add(5.0, (Ecore_Task_Cb)_e_comp_opacity_set_timer_cb, cw);
+ }
+ evas_object_color_set(cw->shobj, cw->opacity, cw->opacity, cw->opacity, cw->opacity);
+}
EAPI void
e_comp_override_del(E_Comp *c)
Modified: trunk/e/src/bin/e_comp.h
===================================================================
--- trunk/e/src/bin/e_comp.h 2013-02-22 09:33:11 UTC (rev 84302)
+++ trunk/e/src/bin/e_comp.h 2013-02-22 09:33:13 UTC (rev 84303)
@@ -145,6 +145,7 @@
int pending_count; // pending event count
unsigned int opacity; // opacity set with _NET_WM_WINDOW_OPACITY
+ Ecore_Timer *opacity_set_timer; // timer for setting opacity in ecore-x to avoid roundtrips
char *title, *name, *clas, *role; // fetched for override-redirect windowa
Ecore_X_Window_Type primary_type; // fetched for override-redirect windowa
@@ -227,8 +228,8 @@
EAPI const Eina_List *e_comp_win_list_get(E_Comp *c);
EAPI Evas_Object *e_comp_win_image_mirror_add(E_Comp_Win *cw);
EAPI void e_comp_win_hidden_set(E_Comp_Win *cw, Eina_Bool hidden);
+EAPI void e_comp_win_opacity_set(E_Comp_Win *cw, unsigned int opacity);
-
EAPI E_Comp *e_comp_get(void *o);
EAPI Ecore_X_Window e_comp_top_window_at_xy_get(E_Comp *c, Evas_Coord x, Evas_Coord y, Ecore_X_Window *ignore, unsigned int ignore_num);
Modified: trunk/e/src/bin/e_int_border_remember.c
===================================================================
--- trunk/e/src/bin/e_int_border_remember.c 2013-02-22 09:33:11 UTC (rev 84302)
+++ trunk/e/src/bin/e_int_border_remember.c 2013-02-22 09:33:13 UTC (rev 84303)
@@ -18,7 +18,7 @@
E_REMEMBER_APPLY_DESKTOP | E_REMEMBER_APPLY_SHADE | E_REMEMBER_APPLY_ZONE | \
E_REMEMBER_APPLY_SKIP_WINLIST | E_REMEMBER_APPLY_SKIP_PAGER | \
E_REMEMBER_APPLY_SKIP_TASKBAR | E_REMEMBER_APPLY_FULLSCREEN | E_REMEMBER_APPLY_ICON_PREF | \
- E_REMEMBER_APPLY_OFFER_RESISTANCE
+ E_REMEMBER_APPLY_OFFER_RESISTANCE | E_REMEMBER_APPLY_OPACITY
struct _E_Config_Dialog_Data
{
E_Border *border;
@@ -61,6 +61,7 @@
int set_focus_on_start;
int keep_settings;
int offer_resistance;
+ int apply_opacity;
} remember;
int applied;
@@ -275,6 +276,8 @@
cfdata->remember.set_focus_on_start = 1;
if (rem->apply & E_REMEMBER_APPLY_OFFER_RESISTANCE)
cfdata->remember.offer_resistance = 1;
+ if (rem->apply & E_REMEMBER_APPLY_OPACITY)
+ cfdata->remember.apply_opacity = 1;
}
if (!rem) cfdata->mode = MODE_NOTHING;
@@ -604,6 +607,8 @@
rem->apply |= E_REMEMBER_SET_FOCUS_ON_START;
if (cfdata->remember.offer_resistance)
rem->apply |= E_REMEMBER_APPLY_OFFER_RESISTANCE;
+ if (cfdata->remember.apply_opacity)
+ rem->apply |= E_REMEMBER_APPLY_OPACITY;
if (bd && (!rem->apply && !rem->prop.desktop_file))
{
@@ -733,6 +738,7 @@
e_widget_toolbook_page_append(o, NULL, _("Identifiers"), of, 1, 1, 1, 1, 0.5, 0.0);
of = e_widget_table_add(evas, 0);
+ e_widget_table_freeze(of);
ob = e_widget_check_add(evas, _("Position"),
&(cfdata->remember.apply_pos));
e_widget_table_object_append(of, ob, 0, 0, 1, 1, 1, 0, 1, 0);
@@ -778,12 +784,15 @@
ob = e_widget_check_add(evas, _("Offer Resistance"),
&(cfdata->remember.offer_resistance));
e_widget_table_object_append(of, ob, 1, 7, 1, 1, 1, 0, 1, 0);
+ ob = e_widget_check_add(evas, _("Opacity"),
+ &(cfdata->remember.apply_opacity));
+ e_widget_table_object_append(of, ob, 0, 7, 1, 1, 1, 0, 1, 0);
oc = e_widget_check_add(evas, _("Application file or name (.desktop)"),
&(cfdata->remember.apply_desktop_file));
- e_widget_table_object_append(of, oc, 0, 7, 1, 1, 1, 0, 1, 0);
+ e_widget_table_object_append(of, oc, 0, 8, 1, 1, 1, 0, 1, 0);
ob = e_widget_entry_add(evas, &cfdata->desktop, NULL, NULL, NULL);
e_widget_check_widget_disable_on_unchecked_add(oc, ob);
- e_widget_table_object_append(of, ob, 0, 8, 2, 1, 1, 0, 1, 0);
+ e_widget_table_object_append(of, ob, 0, 9, 2, 1, 1, 0, 1, 0);
e_widget_toolbook_page_append(o, NULL, _("Properties"), of, 1, 1, 1, 1, 0.5, 0.0);
of = e_widget_table_add(evas, 0);
@@ -805,6 +814,7 @@
&(cfdata->remember.apply_run));
e_widget_table_object_append(of, ob, 0, 3, 1, 1, 1, 0, 1, 0);
}
+ e_widget_table_thaw(of);
e_widget_toolbook_page_append(o, NULL, _("Options"), of, 1, 1, 1, 1, 0.5, 0.0);
e_widget_toolbook_page_show(o, 0);
Modified: trunk/e/src/bin/e_main.c
===================================================================
--- trunk/e/src/bin/e_main.c 2013-02-22 09:33:11 UTC (rev 84302)
+++ trunk/e/src/bin/e_main.c 2013-02-22 09:33:13 UTC (rev 84303)
@@ -674,6 +674,17 @@
e_screensaver_preinit();
if (e_config->show_splash)
+ e_init_status_set(_("Setup Actions"));
+ TS("E_Actions Init");
+ if (!e_actions_init())
+ {
+ e_error_message_show(_("Enlightenment cannot set up its actions system.\n"));
+ _e_main_shutdown(-1);
+ }
+ TS("E_Actions Init Done");
+ _e_main_shutdown_push(e_actions_shutdown);
+
+ if (e_config->show_splash)
e_init_status_set(_("Setup Screens"));
TS("Screens Init");
if (!_e_main_screens_init())
@@ -788,17 +799,6 @@
_e_main_shutdown_push(e_sys_shutdown);
if (e_config->show_splash)
- e_init_status_set(_("Setup Actions"));
- TS("E_Actions Init");
- if (!e_actions_init())
- {
- e_error_message_show(_("Enlightenment cannot set up its actions system.\n"));
- _e_main_shutdown(-1);
- }
- TS("E_Actions Init Done");
- _e_main_shutdown_push(e_actions_shutdown);
-
- if (e_config->show_splash)
e_init_status_set(_("Setup Execution System"));
TS("E_Exec Init");
if (!e_exec_init())
Modified: trunk/e/src/bin/e_remember.c
===================================================================
--- trunk/e/src/bin/e_remember.c 2013-02-22 09:33:11 UTC (rev 84302)
+++ trunk/e/src/bin/e_remember.c 2013-02-22 09:33:13 UTC (rev 84303)
@@ -117,7 +117,8 @@
E_REMEMBER_APPLY_SKIP_WINLIST |
E_REMEMBER_APPLY_SKIP_PAGER |
E_REMEMBER_APPLY_SKIP_TASKBAR |
- E_REMEMBER_APPLY_OFFER_RESISTANCE);
+ E_REMEMBER_APPLY_OFFER_RESISTANCE |
+ E_REMEMBER_APPLY_OPACITY);
_e_remember_update(bd, rem);
remembers->list = eina_list_append(remembers->list, rem);
@@ -453,6 +454,8 @@
rem->prop.fullscreen = bd->fullscreen;
if (rem->apply & E_REMEMBER_APPLY_OFFER_RESISTANCE)
rem->prop.offer_resistance = bd->offer_resistance;
+ if (rem->apply & E_REMEMBER_APPLY_OPACITY)
+ rem->prop.opacity = bd->client.netwm.opacity;
rem->no_reopen = bd->internal_no_reopen;
{
E_Event_Remember_Update *ev;
@@ -899,6 +902,8 @@
bd->offer_resistance = rem->prop.offer_resistance;
if (rem->apply & E_REMEMBER_SET_FOCUS_ON_START)
bd->want_focus = 1;
+ if (rem->apply & E_REMEMBER_APPLY_OPACITY)
+ bd->client.netwm.opacity = rem->prop.opacity;
if (temporary)
_e_remember_free(rem);
@@ -972,6 +977,7 @@
E_CONFIG_VAL(D, T, prop.icon_preference, UCHAR);
E_CONFIG_VAL(D, T, prop.desktop_file, STR);
E_CONFIG_VAL(D, T, prop.offer_resistance, UCHAR);
+ E_CONFIG_VAL(D, T, prop.opacity, UCHAR);
#undef T
#undef D
e_remember_list_edd = E_CONFIG_DD_NEW("E_Remember_List", E_Remember_List);
Modified: trunk/e/src/bin/e_remember.h
===================================================================
--- trunk/e/src/bin/e_remember.h 2013-02-22 09:33:11 UTC (rev 84302)
+++ trunk/e/src/bin/e_remember.h 2013-02-22 09:33:13 UTC (rev 84303)
@@ -32,6 +32,7 @@
#define E_REMEMBER_SET_FOCUS_ON_START (1 << 14)
#define E_REMEMBER_APPLY_FULLSCREEN (1 << 15)
#define E_REMEMBER_APPLY_OFFER_RESISTANCE (1 << 16)
+#define E_REMEMBER_APPLY_OPACITY (1 << 17)
#define E_REMEMBER_INTERNAL_DIALOGS (1 << 0)
#define E_REMEMBER_INTERNAL_FM_WINS (1 << 1)
@@ -104,6 +105,7 @@
int head;
const char *command;
const char *desktop_file;
+ unsigned char opacity;
} prop;
};
|