Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
94 changes: 46 additions & 48 deletions src/WindowManager.vala
Original file line number Diff line number Diff line change
Expand Up @@ -909,70 +909,68 @@ namespace Gala {
}

public override void show_window_menu (Meta.Window window, Meta.WindowMenuType menu, int x, int y) {
switch (menu) {
case Meta.WindowMenuType.WM:
if (NotificationStack.is_notification (window)) {
return;
}
if (menu != WM) {
warning ("Unsupported window menu type");
return;
}

if (!Utils.get_window_is_normal (window) || NotificationStack.is_notification (window)) {
return;
}

WindowFlags flags = WindowFlags.NONE;
if (window.can_minimize ())
flags |= WindowFlags.CAN_HIDE;
WindowFlags flags = WindowFlags.NONE;
if (window.can_minimize ())
flags |= WindowFlags.CAN_HIDE;

if (window.can_maximize ())
flags |= WindowFlags.CAN_MAXIMIZE;
if (window.can_maximize ())
flags |= WindowFlags.CAN_MAXIMIZE;

#if HAS_MUTTER49
if (window.is_maximized ())
flags |= WindowFlags.IS_MAXIMIZED;
if (window.is_maximized ())
flags |= WindowFlags.IS_MAXIMIZED;

if (window.maximized_vertically && !window.maximized_horizontally)
flags |= WindowFlags.IS_TILED;
if (window.maximized_vertically && !window.maximized_horizontally)
flags |= WindowFlags.IS_TILED;
#else
var maximize_flags = window.get_maximized ();
if (maximize_flags > 0) {
flags |= WindowFlags.IS_MAXIMIZED;
var maximize_flags = window.get_maximized ();
if (maximize_flags > 0) {
flags |= WindowFlags.IS_MAXIMIZED;

if (Meta.MaximizeFlags.VERTICAL in maximize_flags && !(Meta.MaximizeFlags.HORIZONTAL in maximize_flags)) {
flags |= WindowFlags.IS_TILED;
}
}
if (Meta.MaximizeFlags.VERTICAL in maximize_flags && !(Meta.MaximizeFlags.HORIZONTAL in maximize_flags)) {
flags |= WindowFlags.IS_TILED;
}
}
#endif

if (window.allows_move ())
flags |= WindowFlags.ALLOWS_MOVE;

if (window.allows_resize ())
flags |= WindowFlags.ALLOWS_RESIZE;
if (window.allows_move ())
flags |= WindowFlags.ALLOWS_MOVE;

if (window.is_above ())
flags |= WindowFlags.ALWAYS_ON_TOP;
if (window.allows_resize ())
flags |= WindowFlags.ALLOWS_RESIZE;

if (window.on_all_workspaces)
flags |= WindowFlags.ON_ALL_WORKSPACES;
if (window.is_above ())
flags |= WindowFlags.ALWAYS_ON_TOP;

if (window.can_close ())
flags |= WindowFlags.CAN_CLOSE;
if (window.on_all_workspaces)
flags |= WindowFlags.ON_ALL_WORKSPACES;

unowned var workspace = window.get_workspace ();
if (workspace != null) {
unowned var manager = window.display.get_workspace_manager ();
var workspace_index = workspace.workspace_index;
if (workspace_index != 0) {
flags |= WindowFlags.ALLOWS_MOVE_LEFT;
}
if (window.can_close ())
flags |= WindowFlags.CAN_CLOSE;

if (workspace_index != manager.n_workspaces - 2 || Utils.get_n_windows (workspace) != 1) {
flags |= WindowFlags.ALLOWS_MOVE_RIGHT;
}
}
unowned var workspace = window.get_workspace ();
if (workspace != null) {
unowned var manager = window.display.get_workspace_manager ();
var workspace_index = workspace.workspace_index;
if (workspace_index != 0) {
flags |= WindowFlags.ALLOWS_MOVE_LEFT;
}

daemon_manager.show_window_menu.begin (flags, x, y);
break;
case Meta.WindowMenuType.APP:
// FIXME we don't have any sort of app menus
break;
if (workspace_index != manager.n_workspaces - 2 || Utils.get_n_windows (workspace) != 1) {
flags |= WindowFlags.ALLOWS_MOVE_RIGHT;
}
}

daemon_manager.show_window_menu.begin (flags, x, y);
}

public override void show_tile_preview (Meta.Window window, Mtk.Rectangle tile_rect, int tile_monitor_number) {
Expand Down