all repos — openbox @ fbc7607fbd1a380428a53094e727ac7631871bd4

openbox fork - make it a bit more like ryudo

add the cyclewindows action
Dana Jansens danakj@orodu.net
commit

fbc7607fbd1a380428a53094e727ac7631871bd4

parent

58d8b90122b33f608b5c4c5b91d15207eb2cecf1

M Makefile.amMakefile.am

@@ -156,6 +156,7 @@ openbox_openbox_SOURCES = \

gettext.h \ openbox/actions/all.c \ openbox/actions/all.h \ + openbox/actions/cyclewindows.c \ openbox/actions/debug.c \ openbox/actions/execute.c \ openbox/actions/exit.c \
M openbox/action.copenbox/action.c

@@ -318,28 +318,6 @@ (*a)->data.desktopdir.linear = FALSE;

(*a)->data.desktopdir.wrap = TRUE; } -void setup_action_cycle_windows_next(ObAction **a, ObUserAction uact) -{ - (*a)->data.cycle.inter.any.interactive = TRUE; - (*a)->data.cycle.linear = FALSE; - (*a)->data.cycle.forward = TRUE; - (*a)->data.cycle.dialog = TRUE; - (*a)->data.cycle.dock_windows = FALSE; - (*a)->data.cycle.desktop_windows = FALSE; - (*a)->data.cycle.all_desktops = FALSE; -} - -void setup_action_cycle_windows_previous(ObAction **a, ObUserAction uact) -{ - (*a)->data.cycle.inter.any.interactive = TRUE; - (*a)->data.cycle.linear = FALSE; - (*a)->data.cycle.forward = FALSE; - (*a)->data.cycle.dialog = TRUE; - (*a)->data.cycle.dock_windows = FALSE; - (*a)->data.cycle.desktop_windows = FALSE; - (*a)->data.cycle.all_desktops = FALSE; -} - void setup_action_movefromedge_north(ObAction **a, ObUserAction uact) { (*a)->data.diraction.any.client_action = OB_CLIENT_ACTION_ALWAYS;

@@ -806,16 +784,6 @@ action_toggle_layer,

setup_action_bottom_layer }, { - "nextwindow", - action_cycle_windows, - setup_action_cycle_windows_next - }, - { - "previouswindow", - action_cycle_windows, - setup_action_cycle_windows_previous - }, - { "movefromedgenorth", action_movetoedge, setup_action_movefromedge_north

@@ -1000,18 +968,6 @@ parse_bool(doc, n);

} else if (act->func == action_activate) { if ((n = parse_find_node("here", node->xmlChildrenNode))) act->data.activate.here = parse_bool(doc, n); - } else if (act->func == action_cycle_windows) { - if ((n = parse_find_node("linear", node->xmlChildrenNode))) - act->data.cycle.linear = parse_bool(doc, n); - if ((n = parse_find_node("dialog", node->xmlChildrenNode))) - act->data.cycle.dialog = parse_bool(doc, n); - if ((n = parse_find_node("panels", node->xmlChildrenNode))) - act->data.cycle.dock_windows = parse_bool(doc, n); - if ((n = parse_find_node("desktop", node->xmlChildrenNode))) - act->data.cycle.desktop_windows = parse_bool(doc, n); - if ((n = parse_find_node("allDesktops", - node->xmlChildrenNode))) - act->data.cycle.all_desktops = parse_bool(doc, n); } else if (act->func == action_directional_focus) { if ((n = parse_find_node("dialog", node->xmlChildrenNode))) act->data.interdiraction.dialog = parse_bool(doc, n);

@@ -1689,21 +1645,6 @@ c->area.height + c->frame->size.top +

c->frame->size.bottom, c->shaded); moveresize_start(c, data->any.x, data->any.y, data->any.button, corner); -} - -void action_cycle_windows(union ActionData *data) -{ - /* if using focus_delay, stop the timer now so that focus doesn't go moving - on us */ - event_halt_focus_delay(); - - focus_cycle(data->cycle.forward, - data->cycle.all_desktops, - data->cycle.dock_windows, - data->cycle.desktop_windows, - data->cycle.linear, data->any.interactive, - data->cycle.dialog, - data->cycle.inter.final, data->cycle.inter.cancel); } void action_directional_focus(union ActionData *data)
M openbox/actions.copenbox/actions.c

@@ -190,7 +190,6 @@ }

static void actions_setup_data(ObActionsData *data, ObUserAction uact, - Time time, guint state, gint x, gint y,

@@ -198,7 +197,6 @@ ObFrameContext con,

struct _ObClient *client) { data->uact = uact; - data->time = time; data->state = state; data->x = x; data->y = y;

@@ -208,7 +206,6 @@ }

void actions_run_acts(GSList *acts, ObUserAction uact, - Time time, guint state, gint x, gint y,

@@ -230,7 +227,7 @@ ObActionsData data;

ObActionsAct *act = it->data; gboolean ok = TRUE; - actions_setup_data(&data, uact, time, state, x, y, con, client); + actions_setup_data(&data, uact, state, x, y, con, client); if (actions_act_is_interactive(act) && (!interactive_act || interactive_act->def != act->def))
M openbox/actions.hopenbox/actions.h

@@ -43,7 +43,6 @@ typedef void (*ObActionsInteractiveCancelFunc)(gpointer options);

struct _ObActionsData { ObUserAction uact; - Time time; guint state; gint x; gint y;

@@ -79,7 +78,6 @@ @return TRUE if an action is in interactive state, FALSE is none are

*/ void actions_run_acts(GSList *acts, ObUserAction uact, - Time time, guint state, gint x, gint y,
M openbox/actions/all.copenbox/actions/all.c

@@ -9,4 +9,5 @@ action_showdesktop_startup();

action_reconfigure_startup(); action_exit_startup(); action_restart_startup(); + action_cyclewindows_startup(); }
M openbox/actions/all.hopenbox/actions/all.h

@@ -10,5 +10,6 @@ void action_showdesktop_startup();

void action_reconfigure_startup(); void action_exit_startup(); void action_restart_startup(); +void action_cyclewindows_startup(); #endif
M openbox/actions/execute.copenbox/actions/execute.c

@@ -103,8 +103,7 @@ program = g_path_get_basename(argv[0]);

/* sets up the environment */ sn_setup_spawn_environment(program, o->sn_name, o->sn_icon, /* launch it on the current desktop */ - screen_desktop, - data->time); + screen_desktop); } if (!g_spawn_async(NULL, argv, NULL,
M openbox/client_list_combined_menu.copenbox/client_list_combined_menu.c

@@ -94,8 +94,7 @@ return TRUE; /* always show the menu */

} static void menu_execute(ObMenuEntry *self, ObMenuFrame *f, - ObClient *c, guint state, gpointer data, - Time time) + ObClient *c, guint state, gpointer data) { if (self->id == -1) { if (self->data.normal.data) /* it's set to NULL if its destroyed */
M openbox/client_list_menu.copenbox/client_list_menu.c

@@ -94,8 +94,7 @@ return TRUE; /* always show */

} static void desk_menu_execute(ObMenuEntry *self, ObMenuFrame *f, - ObClient *c, guint state, gpointer data, - Time time) + ObClient *c, guint state, gpointer data) { if (self->id == -1) { if (self->data.normal.data) /* it's set to NULL if its destroyed */
M openbox/client_menu.copenbox/client_menu.c

@@ -103,8 +103,7 @@ return TRUE; /* show the menu */

} static void client_menu_execute(ObMenuEntry *e, ObMenuFrame *f, - ObClient *c, guint state, gpointer data, - Time time) + ObClient *c, guint state, gpointer data) { gint x, y; gulong ignore_start;

@@ -202,8 +201,7 @@ return TRUE; /* show the menu */

} static void layer_menu_execute(ObMenuEntry *e, ObMenuFrame *f, - ObClient *c, guint state, gpointer data, - Time time) + ObClient *c, guint state, gpointer data) { gulong ignore_start;

@@ -281,8 +279,7 @@ return TRUE; /* show the menu */

} static void send_to_menu_execute(ObMenuEntry *e, ObMenuFrame *f, - ObClient *c, guint state, gpointer data, - Time time) + ObClient *c, guint state, gpointer data) { g_assert(c);
M openbox/event.copenbox/event.c

@@ -1630,7 +1630,7 @@ Control-Enter runs it without closing the menu. */

if (frame->child) menu_frame_select_next(frame->child); else if (frame->selected) - menu_entry_frame_execute(frame->selected, state, ev->xkey.time); + menu_entry_frame_execute(frame->selected, state); } else if (keycode == ob_keycode(OB_KEY_LEFT) && ev->xkey.state == 0) {

@@ -1700,7 +1700,7 @@ {

menu_frame_select(frame, found, TRUE); usleep(50000); /* highlight the item for a short bit so the user can see what happened */ - menu_entry_frame_execute(found, state, ev->xkey.time); + menu_entry_frame_execute(found, state); } else { menu_frame_select(frame, found, TRUE); if (num_found == 1)

@@ -1730,8 +1730,7 @@ if ((e = menu_entry_frame_under(ev->xbutton.x_root,

ev->xbutton.y_root))) { menu_frame_select(e->frame, e, TRUE); - menu_entry_frame_execute(e, ev->xbutton.state, - ev->xbutton.time); + menu_entry_frame_execute(e, ev->xbutton.state); } else menu_frame_hide_all();
M openbox/focus_cycle.copenbox/focus_cycle.c

@@ -67,15 +67,16 @@ focus_directional_cycle(0, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE);

} } -void focus_cycle(gboolean forward, gboolean all_desktops, - gboolean dock_windows, gboolean desktop_windows, - gboolean linear, gboolean interactive, - gboolean dialog, gboolean done, gboolean cancel) +ObClient* focus_cycle(gboolean forward, gboolean all_desktops, + gboolean dock_windows, gboolean desktop_windows, + gboolean linear, gboolean interactive, + gboolean dialog, gboolean done, gboolean cancel) { static ObClient *t = NULL; static GList *order = NULL; GList *it, *start, *list; ObClient *ft = NULL; + ObClient *ret = NULL; if (interactive) { if (cancel) {

@@ -146,8 +147,7 @@ }

} while (it != start); done_cycle: - if (done && focus_cycle_target) - client_activate(focus_cycle_target, FALSE, TRUE); + if (done && !cancel) ret = focus_cycle_target; t = NULL; focus_cycle_target = NULL;

@@ -159,7 +159,7 @@ focus_cycle_draw_indicator(NULL);

focus_cycle_popup_hide(); } - return; + return ret; } /* this be mostly ripped from fvwm */
M openbox/focus_cycle.hopenbox/focus_cycle.h

@@ -34,10 +34,10 @@ void focus_cycle_startup(gboolean reconfig);

void focus_cycle_shutdown(gboolean reconfig); /*! Cycle focus amongst windows. */ -void focus_cycle(gboolean forward, gboolean all_desktops, - gboolean dock_windows, gboolean desktop_windows, - gboolean linear, gboolean interactive, - gboolean dialog, gboolean done, gboolean cancel); +struct _ObClient* focus_cycle(gboolean forward, gboolean all_desktops, + gboolean dock_windows, gboolean desktop_windows, + gboolean linear, gboolean interactive, + gboolean dialog, gboolean done, gboolean cancel); void focus_directional_cycle(ObDirection dir, gboolean dock_windows, gboolean desktop_windows, gboolean interactive, gboolean dialog, gboolean done, gboolean cancel);
M openbox/keyboard.copenbox/keyboard.c

@@ -255,8 +255,7 @@ if (it == NULL) /* reset if the actions are not interactive */

keyboard_reset_chains(0); actions_run_acts(p->actions, OB_USER_ACTION_KEYBOARD_KEY, - e->xkey.time, e->xkey.state, - e->xkey.x_root, e->xkey.y_root, + e->xkey.state, e->xkey.x_root, e->xkey.y_root, OB_FRAME_CONTEXT_NONE, client); } break;
M openbox/menu.hopenbox/menu.h

@@ -44,7 +44,7 @@ gpointer data);

typedef void (*ObMenuExecuteFunc)(struct _ObMenuEntry *entry, struct _ObMenuFrame *frame, struct _ObClient *client, - guint state, gpointer data, Time time); + guint state, gpointer data); typedef void (*ObMenuDestroyFunc)(struct _ObMenu *menu, gpointer data); /*! @param x is the mouse x coordinate. on return it should be the x coordinate for the menu
M openbox/menuframe.copenbox/menuframe.c

@@ -1179,7 +1179,7 @@

menu_frame_show_submenu(f, self->frame, self); } -void menu_entry_frame_execute(ObMenuEntryFrame *self, guint state, Time time) +void menu_entry_frame_execute(ObMenuEntryFrame *self, guint state) { if (self->entry->type == OB_MENU_ENTRY_TYPE_NORMAL && self->entry->data.normal.enabled)

@@ -1200,11 +1200,10 @@ frame = NULL;

} if (func) - func(entry, frame, client, state, data, time); + func(entry, frame, client, state, data); else actions_run_acts(acts, OB_USER_ACTION_MENU_SELECTION, - time, state, -1, -1, OB_FRAME_CONTEXT_NONE, - client); + state, -1, -1, OB_FRAME_CONTEXT_NONE, client); } }
M openbox/menuframe.hopenbox/menuframe.h

@@ -141,6 +141,6 @@ ObMenuEntryFrame* menu_entry_frame_under(gint x, gint y);

void menu_entry_frame_show_submenu(ObMenuEntryFrame *self); -void menu_entry_frame_execute(ObMenuEntryFrame *self, guint state, Time time); +void menu_entry_frame_execute(ObMenuEntryFrame *self, guint state); #endif
M openbox/mouse.copenbox/mouse.c

@@ -182,7 +182,7 @@ }

static gboolean fire_binding(ObMouseAction a, ObFrameContext context, ObClient *c, guint state, - guint button, gint x, gint y, Time time) + guint button, gint x, gint y) { GSList *it; ObMouseBinding *b;

@@ -196,7 +196,7 @@ /* if not bound, then nothing to do! */

if (it == NULL) return FALSE; actions_run_acts(b->actions[a], mouse_action_to_user_action(a), - time, state, x, y, context, c); + state, x, y, context, c); return TRUE; }

@@ -228,8 +228,7 @@

fire_binding(OB_MOUSE_ACTION_PRESS, context, client, e->xbutton.state, e->xbutton.button, - e->xbutton.x_root, e->xbutton.y_root, - e->xbutton.time); + e->xbutton.x_root, e->xbutton.y_root); /* if the bindings grab the pointer, there won't be a ButtonRelease event for us */

@@ -293,22 +292,19 @@ fire_binding(OB_MOUSE_ACTION_RELEASE, context,

client, e->xbutton.state, e->xbutton.button, e->xbutton.x_root, - e->xbutton.y_root, - e->xbutton.time); + e->xbutton.y_root); if (click) fire_binding(OB_MOUSE_ACTION_CLICK, context, client, e->xbutton.state, e->xbutton.button, e->xbutton.x_root, - e->xbutton.y_root, - e->xbutton.time); + e->xbutton.y_root); if (dclick) fire_binding(OB_MOUSE_ACTION_DOUBLE_CLICK, context, client, e->xbutton.state, e->xbutton.button, e->xbutton.x_root, - e->xbutton.y_root, - e->xbutton.time); + e->xbutton.y_root); break; case MotionNotify:

@@ -329,7 +325,7 @@ context == OB_FRAME_CONTEXT_CLOSE)

break; fire_binding(OB_MOUSE_ACTION_MOTION, context, - client, state, button, px, py, e->xmotion.time); + client, state, button, px, py); button = 0; state = 0; }
M openbox/startupnotify.copenbox/startupnotify.c

@@ -19,6 +19,7 @@ */

#include "startupnotify.h" #include "gettext.h" +#include "event.h" #include <stdlib.h>

@@ -228,8 +229,7 @@ return FALSE; /* don't repeat */

} void sn_setup_spawn_environment(gchar *program, gchar *name, - gchar *icon_name, gint desktop, - Time time) + gchar *icon_name, gint desktop) { gchar *desc; const char *id;

@@ -247,7 +247,8 @@ sn_launcher_context_set_icon_name(sn_launcher, icon_name ? icon_name : program);

sn_launcher_context_set_binary_name(sn_launcher, program); if (desktop >= 0 && (unsigned) desktop < screen_num_desktops) sn_launcher_context_set_workspace(sn_launcher, (signed) desktop); - sn_launcher_context_initiate(sn_launcher, "openbox", program, time); + sn_launcher_context_initiate(sn_launcher, "openbox", program, + event_curtime); id = sn_launcher_context_get_startup_id(sn_launcher); /* 20 second timeout for apps to start */
M openbox/startupnotify.hopenbox/startupnotify.h

@@ -36,8 +36,7 @@ gboolean sn_get_desktop(gchar *id, guint *desktop);

/* Get the environment to run the program in, with startup notification */ void sn_setup_spawn_environment(gchar *program, gchar *name, - gchar *icon_name, gint desktop, - Time time); + gchar *icon_name, gint desktop); /* Tell startup notification we're not actually running the program we told it we were