From 87607efa9038cfb3cc52d38f915ca977a4566c04 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Markus=20G=C3=B6llnitz?= Date: Fri, 18 Aug 2023 00:13:24 +0200 Subject: [PATCH] views/month: Fix measurement of month view and month rows MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The measurement in opposit direction of the one in which the elements are lined up needs not to add up all the sizes but just get the maximal size. This bug leads to too high minimal and natural widths (and heights) of the month view. Signed-off-by: Markus Göllnitz --- src/gui/views/gcal-month-view-row.c | 12 ++++++++++-- src/gui/views/gcal-month-view.c | 20 ++++++++++++++++---- 2 files changed, 26 insertions(+), 6 deletions(-) diff --git a/src/gui/views/gcal-month-view-row.c b/src/gui/views/gcal-month-view-row.c index 95920381..20f90591 100644 --- a/src/gui/views/gcal-month-view-row.c +++ b/src/gui/views/gcal-month-view-row.c @@ -431,8 +431,16 @@ gcal_month_view_row_measure (GtkWidget *widget, NULL); - minimum += child_minimum; - natural += child_natural; + if (orientation == GTK_ORIENTATION_HORIZONTAL) + { + minimum += child_minimum; + natural += child_natural; + } + else + { + minimum = MAX(minimum, child_minimum); + natural = MAX(natural, child_natural); + } } if (out_minimum) diff --git a/src/gui/views/gcal-month-view.c b/src/gui/views/gcal-month-view.c index af5d245d..7c135f89 100644 --- a/src/gui/views/gcal-month-view.c +++ b/src/gui/views/gcal-month-view.c @@ -1419,11 +1419,23 @@ gcal_month_view_measure (GtkWidget *widget, } } - if (minimum) - *minimum = minimum_header_size + minimum_row_size; - if (natural) - *natural = natural_header_size + natural_row_size; + if (orientation == GTK_ORIENTATION_VERTICAL) + { + if (minimum) + *minimum = minimum_header_size + minimum_row_size; + + if (natural) + *natural = natural_header_size + natural_row_size; + } + else + { + if (minimum) + *minimum = MAX(minimum_header_size, minimum_row_size); + + if (natural) + *natural = MAX(natural_header_size, natural_row_size); + } if (minimum_baseline) *minimum_baseline = -1;