add the desktop action
This commit is contained in:
parent
5d350da82e
commit
16f2b255cb
5 changed files with 54 additions and 26 deletions
|
@ -161,6 +161,7 @@ openbox_openbox_SOURCES = \
|
|||
openbox/actions/cyclewindows.c \
|
||||
openbox/actions/debug.c \
|
||||
openbox/actions/decorations.c \
|
||||
openbox/actions/desktop.c \
|
||||
openbox/actions/directionalcyclewindows.c \
|
||||
openbox/actions/directionaltargetwindow.c \
|
||||
openbox/actions/execute.c \
|
||||
|
@ -173,6 +174,7 @@ openbox_openbox_SOURCES = \
|
|||
openbox/actions/maximize.c \
|
||||
openbox/actions/maximizehorizontal.c \
|
||||
openbox/actions/maximizevertical.c \
|
||||
openbox/actions/menu.c \
|
||||
openbox/actions/move.c \
|
||||
openbox/actions/moverelative.c \
|
||||
openbox/actions/moveto.c \
|
||||
|
@ -184,7 +186,6 @@ openbox_openbox_SOURCES = \
|
|||
openbox/actions/restart.c \
|
||||
openbox/actions/shade.c \
|
||||
openbox/actions/showdesktop.c \
|
||||
openbox/actions/showmenu.c \
|
||||
openbox/actions/unfocus.c \
|
||||
openbox/actions.c \
|
||||
openbox/actions.h \
|
||||
|
|
|
@ -162,13 +162,6 @@ void setup_action_send_to_desktop_down(ObAction **a, ObUserAction uact)
|
|||
(*a)->data.sendtodir.follow = TRUE;
|
||||
}
|
||||
|
||||
void setup_action_desktop(ObAction **a, ObUserAction uact)
|
||||
{
|
||||
/*
|
||||
(*a)->data.desktop.inter.any.interactive = FALSE;
|
||||
*/
|
||||
}
|
||||
|
||||
void setup_action_desktop_prev(ObAction **a, ObUserAction uact)
|
||||
{
|
||||
(*a)->data.desktopdir.inter.any.interactive = TRUE;
|
||||
|
@ -397,11 +390,6 @@ ActionString actionstrings[] =
|
|||
action_send_to_desktop_dir,
|
||||
setup_action_send_to_desktop_down
|
||||
},
|
||||
{
|
||||
"desktop",
|
||||
action_desktop,
|
||||
setup_action_desktop
|
||||
},
|
||||
{
|
||||
"desktopnext",
|
||||
action_desktop_dir,
|
||||
|
@ -821,19 +809,6 @@ void action_send_to_desktop(union ActionData *data)
|
|||
}
|
||||
}
|
||||
|
||||
void action_desktop(union ActionData *data)
|
||||
{
|
||||
/* XXX add the interactive/dialog option back again once the dialog
|
||||
has been made to not use grabs */
|
||||
if (data->desktop.desk < screen_num_desktops ||
|
||||
data->desktop.desk == DESKTOP_ALL)
|
||||
{
|
||||
screen_set_desktop(data->desktop.desk, TRUE);
|
||||
if (data->inter.any.interactive)
|
||||
screen_desktop_popup(data->desktop.desk, TRUE);
|
||||
}
|
||||
}
|
||||
|
||||
void action_desktop_dir(union ActionData *data)
|
||||
{
|
||||
guint d;
|
||||
|
|
|
@ -32,4 +32,5 @@ void action_all_startup()
|
|||
action_directionaltargetwindow_startup();
|
||||
action_resize_startup();
|
||||
action_decorations_startup();
|
||||
action_desktop_startup();
|
||||
}
|
||||
|
|
|
@ -33,5 +33,6 @@ void action_directionalcyclewindows_startup();
|
|||
void action_directionaltargetwindow_startup();
|
||||
void action_resize_startup();
|
||||
void action_decorations_startup();
|
||||
void action_desktop_startup();
|
||||
|
||||
#endif
|
||||
|
|
50
openbox/actions/desktop.c
Normal file
50
openbox/actions/desktop.c
Normal file
|
@ -0,0 +1,50 @@
|
|||
#include "openbox/actions.h"
|
||||
#include "openbox/screen.h"
|
||||
#include <glib.h>
|
||||
|
||||
typedef struct {
|
||||
guint desktop;
|
||||
} Options;
|
||||
|
||||
static gpointer setup_func(ObParseInst *i, xmlDocPtr doc, xmlNodePtr node);
|
||||
static void free_func(gpointer options);
|
||||
static gboolean run_func(ObActionsData *data, gpointer options);
|
||||
|
||||
void action_desktop_startup()
|
||||
{
|
||||
actions_register("desktop",
|
||||
setup_func,
|
||||
free_func,
|
||||
run_func,
|
||||
NULL, NULL);
|
||||
}
|
||||
|
||||
static gpointer setup_func(ObParseInst *i, xmlDocPtr doc, xmlNodePtr node)
|
||||
{
|
||||
xmlNodePtr n;
|
||||
Options *o;
|
||||
|
||||
o = g_new0(Options, 1);
|
||||
|
||||
if ((n = parse_find_node("desktop", node)))
|
||||
o->desktop = parse_int(doc, n) - 1;
|
||||
return o;
|
||||
}
|
||||
|
||||
static void free_func(gpointer options)
|
||||
{
|
||||
Options *o = options;
|
||||
|
||||
g_free(o);
|
||||
}
|
||||
|
||||
/* Always return FALSE because its not interactive */
|
||||
static gboolean run_func(ObActionsData *data, gpointer options)
|
||||
{
|
||||
Options *o = options;
|
||||
|
||||
if (o->desktop < screen_num_desktops)
|
||||
screen_set_desktop(o->desktop, TRUE);
|
||||
|
||||
return FALSE;
|
||||
}
|
Loading…
Reference in a new issue