diff options
author | Rob Adams <readams@src.gnome.org> | 2003-06-04 16:54:04 +0000 |
---|---|---|
committer | Rob Adams <readams@src.gnome.org> | 2003-06-04 16:54:04 +0000 |
commit | 4469a42a77601c9031d01050eca7db220b75445b (patch) | |
tree | 2905bcc1b8aa37e821f24943ad343984dd372ed2 /src | |
parent | bf965f8465b998df01fa5e24492a999ee26fe4e2 (diff) | |
download | metacity-4469a42a77601c9031d01050eca7db220b75445b.tar.gz |
Roll back broken update
Diffstat (limited to 'src')
-rw-r--r-- | src/group.c | 86 | ||||
-rw-r--r-- | src/group.h | 1 | ||||
-rw-r--r-- | src/window.c | 6 | ||||
-rw-r--r-- | src/window.h | 2 |
4 files changed, 43 insertions, 52 deletions
diff --git a/src/group.c b/src/group.c index a73bb066..ab35cd26 100644 --- a/src/group.c +++ b/src/group.c @@ -103,73 +103,69 @@ meta_group_unref (MetaGroup *group) MetaGroup* meta_window_get_group (MetaWindow *window) { - g_assert (window->group != NULL); - if (window->unmanaging) return NULL; - return window->group; -} - -void -meta_window_compute_group (MetaWindow* window) -{ - MetaGroup *group; + if (window->cached_group == NULL) + { + MetaGroup *group; - /* use window->xwindow if no window->xgroup_leader */ + /* use window->xwindow if no window->xgroup_leader */ - group = NULL; + group = NULL; - if (window->display->groups_by_leader) - { - if (window->xgroup_leader != None) - group = g_hash_table_lookup (window->display->groups_by_leader, - &window->xgroup_leader); - else - group = g_hash_table_lookup (window->display->groups_by_leader, - &window->xwindow); - } + if (window->display->groups_by_leader) + { + if (window->xgroup_leader != None) + group = g_hash_table_lookup (window->display->groups_by_leader, + &window->xgroup_leader); + else + group = g_hash_table_lookup (window->display->groups_by_leader, + &window->xwindow); + } - if (group != NULL) - { - window->group = group; - group->refcount += 1; - } - else - { - if (window->xgroup_leader != None) - group = meta_group_new (window->display, - window->xgroup_leader); + if (group != NULL) + { + window->cached_group = group; + group->refcount += 1; + } else - group = meta_group_new (window->display, - window->xwindow); + { + if (window->xgroup_leader != None) + group = meta_group_new (window->display, + window->xgroup_leader); + else + group = meta_group_new (window->display, + window->xwindow); - window->group = group; - } + window->cached_group = group; + } - window->group->windows = g_slist_prepend (window->group->windows, - window); + window->cached_group->windows = g_slist_prepend (window->cached_group->windows, + window); - meta_topic (META_DEBUG_GROUPS, - "Adding %s to group with leader 0x%lx\n", - window->desc, group->group_leader); + meta_topic (META_DEBUG_GROUPS, + "Adding %s to group with leader 0x%lx\n", + window->desc, group->group_leader); + } + return window->cached_group; } static void remove_window_from_group (MetaWindow *window) { - if (window->group != NULL) + if (window->cached_group != NULL) { meta_topic (META_DEBUG_GROUPS, "Removing %s from group with leader 0x%lx\n", - window->desc, window->group->group_leader); + window->desc, window->cached_group->group_leader); - window->group->windows = - g_slist_remove (window->group->windows, + window->cached_group->windows = + g_slist_remove (window->cached_group->windows, window); - meta_group_unref (window->group); - window->group = NULL; + meta_group_unref (window->cached_group); + window->cached_group = NULL; } } diff --git a/src/group.h b/src/group.h index 3f1425b5..6639839a 100644 --- a/src/group.h +++ b/src/group.h @@ -26,7 +26,6 @@ /* note, can return NULL */ MetaGroup* meta_window_get_group (MetaWindow *window); -void meta_window_compute_group (MetaWindow* window); void meta_window_shutdown_group (MetaWindow *window); void meta_window_group_leader_changed (MetaWindow *window); diff --git a/src/window.c b/src/window.c index 173eec8f..7b65e95e 100644 --- a/src/window.c +++ b/src/window.c @@ -490,7 +490,7 @@ meta_window_new (MetaDisplay *display, window->top_strut = 0; window->bottom_strut = 0; - window->group = NULL; + window->cached_group = NULL; window->using_net_wm_name = FALSE; window->using_net_wm_icon_name = FALSE; @@ -692,10 +692,6 @@ meta_window_new (MetaDisplay *display, } } - /* assign the window to its group, or create a new group if needed - */ - meta_window_compute_group (window); - /* Maximize windows if they are too big for their work * area (bit of a hack here). Assume undecorated windows * probably don't intend to be maximized. diff --git a/src/window.h b/src/window.h index 2b6a8fa0..2c331d84 100644 --- a/src/window.h +++ b/src/window.h @@ -284,7 +284,7 @@ struct _MetaWindow int dialog_pipe; /* maintained by group.c */ - MetaGroup *group; + MetaGroup *cached_group; }; #define META_WINDOW_ALLOWS_MOVE(w) ((w)->has_move_func && !(w)->maximized && !(w)->fullscreen) |