diff options
author | Patrick McDermott <pj@pehjota.net> | 2017-09-21 19:33:50 (EDT) |
---|---|---|
committer | Patrick McDermott <pj@pehjota.net> | 2017-09-21 19:33:50 (EDT) |
commit | 090bbf2b77284b5fa35197f0bfc96945889bf978 (patch) | |
tree | 4f4b2267abd2e40985df6c06f3024891ce4cca3a /src | |
parent | 1882004bd5d032c139784eec0b5a6db2a826bc84 (diff) | |
download | marquee-090bbf2b77284b5fa35197f0bfc96945889bf978.zip marquee-090bbf2b77284b5fa35197f0bfc96945889bf978.tar.gz marquee-090bbf2b77284b5fa35197f0bfc96945889bf978.tar.bz2 |
MqTabChrome: Explain hardcoded GtkScrolledWindow sizes
Diffstat (limited to 'src')
-rw-r--r-- | src/tab-chrome.c | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/src/tab-chrome.c b/src/tab-chrome.c index 3ca8df2..a9391db 100644 --- a/src/tab-chrome.c +++ b/src/tab-chrome.c @@ -201,6 +201,41 @@ back_forward_box_button_press_cb(GtkWidget *widget, GdkEvent *event, ++chrome->back_items; } + /* + * The following GtkScrolledWindow widgets have hardcoded minimum sizes, + * because there seems to be (in GTK+ versions before 3.22) no way to + * set the natural size of GtkScrolledWindow and its GtkViewport. + * + * I tried: + * + * - Setting size requests of the sizes of child widgets plus + * scrollbars (commit 2205669) + * - Putting GtkScrolledWindow widgets in stacks with non-scrolled + * versions of children, to allocate more area for the + * GtkScrolledWindow widgets to fill (commits 922cdef and 90686fa) + * - Setting policies to disable scrollbars upon GtkScrolledWindow + * instantiation, then enabling scrollbars on the GtkScrolledWindow + * "size-allocate" signal (commits c534c7e and 42ca783) + * + * Attempts to match the size of a GtkScrolledWindow's GtkViewport to + * its child's size don't allow the GtkScrolledWindow and GtkViewport to + * shrink when necessary to fit within the window. Therefore, such + * methods are equivalent to simply not using GtkScrolledWindow at all. + * And there appears to be no easy way to calculate the available size + * (the size of the GtkWindow minus all of the surrounding widgets) to + * manually manage a GtkViewport's size. + * + * GtkScrolledWindow or GtkViewport ignores the child's preferred + * (minimum and natural) sizes and apparently just sets a hardcoded size + * of about 64x64 px. I considered subclassing GtkScrolledWindow or + * GtkViewport, but I'm not sure where the hardcoded size is set. + * + * The functions gtk_scrolled_window_set_propagate_natural_width() and + * gtk_scrolled_window_set_propagate_natural_height() were introduced in + * GTK+ 3.22 and probably do what I want. However, I want to maintain + * compatibility with at least GTK+ 3.12 or 3.14. + */ + /* Set up the list scrolled window. */ list_scrolled_window = gtk_scrolled_window_new(NULL, NULL); gtk_scrolled_window_set_min_content_width( |