[Xfce4-commits] r26915 - xfwm4/trunk/src
Olivier Fourdan
olivier at xfce.org
Thu May 1 18:36:57 CEST 2008
Author: olivier
Date: 2008-05-01 16:36:57 +0000 (Thu, 01 May 2008)
New Revision: 26915
Modified:
xfwm4/trunk/src/events.c
xfwm4/trunk/src/settings.c
xfwm4/trunk/src/settings.h
xfwm4/trunk/src/workspaces.c
xfwm4/trunk/src/workspaces.h
Log:
Add adjacent workscape/delete active workspace - Patch from xsdg <xsdg+xfcedev at mit.edu> (Bug #3595)
Modified: xfwm4/trunk/src/events.c
===================================================================
--- xfwm4/trunk/src/events.c 2008-05-01 07:04:05 UTC (rev 26914)
+++ xfwm4/trunk/src/events.c 2008-05-01 16:36:57 UTC (rev 26915)
@@ -531,6 +531,12 @@
status = EVENT_FILTER_REMOVE;
workspaceSetCount (ev_screen_info, ev_screen_info->workspace_count - 1);
break;
+ case KEY_ADD_ADJACENT_WORKSPACE:
+ workspaceInsert (ev_screen_info, ev_screen_info->current_ws + 1);
+ break;
+ case KEY_DEL_ACTIVE_WORKSPACE:
+ workspaceDelete (ev_screen_info, ev_screen_info->current_ws);
+ break;
case KEY_WORKSPACE_1:
case KEY_WORKSPACE_2:
case KEY_WORKSPACE_3:
Modified: xfwm4/trunk/src/settings.c
===================================================================
--- xfwm4/trunk/src/settings.c 2008-05-01 07:04:05 UTC (rev 26914)
+++ xfwm4/trunk/src/settings.c 2008-05-01 16:36:57 UTC (rev 26915)
@@ -1234,10 +1234,12 @@
}
parseKeyString (dpy, &screen_info->params->keys[KEY_ADD_WORKSPACE], getValue ("add_workspace_key", rc));
+ parseKeyString (dpy, &screen_info->params->keys[KEY_ADD_ADJACENT_WORKSPACE], getValue ("add_adjacent_workspace_key", rc));
parseKeyString (dpy, &screen_info->params->keys[KEY_CANCEL], getValue ("cancel_key", rc));
parseKeyString (dpy, &screen_info->params->keys[KEY_CLOSE_WINDOW], getValue ("close_window_key", rc));
parseKeyString (dpy, &screen_info->params->keys[KEY_CYCLE_WINDOWS], getValue ("cycle_windows_key", rc));
parseKeyString (dpy, &screen_info->params->keys[KEY_DEL_WORKSPACE], getValue ("del_workspace_key", rc));
+ parseKeyString (dpy, &screen_info->params->keys[KEY_DEL_ACTIVE_WORKSPACE], getValue ("del_active_workspace_key", rc));
parseKeyString (dpy, &screen_info->params->keys[KEY_DOWN_WORKSPACE], getValue ("down_workspace_key", rc));
parseKeyString (dpy, &screen_info->params->keys[KEY_FILL_HORIZ], getValue ("fill_horiz_key", rc));
parseKeyString (dpy, &screen_info->params->keys[KEY_FILL_VERT], getValue ("fill_vert_key", rc));
@@ -1388,10 +1390,12 @@
/* Keys */
{"above_key", NULL, TRUE},
{"add_workspace_key", NULL, TRUE},
+ {"add_adjacent_workspace_key", NULL, TRUE},
{"cancel_key", NULL, TRUE},
{"close_window_key", NULL, TRUE},
{"cycle_windows_key", NULL, TRUE},
{"del_workspace_key", NULL, TRUE},
+ {"del_active_workspace_key", NULL, TRUE},
{"down_workspace_key", NULL, TRUE},
{"fullscreen_key", NULL, TRUE},
{"hide_window_key", NULL, TRUE},
Modified: xfwm4/trunk/src/settings.h
===================================================================
--- xfwm4/trunk/src/settings.h 2008-05-01 07:04:05 UTC (rev 26914)
+++ xfwm4/trunk/src/settings.h 2008-05-01 16:36:57 UTC (rev 26915)
@@ -40,13 +40,15 @@
TITLE_SHADOW_FRAME = 2
};
-#define FIRST_KEY KEY_ADD_WORKSPACE
+#define FIRST_KEY KEY_ADD_ADJACENT_WORKSPACE
enum
{
KEY_CANCEL = 0,
+ KEY_ADD_ADJACENT_WORKSPACE,
KEY_ADD_WORKSPACE,
KEY_CLOSE_WINDOW,
KEY_CYCLE_WINDOWS,
+ KEY_DEL_ACTIVE_WORKSPACE,
KEY_DEL_WORKSPACE,
KEY_DOWN_WORKSPACE,
KEY_FILL_HORIZ,
Modified: xfwm4/trunk/src/workspaces.c
===================================================================
--- xfwm4/trunk/src/workspaces.c 2008-05-01 07:04:05 UTC (rev 26914)
+++ xfwm4/trunk/src/workspaces.c 2008-05-01 16:36:57 UTC (rev 26915)
@@ -180,6 +180,10 @@
{
int row, col, newrow, newcol, previous_ws, n;
+ g_return_if_fail (screen_info != NULL);
+
+ TRACE ("entering workspaceMove");
+
workspaceGetPosition (screen_info, screen_info->current_ws, &row, &col);
newrow = modify_with_wrap (row, rowmod, screen_info->desktop_layout.rows, screen_info->params->wrap_layout);
newcol = modify_with_wrap (col, colmod, screen_info->desktop_layout.cols, screen_info->params->wrap_layout);
@@ -241,6 +245,8 @@
unsigned int mask;
unsigned long data[1];
+ g_return_if_fail (screen_info != NULL);
+
TRACE ("entering workspaceSwitch");
display_info = screen_info->display_info;
@@ -404,6 +410,11 @@
void
workspaceSetNames (ScreenInfo * screen_info, gchar **names, int items)
{
+ g_return_if_fail (screen_info != NULL);
+ g_return_if_fail (names != NULL);
+
+ TRACE ("entering workspaceSetNames");
+
if (screen_info->workspace_names)
{
g_strfreev (screen_info->workspace_names);
@@ -420,6 +431,8 @@
Client *c;
int i;
+ g_return_if_fail (screen_info != NULL);
+
TRACE ("entering workspaceSetCount");
if (count < 1)
@@ -455,6 +468,62 @@
}
void
+workspaceInsert (ScreenInfo * screen_info, int index)
+{
+ DisplayInfo *display_info;
+ Client *c;
+ int i, count;
+
+ g_return_if_fail (screen_info != NULL);
+
+ TRACE ("entering workspaceInsert");
+
+ count = screen_info->workspace_count;
+ workspaceSetCount(screen_info, count + 1);
+
+ if ((index < 0) || (index > count))
+ {
+ return;
+ }
+
+ for (c = screen_info->clients, i = 0; i < screen_info->client_count; c = c->next, i++)
+ {
+ if (c->win_workspace >= index)
+ {
+ clientSetWorkspace (c, c->win_workspace + 1, TRUE);
+ }
+ }
+}
+
+void
+workspaceDelete (ScreenInfo * screen_info, int index)
+{
+ DisplayInfo *display_info;
+ Client *c;
+ int i, count;
+
+ g_return_if_fail (screen_info != NULL);
+
+ TRACE ("entering workspaceDelete");
+
+ count = screen_info->workspace_count;
+ if ((index < 0) || (index > count))
+ {
+ return;
+ }
+
+ for (c = screen_info->clients, i = 0; i < screen_info->client_count; c = c->next, i++)
+ {
+ if (c->win_workspace > index)
+ {
+ clientSetWorkspace (c, c->win_workspace - 1, TRUE);
+ }
+ }
+
+ workspaceSetCount(screen_info, count - 1);
+}
+
+void
workspaceUpdateArea (ScreenInfo *screen_info)
{
DisplayInfo *display_info;
Modified: xfwm4/trunk/src/workspaces.h
===================================================================
--- xfwm4/trunk/src/workspaces.h 2008-05-01 07:04:05 UTC (rev 26914)
+++ xfwm4/trunk/src/workspaces.h 2008-05-01 16:36:57 UTC (rev 26915)
@@ -52,4 +52,10 @@
int);
void workspaceUpdateArea (ScreenInfo *);
+void workspaceInsert (ScreenInfo *,
+ int);
+
+void workspaceDelete (ScreenInfo *,
+ int);
+
#endif /* INC_WORKSPACES_H */
More information about the Xfce4-commits
mailing list