[Xfce4-commits] [xfce/xfce4-panel] 04/08: panel-window: There is only one GdkScreen per GdkDisplay, remove extras

noreply at xfce.org noreply at xfce.org
Fri May 4 00:47:34 CEST 2018


This is an automated email from the git hooks/post-receive script.

o   c   h   o   s   i       p   u   s   h   e   d       a       c   o   m   m   i   t       t   o       b   r   a   n   c   h       m   a   s   t   e   r   
   in repository xfce/xfce4-panel.

commit 719a0cca1a25acd54c02abbb08f093f0787d5bc9
Author: Jason Zaman <jason at perfinion.com>
Date:   Tue Apr 24 01:12:03 2018 +0800

    panel-window: There is only one GdkScreen per GdkDisplay, remove extras
---
 panel/panel-window.c | 133 +++++++++++++++------------------------------------
 1 file changed, 38 insertions(+), 95 deletions(-)

diff --git a/panel/panel-window.c b/panel/panel-window.c
index 84f1043..a7a4644 100644
--- a/panel/panel-window.c
+++ b/panel/panel-window.c
@@ -138,8 +138,7 @@ static void         panel_window_size_allocate_set_xy                 (PanelWind
                                                                        gint             *return_y);
 static void         panel_window_screen_changed                       (GtkWidget        *widget,
                                                                        GdkScreen        *previous_screen);
-static void         panel_window_style_updated                        (GtkWidget        *widget,
-                                                                       gpointer          user_data);
+static void         panel_window_style_updated                        (GtkWidget        *widget);
 static void         panel_window_realize                              (GtkWidget        *widget);
 static StrutsEgde   panel_window_screen_struts_edge                   (PanelWindow      *window);
 static void         panel_window_screen_struts_set                    (PanelWindow      *window);
@@ -1547,14 +1546,6 @@ panel_window_screen_changed (GtkWidget *widget,
   g_signal_connect (G_OBJECT (window->screen), "size-changed",
       G_CALLBACK (panel_window_screen_layout_changed), window);
 
-  /* set new output name */
-  if (gdk_display_get_n_screens (gdk_screen_get_display (screen)) > 1)
-     {
-       g_free (window->output_name);
-       window->output_name = g_strdup_printf ("screen-%d", gdk_screen_get_number (screen));
-       g_object_notify (G_OBJECT (window), "output-name");
-     }
-
   /* update the screen layout */
   panel_window_screen_layout_changed (screen, window);
 
@@ -1567,8 +1558,7 @@ panel_window_screen_changed (GtkWidget *widget,
 
 
 static void
-panel_window_style_updated (GtkWidget *widget,
-                            gpointer   user_data)
+panel_window_style_updated (GtkWidget *widget)
 {
   PanelWindow *window = PANEL_WINDOW (widget);
   PanelBaseWindow *base_window = PANEL_BASE_WINDOW (window);
@@ -1905,11 +1895,13 @@ panel_window_display_layout_debug (GtkWidget *widget)
 {
   GdkDisplay   *display;
   GdkScreen    *screen;
-  gint          n, n_screens;
+  GdkMonitor   *monitor;
   gint          m, n_monitors;
+  gint          w, h;
   GdkRectangle  rect;
   GString      *str;
-  gchar        *name;
+  const gchar  *name;
+  gboolean      composite = FALSE;
 
   panel_return_if_fail (GTK_IS_WIDGET (widget));
   panel_return_if_fail (panel_debug_has_domain (PANEL_DEBUG_YES));
@@ -1917,50 +1909,51 @@ panel_window_display_layout_debug (GtkWidget *widget)
   str = g_string_new (NULL);
 
   display = gtk_widget_get_display (widget);
+  screen = gtk_widget_get_screen(widget);
 
-  n_screens = gdk_display_get_n_screens (display);
-  for (n = 0; n < n_screens; n++)
-    {
-      screen = gdk_display_get_screen (display, n);
-      g_string_append_printf (str, "screen-%d[%p]=[%d,%d]", n, screen,
-          gdk_screen_get_width (screen), gdk_screen_get_height (screen));
-
-      if (panel_debug_has_domain (PANEL_DEBUG_DISPLAY_LAYOUT))
-        {
-          g_string_append_printf (str, "{comp=%s, sys=%p, rgba=%p}",
-              PANEL_DEBUG_BOOL (gdk_screen_is_composited (screen)),
-              gdk_screen_get_system_visual (screen),
-              gdk_screen_get_rgba_visual (screen));
-        }
+G_GNUC_BEGIN_IGNORE_DEPRECATIONS
+  w = gdk_screen_get_width (screen);
+  h = gdk_screen_get_height (screen);
+G_GNUC_END_IGNORE_DEPRECATIONS
 
-      str = g_string_append (str, " (");
+  g_string_append_printf (str, "screen-0[%p]=[%d,%d]", screen, w, h);
 
-      n_monitors = gdk_screen_get_n_monitors (screen);
-      for (m = 0; m < n_monitors; m++)
-        {
-          name = gdk_screen_get_monitor_plug_name (screen, m);
-          if (name == NULL)
-            name = g_strdup_printf ("monitor-%d", m);
+  if (panel_debug_has_domain (PANEL_DEBUG_DISPLAY_LAYOUT))
+    {
+      g_string_append_printf (str, "{comp=%s, sys=%p, rgba=%p}",
+          PANEL_DEBUG_BOOL (gdk_screen_is_composited (screen)),
+          gdk_screen_get_system_visual (screen),
+          gdk_screen_get_rgba_visual (screen));
+    }
 
-          gdk_screen_get_monitor_geometry (screen, m, &rect);
-          g_string_append_printf (str, "%s=[%d,%d;%d,%d]", name,
-              rect.x, rect.y, rect.width, rect.height);
+  str = g_string_append (str, " (");
 
-          g_free (name);
+  n_monitors = gdk_display_get_n_monitors (display);
+  for (m = 0; m < n_monitors; m++)
+    {
+      monitor = gdk_display_get_monitor (display, m);
+      name = gdk_monitor_get_model (monitor);
+      if (name == NULL)
+        name = g_strdup_printf ("monitor-%d", m);
 
-          if (m < n_monitors - 1)
-            g_string_append (str, ", ");
-        }
+      gdk_monitor_get_geometry (monitor, &rect);
+      g_string_append_printf (str, "%s=[%d,%d;%d,%d]", name,
+          rect.x, rect.y, rect.width, rect.height);
 
-      g_string_append (str, ")");
-      if (n < n_screens - 1)
+      if (m < n_monitors - 1)
         g_string_append (str, ", ");
     }
 
+  g_string_append (str, ")");
+
+G_GNUC_BEGIN_IGNORE_DEPRECATIONS
+  composite = gdk_display_supports_composite (display);
+G_GNUC_END_IGNORE_DEPRECATIONS
+
   panel_debug (PANEL_DEBUG_DISPLAY_LAYOUT,
                "%p: display=%s{comp=%s}, %s", widget,
                gdk_display_get_name (display),
-               PANEL_DEBUG_BOOL (gdk_display_supports_composite (display)),
+               PANEL_DEBUG_BOOL (composite),
                str->str);
 
   g_string_free (str, TRUE);
@@ -1980,9 +1973,6 @@ panel_window_screen_layout_changed (GdkScreen   *screen,
   GdkMonitor   *monitor, *other_monitor;
   StrutsEgde    struts_edge;
   gboolean      force_struts_update = FALSE;
-  gint          screen_num;
-  GdkDisplay   *display;
-  GdkScreen    *new_screen;
 
   panel_return_if_fail (PANEL_IS_WINDOW (window));
   panel_return_if_fail (GDK_IS_SCREEN (screen));
@@ -2017,8 +2007,6 @@ panel_window_screen_layout_changed (GdkScreen   *screen,
   if (window->output_name == NULL
       && (window->span_monitors || n_monitors == 1))
     {
-      get_screen_geometry:
-
       /* get the screen geometry we also use this if there is only
        * one monitor and no output is choosen, as a fast-path */
       monitor = gdk_display_get_monitor(window->display, 0);
@@ -2042,45 +2030,6 @@ panel_window_screen_layout_changed (GdkScreen   *screen,
 
       panel_return_if_fail (a.width > 0 && a.height > 0);
     }
-  else if (window->output_name != NULL
-           && strncmp (window->output_name, "screen-", 7) == 0
-           && sscanf (window->output_name, "screen-%d", &screen_num) == 1)
-    {
-      /* check if the panel is on the correct screen */
-      if (gdk_screen_get_number (screen) != screen_num)
-        {
-          display = gdk_screen_get_display (screen);
-          if (gdk_display_get_n_screens (display) - 1 < screen_num)
-            {
-              panel_debug (PANEL_DEBUG_POSITIONING,
-                           "%p: screen-%d not found, hiding panel",
-                           window, screen_num);
-
-              /* out of range, hide the window */
-              if (gtk_widget_get_visible (GTK_WIDGET (window)))
-                gtk_widget_hide (GTK_WIDGET (window));
-              return;
-            }
-          else
-            {
-              new_screen = gdk_display_get_screen (display, screen_num);
-              panel_debug (PANEL_DEBUG_POSITIONING,
-                           "%p: moving window to screen %d[%p] to %d[%p]",
-                           window, gdk_screen_get_number (screen), screen,
-                           screen_num, new_screen);
-
-              /* move window to the correct screen */
-              gtk_window_set_screen (GTK_WINDOW (window), new_screen);
-
-              /* we will invoke this function again when the screen
-               * changes, so bail out */
-              return;
-            }
-        }
-
-      /* screen is correct, get geometry and continue */
-      goto get_screen_geometry;
-    }
   else
     {
       if (g_strcmp0 (window->output_name, "Automatic") == 0
@@ -2166,12 +2115,6 @@ panel_window_screen_layout_changed (GdkScreen   *screen,
                 gtk_widget_hide (GTK_WIDGET (window));
               return;
             }
-          else
-            {
-              /* get the monitor geometry */
-              gdk_screen_get_monitor_geometry (screen, monitor_num, &a);
-              panel_return_if_fail (a.width > 0 && a.height > 0);
-            }
         }
 
       /* check if another monitor is preventing the active monitor

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.


More information about the Xfce4-commits mailing list