2228 Commits

Author SHA1 Message Date
Ingo Weinhold
40bbe4ecf9 Added Command-1...9 as shortcuts for switching tabs.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26111 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-06-23 20:44:02 +00:00
Stephan Aßmus
50450a0053 Implemented an AudioReader subclass "AudioVolumeConverter" which applies
a volume to the audio data. It ramps between a previous and the current volume
if necessary to smooth out the changes. The volume slider functionality is
thereby restored.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26066 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-06-21 18:15:48 +00:00
Ingo Weinhold
2fd41f637c Also scroll to the cursor when pasting something.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26046 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-06-20 12:38:52 +00:00
Ingo Weinhold
644470be68 Use the preferred history size. It's not settable via GUI yet, but one
can edit the settings file. The default are 10000 lines BTW.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26045 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-06-20 12:35:42 +00:00
Ingo Weinhold
a5e61a10eb Fixed mouse copy'n'paste support. We use a separate clipboard for mouse
selection which we update whenever the first mouse button is released.
This also enables copy'n'paste between Terminals.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26044 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-06-20 12:22:52 +00:00
Ingo Weinhold
769b9b3c40 * Generate the same escape sequence when pressing control or command and
the left/right cursor keys.
* Normalized the Ctrl-<cursor> escape sequences. Makes word navigation
  in vim work.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26038 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-06-20 01:33:18 +00:00
Ingo Weinhold
b43255b9f7 Squashed TODO: When writing a character in the last column of a line we
wrapped to the next line and a subsequent LF would advance another line.
We behave like xterm now, i.e. visually the cursor stays on the same
line (on the last character), but the next character will be wrapped to
the next line.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26033 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-06-20 00:30:13 +00:00
Ingo Weinhold
f9428b3ecd Also clear the selection when invalidating all.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26032 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-06-19 22:23:59 +00:00
Ingo Weinhold
1291c38c18 Implemented \ESC[?47h and \ESC[?47l (use alternative/normal screen
buffer). These are the sequences our /etc/termcap uses (local less and
vim use the alternative screen buffer now). The ones already implemented
are used e.g. by the termcap of my Linux installation. A bit weird all
those different termcap files, some even with the same version
number.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26031 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-06-19 21:10:21 +00:00
Ingo Weinhold
f3c7795744 Also update the cursor on full invalidation.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26030 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-06-19 20:57:35 +00:00
Ingo Weinhold
a71fd7987b * Changed generated key sequences to be more ANSI/xterm.
* Set TERM to "xterm".
* Removed unnecessary {Begin,End}ViewTransaction() in TermView::Draw().


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26022 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-06-19 14:18:31 +00:00
Ingo Weinhold
13315c5755 * The old screen buffer wasn't freed in _ResizeSimple().
* Updated some debug output.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26005 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-06-18 04:14:06 +00:00
Ingo Weinhold
7f6f9ddb94 * Forgot to clear the lines of the alternate screen buffer on
initialization. This would lead to crashes when resizing.
* Shuffled code in ResizeTo() a bit to make it more robust in case of
  error (out of memory).



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26004 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-06-18 04:12:46 +00:00
Ingo Weinhold
d04aae8b80 * Some preparations for DEC private mode settings support.
* Implemented alternate screen buffer support. Not used by any program
  yet, since we still use the beterm termcap entry.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26003 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-06-17 22:49:06 +00:00
François Revol
764de92f59 Fix boggus ifdef. Thanks Vasilis. Parens shouldn't be needed though.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26001 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-06-17 19:38:57 +00:00
Axel Dörfler
64ee822252 * Simplified compiler text - it will now only be shown in case it's not 2.95.3,
and it does fit in the line.
* Removed extraneous whitespace.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25994 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-06-17 14:25:46 +00:00
Ingo Weinhold
3764a6db47 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
2008-06-17 13:46:17 +00:00
Ingo Weinhold
2f9135e39a Fixed \ESCM (reverse index). It shall only scroll when the cursor is in
the first line.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25992 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-06-17 13:28:24 +00:00
Ingo Weinhold
3912340dee Entering/leaving insert mode should only happen with parameter 4.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25991 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-06-17 13:19:25 +00:00
Ingo Weinhold
a177ec8cf6 Added support for \ESC[%dX (erase characters).
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25988 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-06-17 03:06:25 +00:00
Ingo Weinhold
6df054ee2f Reenabled setting the window title. Changed things a bit, though: Each
session (tab) has it's own window title. Switching between them changes
the window title, too.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25987 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-06-17 02:23:28 +00:00
Ingo Weinhold
5d2d3a845c * Fixed \ESC[0J (erase screen below). It shall not erase any character
on the line before the cursor.
* Implemented \ESC[1J (erase screen above.
* Fixed \ESC[2J (erase all). It shall not move the cursor.
* When scrolling only the top part of the screen, we do now also
  invalidate the line below the scroll region. Otherwise the view
  wouldn't know that they have not been scrolled.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25986 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-06-17 01:44:10 +00:00
Ingo Weinhold
dfa76786b3 Fixed incorrect access of new lines in AddEmptyLines(). The wrong
lines would be initialized while the right ones might have remained
uninitialized. Could happen only in case that more lines were
scrolled out of the screen than there were in the scroll region.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25985 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-06-17 01:37:05 +00:00
Ingo Weinhold
9035d0e247 Added support for \ESC[%dT (scroll screen down).
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25984 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-06-16 23:27:07 +00:00
Ingo Weinhold
1dd3570350 Fixed \ESC[%d;%dr (set scroll region) for omitted second parameter.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25983 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-06-16 23:22:39 +00:00
Ingo Weinhold
3f6008436d Support for \ESC[%dS (scroll screen up).
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25982 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-06-16 23:15:26 +00:00
Ingo Weinhold
0dd40534eb Also invalidate the cursor position when it remains the same, but the
screen was scrolled.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25981 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-06-16 23:13:58 +00:00
Ingo Weinhold
00b997a8f8 Missing invalidation when inserting space.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25980 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-06-16 22:38:38 +00:00
Jérôme Duval
8604e5edd7 fix some warnings
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25974 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-06-16 16:36:38 +00:00
Ingo Weinhold
c85eff1991 Incorrect array index calculation in case of scrolling only part of the
screen (as vim does for instance). Should fix #2382 and #2386.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25973 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-06-16 16:24:37 +00:00
David McPaul
44820a5d88 Correct error message and minor layout changes to InfoWin
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25972 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-06-16 13:22:50 +00:00
Alexandre Deckner
157cd8913e - Calculating the space left for deskbar replicants was broken. The TimeView could overlap on the left. This fixes #1408
- Placement of the time text was broken. With big fonts, the text was way too low. Using text bounding box now, it looks pretty and robust too.
- Fixed the height of the time view to the replicant height. The view has a fixed height now and can never overlap deskbar at the bottom (horizontal deskbar mode) or other replicant 
below.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25970 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-06-16 13:14:46 +00:00
Ingo Weinhold
272f87d67b 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
2008-06-16 01:30:10 +00:00
Ingo Weinhold
535841fcb5 If it extended to the end of the line the length of the last attributes
run of a history line would not be initialized correctly.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25968 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-06-15 21:52:51 +00:00
Ingo Weinhold
5fcf3f86e8 Unset the text buffer listener when being detached from the window, and
synchronize with the text buffer when being re-attached. Fixes the
problem that after switching to another tab and back ongoing output
wouldn't show anymore.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25965 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-06-15 16:17:32 +00:00
Ingo Weinhold
ecd79a2cc1 Allow unsetting the listener. With multiple tabs there's only one
terminal view that is attached to the window and can receive messages at
all.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25964 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-06-15 16:13:33 +00:00
Ingo Weinhold
799a9a3449 * TermWindow does maintain a separate Session list instead of doing
nasty things with the tab view.
* The tabs are named "Shell <number>" now, which is somewhat more
  useful than all being named "Terminal". This is similar to Konsole and
  we should probably also support setting the tab name by the user.
  Until Haiku supports persistent sessions, that is not really useful,
  though.
* Shift-Left/Right iterates through the tabs, now.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25960 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-06-15 02:18:31 +00:00
Ingo Weinhold
4ce4bc3096 Made RemoveAndDeleteTab() virtual, so it can be overridden. Deleting the
view without notifying anyone isn't always desirable.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25959 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-06-15 02:13:09 +00:00
Ingo Weinhold
17b889de67 * Changed TerminalLine::length from int16 to uint16.
* BasicTerminalBuffer::Init() no longer uses _ClearLines() to clear
  the screen lines, since that expects the lines to be somewhat valid
  at least and also needlessly updates the dirty region.
* _ClearLines() always clears lines, even if they were empty. This way
  the "softBreak" flag is cleared too.
* Be a bit more careful when multiplying a potentially negative signed
  number by an unsigned one. Shouldn't have caused a problem in this
  case, though.

Either of the first three items should fix #2379.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25958 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-06-15 01:02:55 +00:00
Ingo Weinhold
4c9d4b02ef * Change the line history to a more compact format. We reserve
lines * (width + 8) bytes which is only a little more than a sixth of
  what it was before. The effect on performance is relatively small. In
  my tests I measured about 2% slowdown.
* Fixed artifacts after soft-wrapped lines.
* Re-enabled cursor blinking. I changed it so that the cursor is 1s
  shown and 0.5s hidden (instead of 1s each). Tell me what you think.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25957 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-06-14 21:37:40 +00:00
Alexandre Deckner
b9a5b8236b - Changed BColorControl cellsize to account for the fixes in BColorControl. A rounding error gave the right appearance. see r23671 and r23680. Also, we might want to check the minimum cellsize in R5 and use the same for compatibility.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25931 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-06-11 20:51:56 +00:00
Ingo Weinhold
0ee6c1ea21 * TermView does now maintain an additional visible area sized
BasicTerminalBuffer. It synchronizes this buffer with the actual
  terminal buffer and uses it for drawing. This does significantly
  decrease the time the terminal buffer is locked by the window thread,
  and avoids the necessity to do invalidations in Draw() when the
  terminal buffer changed in the meantime.
* When the view detects heavy scrolling of the terminal buffer due to
  lots of continued output, it throttles redraws to one every 0.1s. The
  detection condition might need some fine-tuning -- it's probably a bit
  too strict for most situations.

I guess I'm done now with optimizations. After testing on real iron for
the first time, I'm a little impressed. In the "time seq ..." speed
competition Haiku's Terminal easily beats Konsole by 10 to 20% for 80x25
and by factor 3+ for full screen. And if I interpret the results
correctly 90% of the time is actually used by "seq" itself which seems
to be about 5 times slower than under Linux.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25917 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-06-10 22:20:14 +00:00
Axel Dörfler
0e0d9290e0 I can't believe Urias wasn't mentioned here yet...
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25914 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-06-10 21:54:35 +00:00
Ingo Weinhold
90ab7ea343 * Added a SetHistoryCapacity() method.
* Added a ResizeTo() version that allows to set the history capacity at
  the same time.
* Added a SynchronizeWith() method that allows synchronizing with (a
  part of) another buffer.
* Fixed TODO in _Scroll().
* Improved the dirty region update code in _Scroll(). It would in
  certain (not exactly uncommon) situations needlessly invalidate the
  whole screen.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25912 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-06-10 21:43:42 +00:00
Ingo Weinhold
540e66d6a6 * Renamed GetReaderBuf() to _NextParseChar().
* Introduced a small (64 byte) buffer for the parser thread. Instead of
  directly reading single characters out of the reader buffer, we read
  a full parser buffer and process the characters from the parser
  buffer. Thus _NextParseChar() could be inlined, since it merely
  consists of a conditional method call and an access to the parser
  buffer, now.
* Improved the locking of the terminal buffer. Instead of unlocking and
  relocking after every multi-byte char or escape sequence, we only
  unlock while refilling the parser buffer.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25911 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-06-10 21:34:50 +00:00
Philippe Houdoin
47a197ac3a Run Alert/AboutBox in asynchronous mode: otherwise it freeze video
(can't tell if it was the same for audio, as mine -hda- is not supported 
yet).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25894 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-06-09 22:52:53 +00:00
Ingo Weinhold
234502808a Pulled base class BasicTerminalBuffer out of TerminalBuffer. It contains
pretty much all the meaty code. Left in TerminalBuffer is only stuff
that didn't quite fit, like the encoding and view notifications.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25893 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-06-09 21:46:52 +00:00
Ingo Weinhold
5423f9c0ac Some renaming and inlining of TerminalBuffer methods.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25892 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-06-09 21:09:02 +00:00
Ingo Weinhold
1654e65735 Renamed "Font Encoding" to "Text Encoding" as it really has nothing to
do with the font.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25888 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-06-09 20:14:45 +00:00
Ingo Weinhold
cbe6d01c9d Propagate the encoding to TerminalBuffer. It doesn't really belong
there, but that's the easiest solution for the time being.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25887 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-06-09 20:12:38 +00:00