@@ -12,8 +12,8 @@ public class Gala.DaemonManager : GLib.Object {
1212
1313 [DBus (name = "org .pantheon .gala .daemon ")]
1414 public interface Daemon: GLib.Object {
15- public abstract async void show_window_menu (WindowFlags flags, int width , int height , int x, int y) throws Error ;
16- public abstract async void show_desktop_menu (int display_width , int display_height , int x, int y) throws Error ;
15+ public abstract async void show_window_menu (WindowFlags flags, int monitor , int monitor_width, int monitor_height , int x, int y) throws Error ;
16+ public abstract async void show_desktop_menu (int monitor , int monitor_width , int monitor_height, int x, int y) throws GLib . Error ;
1717 }
1818
1919 public Meta . Display display { get ; construct; }
@@ -77,22 +77,22 @@ public class Gala.DaemonManager : GLib.Object {
7777 }
7878
7979 private void handle_daemon_window (Meta .Window window ) {
80+ if (window. title == null ) {
81+ return ;
82+ }
83+
8084 var info = window. title. split (" -" );
8185
82- if (info. length == 0 ) {
83- critical (" Couldn't handle daemon window: No title provided" );
86+ if (info. length < 2 ) {
87+ critical (" Couldn't handle daemon window: Incorrect window title provided" );
8488 return ;
8589 }
8690
91+ var index = int . parse (info[1 ]);
92+ var monitor_geometry = display. get_monitor_geometry (index);
93+
8794 switch (info[0 ]) {
8895 case " LABEL" :
89- if (info. length < 2 ) {
90- return ;
91- }
92-
93- var index = int . parse (info[1 ]);
94-
95- var monitor_geometry = display. get_monitor_geometry (index);
9696 window. move_frame (false , monitor_geometry. x + SPACING , monitor_geometry. y + SPACING );
9797 window. make_above ();
9898 break ;
@@ -101,7 +101,7 @@ public class Gala.DaemonManager : GLib.Object {
101101#if HAS_MUTTER46
102102 daemon_client. make_dock (window);
103103#endif
104- window. move_frame (false , 0 , 0 );
104+ window. move_resize_frame (false , monitor_geometry . x, monitor_geometry . y, monitor_geometry . width, monitor_geometry . height );
105105 window. make_above ();
106106 break ;
107107 }
@@ -123,31 +123,21 @@ public class Gala.DaemonManager : GLib.Object {
123123 }
124124 }
125125
126- public async void show_background_menu (int x , int y ) {
127- if (daemon_proxy == null ) {
128- return ;
129- }
130-
131- int width, height;
132- display. get_size (out width, out height);
126+ public async void show_background_menu (int monitor , int x , int y ) requires (daemon_proxy != null ) {
127+ var monitor_geometry = display. get_monitor_geometry (monitor);
133128
134129 try {
135- yield daemon_proxy. show_desktop_menu (width, height, x, y);
130+ yield daemon_proxy. show_desktop_menu (monitor, monitor_geometry . width, monitor_geometry . height, x, y);
136131 } catch (Error e) {
137132 warning (" Error invoking MenuManager: %s " , e. message);
138133 }
139134 }
140135
141- public async void show_window_menu (WindowFlags flags , int x , int y ) {
142- if (daemon_proxy == null ) {
143- return ;
144- }
145-
146- int width, height;
147- display. get_size (out width, out height);
136+ public async void show_window_menu (WindowFlags flags , int monitor , int x , int y ) requires (daemon_proxy != null ) {
137+ var monitor_geometry = display. get_monitor_geometry (monitor);
148138
149139 try {
150- yield daemon_proxy. show_window_menu (flags, width, height, x, y);
140+ yield daemon_proxy. show_window_menu (flags, monitor, monitor_geometry . width, monitor_geometry . height, x, y);
151141 } catch (Error e) {
152142 warning (" Error invoking MenuManager: %s " , e. message);
153143 }
0 commit comments