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_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_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_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 */
|
/* local subsystem globals */
|
||||||
static Evas_List *handlers = NULL;
|
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 *
|
||||||
e_border_find_by_client_window(Ecore_X_Window win)
|
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_label_set(mi, "Maximize");
|
||||||
e_menu_item_callback_set(mi, _e_border_menu_cb_maximize, bd);
|
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);
|
mi = e_menu_item_new(m);
|
||||||
e_menu_item_separator_set(mi, 1);
|
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 \
|
please install e_util_eapp_edit\n \
|
||||||
or make sure it is in your PATH\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 shaded : 1;
|
||||||
unsigned char maximized : 1;
|
unsigned char maximized : 1;
|
||||||
unsigned char iconic : 1;
|
unsigned char iconic : 1;
|
||||||
|
unsigned char sticky : 1;
|
||||||
|
|
||||||
unsigned char changed : 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_unmaximize(E_Border *bd);
|
||||||
EAPI void e_border_iconify(E_Border *bd);
|
EAPI void e_border_iconify(E_Border *bd);
|
||||||
EAPI void e_border_uniconify(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);
|
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->zone == desk->zone && !bd->iconic)
|
||||||
{
|
{
|
||||||
if (bd->desk == desk)
|
if (bd->desk == desk || bd->sticky)
|
||||||
{
|
{
|
||||||
e_border_show(bd);
|
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,
|
ecore_x_netwm_window_state_set(win, ECORE_X_WINDOW_STATE_MODAL,
|
||||||
bd->client.netwm.state.modal);
|
bd->client.netwm.state.modal);
|
||||||
ecore_x_netwm_window_state_set(win, ECORE_X_WINDOW_STATE_STICKY,
|
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,
|
ecore_x_netwm_window_state_set(win, ECORE_X_WINDOW_STATE_MAXIMIZED_VERT,
|
||||||
bd->client.netwm.state.maximized_v);
|
bd->client.netwm.state.maximized_v);
|
||||||
ecore_x_netwm_window_state_set(win, ECORE_X_WINDOW_STATE_MAXIMIZED_HORZ,
|
ecore_x_netwm_window_state_set(win, ECORE_X_WINDOW_STATE_MAXIMIZED_HORZ,
|
||||||
|
|
Loading…
Reference in New Issue