summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJens Georg <mail@jensge.org>2020-10-06 23:18:39 +0200
committerJens Georg <mail@jensge.org>2020-10-06 23:18:39 +0200
commit37a88c90f4d1c36283a6f33610157a3b8a471253 (patch)
tree1a82b185048743707984f0649e5ac4119e48ab8f
parentdf569c3725f021b119ed1a454aedb2a9dfbec3d6 (diff)
downloadgssdp-37a88c90f4d1c36283a6f33610157a3b8a471253.tar.gz
wip: Add window sizing code
-rw-r--r--tools/main-window.c37
1 files changed, 37 insertions, 0 deletions
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;
};
@@ -22,7 +24,42 @@ gssdp_device_sniffer_main_window_class_init (
}
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);
}