- fixed e_remember_default_match to set match values

since these are not set by e_remember_update anymore
- remove E_Remember parameter from e_remmber_update. 
  if update is possible bd->remember is already set
- do not overwrite bordername value of remember on update. 
  should only be set by conf_border dialog
- make sure on update that match values are set otherwise 
  delete remember 


SVN revision: 42435
This commit is contained in:
Hannes Janetzek 2009-09-12 11:08:07 +00:00
parent f9fc3d09aa
commit 7bcc49c2fe
7 changed files with 103 additions and 89 deletions

View File

@ -670,8 +670,7 @@ e_border_zone_set(E_Border *bd, E_Zone *zone)
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
@ -713,8 +712,7 @@ e_border_desk_set(E_Border *bd, E_Desk *desk)
e_border_desk_set(child, bd->desk);
}
}
if (bd->remember)
e_remember_update(bd->remember, bd);
e_remember_update(bd);
}
EAPI void
@ -1311,8 +1309,7 @@ e_border_raise(E_Border *bd)
}
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
@ -1397,8 +1394,7 @@ e_border_lower(E_Border *bd)
}
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
@ -1452,8 +1448,7 @@ e_border_stack_above(E_Border *bd, E_Border *above)
}
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
@ -1507,8 +1502,7 @@ e_border_stack_below(E_Border *bd, E_Border *below)
}
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
@ -1918,8 +1912,7 @@ e_border_shade(E_Border *bd, E_Direction dir)
}
}
if (bd->remember)
e_remember_update(bd->remember, bd);
e_remember_update(bd);
}
EAPI void
@ -2027,8 +2020,7 @@ e_border_unshade(E_Border *bd, E_Direction dir)
}
}
if (bd->remember)
e_remember_update(bd->remember, bd);
e_remember_update(bd);
}
EAPI void
@ -2188,8 +2180,7 @@ e_border_maximize(E_Border *bd, E_Maximize max)
bd->maximized & E_MAXIMIZE_VERTICAL);
}
if (bd->remember)
e_remember_update(bd->remember, bd);
e_remember_update(bd);
}
EAPI void
@ -2284,8 +2275,7 @@ e_border_unmaximize(E_Border *bd, E_Maximize max)
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
@ -2379,8 +2369,7 @@ e_border_fullscreen(E_Border *bd, E_Fullscreen policy)
bd->client.border.changed = 1;
bd->changed = 1;
}
if (bd->remember)
e_remember_update(bd->remember, bd);
e_remember_update(bd);
}
EAPI void
@ -2414,8 +2403,7 @@ e_border_unfullscreen(E_Border *bd)
bd->client.border.changed = 1;
bd->changed = 1;
}
if (bd->remember)
e_remember_update(bd->remember, bd);
e_remember_update(bd);
}
EAPI void
@ -2454,8 +2442,7 @@ e_border_iconify(E_Border *bd)
e_border_iconify(child);
}
}
if (bd->remember)
e_remember_update(bd->remember, bd);
e_remember_update(bd);
}
EAPI void
@ -2497,8 +2484,7 @@ e_border_uniconify(E_Border *bd)
e_border_uniconify(child);
}
}
if (bd->remember)
e_remember_update(bd->remember, bd);
e_remember_update(bd);
}
EAPI void
@ -2531,8 +2517,7 @@ e_border_stick(E_Border *bd)
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
@ -2566,8 +2551,7 @@ e_border_unstick(E_Border *bd)
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
@ -6346,8 +6330,8 @@ _e_border_eval0(E_Border *bd)
}
}
if ((bd->remember) && (rem_change))
e_remember_update(bd->remember, bd);
if (rem_change)
e_remember_update(bd);
if (change_urgent)
{
@ -7226,8 +7210,8 @@ _e_border_eval(E_Border *bd)
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.

View File

@ -192,8 +192,8 @@ _basic_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
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
@ -252,8 +252,8 @@ _advanced_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
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

View File

@ -674,7 +674,7 @@ _e_border_menu_cb_skip_winlist(void *data, E_Menu *m, E_Menu_Item *mi)
else
bd->user_skip_winlist = 0;
bd->changed = 1;
if (bd->remember) e_remember_update(bd->remember, bd);
e_remember_update(bd);
}
static void
@ -689,7 +689,7 @@ _e_border_menu_cb_skip_pager(void *data, E_Menu *m, E_Menu_Item *mi)
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
@ -704,7 +704,7 @@ _e_border_menu_cb_skip_taskbar(void *data, E_Menu *m, E_Menu_Item *mi)
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

View File

@ -435,7 +435,7 @@ _basic_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
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;
@ -453,10 +453,12 @@ _basic_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
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 */
@ -583,10 +585,10 @@ _advanced_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
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;
}

View File

@ -135,6 +135,8 @@ e_remember_del(E_Remember *rem)
}
return;
}
else
_e_remember_free(rem);
}
EAPI E_Remember *
@ -192,40 +194,67 @@ e_remember_match_update(E_Remember *rem)
}
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;
@ -252,15 +281,9 @@ e_remember_update(E_Remember *rem, E_Border *bd)
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;
}
@ -720,7 +743,7 @@ _e_remember_cb_hook_eval_post_new_border(void *data, E_Border *bd)
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);
}
}
}

View File

@ -108,8 +108,8 @@ EAPI void e_remember_del(E_Remember *rem);
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

View File

@ -151,17 +151,22 @@ _basic_apply_border(E_Config_Dialog_Data *cfdata)
}
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