ecore_event_add(E_EVENT_BORDER_ZONE_SET, ev, _e_border_event_border_zone_set_free, NULL);
ecore_x_window_prop_card32_set(bd->client.win, E_ATOM_ZONE, &bd->zone->num, 1);
- if (bd->remember)
- e_remember_update(bd->remember, bd);
+ e_remember_update(bd);
}
EAPI void
e_border_desk_set(child, bd->desk);
}
}
- if (bd->remember)
- e_remember_update(bd->remember, bd);
+ e_remember_update(bd);
}
EAPI void
}
ecore_event_add(E_EVENT_BORDER_STACK, ev, _e_border_event_border_stack_free, NULL);
- if (bd->remember)
- e_remember_update(bd->remember, bd);
+ e_remember_update(bd);
}
EAPI void
}
ecore_event_add(E_EVENT_BORDER_STACK, ev, _e_border_event_border_stack_free, NULL);
- if (bd->remember)
- e_remember_update(bd->remember, bd);
+ e_remember_update(bd);
}
EAPI void
}
ecore_event_add(E_EVENT_BORDER_STACK, ev, _e_border_event_border_stack_free, NULL);
- if (bd->remember)
- e_remember_update(bd->remember, bd);
+ e_remember_update(bd);
}
EAPI void
}
ecore_event_add(E_EVENT_BORDER_STACK, ev, _e_border_event_border_stack_free, NULL);
- if (bd->remember)
- e_remember_update(bd->remember, bd);
+ e_remember_update(bd);
}
EAPI void
}
}
- if (bd->remember)
- e_remember_update(bd->remember, bd);
+ e_remember_update(bd);
}
EAPI void
}
}
- if (bd->remember)
- e_remember_update(bd->remember, bd);
+ e_remember_update(bd);
}
EAPI void
bd->maximized & E_MAXIMIZE_VERTICAL);
}
- if (bd->remember)
- e_remember_update(bd->remember, bd);
+ e_remember_update(bd);
}
EAPI void
e_hints_window_maximized_set(bd, bd->maximized & E_MAXIMIZE_HORIZONTAL,
bd->maximized & E_MAXIMIZE_VERTICAL);
}
- if (bd->remember)
- e_remember_update(bd->remember, bd);
+ e_remember_update(bd);
}
EAPI void
bd->client.border.changed = 1;
bd->changed = 1;
}
- if (bd->remember)
- e_remember_update(bd->remember, bd);
+ e_remember_update(bd);
}
EAPI void
bd->client.border.changed = 1;
bd->changed = 1;
}
- if (bd->remember)
- e_remember_update(bd->remember, bd);
+ e_remember_update(bd);
}
EAPI void
e_border_iconify(child);
}
}
- if (bd->remember)
- e_remember_update(bd->remember, bd);
+ e_remember_update(bd);
}
EAPI void
e_border_uniconify(child);
}
}
- if (bd->remember)
- e_remember_update(bd->remember, bd);
+ e_remember_update(bd);
}
EAPI void
e_object_ref(E_OBJECT(bd));
// e_object_breadcrumb_add(E_OBJECT(bd), "border_stick_event");
ecore_event_add(E_EVENT_BORDER_STICK, ev, _e_border_event_border_stick_free, NULL);
- if (bd->remember)
- e_remember_update(bd->remember, bd);
+ e_remember_update(bd);
}
EAPI void
ecore_event_add(E_EVENT_BORDER_UNSTICK, ev, _e_border_event_border_unstick_free, NULL);
e_border_desk_set(bd, e_desk_current_get(bd->zone));
- if (bd->remember)
- e_remember_update(bd->remember, bd);
+ e_remember_update(bd);
}
EAPI void
}
}
- if ((bd->remember) && (rem_change))
- e_remember_update(bd->remember, bd);
+ if (rem_change)
+ e_remember_update(bd);
if (change_urgent)
{
bd->need_fullscreen = 0;
}
- if ((bd->remember) && (rem_change))
- e_remember_update(bd->remember, bd);
+ if (rem_change)
+ e_remember_update(bd);
if (send_event) // FIXME: send only if a property changed - above need to
// check on that. for now - always send.
if (cfdata->border->remember)
{
cfdata->border->remember->apply |= E_REMEMBER_APPLY_LOCKS;
- cfdata->border->remember->match = e_remember_default_match(cfdata->border);
- e_remember_update(cfdata->border->remember, cfdata->border);
+ e_remember_default_match_set(cfdata->border->remember, cfdata->border);
+ e_remember_update(cfdata->border);
}
}
else
if (cfdata->border->remember)
{
cfdata->border->remember->apply |= E_REMEMBER_APPLY_LOCKS;
- cfdata->border->remember->match = e_remember_default_match(cfdata->border);
- e_remember_update(cfdata->border->remember, cfdata->border);
+ e_remember_default_match_set(cfdata->border->remember, cfdata->border);
+ e_remember_update(cfdata->border);
}
}
else
else
bd->user_skip_winlist = 0;
bd->changed = 1;
- if (bd->remember) e_remember_update(bd->remember, bd);
+ e_remember_update(bd);
}
static void
else
bd->client.netwm.state.skip_pager = 0;
bd->changed = 1;
- if (bd->remember) e_remember_update(bd->remember, bd);
+ e_remember_update(bd);
}
static void
else
bd->client.netwm.state.skip_taskbar = 0;
bd->changed = 1;
- if (bd->remember) e_remember_update(bd->remember, bd);
+ e_remember_update(bd);
}
static void
if (rem)
{
- rem->match = e_remember_default_match(cfdata->border);
+ e_remember_default_match_set(rem, cfdata->border);
if (cfdata->mode == MODE_GEOMETRY)
rem->apply = E_REMEMBER_APPLY_POS | E_REMEMBER_APPLY_SIZE;
cfdata->remember.apply_desktop_file = 0;
_remember_update(rem, cfdata);
_check_matches(cfdata, 1);
- e_remember_update(rem, cfdata->border);
+
+ cfdata->border->remember = rem;
+ e_remember_update(cfdata->border);
}
- cfdata->border->remember = rem;
+
e_config_save_queue();
return 1; /* Apply was OK */
if (cfdata->remember.set_focus_on_start) rem->apply |= E_REMEMBER_SET_FOCUS_ON_START;
_remember_update(rem, cfdata);
- cfdata->border->remember = rem;
_check_matches(cfdata, 1);
rem->keep_settings = 0;
- e_remember_update(rem, cfdata->border);
+ cfdata->border->remember = rem;
+ e_remember_update(cfdata->border);
rem->keep_settings = cfdata->remember.keep_settings;
}
}
return;
}
+ else
+ _e_remember_free(rem);
}
EAPI E_Remember *
}
EAPI int
-e_remember_default_match(E_Border *bd)
+e_remember_default_match_set(E_Remember *rem, E_Border *bd)
{
+ const char *title, *clasz, *name, *role;
+
+ 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);
+ rem->name = NULL;
+ rem->class = NULL;
+ rem->title = NULL;
+ rem->role = NULL;
+
+ name = bd->client.icccm.name;
+ if (!name || name[0] == 0) name = NULL;
+ clasz = bd->client.icccm.class;
+ if (!clasz || clasz[0] == 0) clasz = NULL;
+ role = bd->client.icccm.window_role;
+ if (!role || role[0] == 0) role = NULL;
+
int match = E_REMEMBER_MATCH_TRANSIENT;
- if ((bd->client.icccm.name) &&
- (bd->client.icccm.class) &&
- (bd->client.icccm.name[0] != 0) &&
- (bd->client.icccm.class[0] != 0))
- match |= E_REMEMBER_MATCH_NAME | E_REMEMBER_MATCH_CLASS;
- else
- if ((e_border_name_get(bd))[0] != 0)
- match |= E_REMEMBER_MATCH_TITLE;
-
- if ((bd->client.icccm.window_role) &&
- (bd->client.icccm.window_role[0] != 0))
- match |= E_REMEMBER_MATCH_ROLE;
-
- if (bd->client.netwm.type != ECORE_X_WINDOW_TYPE_UNKNOWN)
- match |= E_REMEMBER_MATCH_TYPE;
+ if (name && clasz)
+ {
+ match |= E_REMEMBER_MATCH_NAME | E_REMEMBER_MATCH_CLASS;
+ rem->name = eina_stringshare_add(name);
+ rem->class = eina_stringshare_add(clasz);
+ }
+ else if ((title = e_border_name_get(bd)) && title[0])
+ {
+ match |= E_REMEMBER_MATCH_TITLE;
+ rem->title = eina_stringshare_add(title);
+ }
+ if (role)
+ {
+ match |= E_REMEMBER_MATCH_ROLE;
+ rem->role = eina_stringshare_add(role);
+ }
+ rem->match = match;
+
return match;
}
EAPI void
-e_remember_update(E_Remember *rem, E_Border *bd)
+e_remember_update(E_Border *bd)
{
- if (!rem) return;
+ E_Remember *rem;
+
if (bd->new_client) return;
+ if (!bd->remember) return;
+ if (bd->remember->keep_settings) return;
+
+ rem = bd->remember;
- if (bd->remember && bd->remember->keep_settings)
- return;
-
- if (rem->prop.border) eina_stringshare_del(rem->prop.border);
- rem->prop.border = NULL;
-
+ if (!(rem->name || rem->class ||
+ rem->title || rem->role))
+ {
+ e_remember_del(rem);
+ return;
+ }
+
e_remember_match_update(rem);
rem->type = bd->client.netwm.type;
rem->prop.res_y = bd->zone->h;
rem->prop.pos_w = bd->client.w;
rem->prop.pos_h = bd->client.h;
-
rem->prop.w = bd->client.w;
rem->prop.h = bd->client.h;
-
rem->prop.layer = bd->layer;
-
- if (bd->bordername)
- rem->prop.border = eina_stringshare_add(bd->bordername);
-
rem->prop.fullscreen = bd->fullscreen;
}
rem->match |= E_REMEMBER_MATCH_TRANSIENT;
rem->apply = E_REMEMBER_APPLY_POS | E_REMEMBER_APPLY_SIZE | E_REMEMBER_APPLY_BORDER;
e_remember_use(rem);
- e_remember_update(rem, bd);
+ e_remember_update(bd);
}
}
}
EAPI E_Remember *e_remember_find(E_Border *bd);
EAPI E_Remember *e_remember_find_usable(E_Border *bd);
EAPI void e_remember_match_update(E_Remember *rem);
-EAPI void e_remember_update(E_Remember *rem, E_Border *bd);
-EAPI int e_remember_default_match(E_Border *bd);
+EAPI void e_remember_update(E_Border *bd);
+EAPI int e_remember_default_match_set(E_Remember *rem, E_Border *bd);
#endif
#endif
}
if (cfdata->remember_border)
{
- if (!cfdata->border->remember)
+ E_Remember *rem = cfdata->border->remember;
+
+ if (!rem)
{
- cfdata->border->remember = e_remember_new();
- if (cfdata->border->remember)
- e_remember_use(cfdata->border->remember);
+ rem = e_remember_new();
+ if (rem)
+ e_remember_use(rem);
}
- if (cfdata->border->remember)
+ if (rem)
{
- cfdata->border->remember->apply |= E_REMEMBER_APPLY_BORDER;
- cfdata->border->remember->match = e_remember_default_match(cfdata->border);
- e_remember_update(cfdata->border->remember, cfdata->border);
+ rem->apply |= E_REMEMBER_APPLY_BORDER;
+ e_remember_default_match_set(rem, cfdata->border);
+ if (rem->prop.border) eina_stringshare_del(rem->prop.border);
+ rem->prop.border = eina_stringshare_add(cfdata->border->bordername);
+ cfdata->border->remember = rem;
+ e_remember_update(cfdata->border);
}
}
else