diff options
author | Jens Georg <mail@jensge.org> | 2020-10-06 23:18:39 +0200 |
---|---|---|
committer | Jens Georg <mail@jensge.org> | 2020-10-06 23:18:39 +0200 |
commit | 37a88c90f4d1c36283a6f33610157a3b8a471253 (patch) | |
tree | 1a82b185048743707984f0649e5ac4119e48ab8f | |
parent | df569c3725f021b119ed1a454aedb2a9dfbec3d6 (diff) | |
download | gssdp-37a88c90f4d1c36283a6f33610157a3b8a471253.tar.gz |
wip: Add window sizing code
-rw-r--r-- | tools/main-window.c | 37 |
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); } |