Avoid drawing the scroll bars if the widget is non-visible

This commit is contained in:
Markus Gans 2019-06-02 19:11:17 +02:00
parent c93c0b6e33
commit 7c46d52ef4
6 changed files with 65 additions and 36 deletions

View File

@ -1,3 +1,6 @@
2019-06-02 Markus Gans <guru.mail@muenster.de>
* Avoid drawing the scroll bars if the widget is non-visible
2019-05-27 Markus Gans <guru.mail@muenster.de> 2019-05-27 Markus Gans <guru.mail@muenster.de>
* Use the Singleton design pattern to get a single object instance * Use the Singleton design pattern to get a single object instance
via FTerm via FTerm
@ -120,7 +123,7 @@
the switch statement with a vector of lambda expressions the switch statement with a vector of lambda expressions
2018-12-09 Markus Gans <guru.mail@muenster.de> 2018-12-09 Markus Gans <guru.mail@muenster.de>
* Better handling of the scrollbar maximum * Better handling of the scroll bar maximum
* Deactivate copy constructor and assignment operator with "= delete" * Deactivate copy constructor and assignment operator with "= delete"
* Use nullptr instead of 0 to initialize a pointer values * Use nullptr instead of 0 to initialize a pointer values
@ -136,7 +139,7 @@
* Fix compile in optimization level 2 for newer gcc * Fix compile in optimization level 2 for newer gcc
2018-11-27 Markus Gans <guru.mail@muenster.de> 2018-11-27 Markus Gans <guru.mail@muenster.de>
* Correct vertical scrollbar position after sorting in FListView * Correct vertical scroll bar position after sorting in FListView
2018-11-25 Markus Gans <guru.mail@muenster.de> 2018-11-25 Markus Gans <guru.mail@muenster.de>
* Version 0.5.0 * Version 0.5.0

View File

@ -737,15 +737,18 @@ void FListBox::adjustSize()
hbar->setWidth (width + nf_offset, false); hbar->setWidth (width + nf_offset, false);
hbar->resize(); hbar->resize();
if ( isHorizontallyScrollable() ) if ( isShown() )
hbar->show(); {
else if ( isHorizontallyScrollable() )
hbar->hide(); hbar->show();
else
hbar->hide();
if ( isVerticallyScrollable() ) if ( isVerticallyScrollable() )
vbar->show(); vbar->show();
else else
vbar->hide(); vbar->hide();
}
} }
@ -1180,10 +1183,13 @@ void FListBox::recalculateHorizontalBar (std::size_t len, bool has_brackets)
hbar->setPageSize (int(max_line_width), int(getWidth() - nf_offset - 4)); hbar->setPageSize (int(max_line_width), int(getWidth() - nf_offset - 4));
hbar->calculateSliderValues(); hbar->calculateSliderValues();
if ( isHorizontallyScrollable() ) if ( isShown() )
hbar->show(); {
else if ( isHorizontallyScrollable() )
hbar->hide(); hbar->show();
else
hbar->hide();
}
} }
} }
@ -1197,10 +1203,13 @@ void FListBox::recalculateVerticalBar (std::size_t element_count)
vbar->setPageSize (int(element_count), int(getHeight()) - 2); vbar->setPageSize (int(element_count), int(getHeight()) - 2);
vbar->calculateSliderValues(); vbar->calculateSliderValues();
if ( isVerticallyScrollable() ) if ( isShown() )
vbar->show(); {
else if ( isVerticallyScrollable() )
vbar->hide(); vbar->show();
else
vbar->hide();
}
} }
//---------------------------------------------------------------------- //----------------------------------------------------------------------

View File

@ -1361,15 +1361,18 @@ void FListView::adjustSize()
hbar->setWidth (width, false); hbar->setWidth (width, false);
hbar->resize(); hbar->resize();
if ( isHorizontallyScrollable() ) if ( isShown() )
hbar->show(); {
else if ( isHorizontallyScrollable() )
hbar->hide(); hbar->show();
else
hbar->hide();
if ( isVerticallyScrollable() ) if ( isVerticallyScrollable() )
vbar->show(); vbar->show();
else else
vbar->hide(); vbar->hide();
}
} }
@ -1966,10 +1969,13 @@ void FListView::recalculateHorizontalBar (std::size_t len)
hbar->setPageSize (int(max_line_width), int(getWidth() - nf_offset) - 4); hbar->setPageSize (int(max_line_width), int(getWidth() - nf_offset) - 4);
hbar->calculateSliderValues(); hbar->calculateSliderValues();
if ( isHorizontallyScrollable() ) if ( isShown() )
hbar->show(); {
else if ( isHorizontallyScrollable() )
hbar->hide(); hbar->show();
else
hbar->hide();
}
} }
} }
@ -1983,10 +1989,13 @@ void FListView::recalculateVerticalBar (std::size_t element_count)
vbar->setPageSize (int(element_count), int(getHeight()) - 2); vbar->setPageSize (int(element_count), int(getHeight()) - 2);
vbar->calculateSliderValues(); vbar->calculateSliderValues();
if ( isVerticallyScrollable() ) if ( isShown() )
vbar->show(); {
else if ( isVerticallyScrollable() )
vbar->hide(); vbar->show();
else
vbar->hide();
}
} }
//---------------------------------------------------------------------- //----------------------------------------------------------------------

View File

@ -814,6 +814,9 @@ void FScrollView::calculateScrollbarPos()
//---------------------------------------------------------------------- //----------------------------------------------------------------------
void FScrollView::setHorizontalScrollBarVisibility() void FScrollView::setHorizontalScrollBarVisibility()
{ {
if ( ! isShown() )
return;
switch ( hMode ) switch ( hMode )
{ {
case fc::Auto: case fc::Auto:
@ -836,6 +839,9 @@ void FScrollView::setHorizontalScrollBarVisibility()
//---------------------------------------------------------------------- //----------------------------------------------------------------------
void FScrollView::setVerticalScrollBarVisibility() void FScrollView::setVerticalScrollBarVisibility()
{ {
if ( ! isShown() )
return;
switch ( vMode ) switch ( vMode )
{ {
case fc::Auto: case fc::Auto:

View File

@ -1237,13 +1237,15 @@ inline void FTermLinux::initSpecialCharacter()
//---------------------------------------------------------------------- //----------------------------------------------------------------------
sInt16 FTermLinux::getFontPos (wchar_t ucs) sInt16 FTermLinux::getFontPos (wchar_t ucs)
{ {
constexpr sInt16 NOT_FOUND = -1;
for (std::size_t n = 0; n < screen_unicode_map.entry_ct; n++) for (std::size_t n = 0; n < screen_unicode_map.entry_ct; n++)
{ {
if ( screen_unicode_map.entries[n].unicode == ucs ) if ( screen_unicode_map.entries[n].unicode == ucs )
return sInt16(screen_unicode_map.entries[n].fontpos); return sInt16(screen_unicode_map.entries[n].fontpos);
} }
return -1; return NOT_FOUND;
} }
//---------------------------------------------------------------------- //----------------------------------------------------------------------