diff --git a/src/bin/e_actions.c b/src/bin/e_actions.c index 9ae95018b..acfb5bb7d 100644 --- a/src/bin/e_actions.c +++ b/src/bin/e_actions.c @@ -352,6 +352,67 @@ ACT_FN_GO(window_iconic) } } +/***************************************************************************/ +ACT_FN_GO(window_fullscreen_toggle) +{ + if (!obj) obj = E_OBJECT(e_border_focused_get()); + if (!obj) return; + if (obj->type != E_BORDER_TYPE) + { + obj = E_OBJECT(e_border_focused_get()); + if (!obj) return; + } + if (!((E_Border *)obj)->lock_user_fullscreen) + { + E_Border *bd; + bd = (E_Border *)obj; + if (bd->fullscreen) + e_border_unfullscreen(bd); + else if (params == 0 || *params == '\0') + e_border_fullscreen(bd, e_config->fullscreen_policy); + else if (! strcmp(params, "resize")) + e_border_fullscreen(bd, E_FULLSCREEN_RESIZE); + else if (! strcmp(params, "zoom")) + e_border_fullscreen(bd, E_FULLSCREEN_ZOOM); + } +} + +/***************************************************************************/ +ACT_FN_GO(window_fullscreen) +{ + if (!obj) obj = E_OBJECT(e_border_focused_get()); + if (!obj) return; + if (obj->type != E_BORDER_TYPE) + { + obj = E_OBJECT(e_border_focused_get()); + if (!obj) return; + } + if (!((E_Border *)obj)->lock_user_fullscreen) + { + E_Border *bd; + bd = (E_Border *)obj; + if (params) + { + int v; + char buf[32]; + if (sscanf(params, "%i %20s", &v, buf) == 2) + { + if (v == 1) + { + if (buf == 0 || *buf == '\0') + e_border_fullscreen(bd, e_config->fullscreen_policy); + else if (! strcmp(buf, "resize")) + e_border_fullscreen(bd, E_FULLSCREEN_RESIZE); + else if (! strcmp(buf, "zoom")) + e_border_fullscreen(bd, E_FULLSCREEN_ZOOM); + } + else if (v == 0) + e_border_unfullscreen(bd); + } + } + } +} + /***************************************************************************/ ACT_FN_GO(window_maximized_toggle) { @@ -1594,6 +1655,14 @@ e_actions_init(void) ACT_GO(window_iconic); + /* window_fullscreen_toggle */ + ACT_GO(window_fullscreen_toggle); + e_register_action_predef_name(_("Window : State"), _("Fullscreen Mode Toggle"), + "window_fullscreen_toggle", NULL, + EDIT_RESTRICT_ACTION | EDIT_RESTRICT_PARAMS, 0); + + ACT_GO(window_fullscreen); + /* window_maximized_toggle */ ACT_GO(window_maximized_toggle); e_register_action_predef_name(_("Window : State"), _("Maximize"), "window_maximized_toggle", diff --git a/src/bin/e_int_border_menu.c b/src/bin/e_int_border_menu.c index d31a52bbb..c3c7ecc04 100644 --- a/src/bin/e_int_border_menu.c +++ b/src/bin/e_int_border_menu.c @@ -706,9 +706,11 @@ _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; + E_Desk *desk_cur; int i; bd = data; + desk_cur = e_desk_current_get(bd->zone); subm = e_menu_new(); e_object_data_set(E_OBJECT(subm), bd); @@ -721,6 +723,9 @@ _e_border_menu_cb_sendto_pre(void *data, E_Menu *m, E_Menu_Item *mi) desk = bd->zone->desks[i]; submi = e_menu_item_new(subm); e_menu_item_label_set(submi, desk->name); + 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)); e_menu_item_callback_set(submi, _e_border_menu_cb_sendto, desk); } }