diff --git a/src/phosh.c b/src/phosh.c index 7ad7678f059e8cf46873799a4f879bbee02f5af9..dda382f003dbaa7def2695ca5eb0b58f4423a486 100644 --- a/src/phosh.c +++ b/src/phosh.c @@ -406,7 +406,7 @@ lockscreen_create (PhoshShell *self) struct elem *lockscreen; PhoshMonitor *monitor; - monitor = phosh_monitor_manager_get_monitor (priv->monitor_manager, 0); + monitor = phosh_shell_get_primary_monitor (); g_return_if_fail (monitor); lockscreen = g_malloc0 (sizeof *lockscreen); @@ -528,6 +528,22 @@ lockscreen_prepare (PhoshShell *self) } +PhoshMonitor * +get_primary_monitor (PhoshShell *self) +{ + PhoshShellPrivate *priv; + PhoshMonitor *monitor; + + g_return_val_if_fail (PHOSH_IS_SHELL (self), NULL); + priv = phosh_shell_get_instance_private (self); + + monitor = phosh_monitor_manager_get_monitor (priv->monitor_manager, 0); + g_return_val_if_fail (monitor, NULL); + + return monitor; +} + + static void panel_create (PhoshShell *self) { @@ -537,7 +553,7 @@ panel_create (PhoshShell *self) gint width; PhoshMonitor *monitor; - monitor = phosh_monitor_manager_get_monitor (priv->monitor_manager, 0); + monitor = get_primary_monitor (self); g_return_if_fail (monitor); panel = calloc (1, sizeof *panel); @@ -587,7 +603,7 @@ background_create (PhoshShell *self) PhoshMonitor *monitor; gint width, height; - monitor = phosh_monitor_manager_get_monitor (priv->monitor_manager, 0); + monitor = phosh_shell_get_primary_monitor (); g_return_if_fail (monitor); phosh_shell_get_usable_area (self, NULL, NULL, &width, &height); @@ -871,13 +887,8 @@ phosh_shell_get_wl_layer_shell () PhoshMonitor * phosh_shell_get_primary_monitor () { - PhoshShellPrivate *priv = phosh_shell_get_instance_private (_phosh); - PhoshMonitor *monitor; - - monitor = phosh_monitor_manager_get_monitor (priv->monitor_manager, 0); - g_return_val_if_fail (monitor, NULL); - - return monitor; + g_return_val_if_fail (PHOSH_IS_SHELL (_phosh), NULL); + return get_primary_monitor (_phosh); } @@ -888,34 +899,15 @@ phosh_shell_get_primary_monitor () void phosh_shell_get_usable_area (PhoshShell *self, gint *x, gint *y, gint *width, gint *height) { - PhoshShellPrivate *priv = phosh_shell_get_instance_private (self); - GdkDisplay *display = gdk_display_get_default (); - GdkMonitor *monitor = NULL; - GdkWindow *gdk_window; - GdkRectangle geom; + PhoshMonitor *monitor = NULL; gint panel_height = 0; gint w, h; - if (priv->panel && priv->panel->window) { - panel_height = phosh_panel_get_height (PHOSH_PANEL (priv->panel->window)); - gdk_window = gtk_widget_get_window (priv->panel->window); - monitor = gdk_display_get_monitor_at_window (display, gdk_window); - } else { - monitor = gdk_display_get_monitor (display, 0); - } - + monitor = get_primary_monitor (self); g_return_if_fail(monitor); - gdk_monitor_get_geometry (monitor, &geom); - - /* GDK fails to take rotation into account - * https://bugzilla.gnome.org/show_bug.cgi?id=793618 */ - if (priv->rotation != 90 && priv->rotation != 270) { - w = geom.width; - h = geom.height - panel_height; - } else { - w = geom.height; - h = geom.width - panel_height; - } + + w = monitor->width; + h = monitor->height - panel_height; if (x) *x = 0;