diff options
author | Caolán McNamara <caolanm@redhat.com> | 2020-04-09 11:41:00 +0100 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2020-04-16 20:28:24 +0200 |
commit | bc0e0f633b05c4f91b6695488fc9e5c127507ba5 (patch) | |
tree | cca168c8aced9207ffa877693b856440764de341 /vcl/inc/unx/gtk/gtkframe.hxx | |
parent | de1dadd591862e38242cc2de7a4a658a9a8b67ac (diff) |
tdf#131120 use a replacement for GtkComboBox
the problems with GtkComboBox we have are:
1) https://gitlab.gnome.org/GNOME/gtk/issues/1910 has_entry long menus take
forever to appear (tdf#125388)
on measuring each row, the GtkComboBox GtkTreeMenu will call its
area_apply_attributes_cb function on the row, but that calls
gtk_tree_menu_get_path_item which then loops through each child of the menu
looking for the widget of the row, so performance drops to useless.
All area_apply_attributes_cb does it set menu item sensitivity, so block it
from running with fragile hackery which assumes that the unwanted callback is
the only one with a
2) https://gitlab.gnome.org/GNOME/gtk/issues/94
when a super tall combobox menu is activated, and the selected entry is
sufficiently far down the list, then the menu doesn't appear under wayland
3) https://gitlab.gnome.org/GNOME/gtk/issues/310
no typeahead support
4) we want to be able to control the width of the button, but have a drop down menu which
is not limited to the width of the button
5) https://bugs.documentfoundation.org/show_bug.cgi?id=131120
super tall menu doesn't appear under X sometimes
In general we often pack a lot into the comboboxes and the default ones don't
like that.
Overlay scrolling is turned off for the GtkTreeView replacement because
otherwise there are null-derefs in gtk on indicator->scrollbar on repeated
reopenings
Change-Id: I1b6164020996377341b5992d593a027b76021f65
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/91990
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Diffstat (limited to 'vcl/inc/unx/gtk/gtkframe.hxx')
-rw-r--r-- | vcl/inc/unx/gtk/gtkframe.hxx | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/vcl/inc/unx/gtk/gtkframe.hxx b/vcl/inc/unx/gtk/gtkframe.hxx index d9d2d0d6631b..f62dd649dbef 100644 --- a/vcl/inc/unx/gtk/gtkframe.hxx +++ b/vcl/inc/unx/gtk/gtkframe.hxx @@ -529,6 +529,21 @@ AtkObject* ooo_fixed_get_accessible(GtkWidget *obj); } // extern "C" +#if !GTK_CHECK_VERSION(3, 22, 0) +enum GdkAnchorHints +{ + GDK_ANCHOR_FLIP_X = 1 << 0, + GDK_ANCHOR_FLIP_Y = 1 << 1, + GDK_ANCHOR_SLIDE_X = 1 << 2, + GDK_ANCHOR_SLIDE_Y = 1 << 3, + GDK_ANCHOR_RESIZE_X = 1 << 4, + GDK_ANCHOR_RESIZE_Y = 1 << 5, + GDK_ANCHOR_FLIP = GDK_ANCHOR_FLIP_X | GDK_ANCHOR_FLIP_Y, + GDK_ANCHOR_SLIDE = GDK_ANCHOR_SLIDE_X | GDK_ANCHOR_SLIDE_Y, + GDK_ANCHOR_RESIZE = GDK_ANCHOR_RESIZE_X | GDK_ANCHOR_RESIZE_Y +}; +#endif + #endif // INCLUDED_VCL_INC_UNX_GTK_GTKFRAME_HXX /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |