[gssdp/wip/modern-gtk: 4/6] wip: Add window sizing code




commit 37a88c90f4d1c36283a6f33610157a3b8a471253
Author: Jens Georg <mail jensge org>
Date:   Tue Oct 6 23:18:39 2020 +0200

    wip: Add window sizing code

 tools/main-window.c | 37 +++++++++++++++++++++++++++++++++++++
 1 file changed, 37 insertions(+)
---
diff --git a/tools/main-window.c b/tools/main-window.c
index 51cd485..3340f67 100644
--- a/tools/main-window.c
+++ b/tools/main-window.c
@@ -2,6 +2,8 @@
 
 #include "main-window.h"
 
+#include <glib.h>
+
 struct _GSSDPDeviceSnifferMainWindow {
         GtkApplicationWindow parent_instance;
 };
@@ -21,8 +23,43 @@ gssdp_device_sniffer_main_window_class_init (
                 "/org/gupnp/GSSDP/MainWindow.ui");
 }
 
+static void
+on_realize (GtkWidget *self, gpointer user_data)
+{
+        double w;
+        double h;
+#if GTK_CHECK_VERSION(3, 22, 0)
+        {
+                GdkWindow *window = gtk_widget_get_window (self);
+                GdkDisplay *display = gdk_display_get_default ();
+                GdkMonitor *monitor =
+                        gdk_display_get_monitor_at_window (display, window);
+                GdkRectangle rectangle;
+
+                gdk_monitor_get_geometry (monitor, &rectangle);
+                w = rectangle.width * 0.75;
+                h = rectangle.height * 0.75;
+        }
+
+#else
+        w = gdk_screen_width () * 0.75;
+        h = gdk_screen_height () * 0.75;
+#endif
+
+        int window_width = CLAMP ((int) w, 10, 1000);
+        int window_height = CLAMP ((int) h, 10, 800);
+        gtk_window_set_default_size (GTK_WINDOW (self),
+                                     window_width,
+                                     window_height);
+}
+
 static void
 gssdp_device_sniffer_main_window_init (GSSDPDeviceSnifferMainWindow *self)
 {
         gtk_widget_init_template (GTK_WIDGET (self));
+
+        g_signal_connect (G_OBJECT (self),
+                          "realize",
+                          G_CALLBACK (on_realize),
+                          NULL);
 }


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]