History log of /haiku/src/apps/terminal/TermScrollView.cpp
Revision Date Author Comments
# b90b6127 01-Dec-2010 Philippe Houdoin <philippe.houdoin@gmail.com>

Fixed scrollbars & window resize knob layout issue:
- active view at fullscreen enter and exit was not necessary the same one!
- all view's scrollbars are now resized at fullscreen switch
- new tab's scrollbar was sized for window mode, even when added while in
fullscreen mode...


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39689 a95241bf-73f2-0310-859d-f6bbb57e9c96


# caadca91 06-Dec-2009 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Also delete the BScrollBar we detach from the BScrollView.
Even if it was detached, it was still scrolling the view, causing bug
#5077. Moreover we were leaking it.
Also call TargetedByScrollBar on the "old" target with a NULL parameter,
and on the new target, with "this".



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34516 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 8fd171c8 04-Nov-2009 Axel Dörfler <axeld@pinc-software.de>

* SmartTabView can now also resize a vertical scroll bar, if needed (ie. if one
overlaps with the menu bar). Not a perfect solution, but works well enough.
* When you only have a single tab, the vertical scroll bar now overlaps again
with the menu bar.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33870 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 0928ac39 04-Nov-2009 Axel Dörfler <axeld@pinc-software.de>

* Removed BeOS work-around in TermScrollView.cpp.
* Improved comments.
* Coding style cleanup, no functional change.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33869 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 59cd64ac 07-Jun-2009 Ryan Leavengood <leavengood@gmail.com>

Overlapping the top of the scrollbar button no longer makes sense with a tabbed
Terminal. It just makes the button look improperly clipped when tabs are being
used.

I am not totally happy in how this looks though, and if someone has other ideas
feel free to fix it up (maybe a line under the tabs when they are showing?)


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30994 a95241bf-73f2-0310-859d-f6bbb57e9c96


# a326b4f1 15-Oct-2008 François Revol <revol@free.fr>

Fix the BeOS build. Yeah I know I'm the only one building Terminal on Zeta...


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28126 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 3764a6db 17-Jun-2008 Ingo Weinhold <ingo_weinhold@gmx.de>

For some reasons the scroll bar started overlapping with the resize
knob, or actually for some reasons it didn't for me after r25969.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25993 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 272f87d6 15-Jun-2008 Ingo Weinhold <ingo_weinhold@gmx.de>

Fixed various layout/size related issues (mostly off-by-one bugs). The
terminal opens with the correct size, now.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25969 a95241bf-73f2-0310-859d-f6bbb57e9c96


# bdc33077 09-Jun-2008 Ingo Weinhold <ingo_weinhold@gmx.de>

GCC 4 fixes.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25885 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 52b1d543 09-Jun-2008 Ingo Weinhold <ingo_weinhold@gmx.de>

Terminal changes. This is still work in progress, some features
are disabled, lots of commented debug code is still in there,
and quite a bit of cleanup is needed, but basically things work
at least as well as before with several improvements:
* Changed TerminalBuffer from an interface to a complete
implementation. Removed all related code from TermView. Removed
the now obsolete TermBuffer. TermParse uses TerminalBuffer instead
of TermView, and TerminalBuffer asynchronously notifies TermView.
This avoids potential deadlocks, fixing #1918. It also speeds
up tty-output-bound programs. E.g. a "seq 10000" is about twice
at fast with the default terminal size in my setup, now. It's
still horribly slow compared to e.g. Konsole, though.
* Replaced CurPos by a more compact and fully inline class TermPos.
* Removed the offset feature (that insets the used text area) from
TermView, thus simplifying the code. Instead put the view into a
new parent view which provides the insets. This also fixes
artifacts that could sometimes be observed in the insets area.
* Scrolling related changes:
- When scrolling fully down, the (80x25 or whatever) terminal
screen is seen. It is not possible to scroll below the screen as
in Be's Terminal. Scrolling in Haiku's Terminal was weirdly
broken in this respect. As a side effect this fixes #2070.
- When not scrolled fully down, further output won't cause any
scrolling. It is thus possible to read earlier output while
something is still going on. Fixes #1772.
- Particularly to avoid unnecessary scrolling in the not scrolled
fully down case, TermView no longer actually scrolls. It only
sets an internal offset and manually uses CopyBits() as needed.
Introduced a (hacky) BScrollView subclass using a BScrollBar
subclass to make that possible.
* Selection related changes:
- Double/triple click plus dragging allows for selecting multiple
words/lines.
- Word selection no longer selects ranges of non-space characters.
Instead it knows that words are made of alpha numerical chars and
a certain set of other chars, and selects a range of commonly
classified characters (word chars, non-word non-whitespace chars,
whitespace chars). The non-alpha-num word characters should be
made user-settable. Due to missing multi-byte character
classification multi-byte whitespace is not recognized.
- Beyond the end of the line there no longer are invisible spaces.
Trying to select the region selects the end of the line (i.e.
line break). This is similar to how Konsole and xterm work.
- Added auto-scrolling when selecting with the mouse. Formerly the
Terminal scrolled only while moving the mouse. The scroll speed
might need some fine-tuning.
- Don't know what change exactly did that (likely the switch to
non-end-inclusive text ranges used internally), but the
occasional selection artifacts are gone.
* Resizing the terminal window re-wraps soft-wrapped lines.
* The find functionality seemed to be completely broken. At least it
never found anything for me. Should work now, though multi-byte
characters are not matched correctly in case-insensitive mode.

Regressions:
* Printing is disabled.
* Cursor blinking is disabled. Do we want it anyway?
* In several cases full-width characters are not handled correctly
(in more cases than before).
* Shrinking the terminal width doesn't work very well with "less"
(and probably other full-screen terminal apps), due to line
re-wrapping. "less" expects them to be truncated only. When
supporting an alternate screen buffer re-wrapping should be
disabled for it, which should solve the problem.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25881 a95241bf-73f2-0310-859d-f6bbb57e9c96


# b90b61272e07fa8c73b628fe8e1916739e04c1af 01-Dec-2010 Philippe Houdoin <philippe.houdoin@gmail.com>

Fixed scrollbars & window resize knob layout issue:
- active view at fullscreen enter and exit was not necessary the same one!
- all view's scrollbars are now resized at fullscreen switch
- new tab's scrollbar was sized for window mode, even when added while in
fullscreen mode...


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39689 a95241bf-73f2-0310-859d-f6bbb57e9c96


# caadca918216c9e5106b7e9e7bee268f675540b0 06-Dec-2009 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Also delete the BScrollBar we detach from the BScrollView.
Even if it was detached, it was still scrolling the view, causing bug
#5077. Moreover we were leaking it.
Also call TargetedByScrollBar on the "old" target with a NULL parameter,
and on the new target, with "this".



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34516 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 8fd171c8d1dd4682f04801b0d1010fc0cabc4137 04-Nov-2009 Axel Dörfler <axeld@pinc-software.de>

* SmartTabView can now also resize a vertical scroll bar, if needed (ie. if one
overlaps with the menu bar). Not a perfect solution, but works well enough.
* When you only have a single tab, the vertical scroll bar now overlaps again
with the menu bar.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33870 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 0928ac390483a79f76357d89c79c78aeb2657a37 04-Nov-2009 Axel Dörfler <axeld@pinc-software.de>

* Removed BeOS work-around in TermScrollView.cpp.
* Improved comments.
* Coding style cleanup, no functional change.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33869 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 59cd64ac3cd705b8299cc0b5ec682c0c2b821b33 07-Jun-2009 Ryan Leavengood <leavengood@gmail.com>

Overlapping the top of the scrollbar button no longer makes sense with a tabbed
Terminal. It just makes the button look improperly clipped when tabs are being
used.

I am not totally happy in how this looks though, and if someone has other ideas
feel free to fix it up (maybe a line under the tabs when they are showing?)


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30994 a95241bf-73f2-0310-859d-f6bbb57e9c96


# a326b4f1b1566547f1ce10e1864758341489af5d 15-Oct-2008 François Revol <revol@free.fr>

Fix the BeOS build. Yeah I know I'm the only one building Terminal on Zeta...


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28126 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 3764a6db479bfddbaa9cfac4d864014148adb5ab 17-Jun-2008 Ingo Weinhold <ingo_weinhold@gmx.de>

For some reasons the scroll bar started overlapping with the resize
knob, or actually for some reasons it didn't for me after r25969.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25993 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 272f87d67b5c9f9c1ce1023d533d601e50139c86 15-Jun-2008 Ingo Weinhold <ingo_weinhold@gmx.de>

Fixed various layout/size related issues (mostly off-by-one bugs). The
terminal opens with the correct size, now.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25969 a95241bf-73f2-0310-859d-f6bbb57e9c96


# bdc33077f978c4fe10f2d2a4feb27d6709609faa 09-Jun-2008 Ingo Weinhold <ingo_weinhold@gmx.de>

GCC 4 fixes.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25885 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 52b1d543e80f5d48e6ef841fff4780c7c87bae11 09-Jun-2008 Ingo Weinhold <ingo_weinhold@gmx.de>

Terminal changes. This is still work in progress, some features
are disabled, lots of commented debug code is still in there,
and quite a bit of cleanup is needed, but basically things work
at least as well as before with several improvements:
* Changed TerminalBuffer from an interface to a complete
implementation. Removed all related code from TermView. Removed
the now obsolete TermBuffer. TermParse uses TerminalBuffer instead
of TermView, and TerminalBuffer asynchronously notifies TermView.
This avoids potential deadlocks, fixing #1918. It also speeds
up tty-output-bound programs. E.g. a "seq 10000" is about twice
at fast with the default terminal size in my setup, now. It's
still horribly slow compared to e.g. Konsole, though.
* Replaced CurPos by a more compact and fully inline class TermPos.
* Removed the offset feature (that insets the used text area) from
TermView, thus simplifying the code. Instead put the view into a
new parent view which provides the insets. This also fixes
artifacts that could sometimes be observed in the insets area.
* Scrolling related changes:
- When scrolling fully down, the (80x25 or whatever) terminal
screen is seen. It is not possible to scroll below the screen as
in Be's Terminal. Scrolling in Haiku's Terminal was weirdly
broken in this respect. As a side effect this fixes #2070.
- When not scrolled fully down, further output won't cause any
scrolling. It is thus possible to read earlier output while
something is still going on. Fixes #1772.
- Particularly to avoid unnecessary scrolling in the not scrolled
fully down case, TermView no longer actually scrolls. It only
sets an internal offset and manually uses CopyBits() as needed.
Introduced a (hacky) BScrollView subclass using a BScrollBar
subclass to make that possible.
* Selection related changes:
- Double/triple click plus dragging allows for selecting multiple
words/lines.
- Word selection no longer selects ranges of non-space characters.
Instead it knows that words are made of alpha numerical chars and
a certain set of other chars, and selects a range of commonly
classified characters (word chars, non-word non-whitespace chars,
whitespace chars). The non-alpha-num word characters should be
made user-settable. Due to missing multi-byte character
classification multi-byte whitespace is not recognized.
- Beyond the end of the line there no longer are invisible spaces.
Trying to select the region selects the end of the line (i.e.
line break). This is similar to how Konsole and xterm work.
- Added auto-scrolling when selecting with the mouse. Formerly the
Terminal scrolled only while moving the mouse. The scroll speed
might need some fine-tuning.
- Don't know what change exactly did that (likely the switch to
non-end-inclusive text ranges used internally), but the
occasional selection artifacts are gone.
* Resizing the terminal window re-wraps soft-wrapped lines.
* The find functionality seemed to be completely broken. At least it
never found anything for me. Should work now, though multi-byte
characters are not matched correctly in case-insensitive mode.

Regressions:
* Printing is disabled.
* Cursor blinking is disabled. Do we want it anyway?
* In several cases full-width characters are not handled correctly
(in more cases than before).
* Shrinking the terminal width doesn't work very well with "less"
(and probably other full-screen terminal apps), due to line
re-wrapping. "less" expects them to be truncated only. When
supporting an alternate screen buffer re-wrapping should be
disabled for it, which should solve the problem.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25881 a95241bf-73f2-0310-859d-f6bbb57e9c96