SVN revision: 15689
This commit is contained in:
Carsten Haitzler 2005-07-09 14:55:40 +00:00
parent a13c80bc15
commit bb992161c3
7 changed files with 85 additions and 18 deletions

1
TODO
View File

@ -46,7 +46,6 @@ Some of the things (in very short form) that need to be done to E17...
* option to allow move and resize info boxes to be able to follow the object
around
* be able to set window to skip window list (and remember this)
* emit signal to submenu entries if they have a submenu shown for them or not
* add window placement options like place at pointer
* shaded windows should not allow border changes by the user

View File

@ -87,6 +87,7 @@ static void _e_border_menu_cb_stick(void *data, E_Menu *m, E_Menu_Item *mi);
static void _e_border_menu_cb_on_top(void *data, E_Menu *m, E_Menu_Item *mi);
static void _e_border_menu_cb_borderless(void *data, E_Menu *m, E_Menu_Item *mi);
static void _e_border_menu_cb_fullscreen(void *data, E_Menu *m, E_Menu_Item *mi);
static void _e_border_menu_cb_skip_winlist(void *data, E_Menu *m, E_Menu_Item *mi);
static void _e_border_menu_cb_sendto_pre(void *data, E_Menu *m, E_Menu_Item *mi);
static void _e_border_menu_cb_sendto(void *data, E_Menu *m, E_Menu_Item *mi);
@ -4098,6 +4099,10 @@ _e_border_eval(E_Border *bd)
bd->lock_focus_out = rem->prop.lock_focus_out;
bd->lock_life = rem->prop.lock_life;
}
if (rem->apply & E_REMEMBER_APPLY_SKIP_WINLIST)
{
bd->user_skip_winlist = rem->prop.skip_winlist;
}
}
}
@ -5479,6 +5484,29 @@ _e_border_menu_cb_remember_apply_zone(void *data, E_Menu *m, E_Menu_Item *mi)
e_config_save_queue();
}
static void
_e_border_menu_cb_remember_apply_skip_winlist(void *data, E_Menu *m, E_Menu_Item *mi)
{
E_Border *bd;
bd = data;
if (!bd->remember)
{
bd->remember = e_remember_new();
if (bd->remember)
{
e_remember_use(bd->remember);
e_remember_update(bd->remember, bd);
}
else
return;
}
if (e_menu_item_toggle_get(mi))
bd->remember->apply |= E_REMEMBER_APPLY_SKIP_WINLIST;
else
bd->remember->apply &= ~E_REMEMBER_APPLY_SKIP_WINLIST;
e_config_save_queue();
}
static void
_e_border_menu_cb_remember_apply_run(void *data, E_Menu *m, E_Menu_Item *mi)
{
@ -5562,33 +5590,34 @@ _e_border_menu_show(E_Border *bd, Evas_Coord x, Evas_Coord y, int key)
e_menu_item_callback_set(mi, cb, bd);
mi = e_menu_item_new(m);
e_menu_item_label_set(mi, _("Remember this window")); \
e_menu_item_label_set(mi, _("Remember This Window")); \
e_menu_item_check_set(mi, 1);
if (bd->remember)
e_menu_item_toggle_set(mi, 1);
e_menu_item_callback_set(mi, _e_border_menu_cb_remember, bd);
mi = e_menu_item_new(m);
e_menu_item_separator_set(mi, 1);
NEW_REMEMBER_MI(_("Remember this instance only"), apply_first_only, 1, _e_border_menu_cb_remember_first);
NEW_REMEMBER_MI(_("Remember This Instance Only"), apply_first_only, 1, _e_border_menu_cb_remember_first);
mi = e_menu_item_new(m);
e_menu_item_separator_set(mi, 1);
NEW_REMEMBER_MI(_("Match by name"), match, E_REMEMBER_MATCH_NAME, _e_border_menu_cb_remember_match_name);
NEW_REMEMBER_MI(_("Match by class"), match, E_REMEMBER_MATCH_CLASS, _e_border_menu_cb_remember_match_class);
NEW_REMEMBER_MI(_("Match by title"), match, E_REMEMBER_MATCH_TITLE, _e_border_menu_cb_remember_match_title);
NEW_REMEMBER_MI(_("Match by role"), match, E_REMEMBER_MATCH_ROLE, _e_border_menu_cb_remember_match_role);
NEW_REMEMBER_MI(_("Match by window type"), match, E_REMEMBER_MATCH_TYPE, _e_border_menu_cb_remember_match_type);
NEW_REMEMBER_MI(_("Match by transient status"), match, E_REMEMBER_MATCH_TRANSIENT, _e_border_menu_cb_remember_match_transient);
NEW_REMEMBER_MI(_("Match by Name"), match, E_REMEMBER_MATCH_NAME, _e_border_menu_cb_remember_match_name);
NEW_REMEMBER_MI(_("Match by Class"), match, E_REMEMBER_MATCH_CLASS, _e_border_menu_cb_remember_match_class);
NEW_REMEMBER_MI(_("Match by Title"), match, E_REMEMBER_MATCH_TITLE, _e_border_menu_cb_remember_match_title);
NEW_REMEMBER_MI(_("Match by Role"), match, E_REMEMBER_MATCH_ROLE, _e_border_menu_cb_remember_match_role);
NEW_REMEMBER_MI(_("Match by Window Type"), match, E_REMEMBER_MATCH_TYPE, _e_border_menu_cb_remember_match_type);
NEW_REMEMBER_MI(_("Match by Transient Status"), match, E_REMEMBER_MATCH_TRANSIENT, _e_border_menu_cb_remember_match_transient);
mi = e_menu_item_new(m);
e_menu_item_separator_set(mi, 1);
NEW_REMEMBER_MI(_("Remember position"), apply, E_REMEMBER_APPLY_POS, _e_border_menu_cb_remember_apply_pos);
NEW_REMEMBER_MI(_("Remember size"), apply, E_REMEMBER_APPLY_SIZE, _e_border_menu_cb_remember_apply_size);
NEW_REMEMBER_MI(_("Remember stacking"), apply, E_REMEMBER_APPLY_LAYER, _e_border_menu_cb_remember_apply_layer);
NEW_REMEMBER_MI(_("Remember locks"), apply, E_REMEMBER_APPLY_LOCKS, _e_border_menu_cb_remember_apply_locks);
NEW_REMEMBER_MI(_("Remember border"), apply, E_REMEMBER_APPLY_BORDER, _e_border_menu_cb_remember_apply_border);
NEW_REMEMBER_MI(_("Remember stickiness"), apply, E_REMEMBER_APPLY_STICKY, _e_border_menu_cb_remember_apply_sticky);
NEW_REMEMBER_MI(_("Remember desktop"), apply, E_REMEMBER_APPLY_DESKTOP, _e_border_menu_cb_remember_apply_desktop);
NEW_REMEMBER_MI(_("Remember shaded state"), apply, E_REMEMBER_APPLY_SHADE, _e_border_menu_cb_remember_apply_shade);
NEW_REMEMBER_MI(_("Remember zone"), apply, E_REMEMBER_APPLY_ZONE, _e_border_menu_cb_remember_apply_zone);
NEW_REMEMBER_MI(_("Remember Position"), apply, E_REMEMBER_APPLY_POS, _e_border_menu_cb_remember_apply_pos);
NEW_REMEMBER_MI(_("Remember Size"), apply, E_REMEMBER_APPLY_SIZE, _e_border_menu_cb_remember_apply_size);
NEW_REMEMBER_MI(_("Remember Stacking"), apply, E_REMEMBER_APPLY_LAYER, _e_border_menu_cb_remember_apply_layer);
NEW_REMEMBER_MI(_("Remember Locks"), apply, E_REMEMBER_APPLY_LOCKS, _e_border_menu_cb_remember_apply_locks);
NEW_REMEMBER_MI(_("Remember Border"), apply, E_REMEMBER_APPLY_BORDER, _e_border_menu_cb_remember_apply_border);
NEW_REMEMBER_MI(_("Remember Stickiness"), apply, E_REMEMBER_APPLY_STICKY, _e_border_menu_cb_remember_apply_sticky);
NEW_REMEMBER_MI(_("Remember Desktop"), apply, E_REMEMBER_APPLY_DESKTOP, _e_border_menu_cb_remember_apply_desktop);
NEW_REMEMBER_MI(_("Remember Shaded State"), apply, E_REMEMBER_APPLY_SHADE, _e_border_menu_cb_remember_apply_shade);
NEW_REMEMBER_MI(_("Remember Zone"), apply, E_REMEMBER_APPLY_ZONE, _e_border_menu_cb_remember_apply_zone);
NEW_REMEMBER_MI(_("Remember Skip Window List"), apply, E_REMEMBER_APPLY_SKIP_WINLIST, _e_border_menu_cb_remember_apply_skip_winlist);
/*
mi = e_menu_item_new(m);
e_menu_item_separator_set(mi, 1);
@ -5715,6 +5744,20 @@ _e_border_menu_show(E_Border *bd, Evas_Coord x, Evas_Coord y, int key)
"widgets/border/default/fullscreen");
}
if ((bd->client.icccm.accepts_focus) &&
(!bd->client.netwm.state.skip_taskbar))
{
mi = e_menu_item_new(m);
e_menu_item_label_set(mi, _("Skip Window List"));
e_menu_item_check_set(mi, 1);
e_menu_item_toggle_set(mi, bd->user_skip_winlist);
e_menu_item_callback_set(mi, _e_border_menu_cb_skip_winlist, bd);
e_menu_item_icon_edje_set(mi,
(char *)e_theme_edje_file_get("base/theme/borders",
"widgets/border/default/skip_winlist"),
"widgets/border/default/skip_winlist");
}
mi = e_menu_item_new(m);
e_menu_item_separator_set(mi, 1);
@ -5952,6 +5995,23 @@ _e_border_menu_cb_fullscreen(void *data, E_Menu *m, E_Menu_Item *mi)
}
}
static void
_e_border_menu_cb_skip_winlist(void *data, E_Menu *m, E_Menu_Item *mi)
{
E_Border *bd;
int toggle;
bd = data;
if (!bd) return;
if ((bd->client.icccm.accepts_focus) &&
(!bd->client.netwm.state.skip_taskbar))
bd->user_skip_winlist = e_menu_item_toggle_get(mi);
else
bd->user_skip_winlist = 0;
if (bd->remember) e_remember_update(bd->remember, bd);
}
static void
_e_border_menu_cb_sendto_pre(void *data, E_Menu *m, E_Menu_Item *mi)
{

View File

@ -285,6 +285,7 @@ struct _E_Border
unsigned int ping_ok : 1;
unsigned int hung : 1;
unsigned int take_focus : 1;
unsigned int user_skip_winlist : 1;
E_Maximize maximized;
unsigned int lock_user_location : 1; /*DONE*/

View File

@ -164,6 +164,7 @@ e_config_init(void)
E_CONFIG_VAL(D, T, prop.border, STR);
E_CONFIG_VAL(D, T, prop.sticky, UCHAR);
E_CONFIG_VAL(D, T, prop.shaded, UCHAR);
E_CONFIG_VAL(D, T, prop.skip_winlist, UCHAR);
E_CONFIG_VAL(D, T, prop.desk_x, INT);
E_CONFIG_VAL(D, T, prop.desk_y, INT);
E_CONFIG_VAL(D, T, prop.zone, INT);

View File

@ -206,6 +206,8 @@ e_remember_update(E_Remember *rem, E_Border *bd)
rem->prop.shaded = bd->shaded;
rem->prop.skip_winlist = bd->user_skip_winlist;
e_desk_xy_get(bd->desk, &rem->prop.desk_x, &rem->prop.desk_y);
rem->prop.zone = bd->zone->num;

View File

@ -22,6 +22,7 @@ typedef struct _E_Remember E_Remember;
#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)
#else
#ifndef E_REMEMBER_H
@ -76,6 +77,8 @@ struct _E_Remember
unsigned char shaded;
unsigned char skip_winlist;
int desk_x, desk_y;
int zone;

View File

@ -350,6 +350,7 @@ _e_winlist_border_add(E_Border *bd, E_Zone *zone, E_Desk *desk)
ok = 1;
if ((!bd->client.icccm.accepts_focus)) ok = 0;
if (bd->client.netwm.state.skip_taskbar) ok = 0;
if (bd->user_skip_winlist) ok = 0;
if (bd->iconic)
{
if (!e_config->winlist_list_show_iconified) ok = 0;