diff options
author | Jaakko Keränen <jaakko.keranen@iki.fi> | 2020-12-04 12:56:36 +0200 |
---|---|---|
committer | Jaakko Keränen <jaakko.keranen@iki.fi> | 2020-12-04 12:56:36 +0200 |
commit | abec43cd54a14c6d4a74239df97870a83cc474ed (patch) | |
tree | 8099dba262c58c4eb53376a1f9e6ffaa7b2bcd2b /src/ui | |
parent | 39d66598f3641749bd3e2b9b2588e921912d4ec7 (diff) |
SidebarWidget: Minimum and maximum widths considering both sidebars
Diffstat (limited to 'src/ui')
-rw-r--r-- | src/ui/documentwidget.c | 5 | ||||
-rw-r--r-- | src/ui/sidebarwidget.c | 7 |
2 files changed, 9 insertions, 3 deletions
diff --git a/src/ui/documentwidget.c b/src/ui/documentwidget.c index 0d931080..7cd51561 100644 --- a/src/ui/documentwidget.c +++ b/src/ui/documentwidget.c | |||
@@ -302,7 +302,7 @@ static int documentWidth_DocumentWidget_(const iDocumentWidget *d) { | |||
302 | const iWidget *w = constAs_Widget(d); | 302 | const iWidget *w = constAs_Widget(d); |
303 | const iRect bounds = bounds_Widget(w); | 303 | const iRect bounds = bounds_Widget(w); |
304 | const iPrefs * prefs = prefs_App(); | 304 | const iPrefs * prefs = prefs_App(); |
305 | return iMini(bounds.size.x - gap_UI * d->pageMargin * 2, | 305 | return iMini(iMax(50 * gap_UI, bounds.size.x - gap_UI * d->pageMargin * 2), |
306 | fontSize_UI * prefs->lineWidth * prefs->zoomPercent / 100); | 306 | fontSize_UI * prefs->lineWidth * prefs->zoomPercent / 100); |
307 | } | 307 | } |
308 | 308 | ||
@@ -2984,6 +2984,9 @@ static void draw_DocumentWidget_(const iDocumentWidget *d) { | |||
2984 | const iWidget *w = constAs_Widget(d); | 2984 | const iWidget *w = constAs_Widget(d); |
2985 | const iRect bounds = bounds_Widget(w); | 2985 | const iRect bounds = bounds_Widget(w); |
2986 | iVisBuf * visBuf = d->visBuf; /* will be updated now */ | 2986 | iVisBuf * visBuf = d->visBuf; /* will be updated now */ |
2987 | if (width_Rect(bounds) <= 0) { | ||
2988 | return; | ||
2989 | } | ||
2987 | draw_Widget(w); | 2990 | draw_Widget(w); |
2988 | allocVisBuffer_DocumentWidget_(d); | 2991 | allocVisBuffer_DocumentWidget_(d); |
2989 | const iRect ctxWidgetBounds = init_Rect( | 2992 | const iRect ctxWidgetBounds = init_Rect( |
diff --git a/src/ui/sidebarwidget.c b/src/ui/sidebarwidget.c index ca4404d5..0c17995e 100644 --- a/src/ui/sidebarwidget.c +++ b/src/ui/sidebarwidget.c | |||
@@ -564,8 +564,11 @@ static void checkModeButtonLayout_SidebarWidget_(iSidebarWidget *d) { | |||
564 | } | 564 | } |
565 | 565 | ||
566 | void setWidth_SidebarWidget(iSidebarWidget *d, int width) { | 566 | void setWidth_SidebarWidget(iSidebarWidget *d, int width) { |
567 | iWidget *w = as_Widget(d); | 567 | iWidget * w = as_Widget(d); |
568 | width = iClamp(width, 30 * gap_UI, rootSize_Window(get_Window()).x - 50 * gap_UI); | 568 | /* Even less space if the other sidebar is visible, too. */ |
569 | const int otherWidth = | ||
570 | width_Widget(findWidget_App(d->side == left_SideBarSide ? "sidebar2" : "sidebar")); | ||
571 | width = iClamp(width, 30 * gap_UI, rootSize_Window(get_Window()).x - 50 * gap_UI - otherWidth); | ||
569 | d->width = width; | 572 | d->width = width; |
570 | if (isVisible_Widget(w)) { | 573 | if (isVisible_Widget(w)) { |
571 | w->rect.size.x = width; | 574 | w->rect.size.x = width; |