diff options
author | Jan-Michael Brummer <jan.brummer@tabos.org> | 2019-05-02 15:50:01 +0200 |
---|---|---|
committer | Jan-Michael Brummer <jan.brummer@tabos.org> | 2019-05-10 20:26:28 +0200 |
commit | ee9728ebb7cec15d86e672b2fbee74de4fe8cae6 (patch) | |
tree | 6ae0413a824af78354129f7a447341c882c32c6e | |
parent | dcf7f1cb8ef2bc6c5528fae6198405df98fc8fb9 (diff) | |
download | epiphany-ee9728ebb7cec15d86e672b2fbee74de4fe8cae6.tar.gz |
Constrain pages popover to current window
Fixes: https://gitlab.gnome.org/GNOME/epiphany/issues/656
-rw-r--r-- | src/ephy-pages-popover.c | 35 | ||||
-rw-r--r-- | src/meson.build | 1 |
2 files changed, 36 insertions, 0 deletions
diff --git a/src/ephy-pages-popover.c b/src/ephy-pages-popover.c index a1ba5311e..b490d1a4b 100644 --- a/src/ephy-pages-popover.c +++ b/src/ephy-pages-popover.c @@ -23,6 +23,10 @@ #include "ephy-pages-popover.h" +#ifdef GDK_WINDOWING_X11 +#include <gdk/gdkx.h> +#endif + #define HANDY_USE_UNSTABLE_API #include <handy.h> #include "ephy-notebook.h" @@ -160,6 +164,30 @@ ephy_pages_popover_dispose (GObject *object) G_OBJECT_CLASS (ephy_pages_popover_parent_class)->dispose (object); } +#ifdef GDK_WINDOWING_X11 +static void +ephy_pages_popover_get_preferred_height (GtkWidget *widget, + gint *minimum_height, + gint *natural_height) +{ + EphyPagesPopover *self = EPHY_PAGES_POPOVER (widget); + int height; + + GTK_WIDGET_CLASS (ephy_pages_popover_parent_class)->get_preferred_height (widget, + minimum_height, + natural_height); + /* Ensure that popover won't leave current window */ + height = gtk_widget_get_allocated_height (GTK_WIDGET (self->notebook)); + gtk_scrolled_window_set_max_content_height (self->scrolled_window, height); +} + +static GtkSizeRequestMode +ephy_pages_popover_get_request_mode (GtkWidget *widget) +{ + return GTK_SIZE_REQUEST_WIDTH_FOR_HEIGHT; +} +#endif + static void ephy_pages_popover_class_init (EphyPagesPopoverClass *klass) { @@ -169,6 +197,13 @@ ephy_pages_popover_class_init (EphyPagesPopoverClass *klass) object_class->dispose = ephy_pages_popover_dispose; object_class->finalize = ephy_pages_popover_finalize; +#ifdef GDK_WINDOWING_X11 + if (GDK_IS_X11_DISPLAY (gdk_display_get_default ())) { + widget_class->get_request_mode = ephy_pages_popover_get_request_mode; + widget_class->get_preferred_height = ephy_pages_popover_get_preferred_height; + } +#endif + gtk_widget_class_set_template_from_resource (widget_class, "/org/gnome/epiphany/gtk/pages-popover.ui"); gtk_widget_class_bind_template_child (widget_class, EphyPagesPopover, list_box); gtk_widget_class_bind_template_child (widget_class, EphyPagesPopover, scrolled_window); diff --git a/src/meson.build b/src/meson.build index e463a5008..66597f5d4 100644 --- a/src/meson.build +++ b/src/meson.build @@ -61,6 +61,7 @@ libephymain_deps = [ ephymisc_dep, ephysync_dep, ephywidgets_dep, + gdk_dep, libhandy_dep, libnotify_dep ] |