forked from enlightenment/enlightenment
parent
4350855593
commit
59813a3895
|
@ -68,6 +68,7 @@ static void _e_border_menu_cb_iconify(void *data, E_Menu *m, E_Menu_Item *mi);
|
|||
static void _e_border_menu_cb_maximize(void *data, E_Menu *m, E_Menu_Item *mi);
|
||||
static void _e_border_menu_cb_shade(void *data, E_Menu *m, E_Menu_Item *mi);
|
||||
static void _e_border_menu_cb_icon_edit(void *data, E_Menu *m, E_Menu_Item *mi);
|
||||
static void _e_border_menu_cb_stick(void *data, E_Menu *m, E_Menu_Item *mi);
|
||||
|
||||
/* local subsystem globals */
|
||||
static Evas_List *handlers = NULL;
|
||||
|
@ -656,6 +657,21 @@ e_border_uniconify(E_Border *bd)
|
|||
}
|
||||
}
|
||||
|
||||
void
|
||||
e_border_stick(E_Border *bd)
|
||||
{
|
||||
E_OBJECT_CHECK(bd);
|
||||
bd->sticky = 1;
|
||||
}
|
||||
|
||||
void
|
||||
e_border_unstick(E_Border *bd)
|
||||
{
|
||||
E_OBJECT_CHECK(bd);
|
||||
bd->sticky = 0;
|
||||
bd->desk = e_desk_current_get(bd->zone);
|
||||
}
|
||||
|
||||
E_Border *
|
||||
e_border_find_by_client_window(Ecore_X_Window win)
|
||||
{
|
||||
|
@ -2483,6 +2499,13 @@ _e_border_menu_show(E_Border *bd, Evas_Coord x, Evas_Coord y)
|
|||
e_menu_item_label_set(mi, "Maximize");
|
||||
e_menu_item_callback_set(mi, _e_border_menu_cb_maximize, bd);
|
||||
|
||||
mi = e_menu_item_new(m);
|
||||
if (bd->sticky)
|
||||
e_menu_item_label_set(mi, "Un-Stick");
|
||||
else
|
||||
e_menu_item_label_set(mi, "Stick");
|
||||
e_menu_item_callback_set(mi, _e_border_menu_cb_stick, bd);
|
||||
|
||||
mi = e_menu_item_new(m);
|
||||
e_menu_item_separator_set(mi, 1);
|
||||
|
||||
|
@ -2593,3 +2616,13 @@ _e_border_menu_cb_icon_edit(void *data, E_Menu *m, E_Menu_Item *mi)
|
|||
please install e_util_eapp_edit\n \
|
||||
or make sure it is in your PATH\n");
|
||||
}
|
||||
|
||||
static void
|
||||
_e_border_menu_cb_stick(void *data, E_Menu *m, E_Menu_Item *mi)
|
||||
{
|
||||
E_Border *bd;
|
||||
|
||||
bd = data;
|
||||
if (bd->sticky) e_border_unstick(bd);
|
||||
else e_border_stick(bd);
|
||||
}
|
||||
|
|
|
@ -149,6 +149,7 @@ struct _E_Border
|
|||
unsigned char shaded : 1;
|
||||
unsigned char maximized : 1;
|
||||
unsigned char iconic : 1;
|
||||
unsigned char sticky : 1;
|
||||
|
||||
unsigned char changed : 1;
|
||||
|
||||
|
@ -206,6 +207,8 @@ EAPI void e_border_maximize(E_Border *bd);
|
|||
EAPI void e_border_unmaximize(E_Border *bd);
|
||||
EAPI void e_border_iconify(E_Border *bd);
|
||||
EAPI void e_border_uniconify(E_Border *bd);
|
||||
EAPI void e_border_stick(E_Border *bd);
|
||||
EAPI void e_border_unstick(E_Border *bd);
|
||||
|
||||
EAPI E_Border *e_border_find_by_client_window(Ecore_X_Window win);
|
||||
|
||||
|
|
|
@ -69,7 +69,7 @@ e_desk_show(E_Desk *desk)
|
|||
|
||||
if (bd->desk->zone == desk->zone && !bd->iconic)
|
||||
{
|
||||
if (bd->desk == desk)
|
||||
if (bd->desk == desk || bd->sticky)
|
||||
{
|
||||
e_border_show(bd);
|
||||
}
|
||||
|
|
|
@ -225,7 +225,7 @@ e_hints_window_state_set(Ecore_X_Window win)
|
|||
ecore_x_netwm_window_state_set(win, ECORE_X_WINDOW_STATE_MODAL,
|
||||
bd->client.netwm.state.modal);
|
||||
ecore_x_netwm_window_state_set(win, ECORE_X_WINDOW_STATE_STICKY,
|
||||
(evas_list_count(bd->stick_desks) > 1));
|
||||
bd->sticky);
|
||||
ecore_x_netwm_window_state_set(win, ECORE_X_WINDOW_STATE_MAXIMIZED_VERT,
|
||||
bd->client.netwm.state.maximized_v);
|
||||
ecore_x_netwm_window_state_set(win, ECORE_X_WINDOW_STATE_MAXIMIZED_HORZ,
|
||||
|
|
Loading…
Reference in New Issue