Skip to content

Conversation

@dmedvinsky
Copy link
Owner

Got this patch in email from Kent Friis.

Unfortunately it currently raises a bunch of warnings that gdk_screen_width and gdk_screen_height are deprecated when compiling against gtk3.

So far we got

apparently you are supposed to use gdk_monitor_get_workarea(), which doesn't even exist in the gtk 3.18 on Slackware, so it's not even a case of if(gtk2), it's before gtk 3.22 and after gtk 3.22

I've been putting this off for a while because I've got no time for this, unfortunately. Opening a pull request for this to not get lost forever.

If anyone has any input, please comment.

@dmedvinsky dmedvinsky changed the title Add mainwindow_postion = topleft etc Add mainwindow_position = topleft etc Apr 29, 2021
@lleroy
Copy link

lleroy commented May 16, 2025

fix deprecation

diff --git a/src/MainWindow.cpp b/src/MainWindow.cpp
index 064bd3d..bfbbecb 100644
--- a/src/MainWindow.cpp
+++ b/src/MainWindow.cpp
@@ -138,22 +138,37 @@ MainWindow::MainWindow()
 
     if (config->mainwindow_gravity) {
         gtk_window_get_size(GTK_WINDOW(widget), &xpos, &ypos);
+       int screen_width = 0;
+       int screen_height = 0;
+#if (GTK_MAJOR_VERSION < 3) or (GTK_MAJOR_VERION == 3 and GTK_MINOR_VERSION < 22)
+       screen_width = gdk_screen_width();
+       screen_height = gdk_screen_height();
+#else
+       GdkRectangle    work_area;
+       gdk_monitor_get_workarea(gdk_display_get_primary_monitor(gdk_display_get_default()),
+                                &work_area);
+       screen_width = work_area.width;
+       screen_height = work_area.height;
+#endif
+       GdkRectangle workarea = {0};
+       gdk_monitor_get_workarea(gdk_display_get_primary_monitor(gdk_display_get_default()), &workarea);
+
         switch(config->mainwindow_gravity) {
             case GDK_GRAVITY_NORTH_WEST:
                 xpos = config->mainwindow_xoffset;
                 ypos = config->mainwindow_yoffset;
                 break;
             case GDK_GRAVITY_NORTH_EAST:
-                xpos = gdk_screen_width() - xpos - config->mainwindow_xoffset;
+                xpos = screen_width - xpos - config->mainwindow_xoffset;
                 ypos = config->mainwindow_yoffset;
                 break;
             case GDK_GRAVITY_SOUTH_WEST:
                 xpos = config->mainwindow_xoffset;
-                ypos = gdk_screen_height() - ypos - config->mainwindow_yoffset;
+                ypos = screen_height - ypos - config->mainwindow_yoffset;
                 break;
             case GDK_GRAVITY_SOUTH_EAST:
-                xpos = gdk_screen_width() - xpos - config->mainwindow_xoffset;
-                ypos = gdk_screen_height() - ypos - config->mainwindow_yoffset;
+                xpos = screen_width - xpos - config->mainwindow_xoffset;
+                ypos = screen_height - ypos - config->mainwindow_yoffset;
                 break;
         }
         gtk_window_set_gravity(GTK_WINDOW(widget), config->mainwindow_gravity);

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants