2005-10-30 03:05:57 -08:00
|
|
|
/*
|
|
|
|
* vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
|
|
|
|
*/
|
|
|
|
#include "e.h"
|
|
|
|
|
|
|
|
static void _e_border_cb_border_menu_end(void *data, E_Menu *m);
|
|
|
|
static void _e_border_menu_cb_locks(void *data, E_Menu *m, E_Menu_Item *mi);
|
|
|
|
static void _e_border_menu_cb_remember(void *data, E_Menu *m, E_Menu_Item *mi);
|
2005-11-06 00:03:13 -08:00
|
|
|
static void _e_border_menu_cb_border(void *data, E_Menu *m, E_Menu_Item *mi);
|
2005-10-30 03:05:57 -08:00
|
|
|
static void _e_border_menu_cb_close(void *data, E_Menu *m, E_Menu_Item *mi);
|
|
|
|
static void _e_border_menu_cb_iconify(void *data, E_Menu *m, E_Menu_Item *mi);
|
|
|
|
static void _e_border_menu_cb_kill(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);
|
2006-04-12 07:08:06 -07:00
|
|
|
static void _e_border_menu_cb_maximize_vertically(void *data, E_Menu *m, E_Menu_Item *mi);
|
|
|
|
static void _e_border_menu_cb_maximize_horizontally(void *data, E_Menu *m, E_Menu_Item *mi);
|
2006-07-28 04:17:33 -07:00
|
|
|
static void _e_border_menu_cb_unmaximize(void *data, E_Menu *m, E_Menu_Item *mi);
|
2005-10-30 03:05:57 -08:00
|
|
|
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);
|
2006-10-15 19:34:38 -07:00
|
|
|
static void _e_border_menu_cb_icon_add(void *data, E_Menu *m, E_Menu_Item *mi);
|
2006-10-15 20:06:43 -07:00
|
|
|
static void _e_border_menu_cb_icon_add_pre(void *data, E_Menu *m, E_Menu_Item *mi);
|
2006-05-29 00:35:41 -07:00
|
|
|
static void _e_border_menu_cb_prop(void *data, E_Menu *m, E_Menu_Item *mi);
|
2005-10-30 03:05:57 -08:00
|
|
|
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_normal(void *data, E_Menu *m, E_Menu_Item *mi);
|
|
|
|
static void _e_border_menu_cb_below(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);
|
2006-06-02 19:47:54 -07:00
|
|
|
static void _e_border_menu_cb_raise(void *data, E_Menu *m, E_Menu_Item *mi);
|
|
|
|
static void _e_border_menu_cb_lower(void *data, E_Menu *m, E_Menu_Item *mi);
|
2006-10-16 05:12:30 -07:00
|
|
|
static void _e_border_menu_cb_state_pre(void *data, E_Menu *m, E_Menu_Item *mi);
|
2005-10-30 03:05:57 -08:00
|
|
|
|
2006-01-07 02:39:46 -08:00
|
|
|
EAPI void
|
2005-10-30 03:05:57 -08:00
|
|
|
e_int_border_menu_show(E_Border *bd, Evas_Coord x, Evas_Coord y, int key, Ecore_X_Time timestamp)
|
|
|
|
{
|
|
|
|
E_Menu *m;
|
|
|
|
E_Menu_Item *mi;
|
|
|
|
|
|
|
|
if (bd->border_menu) return;
|
2006-02-17 20:35:35 -08:00
|
|
|
|
2005-10-30 03:05:57 -08:00
|
|
|
/* Only allow to change layer for windows in "normal" layers */
|
|
|
|
if ((!bd->lock_user_stacking) &&
|
|
|
|
((bd->layer == 50) || (bd->layer == 100) || (bd->layer == 150)))
|
|
|
|
{
|
2006-02-17 20:35:35 -08:00
|
|
|
m = e_menu_new();
|
|
|
|
e_menu_category_set(m,"border/stacking");
|
|
|
|
e_menu_category_data_set("border/stacking",bd);
|
|
|
|
bd->border_stacking_menu = m;
|
|
|
|
|
2005-10-30 03:05:57 -08:00
|
|
|
mi = e_menu_item_new(m);
|
|
|
|
e_menu_item_label_set(mi, _("Always On Top"));
|
|
|
|
e_menu_item_radio_set(mi, 1);
|
|
|
|
e_menu_item_radio_group_set(mi, 2);
|
|
|
|
e_menu_item_toggle_set(mi, (bd->layer == 150 ? 1 : 0));
|
|
|
|
e_menu_item_callback_set(mi, _e_border_menu_cb_on_top, bd);
|
|
|
|
e_menu_item_icon_edje_set(mi,
|
2006-08-21 09:10:36 -07:00
|
|
|
e_theme_edje_file_get("base/theme/borders",
|
2006-08-22 20:39:02 -07:00
|
|
|
"e/widgets/border/default/stack_on_top"),
|
|
|
|
"e/widgets/border/default/stack_on_top");
|
2006-02-17 20:35:35 -08:00
|
|
|
|
2005-10-30 03:05:57 -08:00
|
|
|
mi = e_menu_item_new(m);
|
|
|
|
e_menu_item_label_set(mi, _("Normal"));
|
|
|
|
e_menu_item_radio_set(mi, 1);
|
|
|
|
e_menu_item_radio_group_set(mi, 2);
|
|
|
|
e_menu_item_toggle_set(mi, (bd->layer == 100 ? 1 : 0));
|
|
|
|
e_menu_item_callback_set(mi, _e_border_menu_cb_normal, bd);
|
|
|
|
e_menu_item_icon_edje_set(mi,
|
2006-08-21 09:10:36 -07:00
|
|
|
e_theme_edje_file_get("base/theme/borders",
|
2006-08-22 20:39:02 -07:00
|
|
|
"e/widgets/border/default/stack_normal"),
|
|
|
|
"e/widgets/border/default/stack_normal");
|
2006-02-17 20:35:35 -08:00
|
|
|
|
2005-10-30 03:05:57 -08:00
|
|
|
mi = e_menu_item_new(m);
|
|
|
|
e_menu_item_label_set(mi, _("Always Below"));
|
|
|
|
e_menu_item_radio_set(mi, 1);
|
|
|
|
e_menu_item_radio_group_set(mi, 2);
|
|
|
|
e_menu_item_toggle_set(mi, (bd->layer == 50 ? 1 : 0));
|
|
|
|
e_menu_item_callback_set(mi, _e_border_menu_cb_below, bd);
|
|
|
|
e_menu_item_icon_edje_set(mi,
|
2006-08-21 09:10:36 -07:00
|
|
|
e_theme_edje_file_get("base/theme/borders",
|
2006-08-22 20:39:02 -07:00
|
|
|
"e/widgets/border/default/stack_below"),
|
|
|
|
"e/widgets/border/default/stack_below");
|
2005-10-30 03:05:57 -08:00
|
|
|
}
|
|
|
|
|
2005-11-30 23:10:32 -08:00
|
|
|
/* Only allow to change layer for windows in "normal" layers */
|
2006-02-02 22:16:25 -08:00
|
|
|
if ((!bd->lock_user_maximize) && (!bd->shaded) &&
|
2005-11-30 23:10:32 -08:00
|
|
|
((bd->layer == 50) || (bd->layer == 100) || (bd->layer == 150)))
|
|
|
|
{
|
2006-02-17 20:35:35 -08:00
|
|
|
m = e_menu_new();
|
|
|
|
e_menu_category_set(m,"border/maximize");
|
|
|
|
e_menu_category_data_set("border/maximize",bd);
|
|
|
|
bd->border_maximize_menu = m;
|
|
|
|
|
2005-11-30 23:10:32 -08:00
|
|
|
mi = e_menu_item_new(m);
|
2006-06-07 14:42:13 -07:00
|
|
|
e_menu_item_label_set(mi, _("Maximize"));
|
2006-07-28 04:17:33 -07:00
|
|
|
e_menu_item_radio_set(mi, 1);
|
|
|
|
e_menu_item_radio_group_set(mi, 3);
|
2006-06-07 14:42:13 -07:00
|
|
|
e_menu_item_toggle_set(mi, (bd->maximized & E_MAXIMIZE_DIRECTION) == E_MAXIMIZE_BOTH);
|
2005-11-30 23:10:32 -08:00
|
|
|
e_menu_item_callback_set(mi, _e_border_menu_cb_maximize, bd);
|
|
|
|
e_menu_item_icon_edje_set(mi,
|
2006-08-21 09:10:36 -07:00
|
|
|
e_theme_edje_file_get("base/theme/borders",
|
2006-08-22 20:39:02 -07:00
|
|
|
"e/widgets/border/default/maximize"),
|
|
|
|
"e/widgets/border/default/maximize");
|
2005-11-30 23:10:32 -08:00
|
|
|
|
|
|
|
mi = e_menu_item_new(m);
|
2006-06-07 14:42:13 -07:00
|
|
|
e_menu_item_label_set(mi, _("Maximize vertically"));
|
2006-07-28 04:17:33 -07:00
|
|
|
e_menu_item_radio_set(mi, 1);
|
|
|
|
e_menu_item_radio_group_set(mi, 3);
|
|
|
|
e_menu_item_toggle_set(mi, (bd->maximized & E_MAXIMIZE_DIRECTION) == E_MAXIMIZE_VERTICAL);
|
2006-04-12 07:08:06 -07:00
|
|
|
e_menu_item_callback_set(mi, _e_border_menu_cb_maximize_vertically, bd);
|
2005-11-30 23:10:32 -08:00
|
|
|
e_menu_item_icon_edje_set(mi,
|
2006-08-21 09:10:36 -07:00
|
|
|
e_theme_edje_file_get("base/theme/borders",
|
2006-08-22 20:39:02 -07:00
|
|
|
"e/widgets/border/default/maximize"),
|
|
|
|
"e/widgets/border/default/maximize");
|
2005-11-30 23:10:32 -08:00
|
|
|
|
|
|
|
mi = e_menu_item_new(m);
|
2006-06-07 14:42:13 -07:00
|
|
|
e_menu_item_label_set(mi, _("Maximize horizontally"));
|
2006-07-28 04:17:33 -07:00
|
|
|
e_menu_item_radio_set(mi, 1);
|
|
|
|
e_menu_item_radio_group_set(mi, 3);
|
|
|
|
e_menu_item_toggle_set(mi, (bd->maximized & E_MAXIMIZE_DIRECTION) == E_MAXIMIZE_HORIZONTAL);
|
2006-04-12 07:08:06 -07:00
|
|
|
e_menu_item_callback_set(mi, _e_border_menu_cb_maximize_horizontally, bd);
|
2005-11-30 23:10:32 -08:00
|
|
|
e_menu_item_icon_edje_set(mi,
|
2006-08-21 09:10:36 -07:00
|
|
|
e_theme_edje_file_get("base/theme/borders",
|
2006-08-22 20:39:02 -07:00
|
|
|
"e/widgets/border/default/maximize"),
|
|
|
|
"e/widgets/border/default/maximize");
|
2006-07-28 04:17:33 -07:00
|
|
|
|
|
|
|
mi = e_menu_item_new(m);
|
|
|
|
e_menu_item_label_set(mi, _("Unmaximize"));
|
|
|
|
e_menu_item_radio_set(mi, 1);
|
|
|
|
e_menu_item_radio_group_set(mi, 3);
|
|
|
|
e_menu_item_toggle_set(mi, (bd->maximized & E_MAXIMIZE_DIRECTION) == E_MAXIMIZE_NONE);
|
|
|
|
e_menu_item_callback_set(mi, _e_border_menu_cb_unmaximize, bd);
|
|
|
|
e_menu_item_icon_edje_set(mi,
|
2006-08-21 09:10:36 -07:00
|
|
|
e_theme_edje_file_get("base/theme/borders",
|
2006-08-22 20:39:02 -07:00
|
|
|
"e/widgets/border/default/maximize"),
|
|
|
|
"e/widgets/border/default/maximize");
|
2005-11-30 23:10:32 -08:00
|
|
|
}
|
|
|
|
|
2005-10-30 03:05:57 -08:00
|
|
|
m = e_menu_new();
|
2006-01-06 15:45:13 -08:00
|
|
|
e_menu_category_set(m,"border");
|
|
|
|
e_menu_category_data_set("border",bd);
|
2005-10-30 03:05:57 -08:00
|
|
|
e_object_data_set(E_OBJECT(m), bd);
|
|
|
|
bd->border_menu = m;
|
|
|
|
e_menu_post_deactivate_callback_set(m, _e_border_cb_border_menu_end, NULL);
|
|
|
|
|
|
|
|
mi = e_menu_item_new(m);
|
|
|
|
e_menu_item_label_set(mi, _("Window Locks"));
|
|
|
|
e_menu_item_callback_set(mi, _e_border_menu_cb_locks, bd);
|
|
|
|
e_menu_item_icon_edje_set(mi,
|
2006-08-21 09:10:36 -07:00
|
|
|
e_theme_edje_file_get("base/theme/borders",
|
2006-08-22 20:39:02 -07:00
|
|
|
"e/widgets/border/default/locks"),
|
|
|
|
"e/widgets/border/default/locks");
|
2005-10-30 03:05:57 -08:00
|
|
|
mi = e_menu_item_new(m);
|
|
|
|
e_menu_item_label_set(mi, _("Remember"));
|
|
|
|
e_menu_item_callback_set(mi, _e_border_menu_cb_remember, bd);
|
|
|
|
e_menu_item_icon_edje_set(mi,
|
2006-08-21 09:10:36 -07:00
|
|
|
e_theme_edje_file_get("base/theme/borders",
|
2006-08-22 20:39:02 -07:00
|
|
|
"e/widgets/border/default/remember"),
|
|
|
|
"e/widgets/border/default/remember");
|
2006-09-06 05:09:53 -07:00
|
|
|
if (!bd->lock_border)
|
|
|
|
{
|
|
|
|
mi = e_menu_item_new(m);
|
|
|
|
e_menu_item_label_set(mi, _("Borders"));
|
|
|
|
e_menu_item_callback_set(mi, _e_border_menu_cb_border, bd);
|
|
|
|
e_menu_item_icon_edje_set(mi,
|
|
|
|
e_theme_edje_file_get("base/theme/borders",
|
2006-10-16 05:12:30 -07:00
|
|
|
"e/widgets/border/default/borderless"),
|
|
|
|
"e/widgets/border/default/borderless");
|
2006-09-06 05:09:53 -07:00
|
|
|
}
|
2005-10-30 03:05:57 -08:00
|
|
|
|
2006-07-20 04:41:12 -07:00
|
|
|
if (!bd->sticky)
|
|
|
|
{
|
|
|
|
mi = e_menu_item_new(m);
|
|
|
|
e_menu_item_separator_set(mi, 1);
|
|
|
|
|
|
|
|
mi = e_menu_item_new(m);
|
|
|
|
e_menu_item_label_set(mi, _("Send to Desktop"));
|
|
|
|
e_menu_item_submenu_pre_callback_set(mi, _e_border_menu_cb_sendto_pre, bd);
|
|
|
|
e_menu_item_icon_edje_set(mi,
|
2006-08-21 09:10:36 -07:00
|
|
|
e_theme_edje_file_get("base/theme/borders",
|
2006-08-22 20:39:02 -07:00
|
|
|
"e/widgets/border/default/sendto"),
|
|
|
|
"e/widgets/border/default/sendto");
|
2006-07-20 04:41:12 -07:00
|
|
|
}
|
|
|
|
|
2005-10-30 03:05:57 -08:00
|
|
|
mi = e_menu_item_new(m);
|
|
|
|
e_menu_item_separator_set(mi, 1);
|
|
|
|
|
|
|
|
mi = e_menu_item_new(m);
|
|
|
|
e_menu_item_label_set(mi, _("Stacking"));
|
|
|
|
e_menu_item_submenu_set(mi, bd->border_stacking_menu);
|
|
|
|
e_menu_item_icon_edje_set(mi,
|
2006-08-21 09:10:36 -07:00
|
|
|
e_theme_edje_file_get("base/theme/borders",
|
2006-08-22 20:39:02 -07:00
|
|
|
"e/widgets/border/default/stacking"),
|
|
|
|
"e/widgets/border/default/stacking");
|
2005-10-30 03:05:57 -08:00
|
|
|
|
2006-01-06 05:56:46 -08:00
|
|
|
if (!(((bd->client.icccm.min_w == bd->client.icccm.max_w) &&
|
|
|
|
(bd->client.icccm.min_h == bd->client.icccm.max_h)) ||
|
|
|
|
(bd->lock_user_maximize)))
|
|
|
|
{
|
|
|
|
mi = e_menu_item_new(m);
|
|
|
|
e_menu_item_label_set(mi, _("Maximize"));
|
|
|
|
e_menu_item_submenu_set(mi, bd->border_maximize_menu);
|
|
|
|
e_menu_item_icon_edje_set(mi,
|
2006-08-21 09:10:36 -07:00
|
|
|
e_theme_edje_file_get("base/theme/borders",
|
2006-08-22 20:39:02 -07:00
|
|
|
"e/widgets/border/default/maximize"),
|
|
|
|
"e/widgets/border/default/maximize");
|
2006-01-06 05:56:46 -08:00
|
|
|
}
|
2005-11-30 23:10:32 -08:00
|
|
|
|
2006-10-16 05:12:30 -07:00
|
|
|
mi = e_menu_item_new(m);
|
|
|
|
e_menu_item_label_set(mi, _("State"));
|
|
|
|
e_menu_item_submenu_pre_callback_set(mi, _e_border_menu_cb_state_pre, bd);
|
|
|
|
e_menu_item_icon_edje_set(mi,
|
|
|
|
e_theme_edje_file_get("base/theme/borders",
|
|
|
|
"e/widgets/border/default/stick"),
|
|
|
|
"e/widgets/border/default/stick");
|
|
|
|
|
|
|
|
|
|
|
|
/* Removed as Borderless is in the Borders dialog also */
|
|
|
|
/*
|
2005-10-30 03:05:57 -08:00
|
|
|
if ((!bd->shaded) && (!bd->fullscreen) && (!bd->lock_border))
|
|
|
|
{
|
|
|
|
mi = e_menu_item_new(m);
|
|
|
|
e_menu_item_label_set(mi, _("Borderless"));
|
|
|
|
e_menu_item_check_set(mi, 1);
|
2006-06-15 12:27:27 -07:00
|
|
|
e_menu_item_toggle_set(mi, ((bd->client.border.name) && !strcmp("borderless", bd->client.border.name)));
|
2005-10-30 03:05:57 -08:00
|
|
|
e_menu_item_callback_set(mi, _e_border_menu_cb_borderless, bd);
|
|
|
|
e_menu_item_icon_edje_set(mi,
|
2006-08-21 09:10:36 -07:00
|
|
|
e_theme_edje_file_get("base/theme/borders",
|
2006-08-22 20:39:02 -07:00
|
|
|
"e/widgets/border/default/borderless"),
|
|
|
|
"e/widgets/border/default/borderless");
|
2005-10-30 03:05:57 -08:00
|
|
|
}
|
2006-10-16 05:12:30 -07:00
|
|
|
*/
|
2005-10-30 03:05:57 -08:00
|
|
|
|
|
|
|
if ((bd->client.icccm.accepts_focus || bd->client.icccm.take_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,
|
2006-08-21 09:10:36 -07:00
|
|
|
e_theme_edje_file_get("base/theme/borders",
|
2006-08-22 20:39:02 -07:00
|
|
|
"e/widgets/border/default/skip_winlist"),
|
|
|
|
"e/widgets/border/default/skip_winlist");
|
2005-10-30 03:05:57 -08:00
|
|
|
}
|
|
|
|
|
2006-07-02 09:19:51 -07:00
|
|
|
if (!bd->internal)
|
2005-10-30 03:05:57 -08:00
|
|
|
{
|
|
|
|
mi = e_menu_item_new(m);
|
2006-07-02 09:19:51 -07:00
|
|
|
e_menu_item_separator_set(mi, 1);
|
|
|
|
|
|
|
|
if (bd->app)
|
|
|
|
{
|
|
|
|
mi = e_menu_item_new(m);
|
|
|
|
e_menu_item_label_set(mi, _("Edit Icon"));
|
|
|
|
e_menu_item_callback_set(mi, _e_border_menu_cb_icon_edit, bd);
|
2006-09-01 03:43:20 -07:00
|
|
|
e_app_icon_add_to_menu_item(mi, bd->app);
|
2006-07-02 09:19:51 -07:00
|
|
|
}
|
|
|
|
else if (bd->client.icccm.class) /* icons with no class useless to borders */
|
|
|
|
{
|
|
|
|
mi = e_menu_item_new(m);
|
|
|
|
e_menu_item_label_set(mi, _("Create Icon"));
|
|
|
|
e_menu_item_callback_set(mi, _e_border_menu_cb_icon_edit, bd);
|
|
|
|
}
|
2006-10-15 19:34:38 -07:00
|
|
|
mi = e_menu_item_new(m);
|
|
|
|
e_menu_item_label_set(mi, _("Add App To Launcher"));
|
2006-10-15 20:06:43 -07:00
|
|
|
e_menu_item_submenu_pre_callback_set(mi, _e_border_menu_cb_icon_add_pre, bd);
|
2006-10-15 19:34:38 -07:00
|
|
|
e_util_menu_item_edje_icon_set(mi, "enlightenment/applications");
|
2005-10-30 03:05:57 -08:00
|
|
|
}
|
2006-07-02 09:19:51 -07:00
|
|
|
|
2005-10-30 03:05:57 -08:00
|
|
|
mi = e_menu_item_new(m);
|
|
|
|
e_menu_item_separator_set(mi, 1);
|
|
|
|
|
2006-05-29 00:35:41 -07:00
|
|
|
mi = e_menu_item_new(m);
|
|
|
|
e_menu_item_label_set(mi, _("Window Properties"));
|
|
|
|
e_menu_item_callback_set(mi, _e_border_menu_cb_prop, bd);
|
2006-07-24 20:27:23 -07:00
|
|
|
e_menu_item_icon_edje_set(mi,
|
2006-08-21 09:10:36 -07:00
|
|
|
e_theme_edje_file_get("base/theme/borders",
|
2006-08-22 20:39:02 -07:00
|
|
|
"e/widgets/border/default/properties"),
|
|
|
|
"e/widgets/border/default/properties");
|
2006-05-29 00:35:41 -07:00
|
|
|
|
|
|
|
mi = e_menu_item_new(m);
|
|
|
|
e_menu_item_separator_set(mi, 1);
|
|
|
|
|
2005-10-30 03:05:57 -08:00
|
|
|
if ((!bd->lock_close) && (!bd->internal))
|
|
|
|
{
|
|
|
|
mi = e_menu_item_new(m);
|
|
|
|
e_menu_item_label_set(mi, _("Kill"));
|
|
|
|
e_menu_item_callback_set(mi, _e_border_menu_cb_kill, bd);
|
|
|
|
e_menu_item_icon_edje_set(mi,
|
2006-08-21 09:10:36 -07:00
|
|
|
e_theme_edje_file_get("base/theme/borders",
|
2006-08-22 20:39:02 -07:00
|
|
|
"e/widgets/border/default/kill"),
|
|
|
|
"e/widgets/border/default/kill");
|
2006-07-24 19:37:33 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
if (!bd->lock_close)
|
|
|
|
{
|
2005-10-30 03:05:57 -08:00
|
|
|
mi = e_menu_item_new(m);
|
2006-07-24 19:37:33 -07:00
|
|
|
e_menu_item_label_set(mi, _("Close"));
|
|
|
|
e_menu_item_callback_set(mi, _e_border_menu_cb_close, bd);
|
|
|
|
e_menu_item_icon_edje_set(mi,
|
2006-08-21 09:10:36 -07:00
|
|
|
e_theme_edje_file_get("base/theme/borders",
|
2006-08-22 20:39:02 -07:00
|
|
|
"e/widgets/border/default/close"),
|
|
|
|
"e/widgets/border/default/close");
|
2005-10-30 03:05:57 -08:00
|
|
|
}
|
2006-06-02 19:47:54 -07:00
|
|
|
|
2006-07-24 19:37:33 -07:00
|
|
|
mi = e_menu_item_new(m);
|
|
|
|
e_menu_item_separator_set(mi, 1);
|
|
|
|
|
2006-06-02 19:47:54 -07:00
|
|
|
/* Only allow to change layer for windows in "normal" layers */
|
|
|
|
|
|
|
|
if ((!bd->lock_user_stacking) && (!bd->internal) &&
|
|
|
|
((bd->layer == 50) || (bd->layer == 100) || (bd->layer == 150)))
|
|
|
|
{
|
|
|
|
mi = e_menu_item_new(m);
|
|
|
|
e_menu_item_label_set(mi, _("Raise"));
|
|
|
|
e_menu_item_callback_set(mi, _e_border_menu_cb_raise, bd);
|
|
|
|
e_menu_item_icon_edje_set(mi,
|
2006-08-21 09:10:36 -07:00
|
|
|
e_theme_edje_file_get("base/theme/borders",
|
2006-08-22 20:39:02 -07:00
|
|
|
"e/widgets/border/default/stack_on_top"),
|
|
|
|
"e/widgets/border/default/stack_on_top");
|
2006-06-02 19:47:54 -07:00
|
|
|
|
|
|
|
mi = e_menu_item_new(m);
|
|
|
|
e_menu_item_label_set(mi, _("Lower"));
|
|
|
|
e_menu_item_callback_set(mi, _e_border_menu_cb_lower, bd);
|
|
|
|
e_menu_item_icon_edje_set(mi,
|
2006-08-21 09:10:36 -07:00
|
|
|
e_theme_edje_file_get("base/theme/borders",
|
2006-08-22 20:39:02 -07:00
|
|
|
"e/widgets/border/default/stack_on_top"),
|
|
|
|
"e/widgets/border/default/stack_below");
|
2006-06-02 19:47:54 -07:00
|
|
|
}
|
2006-10-16 05:12:30 -07:00
|
|
|
|
2006-02-02 22:16:25 -08:00
|
|
|
if ((!bd->lock_user_iconify) && (!bd->fullscreen))
|
2005-10-30 03:05:57 -08:00
|
|
|
{
|
|
|
|
mi = e_menu_item_new(m);
|
|
|
|
e_menu_item_label_set(mi, _("Iconify"));
|
|
|
|
e_menu_item_callback_set(mi, _e_border_menu_cb_iconify, bd);
|
|
|
|
e_menu_item_icon_edje_set(mi,
|
2006-08-21 09:10:36 -07:00
|
|
|
e_theme_edje_file_get("base/theme/borders",
|
2006-08-22 20:39:02 -07:00
|
|
|
"e/widgets/border/default/minimize"),
|
|
|
|
"e/widgets/border/default/minimize");
|
2005-10-30 03:05:57 -08:00
|
|
|
}
|
|
|
|
|
|
|
|
if (key)
|
|
|
|
e_menu_activate_key(m, bd->zone, x, y, 1, 1,
|
|
|
|
E_MENU_POP_DIRECTION_DOWN);
|
|
|
|
else
|
|
|
|
e_menu_activate_mouse(m, bd->zone, x, y, 1, 1,
|
|
|
|
E_MENU_POP_DIRECTION_DOWN, timestamp);
|
|
|
|
}
|
|
|
|
|
2006-01-07 02:39:46 -08:00
|
|
|
EAPI void
|
2005-10-30 03:05:57 -08:00
|
|
|
e_int_border_menu_del(E_Border *bd)
|
|
|
|
{
|
|
|
|
int was_menu = 0;
|
|
|
|
|
|
|
|
if (bd->border_stacking_menu)
|
|
|
|
{
|
|
|
|
e_object_del(E_OBJECT(bd->border_stacking_menu));
|
|
|
|
bd->border_stacking_menu = NULL;
|
|
|
|
was_menu = 1;
|
|
|
|
}
|
2005-11-30 23:10:32 -08:00
|
|
|
if( bd->border_maximize_menu )
|
|
|
|
{
|
|
|
|
e_object_del(E_OBJECT(bd->border_maximize_menu));
|
|
|
|
bd->border_maximize_menu = NULL;
|
|
|
|
was_menu = 1;
|
|
|
|
}
|
2005-10-30 03:05:57 -08:00
|
|
|
if (bd->border_menu)
|
|
|
|
{
|
|
|
|
e_object_del(E_OBJECT(bd->border_menu));
|
|
|
|
bd->border_menu = NULL;
|
|
|
|
was_menu = 1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
|
|
_e_border_cb_border_menu_end(void *data, E_Menu *m)
|
|
|
|
{
|
|
|
|
E_Border *bd;
|
|
|
|
|
|
|
|
bd = e_object_data_get(E_OBJECT(m));
|
|
|
|
if (bd)
|
|
|
|
{
|
|
|
|
/* If the border exists, delete all associated menus */
|
|
|
|
e_int_border_menu_del(bd);
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
/* Just delete this menu */
|
|
|
|
e_object_del(E_OBJECT(m));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
|
|
_e_border_menu_cb_locks(void *data, E_Menu *m, E_Menu_Item *mi)
|
|
|
|
{
|
|
|
|
E_Border *bd;
|
|
|
|
|
|
|
|
bd = data;
|
|
|
|
if (bd->border_locks_dialog) return;
|
|
|
|
e_int_border_locks(bd);
|
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
|
|
_e_border_menu_cb_remember(void *data, E_Menu *m, E_Menu_Item *mi)
|
|
|
|
{
|
|
|
|
E_Border *bd;
|
|
|
|
bd = data;
|
|
|
|
if (bd->border_remember_dialog) return;
|
|
|
|
e_int_border_remember(bd);
|
|
|
|
}
|
|
|
|
|
2005-11-06 00:03:13 -08:00
|
|
|
static void
|
|
|
|
_e_border_menu_cb_border(void *data, E_Menu *m, E_Menu_Item *mi)
|
|
|
|
{
|
|
|
|
E_Border *bd;
|
|
|
|
bd = data;
|
|
|
|
if (bd->border_border_dialog) return;
|
2006-10-14 02:43:12 -07:00
|
|
|
e_int_config_borders_border(bd);
|
2005-11-06 00:03:13 -08:00
|
|
|
}
|
|
|
|
|
2005-10-30 03:05:57 -08:00
|
|
|
static void
|
|
|
|
_e_border_menu_cb_close(void *data, E_Menu *m, E_Menu_Item *mi)
|
|
|
|
{
|
|
|
|
E_Border *bd;
|
|
|
|
|
|
|
|
bd = data;
|
|
|
|
if (!bd->lock_close)
|
|
|
|
e_border_act_close_begin(bd);
|
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
|
|
_e_border_menu_cb_iconify(void *data, E_Menu *m, E_Menu_Item *mi)
|
|
|
|
{
|
|
|
|
E_Border *bd;
|
|
|
|
|
|
|
|
bd = data;
|
|
|
|
if (!bd->lock_user_iconify)
|
|
|
|
{
|
|
|
|
if (bd->iconic) e_border_uniconify(bd);
|
|
|
|
else e_border_iconify(bd);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
|
|
_e_border_menu_cb_kill(void *data, E_Menu *m, E_Menu_Item *mi)
|
|
|
|
{
|
|
|
|
E_Border *bd;
|
|
|
|
|
|
|
|
bd = data;
|
|
|
|
if ((!bd->lock_close) && (!bd->internal))
|
|
|
|
e_border_act_kill_begin(bd);
|
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
|
|
_e_border_menu_cb_maximize(void *data, E_Menu *m, E_Menu_Item *mi)
|
|
|
|
{
|
|
|
|
E_Border *bd;
|
|
|
|
|
|
|
|
bd = data;
|
|
|
|
if (!bd->lock_user_maximize)
|
2006-07-28 04:17:33 -07:00
|
|
|
e_border_maximize(bd, (e_config->maximize_policy & E_MAXIMIZE_TYPE) | E_MAXIMIZE_BOTH);
|
2005-10-30 03:05:57 -08:00
|
|
|
}
|
2006-06-07 14:42:13 -07:00
|
|
|
|
2005-11-30 23:10:32 -08:00
|
|
|
static void
|
2006-04-12 07:08:06 -07:00
|
|
|
_e_border_menu_cb_maximize_vertically(void *data, E_Menu *m, E_Menu_Item *mi)
|
2005-11-30 23:10:32 -08:00
|
|
|
{
|
|
|
|
E_Border *bd;
|
2005-10-30 03:05:57 -08:00
|
|
|
|
2005-11-30 23:10:32 -08:00
|
|
|
bd = data;
|
|
|
|
if (!bd->lock_user_maximize)
|
|
|
|
{
|
2006-07-28 04:17:33 -07:00
|
|
|
if ((bd->maximized & E_MAXIMIZE_HORIZONTAL))
|
|
|
|
e_border_unmaximize(bd, E_MAXIMIZE_HORIZONTAL);
|
|
|
|
e_border_maximize(bd, (e_config->maximize_policy & E_MAXIMIZE_TYPE) | E_MAXIMIZE_VERTICAL);
|
2005-11-30 23:10:32 -08:00
|
|
|
}
|
|
|
|
}
|
2006-06-07 14:42:13 -07:00
|
|
|
|
2005-11-30 23:10:32 -08:00
|
|
|
static void
|
2006-04-12 07:08:06 -07:00
|
|
|
_e_border_menu_cb_maximize_horizontally(void *data, E_Menu *m, E_Menu_Item *mi)
|
2005-11-30 23:10:32 -08:00
|
|
|
{
|
|
|
|
E_Border *bd;
|
|
|
|
|
|
|
|
bd = data;
|
|
|
|
if (!bd->lock_user_maximize)
|
|
|
|
{
|
2006-07-28 04:17:33 -07:00
|
|
|
if ((bd->maximized & E_MAXIMIZE_VERTICAL))
|
|
|
|
e_border_unmaximize(bd, E_MAXIMIZE_VERTICAL);
|
|
|
|
e_border_maximize(bd, (e_config->maximize_policy & E_MAXIMIZE_TYPE) | E_MAXIMIZE_HORIZONTAL);
|
2005-11-30 23:10:32 -08:00
|
|
|
}
|
|
|
|
}
|
2006-06-07 14:42:13 -07:00
|
|
|
|
|
|
|
static void
|
|
|
|
_e_border_menu_cb_unmaximize(void *data, E_Menu *m, E_Menu_Item *mi)
|
|
|
|
{
|
|
|
|
E_Border *bd;
|
|
|
|
|
|
|
|
bd = data;
|
|
|
|
e_border_unmaximize(bd, E_MAXIMIZE_BOTH);
|
|
|
|
}
|
|
|
|
|
2005-11-30 23:10:32 -08:00
|
|
|
/*************************************************************/
|
2005-10-30 03:05:57 -08:00
|
|
|
static void
|
|
|
|
_e_border_menu_cb_shade(void *data, E_Menu *m, E_Menu_Item *mi)
|
|
|
|
{
|
|
|
|
E_Border *bd;
|
|
|
|
|
|
|
|
bd = data;
|
|
|
|
if (!bd->lock_user_shade)
|
|
|
|
{
|
|
|
|
if (bd->shaded) e_border_unshade(bd, E_DIRECTION_UP);
|
|
|
|
else e_border_shade(bd, E_DIRECTION_UP);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
|
|
_e_border_menu_cb_icon_edit(void *data, E_Menu *m, E_Menu_Item *mi)
|
|
|
|
{
|
2005-11-17 23:14:10 -08:00
|
|
|
E_App *a;
|
|
|
|
E_Border *bd;
|
2006-05-13 20:49:46 -07:00
|
|
|
char *bname = NULL, *bclass = NULL;
|
2006-06-05 08:36:02 -07:00
|
|
|
char path[4096];
|
2005-11-17 23:14:10 -08:00
|
|
|
|
|
|
|
bd = data;
|
|
|
|
a = bd->app;
|
2006-05-22 06:01:05 -07:00
|
|
|
|
|
|
|
bname = bd->client.icccm.name;
|
2006-07-19 04:05:31 -07:00
|
|
|
if ((bname) && (bname[0] == 0)) bname = NULL;
|
2006-05-22 06:01:05 -07:00
|
|
|
bclass = bd->client.icccm.class;
|
2006-07-19 04:05:31 -07:00
|
|
|
if ((bclass) && (bclass[0] == 0)) bclass = NULL;
|
2006-05-22 06:01:05 -07:00
|
|
|
|
2006-05-13 19:08:36 -07:00
|
|
|
if (!a)
|
2005-10-30 16:01:54 -08:00
|
|
|
{
|
2006-06-05 08:36:02 -07:00
|
|
|
if (bname)
|
2005-11-17 23:14:10 -08:00
|
|
|
{
|
2006-09-22 12:55:11 -07:00
|
|
|
const char *homedir;
|
2006-09-17 04:25:06 -07:00
|
|
|
|
|
|
|
homedir = e_user_homedir_get();
|
2006-09-22 12:55:11 -07:00
|
|
|
snprintf(path, sizeof(path), "%s/.e/e/applications/all/%s.desktop", homedir, bname);
|
|
|
|
a = e_app_empty_new(path);
|
2006-06-05 08:36:02 -07:00
|
|
|
}
|
|
|
|
else
|
|
|
|
a = e_app_empty_new(NULL);
|
|
|
|
|
|
|
|
if (a)
|
|
|
|
{
|
2006-05-13 20:49:46 -07:00
|
|
|
if (bname) a->win_name = evas_stringshare_add(bname);
|
|
|
|
if (bclass) a->win_class = evas_stringshare_add(bclass);
|
2005-11-17 23:14:10 -08:00
|
|
|
if (bd->client.icccm.window_role)
|
2005-12-04 04:03:59 -08:00
|
|
|
a->win_role = evas_stringshare_add(bd->client.icccm.window_role);
|
2006-05-13 20:49:46 -07:00
|
|
|
if (bclass) a->icon_class = evas_stringshare_add(bclass);
|
|
|
|
if (bclass) a->name = evas_stringshare_add(bclass);
|
|
|
|
if (bname) a->exe = evas_stringshare_add(bname);
|
2005-11-17 23:21:21 -08:00
|
|
|
if (bd->client.netwm.startup_id > 0)
|
|
|
|
a->startup_notify = 1;
|
2006-07-19 04:59:22 -07:00
|
|
|
if (bd->client.netwm.icons)
|
|
|
|
{
|
2006-07-19 06:27:04 -07:00
|
|
|
/* FIXME
|
|
|
|
* - Find the icon with the best size
|
|
|
|
* - Should use mkstemp
|
|
|
|
*/
|
2006-07-19 04:59:22 -07:00
|
|
|
const char *tmp;
|
|
|
|
|
|
|
|
tmp = getenv("TMPDIR");
|
|
|
|
if (!tmp) tmp = getenv("TMP");
|
|
|
|
if (!tmp) tmp = "/tmp";
|
2006-07-19 07:15:21 -07:00
|
|
|
snprintf(path, sizeof(path), "%s/%s-%.6f.png", tmp, bname, ecore_time_get());
|
2006-07-19 04:59:22 -07:00
|
|
|
if (e_util_icon_save(&(bd->client.netwm.icons[0]), path))
|
|
|
|
{
|
|
|
|
a->image = evas_stringshare_add(path);
|
|
|
|
a->width = bd->client.netwm.icons[0].width;
|
|
|
|
a->height = bd->client.netwm.icons[0].height;
|
2006-07-20 04:19:08 -07:00
|
|
|
a->tmpfile = 1;
|
2006-07-19 04:59:22 -07:00
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
fprintf(stderr, "Could not save file from ARGB: %s\n", path);
|
|
|
|
}
|
|
|
|
}
|
2006-05-13 18:13:42 -07:00
|
|
|
bd->app = a;
|
|
|
|
e_object_ref(E_OBJECT(bd->app));
|
2005-11-17 23:14:10 -08:00
|
|
|
}
|
2005-10-30 16:01:54 -08:00
|
|
|
}
|
2005-11-17 23:14:10 -08:00
|
|
|
if (!a) return;
|
2006-05-13 18:13:42 -07:00
|
|
|
if (a->orig)
|
|
|
|
e_eap_edit_show(m->zone->container, a->orig);
|
|
|
|
else
|
|
|
|
e_eap_edit_show(m->zone->container, a);
|
2006-05-13 20:49:46 -07:00
|
|
|
if ((!bname) && (!bclass))
|
|
|
|
{
|
|
|
|
e_util_dialog_show(_("Incomplete Window Properties"),
|
|
|
|
_("The window you are creating an icon for<br>"
|
|
|
|
"does not contain window name and class<br>"
|
|
|
|
"properties, so the needed properties for<br>"
|
|
|
|
"the icon so that it will be used for this<br>"
|
|
|
|
"window cannot be guessed. You will need to<br>"
|
|
|
|
"use the window title instead. This will only<br>"
|
|
|
|
"work if the window title is the same at<br>"
|
|
|
|
"the time the window starts up, and does not<br>"
|
|
|
|
"change."));
|
|
|
|
}
|
2005-10-30 03:05:57 -08:00
|
|
|
}
|
|
|
|
|
2006-10-15 19:34:38 -07:00
|
|
|
static void
|
|
|
|
_e_border_menu_cb_icon_add(void *data, E_Menu *m, E_Menu_Item *mi)
|
|
|
|
{
|
|
|
|
E_App *a, *bar_apps;
|
|
|
|
E_Border *bd;
|
|
|
|
Evas_List *l;
|
|
|
|
char buf[4096];
|
|
|
|
int found = 0;
|
2006-10-15 20:06:43 -07:00
|
|
|
|
|
|
|
bd = e_object_data_get(E_OBJECT(m));
|
2006-10-15 19:34:38 -07:00
|
|
|
a = bd->app;
|
|
|
|
if (!a)
|
|
|
|
return;
|
|
|
|
|
2006-10-15 20:06:43 -07:00
|
|
|
snprintf(buf, sizeof(buf), "%s/.e/e/applications/bar/%s", e_user_homedir_get(), (char *)data);
|
2006-10-15 19:34:38 -07:00
|
|
|
bar_apps = e_app_new(buf, 0);
|
|
|
|
if (bar_apps)
|
|
|
|
e_app_subdir_scan(bar_apps, 0);
|
|
|
|
for (l = bar_apps->subapps; l; l = l->next)
|
|
|
|
{
|
|
|
|
E_App *ap;
|
|
|
|
|
|
|
|
ap = l->data;
|
|
|
|
if (!ap) continue;
|
|
|
|
if (!e_app_valid_exe_get(ap)) continue;
|
|
|
|
if (!strcmp(ap->name, a->name))
|
|
|
|
{
|
|
|
|
found = 1;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (!found)
|
|
|
|
e_app_list_append(a, bar_apps);
|
|
|
|
}
|
|
|
|
|
2006-10-15 20:06:43 -07:00
|
|
|
static void
|
|
|
|
_e_border_menu_cb_icon_add_pre(void *data, E_Menu *m, E_Menu_Item *mi)
|
|
|
|
{
|
|
|
|
E_Menu *subm;
|
|
|
|
E_Menu_Item *submi;
|
|
|
|
E_Border *bd;
|
|
|
|
Ecore_List *dirs;
|
|
|
|
char buf[4096], *file;
|
|
|
|
|
|
|
|
bd = data;
|
|
|
|
|
|
|
|
snprintf(buf, sizeof(buf), "%s/.e/e/applications/bar", e_user_homedir_get());
|
|
|
|
dirs = ecore_file_ls(buf);
|
|
|
|
if (!dirs) return;
|
|
|
|
|
|
|
|
subm = e_menu_new();
|
|
|
|
while ((file = ecore_list_next(dirs)))
|
|
|
|
{
|
|
|
|
if (file[0] == '.') continue;
|
|
|
|
snprintf(buf, sizeof(buf), "%s/.e/e/applications/bar/%s", e_user_homedir_get(), file);
|
|
|
|
if (ecore_file_is_dir(buf))
|
|
|
|
{
|
|
|
|
submi = e_menu_item_new(subm);
|
|
|
|
e_menu_item_label_set(submi, file);
|
2006-10-15 20:14:12 -07:00
|
|
|
e_menu_item_callback_set(submi, _e_border_menu_cb_icon_add, file);
|
2006-10-15 20:06:43 -07:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
e_object_data_set(E_OBJECT(subm), bd);
|
|
|
|
e_menu_item_submenu_set(mi, subm);
|
|
|
|
}
|
|
|
|
|
2006-05-29 00:35:41 -07:00
|
|
|
static void
|
|
|
|
_e_border_menu_cb_prop(void *data, E_Menu *m, E_Menu_Item *mi)
|
|
|
|
{
|
|
|
|
E_Border *bd;
|
|
|
|
|
|
|
|
bd = data;
|
|
|
|
e_int_border_prop(bd);
|
|
|
|
}
|
|
|
|
|
2005-10-30 03:05:57 -08:00
|
|
|
static void
|
|
|
|
_e_border_menu_cb_stick(void *data, E_Menu *m, E_Menu_Item *mi)
|
|
|
|
{
|
|
|
|
E_Border *bd;
|
|
|
|
|
|
|
|
bd = data;
|
|
|
|
if (!bd->lock_user_sticky)
|
|
|
|
{
|
|
|
|
if (bd->sticky) e_border_unstick(bd);
|
|
|
|
else e_border_stick(bd);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
|
|
_e_border_menu_cb_on_top(void *data, E_Menu *m, E_Menu_Item *mi)
|
|
|
|
{
|
|
|
|
E_Border *bd;
|
|
|
|
|
|
|
|
bd = data;
|
|
|
|
if (bd->layer != 150)
|
|
|
|
{
|
|
|
|
e_border_layer_set(bd, 150);
|
|
|
|
e_hints_window_stacking_set(bd, E_STACKING_ABOVE);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
|
|
_e_border_menu_cb_below(void *data, E_Menu *m, E_Menu_Item *mi)
|
|
|
|
{
|
|
|
|
E_Border *bd;
|
|
|
|
|
|
|
|
bd = data;
|
|
|
|
if (bd->layer != 50)
|
|
|
|
{
|
|
|
|
e_border_layer_set(bd, 50);
|
|
|
|
e_hints_window_stacking_set(bd, E_STACKING_BELOW);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
|
|
_e_border_menu_cb_normal(void *data, E_Menu *m, E_Menu_Item *mi)
|
|
|
|
{
|
|
|
|
E_Border *bd;
|
|
|
|
|
|
|
|
bd = data;
|
|
|
|
if (bd->layer != 100)
|
|
|
|
{
|
|
|
|
e_border_layer_set(bd, 100);
|
|
|
|
e_hints_window_stacking_set(bd, E_STACKING_NONE);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
|
|
_e_border_menu_cb_borderless(void *data, E_Menu *m, E_Menu_Item *mi)
|
|
|
|
{
|
|
|
|
E_Border *bd;
|
|
|
|
int toggle;
|
|
|
|
|
|
|
|
bd = data;
|
|
|
|
if (!bd) return;
|
|
|
|
|
2006-06-11 22:17:10 -07:00
|
|
|
if (!bd->lock_border)
|
2005-10-30 03:05:57 -08:00
|
|
|
{
|
|
|
|
toggle = e_menu_item_toggle_get(mi);
|
|
|
|
if (toggle)
|
2006-09-23 16:37:15 -07:00
|
|
|
{
|
|
|
|
bd->borderless = 1;
|
|
|
|
ecore_x_mwm_borderless_set(bd->client.win, 1);
|
|
|
|
}
|
2005-10-30 03:05:57 -08:00
|
|
|
else
|
2006-09-23 16:37:15 -07:00
|
|
|
{
|
|
|
|
bd->borderless = 0;
|
|
|
|
ecore_x_mwm_borderless_set(bd->client.win, 0);
|
|
|
|
}
|
2006-06-15 07:21:35 -07:00
|
|
|
|
2005-10-30 03:05:57 -08:00
|
|
|
bd->client.border.changed = 1;
|
|
|
|
bd->changed = 1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
|
|
_e_border_menu_cb_fullscreen(void *data, E_Menu *m, E_Menu_Item *mi)
|
|
|
|
{
|
|
|
|
E_Border *bd;
|
|
|
|
int toggle;
|
|
|
|
|
|
|
|
bd = data;
|
|
|
|
if (!bd) return;
|
|
|
|
|
|
|
|
if (!bd->lock_user_fullscreen)
|
|
|
|
{
|
|
|
|
toggle = e_menu_item_toggle_get(mi);
|
|
|
|
if (toggle)
|
2005-11-04 15:30:18 -08:00
|
|
|
e_border_fullscreen(bd, e_config->fullscreen_policy);
|
2005-10-30 03:05:57 -08:00
|
|
|
else
|
|
|
|
e_border_unfullscreen(bd);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
|
|
_e_border_menu_cb_skip_winlist(void *data, E_Menu *m, E_Menu_Item *mi)
|
|
|
|
{
|
|
|
|
E_Border *bd;
|
|
|
|
|
|
|
|
bd = data;
|
|
|
|
if (!bd) return;
|
|
|
|
|
|
|
|
if ((bd->client.icccm.accepts_focus || bd->client.icccm.take_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)
|
|
|
|
{
|
|
|
|
E_Menu *subm;
|
|
|
|
E_Menu_Item *submi;
|
|
|
|
E_Border *bd;
|
2006-07-01 23:57:38 -07:00
|
|
|
E_Desk *desk_cur;
|
2005-10-30 03:05:57 -08:00
|
|
|
int i;
|
|
|
|
|
|
|
|
bd = data;
|
2006-07-01 23:57:38 -07:00
|
|
|
desk_cur = e_desk_current_get(bd->zone);
|
2005-10-30 03:05:57 -08:00
|
|
|
|
|
|
|
subm = e_menu_new();
|
|
|
|
e_object_data_set(E_OBJECT(subm), bd);
|
|
|
|
e_menu_item_submenu_set(mi, subm);
|
|
|
|
|
|
|
|
for (i = 0; i < bd->zone->desk_x_count * bd->zone->desk_y_count; i++)
|
|
|
|
{
|
|
|
|
E_Desk *desk;
|
|
|
|
|
|
|
|
desk = bd->zone->desks[i];
|
|
|
|
submi = e_menu_item_new(subm);
|
|
|
|
e_menu_item_label_set(submi, desk->name);
|
2006-07-01 23:57:38 -07:00
|
|
|
e_menu_item_radio_set(submi, 1);
|
|
|
|
e_menu_item_radio_group_set(submi, 2);
|
|
|
|
e_menu_item_toggle_set(submi, (desk_cur == desk ? 1 : 0));
|
2005-10-30 03:05:57 -08:00
|
|
|
e_menu_item_callback_set(submi, _e_border_menu_cb_sendto, desk);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
|
|
_e_border_menu_cb_sendto(void *data, E_Menu *m, E_Menu_Item *mi)
|
|
|
|
{
|
|
|
|
E_Desk *desk;
|
|
|
|
E_Border *bd;
|
|
|
|
|
|
|
|
desk = data;
|
|
|
|
bd = e_object_data_get(E_OBJECT(m));
|
|
|
|
if ((bd) && (desk))
|
|
|
|
{
|
|
|
|
e_border_desk_set(bd, desk);
|
|
|
|
}
|
|
|
|
}
|
2006-06-02 19:47:54 -07:00
|
|
|
|
|
|
|
static void
|
|
|
|
_e_border_menu_cb_raise(void *data, E_Menu *m, E_Menu_Item *mi)
|
|
|
|
{
|
|
|
|
E_Border *bd;
|
|
|
|
|
|
|
|
bd = data;
|
|
|
|
if ((!bd->lock_user_stacking) && (!bd->internal) &&
|
|
|
|
((bd->layer == 50) || (bd->layer == 100) || (bd->layer == 150)))
|
|
|
|
{
|
|
|
|
e_border_raise(bd);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
|
|
_e_border_menu_cb_lower(void *data, E_Menu *m, E_Menu_Item *mi)
|
|
|
|
{
|
|
|
|
E_Border *bd;
|
|
|
|
|
|
|
|
bd = data;
|
|
|
|
if ((!bd->lock_user_stacking) && (!bd->internal) &&
|
|
|
|
((bd->layer == 50) || (bd->layer == 100) || (bd->layer == 150)))
|
|
|
|
{
|
|
|
|
e_border_lower(bd);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2006-10-16 05:12:30 -07:00
|
|
|
static void
|
|
|
|
_e_border_menu_cb_state_pre(void *data, E_Menu *m, E_Menu_Item *mi)
|
|
|
|
{
|
|
|
|
E_Border *bd = data;
|
|
|
|
E_Menu *subm;
|
|
|
|
E_Menu_Item *submi;
|
|
|
|
|
|
|
|
if (!bd) return;
|
|
|
|
|
|
|
|
subm = e_menu_new();
|
|
|
|
e_object_data_set(E_OBJECT(subm), bd);
|
|
|
|
e_menu_item_submenu_set(mi, subm);
|
|
|
|
|
|
|
|
if ((!bd->lock_user_shade) && (!bd->fullscreen) && (!bd->maximized) &&
|
|
|
|
((!bd->client.border.name) || (strcmp("borderless", bd->client.border.name))))
|
|
|
|
{
|
|
|
|
submi = e_menu_item_new(subm);
|
|
|
|
e_menu_item_label_set(submi, _("Shaded"));
|
|
|
|
e_menu_item_check_set(submi, 1);
|
|
|
|
e_menu_item_toggle_set(submi, (bd->shaded ? 1 : 0));
|
|
|
|
e_menu_item_callback_set(submi, _e_border_menu_cb_shade, bd);
|
|
|
|
e_menu_item_icon_edje_set(submi,
|
|
|
|
e_theme_edje_file_get("base/theme/borders",
|
|
|
|
"e/widgets/border/default/shade"),
|
|
|
|
"e/widgets/border/default/shade");
|
|
|
|
}
|
|
|
|
|
|
|
|
if (!bd->lock_user_sticky)
|
|
|
|
{
|
|
|
|
submi = e_menu_item_new(subm);
|
|
|
|
e_menu_item_label_set(submi, _("Sticky"));
|
|
|
|
e_menu_item_check_set(submi, 1);
|
|
|
|
e_menu_item_toggle_set(submi, (bd->sticky ? 1 : 0));
|
|
|
|
e_menu_item_callback_set(submi, _e_border_menu_cb_stick, bd);
|
|
|
|
e_menu_item_icon_edje_set(submi,
|
|
|
|
e_theme_edje_file_get("base/theme/borders",
|
|
|
|
"e/widgets/border/default/stick"),
|
|
|
|
"e/widgets/border/default/stick");
|
|
|
|
}
|
|
|
|
|
|
|
|
if ((!bd->lock_user_fullscreen) && (!bd->shaded))
|
|
|
|
{
|
|
|
|
submi = e_menu_item_new(subm);
|
|
|
|
e_menu_item_label_set(submi, _("Fullscreen"));
|
|
|
|
e_menu_item_check_set(submi, 1);
|
|
|
|
e_menu_item_toggle_set(submi, bd->fullscreen);
|
|
|
|
e_menu_item_callback_set(submi, _e_border_menu_cb_fullscreen, bd);
|
|
|
|
e_menu_item_icon_edje_set(submi,
|
|
|
|
e_theme_edje_file_get("base/theme/borders",
|
|
|
|
"e/widgets/border/default/fullscreen"),
|
|
|
|
"e/widgets/border/default/fullscreen");
|
|
|
|
}
|
|
|
|
}
|