gnucash maint: Bug 516920 - Calendar Pop up disappears of the left side
git repository hosting
gjanssens at code.gnucash.org
Mon Jan 23 10:10:56 EST 2017
Updated via https://github.com/Gnucash/gnucash/commit/b798a6cd (commit)
from https://github.com/Gnucash/gnucash/commit/2a97675b (commit)
commit b798a6cdbd883480f88267f2a25def6eb8e7bb2c
Author: Robert Fewell <14uBobIT at gmail.com>
Date: Tue Dec 27 11:53:49 2016 +0000
Bug 516920 - Calendar Pop up disappears of the left side
The last change did not check for the left screen edge. This update
checks for the calendar pop up going over the left, right, and
bottom edges of the screen. The top should not be an issue.
diff --git a/src/gnome-utils/gnc-dense-cal.c b/src/gnome-utils/gnc-dense-cal.c
index 2e816fa..596a0ae 100644
--- a/src/gnome-utils/gnc-dense-cal.c
+++ b/src/gnome-utils/gnc-dense-cal.c
@@ -1181,6 +1181,8 @@ gnc_dense_cal_button_press(GtkWidget *widget,
GtkAllocation alloc;
gint doc;
GncDenseCal *dcal = GNC_DENSE_CAL(widget);
+ gint win_xpos = evt->x_root + 5;
+ gint win_ypos = evt->y_root + 5;
doc = wheres_this(dcal, evt->x, evt->y);
dcal->showPopup = ~(dcal->showPopup);
@@ -1200,11 +1202,13 @@ gnc_dense_cal_button_press(GtkWidget *widget,
gtk_widget_queue_resize(GTK_WIDGET(dcal->transPopup));
gtk_widget_show_all(GTK_WIDGET(dcal->transPopup));
- if ((evt->x_root + 5 + alloc.width > gdk_screen_get_width(screen))||
- (evt->y_root + 5 + alloc.height > gdk_screen_get_height(screen)))
- gtk_window_move(GTK_WINDOW(dcal->transPopup), evt->x_root - 2 - alloc.width, evt->y_root - 2 - alloc.height);
- else
- gtk_window_move(GTK_WINDOW(dcal->transPopup), evt->x_root + 5, evt->y_root + 5);
+ if (evt->x_root + 5 + alloc.width > gdk_screen_get_width(screen))
+ win_xpos = evt->x_root - 2 - alloc.width;
+
+ if (evt->y_root + 5 + alloc.height > gdk_screen_get_height(screen))
+ win_ypos = evt->y_root - 2 - alloc.height;
+
+ gtk_window_move(GTK_WINDOW(dcal->transPopup), win_xpos, win_ypos);
}
else
gtk_widget_hide(GTK_WIDGET(dcal->transPopup));
@@ -1221,6 +1225,8 @@ gnc_dense_cal_motion_notify(GtkWidget *widget,
gint doc;
int unused;
GdkModifierType unused2;
+ gint win_xpos = event->x_root + 5;
+ gint win_ypos = event->y_root + 5;
dcal = GNC_DENSE_CAL(widget);
if (!dcal->showPopup)
@@ -1238,13 +1244,15 @@ gnc_dense_cal_motion_notify(GtkWidget *widget,
gtk_widget_get_allocation(GTK_WIDGET(dcal->transPopup), &alloc);
- gtk_widget_show_all(GTK_WIDGET(dcal->transPopup));
+ gtk_widget_show_all(GTK_WIDGET(dcal->transPopup));
- if ((event->x_root + 5 + alloc.width > gdk_screen_get_width(screen))||
- (event->y_root + 5 + alloc.height > gdk_screen_get_height(screen)))
- gtk_window_move(GTK_WINDOW(dcal->transPopup), event->x_root - 2 - alloc.width, event->y_root - 2 - alloc.height);
- else
- gtk_window_move(GTK_WINDOW(dcal->transPopup), event->x_root + 5, event->y_root + 5);
+ if (event->x_root + 5 + alloc.width > gdk_screen_get_width(screen))
+ win_xpos = event->x_root - 2 - alloc.width;
+
+ if (event->y_root + 5 + alloc.height > gdk_screen_get_height(screen))
+ win_ypos = event->y_root - 2 - alloc.height;
+
+ gtk_window_move(GTK_WINDOW(dcal->transPopup), win_xpos, win_ypos);
}
else
gtk_widget_hide(GTK_WIDGET(dcal->transPopup));
Summary of changes:
src/gnome-utils/gnc-dense-cal.c | 30 +++++++++++++++++++-----------
1 file changed, 19 insertions(+), 11 deletions(-)
More information about the gnucash-changes
mailing list