Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
What's new
7
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Open sidebar
Marco Trevisan
mutter
Commits
81c1c70c
Commit
81c1c70c
authored
Aug 27, 2017
by
Armin Krezović
Committed by
Jonas Ådahl
Jul 06, 2018
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Move workspace related code from MetaDisplay to MetaWorkspaceManager
https://bugzilla.gnome.org/show_bug.cgi?id=759538
parent
e05cd600
Changes
18
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
18 changed files
with
1093 additions
and
996 deletions
+1093
-996
src/core/constraints.c
src/core/constraints.c
+5
-3
src/core/core.c
src/core/core.c
+12
-8
src/core/display-private.h
src/core/display-private.h
+0
-52
src/core/display.c
src/core/display.c
+7
-762
src/core/edge-resistance.c
src/core/edge-resistance.c
+5
-3
src/core/keybindings.c
src/core/keybindings.c
+21
-13
src/core/meta-workspace-manager-private.h
src/core/meta-workspace-manager-private.h
+45
-0
src/core/meta-workspace-manager.c
src/core/meta-workspace-manager.c
+786
-0
src/core/stack.c
src/core/stack.c
+18
-7
src/core/window.c
src/core/window.c
+68
-41
src/core/workspace-private.h
src/core/workspace-private.h
+2
-1
src/core/workspace.c
src/core/workspace.c
+43
-38
src/meta/display.h
src/meta/display.h
+0
-24
src/meta/meta-workspace-manager.h
src/meta/meta-workspace-manager.h
+22
-0
src/x11/events.c
src/x11/events.c
+11
-8
src/x11/meta-x11-display.c
src/x11/meta-x11-display.c
+37
-31
src/x11/window-props.c
src/x11/window-props.c
+4
-1
src/x11/window-x11.c
src/x11/window-x11.c
+7
-4
No files found.
src/core/constraints.c
View file @
81c1c70c
...
...
@@ -24,6 +24,7 @@
#include <config.h>
#include "boxes-private.h"
#include "constraints.h"
#include "meta-workspace-manager-private.h"
#include "workspace-private.h"
#include "place.h"
#include <meta/prefs.h>
...
...
@@ -412,7 +413,7 @@ setup_constraint_info (ConstraintInfo *info,
&
info
->
entire_monitor
);
}
cur_workspace
=
window
->
display
->
active_workspace
;
cur_workspace
=
window
->
display
->
workspace_manager
->
active_workspace
;
info
->
usable_screen_region
=
meta_workspace_get_onscreen_region
(
cur_workspace
);
info
->
usable_monitor_region
=
...
...
@@ -499,7 +500,7 @@ place_window_if_needed(MetaWindow *window,
meta_window_get_work_area_for_logical_monitor
(
window
,
logical_monitor
,
&
info
->
work_area_monitor
);
cur_workspace
=
window
->
display
->
active_workspace
;
cur_workspace
=
window
->
display
->
workspace_manager
->
active_workspace
;
info
->
usable_monitor_region
=
meta_workspace_get_onmonitor_region
(
cur_workspace
,
logical_monitor
);
...
...
@@ -926,6 +927,7 @@ constrain_maximization (MetaWindow *window,
ConstraintPriority
priority
,
gboolean
check_only
)
{
MetaWorkspaceManager
*
workspace_manager
=
window
->
display
->
workspace_manager
;
MetaRectangle
target_size
;
MetaRectangle
min_size
,
max_size
;
gboolean
hminbad
,
vminbad
;
...
...
@@ -965,7 +967,7 @@ constrain_maximization (MetaWindow *window,
direction
=
META_DIRECTION_HORIZONTAL
;
else
direction
=
META_DIRECTION_VERTICAL
;
active_workspace_struts
=
w
indow
->
display
->
active_workspace
->
all_struts
;
active_workspace_struts
=
w
orkspace_manager
->
active_workspace
->
all_struts
;
target_size
=
info
->
current
;
meta_rectangle_expand_to_avoiding_struts
(
&
target_size
,
...
...
src/core/core.c
View file @
81c1c70c
...
...
@@ -24,6 +24,7 @@
#include <config.h>
#include "core.h"
#include "frame.h"
#include "meta-workspace-manager-private.h"
#include "workspace-private.h"
#include <meta/prefs.h>
#include <meta/meta-x11-errors.h>
...
...
@@ -77,6 +78,8 @@ static gboolean
lower_window_and_transients
(
MetaWindow
*
window
,
gpointer
data
)
{
MetaWorkspaceManager
*
workspace_manager
=
window
->
display
->
workspace_manager
;
meta_window_lower
(
window
);
meta_window_foreach_transient
(
window
,
lower_window_and_transients
,
NULL
);
...
...
@@ -87,22 +90,22 @@ lower_window_and_transients (MetaWindow *window,
* Do extra sanity checks to avoid possible race conditions.
* (Borrowed from window.c.)
*/
if
(
w
indow
->
display
->
active_workspace
&&
if
(
w
orkspace_manager
->
active_workspace
&&
meta_window_located_on_workspace
(
window
,
w
indow
->
display
->
active_workspace
))
w
orkspace_manager
->
active_workspace
))
{
GList
*
link
;
link
=
g_list_find
(
w
indow
->
display
->
active_workspace
->
mru_list
,
link
=
g_list_find
(
w
orkspace_manager
->
active_workspace
->
mru_list
,
window
);
g_assert
(
link
);
w
indow
->
display
->
active_workspace
->
mru_list
=
g_list_remove_link
(
w
indow
->
display
->
active_workspace
->
mru_list
,
w
orkspace_manager
->
active_workspace
->
mru_list
=
g_list_remove_link
(
w
orkspace_manager
->
active_workspace
->
mru_list
,
link
);
g_list_free
(
link
);
w
indow
->
display
->
active_workspace
->
mru_list
=
g_list_append
(
w
indow
->
display
->
active_workspace
->
mru_list
,
w
orkspace_manager
->
active_workspace
->
mru_list
=
g_list_append
(
w
orkspace_manager
->
active_workspace
->
mru_list
,
window
);
}
}
...
...
@@ -116,6 +119,7 @@ meta_core_user_lower_and_unfocus (Display *xdisplay,
guint32
timestamp
)
{
MetaWindow
*
window
=
get_window
(
xdisplay
,
frame_xwindow
);
MetaWorkspaceManager
*
workspace_manager
=
window
->
display
->
workspace_manager
;
lower_window_and_transients
(
window
,
NULL
);
...
...
@@ -123,7 +127,7 @@ meta_core_user_lower_and_unfocus (Display *xdisplay,
* the focus window, assume that's always the case. (Typically,
* this will be invoked via keyboard action or by a mouse action;
* in either case the window or a modal child will have been focused.) */
meta_workspace_focus_default_window
(
w
indow
->
display
->
active_workspace
,
meta_workspace_focus_default_window
(
w
orkspace_manager
->
active_workspace
,
NULL
,
timestamp
);
}
...
...
src/core/display-private.h
View file @
81c1c70c
...
...
@@ -242,16 +242,6 @@ struct _MetaDisplay
guint
work_area_later
;
guint
check_fullscreen_later
;
MetaWorkspace
*
active_workspace
;
GList
*
workspaces
;
int
rows_of_workspaces
;
int
columns_of_workspaces
;
MetaDisplayCorner
starting_corner
;
guint
vertical_workspaces
:
1
;
guint
workspace_layout_overridden
:
1
;
MetaBell
*
bell
;
MetaWorkspaceManager
*
workspace_manager
;
};
...
...
@@ -442,46 +432,4 @@ void meta_display_queue_check_fullscreen (MetaDisplay *display);
MetaWindow
*
meta_display_get_pointer_window
(
MetaDisplay
*
display
,
MetaWindow
*
not_this_one
);
void
meta_display_init_workspaces
(
MetaDisplay
*
display
);
void
meta_display_update_workspace_layout
(
MetaDisplay
*
display
,
MetaDisplayCorner
starting_corner
,
gboolean
vertical_layout
,
int
n_rows
,
int
n_columns
);
typedef
struct
MetaWorkspaceLayout
MetaWorkspaceLayout
;
struct
MetaWorkspaceLayout
{
int
rows
;
int
cols
;
int
*
grid
;
int
grid_area
;
int
current_row
;
int
current_col
;
};
void
meta_display_calc_workspace_layout
(
MetaDisplay
*
display
,
int
num_workspaces
,
int
current_space
,
MetaWorkspaceLayout
*
layout
);
void
meta_display_free_workspace_layout
(
MetaWorkspaceLayout
*
layout
);
void
meta_display_minimize_all_on_active_workspace_except
(
MetaDisplay
*
display
,
MetaWindow
*
keep
);
/* Show/hide the desktop (temporarily hide all windows) */
void
meta_display_show_desktop
(
MetaDisplay
*
display
,
guint32
timestamp
);
void
meta_display_unshow_desktop
(
MetaDisplay
*
display
);
void
meta_display_workspace_switched
(
MetaDisplay
*
display
,
int
from
,
int
to
,
MetaMotionDirection
direction
);
void
meta_display_update_num_workspaces
(
MetaDisplay
*
display
,
guint32
timestamp
,
int
new_num
);
#endif
src/core/display.c
View file @
81c1c70c
This diff is collapsed.
Click to expand it.
src/core/edge-resistance.c
View file @
81c1c70c
...
...
@@ -23,6 +23,7 @@
#include "edge-resistance.h"
#include "boxes-private.h"
#include "display-private.h"
#include "meta-workspace-manager-private.h"
#include "workspace-private.h"
/* A simple macro for whether a given window's edges are potentially
...
...
@@ -999,6 +1000,7 @@ compute_resistance_and_snapping_edges (MetaDisplay *display)
* in the layer that we are working on
*/
GSList
*
rem_windows
,
*
rem_win_stacking
;
MetaWorkspaceManager
*
workspace_manager
=
display
->
workspace_manager
;
g_assert
(
display
->
grab_window
!=
NULL
);
meta_topic
(
META_DEBUG_WINDOW_OPS
,
...
...
@@ -1010,7 +1012,7 @@ compute_resistance_and_snapping_edges (MetaDisplay *display)
*/
stacked_windows
=
meta_stack_list_windows
(
display
->
stack
,
display
->
active_workspace
);
workspace_manager
->
active_workspace
);
/*
* 2nd: we need to separate that stacked list into a list of windows that
...
...
@@ -1172,8 +1174,8 @@ compute_resistance_and_snapping_edges (MetaDisplay *display)
*/
cache_edges
(
display
,
edges
,
display
->
active_workspace
->
monitor_edges
,
display
->
active_workspace
->
screen_edges
);
workspace_manager
->
active_workspace
->
monitor_edges
,
workspace_manager
->
active_workspace
->
screen_edges
);
g_list_free
(
edges
);
/*
...
...
src/core/keybindings.c
View file @
81c1c70c
...
...
@@ -29,6 +29,7 @@
#include <config.h>
#include "keybindings-private.h"
#include "meta-workspace-manager-private.h"
#include "workspace-private.h"
#include <meta/compositor.h>
#include <meta/meta-x11-errors.h>
...
...
@@ -2733,8 +2734,9 @@ handle_switch_to_last_workspace (MetaDisplay *display,
MetaKeyBinding
*
binding
,
gpointer
dummy
)
{
gint
target
=
meta_display_get_n_workspaces
(
display
)
-
1
;
MetaWorkspace
*
workspace
=
meta_display_get_workspace_by_index
(
display
,
target
);
MetaWorkspaceManager
*
workspace_manager
=
display
->
workspace_manager
;
gint
target
=
meta_workspace_manager_get_n_workspaces
(
workspace_manager
)
-
1
;
MetaWorkspace
*
workspace
=
meta_workspace_manager_get_workspace_by_index
(
workspace_manager
,
target
);
meta_workspace_activate
(
workspace
,
event
->
time
);
}
...
...
@@ -2746,6 +2748,7 @@ handle_switch_to_workspace (MetaDisplay *display,
gpointer
dummy
)
{
gint
which
=
binding
->
handler
->
data
;
MetaWorkspaceManager
*
workspace_manager
=
display
->
workspace_manager
;
MetaWorkspace
*
workspace
;
if
(
which
<
0
)
...
...
@@ -2754,12 +2757,12 @@ handle_switch_to_workspace (MetaDisplay *display,
* current workspace.
*/
workspace
=
meta_workspace_get_neighbor
(
display
->
active_workspace
,
workspace
=
meta_workspace_get_neighbor
(
workspace_manager
->
active_workspace
,
which
);
}
else
{
workspace
=
meta_
display
_get_workspace_by_index
(
display
,
which
);
workspace
=
meta_
workspace_manager
_get_workspace_by_index
(
workspace_manager
,
which
);
}
if
(
workspace
)
...
...
@@ -2982,15 +2985,17 @@ handle_show_desktop (MetaDisplay *display,
MetaKeyBinding
*
binding
,
gpointer
dummy
)
{
if
(
display
->
active_workspace
->
showing_desktop
)
MetaWorkspaceManager
*
workspace_manager
=
display
->
workspace_manager
;
if
(
workspace_manager
->
active_workspace
->
showing_desktop
)
{
meta_
display_unshow_desktop
(
display
);
meta_workspace_focus_default_window
(
display
->
active_workspace
,
meta_
workspace_manager_unshow_desktop
(
workspace_manager
);
meta_workspace_focus_default_window
(
workspace_manager
->
active_workspace
,
NULL
,
event
->
time
);
}
else
meta_
display_show_desktop
(
display
,
event
->
time
);
meta_
workspace_manager_show_desktop
(
workspace_manager
,
event
->
time
);
}
static
void
...
...
@@ -3077,6 +3082,7 @@ do_choose_window (MetaDisplay *display,
MetaKeyBinding
*
binding
,
gboolean
backward
)
{
MetaWorkspaceManager
*
workspace_manager
=
display
->
workspace_manager
;
MetaTabList
type
=
binding
->
handler
->
data
;
MetaWindow
*
window
;
...
...
@@ -3085,7 +3091,7 @@ do_choose_window (MetaDisplay *display,
window
=
meta_display_get_tab_next
(
display
,
type
,
display
->
active_workspace
,
workspace_manager
->
active_workspace
,
NULL
,
backward
);
...
...
@@ -3299,14 +3305,15 @@ handle_move_to_workspace_last (MetaDisplay *display,
MetaKeyBinding
*
binding
,
gpointer
dummy
)
{
MetaWorkspaceManager
*
workspace_manager
=
display
->
workspace_manager
;
gint
which
;
MetaWorkspace
*
workspace
;
if
(
window
->
always_sticky
)
return
;
which
=
meta_
display
_get_n_workspaces
(
display
)
-
1
;
workspace
=
meta_
display
_get_workspace_by_index
(
display
,
which
);
which
=
meta_
workspace_manager
_get_n_workspaces
(
workspace_manager
)
-
1
;
workspace
=
meta_
workspace_manager
_get_workspace_by_index
(
workspace_manager
,
which
);
meta_window_change_workspace
(
window
,
workspace
);
}
...
...
@@ -3318,6 +3325,7 @@ handle_move_to_workspace (MetaDisplay *display,
MetaKeyBinding
*
binding
,
gpointer
dummy
)
{
MetaWorkspaceManager
*
workspace_manager
=
display
->
workspace_manager
;
gint
which
=
binding
->
handler
->
data
;
gboolean
flip
=
(
which
<
0
);
MetaWorkspace
*
workspace
;
...
...
@@ -3336,12 +3344,12 @@ handle_move_to_workspace (MetaDisplay *display,
workspace
=
NULL
;
if
(
flip
)
{
workspace
=
meta_workspace_get_neighbor
(
display
->
active_workspace
,
workspace
=
meta_workspace_get_neighbor
(
workspace_manager
->
active_workspace
,
which
);
}
else
{
workspace
=
meta_
display
_get_workspace_by_index
(
display
,
which
);
workspace
=
meta_
workspace_manager
_get_workspace_by_index
(
workspace_manager
,
which
);
}
if
(
workspace
)
...
...
src/core/meta-workspace-manager-private.h
View file @
81c1c70c
...
...
@@ -48,4 +48,49 @@ struct _MetaWorkspaceManager
MetaWorkspaceManager
*
meta_workspace_manager_new
(
MetaDisplay
*
display
);
void
meta_workspace_manager_init_workspaces
(
MetaWorkspaceManager
*
workspace_manager
);
void
meta_workspace_manager_update_workspace_layout
(
MetaWorkspaceManager
*
workspace_manager
,
MetaDisplayCorner
starting_corner
,
gboolean
vertical_layout
,
int
n_rows
,
int
n_columns
);
void
meta_workspace_manager_reload_work_areas
(
MetaWorkspaceManager
*
workspace_manager
);
typedef
struct
MetaWorkspaceLayout
MetaWorkspaceLayout
;
struct
MetaWorkspaceLayout
{
int
rows
;
int
cols
;
int
*
grid
;
int
grid_area
;
int
current_row
;
int
current_col
;
};
void
meta_workspace_manager_calc_workspace_layout
(
MetaWorkspaceManager
*
workspace_manager
,
int
num_workspaces
,
int
current_space
,
MetaWorkspaceLayout
*
layout
);
void
meta_workspace_manager_free_workspace_layout
(
MetaWorkspaceLayout
*
layout
);
void
meta_workspace_manager_minimize_all_on_active_workspace_except
(
MetaWorkspaceManager
*
workspace_manager
,
MetaWindow
*
keep
);
/* Show/hide the desktop (temporarily hide all windows) */
void
meta_workspace_manager_show_desktop
(
MetaWorkspaceManager
*
workspace_manager
,
guint32
timestamp
);
void
meta_workspace_manager_unshow_desktop
(
MetaWorkspaceManager
*
workspace_manager
);
void
meta_workspace_manager_workspace_switched
(
MetaWorkspaceManager
*
workspace_manager
,
int
from
,
int
to
,
MetaMotionDirection
direction
);
void
meta_workspace_manager_update_num_workspaces
(
MetaWorkspaceManager
*
workspace_manager
,
guint32
timestamp
,
int
new_num
);
#endif
/* META_WORKSPACE_MANAGER_PRIVATE_H */
src/core/meta-workspace-manager.c
View file @
81c1c70c
This diff is collapsed.
Click to expand it.
src/core/stack.c
View file @
81c1c70c
...
...
@@ -27,6 +27,7 @@
#include <config.h>
#include "stack.h"
#include "meta-workspace-manager-private.h"
#include "window-private.h"
#include <meta/meta-x11-errors.h>
#include "frame.h"
...
...
@@ -101,6 +102,8 @@ void
meta_stack_add
(
MetaStack
*
stack
,
MetaWindow
*
window
)
{
MetaWorkspaceManager
*
workspace_manager
=
window
->
display
->
workspace_manager
;
g_return_if_fail
(
meta_window_is_stackable
(
window
));
meta_topic
(
META_DEBUG_STACK
,
"Adding window %s to the stack
\n
"
,
window
->
desc
);
...
...
@@ -117,13 +120,15 @@ meta_stack_add (MetaStack *stack,
window
->
desc
,
window
->
stack_position
);
stack_sync_to_xserver
(
stack
);
meta_stack_update_window_tile_matches
(
stack
,
w
indow
->
display
->
active_workspace
);
meta_stack_update_window_tile_matches
(
stack
,
w
orkspace_manager
->
active_workspace
);
}
void
meta_stack_remove
(
MetaStack
*
stack
,
MetaWindow
*
window
)
{
MetaWorkspaceManager
*
workspace_manager
=
window
->
display
->
workspace_manager
;
meta_topic
(
META_DEBUG_STACK
,
"Removing window %s from the stack
\n
"
,
window
->
desc
);
/* Set window to top position, so removing it will not leave gaps
...
...
@@ -153,27 +158,29 @@ meta_stack_remove (MetaStack *stack,
}
stack_sync_to_xserver
(
stack
);
meta_stack_update_window_tile_matches
(
stack
,
w
indow
->
display
->
active_workspace
);
meta_stack_update_window_tile_matches
(
stack
,
w
orkspace_manager
->
active_workspace
);
}
void
meta_stack_update_layer
(
MetaStack
*
stack
,
MetaWindow
*
window
)
{
MetaWorkspaceManager
*
workspace_manager
=
window
->
display
->
workspace_manager
;
stack
->
need_relayer
=
TRUE
;
stack_sync_to_xserver
(
stack
);
meta_stack_update_window_tile_matches
(
stack
,
w
indow
->
display
->
active_workspace
);
meta_stack_update_window_tile_matches
(
stack
,
w
orkspace_manager
->
active_workspace
);
}
void
meta_stack_update_transient
(
MetaStack
*
stack
,
MetaWindow
*
window
)
{
MetaWorkspaceManager
*
workspace_manager
=
window
->
display
->
workspace_manager
;
stack
->
need_constrain
=
TRUE
;
stack_sync_to_xserver
(
stack
);
meta_stack_update_window_tile_matches
(
stack
,
w
indow
->
display
->
active_workspace
);
meta_stack_update_window_tile_matches
(
stack
,
w
orkspace_manager
->
active_workspace
);
}
/* raise/lower within a layer */
...
...
@@ -181,6 +188,7 @@ void
meta_stack_raise
(
MetaStack
*
stack
,
MetaWindow
*
window
)
{
MetaWorkspaceManager
*
workspace_manager
=
window
->
display
->
workspace_manager
;
GList
*
l
;
int
max_stack_position
=
window
->
stack_position
;
MetaWorkspace
*
workspace
;
...
...
@@ -202,13 +210,14 @@ meta_stack_raise (MetaStack *stack,
meta_window_set_stack_position_no_sync
(
window
,
max_stack_position
);
stack_sync_to_xserver
(
stack
);
meta_stack_update_window_tile_matches
(
stack
,
w
indow
->
display
->
active_workspace
);
meta_stack_update_window_tile_matches
(
stack
,
w
orkspace_manager
->
active_workspace
);
}
void
meta_stack_lower
(
MetaStack
*
stack
,
MetaWindow
*
window
)
{
MetaWorkspaceManager
*
workspace_manager
=
window
->
display
->
workspace_manager
;
GList
*
l
;
int
min_stack_position
=
window
->
stack_position
;
MetaWorkspace
*
workspace
;
...
...
@@ -230,7 +239,7 @@ meta_stack_lower (MetaStack *stack,
meta_window_set_stack_position_no_sync
(
window
,
min_stack_position
);
stack_sync_to_xserver
(
stack
);
meta_stack_update_window_tile_matches
(
stack
,
w
indow
->
display
->
active_workspace
);
meta_stack_update_window_tile_matches
(
stack
,
w
orkspace_manager
->
active_workspace
);
}
void
...
...
@@ -1457,8 +1466,10 @@ void
meta_window_set_stack_position
(
MetaWindow
*
window
,
int
position
)
{
MetaWorkspaceManager
*
workspace_manager
=
window
->
display
->
workspace_manager
;
meta_window_set_stack_position_no_sync
(
window
,
position
);
stack_sync_to_xserver
(
window
->
display
->
stack
);
meta_stack_update_window_tile_matches
(
window
->
display
->
stack
,
w
indow
->
display
->
active_workspace
);
w
orkspace_manager
->
active_workspace
);
}
src/core/window.c
View file @
81c1c70c
...
...
@@ -33,6 +33,7 @@
#include "util-private.h"
#include "frame.h"
#include <meta/meta-x11-errors.h>
#include "meta-workspace-manager-private.h"
#include "workspace-private.h"
#include "stack.h"
#include "keybindings-private.h"
...
...
@@ -687,9 +688,10 @@ is_desktop_or_dock_foreach (MetaWindow *window,
static
void
maybe_leave_show_desktop_mode
(
MetaWindow
*
window
)
{
MetaWorkspaceManager
*
workspace_manager
=
window
->
display
->
workspace_manager
;
gboolean
is_desktop_or_dock
;
if
(
!
w
indow
->
display
->
active_workspace
->
showing_desktop
)
if
(
!
w
orkspace_manager
->
active_workspace
->
showing_desktop
)
return
;
/* If the window is a transient for the dock or desktop, don't
...
...
@@ -706,9 +708,9 @@ maybe_leave_show_desktop_mode (MetaWindow *window)
if
(
!
is_desktop_or_dock
)
{
meta_
display
_minimize_all_on_active_workspace_except
(
w
indow
->
display
,
window
);
meta_
display
_unshow_desktop
(
w
indow
->
display
);
meta_
workspace_manager
_minimize_all_on_active_workspace_except
(
w
orkspace_manager
,
window
);
meta_
workspace_manager
_unshow_desktop
(
w
orkspace_manager
);
}
}
...
...
@@ -929,6 +931,7 @@ _meta_window_shared_new (MetaDisplay *display,
MetaCompEffect
effect
,
XWindowAttributes
*
attrs
)
{
MetaWorkspaceManager
*
workspace_manager
=
display
->
workspace_manager
;
MetaWindow
*
window
;
g_assert
(
attrs
!=
NULL
);
...
...
@@ -1238,8 +1241,8 @@ _meta_window_shared_new (MetaDisplay *display,
"Window %s is initially on space %d
\n
"
,
window
->
desc
,
window
->
initial_workspace
);
workspace
=
meta_
display
_get_workspace_by_index
(
w
indow
->
display
,
window
->
initial_workspace
);
workspace
=
meta_
workspace_manager
_get_workspace_by_index
(
w
orkspace_manager
,
window
->
initial_workspace
);
}
set_workspace_state
(
window
,
on_all_workspaces
,
workspace
);
...
...
@@ -1278,7 +1281,7 @@ _meta_window_shared_new (MetaDisplay *display,
"Putting window %s on active workspace
\n
"
,
window
->
desc
);
set_workspace_state
(
window
,
FALSE
,
w
indow
->
display
->
active_workspace
);
set_workspace_state
(
window
,
FALSE
,
w
orkspace_manager
->
active_workspace
);
}
meta_window_update_struts
(
window
);
...
...
@@ -1378,6 +1381,7 @@ void
meta_window_unmanage
(
MetaWindow
*
window
,
guint32
timestamp
)
{
MetaWorkspaceManager
*
workspace_manager
=
window
->
display
->
workspace_manager
;
GList
*
tmp
;
meta_verbose
(
"Unmanaging %s
\n
"
,
window
->
desc
);
...
...
@@ -1464,7 +1468,7 @@ meta_window_unmanage (MetaWindow *window,
meta_topic
(
META_DEBUG_FOCUS
,
"Focusing default window since we're unmanaging %s
\n
"
,
window
->
desc
);
meta_workspace_focus_default_window
(
w
indow
->
display
->
active_workspace
,
NULL
,
timestamp
);
meta_workspace_focus_default_window
(
w
orkspace_manager
->
active_workspace
,
NULL
,
timestamp
);
}
else
{
...
...
@@ -1510,7 +1514,7 @@ meta_window_unmanage (MetaWindow *window,
g_assert
(
window
->
workspace
==
NULL
);
#ifndef G_DISABLE_CHECKS
tmp
=
w
indow
->
display
->
workspaces
;
tmp
=
w
orkspace_manager
->
workspaces
;
while
(
tmp
!=
NULL
)
{
MetaWorkspace
*
workspace
=
tmp
->
data
;
...
...
@@ -1622,6 +1626,7 @@ ancestor_is_minimized (MetaWindow *window)
gboolean
meta_window_showing_on_its_workspace
(
MetaWindow
*
window
)
{
MetaWorkspaceManager
*
workspace_manager
=
window
->
display
->
workspace_manager
;
gboolean
showing
;
gboolean
is_desktop_or_dock
;
MetaWorkspace
*
workspace_of_window
;
...
...
@@ -1641,7 +1646,7 @@ meta_window_showing_on_its_workspace (MetaWindow *window)
&
is_desktop_or_dock
);
if
(
window
->
on_all_workspaces
)
workspace_of_window
=
w
indow
->
display
->
active_workspace
;
workspace_of_window
=
w
orkspace_manager
->
active_workspace
;
else
if
(
window
->
workspace
)
workspace_of_window
=
window
->
workspace
;
else
/* This only seems to be needed for startup */
...
...
@@ -1673,6 +1678,8 @@ meta_window_showing_on_its_workspace (MetaWindow *window)
gboolean
meta_window_should_be_showing
(
MetaWindow
*
window
)
{
MetaWorkspaceManager
*
workspace_manager
=
window
->
display
->
workspace_manager
;
#ifdef HAVE_WAYLAND
if
(
window
->
client_type
==
META_WINDOW_CLIENT_TYPE_WAYLAND
&&
!
meta_wayland_surface_get_buffer
(
window
->
surface
))
...
...
@@ -1681,7 +1688,7 @@ meta_window_should_be_showing (MetaWindow *window)
/* Windows should be showing if they're located on the
* active workspace and they're showing on their own workspace. */
return
(
meta_window_located_on_workspace
(
window
,
w
indow
->
display
->
active_workspace
)
&&
return
(
meta_window_located_on_workspace
(
window
,
w
orkspace_manager
->
active_workspace
)
&&
meta_window_showing_on_its_workspace
(
window
));
}
...
...
@@ -2551,6 +2558,7 @@ meta_window_show (MetaWindow *window)
static
void
meta_window_hide
(
MetaWindow
*
window
)
{
MetaWorkspaceManager
*
workspace_manager
=
window
->
display
->
workspace_manager
;
gboolean
did_hide
;
meta_topic
(
META_DEBUG_WINDOW_STATE
,
...
...
@@ -2621,11 +2629,11 @@ meta_window_hide (MetaWindow *window)
* We also pass in NULL if we are in the process of hiding all non-desktop
* windows to avoid unexpected changes to the stacking order.
*/
if
(
my_workspace
==
w
indow
->
display
->
active_workspace
&&
if
(
my_workspace
==
w
orkspace_manager
->
active_workspace
&&
!
my_workspace
->
showing_desktop
)
not_this_one
=
window
;
meta_workspace_focus_default_window
(
w
indow
->
display
->
active_workspace
,
meta_workspace_focus_default_window
(
w
orkspace_manager
->
active_workspace
,
not_this_one
,
timestamp
);
}
...
...
@@ -3602,6 +3610,7 @@ meta_window_activate_full (MetaWindow *window,
MetaClientType
source_indication
,
MetaWorkspace
*
workspace
)
{
MetaWorkspaceManager
*
workspace_manager
=
window
->
display
->
workspace_manager
;
gboolean
allow_workspace_switch
;
meta_topic
(