Add profile option to scroll full/half height via Page Up/Down keys

The default is still half page - there is no GUI to change this;
either use konsoleprofile or change the .profile manually.

CCBUG: 280637
wilder-portage
Kurt Hindenburg 13 years ago
parent 2c686b7afe
commit 3cd4d2e440
  1. 2
      src/Profile.cpp
  2. 4
      src/Profile.h
  3. 7
      src/ScreenWindow.cpp
  4. 3
      src/ScreenWindow.h
  5. 13
      src/TerminalDisplay.cpp
  6. 4
      src/TerminalDisplay.h
  7. 3
      src/ViewManager.cpp

@ -87,6 +87,7 @@ const Profile::PropertyInfo Profile::DefaultPropertyNames[] = {
, { HistoryMode , "HistoryMode" , SCROLLING_GROUP , QVariant::Int }
, { HistorySize , "HistorySize" , SCROLLING_GROUP , QVariant::Int }
, { ScrollBarPosition , "ScrollBarPosition" , SCROLLING_GROUP , QVariant::Int }
, { ScrollFullPage , "ScrollFullPage" , SCROLLING_GROUP , QVariant::Bool }
// Terminal Features
, { BlinkingTextEnabled , "BlinkingTextEnabled" , TERMINAL_GROUP , QVariant::Bool }
@ -169,6 +170,7 @@ FallbackProfile::FallbackProfile()
setProperty(HistoryMode, Enum::FixedSizeHistory);
setProperty(HistorySize, 1000);
setProperty(ScrollBarPosition, Enum::ScrollBarRight);
setProperty(ScrollFullPage, false);
setProperty(FlowControlEnabled, true);
setProperty(BlinkingTextEnabled, true);

@ -151,6 +151,10 @@ public:
* See Enum::ScrollBarPositionEnum
*/
ScrollBarPosition,
/** (bool) Specifies whether the PageUp/Down will scroll the full
* height or half height.
*/
ScrollFullPage,
/** (bool) Specifies whether the terminal will enable Bidirectional
* text display
*/

@ -211,12 +211,15 @@ int ScreenWindow::currentLine() const
return qBound(0, _currentLine, lineCount() - windowLines());
}
void ScreenWindow::scrollBy(RelativeScrollMode mode , int amount)
void ScreenWindow::scrollBy(RelativeScrollMode mode, int amount, bool fullPage)
{
if (mode == ScrollLines) {
scrollTo(currentLine() + amount);
} else if (mode == ScrollPages) {
scrollTo(currentLine() + amount * (windowLines() / 2));
if (fullPage)
scrollTo(currentLine() + amount * (windowLines()));
else
scrollTo(currentLine() + amount * (windowLines() / 2));
}
}

@ -201,8 +201,9 @@ public:
* @param amount The number of lines or pages ( depending on @p mode ) to scroll by. If
* this number is positive, the view is scrolled down. If this number is negative, the view
* is scrolled up.
* @param fullPage Specifies whether to scroll by full page or half page.
*/
void scrollBy(RelativeScrollMode mode , int amount);
void scrollBy(RelativeScrollMode mode, int amount, bool fullPage);
/**
* Specifies whether the window should automatically move to the bottom

@ -318,6 +318,7 @@ TerminalDisplay::TerminalDisplay(QWidget* parent)
, _autoCopySelectedText(false)
, _middleClickPasteMode(Enum::PasteFromX11Selection)
, _scrollbarLocation(Enum::ScrollBarRight)
, _scrollFullPage(false)
, _wordCharacters(":@-./_~")
, _bellMode(Enum::NotifyBell)
, _allowBlinkingText(true)
@ -1805,6 +1806,16 @@ void TerminalDisplay::setScroll(int cursor, int slines)
connect(_scrollBar, SIGNAL(valueChanged(int)), this, SLOT(scrollBarPositionChanged(int)));
}
void TerminalDisplay::setScrollFullPage(bool fullPage)
{
_scrollFullPage = fullPage;
}
bool TerminalDisplay::scrollFullPage() const
{
return _scrollFullPage;
}
/* ------------------------------------------------------------------------- */
/* */
/* Mouse */
@ -2795,7 +2806,7 @@ void TerminalDisplay::outputSuspended(bool suspended)
void TerminalDisplay::scrollScreenWindow(enum ScreenWindow::RelativeScrollMode mode, int amount)
{
_screenWindow->scrollBy(mode, amount);
_screenWindow->scrollBy(mode, amount, _scrollFullPage);
_screenWindow->setTrackOutput(_screenWindow->atEndOfOutput());
updateLineProperties();
updateImage();

@ -105,6 +105,9 @@ public:
*/
void setScroll(int cursor, int lines);
void setScrollFullPage(bool fullPage);
bool scrollFullPage() const;
/**
* Returns the display's filter chain. When the image for the display is updated,
* the text is passed through each filter in the chain. Each filter can define
@ -801,6 +804,7 @@ private:
QScrollBar* _scrollBar;
Enum::ScrollBarPositionEnum _scrollbarLocation;
bool _scrollFullPage;
QString _wordCharacters;
int _bellMode;

@ -791,6 +791,9 @@ void ViewManager::applyProfileToView(TerminalDisplay* view , const Profile::Ptr
else if (scrollBarPosition == Enum::ScrollBarHidden)
view->setScrollBarPosition(Enum::ScrollBarHidden);
bool scrollFullPage = profile->property<bool>(Profile::ScrollFullPage);
view->setScrollFullPage(scrollFullPage);
// show hint about terminal size after resizing
view->setShowTerminalSizeHint(profile->showTerminalSizeHint());

Loading…
Cancel
Save