talons

Fork of Claws Mail https://www.claws-mail
Log | Files | Refs | README | LICENSE

commit ab51e67f2be9488b9ff35079441dc7245b43934a
parent 3179afb53dee2f0a37f08cc8d975e2ee0ca2aeb0
Author: Ricardo Mones <ricardo@mones.org>
Date:   Wed, 11 Jun 2025 18:27:07 +0200

Replace deprecated gdk_screen functions

Also renames 'class' parameter name which is a reserved word in C++

Removes four warnings:
container_linux.cpp:1039:51: warning: 'gint gdk_screen_width()' is deprecated
container_linux.cpp:1040:52: warning: 'gint gdk_screen_height()' is deprecated
notification_banner.c:148:25: warning: 'gdk_screen_width' is deprecated
notification_banner.c:199:17: warning: 'gdk_screen_width' is deprecated

Diffstat:
Msrc/gtk/gtkutils.c | 35++++++++++++++++++++++++++++++++---
Msrc/gtk/gtkutils.h | 7++++++-
Msrc/mainwindow.c | 6++++++
Msrc/plugins/litehtml_viewer/container_linux.cpp | 5+++--
Msrc/plugins/notification/notification_banner.c | 4++--
5 files changed, 49 insertions(+), 8 deletions(-)

diff --git a/src/gtk/gtkutils.c b/src/gtk/gtkutils.c @@ -58,6 +58,8 @@ #include "manage_window.h" #include "manual.h" +static GdkRectangle _screen_area = { 0 }; + gboolean gtkut_get_font_size(GtkWidget *widget, gint *width, gint *height) { @@ -1417,11 +1419,11 @@ gboolean gtkut_tree_model_get_iter_last(GtkTreeModel *model, } GtkWidget *gtkut_window_new (GtkWindowType type, - const gchar *class) + const gchar *cls) { GtkWidget *window = gtk_window_new(type); - gtk_window_set_role(GTK_WINDOW(window), class); - gtk_widget_set_name(GTK_WIDGET(window), class); + gtk_window_set_role(GTK_WINDOW(window), cls); + gtk_widget_set_name(GTK_WIDGET(window), cls); return window; } @@ -2035,3 +2037,30 @@ gchar *gtkut_gdk_rgba_to_string(GdkRGBA *rgba) return str; } #undef RGBA_ELEMENT_TO_BYTE + +static void get_screen_rectangle() +{ + if (_screen_area.width == 0 && _screen_area.height == 0) { + gdk_monitor_get_workarea( + gdk_display_get_primary_monitor(gdk_display_get_default()), + &_screen_area); + debug_print("saved screen area: %u x %u\n", _screen_area.width, _screen_area.height); + } +} + +gint gtkut_gdk_screen_width() +{ + return _screen_area.width; +} + +gint gtkut_gdk_screen_height() +{ + return _screen_area.height; +} + +void gtkut_gdk_screen_size_changed (GdkScreen* self, gpointer data) +{ + _screen_area.width = 0; + _screen_area.height = 0; + get_screen_rectangle(); +} diff --git a/src/gtk/gtkutils.h b/src/gtk/gtkutils.h @@ -147,7 +147,7 @@ void label_window_destroy(GtkWidget *widget); void gtkut_window_popup (GtkWidget *window); GtkWidget *gtkut_window_new (GtkWindowType type, - const gchar *class); + const gchar *cls); void gtkut_widget_get_uposition (GtkWidget *widget, @@ -267,4 +267,9 @@ gpointer gtkut_tree_view_get_selected_pointer(GtkTreeView *view, gint column, GtkTreeModel **_model, GtkTreeSelection **_selection, GtkTreeIter *_iter); +gint gtkut_gdk_screen_width(); +gint gtkut_gdk_screen_height(); +void gtkut_gdk_screen_size_changed (GdkScreen* self, gpointer data); + + #endif /* __GTKUTILS_H__ */ diff --git a/src/mainwindow.c b/src/mainwindow.c @@ -1433,6 +1433,7 @@ MainWindow *main_window_create() SummaryView *summaryview; MessageView *messageview; GtkWidget *ac_menu; + GdkScreen *screen; static GdkGeometry geometry; @@ -1462,6 +1463,11 @@ MainWindow *main_window_create() g_signal_connect(G_OBJECT(window), "key_press_event", G_CALLBACK(mainwindow_key_pressed), mainwin); + screen = gdk_screen_get_default(); + g_signal_connect(G_OBJECT(screen), "size_changed", + G_CALLBACK(gtkut_gdk_screen_size_changed), NULL); + g_signal_emit_by_name(G_OBJECT(screen), "size_changed", NULL); + gtk_widget_realize(window); gtk_widget_add_events(window, GDK_KEY_PRESS_MASK|GDK_KEY_RELEASE_MASK); diff --git a/src/plugins/litehtml_viewer/container_linux.cpp b/src/plugins/litehtml_viewer/container_linux.cpp @@ -26,6 +26,7 @@ #include <cmath> #include "lh_prefs.h" #include "utils.h" +#include "gtk/gtkutils.h" #ifndef M_PI # define M_PI 3.14159265358979323846 @@ -1036,8 +1037,8 @@ void container_linux::get_media_features(litehtml::media_features& media) const media.type = litehtml::media_type_screen; media.width = client.width; media.height = client.height; - media.device_width = gdk_screen_width(); - media.device_height = gdk_screen_height(); + media.device_width = gtkut_gdk_screen_width(); + media.device_height = gtkut_gdk_screen_height(); media.color = 8; media.monochrome = 0; media.color_index = 256; diff --git a/src/plugins/notification/notification_banner.c b/src/plugins/notification/notification_banner.c @@ -145,7 +145,7 @@ static void notification_banner_create(GSList *msg_list) if(notify_config.banner_width > 0) gtk_widget_set_size_request(banner.window, notify_config.banner_width, -1); else - gtk_widget_set_size_request(banner.window, gdk_screen_width(), -1); + gtk_widget_set_size_request(banner.window, gtkut_gdk_screen_width(), -1); gtk_window_set_keep_above(GTK_WINDOW(banner.window), TRUE); gtk_window_set_accept_focus(GTK_WINDOW(banner.window), FALSE); gtk_window_set_skip_taskbar_hint(GTK_WINDOW(banner.window), TRUE); @@ -196,7 +196,7 @@ static void notification_banner_create(GSList *msg_list) if (notify_config.banner_width > 0) banner_width = notify_config.banner_width; else - banner_width = gdk_screen_width(); + banner_width = gtkut_gdk_screen_width(); if(requisition.width > banner_width) { /* Line is too big for screen! */