From: Mikko Rasa Date: Mon, 16 Sep 2019 17:25:30 +0000 (+0300) Subject: Make sure Entry::first_row stays consistent X-Git-Url: http://git.tdb.fi/?a=commitdiff_plain;h=b600936dca600693729eb800b6952070f204a63f;p=libs%2Fgltk.git Make sure Entry::first_row stays consistent Shrinking and then enlarging an Entry caused first_row to first be set to the edit position, but would never be reset to zero due to the check in slider_value_changed. Yet the visual result was correct thanks to Text clamping first_row independently. --- diff --git a/source/entry.cpp b/source/entry.cpp index 751f173..36658da 100644 --- a/source/entry.cpp +++ b/source/entry.cpp @@ -458,10 +458,13 @@ void Entry::check_view_range() else if(row>=first_row+visible_rows) first_row = row+1-visible_rows; + unsigned scroll = max(text.get_n_lines(), visible_rows)-visible_rows; + if(first_row>scroll) + first_row = scroll; + if(first_row!=old_first_row) signal_scroll_position_changed.emit(first_row); - unsigned scroll = max(text.get_n_lines(), visible_rows)-visible_rows; slider->set_range(0, scroll); slider->set_value(scroll-first_row); }