Changeset View
Changeset View
Standalone View
Standalone View
src/TerminalDisplay.cpp
Show First 20 Lines • Show All 2112 Lines • ▼ Show 20 Line(s) | |||||
2113 | /* ------------------------------------------------------------------------- */ | 2113 | /* ------------------------------------------------------------------------- */ | ||
2114 | 2114 | | |||
2115 | void TerminalDisplay::setScrollBarPosition(Enum::ScrollBarPositionEnum position) | 2115 | void TerminalDisplay::setScrollBarPosition(Enum::ScrollBarPositionEnum position) | ||
2116 | { | 2116 | { | ||
2117 | if (_scrollbarLocation == position) { | 2117 | if (_scrollbarLocation == position) { | ||
2118 | return; | 2118 | return; | ||
2119 | } | 2119 | } | ||
2120 | 2120 | | |||
2121 | _scrollBar->setVisible(position != Enum::ScrollBarHidden); | 2121 | if (position == Enum::ScrollBarHidden) { | ||
2122 | _scrollBar->hide(); | ||||
2123 | } else if (_scrollBar->maximum() != 0) { | ||||
2124 | _scrollBar->show(); | ||||
2125 | } | ||||
2126 | | ||||
2122 | _scrollbarLocation = position; | 2127 | _scrollbarLocation = position; | ||
2123 | 2128 | | |||
2124 | propagateSize(); | 2129 | propagateSize(); | ||
2125 | update(); | 2130 | update(); | ||
2126 | } | 2131 | } | ||
2127 | 2132 | | |||
2128 | void TerminalDisplay::scrollBarPositionChanged(int) | 2133 | void TerminalDisplay::scrollBarPositionChanged(int) | ||
2129 | { | 2134 | { | ||
Show All 15 Lines | |||||
2145 | 2150 | | |||
2146 | void TerminalDisplay::setScroll(int cursor, int slines) | 2151 | void TerminalDisplay::setScroll(int cursor, int slines) | ||
2147 | { | 2152 | { | ||
2148 | // update _scrollBar if the range or value has changed, | 2153 | // update _scrollBar if the range or value has changed, | ||
2149 | // otherwise return | 2154 | // otherwise return | ||
2150 | // | 2155 | // | ||
2151 | // setting the range or value of a _scrollBar will always trigger | 2156 | // setting the range or value of a _scrollBar will always trigger | ||
2152 | // a repaint, so it should be avoided if it is not necessary | 2157 | // a repaint, so it should be avoided if it is not necessary | ||
2153 | if (_scrollBar->minimum() == 0 && | 2158 | | ||
2154 | _scrollBar->maximum() == (slines - _lines) && | 2159 | if (_scrollBar->maximum() == 0 && _scrollBar->value() == cursor) { | ||
2155 | _scrollBar->value() == cursor) { | 2160 | // hide the scrollbar if it's not needed | ||
2161 | _scrollBar->hide(); | ||||
2156 | return; | 2162 | return; | ||
2163 | | ||||
2164 | } else if (_scrollbarLocation != Enum::ScrollBarHidden){ | ||||
2165 | _scrollBar->show(); | ||||
2157 | } | 2166 | } | ||
2158 | 2167 | | |||
2159 | disconnect(_scrollBar, &QScrollBar::valueChanged, this, &Konsole::TerminalDisplay::scrollBarPositionChanged); | 2168 | disconnect(_scrollBar, &QScrollBar::valueChanged, this, &Konsole::TerminalDisplay::scrollBarPositionChanged); | ||
2160 | _scrollBar->setRange(0, slines - _lines); | 2169 | _scrollBar->setRange(0, slines - _lines); | ||
2161 | _scrollBar->setSingleStep(1); | 2170 | _scrollBar->setSingleStep(1); | ||
2162 | _scrollBar->setPageStep(_lines); | 2171 | _scrollBar->setPageStep(_lines); | ||
2163 | _scrollBar->setValue(cursor); | 2172 | _scrollBar->setValue(cursor); | ||
2164 | connect(_scrollBar, &QScrollBar::valueChanged, this, &Konsole::TerminalDisplay::scrollBarPositionChanged); | 2173 | connect(_scrollBar, &QScrollBar::valueChanged, this, &Konsole::TerminalDisplay::scrollBarPositionChanged); | ||
▲ Show 20 Lines • Show All 1758 Lines • Show Last 20 Lines |