--- a/pidgin/gtkconv.c Fri Mar 13 22:11:34 2020 -0500
+++ b/pidgin/gtkconv.c Fri Mar 20 09:57:21 2020 -0500
@@ -7811,6 +7811,8 @@
static gboolean gtk_conv_configure_cb(GtkWidget *w, GdkEventConfigure *event, gpointer data) {
+ GdkMonitor *monitor = NULL; if (gtk_widget_get_visible(w))
@@ -7823,12 +7825,17 @@
if (gdk_window_get_state(gtk_widget_get_window(w)) & GDK_WINDOW_STATE_MAXIMIZED)
- /* don't save off-screen positioning */
- if (x + event->width < 0 ||
- y + event->height < 0 ||
- x > gdk_screen_width() ||
- y > gdk_screen_height())
+ monitor = gdk_display_get_monitor_at_window(gdk_display_get_default(), + gdk_monitor_get_geometry(monitor, &geo); + /* don't save a window that's spanning monitoring */ + if (x + event->width < geo.x || + y + event->height < geo.y || return FALSE; /* carry on normally */
purple_prefs_set_int(PIDGIN_PREFS_ROOT "/conversations/im/x", x);
@@ -8574,6 +8581,8 @@
conv_placement_last_created_win_type_configured_cb(GtkWidget *w,
GdkEventConfigure *event, PidginConversation *conv)
+ GdkMonitor *monitor = NULL; @@ -8587,12 +8596,17 @@
if (gdk_window_get_state(gtk_widget_get_window(w)) & GDK_WINDOW_STATE_MAXIMIZED)
+ monitor = gdk_display_get_monitor_at_window(gdk_display_get_default(), + gdk_monitor_get_geometry(monitor, &geo); /* don't save off-screen positioning */
- if (x + event->width < 0 ||
- y + event->height < 0 ||
- x > gdk_screen_width() ||
- y > gdk_screen_height())
+ if (x + event->width < geo.x || + y + event->height < geo.y || return FALSE; /* carry on normally */
for (all = conv->convs; all != NULL; all = all->next) {
if (PURPLE_IS_IM_CONVERSATION(conv->active_conv) != PURPLE_IS_IM_CONVERSATION(all->data)) {
--- a/pidgin/gtksound.c Fri Mar 13 22:11:34 2020 -0500
+++ b/pidgin/gtksound.c Fri Mar 20 09:57:21 2020 -0500
@@ -452,7 +452,7 @@
if (purple_strequal(method, "none")) {
} else if (purple_strequal(method, "beep")) {
+ gdk_display_beep(gdk_display_get_default()); @@ -578,7 +578,7 @@
#else /* #ifdef USE_GSTREAMER */
+ gdk_display_beep(gdk_display_get_default()); pidgin_sound_play_file_win32(filename);
--- a/pidgin/gtkstatusbox.c Fri Mar 13 22:11:34 2020 -0500
+++ b/pidgin/gtkstatusbox.c Fri Mar 20 09:57:21 2020 -0500
@@ -1168,8 +1168,8 @@
pidgin_status_box_list_position (PidginStatusBox *status_box, int *x, int *y, int *width, int *height)
GtkRequisition popup_req;
GtkPolicyType hpolicy, vpolicy;
@@ -1201,10 +1201,9 @@
*height = popup_req.height;
- screen = gtk_widget_get_screen(GTK_WIDGET(status_box));
- monitor_num = gdk_screen_get_monitor_at_window(screen,
+ m = gdk_display_get_monitor_at_window(gdk_display_get_default(), gtk_widget_get_window(GTK_WIDGET(status_box)));
- gdk_screen_get_monitor_geometry(screen, monitor_num, &monitor);
+ gdk_monitor_get_geometry(m, &monitor); --- a/pidgin/gtkutils.c Fri Mar 13 22:11:34 2020 -0500
+++ b/pidgin/gtkutils.c Fri Mar 20 09:57:21 2020 -0500
@@ -803,16 +803,14 @@
GtkRequisition requisition;
gint space_left, space_right, space_above, space_below;
g_return_if_fail(GTK_IS_MENU(menu));
widget = GTK_WIDGET(menu);
- screen = gtk_widget_get_screen(widget);
rtl = (gtk_widget_get_direction(widget) == GTK_TEXT_DIR_RTL);
@@ -823,7 +821,7 @@
gtk_widget_get_preferred_size(widget, NULL, &requisition);
- monitor_num = gdk_screen_get_monitor_at_point (screen, *x, *y);
+ m = gdk_display_get_monitor_at_point(gdk_display_get_default(), *x, *y); @@ -846,7 +844,7 @@
* Positioning in the vertical direction is similar: first try below
* mouse cursor, then above.
- gdk_screen_get_monitor_geometry (screen, monitor_num, &monitor);
+ gdk_monitor_get_geometry(m, &monitor); space_left = *x - monitor.x;
space_right = monitor.x + monitor.width - *x - 1;
--- a/pidgin/pidgintooltip.c Fri Mar 13 22:11:34 2020 -0500
+++ b/pidgin/pidgintooltip.c Fri Mar 20 09:57:21 2020 -0500
@@ -130,20 +130,20 @@
int scr_w, scr_h, x, y, dy;
int preserved_x, preserved_y;
- GdkScreen *screen = NULL;
+ GdkDisplay *display = NULL; + GdkMonitor *monitor = NULL; GtkWidget *tipwindow = pidgin_tooltip.tipwindow;
- seat = gdk_display_get_default_seat(gdk_display_get_default());
+ display = gdk_display_get_default(); + seat = gdk_display_get_default_seat(display); dev = gdk_seat_get_pointer(seat);
- gdk_device_get_position(dev, &screen, &x, &y);
+ gdk_device_get_position(dev, NULL, &x, &y); - mon_num = gdk_screen_get_monitor_at_point(screen, x, y);
- gdk_screen_get_monitor_geometry(screen, mon_num, &mon_size);
+ monitor = gdk_display_get_monitor_at_point(display, x, y); + gdk_monitor_get_geometry(monitor, &mon_size); scr_w = mon_size.width + mon_size.x;
scr_h = mon_size.height + mon_size.y;