From a6d2dc7ffa90d7b49800863d5e3827a30f7acce3 Mon Sep 17 00:00:00 2001 From: Gwanglim Lee Date: Wed, 21 Sep 2016 14:50:33 +0900 Subject: [PATCH] e_remeber: get rid of e_remeber that is unnecessary for the tizen. Change-Id: I5b9e711a6382628564acae92e20883e025c14e1d --- src/bin/Makefile.mk | 2 - src/bin/e_client.c | 54 +--- src/bin/e_client.h | 6 +- src/bin/e_includes.h | 1 - src/bin/e_main.c | 10 - src/bin/e_policy.c | 18 -- src/bin/e_remember.c | 769 --------------------------------------------------- src/bin/e_remember.h | 128 --------- src/bin/e_win.c | 5 - 9 files changed, 14 insertions(+), 979 deletions(-) delete mode 100644 src/bin/e_remember.c delete mode 100644 src/bin/e_remember.h diff --git a/src/bin/Makefile.mk b/src/bin/Makefile.mk index 1c5d826..3bb0c7c 100644 --- a/src/bin/Makefile.mk +++ b/src/bin/Makefile.mk @@ -66,7 +66,6 @@ src/bin/e_place.h \ src/bin/e_plane.h \ src/bin/e_pointer.h \ src/bin/e_prefix.h \ -src/bin/e_remember.h \ src/bin/e_plane_renderer.h \ src/bin/e_resist.h \ src/bin/e_scale.h \ @@ -152,7 +151,6 @@ src/bin/e_place.c \ src/bin/e_plane.c \ src/bin/e_pointer.c \ src/bin/e_prefix.c \ -src/bin/e_remember.c \ src/bin/e_plane_renderer.c \ src/bin/e_resist.c \ src/bin/e_scale.c \ diff --git a/src/bin/e_client.c b/src/bin/e_client.c index 1a573dd..2d29018 100644 --- a/src/bin/e_client.c +++ b/src/bin/e_client.c @@ -762,14 +762,6 @@ _e_client_free(E_Client *ec) E_FREE_FUNC(ec->map_timer, ecore_timer_del); - if (ec->remember) - { - E_Remember *rem; - - rem = ec->remember; - ec->remember = NULL; - e_remember_unuse(rem); - } ec->group = eina_list_free(ec->group); ec->transients = eina_list_free(ec->transients); ec->stick_desks = eina_list_free(ec->stick_desks); @@ -1704,7 +1696,6 @@ _e_client_cb_evas_move(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UN _e_client_transform_geometry_save(ec, (Evas_Map *)evas_object_map_get(ec->frame)); - e_remember_update(ec); ec->pre_cb.x = x; ec->pre_cb.y = y; e_client_visibility_calculate(); @@ -1748,7 +1739,6 @@ _e_client_cb_evas_resize(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_ if (e_client_util_resizing_get(ec) || (ecresize == ec)) _e_client_hook_call(E_CLIENT_HOOK_RESIZE_UPDATE, ec); - e_remember_update(ec); ec->pre_cb.w = w; ec->pre_cb.h = h; e_client_transform_core_update(ec); @@ -1804,7 +1794,6 @@ _e_client_cb_evas_restack(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA } } if (ec->unredirected_single) return; - e_remember_update(ec); _e_client_event_simple(ec, E_EVENT_CLIENT_STACK); e_client_visibility_calculate(); @@ -2015,7 +2004,6 @@ _e_client_aux_hint_eval(E_Client *ec) static void _e_client_eval(E_Client *ec) { - int rem_change = 0; int send_event = 1; unsigned int prop = 0; @@ -2195,9 +2183,7 @@ _e_client_eval(E_Client *ec) /* Recreate state */ if (!ec->override) e_hints_window_init(ec); - if ((ec->e.state.centered) && - ((!ec->remember) || - ((ec->remember) && (!(ec->remember->apply & E_REMEMBER_APPLY_POS))))) + if (ec->e.state.centered) { ec->x = zx + (zw - ec->w) / 2; ec->y = zy + (zh - ec->h) / 2; @@ -2277,7 +2263,6 @@ _e_client_eval(E_Client *ec) //ecore_x_window_raise(ec->win); ec->changes.shading = 0; send_event = 0; - rem_change = 1; } if (ec->changes.shaded) send_event = 0; if ((ec->changes.shaded) && (ec->changes.pos) && (ec->changes.size)) @@ -2287,7 +2272,6 @@ _e_client_eval(E_Client *ec) //else //ecore_x_window_raise(ec->win); ec->changes.shaded = 0; - rem_change = 1; } else if ((ec->changes.shaded) && (ec->changes.pos)) { @@ -2297,7 +2281,6 @@ _e_client_eval(E_Client *ec) //ecore_x_window_raise(ec->win); ec->changes.size = 1; ec->changes.shaded = 0; - rem_change = 1; } else if ((ec->changes.shaded) && (ec->changes.size)) { @@ -2306,7 +2289,6 @@ _e_client_eval(E_Client *ec) //else //ecore_x_window_raise(ec->win); ec->changes.shaded = 0; - rem_change = 1; } else if (ec->changes.shaded) { @@ -2315,7 +2297,6 @@ _e_client_eval(E_Client *ec) //else //ecore_x_window_raise(ec->win); ec->changes.shaded = 0; - rem_change = 1; } if (ec->changes.size) @@ -2324,21 +2305,18 @@ _e_client_eval(E_Client *ec) if ((!ec->shaded) && (!ec->shading)) evas_object_resize(ec->frame, ec->w, ec->h); - rem_change = 1; prop |= E_CLIENT_PROPERTY_SIZE; } if (ec->changes.pos) { ec->changes.pos = 0; evas_object_move(ec->frame, ec->x, ec->y); - rem_change = 1; prop |= E_CLIENT_PROPERTY_POS; } if (ec->changes.reset_gravity) { ec->changes.reset_gravity = 0; - rem_change = 1; prop |= E_CLIENT_PROPERTY_GRAVITY; } @@ -2395,7 +2373,6 @@ _e_client_eval(E_Client *ec) evas_object_focus_set(ec->frame, 1); } ec->changes.visible = 0; - rem_change = 1; _e_client_event_simple(ec, E_EVENT_CLIENT_SHOW); } } @@ -2483,10 +2460,7 @@ _e_client_eval(E_Client *ec) ec->need_fullscreen = 0; } - if (rem_change) - e_remember_update(ec); - - if (send_event && rem_change && prop) + if (send_event && prop) { _e_client_event_property(ec, prop); } @@ -3600,7 +3574,6 @@ e_client_desk_set(E_Client *ec, E_Desk *desk) e_client_desk_set(child, ec->desk); } - e_remember_update(ec); _e_client_hook_call(E_CLIENT_HOOK_DESK_SET, ec); evas_object_smart_callback_call(ec->frame, "desk_change", ec); } @@ -4012,7 +3985,6 @@ e_client_zone_set(E_Client *ec, E_Zone *zone) ecore_event_add(E_EVENT_CLIENT_ZONE_SET, ev, (Ecore_End_Cb)_e_client_event_zone_set_free, NULL); - e_remember_update(ec); e_client_res_change_geometry_save(ec); e_client_res_change_geometry_restore(ec); ec->pre_res_change.valid = 0; @@ -4525,8 +4497,6 @@ e_client_shade(E_Client *ec, E_Direction dir) ec->shade_dir = dir; evas_object_smart_callback_call(ec->frame, "shaded", (uintptr_t*)dir); - - e_remember_update(ec); } E_API void @@ -4543,8 +4513,6 @@ e_client_unshade(E_Client *ec, E_Direction dir) ec->shade_dir = 0; evas_object_smart_callback_call(ec->frame, "unshaded", (uintptr_t*)dir); - - e_remember_update(ec); } /////////////////////////////////////// @@ -4607,7 +4575,6 @@ e_client_maximize(E_Client *ec, E_Maximize max) else e_hints_window_maximized_set(ec, ec->maximized & E_MAXIMIZE_HORIZONTAL, ec->maximized & E_MAXIMIZE_VERTICAL); - e_remember_update(ec); evas_object_smart_callback_call(ec->frame, "maximize_done", NULL); } @@ -4719,7 +4686,6 @@ e_client_unmaximize(E_Client *ec, E_Maximize max) e_hints_window_maximized_set(ec, ec->maximized & E_MAXIMIZE_HORIZONTAL, ec->maximized & E_MAXIMIZE_VERTICAL); } - e_remember_update(ec); evas_object_smart_callback_call(ec->frame, "unmaximize_done", NULL); ec->changes.need_unmaximize = 0; } @@ -4799,8 +4765,6 @@ e_client_fullscreen(E_Client *ec, E_Fullscreen policy) evas_object_smart_callback_call(ec->frame, "fullscreen", NULL); _e_client_event_simple(ec, E_EVENT_CLIENT_FULLSCREEN); - - e_remember_update(ec); } E_API void @@ -4836,7 +4800,6 @@ e_client_unfullscreen(E_Client *ec) e_hints_window_fullscreen_set(ec, 0); _e_client_event_simple(ec, E_EVENT_CLIENT_UNFULLSCREEN); - e_remember_update(ec); if (!ec->desk->fullscreen_clients) e_comp_render_queue(); } @@ -4886,8 +4849,6 @@ e_client_iconify(E_Client *ec) _e_client_hook_call(E_CLIENT_HOOK_ICONIFY, ec); - e_remember_update(ec); - if (e_config->use_buffer_flush) e_pixmap_buffer_clear(ec->pixmap); @@ -4947,7 +4908,6 @@ e_client_uniconify(E_Client *ec) ec->exp_iconify.not_raise = 0; ec->exp_iconify.by_client = 0; - e_remember_update(ec); TRACE_DS_END(); } @@ -5010,7 +4970,6 @@ e_client_stick(E_Client *ec) } _e_client_event_property(ec, E_CLIENT_PROPERTY_STICKY); - e_remember_update(ec); } E_API void @@ -5045,7 +5004,6 @@ e_client_unstick(E_Client *ec) _e_client_event_property(ec, E_CLIENT_PROPERTY_STICKY); e_client_desk_set(ec, e_desk_current_get(ec->zone)); - e_remember_update(ec); } E_API void @@ -6147,3 +6105,11 @@ e_client_mouse_move_send(E_Client *ec, int x, int y, Ecore_Device *dev, unsigned return res; } + +/* TODO: should be removed */ +E_API void +e_remember_del(void *rem) +{ + /* do nothing */ + return; +} diff --git a/src/bin/e_client.h b/src/bin/e_client.h index 5f48eab..25b299f 100644 --- a/src/bin/e_client.h +++ b/src/bin/e_client.h @@ -735,7 +735,7 @@ struct E_Client unsigned int stolen : 1; unsigned int internal : 1; - unsigned int internal_no_remember : 1; + unsigned int internal_no_remember : 1; /* TODO: should be removed */ unsigned int internal_no_reopen : 1; Eina_Bool dead : 1; @@ -765,7 +765,7 @@ struct E_Client } drag; E_Client_Move_Intercept_Cb move_intercept_cb; - E_Remember *remember; + void *remember; /* TODO: should be removed */ unsigned char comp_hidden : 1; @@ -1033,6 +1033,8 @@ E_API Eina_Bool e_client_touch_cancel_send(E_Client *ec); E_API Eina_Bool e_client_mouse_button_send(E_Client *ec, int buttons, Eina_Bool pressed, Ecore_Device *dev, unsigned int time); E_API Eina_Bool e_client_mouse_move_send(E_Client *ec, int x, int y, Ecore_Device *dev, unsigned int time); +E_API void e_remember_del(void *rem); /* TODO: should be removed */ + /** * Move window to coordinates that do not account client decorations yet. * diff --git a/src/bin/e_includes.h b/src/bin/e_includes.h index a744ace..bd804af 100644 --- a/src/bin/e_includes.h +++ b/src/bin/e_includes.h @@ -29,7 +29,6 @@ #include "e_maximize.h" #include "e_grabinput.h" #include "e_bg.h" -#include "e_remember.h" #include "e_win.h" #include "e_zoomap.h" #include "e_dialog.h" diff --git a/src/bin/e_main.c b/src/bin/e_main.c index 3d2432f..66e9292 100644 --- a/src/bin/e_main.c +++ b/src/bin/e_main.c @@ -641,15 +641,6 @@ main(int argc, char **argv) TS("E_Module Init Done"); _e_main_shutdown_push(e_module_shutdown); - TS("E_Remember Init"); - if (!e_remember_init()) - { - e_error_message_show(_("Enlightenment cannot setup remember settings.\n")); - _e_main_shutdown(-1); - } - TS("E_Remember Init Done"); - _e_main_shutdown_push(e_remember_shutdown); - TS("E_Mouse Init"); if (!e_mouse_update()) { @@ -718,7 +709,6 @@ main(int argc, char **argv) stopping = EINA_TRUE; _e_main_desk_save(); - e_remember_internal_save(); e_comp_internal_save(); _e_main_shutdown(0); diff --git a/src/bin/e_policy.c b/src/bin/e_policy.c index 48750f7..fb923a8 100644 --- a/src/bin/e_policy.c +++ b/src/bin/e_policy.c @@ -244,15 +244,6 @@ _e_policy_client_maximize_policy_apply(E_Policy_Client *pc) _e_policy_client_launcher_set(pc); - if (ec->remember) - { - e_remember_del(ec->remember); - ec->remember = NULL; - } - - /* skip hooks of e_remeber for eval_pre_post_fetch and eval_post_new_client */ - ec->internal_no_remember = 1; - if (!ec->borderless) { ec->borderless = 1; @@ -459,15 +450,6 @@ _e_policy_client_split_policy_apply(E_Policy_Client *pc) _SET(lock_client_fullscreen); #undef _SET - if (ec->remember) - { - e_remember_del(ec->remember); - ec->remember = NULL; - } - - /* skip hooks of e_remeber for eval_pre_post_fetch and eval_post_new_client */ - ec->internal_no_remember = 1; - if (!ec->borderless) { ec->borderless = 1; diff --git a/src/bin/e_remember.c b/src/bin/e_remember.c deleted file mode 100644 index 89961c7..0000000 --- a/src/bin/e_remember.c +++ /dev/null @@ -1,769 +0,0 @@ -#include "e.h" - -E_API int E_EVENT_REMEMBER_UPDATE = -1; -E_API E_Config_DD *e_remember_edd = NULL; // created in e_config.c - -typedef struct _E_Remember_List E_Remember_List; - -struct _E_Remember_List -{ - Eina_List *list; -}; - -/* local subsystem functions */ -static void _e_remember_free(E_Remember *rem); -static void _e_remember_update(E_Client *ec, E_Remember *rem); -static E_Remember *_e_remember_find(E_Client *ec, int check_usable); -static void _e_remember_cb_hook_pre_post_fetch(void *data, E_Client *ec); -static void _e_remember_init_edd(void); -static Eina_Bool _e_remember_restore_cb(void *data, int type, void *event); - -/* local subsystem globals */ -static Eina_List *hooks = NULL; -static E_Config_DD *e_remember_list_edd = NULL; -static E_Remember_List *remembers = NULL; -static Eina_List *handlers = NULL; -static Ecore_Idler *remember_idler = NULL; -static Eina_List *remember_idler_list = NULL; - -/* externally accessible functions */ -EINTERN int -e_remember_init(void) -{ - E_Client_Hook *h; - - E_EVENT_REMEMBER_UPDATE = ecore_event_type_new(); - - h = e_client_hook_add(E_CLIENT_HOOK_EVAL_PRE_POST_FETCH, - _e_remember_cb_hook_pre_post_fetch, NULL); - if (h) hooks = eina_list_append(hooks, h); - - _e_remember_init_edd(); - remembers = e_config_domain_load("e_remember_restart", e_remember_list_edd); - - if (remembers) - { - handlers = eina_list_append - (handlers, ecore_event_handler_add - (E_EVENT_MODULE_INIT_END, _e_remember_restore_cb, NULL)); - } - - return 1; -} - -EINTERN int -e_remember_shutdown(void) -{ - E_FREE_LIST(hooks, e_client_hook_del); - - E_CONFIG_DD_FREE(e_remember_edd); - E_CONFIG_DD_FREE(e_remember_list_edd); - - E_FREE_LIST(handlers, ecore_event_handler_del); - if (remember_idler) ecore_idler_del(remember_idler); - remember_idler = NULL; - remember_idler_list = eina_list_free(remember_idler_list); - - return 1; -} - -E_API void -e_remember_internal_save(void) -{ - const Eina_List *l; - E_Client *ec; - E_Remember *rem; - - //printf("internal save %d\n", restart); - if (!remembers) - remembers = E_NEW(E_Remember_List, 1); - else - { - EINA_LIST_FREE(remembers->list, rem) - _e_remember_free(rem); - remember_idler_list = eina_list_free(remember_idler_list); - } - - EINA_LIST_FOREACH(e_comp->clients, l, ec) - { - if ((!ec->internal) || e_client_util_ignored_get(ec)) continue; - - rem = E_NEW(E_Remember, 1); - if (!rem) break; - - e_remember_default_match_set(rem, ec); - rem->apply = (E_REMEMBER_APPLY_POS | E_REMEMBER_APPLY_SIZE | - E_REMEMBER_APPLY_BORDER | E_REMEMBER_APPLY_LAYER | - E_REMEMBER_APPLY_SHADE | E_REMEMBER_APPLY_ZONE | - E_REMEMBER_APPLY_DESKTOP | E_REMEMBER_APPLY_LOCKS | - E_REMEMBER_APPLY_SKIP_WINLIST | - E_REMEMBER_APPLY_SKIP_PAGER | - E_REMEMBER_APPLY_SKIP_TASKBAR | - E_REMEMBER_APPLY_OFFER_RESISTANCE | - E_REMEMBER_APPLY_OPACITY); - _e_remember_update(ec, rem); - - remembers->list = eina_list_append(remembers->list, rem); - } - - e_config_domain_save("e_remember_restart", e_remember_list_edd, remembers); -} - -static Eina_Bool -_e_remember_restore_idler_cb(void *d EINA_UNUSED) -{ - E_Remember *rem; - E_Action *act_fm = NULL, *act; - Eina_Bool done = EINA_FALSE; - - EINA_LIST_FREE(remember_idler_list, rem) - { - if (!rem->class) continue; - if (rem->no_reopen) continue; - if (done) break; - - if (!strncmp(rem->class, "e_fwin::", 8)) - { - if (!act_fm) - act_fm = e_action_find("fileman"); - if (!act_fm) continue; - /* at least '/' */ - if (!rem->class[9]) continue; - - act_fm->func.go(NULL, rem->class + 8); - } - else if (!strncmp(rem->class, "_config::", 9)) - { - char *param = NULL; - char path[1024]; - const char *p; - - p = rem->class + 9; - if ((param = strstr(p, "::"))) - { - snprintf(path, (param - p) + sizeof(char), "%s", p); - param = param + 2; - } - else - snprintf(path, sizeof(path), "%s", p); - - //if (e_configure_registry_exists(path)) - // { - // e_configure_registry_call(path, NULL, param); - // } - } - else if (!strcmp(rem->class, "_configure")) - { - /* TODO this is just for settings panel. it could also - use e_configure_registry_item_add */ - /* ..or make a general path for window that are started - by actions */ - - act = e_action_find("configuration"); - if (act) - act->func.go(NULL, NULL); - } - done = EINA_TRUE; - } - if (!done) remember_idler = NULL; - - return done; -} - -static Eina_Bool -_e_remember_restore_cb(void *data EINA_UNUSED, int type EINA_UNUSED, void *event EINA_UNUSED) -{ - handlers = eina_list_free(handlers); - if (!remembers->list) return ECORE_CALLBACK_PASS_ON; - remember_idler_list = eina_list_clone(remembers->list); - remember_idler = ecore_idler_add(_e_remember_restore_idler_cb, NULL); - return ECORE_CALLBACK_PASS_ON; -} - -E_API E_Remember * -e_remember_new(void) -{ - E_Remember *rem; - - rem = E_NEW(E_Remember, 1); - if (!rem) return NULL; - return rem; -} - -E_API int -e_remember_usable_get(E_Remember *rem) -{ - if ((rem->apply_first_only) && (rem->used_count > 0)) return 0; - return 1; -} - -E_API void -e_remember_use(E_Remember *rem) -{ - rem->used_count++; - if (rem->version < E_REMEMBER_VERSION) - { - /* upgrade remembers as they get used */ - switch (rem->version) - { - case 0: - rem->prop.opacity = 255; //don't let people wreck themselves with old configs - //fall through - default: break; - } - rem->version = E_REMEMBER_VERSION; - e_config_save_queue(); - } -} - -E_API void -e_remember_unuse(E_Remember *rem) -{ - rem->used_count--; -} - -E_API void -e_remember_del(E_Remember *rem) -{ - const Eina_List *l; - E_Client *ec; - - EINA_LIST_FOREACH(e_comp->clients, l, ec) - { - if (ec->remember != rem) continue; - - ec->remember = NULL; - e_remember_unuse(rem); - } - - _e_remember_free(rem); -} - -E_API E_Remember * -e_remember_find_usable(E_Client *ec) -{ - E_Remember *rem; - - rem = _e_remember_find(ec, 1); - return rem; -} - -E_API E_Remember * -e_remember_find(E_Client *ec) -{ - E_Remember *rem; - - rem = _e_remember_find(ec, 0); - return rem; -} - -E_API void -e_remember_match_update(E_Remember *rem) -{ - ; -} - -E_API int -e_remember_default_match_set(E_Remember *rem, E_Client *ec) -{ - const char *title, *clasz, *name, *role; - int match; - - eina_stringshare_replace(&rem->name, NULL); - eina_stringshare_replace(&rem->class, NULL); - eina_stringshare_replace(&rem->title, NULL); - eina_stringshare_replace(&rem->role, NULL); - - name = ec->icccm.name; - if (!name || name[0] == 0) name = NULL; - clasz = ec->icccm.class; - if (!clasz || clasz[0] == 0) clasz = NULL; - role = ec->icccm.window_role; - if (!role || role[0] == 0) role = NULL; - - match = E_REMEMBER_MATCH_TRANSIENT; - if (ec->icccm.transient_for != 0) - rem->transient = 1; - else - rem->transient = 0; - - if (name && clasz) - { - match |= E_REMEMBER_MATCH_NAME | E_REMEMBER_MATCH_CLASS; - rem->name = eina_stringshare_ref(name); - rem->class = eina_stringshare_ref(clasz); - } - else if ((title = e_client_util_name_get(ec)) && title[0]) - { - match |= E_REMEMBER_MATCH_TITLE; - rem->title = eina_stringshare_ref(title); - } - if (role) - { - match |= E_REMEMBER_MATCH_ROLE; - rem->role = eina_stringshare_ref(role); - } - if (ec->netwm.type != E_WINDOW_TYPE_UNKNOWN) - { - match |= E_REMEMBER_MATCH_TYPE; - rem->type = ec->netwm.type; - } - - rem->match = match; - - return match; -} - -E_API void -e_remember_update(E_Client *ec) -{ - /* Use this as e_remeber_update is called in all the right places already */ - e_uuid_store_entry_update(ec->uuid, ec); - if (ec->new_client) return; - if (!ec->remember) return; - if (ec->remember->keep_settings) return; - _e_remember_update(ec, ec->remember); - e_config_save_queue(); -} - -static void -_e_remember_event_free(void *d EINA_UNUSED, void *event) -{ - E_Event_Remember_Update *ev = event; - UNREFD(ev->ec, 10); - e_object_unref(E_OBJECT(ev->ec)); - free(ev); -} - -static void -_e_remember_update(E_Client *ec, E_Remember *rem) -{ - if (rem->apply & E_REMEMBER_APPLY_POS || - rem->apply & E_REMEMBER_APPLY_SIZE) - { - if (ec->fullscreen || ec->maximized) - { - rem->prop.pos_x = ec->saved.x; - rem->prop.pos_y = ec->saved.y; - rem->prop.pos_w = ec->saved.w; - rem->prop.pos_h = ec->saved.h; - } - else - { - rem->prop.pos_x = ec->x - ec->zone->x; - rem->prop.pos_y = ec->y - ec->zone->y; - rem->prop.res_x = ec->zone->w; - rem->prop.res_y = ec->zone->h; - rem->prop.pos_w = ec->client.w; - rem->prop.pos_h = ec->client.h; - rem->prop.w = ec->client.w; - rem->prop.h = ec->client.h; - } - rem->prop.maximize = ec->maximized & E_MAXIMIZE_DIRECTION; - } - if (rem->apply & E_REMEMBER_APPLY_LAYER) - { - if (ec->fullscreen) - rem->prop.layer = ec->saved.layer; - else - rem->prop.layer = ec->layer; - } - if (rem->apply & E_REMEMBER_APPLY_LOCKS) - { - rem->prop.lock_user_location = ec->lock_user_location; - rem->prop.lock_client_location = ec->lock_client_location; - rem->prop.lock_user_size = ec->lock_user_size; - rem->prop.lock_client_size = ec->lock_client_size; - rem->prop.lock_user_stacking = ec->lock_user_stacking; - rem->prop.lock_client_stacking = ec->lock_client_stacking; - rem->prop.lock_user_iconify = ec->lock_user_iconify; - rem->prop.lock_client_iconify = ec->lock_client_iconify; - rem->prop.lock_user_desk = ec->lock_user_desk; - rem->prop.lock_client_desk = ec->lock_client_desk; - rem->prop.lock_user_sticky = ec->lock_user_sticky; - rem->prop.lock_client_sticky = ec->lock_client_sticky; - rem->prop.lock_user_shade = ec->lock_user_shade; - rem->prop.lock_client_shade = ec->lock_client_shade; - rem->prop.lock_user_maximize = ec->lock_user_maximize; - rem->prop.lock_client_maximize = ec->lock_client_maximize; - rem->prop.lock_user_fullscreen = ec->lock_user_fullscreen; - rem->prop.lock_client_fullscreen = ec->lock_client_fullscreen; - rem->prop.lock_border = ec->lock_border; - rem->prop.lock_close = ec->lock_close; - rem->prop.lock_focus_in = ec->lock_focus_in; - rem->prop.lock_focus_out = ec->lock_focus_out; - rem->prop.lock_life = ec->lock_life; - } - if (rem->apply & E_REMEMBER_APPLY_SHADE) - { - if (ec->shaded) - rem->prop.shaded = (100 + ec->shade_dir); - else - rem->prop.shaded = (50 + ec->shade_dir); - } - if (rem->apply & E_REMEMBER_APPLY_ZONE) - { - rem->prop.zone = ec->zone->num; - } - if (rem->apply & E_REMEMBER_APPLY_SKIP_WINLIST) - rem->prop.skip_winlist = ec->user_skip_winlist; - if (rem->apply & E_REMEMBER_APPLY_STICKY) - rem->prop.sticky = ec->sticky; - if (rem->apply & E_REMEMBER_APPLY_SKIP_PAGER) - rem->prop.skip_pager = ec->netwm.state.skip_pager; - if (rem->apply & E_REMEMBER_APPLY_SKIP_TASKBAR) - rem->prop.skip_taskbar = ec->netwm.state.skip_taskbar; - if (rem->apply & E_REMEMBER_APPLY_ICON_PREF) - rem->prop.icon_preference = ec->icon_preference; - if (rem->apply & E_REMEMBER_APPLY_DESKTOP) - e_desk_xy_get(ec->desk, &rem->prop.desk_x, &rem->prop.desk_y); - if (rem->apply & E_REMEMBER_APPLY_FULLSCREEN) - rem->prop.fullscreen = ec->fullscreen; - if (rem->apply & E_REMEMBER_APPLY_OFFER_RESISTANCE) - rem->prop.offer_resistance = ec->offer_resistance; - if (rem->apply & E_REMEMBER_APPLY_OPACITY) - rem->prop.opacity = ec->netwm.opacity; - if (rem->apply & E_REMEMBER_APPLY_BORDER) - { - if (ec->borderless) - eina_stringshare_replace(&rem->prop.border, "borderless"); - else - eina_stringshare_replace(&rem->prop.border, ec->bordername); - } - rem->no_reopen = ec->internal_no_reopen; - { - E_Event_Remember_Update *ev; - - ev = malloc(sizeof(E_Event_Remember_Update)); - if (!ev) return; - ev->ec = ec; - REFD(ec, 10); - e_object_ref(E_OBJECT(ec)); - ecore_event_add(E_EVENT_REMEMBER_UPDATE, ev, _e_remember_event_free, NULL); - } -} - -/* local subsystem functions */ -static E_Remember * -_e_remember_find(E_Client *ec, int check_usable) -{ - return NULL; -} - -static void -_e_remember_free(E_Remember *rem) -{ - if (rem->name) eina_stringshare_del(rem->name); - if (rem->class) eina_stringshare_del(rem->class); - if (rem->title) eina_stringshare_del(rem->title); - if (rem->role) eina_stringshare_del(rem->role); - if (rem->prop.border) eina_stringshare_del(rem->prop.border); - if (rem->prop.command) eina_stringshare_del(rem->prop.command); - if (rem->prop.desktop_file) eina_stringshare_del(rem->prop.desktop_file); - free(rem); -} - -static void -_e_remember_cb_hook_pre_post_fetch(void *data EINA_UNUSED, E_Client *ec) -{ - E_Remember *rem = NULL; - int temporary = 0; - - if ((!ec->new_client) || ec->internal_no_remember || e_client_util_ignored_get(ec)) return; - - if (!ec->remember) - { - rem = e_remember_find_usable(ec); - if (rem) - { - ec->remember = rem; - e_remember_use(rem); - } - } - - if (ec->internal && remembers && ec->icccm.class && ec->icccm.class[0]) - { - Eina_List *l; - EINA_LIST_FOREACH(remembers->list, l, rem) - { - if (rem->class && !strcmp(rem->class, ec->icccm.class)) - break; - } - if (rem) - { - temporary = 1; - remembers->list = eina_list_remove(remembers->list, rem); - remember_idler_list = eina_list_remove(remember_idler_list, rem); - if (!remembers->list) - e_config_domain_save("e_remember_restart", - e_remember_list_edd, remembers); - } - else rem = ec->remember; - } - - if (!rem) - return; - - if (rem->apply & E_REMEMBER_APPLY_ZONE) - { - E_Zone *zone; - - zone = e_comp_zone_number_get(rem->prop.zone); - if (zone) - e_client_zone_set(ec, zone); - } - if (rem->apply & E_REMEMBER_APPLY_DESKTOP) - { - E_Desk *desk; - - desk = e_desk_at_xy_get(ec->zone, rem->prop.desk_x, rem->prop.desk_y); - if (desk) - { - if (ec->desk != desk) - ec->hidden = 0; - e_client_desk_set(ec, desk); - } - } - if (rem->apply & E_REMEMBER_APPLY_SIZE) - { - int w, h; - - w = ec->client.w; - h = ec->client.h; - if (rem->prop.pos_w) - ec->client.w = rem->prop.pos_w; - if (rem->prop.pos_h) - ec->client.h = rem->prop.pos_h; - /* we can trust internal windows */ - if (ec->internal) - { - if (ec->zone->w != rem->prop.res_x) - { - if (ec->client.w > (ec->zone->w - 64)) - ec->client.w = ec->zone->w - 64; - } - if (ec->zone->h != rem->prop.res_y) - { - if (ec->client.h > (ec->zone->h - 64)) - ec->client.h = ec->zone->h - 64; - } - if (ec->icccm.min_w > ec->client.w) - ec->client.w = ec->icccm.min_w; - if ((ec->icccm.max_w > 0) && (ec->icccm.max_w < ec->client.w)) - ec->client.w = ec->icccm.max_w; - if (ec->icccm.min_h > ec->client.h) - ec->client.h = ec->icccm.min_h; - if ((ec->icccm.max_h > 0) && (ec->icccm.max_h < ec->client.h)) - ec->client.h = ec->icccm.max_h; - } - e_comp_object_frame_wh_adjust(ec->frame, ec->client.w, ec->client.h, &ec->w, &ec->h); - if (rem->prop.maximize) - { - ec->saved.x = rem->prop.pos_x; - ec->saved.y = rem->prop.pos_y; - ec->saved.w = ec->client.w; - ec->saved.h = ec->client.h; - ec->maximized = rem->prop.maximize | e_config->maximize_policy; - } - if ((w != ec->client.w) || (h != ec->client.h)) - { - ec->changes.size = 1; - ec->changes.shape = 1; - EC_CHANGED(ec); - } - } - if ((rem->apply & E_REMEMBER_APPLY_POS) && (!ec->re_manage)) - { - ec->x = rem->prop.pos_x; - ec->y = rem->prop.pos_y; - if (ec->zone->w != rem->prop.res_x) - { - int px; - - px = ec->x + (ec->w / 2); - if (px < ((rem->prop.res_x * 1) / 3)) - { - if (ec->zone->w >= (rem->prop.res_x / 3)) - ec->x = rem->prop.pos_x; - else - ec->x = ((rem->prop.pos_x - 0) * ec->zone->w) / - (rem->prop.res_x / 3); - } - else if (px < ((rem->prop.res_x * 2) / 3)) - { - if (ec->zone->w >= (rem->prop.res_x / 3)) - ec->x = (ec->zone->w / 2) + - (px - (rem->prop.res_x / 2)) - - (ec->w / 2); - else - ec->x = (ec->zone->w / 2) + - (((px - (rem->prop.res_x / 2)) * ec->zone->w) / - (rem->prop.res_x / 3)) - - (ec->w / 2); - } - else - { - if (ec->zone->w >= (rem->prop.res_x / 3)) - ec->x = ec->zone->w + - rem->prop.pos_x - rem->prop.res_x + - (rem->prop.w - ec->client.w); - else - ec->x = ec->zone->w + - (((rem->prop.pos_x - rem->prop.res_x) * ec->zone->w) / - (rem->prop.res_x / 3)) + - (rem->prop.w - ec->client.w); - } - if ((rem->prop.pos_x >= 0) && (ec->x < 0)) - ec->x = 0; - else if (((rem->prop.pos_x + rem->prop.w) < rem->prop.res_x) && - ((ec->x + ec->w) > ec->zone->w)) - ec->x = ec->zone->w - ec->w; - } - if (ec->zone->h != rem->prop.res_y) - { - int py; - - py = ec->y + (ec->h / 2); - if (py < ((rem->prop.res_y * 1) / 3)) - { - if (ec->zone->h >= (rem->prop.res_y / 3)) - ec->y = rem->prop.pos_y; - else - ec->y = ((rem->prop.pos_y - 0) * ec->zone->h) / - (rem->prop.res_y / 3); - } - else if (py < ((rem->prop.res_y * 2) / 3)) - { - if (ec->zone->h >= (rem->prop.res_y / 3)) - ec->y = (ec->zone->h / 2) + - (py - (rem->prop.res_y / 2)) - - (ec->h / 2); - else - ec->y = (ec->zone->h / 2) + - (((py - (rem->prop.res_y / 2)) * ec->zone->h) / - (rem->prop.res_y / 3)) - - (ec->h / 2); - } - else - { - if (ec->zone->h >= (rem->prop.res_y / 3)) - ec->y = ec->zone->h + - rem->prop.pos_y - rem->prop.res_y + - (rem->prop.h - ec->client.h); - else - ec->y = ec->zone->h + - (((rem->prop.pos_y - rem->prop.res_y) * ec->zone->h) / - (rem->prop.res_y / 3)) + - (rem->prop.h - ec->client.h); - } - if ((rem->prop.pos_y >= 0) && (ec->y < 0)) - ec->y = 0; - else if (((rem->prop.pos_y + rem->prop.h) < rem->prop.res_y) && - ((ec->y + ec->h) > ec->zone->h)) - ec->y = ec->zone->h - ec->h; - } - if ( - /* upper left */ - (!E_INSIDE(ec->x, ec->y, 0, 0, ec->zone->w, ec->zone->h)) && - /* upper right */ - (!E_INSIDE(ec->x + ec->w, ec->y, 0, 0, ec->zone->w, ec->zone->h)) && - /* lower left */ - (!E_INSIDE(ec->x, ec->y + ec->h, 0, 0, ec->zone->w, ec->zone->h)) && - /* lower right */ - (!E_INSIDE(ec->x + ec->w, ec->y + ec->h, 0, 0, ec->zone->w, ec->zone->h)) - ) - { - e_comp_object_util_center_pos_get(ec->frame, &ec->x, &ec->y); - rem->prop.pos_x = ec->x, rem->prop.pos_y = ec->y; - } - ec->x += ec->zone->x; - ec->y += ec->zone->y; - ec->placed = 1; - ec->changes.pos = 1; - EC_CHANGED(ec); - } - if (rem->apply & E_REMEMBER_APPLY_LAYER) - { - evas_object_layer_set(ec->frame, rem->prop.layer); - } - if (rem->apply & E_REMEMBER_APPLY_BORDER) - { - eina_stringshare_replace(&ec->bordername, NULL); - ec->bordername = eina_stringshare_ref(rem->prop.border); - ec->border.changed = 1; - EC_CHANGED(ec); - } - if (rem->apply & E_REMEMBER_APPLY_FULLSCREEN) - { - if (rem->prop.fullscreen) - e_client_fullscreen(ec, e_config->fullscreen_policy); - } - if (rem->apply & E_REMEMBER_APPLY_STICKY) - { - if (rem->prop.sticky) e_client_stick(ec); - } - if (rem->apply & E_REMEMBER_APPLY_SHADE) - { - if (rem->prop.shaded >= 100) - e_client_shade(ec, rem->prop.shaded - 100); - else if (rem->prop.shaded >= 50) - e_client_unshade(ec, rem->prop.shaded - 50); - } - if (rem->apply & E_REMEMBER_APPLY_LOCKS) - { - ec->lock_user_location = rem->prop.lock_user_location; - ec->lock_client_location = rem->prop.lock_client_location; - ec->lock_user_size = rem->prop.lock_user_size; - ec->lock_client_size = rem->prop.lock_client_size; - ec->lock_user_stacking = rem->prop.lock_user_stacking; - ec->lock_client_stacking = rem->prop.lock_client_stacking; - ec->lock_user_iconify = rem->prop.lock_user_iconify; - ec->lock_client_iconify = rem->prop.lock_client_iconify; - ec->lock_user_desk = rem->prop.lock_user_desk; - ec->lock_client_desk = rem->prop.lock_client_desk; - ec->lock_user_sticky = rem->prop.lock_user_sticky; - ec->lock_client_sticky = rem->prop.lock_client_sticky; - ec->lock_user_shade = rem->prop.lock_user_shade; - ec->lock_client_shade = rem->prop.lock_client_shade; - ec->lock_user_maximize = rem->prop.lock_user_maximize; - ec->lock_client_maximize = rem->prop.lock_client_maximize; - ec->lock_user_fullscreen = rem->prop.lock_user_fullscreen; - ec->lock_client_fullscreen = rem->prop.lock_client_fullscreen; - ec->lock_border = rem->prop.lock_border; - ec->lock_close = rem->prop.lock_close; - ec->lock_focus_in = rem->prop.lock_focus_in; - ec->lock_focus_out = rem->prop.lock_focus_out; - ec->lock_life = rem->prop.lock_life; - } - if (rem->apply & E_REMEMBER_APPLY_SKIP_WINLIST) - ec->user_skip_winlist = rem->prop.skip_winlist; - if (rem->apply & E_REMEMBER_APPLY_SKIP_PAGER) - ec->netwm.state.skip_pager = rem->prop.skip_pager; - if (rem->apply & E_REMEMBER_APPLY_SKIP_TASKBAR) - ec->netwm.state.skip_taskbar = rem->prop.skip_taskbar; - if (rem->apply & E_REMEMBER_APPLY_ICON_PREF) - ec->icon_preference = rem->prop.icon_preference; - if (rem->apply & E_REMEMBER_APPLY_OFFER_RESISTANCE) - ec->offer_resistance = rem->prop.offer_resistance; - if (rem->apply & E_REMEMBER_SET_FOCUS_ON_START) - ec->want_focus = 1; - if (rem->apply & E_REMEMBER_APPLY_OPACITY) - ec->netwm.opacity = rem->prop.opacity; - - if (temporary) - _e_remember_free(rem); -} - -static void -_e_remember_init_edd(void) -{ - e_remember_list_edd = E_CONFIG_DD_NEW("E_Remember_List", E_Remember_List); -#undef T -#undef D -#define T E_Remember_List -#define D e_remember_list_edd - E_CONFIG_LIST(D, T, list, e_remember_edd); -#undef T -#undef D -} - diff --git a/src/bin/e_remember.h b/src/bin/e_remember.h deleted file mode 100644 index 1cda267..0000000 --- a/src/bin/e_remember.h +++ /dev/null @@ -1,128 +0,0 @@ -#ifdef E_TYPEDEFS - -E_API extern int E_EVENT_REMEMBER_UPDATE; -E_API extern E_Config_DD *e_remember_edd; -typedef struct E_Event_Remember_Update -{ - E_Client *ec; -} E_Event_Remember_Update; -typedef struct _E_Remember E_Remember; - -#define E_REMEMBER_VERSION 1 - -#define E_REMEMBER_MATCH_NAME (1 << 0) -#define E_REMEMBER_MATCH_CLASS (1 << 1) -#define E_REMEMBER_MATCH_TITLE (1 << 2) -#define E_REMEMBER_MATCH_ROLE (1 << 3) -#define E_REMEMBER_MATCH_TYPE (1 << 4) -#define E_REMEMBER_MATCH_TRANSIENT (1 << 5) - -#define E_REMEMBER_APPLY_POS (1 << 0) -#define E_REMEMBER_APPLY_SIZE (1 << 1) -#define E_REMEMBER_APPLY_LAYER (1 << 2) -#define E_REMEMBER_APPLY_LOCKS (1 << 3) -#define E_REMEMBER_APPLY_BORDER (1 << 4) -#define E_REMEMBER_APPLY_STICKY (1 << 5) -#define E_REMEMBER_APPLY_DESKTOP (1 << 6) -#define E_REMEMBER_APPLY_SHADE (1 << 7) -#define E_REMEMBER_APPLY_ZONE (1 << 8) -#define E_REMEMBER_APPLY_RUN (1 << 9) -#define E_REMEMBER_APPLY_SKIP_WINLIST (1 << 10) -#define E_REMEMBER_APPLY_SKIP_PAGER (1 << 11) -#define E_REMEMBER_APPLY_SKIP_TASKBAR (1 << 12) -#define E_REMEMBER_APPLY_ICON_PREF (1 << 13) -#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) - -#else -#ifndef E_REMEMBER_H -#define E_REMEMBER_H - -struct _E_Remember -{ - unsigned int version; - int match; - int no_reopen; - unsigned char apply_first_only; - unsigned char keep_settings; - int used_count; - const char *name; - const char *class; - const char *title; - const char *role; - int type; - unsigned char transient; - int apply; - int max_score; - struct - { - int pos_x, pos_y; - int res_x, res_y; - int pos_w, pos_h; - int w, h; - int layer; - unsigned int maximize; //just direction - - unsigned char lock_user_location; - unsigned char lock_client_location; - unsigned char lock_user_size; - unsigned char lock_client_size; - unsigned char lock_user_stacking; - unsigned char lock_client_stacking; - unsigned char lock_user_iconify; - unsigned char lock_client_iconify; - unsigned char lock_user_desk; - unsigned char lock_client_desk; - unsigned char lock_user_sticky; - unsigned char lock_client_sticky; - unsigned char lock_user_shade; - unsigned char lock_client_shade; - unsigned char lock_user_maximize; - unsigned char lock_client_maximize; - unsigned char lock_user_fullscreen; - unsigned char lock_client_fullscreen; - unsigned char lock_border; - unsigned char lock_close; - unsigned char lock_focus_in; - unsigned char lock_focus_out; - unsigned char lock_life; - - const char *border; - - unsigned char sticky; - unsigned char shaded; - unsigned char fullscreen; - unsigned char skip_winlist; - unsigned char skip_pager; - unsigned char skip_taskbar; - unsigned char icon_preference; - unsigned char offer_resistance; - - int desk_x, desk_y; - int zone; - const char *command; - const char *desktop_file; - unsigned char opacity; - } prop; -}; - -EINTERN int e_remember_init(void); -EINTERN int e_remember_shutdown(void); -E_API E_Remember *e_remember_new(void); -E_API int e_remember_usable_get(E_Remember *rem); -E_API void e_remember_use(E_Remember *rem); -E_API void e_remember_unuse(E_Remember *rem); -E_API void e_remember_del(E_Remember *rem); -E_API E_Remember *e_remember_find(E_Client *ec); -E_API E_Remember *e_remember_find_usable(E_Client *ec); -E_API void e_remember_match_update(E_Remember *rem); -E_API void e_remember_update(E_Client *ec); -E_API int e_remember_default_match_set(E_Remember *rem, E_Client *ec); -E_API void e_remember_internal_save(void); -#endif -#endif diff --git a/src/bin/e_win.c b/src/bin/e_win.c index 4e4bc3e..55b5bcd 100644 --- a/src/bin/e_win.c +++ b/src/bin/e_win.c @@ -11,7 +11,6 @@ typedef struct _Elm_Win_Trap_Ctx E_Pointer *pointer; Eina_Bool centered : 1; Eina_Bool placed : 1; - Eina_Bool internal_no_remember : 1; Eina_Bool internal_no_reopen : 1; Eina_Bool visible : 1; Eina_Bool override : 1; @@ -134,7 +133,6 @@ _e_elm_win_trap_show(void *data, Evas_Object *o) eina_stringshare_replace(&ctx->client->icccm.title, title); } ctx->client->placed = ctx->placed | ctx->centered; - ctx->client->internal_no_remember = ctx->internal_no_remember; ctx->client->internal_no_reopen = ctx->internal_no_reopen; ctx->client->internal_elm_win = o; elm_win_autodel_set(o, 1); @@ -455,9 +453,6 @@ e_win_no_remember_set(Evas_Object *obj, Eina_Bool no_rem) Elm_Win_Trap_Ctx *ctx = elm_win_trap_data_get(obj); EINA_SAFETY_ON_NULL_RETURN(obj); - ctx->internal_no_remember = !!no_rem; - if (ctx->client) - ctx->client->internal_no_remember = !!no_rem; } E_API void -- 2.7.4