From 32cf4afb0487d39d70e3a4134266aad3a1e396fd Mon Sep 17 00:00:00 2001 From: "Jasper St. Pierre" Date: Sat, 16 Aug 2014 14:49:18 -0400 Subject: [PATCH] screen: Fix workspace removal I accidentally broke this in commit a119ea9. The code was considerably more complicated than it needs to be, so let's replace it with a g_list_find and nothing more. --- src/core/screen.c | 40 +++++++++++++++------------------------- 1 file changed, 15 insertions(+), 25 deletions(-) diff --git a/src/core/screen.c b/src/core/screen.c index bae56f807..545050cb0 100644 --- a/src/core/screen.c +++ b/src/core/screen.c @@ -1073,38 +1073,28 @@ meta_screen_remove_workspace (MetaScreen *screen, MetaWorkspace *workspace, guint32 timestamp) { GList *l; + GList *next; MetaWorkspace *neighbour = NULL; - GList *next = NULL; int index; gboolean active_index_changed; int new_num; - for (l = screen->workspaces; l != NULL; l = next) - { - MetaWorkspace *w = l->data; - - if (w == workspace) - { - if (l->next) - next = l->next; - - if (l->prev) - neighbour = l->prev->data; - else if (l->next) - neighbour = l->next->data; - else - { - /* Cannot remove the only workspace! */ - return; - } - - break; - } - } - - if (!neighbour) + l = g_list_find (screen->workspaces, workspace); + if (!l) return; + next = l->next; + + if (l->prev) + neighbour = l->prev->data; + else if (l->next) + neighbour = l->next->data; + else + { + /* Cannot remove the only workspace! */ + return; + } + meta_workspace_relocate_windows (workspace, neighbour); if (workspace == screen->active_workspace)