History log of /haiku/src/apps/terminal/TermView.cpp
Revision Date Author Comments
# e3c74f40 15-Oct-2019 Lukasz Towarek <lukasz.towarek@gmail.com>

Terminal: Add support for extended mouse coordinates

Fixes #11949

Change-Id: I779d1a9af2e3208ba3c055692de5e62b6a7b72fc
Reviewed-on: https://review.haiku-os.org/c/haiku/+/1919
Reviewed-by: Stephan Aßmus <superstippi@gmx.de>


# 8840b3db 14-Aug-2019 Simon South <simon@simonsouth.net>

Terminal: Allow use of Option as Meta key

Add a configuration setting that allows the left Option key to be used as a
Meta key, and add support for the Escape sequences that control the Meta key's
behaviour.

TermWindow now maintains a copy, shared by all its component TermViews, of the
current key map, and updates this copy automatically when notified by the Input
Server a new key map has been loaded.

The Meta key was an extra modifier key present on early UNIX workstations that
provided access to the "extended" portion of the ASCII character set. Although
it has vanished from modern keyboards certain UNIX software still relies on the
key, most notably GNU Emacs and the GNU readline library, the latter of which
is used by bash and a wide variety of other software that reads input from a
terminal. (Python's interactive mode uses readline, for instance.)

With this patch applied and the new setting enabled, the left Option key can be
used to access additional editing and navigation features at the command line.
It also makes usable the port of GNU Emacs currently available from HaikuDepot.

Fixes #15294.

Change-Id: I150b640b7b18384d56ab2fb017bf16ce8bdbdd78
Reviewed-on: https://review.haiku-os.org/c/haiku/+/1727
Reviewed-by: waddlesplash <waddlesplash@gmail.com>


# 3fe76c19 04-Mar-2019 Augustin Cavalier <waddlesplash@gmail.com>

Terminal: Enable bold text by default.

It was removed before because bold text rendering was partially
broken. Now that Terminal uses fractional widths for character
sizes, we can restore it by default.

This matches the behavior of virtually all Linux terminal emulators
(they also appear to make bold text brighter.)


# fe55edca 03-Jan-2019 JackBurton79 <stefano.ceccherini@gmail.com>

Terminal: Font width can be a fractional value, so we need to use a float.

Adapt other code accordingly. Minimum changes to fix ticket #11478
In theory also font height could be fractional, so we might need to
review other parts of the code.

Change-Id: Idbdbe38193ca5a32b3d09c7cf9accfc917760cae
Reviewed-on: https://review.haiku-os.org/821
Reviewed-by: waddlesplash <waddlesplash@gmail.com>
Reviewed-by: Stephan Aßmus <superstippi@gmx.de>


# 85477b78 20-Oct-2018 Murai Takashi <tmurai01@gmail.com>

Terminal: Fix -Wtautological-constant-out-of-range-compare

Since index's type is uint8 (range 0-255) and kTermColorCount set to 256
(declared in terminal/Colors.h at line 31), 'index < kTermColorCount' is
always true.
Pointed out by clang.

Change-Id: I49e45cbd8a55223177fd2d6a64a0e37cf6341fc7
Reviewed-on: https://review.haiku-os.org/637
Reviewed-by: Adrien Destugues <pulkomandy@pulkomandy.tk>


# c0bbce07 24-Aug-2018 Humdinger <humdingerb@gmail.com>

Terminal: Make blinking cursor settings live

Change-Id: I51b2f4753c4c331c075293a7d531b26a2fbdc457
Reviewed-on: https://review.haiku-os.org/479
Reviewed-by: Adrien Destugues <pulkomandy@pulkomandy.tk>


# 105acc92 29-Oct-2016 Jérôme Duval <jerome.duval@gmail.com>

Terminal: always use bright for bold text.

* "Allow bold font" now enables the use of the bold font for bold text.
* so one can now see bold text in black on black.


# d3c5c6df 27-Jul-2016 Murai Takashi <tmurai01@gmail.com>

Terminal: Fix -Wlogical-not-parentheses


# fa19dd44 10-Dec-2015 looncraz <looncraz@looncraz.net>

apps: Convert to using Set*UIColor.

Signed-off-by: Augustin Cavalier <waddlesplash@gmail.com>
Patches 0045-0075, 0077-0087 from looncraz, unmodified.


# f76e8e9d 26-Oct-2014 Ingo Weinhold <ingo_weinhold@gmx.de>

Terminal: Fix pagewise scrolling in alternate screen buffer mode

It still used the old modifiers. Now it's shift as elsewhere.


# 5fe7d79d 06-Jun-2014 John Scipione <jscipione@gmail.com>

Terminal: Fix crash when changing window size

... try 2 without a spurious \

sorry for the noise.

From the commits list (Ingo) <<-EOF

> Terminal crashes because fView is not connected to App Server when
> this is called so calling fView->GetMouse() is not allowed.

The interesting questions therefore are:

1) Why is the view not attached?
2) Why is it in the hyper link state?

1) is because the BTabView removes the non-selected tabs instead of just
hiding them.

The reason for 2) is that the tab was opened with Cmd+T (the bug is not
reproducible when the tab is opened via menu item). Pressing Cmd causes
hyper link state to be entered and switching to the new tab will leave
the view in that state due to 1).

Possible solutions:

* TermView::_VisibleTextBufferChanged(): Call state hook only when attached
to window. All other occurrences are safe as they are in BView hooks.

* Leave the hyper link state when the view is detached from the window. A
new dummy state could be active as long as the view is not attached, though
using DefaultState would be harmless as well.

EOF

I chose solution 2 using DefaultState rather than creating a new dummy state.

Thanks Ingo.

Fixes #10902


# 0bdf3368 06-Jun-2014 John Scipione <jscipione@gmail.com>

Revert "Terminal: Fix crash when changing window size."

This reverts commit d3657dc2bcf3cad9091137d5ed22e0b56e639a66.


# d3657dc2 06-Jun-2014 John Scipione <jscipione@gmail.com>

Terminal: Fix crash when changing window size.

From the commits list (Ingo) <<-EOF

> Terminal crashes because fView is not connected to App Server when
> this is called so calling fView->GetMouse() is not allowed.

The interesting questions therefore are:

1) Why is the view not attached?
2) Why is it in the hyper link state?

1) is because the BTabView removes the non-selected tabs instead of just
hiding them.

The reason for 2) is that the tab was opened with Cmd+T (the bug is not
reproducible when the tab is opened via menu item). Pressing Cmd causes
hyper link state to be entered and switching to the new tab will leave
the view in that state due to 1).

Possible solutions:

* TermView::_VisibleTextBufferChanged(): Call state hook only when attached
to window. All other occurrences are safe as they are in BView hooks.

* Leave the hyper link state when the view is detached from the window. A
new dummy state could be active as long as the view is not attached, though
using DefaultState would be harmless as well.

EOF

I chose solution 2 using DefaultState rather than creating a new dummy state.

Thanks Ingo.

Fixes #10902


# 66bce823 16-May-2014 Adrien Destugues <pulkomandy@pulkomandy.tk>

CID 1210936: use after free.


# be3f404c 13-Feb-2014 Jonathan Schleifer <js@webkeks.org>

Terminal: Add option to use bright instead of bold text

A saturated add was chosen instead of tint_color, as the results of
tint_color were too extreme.


# 82055c26 02-Sep-2013 Siarzhuk Zharski <zharik@gmx.li>

Terminal:send resize notify on attaching window to view

During adding the second tab the view in the first one may change its
lines count in case the Terminal window was maximized. Send resize
notification to client rpogram on every reattaching view to window.

Fixes #9809


# 8a8a325a 19-May-2013 Ingo Weinhold <ingo_weinhold@gmx.de>

Terminal: work-around missing/out-of-order modifiers events

... more aggressively than before:
* Only use modifiers().
* Before forwarding any relevant event to the active state, first check
whether the modifiers have changed.

While the issues should really be fixed where they originate (app
server?), this hopefully fixes all situations where the hyperlink mode
gets stuck.


# 7de99f83 10-May-2013 Rene Gollent <anevilyak@gmail.com>

Fix Terminal build.


# e9bad28a 10-May-2013 Ingo Weinhold <ingo_weinhold@gmx.de>

Terminal: Add a hyperlink mode

When holding down Command, text under the mouse is checked whether it
looks like a URL or a local path. If so, it is highlighted and can be
clicked, which will open the URL/file. Right-clicking opens a context
menu with items for opening the link/file or copying it to the
clipboard. When additionally holding down Shift, path prefixes up to
the component under the mouse will be considered (no effect for URLs).

Changes:
* Add HyperLink class. Encapsulates a type, the address, and an
optional base address. Features an Open() method to open the address.
* Move/add some string constants to TermConst.
* Move TermView::CharClassifier to top level and rename to
DefaultCharClassifier.
* Introduce TermViewHighlight and TermViewHighlighter. The former
refers to a range of text in a TermView's text buffer. It also
contains a pointer to a TermViewHighlighter object, which specifies
how the text range shall be rendered (colors and attributes).
* TermView:
- Add respective _{Add,Remove}Highlight() methods and adjust the code
to support highlights.
- Make the selection a TermViewHighlight. At least its visual aspect
is now handled like other highlights.
- Introduce an inner TextBufferSyncLocker. It is used instead of
BAutolock when locking the text buffer to synchronize the visual
buffer with it. After it unlocks it calls
_VisibleTextBufferChanged(), if the visual text buffer has changed,
which in turn calls a new callback on the active state.
- Add WindowActivated() and ModifiersChanged() callbacks to the state
interface.
- Add new states HyperLinkState and HyperLinkMenuState which
implement the new feature.

Fix modifier issues


# bda35ef5 09-May-2013 Ingo Weinhold <ingo_weinhold@gmx.de>

Terminal: Pull user input handling into state classes


# 3d149248 03-Apr-2013 Siarzhuk Zharski <zharik@gmx.li>

Fix support of East Asian Full Width characters

* Re-enable full-width characters detection and display;
* Fix cursor drawing on full-width characters;
* Fix debug dump for multi-byte characters;
* Fix file permissions for debug capture log.

Fixes #6717. Also may improve behaviour related to #6227.


# 19bfeaa7 24-Mar-2013 Siarzhuk Zharski <zharik@gmx.li>

Support %e (cur.encoding) for Terminal titles

Optional parameter %e to indicate current tab view encoding in the
window title. It is not shown in case tab view encoding is default
UTF-8. Inspired by Sergei Reznikov. Thanks.


# c7047b8f 17-Mar-2013 Siarzhuk Zharski <zharik@gmx.li>

Improve handling of mbyte chars in UTF8Char::IsSpace

* Switch UTF8Char's IsSpace, IsAlNum, ToLower functions to use
system-wide BUnicodeChar service routines;
* Switch TermView::CharClassifier to use UTF8Char instead of
raw char* string ponter. That reduces count of conversions
and simplify code;

Fixes #7423.


# c2577509 16-Mar-2013 Siarzhuk Zharski <zharik@gmx.li>

Optimize SIGWINCH Shell notification

Fixes issue with missed SIGWINCH shell notification in case the
Terminal frame was resized by using any of "Settings"->"Window size"
menu items.

Fixes #9293 - original problem was pointed out by Ziusudra. Thank you!


# 41130d1c 16-Dec-2012 Ziusudra <ziusudra@gmail.com>

Terminal: Fixed small code duplication

SetTermSize(BRect) already contains all the code calling SetTermSize(int, int).
Partially fixes #9293.


# 5b41331f 09-Mar-2013 Siarzhuk Zharski <zharik@gmx.li>

CodeStyle fixes, some refactoring and cleanup

* Clear some codestyle issues catched by checker script;
* Rename RestartDebugCapture to more consistent StartStopDebugCapture;
* Updated Copyrights and authors lists, some occurences of the raw MIT
licence text replaced with "under the terms of MIT licence" reference;
* Fixes for x86_64 build.

This is cumulative cleanup commit for series of Terminal refactoring
changes I have introduced last time. No significant functional changes.


# fe256869 08-Mar-2013 Siarzhuk Zharski <zharik@gmx.li>

Move colors table from TermView to TerminalBuffer

* ColorsTable moved to TerminalBuffer to let easy lookup of table
during parsing of control sequences;
* Default Palette initialized from now in TermApp and preserved
from modifying by applications;


# bbfd23ab 09-Jan-2013 Siarzhuk Zharski <zharik@gmx.li>

Use native bold style drawing (+ switchable emulation)

Use native bold font for rendering characters with corresponding
attribute set. Possibility for switching to R5-like bold characters
emulation is also implemented. This one uses uses the left-down shadow
in B_OP_BLEND drawing mode instead of the rigth-down one as previously.


# 6d30b376 05-Mar-2013 Siarzhuk Zharski <zharik@gmx.li>

Support for underline and ibeam terminal cursor styles

* Add support for underline and i-beam cursor shapes. No corresponding
UI configuration in preferences view ATM because preferences are waiting
for refactoring and we need some eggs for this Easters. ;-)
* Add handling of VT520/xterm specific DECSCUSR control sequences
allowing applications to modify the style and blinking state of the
cursor. May be utilized, for example, by console version of vim;
* Implement cursor blinking/hiding on DECSET/DECRST commands.


# b512213b 31-Jan-2013 Siarzhuk Zharski <zharik@gmx.li>

Support Background Color Erase, switch to xterm-256color

* Lot of fixes to add support of BCE (background color erase). Shell
is switched to emulate xterm-256colors terminal, that is modern and
declare the colors capabilities of our Terminal more precisely;
* Move current character attributes fAttr from TermView to
BasicTerminalBuffer. This reduces count of function parameters on call
various InsertXXX routines;
* In alternative screen buffer mode the whole cells "matrix" of the
screen buffers is taken into account during drawing background of the
cells in the view. In normal mode the "attributes" field of the
TerminalLine is used to detect color of the area after the last
character - there should be no changes with previous behaviour;
* Fix attributes on kSpaceChar-padding short lines. Current _line_
attributes should be used instead of current _global_ attributes;
* Fixed pads and gaps attributes, more accurate handling of ESC[K and K°;
* _Invalidate strings just erased. Fix EraseChars DCH processing;
* Fixes for ESC[J erase lines control sequences;
* Added handling SGR 90-97, 100-107 codes;
* Clean the newly allocated TerminalLine lines;
* More precise cursor background [off-]color estimation at ends of
lines. The current line attributes should be used instead of
hard-coding it to fTextBackground;
* Fixed background color erase in normal screen buffer modes. Wrong
line indexes calculation messed the drawing results or just returned
0 [default] line attributes;
* Some more BCE support: TerminalLine::Clear() now honors current
character attributes;
* Fixes #6143, #6510 and #6424.


# 718a28ce 30-Jan-2013 Siarzhuk Zharski <zharik@gmx.li>

Add Debug snapshots and capture of Terminal data flow

Two helper functions introduced: "make debug snapshots" triggered by
Ctrl-Cmd-S shortcut and "capture data flow" triggered by Ctrl-Cmd-C
shortcut. The first one makes debug dump of current data both in visual
and in text buffer, including history lines if they available. The second
one mirrors all characters and control sequences that are flowing
through the Parser. Both dump and capture files are saved under /var/log
folder. That functionality available only if the USE_DEBUG_SNAPSHOTS switch is
defined.


# 238b435a 28-Jan-2013 Siarzhuk Zharski <zharik@gmx.li>

Fix empty background coloring right/below of text lines


# b9b80568 27-Jan-2013 Siarzhuk Zharski <zharik@gmx.li>

Revert hrev38316 fore-/background colors customization

This reverts hrev38316 in parts of foreground and background colors
handling. Mentioned revision has hardcoded colors to system ANSI color
entries 7 and 0 correspondently. It is very uncomfortable for the
console programs like Midnight Commander because they become
colors that were defined in the current Terminal scheme and doesn't
correspond to real ANSI color names. For example "ANSI black" can be
black, white, blue, gray or something else in dependency of the current
color scheme configuration. The same side-effect was obviously observed
for "ANSI white" and produced funny color combinations in software.


# 68ea9ce5 27-Jan-2013 Siarzhuk Zharski <zharik@gmx.li>

OSC and color management improoved

* Global kTermColorTable replaced with it's private copy for every
TermView instance. This allows to modify colors table for every view
separately;
* Set of ANSI normal/bright color entries added into preferences;
* Default color table generated dynamicaly using ANSI colors
preferences. 6x6x6 color cubes and grayscale ramp are generated in
xterm colors model;
* Improoved support of Operating System Command control sequences;
* Support for X11 rgb.txt compatible color names. Corresponding entries
are stored in hashed form in application resource and loaded only on
demand.


# 02f3baa0 26-Jan-2013 Siarzhuk Zharski <zharik@gmx.li>

Cleanup:Remove unused pref entries and fix typo

* PREF_SHELL is not used anymore, corresponding entry in /etc/passwd
should be used instead;
* PREF_GUI_LANGUAGE is not actual anymore - we have system-wide
UI localization support;
* Fix typo in the name of MSG_SET_TERMNAL_TITLE constant.


# f9443b14 26-Jan-2013 Siarzhuk Zharski <zharik@gmx.li>

Reverting hrev45143:bold characters visual regression

Terminal is GUI application and there are no need to emulate bold
in some kind of color adjustments, especially in case the proposed
emulation look is too far away from results observed on similar software
like xterm, Konsole and XFCE Terminal.


# 2b67e9a3 09-Jan-2013 Adrien Destugues <pulkomandy@gmail.com>

Merge changes from Fonzoterm :
- Report the terminal as xterm-color instead of just xterm, since we handle that fine.
- Tweak the SGR handler a bit to use bright rather than bold in some cases
- Change the color palette so the result is still readable (white on white doesn't work so well) with the default colorscheme.


# dc1456f6 07-Dec-2012 John Scipione <jscipione@gmail.com>

Add font sizes to Font Size menu in addition to in settings


# cfd9c96d 04-Dec-2012 John Scipione <jscipione@gmail.com>

Style fix: compare to 0 in strcmp() explicitly.


# a0e69092 05-Nov-2012 Jonathan Schleifer <js@webkeks.org>

Terminal: Fix cursor blinking.

Signed-off-by: Adrien Destugues - PulkoMandy <pulkomandy@pulkomandy.tk>


# 12290528 05-Nov-2012 Jonathan Schleifer <js@webkeks.org>

Terminal: Make the cursor color configurable.

Signed-off-by: Adrien Destugues - PulkoMandy <pulkomandy@pulkomandy.tk>


# 4e3d346e 04-Nov-2012 Jonathan Schleifer <js@webkeks.org>

Terminal: Make cursor blinking an option.

Signed-off-by: Rene Gollent <anevilyak@gmail.com>


# adf8818e 05-Aug-2012 Alex Smith <alex@alex-smith.me.uk>

Compilation fixes for Terminal, add to image.

It runs, but has shown up various bugs: app_server crashes, kernel
panics, rendering problems. Working on fixing these now.


# 546208a5 16-Apr-2012 Oliver Tappe <zooey@hirschkaefer.de>

More catalog-related cleanup.

* rename B_TRANSLATE_CONTEXT to B_TRANSLATION_CONTEXT and
B_TRANSLATE_WITH_CONTEXT to B_TRANSLATE_CONTEXT, squashing a TODO
* adjust all uses of both macros in Haiku's source tree
* use correct header guard for collecting/Catalog.h

The renamed macros require adjustments to all external applications
using catalogs.


# a2f89c58 02-Feb-2012 Siarzhuk Zharski <zharik@gmx.li>

[Coverity] Fixed some uninit fields and return values checks

* Fixed CID2398, CID9945, CID9943, CID4215


# f54fc2dc 02-Jan-2012 Philippe Saint-Pierre <stpere@gmail.com>

Terminal: NULL dereference fix

An inversion in a condition could lead to a NULL dereference.

CID 11039.


# f3782185 13-Nov-2011 Siarzhuk Zharski <zharik@gmx.li>

Refactoring of 8-bit encodings support.
* Fixed issue introduced in hrev38139: restoring from the line
drawing table was hard-coded to UTF8 Ground table. That is wrong:
the table for currently configured encoding must be set back.
Please look on using of _GuessGroundTable() for details;

* Fixed issue introduced in hrev34894: the semantic of convert_xx_utf8
functions requires the destination length to be set equal to the
target buffer size. Pre-hrev34894 usage of "homebrew" conversion
functions was a bit different - destination length was set to 0.
This made any converstions of input data useless and produce no
visual results;

* Private list of supported encodings (Encoding.cpp) was replaced by
using BPrivate::BCharacterSetRoster functionality. That allows to
use centralized info about encodings in unified with other
applications (Mail & StyledEdit for example) way. Most of currently
enumerated in UTF8.h encodings now available in Terminal.
Note that UCS-2 and UTF-16 are temporary (???) excluded from the
list of encodings supported by Terminal.

* The B_UTF16_CONVERSION was added in system-wide UTF8.h declarations.
This character set is available for enumerating by BCharacterSetRoster
but not listed in public API. Looks like it was just missed;

* Special note about "Text Encoding" entry in Preference File:
So known "shortname" of encoding was used in the preferences file.
For details look on the encodings list in previous version of
Encoding.cpp. As result of migrating to BCharacterSet-provided
resources this list was deleted and is not available anymore.
Instead of it the IANA name of the character encoding targeted
to be used for this purposes. Frankly speaking this part looks
like not working at the moment. The value of text encoding is
hardcoded to "UTF-8" now and is not affected by any operations
in Terminal menu. Note that "shortname" for default encoding
was "UTF8" but the saved value is "UTF-8" - and they are looking
not dependent at all. So this change should not introduce any
kind of backward incompatibility.


# fdd2b7eb 27-Mar-2011 Jonas Sundström <jonas@kirilla.com>

Removal of the About window.

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


# 0961433d 06-Mar-2011 Jérôme Duval <korli@users.berlios.de>

Patch from diver (bug #7329) with cleanup by myself: remove excessive localization


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


# 150b717e 30-Nov-2010 Adrien Destugues <pulkomandy@pulkomandy.ath.cx>

Fix crash in terminal : GetLinecolor was accessing lines with negative offsets.


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


# 627ced12 28-Nov-2010 Adrien Destugues <pulkomandy@pulkomandy.ath.cx>

Use a better way to store the attributes for end of line. This should also fix some other bugs, as there were occasionalaccess to out-of-range chars.


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


# c059c8c5 23-Nov-2010 Ingo Weinhold <ingo_weinhold@gmx.de>

MessageReceived(): Override B_MOUSE_WHEEL_CHANGED when in alternative screen
mode and send the key/page up/down escape sequences instead of trying to
scroll. Makes mouse wheel scrolling in less, nano,... working. Closes #6460.


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


# ca598670 22-Nov-2010 Ingo Weinhold <ingo_weinhold@gmx.de>

* Removed the shell process ID from ActiveProcessInfo and moved it to new class
ShellInfo, which also contains a flag whether the shell is the default shell.
* If the Terminal has been started with a custom shell, also replace "%p" in
the title by its name, when active.
* Also show the on-close alert for the custom shell.

Fixes #6844.


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


# dd2cdb3a 21-Nov-2010 Ingo Weinhold <ingo_weinhold@gmx.de>

Set B_ESCAPE as shortcut for all BAlerts. Fixes #6850 and #6858.


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


# 38d5ce62 18-Nov-2010 Ingo Weinhold <ingo_weinhold@gmx.de>

* Removed "move" parameter from the
TermView::Listener::{Previous,Next}TermView() methods. All B_COMMAND_KEY
combos are intercepted by the window, so we never get them in the view.
* Added window shortcut Command-Shift-Left/Right to move the tabs.


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


# 92b0038e 18-Nov-2010 Ingo Weinhold <ingo_weinhold@gmx.de>

Added a listener interface to TermView. This allowed to get rid of
CustomTermView and of the messaging from view to window. It also simplified
things in TermWindow.


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


# 37322c4b 16-Nov-2010 Ingo Weinhold <ingo_weinhold@gmx.de>

* Added new class ShellParameters that bundles all parameters passed to the
shell.
* Also added a parameter for the current working directory and. If supplied,
it is applied in Shell::_Spawn().
* Pass the current working directory of the active tab when opening a new
tab. Implements part of #6712.


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


# 6a009eb6 16-Nov-2010 Ingo Weinhold <ingo_weinhold@gmx.de>

Removed impossible TODO: We can't set a environment variable of another
program (after it has been started). What is TTYPE anyway? Google didn't turn
anything up and there are the POSIX locale environment variables anyway.


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


# b27862d2 16-Nov-2010 Ingo Weinhold <ingo_weinhold@gmx.de>

Reverted r39451. Instead introduced new class ActiveProcessInfo and added
method GetActiveProcessInfo() to Shell and TermView to get such an info for
the current foreground process group leader. Currently the info only contains
the ID, name, and current directory of the process.


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


# 5a76a2c1 16-Nov-2010 Ingo Weinhold <ingo_weinhold@gmx.de>

Added ActiveProcessGroup() getter to Shell and TermView.


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


# ffad8506 28-Oct-2010 Adrien Destugues <pulkomandy@pulkomandy.ath.cx>

* Remove the setting for a fixed cursor color. Instead, the cursor now inverts the colors of the char below it.
* This allows getting a cursor well visible both on black and white backgrouds.


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


# c8224731 23-Oct-2010 Axel Dörfler <axeld@pinc-software.de>

* Minor cleanup.


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


# 54ce349f 22-Sep-2010 Philippe Houdoin <philippe.houdoin@gmail.com>

Fix visual artifact !#1 described in #6530.


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


# 9b46a2b2 29-Aug-2010 Adrien Destugues <pulkomandy@pulkomandy.ath.cx>

Fix more drawing problems in terminal, and remove an useless variable.


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


# 64286654 27-Aug-2010 Adrien Destugues <pulkomandy@pulkomandy.ath.cx>

This fixes redrawing bugs related to the selection in terminal (#6426). It should also avoid some other bugs related to
drawing whitespace at the start of a line but the behaviour is not perfect yet.


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


# 9ad52ae4 23-Aug-2010 Adrien Destugues <pulkomandy@pulkomandy.ath.cx>

When inserting tabs or other whitespace, propagate the attributes of the previous characters.
This allows mc to render properly.


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


# a84802e4 22-Aug-2010 Adrien Destugues <pulkomandy@pulkomandy.ath.cx>

Re-add a part of the code I shouldn't have removed : this ensures the partial line that may be at the bottom of the screen
if the size of the window is not a multiple of the text font size is cleared.


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


# c198735b 23-Aug-2010 Adrien Destugues <pulkomandy@pulkomandy.ath.cx>

Change the way fore and back-color are handled by terminal. They are now color 0 and 7 in the color table, instead of entirely separate colors. This makes more sense and allows the colors to stay even in apps using other colors.
Also make the color attribute propagate to the end of a line. This fixes part of #6143 and allows to use vim with a multicolor syntax highlighting without too much trouble.


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


# 59c2d19e 16-Aug-2010 Adrien Destugues <pulkomandy@pulkomandy.ath.cx>

* Rewrite the parsing of xterm extension so that it doesn't touch ANSI standard things
* Some adjustements to the color table to have less duplicate colors


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


# dbf7fa87 13-Aug-2010 Adrien Destugues <pulkomandy@pulkomandy.ath.cx>

256 colors support in terminal (compatible with xterm)


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


# 6100b6aa 13-Aug-2010 Adrien Destugues <pulkomandy@pulkomandy.ath.cx>

Enlarge attributes to 32 bit instead of 16. This prepares 256-color support for terminal.


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


# d9fdb4f6 20-Jul-2010 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Added Shell::HasActiveProcesses() and TermView::IsShellBusy() (which calls
the former) to tell if some process launched from the terminal is still
running. Some style fix in Shell.h, made a parameter const.
Added basic TermWindow::QuitRequested()


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


# 70af7b97 19-May-2010 Stephan Aßmus <superstippi@gmx.de>

Patch by romain: Fix one particular problem where the terminal buffer area could
go out of sync when switching between tabs. Closes #5969, thanks a lot!


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


# 4eb0cbb0 07-May-2010 Matt Madia <mattmadia@gmail.com>

Updated TR_CONTEXT to be B_TRANSLATE_CONTEXT, relating to #5408.


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


# 6c514d3e 06-May-2010 Matt Madia <mattmadia@gmail.com>

Updated to use B_TRANSLATE* macros. relates to #5408.

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


# 8989d8a5 06-May-2010 Stephan Aßmus <superstippi@gmx.de>

Patch by Jorma Karvonen: Localization of the Terminal application. Thanks a lot.
Closes ticket #5850.


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


# de699cf2 23-Feb-2010 Ingo Weinhold <ingo_weinhold@gmx.de>

TermView::Draw(): Fixed off-by-one errors in the checks for the left/bottom
background area.


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


# f6cace5a 23-Feb-2010 Ingo Weinhold <ingo_weinhold@gmx.de>

TermView::Draw():
* Apparently Draw() can be invoked with new view bounds in effect before the
FrameResized() hook has been invoked (I suppose that's not really kosher).
Since TermView updates the terminal dimensions in FrameResized() and relied
on the update rect passed to Draw() to translate to positions within the
limits, an on-stack buffer could overflow, leading to #2851. Now we clamp
the translated positions to terminal size.
* Draw the background areas right of the last column and below the last row
explicitly instead of drawing an additional non-existing partial
character/row.


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


# a387e844 25-Jan-2010 Michael Lotz <mmlr@mlotz.ch>

Also accept B_MIME_DATA dropped messages. Allows the Terminal to be used with
Keymap as an on-screen keyboard by dropping the sample clipboard content and the
actual keys onto it (including control ones).


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


# 96d719ae 25-Jan-2010 Michael Lotz <mmlr@mlotz.ch>

Automatic whitespace cleanup, no functional change.


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


# 7974d3dc 13-Jan-2010 Stephan Aßmus <superstippi@gmx.de>

Patch by Humdinger:
Updated Haiku apps to use sentence-case. What a huge undertaking...
The files where I had to apply the patch manually (for mysterious
reasons) have also gotten a whitespace cleanup. I've proof-read
everything so hopefully there should be no problems.

This should be the final part of #5169.


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


# 74d2e159 04-Jan-2010 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Invoke the shell using /bin/bash instead of /bin/sh.
Use convert_to/from_utf8() directly instead of the homebrewn proxy methods.
Removed CodeConv from the repository.
Remove UTF8WidthTbl.c from the repository, since it's not used anymore.



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


# 5f4632cf 30-Dec-2009 Stefano Ceccherini <stefano.ceccherini@gmail.com>

I decided to trust (and mimic) Tracker and added a check in
TermView::MessageReceived for B_SIMPLE_DATA, so that a drop with the
right mouse button is handled correctly. Fixes ticket #5172.


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


# 5674af6f 20-Dec-2009 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Initializing the pointers to NULL is always a good idea. Fixes bug #5159.


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


# 8c6aa65e 19-Dec-2009 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Implemented input method handling. Unfortunately, due to bug #4926, it's
completely unusable (it's disabled currently anyway).
Shell::AttachBuffer() returns a status_t now (instead of void), so the caller
can do something in case it fails.
Simplified some methods, removed unused stuff.


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


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

TermView constructor throws an exception if initializing the object failed.
TermWindow catches the exception, and quits the application in that case.
Fixed weird wrapping of the text in the about window.


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


# bc78ca93 30-Nov-2009 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Removed unused input method variables. Input method handling will
be implemented someday, but probably differently anyway.


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


# b79c4995 27-Nov-2009 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Reverted the preference saving part of r34165 (at least for now).
Moved the AboutRequested code to a static TermView method, called from
everywhere (now TermApp knows about TermView, but no one is perfect).
Reordered and removed includes.


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


# b5504a51 24-Nov-2009 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Moved includes from the header to the implementation


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


# abc3e030 22-Nov-2009 Stefano Ceccherini <stefano.ceccherini@gmail.com>

TermView can also work as a child of a BScrollView


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


# 3e719489 22-Nov-2009 Stefano Ceccherini <stefano.ceccherini@gmail.com>

-Don't set fRows and fColums before calling SetTermSize().
-Removed unneeded SetTermSize() calls.



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


# 07da5d7c 21-Nov-2009 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Fixed TermView when used with the constructor which accepts a BRect:
In that case TermView computes rows and columns based on the frame size.
This also made simpler to attach a TermView to a given BWindow, like done
in the RepliTerminal test app. Changed Repliterminal accordingly.
Removed the bool parameter from SetTermSize(), and added a SetTermSize which
accept a BRect, as well.


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


# a2ba3d65 21-Nov-2009 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Removed dependency to the global gMouseClipboard from TermView. Now there's
a SetMouseClipboard() method to set one (defaults to be_clipboard, maybe
it's not a good idea and should default to NULL instead).


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


# 17ecdb5b 20-Nov-2009 Stefano Ceccherini <stefano.ceccherini@gmail.com>

TermView doesn't know about PrefHandler anymore (again), so that, in case
it's used as replicant (but I think it won't work anymore, yet),
it doesn't influence the global settings.
TermWindow saves the preferences on quit, if the PrefWindow was never
instantiated. This allows the window size to be saved also when it's
resized manually (not via menu).


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


# 61646809 15-Nov-2009 Stefano Ceccherini <stefano.ceccherini@gmail.com>

The cursor didn't start blinking, unless the window was activated (by clicking outside and then inside the window).
Copied the BTextView mechanism: Activate and Deactivate the view on MakeFocus
and WindowActivated.


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


# 7cd672ff 14-Aug-2009 Ingo Weinhold <ingo_weinhold@gmx.de>

Fixed some gcc 4 warnings.


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


# 5561b695 08-May-2009 Axel Dörfler <axeld@pinc-software.de>

* Fixed a typo that prevented the right context menu copy action to work
on directories. See ticket #3575.


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


# 11efbf01 24-Apr-2009 Axel Dörfler <axeld@pinc-software.de>

* Applied patch by Olivier to implement more mouse reporting modes, and thus
fixing bug #2854. Thanks!


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


# 21543141 19-Apr-2009 Axel Dörfler <axeld@pinc-software.de>

* Applied slightly changed patch by Olivier that adds basic xterm style mouse
support, thanks!
* This probably closes bug #2854, confirmation pending.


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


# b936fc67 07-Apr-2009 Stephan Aßmus <superstippi@gmx.de>

* Watch the system clipboard for changes.
* On the event of a clipboard change, check if the clipboard contains text
now and replace the contents of the internal "mouse clipboard". So when
right/middle clicking into the Terminal, the current system clipboard contents
are inserted. As soon as the user selects text in the Terminal again, that
text will have priority over the system clipboard, as before.

Fixes ticket #3700.


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


# dd6ab624 05-Apr-2009 Rene Gollent <anevilyak@gmail.com>

gcc4 build fix.



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


# 3b5c4663 05-Apr-2009 Jonas Sundström <jonas@kirilla.com>

Suppress ResizeView (the grey rows & columns view) when entering/leaving fullscreen mode, and when zooming. Its useful only when manually resizing the window. In the other cases it simply flickers by.

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


# 7aed1511 14-Mar-2009 Axel Dörfler <axeld@pinc-software.de>

* The window size is no longer directly saved when you change it in the menu.
* "Save as Default" now also saves the current Terminal size.
* Exchanged the strange default Termina sizes with some others, added a
separator between the full screen setting.
* Removed the "Term" prefix from TermView::fTerm{Columns|Rows}.
* Whitespace cleanup.


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


# 4012c75a 21-Feb-2009 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Remove TermView dependency from Shell. It now depends on TerminalBuffer instead.

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


# f498be92 03-Feb-2009 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Applied patch by h.z. (slightly modified by myself) included in bug #2715. I tested it briefly with Konatu Tohaba font and it seems to work correctly. Please review.

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


# 5ade2c5a 24-Jan-2009 Stephan Aßmus <superstippi@gmx.de>

Fixed coding style issues pointed out by Jerome.


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


# cee9364a 25-Jan-2009 Stephan Aßmus <superstippi@gmx.de>

Applied patch by Clemens Zeidler which gives the Terminal a nice context
menu with additional options when dropping files from Tracker into the
Terminal. Thanks a lot, Clemens!


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


# ee9b4396 19-Jan-2009 Stefano Ceccherini <stefano.ceccherini@gmail.com>

fCheckMouseTracking was never initialized to false, causing spurious selections when opening a new tab. Fixes bug #2910

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


# 08a6ab44 15-Oct-2008 Axel Dörfler <axeld@pinc-software.de>

* Added a _MouseDistanceSinceLastClick() that returns the square of the pixel
distance of the last click and the point passed in.
* Use this one to delay starting of character wide selections.
* Also, treat double/triple clicks as single clicks if the mouse moved too far.


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


# 302809b4 14-Oct-2008 Axel Dörfler <axeld@pinc-software.de>

* Moved duplicated initializers to the _InitObject() method.
* Cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28127 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


# c2f7e34f 15-Oct-2008 Axel Dörfler <axeld@pinc-software.de>

* When resizing the Terminal, we now show a small BStringView that displays the
current size of the Terminal in characters.
* Minor cleanup.


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


# 5b1d60c8 21-Jul-2008 Ingo Weinhold <ingo_weinhold@gmx.de>

r26509 broke char codes (e.g. Ctrl-K and Ctrl-D) matching one of the
checked B_* char codes. Fixes bug #2533.


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


# 552580cd 19-Jul-2008 Ingo Weinhold <ingo_weinhold@gmx.de>

* TermView::KeyDown(): We were writing to the TTY even when the user
pressed a shortcut that should result in a terminal action
(e.g. Shift-Left/Right -- Shift-Left generated a Ctrl-\).
* Removed spaces at the end of lines.


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


# fca14173 11-Jul-2008 Ingo Weinhold <ingo_weinhold@gmx.de>

Fixed small selection problems:
* When selecting character-wise backwards the initially selected char
was deselected.
* When first extending a selection and then moving the mouse back into
the initial selection region (char, word, or line), the previously
selected additional char/word/line would not be deselected (only when
moving the mouse in the other direction out of the initial selection).


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


# 975d43b4 11-Jul-2008 Ingo Weinhold <ingo_weinhold@gmx.de>

Incorrect selection line end enforcement -- the selection end is
exclusive. Fixes bug #2516.


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


# bd434c17 26-Jun-2008 Ingo Weinhold <ingo_weinhold@gmx.de>

When CTRL-H is pressed send the CTRL-H char not the backspace char.


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


# 2fd41f63 19-Jun-2008 Ingo Weinhold <ingo_weinhold@gmx.de>

Also scroll to the cursor when pasting something.


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


# a5e61a10 19-Jun-2008 Ingo Weinhold <ingo_weinhold@gmx.de>

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


# 769b9b3c 19-Jun-2008 Ingo Weinhold <ingo_weinhold@gmx.de>

* 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


# f9428b3e 19-Jun-2008 Ingo Weinhold <ingo_weinhold@gmx.de>

Also clear the selection when invalidating all.


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


# f3c77957 19-Jun-2008 Ingo Weinhold <ingo_weinhold@gmx.de>

Also update the cursor on full invalidation.


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


# a71fd798 19-Jun-2008 Ingo Weinhold <ingo_weinhold@gmx.de>

* 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


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

* 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


# 0dd40534 16-Jun-2008 Ingo Weinhold <ingo_weinhold@gmx.de>

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


# 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


# 5fcf3f86 15-Jun-2008 Ingo Weinhold <ingo_weinhold@gmx.de>

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


# 799a9a34 14-Jun-2008 Ingo Weinhold <ingo_weinhold@gmx.de>

* 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


# 4c9d4b02 14-Jun-2008 Ingo Weinhold <ingo_weinhold@gmx.de>

* 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


# 0ee6c1ea 10-Jun-2008 Ingo Weinhold <ingo_weinhold@gmx.de>

* 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


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

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


# 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


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

Removed work-around for now fixed bug #2355.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25882 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


# 976203c8 11-May-2008 Stefano Ceccherini <stefano.ceccherini@gmail.com>

typo which broke the build


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


# 66b7ce85 11-May-2008 Stefano Ceccherini <stefano.ceccherini@gmail.com>

We shoulnd't mess with the pulse rate of the window, since if we are a
replicant, the window is not ours. Blinking the cursor is now done with
a BMessageRunner.
Removed the dragger for the time being, since Terminal as a replicant
has some issues.


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


# 901e5756 10-May-2008 François Revol <revol@free.fr>

Indeed we don't need this signal hack for BeOS, we just need to tell it the pgid. That reduces the number of things to remove later ;)


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


# 156c7443 09-May-2008 Ingo Weinhold <ingo_weinhold@gmx.de>

The terminal is not supposed to send signals to the shell. That's done
by the tty. Now I also understand the BeOS work-around to ignore SIGINT
in bash I removed recently.
I suppose the signal code is still needed for BeOS. If not please remove
it.


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


# eed037b6 08-May-2008 François Revol <revol@free.fr>

- SetPosX/Y were wrong, but not yet used.
- implemented HPA/VPA (CV/CH) sequences (set absolute v and h position). It's optional but because the beterm termcap advertises it we must implement it. Also note beterm increments args unlike others. This fixes all obvious display issues with the rhapsody IRC client (a small ncurses client I ported).
- maybe we should switch the CASE_* to an enum ?


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


# 85b80c52 08-May-2008 François Revol <revol@free.fr>

- get rid of control chars in source files (ESC and CTRL-L)
- fix Home and End keys
- simplify code
- add different strings for Ctrl-arrows, allows to map them to previous/next-word (PuTTY and others have actually several codes depending on mods & ALT, mode & CTRL and even mods & CTRL|ALT, might be even better...).


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


# 6eea7aab 08-May-2008 François Revol <revol@free.fr>

Handle any dropped message. This makes dropping from Pe working for ex, as well as the BeOS BColorControl.
Color drop is currently disabled, for now it just pastes it as text if provided (#rrggbb form from BColorControl).


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


# fd59bc37 07-May-2008 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Added a BDragger so that Terminal is replicanteable. Salvatore, hope you
like it :)


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


# df06c6d8 29-Mar-2008 Axel Dörfler <axeld@pinc-software.de>

Applied patch by PulkoMandy to have a 3 pixel wide border around the text
in the Terminal. Thanks!


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


# 2614ac77 07-Feb-2008 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Moved call to SetSteps() from SetTermSize() to FrameResized(), where it
makes more sense (and also completes the fix for bug #1759). Retrieve
the command from the message archive.



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


# 032f7656 07-Feb-2008 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Also set the scrollbar steps when the terminal size changes.
Moved SetFlags() from _InitObject() to unarchiving constructor as other
constructors already set the flags.


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


# 1d759616 07-Feb-2008 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Call BScrollBar::SetSteps() with the correct values also on font change,
and when a scrollbar is attached. Fixes bug #1759


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


# 4882883b 07-Feb-2008 Stefano Ceccherini <stefano.ceccherini@gmail.com>

AppearPrefView was mixing up flags and resizing mode. Fixed.
Also set the flag B_PULSE_NEEDED (for the blinking cursor) in TermView.


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


# e4f975d4 07-Feb-2008 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Set the low and view color on construction, and set the B_WILL_DRAW flag
too, since we can't do anything without it.


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


# 894a6c62 04-Feb-2008 Stefano Ceccherini <stefano.ceccherini@gmail.com>

The termview was resized 2 pixels less than needed.


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


# 56e415dd 04-Feb-2008 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Opening the preferences window and hitting "cancel" would shrink the
window every time, without reason, since _Revert() was called even if no
changes were made.
Build the list of window sizes dynamically, this way we get rid of some
code duplication.
Removed implementation of TermWindow::QuitRequested(). The
B_QUIT_ON_WINDOW close takes care of quitting the application.
Some cleanups.



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


# 58cf7360 29-Jan-2008 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Added shortcuts to increase and decrease the font size. Since
these key combinations (ALT + +/-) can't be used on many keymaps, we
might want to change. Moved view resizing to a private window method.
Seems to work, more or less (ticket #1334)


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


# c4eae2c1 21-Jan-2008 Stefano Ceccherini <stefano.ceccherini@gmail.com>

more renaming


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


# 2fa152e4 18-Jan-2008 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Renamed more methods, fixed a warning


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


# e97cd7f1 18-Jan-2008 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Renamed some methods so that it's clearer what they do.


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


# 14907927 18-Jan-2008 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Cleaned up a bit the code. Use GetPreferredSize() instead of
SetTermSize() to get the size of the view.


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


# 0ccf70c8 18-Jan-2008 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Changing the font incremented the window size of 1 every time. Fixed.


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


# 7014c8a3 17-Jan-2008 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Removed support for "Full font", which wasn't used anyway. Since
our Terminal only works correctly with fixed width fonts, now the font
menu filters out variable width ones. For some reason, though, Konatu
Tohaba isn't recognized as fixed. Various other changes.


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


# 523f71ee 16-Jan-2008 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Creating a new tab in terminal would show an error message (but still
worked). Fixed. Also moved handling of default shell command from
TermView to Shell, where it belongs.


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


# f81851cb 11-Jan-2008 Axel Dörfler <axeld@pinc-software.de>

* Made the colors of our Terminal a bit easier to look at, especially in
the ls output.
* Made the array the size it actually is.


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


# ee3f1027 04-Dec-2007 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Selecting text from right to left didn't work. I disabled the use of
ResizeSelection() because it didn't support this. Selecting text flicker
a lot now, it will be fixed later. Selection should be changed to work a
bit more like BTextView. This fixes bug #1638


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


# 9d12401d 12-Oct-2007 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Check keys against "raw_char" instead of "key"


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


# e7b04029 18-Sep-2007 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Finally got rid of the mouse tracking thread. Put the code inside
MouseMoved(). Everything _seems_ to work like it did before, but there
might be some regressions...


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


# b86754c3 13-Sep-2007 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Simplified a bit some code


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


# dbc03773 28-Aug-2007 Ingo Weinhold <ingo_weinhold@gmx.de>

Added a SIGCHLD handler, so that the terminal will notice when one of
its shells has been terminated. Usually the thread reading from the tty
master would notice when all slaves have been closed, but they won't be
closed when the shell started a background job that's still living.

Unfortunately there are race conditions in the terminal that can lead to
deadlock when a session is closed. The service threads usually happily
lock the window, while the (locked) window would wait for the service
threads to quit.



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


# 40056ffa 22-Aug-2007 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Removed CURON/CUROFF constants. Use a boolean instead.


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


# 89064921 17-Aug-2007 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Removed debug leftover


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


# f3342f28 17-Aug-2007 Stefano Ceccherini <stefano.ceccherini@gmail.com>

The Shell destructor was never called. Calling it showed that
the PtyReader thread in TermParse hanged in read(). There's even a
comment in there (by Axel) that read() is never interrupted. Switched to
kill_thread() in TermParse::StopPtyReader() until this problem is fixed.
At least we don't leave running apps around anymore. :)


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


# 0f8ae3ea 16-Aug-2007 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Creating a new tab made the app crash since r21979. Use "Terminal" as
tab label instead of "scrollView". Setting Terminal to fullscreen also
resizes and moves the TermView a bit.


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


# bb4632f1 16-Aug-2007 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Stolen Ingo's Arguments class from Miniterminal and used it in place of
GPL'd code in TermApp (slightly modified, and bugfixed, even :P).
TermView now accepts an argument vector instead of a commandline. Same
thing for Shell.
Temporarily(?) removed some commandline options.
This also fixes bug #1396 (tested)


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


# df79164d 14-Aug-2007 Axel Dörfler <axeld@pinc-software.de>

Disabled somewhat annoying debug output.


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


# 18f004cc 03-Aug-2007 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Made some TermView functions (Paste, Copy, etc) public. Made
SetTitle and NotifyQuit virtual. TermWindow now uses a TermView
subclass which closes the tab on NotifyQuit. Enabled tabbed
terminal. There are still some small glitches, most probably related
to BTabView bugs ?



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


# 2b87a97a 03-Aug-2007 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Attach/DetachShell are now private. Added a new TermView constructor
which only specifies the rows and columns, view size is automatically
calculated, and used it in TermWindow. Added a TermView::SetTitle()
method, thus TermParse doesn't call Window() anymore. Some cleanups,
scrollbar was off by one.


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


# 69f6c88d 02-Aug-2007 Axel Dörfler <axeld@pinc-software.de>

* The PtyReader thread now just exits when there is no more left to be read.
* setpgid() when spawning the shell was superfluous, as we're already the
session leader.
* Added a comment to TermView::NotifyQuit() about why sending B_QUIT_REQUESTED
to the window isn't such a good idea when you have more than one use for it.


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


# cfc9ef8a 30-Jul-2007 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Implemented B_ABOUT_REQUESTED in TermView, for the replicant version.


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


# 67188b4c 30-Jul-2007 Stefano Ceccherini <stefano.ceccherini@gmail.com>

More or less reverted TermView::KeyDown() to r21695. Fixes bug #1340.
Thanks to Ingo & Korli for the help.


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


# 9821c5c4 29-Jul-2007 Stefano Ceccherini <stefano.ceccherini@gmail.com>

on MouseDown(), TermView becomes the focus view (like BTextView does).
Now input works also with a replicanted Terminal, although I have to
click on it twice(!?!?). Don't call exit_thread() anymore in
TermParse::PtyReader(). Hope this is correct. (feel free to beat me on
this).


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


# 2240e7df 30-Jul-2007 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Add the add_on field in TermView::Archive(). This way instantiating a
replicant works (thank you Marc). Return errno instead of the return
value of read() (thank you Jerome).
Terminal now can be instantiated as a replicant, although input doesn't
work :((.


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


# ba40a9b6 30-Jul-2007 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Added a TermView::NotifyQuit() method, used in TermParse, so it doesn't
mess with be_app anymore. Renamed TermView private methods to have an
underscore prefix.


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


# 53763c54 30-Jul-2007 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Don't use exceptions in TermView constructor, as it would cause problems
with instantiation. Note that if an error occurs in the constructor,
we're pretty much screwed. Made some TermView functions private. Some
small cleanup, and some WIP code.


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


# 69adf535 28-Jul-2007 Stefano Ceccherini <stefano.ceccherini@gmail.com>

TermView and the classes used by it now don't know about PrefHandler
anymore, but have methods to set the needed options. Various cleanups.


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


# a77bd420 27-Jul-2007 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Implemented Archive() and unarchiving constructor. TermView won't work
as a replicant, though, until I remove the preference code from it.


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


# cd2b8867 27-Jul-2007 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Removed weird code in TermWindow::WindowActivated. Added basic
Archive(), Instantiate(), and unarchiving constructor.


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


# 258e9494 27-Jul-2007 Stefano Ceccherini <stefano.ceccherini@gmail.com>

More work towards a tabbed terminal. Actually it already somewhat works
(code not enabled, though). Moved scripting from TermWindow to
TermView. Added a SmartTabView which (for now) only resizes the
child views to fit their size. Usual cleanups.


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


# 17dfb8b1 26-Jul-2007 Stefano Ceccherini <stefano.ceccherini@gmail.com>

More headers cleanup


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


# feaebcb5 26-Jul-2007 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Encoding is now a property of TermView. Changed a lot of code to fix the
problems caused by this change. MakeEncodingMenu doesn't mark the
current encoding anymore, it was already done in TermWindow::MenusBeginning().
Removed custom enums for encodings, just use the ones provided in UTF8.h.
I'm more and more convinced we should drop the custom conversion routines
and use the system ones.


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


# f14a8c58 25-Jul-2007 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Removed more unused stuff. Cleanups.



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


# d75fc058 25-Jul-2007 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Had switched rows and columns in SetTermSize() call inside TermView's
constructor. Made UpdateSIGWINCH() private and renamed it to
_UpdateSIGWINCH().


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


# 702e4be8 25-Jul-2007 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Moved all TermView initializing code into TermView itself. Before you
couldn't just rely on its constructor to fully initialize the object,
since the code was scattered around, mostly into TermWindow. Added a
commented out TermWindow constructor which only creates and adds a
TermView object to the view hierarchy, which now works.
Removed weird TermWindowActivate method, use WindowActivated
instead. TermApp can now keep a pointer to a BWindow instead of
TermWindow, since it doesn't do anything special with it.
TermView::SetTermFont() now can filter the font attributes (it uses
B_FIXED_SPACING, I'm not sure it's needed but it doesn't hurt). Usual
cleanups.


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


# abc47202 23-Jul-2007 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Moved cursor blinking functionality from TermParse into TermView (and
from a BMessageRunner into Pulse()). Removed more unused stuff.
Moved around some constants and definitions. Many style changes. Sorry,
I know the two should be separated, but I had already done so many changes...


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


# 6fbf283f 22-Jul-2007 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Fixed a bug where Terminal couldn't set itself to fullscreen the first
time. Some minor cleanups.


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


# ac3a8f54 21-Jul-2007 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Made all CodeConv methods static, since there was no point for them to
be nonstatic. Moved TermParse under Shell, Removed some parameters
passing around from TermWindow/TermView/TermParse. Now TermParse threads are
started when the shell is attached to a TermView. Might still be
improved.


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


# 0ed5650b 21-Jul-2007 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Got rid of TermBaseView


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


# dc25fe81 17-Jul-2007 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Got rid of gTermPref by adding some static methods to PrefHandler.
The font size menu wasn't up to date with the current settings. Fixed.


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


# 37b209af 17-Jul-2007 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Renamed spawn.cpp/h to Shell.cpp/h and updated the other source files to
take this change into account


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


# f3d05c8b 17-Jul-2007 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Encapsulated low level terminal stuff into a Shell class, which also
supersedes spawn_shell(). Removed window parameter from TermParse. Since
we already have a pointer to the view, we just call Window() on it (only
used in one place, no need to save a pointer). Other cleanups.


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


# 4ec75bbe 04-Jul-2007 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Big refactoring. Got rid of some global variables by putting code in
global functions (at least for now), removed useless globals, restyled
the code. Not yet done.


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


# e1628af5 02-Jul-2007 Stefano Ceccherini <stefano.ceccherini@gmail.com>

more style cleanups, removed unused global


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


# e0ba8e50 29-Jun-2007 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Got rid of the drawing thread, drawing is faster using the "correct"
approach. There are still some leftovers, will be taken care in the next
commits (not today though)


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


# d342dd3f 29-Jun-2007 Stefano Ceccherini <stefano.ceccherini@gmail.com>

a small step towards removing (duplicate) selection logic from
TermBuffer. Enabled invalidating in TextView instead of weird redrawing.
Seems much faster.


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


# 6b5ac907 29-Jun-2007 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Made TermBuffer fit a bit better into our coding style. Removed some
useless stuff. Not yet finished.


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


# 645b01f2 27-Jun-2007 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Got rid of fSelected, no need to maintain a separate variable to check
if we have a selection. Now there's a "HasSelection()" method which just
checks if fSelStart and fSelEnd are different.


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


# 5240f115 26-Apr-2007 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Removed unused methods and variables, small style cleanups


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


# ef502a7e 20-Apr-2007 Axel Dörfler <axeld@pinc-software.de>

* Removed useless context menu.
* Removed useless mouse button preferences.
* The secondary and tertiary buttons now both paste the selection (or clipboard data)
into the Terminal, this fixes bug #1159.


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


# 63dc9cc2 04-Mar-2007 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Got rid of the global gPfd variable. Big time cleanup, made TermParse a
bit more robust with error checks and likes. Removed unused
TermPrint.cpp file. I hope I didn't get on your
way, Vasilis :)


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


# 4fe138ee 20-Feb-2007 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Removed a goto, style changes, patch by Vasilis Kaoutsis. Thank you!


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


# f082d942 17-Feb-2007 Stefano Ceccherini <stefano.ceccherini@gmail.com>

patch by Vasilis Kaoutsis: removed the use of goto

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


# a439fba5 10-Dec-2006 Bruno G. Albuquerque <bga@bug-br.org.br>

Fix build under Linux/GCC4.



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


# f2b50593 11-Dec-2006 Stefano Ceccherini <stefano.ceccherini@gmail.com>

renamed pfd to gPfd as it's a global variable, fixed indentation in
TermView.cpp, other style changes


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


# b1904124 07-Dec-2006 Stefano Ceccherini <stefano.ceccherini@gmail.com>

got rid of the tty_name global


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


# f95dbf89 22-Aug-2006 Niels Sascha Reedijk <niels.reedijk@gmail.com>

Implement Find in Terminal. This is almost identical to R5's Terminal, except that it doesn't look for regexps. Code tested by me. Thanks to jburton for helping me out and reviewing the patch.

This resolves bug #199.


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


# 3e3c4ddc 06-Mar-2006 Stefano Ceccherini <stefano.ceccherini@gmail.com>

fFontHeight and fFontWidth weren't initialized in the TermView constructor, could cause some problems. Might fix bug 201, although I could never reproduce it consistently

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


# 30da2fcb 27-Feb-2006 Axel Dörfler <axeld@pinc-software.de>

Made the terminal a bit more robust against broken settings.


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


# e0d2f8bb 21-Feb-2006 Jérôme Duval <korli@users.berlios.de>

couldn't type 1 byte characters which need option key,
I don't know what it was meant to


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


# 8eb8269d 25-Nov-2005 Axel Dörfler <axeld@pinc-software.de>

* Fixed broken CodeConv semantics (missing length parameter).
* No longer writes to the message data from clipboard.
* some cleanup.


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


# 498cd44c 25-Nov-2005 Axel Dörfler <axeld@pinc-software.de>

Quick fix to prevent the terminal from crashing in case it got a message
with mouse coordinates outside the window (yeah, it has been written
that bad).
Need to rewrite the whole mouse handling, though...


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


# 8002431b 12-Aug-2005 DarkWyrm <darkwyrm@gmail.com>

Style fixes to TermWindow.cpp
Removed trailing spaces after text generated by file drops
Added a few TODOs


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


# 401fdf82 12-Aug-2005 DarkWyrm <darkwyrm@gmail.com>

Style and header updates


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


# 217a8117 28-Jul-2005 Stephan Aßmus <superstippi@gmx.de>

fixed typo

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


# d3dc729f 18-Jul-2005 Axel Dörfler <axeld@pinc-software.de>

Moved the files out of the MYOB folder into the main folder.
There are some double entries (like TermApp.cpp and TerminalApp.cpp, so
it still needs a further cleanup).


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


# f76e8e9d92b5f6346136948399998ff55d5ebc13 26-Oct-2014 Ingo Weinhold <ingo_weinhold@gmx.de>

Terminal: Fix pagewise scrolling in alternate screen buffer mode

It still used the old modifiers. Now it's shift as elsewhere.


# 5fe7d79d30ec36b0ffb96bd907d8d6da37ed6e64 06-Jun-2014 John Scipione <jscipione@gmail.com>

Terminal: Fix crash when changing window size

... try 2 without a spurious \

sorry for the noise.

From the commits list (Ingo) <<-EOF

> Terminal crashes because fView is not connected to App Server when
> this is called so calling fView->GetMouse() is not allowed.

The interesting questions therefore are:

1) Why is the view not attached?
2) Why is it in the hyper link state?

1) is because the BTabView removes the non-selected tabs instead of just
hiding them.

The reason for 2) is that the tab was opened with Cmd+T (the bug is not
reproducible when the tab is opened via menu item). Pressing Cmd causes
hyper link state to be entered and switching to the new tab will leave
the view in that state due to 1).

Possible solutions:

* TermView::_VisibleTextBufferChanged(): Call state hook only when attached
to window. All other occurrences are safe as they are in BView hooks.

* Leave the hyper link state when the view is detached from the window. A
new dummy state could be active as long as the view is not attached, though
using DefaultState would be harmless as well.

EOF

I chose solution 2 using DefaultState rather than creating a new dummy state.

Thanks Ingo.

Fixes #10902


# 0bdf33686ce26659b7be53d10fb087257e879296 06-Jun-2014 John Scipione <jscipione@gmail.com>

Revert "Terminal: Fix crash when changing window size."

This reverts commit d3657dc2bcf3cad9091137d5ed22e0b56e639a66.


# d3657dc2bcf3cad9091137d5ed22e0b56e639a66 06-Jun-2014 John Scipione <jscipione@gmail.com>

Terminal: Fix crash when changing window size.

From the commits list (Ingo) <<-EOF

> Terminal crashes because fView is not connected to App Server when
> this is called so calling fView->GetMouse() is not allowed.

The interesting questions therefore are:

1) Why is the view not attached?
2) Why is it in the hyper link state?

1) is because the BTabView removes the non-selected tabs instead of just
hiding them.

The reason for 2) is that the tab was opened with Cmd+T (the bug is not
reproducible when the tab is opened via menu item). Pressing Cmd causes
hyper link state to be entered and switching to the new tab will leave
the view in that state due to 1).

Possible solutions:

* TermView::_VisibleTextBufferChanged(): Call state hook only when attached
to window. All other occurrences are safe as they are in BView hooks.

* Leave the hyper link state when the view is detached from the window. A
new dummy state could be active as long as the view is not attached, though
using DefaultState would be harmless as well.

EOF

I chose solution 2 using DefaultState rather than creating a new dummy state.

Thanks Ingo.

Fixes #10902


# 66bce8233aa664cfb6ac31fb234a0cf4950e585e 16-May-2014 Adrien Destugues <pulkomandy@pulkomandy.tk>

CID 1210936: use after free.


# be3f404ca1068e9d0ae262ed4ab4fab2fa91b103 13-Feb-2014 Jonathan Schleifer <js@webkeks.org>

Terminal: Add option to use bright instead of bold text

A saturated add was chosen instead of tint_color, as the results of
tint_color were too extreme.


# 82055c267baf1d5e592f833d04755c4e896b3940 02-Sep-2013 Siarzhuk Zharski <zharik@gmx.li>

Terminal:send resize notify on attaching window to view

During adding the second tab the view in the first one may change its
lines count in case the Terminal window was maximized. Send resize
notification to client rpogram on every reattaching view to window.

Fixes #9809


# 8a8a325a1e68b83f1eb4960cc9842778554c83bd 19-May-2013 Ingo Weinhold <ingo_weinhold@gmx.de>

Terminal: work-around missing/out-of-order modifiers events

... more aggressively than before:
* Only use modifiers().
* Before forwarding any relevant event to the active state, first check
whether the modifiers have changed.

While the issues should really be fixed where they originate (app
server?), this hopefully fixes all situations where the hyperlink mode
gets stuck.


# 7de99f83417fa30af420669e56f8cdb5342c3e61 10-May-2013 Rene Gollent <anevilyak@gmail.com>

Fix Terminal build.


# e9bad28aafc6b71378bb71139cde6269bbb0afa7 10-May-2013 Ingo Weinhold <ingo_weinhold@gmx.de>

Terminal: Add a hyperlink mode

When holding down Command, text under the mouse is checked whether it
looks like a URL or a local path. If so, it is highlighted and can be
clicked, which will open the URL/file. Right-clicking opens a context
menu with items for opening the link/file or copying it to the
clipboard. When additionally holding down Shift, path prefixes up to
the component under the mouse will be considered (no effect for URLs).

Changes:
* Add HyperLink class. Encapsulates a type, the address, and an
optional base address. Features an Open() method to open the address.
* Move/add some string constants to TermConst.
* Move TermView::CharClassifier to top level and rename to
DefaultCharClassifier.
* Introduce TermViewHighlight and TermViewHighlighter. The former
refers to a range of text in a TermView's text buffer. It also
contains a pointer to a TermViewHighlighter object, which specifies
how the text range shall be rendered (colors and attributes).
* TermView:
- Add respective _{Add,Remove}Highlight() methods and adjust the code
to support highlights.
- Make the selection a TermViewHighlight. At least its visual aspect
is now handled like other highlights.
- Introduce an inner TextBufferSyncLocker. It is used instead of
BAutolock when locking the text buffer to synchronize the visual
buffer with it. After it unlocks it calls
_VisibleTextBufferChanged(), if the visual text buffer has changed,
which in turn calls a new callback on the active state.
- Add WindowActivated() and ModifiersChanged() callbacks to the state
interface.
- Add new states HyperLinkState and HyperLinkMenuState which
implement the new feature.

Fix modifier issues


# bda35ef5dc71c1c4a4e831233f937bcb130bd284 09-May-2013 Ingo Weinhold <ingo_weinhold@gmx.de>

Terminal: Pull user input handling into state classes


# 3d1492487d880a3518397a6326bc7fe26228ccf6 03-Apr-2013 Siarzhuk Zharski <zharik@gmx.li>

Fix support of East Asian Full Width characters

* Re-enable full-width characters detection and display;
* Fix cursor drawing on full-width characters;
* Fix debug dump for multi-byte characters;
* Fix file permissions for debug capture log.

Fixes #6717. Also may improve behaviour related to #6227.


# 19bfeaa78642fedb092eeaea7bab826753f39bd5 24-Mar-2013 Siarzhuk Zharski <zharik@gmx.li>

Support %e (cur.encoding) for Terminal titles

Optional parameter %e to indicate current tab view encoding in the
window title. It is not shown in case tab view encoding is default
UTF-8. Inspired by Sergei Reznikov. Thanks.


# c7047b8fd2b48529091fccb925469a2432e65054 17-Mar-2013 Siarzhuk Zharski <zharik@gmx.li>

Improve handling of mbyte chars in UTF8Char::IsSpace

* Switch UTF8Char's IsSpace, IsAlNum, ToLower functions to use
system-wide BUnicodeChar service routines;
* Switch TermView::CharClassifier to use UTF8Char instead of
raw char* string ponter. That reduces count of conversions
and simplify code;

Fixes #7423.


# c2577509f9bd2634edf03a90be99c45fd2fea76c 16-Mar-2013 Siarzhuk Zharski <zharik@gmx.li>

Optimize SIGWINCH Shell notification

Fixes issue with missed SIGWINCH shell notification in case the
Terminal frame was resized by using any of "Settings"->"Window size"
menu items.

Fixes #9293 - original problem was pointed out by Ziusudra. Thank you!


# 41130d1c524259bf5600cbd84c41af0e8cd8285c 16-Dec-2012 Ziusudra <ziusudra@gmail.com>

Terminal: Fixed small code duplication

SetTermSize(BRect) already contains all the code calling SetTermSize(int, int).
Partially fixes #9293.


# 5b41331f1100c78541d87b7ad5a15d5652acb079 09-Mar-2013 Siarzhuk Zharski <zharik@gmx.li>

CodeStyle fixes, some refactoring and cleanup

* Clear some codestyle issues catched by checker script;
* Rename RestartDebugCapture to more consistent StartStopDebugCapture;
* Updated Copyrights and authors lists, some occurences of the raw MIT
licence text replaced with "under the terms of MIT licence" reference;
* Fixes for x86_64 build.

This is cumulative cleanup commit for series of Terminal refactoring
changes I have introduced last time. No significant functional changes.


# fe256869783dc1598ee2d7d0c0b582e70724dc96 08-Mar-2013 Siarzhuk Zharski <zharik@gmx.li>

Move colors table from TermView to TerminalBuffer

* ColorsTable moved to TerminalBuffer to let easy lookup of table
during parsing of control sequences;
* Default Palette initialized from now in TermApp and preserved
from modifying by applications;


# bbfd23abd5e9cddd8498376d21ac53a96d5c4cb7 09-Jan-2013 Siarzhuk Zharski <zharik@gmx.li>

Use native bold style drawing (+ switchable emulation)

Use native bold font for rendering characters with corresponding
attribute set. Possibility for switching to R5-like bold characters
emulation is also implemented. This one uses uses the left-down shadow
in B_OP_BLEND drawing mode instead of the rigth-down one as previously.


# 6d30b376e908fe678fc35c79d58314367f3d44fe 05-Mar-2013 Siarzhuk Zharski <zharik@gmx.li>

Support for underline and ibeam terminal cursor styles

* Add support for underline and i-beam cursor shapes. No corresponding
UI configuration in preferences view ATM because preferences are waiting
for refactoring and we need some eggs for this Easters. ;-)
* Add handling of VT520/xterm specific DECSCUSR control sequences
allowing applications to modify the style and blinking state of the
cursor. May be utilized, for example, by console version of vim;
* Implement cursor blinking/hiding on DECSET/DECRST commands.


# b512213be6f7cf9660c07e24a81b7597c8776116 31-Jan-2013 Siarzhuk Zharski <zharik@gmx.li>

Support Background Color Erase, switch to xterm-256color

* Lot of fixes to add support of BCE (background color erase). Shell
is switched to emulate xterm-256colors terminal, that is modern and
declare the colors capabilities of our Terminal more precisely;
* Move current character attributes fAttr from TermView to
BasicTerminalBuffer. This reduces count of function parameters on call
various InsertXXX routines;
* In alternative screen buffer mode the whole cells "matrix" of the
screen buffers is taken into account during drawing background of the
cells in the view. In normal mode the "attributes" field of the
TerminalLine is used to detect color of the area after the last
character - there should be no changes with previous behaviour;
* Fix attributes on kSpaceChar-padding short lines. Current _line_
attributes should be used instead of current _global_ attributes;
* Fixed pads and gaps attributes, more accurate handling of ESC[K and K°;
* _Invalidate strings just erased. Fix EraseChars DCH processing;
* Fixes for ESC[J erase lines control sequences;
* Added handling SGR 90-97, 100-107 codes;
* Clean the newly allocated TerminalLine lines;
* More precise cursor background [off-]color estimation at ends of
lines. The current line attributes should be used instead of
hard-coding it to fTextBackground;
* Fixed background color erase in normal screen buffer modes. Wrong
line indexes calculation messed the drawing results or just returned
0 [default] line attributes;
* Some more BCE support: TerminalLine::Clear() now honors current
character attributes;
* Fixes #6143, #6510 and #6424.


# 718a28ceadb872b766b13cb3743c575fe416e501 30-Jan-2013 Siarzhuk Zharski <zharik@gmx.li>

Add Debug snapshots and capture of Terminal data flow

Two helper functions introduced: "make debug snapshots" triggered by
Ctrl-Cmd-S shortcut and "capture data flow" triggered by Ctrl-Cmd-C
shortcut. The first one makes debug dump of current data both in visual
and in text buffer, including history lines if they available. The second
one mirrors all characters and control sequences that are flowing
through the Parser. Both dump and capture files are saved under /var/log
folder. That functionality available only if the USE_DEBUG_SNAPSHOTS switch is
defined.


# 238b435a8ebf260ac014d6047a3a27a5d1c464ae 28-Jan-2013 Siarzhuk Zharski <zharik@gmx.li>

Fix empty background coloring right/below of text lines


# b9b805689e2387d8b97225af5ca8b76c5ac0c689 27-Jan-2013 Siarzhuk Zharski <zharik@gmx.li>

Revert hrev38316 fore-/background colors customization

This reverts hrev38316 in parts of foreground and background colors
handling. Mentioned revision has hardcoded colors to system ANSI color
entries 7 and 0 correspondently. It is very uncomfortable for the
console programs like Midnight Commander because they become
colors that were defined in the current Terminal scheme and doesn't
correspond to real ANSI color names. For example "ANSI black" can be
black, white, blue, gray or something else in dependency of the current
color scheme configuration. The same side-effect was obviously observed
for "ANSI white" and produced funny color combinations in software.


# 68ea9ce5bbed50e08bf08a151477bbb0e1ac1227 27-Jan-2013 Siarzhuk Zharski <zharik@gmx.li>

OSC and color management improoved

* Global kTermColorTable replaced with it's private copy for every
TermView instance. This allows to modify colors table for every view
separately;
* Set of ANSI normal/bright color entries added into preferences;
* Default color table generated dynamicaly using ANSI colors
preferences. 6x6x6 color cubes and grayscale ramp are generated in
xterm colors model;
* Improoved support of Operating System Command control sequences;
* Support for X11 rgb.txt compatible color names. Corresponding entries
are stored in hashed form in application resource and loaded only on
demand.


# 02f3baa09d11547e1be4a950d279dd55371a3fcc 26-Jan-2013 Siarzhuk Zharski <zharik@gmx.li>

Cleanup:Remove unused pref entries and fix typo

* PREF_SHELL is not used anymore, corresponding entry in /etc/passwd
should be used instead;
* PREF_GUI_LANGUAGE is not actual anymore - we have system-wide
UI localization support;
* Fix typo in the name of MSG_SET_TERMNAL_TITLE constant.


# f9443b14d5faa43f98a0a7a5cc85994599bc11a3 26-Jan-2013 Siarzhuk Zharski <zharik@gmx.li>

Reverting hrev45143:bold characters visual regression

Terminal is GUI application and there are no need to emulate bold
in some kind of color adjustments, especially in case the proposed
emulation look is too far away from results observed on similar software
like xterm, Konsole and XFCE Terminal.


# 2b67e9a3a72acffbd4636d0825e7948c738716fb 09-Jan-2013 Adrien Destugues <pulkomandy@gmail.com>

Merge changes from Fonzoterm :
- Report the terminal as xterm-color instead of just xterm, since we handle that fine.
- Tweak the SGR handler a bit to use bright rather than bold in some cases
- Change the color palette so the result is still readable (white on white doesn't work so well) with the default colorscheme.


# dc1456f662de373745f3623c83dc7a6b239e0e1a 07-Dec-2012 John Scipione <jscipione@gmail.com>

Add font sizes to Font Size menu in addition to in settings


# cfd9c96db5b111667bc085b854aebcdd346c8f37 04-Dec-2012 John Scipione <jscipione@gmail.com>

Style fix: compare to 0 in strcmp() explicitly.


# a0e690928b4f96178b9da9432656abdfc30e7e79 05-Nov-2012 Jonathan Schleifer <js@webkeks.org>

Terminal: Fix cursor blinking.

Signed-off-by: Adrien Destugues - PulkoMandy <pulkomandy@pulkomandy.tk>


# 122905281dd29a0ee9ef35dd280a33aab21e6c3d 05-Nov-2012 Jonathan Schleifer <js@webkeks.org>

Terminal: Make the cursor color configurable.

Signed-off-by: Adrien Destugues - PulkoMandy <pulkomandy@pulkomandy.tk>


# 4e3d346e9177b9a6ad3d84c28a39c08898e0a6ec 04-Nov-2012 Jonathan Schleifer <js@webkeks.org>

Terminal: Make cursor blinking an option.

Signed-off-by: Rene Gollent <anevilyak@gmail.com>


# adf8818ec004e8a20614523f3e893303ea318642 05-Aug-2012 Alex Smith <alex@alex-smith.me.uk>

Compilation fixes for Terminal, add to image.

It runs, but has shown up various bugs: app_server crashes, kernel
panics, rendering problems. Working on fixing these now.


# 546208a53940a26c6379c48a7854ade1a8250fc5 16-Apr-2012 Oliver Tappe <zooey@hirschkaefer.de>

More catalog-related cleanup.

* rename B_TRANSLATE_CONTEXT to B_TRANSLATION_CONTEXT and
B_TRANSLATE_WITH_CONTEXT to B_TRANSLATE_CONTEXT, squashing a TODO
* adjust all uses of both macros in Haiku's source tree
* use correct header guard for collecting/Catalog.h

The renamed macros require adjustments to all external applications
using catalogs.


# a2f89c5843433b8d93a96fc2cfc98c29ddc628f8 02-Feb-2012 Siarzhuk Zharski <zharik@gmx.li>

[Coverity] Fixed some uninit fields and return values checks

* Fixed CID2398, CID9945, CID9943, CID4215


# f54fc2dcfe12bc71e9ac1446f2eb529bc7c5d3c7 02-Jan-2012 Philippe Saint-Pierre <stpere@gmail.com>

Terminal: NULL dereference fix

An inversion in a condition could lead to a NULL dereference.

CID 11039.


# f37821851ef7dc4da35cd040329f11ca8cdd9826 13-Nov-2011 Siarzhuk Zharski <zharik@gmx.li>

Refactoring of 8-bit encodings support.
* Fixed issue introduced in hrev38139: restoring from the line
drawing table was hard-coded to UTF8 Ground table. That is wrong:
the table for currently configured encoding must be set back.
Please look on using of _GuessGroundTable() for details;

* Fixed issue introduced in hrev34894: the semantic of convert_xx_utf8
functions requires the destination length to be set equal to the
target buffer size. Pre-hrev34894 usage of "homebrew" conversion
functions was a bit different - destination length was set to 0.
This made any converstions of input data useless and produce no
visual results;

* Private list of supported encodings (Encoding.cpp) was replaced by
using BPrivate::BCharacterSetRoster functionality. That allows to
use centralized info about encodings in unified with other
applications (Mail & StyledEdit for example) way. Most of currently
enumerated in UTF8.h encodings now available in Terminal.
Note that UCS-2 and UTF-16 are temporary (???) excluded from the
list of encodings supported by Terminal.

* The B_UTF16_CONVERSION was added in system-wide UTF8.h declarations.
This character set is available for enumerating by BCharacterSetRoster
but not listed in public API. Looks like it was just missed;

* Special note about "Text Encoding" entry in Preference File:
So known "shortname" of encoding was used in the preferences file.
For details look on the encodings list in previous version of
Encoding.cpp. As result of migrating to BCharacterSet-provided
resources this list was deleted and is not available anymore.
Instead of it the IANA name of the character encoding targeted
to be used for this purposes. Frankly speaking this part looks
like not working at the moment. The value of text encoding is
hardcoded to "UTF-8" now and is not affected by any operations
in Terminal menu. Note that "shortname" for default encoding
was "UTF8" but the saved value is "UTF-8" - and they are looking
not dependent at all. So this change should not introduce any
kind of backward incompatibility.


# fdd2b7ebb1697c86a1adaac3ac9eecc661d0509b 27-Mar-2011 Jonas Sundström <jonas@kirilla.com>

Removal of the About window.

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


# 0961433d2a75a252e3caa8f63a0be7ac488b0c96 06-Mar-2011 Jérôme Duval <korli@users.berlios.de>

Patch from diver (bug #7329) with cleanup by myself: remove excessive localization


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


# 150b717e5b6dfba87efccf1ba6843114fc6d9ea6 30-Nov-2010 Adrien Destugues <pulkomandy@pulkomandy.ath.cx>

Fix crash in terminal : GetLinecolor was accessing lines with negative offsets.


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


# 627ced128beeae81540c683861547413a7664d67 28-Nov-2010 Adrien Destugues <pulkomandy@pulkomandy.ath.cx>

Use a better way to store the attributes for end of line. This should also fix some other bugs, as there were occasionalaccess to out-of-range chars.


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


# c059c8c5d0a03c4177a140497434523984906870 23-Nov-2010 Ingo Weinhold <ingo_weinhold@gmx.de>

MessageReceived(): Override B_MOUSE_WHEEL_CHANGED when in alternative screen
mode and send the key/page up/down escape sequences instead of trying to
scroll. Makes mouse wheel scrolling in less, nano,... working. Closes #6460.


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


# ca598670fb927e196eb2a5ab90fa03bfb5dac0a2 22-Nov-2010 Ingo Weinhold <ingo_weinhold@gmx.de>

* Removed the shell process ID from ActiveProcessInfo and moved it to new class
ShellInfo, which also contains a flag whether the shell is the default shell.
* If the Terminal has been started with a custom shell, also replace "%p" in
the title by its name, when active.
* Also show the on-close alert for the custom shell.

Fixes #6844.


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


# dd2cdb3a7503566acd71e229723c1960732265a7 21-Nov-2010 Ingo Weinhold <ingo_weinhold@gmx.de>

Set B_ESCAPE as shortcut for all BAlerts. Fixes #6850 and #6858.


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


# 38d5ce6271ca1648326ffa64cf38bb461e76242e 18-Nov-2010 Ingo Weinhold <ingo_weinhold@gmx.de>

* Removed "move" parameter from the
TermView::Listener::{Previous,Next}TermView() methods. All B_COMMAND_KEY
combos are intercepted by the window, so we never get them in the view.
* Added window shortcut Command-Shift-Left/Right to move the tabs.


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


# 92b0038ec03c6184daa8588f01c7684aef0b002b 18-Nov-2010 Ingo Weinhold <ingo_weinhold@gmx.de>

Added a listener interface to TermView. This allowed to get rid of
CustomTermView and of the messaging from view to window. It also simplified
things in TermWindow.


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


# 37322c4b52e4d9922fb1c7289a3f0d129ab1841b 16-Nov-2010 Ingo Weinhold <ingo_weinhold@gmx.de>

* Added new class ShellParameters that bundles all parameters passed to the
shell.
* Also added a parameter for the current working directory and. If supplied,
it is applied in Shell::_Spawn().
* Pass the current working directory of the active tab when opening a new
tab. Implements part of #6712.


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


# 6a009eb6572e4786f30ef36f73b8995d2b088616 16-Nov-2010 Ingo Weinhold <ingo_weinhold@gmx.de>

Removed impossible TODO: We can't set a environment variable of another
program (after it has been started). What is TTYPE anyway? Google didn't turn
anything up and there are the POSIX locale environment variables anyway.


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


# b27862d236b20483e88aa24aa8e2d8fed2e00907 16-Nov-2010 Ingo Weinhold <ingo_weinhold@gmx.de>

Reverted r39451. Instead introduced new class ActiveProcessInfo and added
method GetActiveProcessInfo() to Shell and TermView to get such an info for
the current foreground process group leader. Currently the info only contains
the ID, name, and current directory of the process.


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


# 5a76a2c142ef0d79e2fb944a76a213921992a035 16-Nov-2010 Ingo Weinhold <ingo_weinhold@gmx.de>

Added ActiveProcessGroup() getter to Shell and TermView.


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


# ffad85060af9d695c5eb0468c91b8a438d42d638 28-Oct-2010 Adrien Destugues <pulkomandy@pulkomandy.ath.cx>

* Remove the setting for a fixed cursor color. Instead, the cursor now inverts the colors of the char below it.
* This allows getting a cursor well visible both on black and white backgrouds.


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


# c8224731d29509fa7a6e93fa60f1531efbe2067f 23-Oct-2010 Axel Dörfler <axeld@pinc-software.de>

* Minor cleanup.


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


# 54ce349f97faa587ca51419ccf4f7471bc0c0425 22-Sep-2010 Philippe Houdoin <philippe.houdoin@gmail.com>

Fix visual artifact !#1 described in #6530.


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


# 9b46a2b25d3026bd60dd4011ee6244b7e591a9e5 29-Aug-2010 Adrien Destugues <pulkomandy@pulkomandy.ath.cx>

Fix more drawing problems in terminal, and remove an useless variable.


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


# 64286654bc9cc6f2b156fbf26bca81cc39a8c1ea 27-Aug-2010 Adrien Destugues <pulkomandy@pulkomandy.ath.cx>

This fixes redrawing bugs related to the selection in terminal (#6426). It should also avoid some other bugs related to
drawing whitespace at the start of a line but the behaviour is not perfect yet.


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


# 9ad52ae4cc98566d054072d6a7942784d8f354d3 23-Aug-2010 Adrien Destugues <pulkomandy@pulkomandy.ath.cx>

When inserting tabs or other whitespace, propagate the attributes of the previous characters.
This allows mc to render properly.


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


# a84802e488d13e357b6f80834eda78d2fe7506e9 22-Aug-2010 Adrien Destugues <pulkomandy@pulkomandy.ath.cx>

Re-add a part of the code I shouldn't have removed : this ensures the partial line that may be at the bottom of the screen
if the size of the window is not a multiple of the text font size is cleared.


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


# c198735b15360cf46aa6d2837f4bb3b4686139d0 23-Aug-2010 Adrien Destugues <pulkomandy@pulkomandy.ath.cx>

Change the way fore and back-color are handled by terminal. They are now color 0 and 7 in the color table, instead of entirely separate colors. This makes more sense and allows the colors to stay even in apps using other colors.
Also make the color attribute propagate to the end of a line. This fixes part of #6143 and allows to use vim with a multicolor syntax highlighting without too much trouble.


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


# 59c2d19e1ee873dc7fe01025a92b8bd9d2a7b0b7 16-Aug-2010 Adrien Destugues <pulkomandy@pulkomandy.ath.cx>

* Rewrite the parsing of xterm extension so that it doesn't touch ANSI standard things
* Some adjustements to the color table to have less duplicate colors


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


# dbf7fa8716ae5069063294c00473f450ec65110b 13-Aug-2010 Adrien Destugues <pulkomandy@pulkomandy.ath.cx>

256 colors support in terminal (compatible with xterm)


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


# 6100b6aa33a6eaad0d5324a7da8718a8d5f5d1f7 13-Aug-2010 Adrien Destugues <pulkomandy@pulkomandy.ath.cx>

Enlarge attributes to 32 bit instead of 16. This prepares 256-color support for terminal.


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


# d9fdb4f6cdba4e444b19404e3d4dfe1c86b2f575 20-Jul-2010 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Added Shell::HasActiveProcesses() and TermView::IsShellBusy() (which calls
the former) to tell if some process launched from the terminal is still
running. Some style fix in Shell.h, made a parameter const.
Added basic TermWindow::QuitRequested()


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


# 70af7b97a550327b3eb67b5cfa32aecf1b10f6cc 19-May-2010 Stephan Aßmus <superstippi@gmx.de>

Patch by romain: Fix one particular problem where the terminal buffer area could
go out of sync when switching between tabs. Closes #5969, thanks a lot!


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


# 4eb0cbb044cf538f18c0d252934a5bcaa33bfd34 07-May-2010 Matt Madia <mattmadia@gmail.com>

Updated TR_CONTEXT to be B_TRANSLATE_CONTEXT, relating to #5408.


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


# 6c514d3e3bfc9c33f9f4a2edd0b593d734046c8f 06-May-2010 Matt Madia <mattmadia@gmail.com>

Updated to use B_TRANSLATE* macros. relates to #5408.

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


# 8989d8a52e0ca6b551f2a57b51a7f1c77726144b 06-May-2010 Stephan Aßmus <superstippi@gmx.de>

Patch by Jorma Karvonen: Localization of the Terminal application. Thanks a lot.
Closes ticket #5850.


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


# de699cf2f1e9773f8bd21d62747b30b16a0696d0 23-Feb-2010 Ingo Weinhold <ingo_weinhold@gmx.de>

TermView::Draw(): Fixed off-by-one errors in the checks for the left/bottom
background area.


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


# f6cace5aa2ac6d1c4579b59c8e227f937f785800 23-Feb-2010 Ingo Weinhold <ingo_weinhold@gmx.de>

TermView::Draw():
* Apparently Draw() can be invoked with new view bounds in effect before the
FrameResized() hook has been invoked (I suppose that's not really kosher).
Since TermView updates the terminal dimensions in FrameResized() and relied
on the update rect passed to Draw() to translate to positions within the
limits, an on-stack buffer could overflow, leading to #2851. Now we clamp
the translated positions to terminal size.
* Draw the background areas right of the last column and below the last row
explicitly instead of drawing an additional non-existing partial
character/row.


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


# a387e84423925c2d9ad5270f6ce2d2d4a0e98c05 25-Jan-2010 Michael Lotz <mmlr@mlotz.ch>

Also accept B_MIME_DATA dropped messages. Allows the Terminal to be used with
Keymap as an on-screen keyboard by dropping the sample clipboard content and the
actual keys onto it (including control ones).


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


# 96d719ae7484bd06aa4d5969023eb196dda3357c 25-Jan-2010 Michael Lotz <mmlr@mlotz.ch>

Automatic whitespace cleanup, no functional change.


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


# 7974d3dcf39ce78e5885b481eee12e561ad6e096 13-Jan-2010 Stephan Aßmus <superstippi@gmx.de>

Patch by Humdinger:
Updated Haiku apps to use sentence-case. What a huge undertaking...
The files where I had to apply the patch manually (for mysterious
reasons) have also gotten a whitespace cleanup. I've proof-read
everything so hopefully there should be no problems.

This should be the final part of #5169.


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


# 74d2e1599a2dffe4be4f58d199c413947d241b89 04-Jan-2010 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Invoke the shell using /bin/bash instead of /bin/sh.
Use convert_to/from_utf8() directly instead of the homebrewn proxy methods.
Removed CodeConv from the repository.
Remove UTF8WidthTbl.c from the repository, since it's not used anymore.



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


# 5f4632cf32928cfcd233913df3cf5f79b3dfb30a 30-Dec-2009 Stefano Ceccherini <stefano.ceccherini@gmail.com>

I decided to trust (and mimic) Tracker and added a check in
TermView::MessageReceived for B_SIMPLE_DATA, so that a drop with the
right mouse button is handled correctly. Fixes ticket #5172.


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


# 5674af6f769eec2f47b26b7bfd428ff4d3f4cbf8 20-Dec-2009 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Initializing the pointers to NULL is always a good idea. Fixes bug #5159.


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


# 8c6aa65eb6a967af6ade9abeee7c961ff84005c7 19-Dec-2009 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Implemented input method handling. Unfortunately, due to bug #4926, it's
completely unusable (it's disabled currently anyway).
Shell::AttachBuffer() returns a status_t now (instead of void), so the caller
can do something in case it fails.
Simplified some methods, removed unused stuff.


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


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

TermView constructor throws an exception if initializing the object failed.
TermWindow catches the exception, and quits the application in that case.
Fixed weird wrapping of the text in the about window.


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


# bc78ca9385aeee697bd87575f8af64372482dd64 30-Nov-2009 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Removed unused input method variables. Input method handling will
be implemented someday, but probably differently anyway.


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


# b79c499571a5116074f1ee887d2b685eb7e11e20 27-Nov-2009 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Reverted the preference saving part of r34165 (at least for now).
Moved the AboutRequested code to a static TermView method, called from
everywhere (now TermApp knows about TermView, but no one is perfect).
Reordered and removed includes.


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


# b5504a512c93771a1f666fc6d0d190943c5f97c8 24-Nov-2009 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Moved includes from the header to the implementation


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


# abc3e030074c6de83000c10d2d4c02f359873006 22-Nov-2009 Stefano Ceccherini <stefano.ceccherini@gmail.com>

TermView can also work as a child of a BScrollView


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


# 3e7194892b5a1d6c520a989fc9e4972050072be1 22-Nov-2009 Stefano Ceccherini <stefano.ceccherini@gmail.com>

-Don't set fRows and fColums before calling SetTermSize().
-Removed unneeded SetTermSize() calls.



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


# 07da5d7cce4cf0717d7530b3b8d23dbb5daa69fe 21-Nov-2009 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Fixed TermView when used with the constructor which accepts a BRect:
In that case TermView computes rows and columns based on the frame size.
This also made simpler to attach a TermView to a given BWindow, like done
in the RepliTerminal test app. Changed Repliterminal accordingly.
Removed the bool parameter from SetTermSize(), and added a SetTermSize which
accept a BRect, as well.


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


# a2ba3d656212da5e985caf215b1a4513a016ad1e 21-Nov-2009 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Removed dependency to the global gMouseClipboard from TermView. Now there's
a SetMouseClipboard() method to set one (defaults to be_clipboard, maybe
it's not a good idea and should default to NULL instead).


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


# 17ecdb5b2f88c22bb3271cdd77dc5c42a462c483 20-Nov-2009 Stefano Ceccherini <stefano.ceccherini@gmail.com>

TermView doesn't know about PrefHandler anymore (again), so that, in case
it's used as replicant (but I think it won't work anymore, yet),
it doesn't influence the global settings.
TermWindow saves the preferences on quit, if the PrefWindow was never
instantiated. This allows the window size to be saved also when it's
resized manually (not via menu).


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


# 61646809a3b5f7119937aedaba55b8c3f77fdfd9 15-Nov-2009 Stefano Ceccherini <stefano.ceccherini@gmail.com>

The cursor didn't start blinking, unless the window was activated (by clicking outside and then inside the window).
Copied the BTextView mechanism: Activate and Deactivate the view on MakeFocus
and WindowActivated.


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


# 7cd672ff5026583caf5ab445eb4b49e8620f01c7 14-Aug-2009 Ingo Weinhold <ingo_weinhold@gmx.de>

Fixed some gcc 4 warnings.


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


# 5561b695a1a633be25af18a3f1afd9035c121e90 08-May-2009 Axel Dörfler <axeld@pinc-software.de>

* Fixed a typo that prevented the right context menu copy action to work
on directories. See ticket #3575.


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


# 11efbf01602654bfa8fb29b0681e90c2bb21f8c2 24-Apr-2009 Axel Dörfler <axeld@pinc-software.de>

* Applied patch by Olivier to implement more mouse reporting modes, and thus
fixing bug #2854. Thanks!


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


# 21543141ddb5ffd4a6f8e11254ca9015fef36a05 19-Apr-2009 Axel Dörfler <axeld@pinc-software.de>

* Applied slightly changed patch by Olivier that adds basic xterm style mouse
support, thanks!
* This probably closes bug #2854, confirmation pending.


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


# b936fc6770af22734362f39cdaa7c22b05925c65 07-Apr-2009 Stephan Aßmus <superstippi@gmx.de>

* Watch the system clipboard for changes.
* On the event of a clipboard change, check if the clipboard contains text
now and replace the contents of the internal "mouse clipboard". So when
right/middle clicking into the Terminal, the current system clipboard contents
are inserted. As soon as the user selects text in the Terminal again, that
text will have priority over the system clipboard, as before.

Fixes ticket #3700.


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


# dd6ab6242c3de1724967262b279c26e890ed2abb 05-Apr-2009 Rene Gollent <anevilyak@gmail.com>

gcc4 build fix.



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


# 3b5c46634dd9d7ce056bfaf358ecbf736effad36 05-Apr-2009 Jonas Sundström <jonas@kirilla.com>

Suppress ResizeView (the grey rows & columns view) when entering/leaving fullscreen mode, and when zooming. Its useful only when manually resizing the window. In the other cases it simply flickers by.

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


# 7aed1511f61ffb1e3c418dbbf797d6b2cf490910 14-Mar-2009 Axel Dörfler <axeld@pinc-software.de>

* The window size is no longer directly saved when you change it in the menu.
* "Save as Default" now also saves the current Terminal size.
* Exchanged the strange default Termina sizes with some others, added a
separator between the full screen setting.
* Removed the "Term" prefix from TermView::fTerm{Columns|Rows}.
* Whitespace cleanup.


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


# 4012c75a866fa77d21c6556b75417811d883be60 21-Feb-2009 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Remove TermView dependency from Shell. It now depends on TerminalBuffer instead.

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


# f498be9297862dda8330e3dae2b730afba2570cd 03-Feb-2009 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Applied patch by h.z. (slightly modified by myself) included in bug #2715. I tested it briefly with Konatu Tohaba font and it seems to work correctly. Please review.

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


# 5ade2c5acd4c27e7b0496f49c75a6ec49ad63c17 24-Jan-2009 Stephan Aßmus <superstippi@gmx.de>

Fixed coding style issues pointed out by Jerome.


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


# cee9364ac546bf48aa160a7afe3752da92483b02 25-Jan-2009 Stephan Aßmus <superstippi@gmx.de>

Applied patch by Clemens Zeidler which gives the Terminal a nice context
menu with additional options when dropping files from Tracker into the
Terminal. Thanks a lot, Clemens!


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


# ee9b4396bf5e92da1374b81bcc73d015c538ca40 19-Jan-2009 Stefano Ceccherini <stefano.ceccherini@gmail.com>

fCheckMouseTracking was never initialized to false, causing spurious selections when opening a new tab. Fixes bug #2910

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


# 08a6ab444bfb2c09e42517f899158f57a64b3200 15-Oct-2008 Axel Dörfler <axeld@pinc-software.de>

* Added a _MouseDistanceSinceLastClick() that returns the square of the pixel
distance of the last click and the point passed in.
* Use this one to delay starting of character wide selections.
* Also, treat double/triple clicks as single clicks if the mouse moved too far.


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


# 302809b46f27b3ab856a0472683cf764fca29ca9 14-Oct-2008 Axel Dörfler <axeld@pinc-software.de>

* Moved duplicated initializers to the _InitObject() method.
* Cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28127 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


# c2f7e34f8d7fd26dae5fdf60ebf6a62e8048c028 15-Oct-2008 Axel Dörfler <axeld@pinc-software.de>

* When resizing the Terminal, we now show a small BStringView that displays the
current size of the Terminal in characters.
* Minor cleanup.


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


# 5b1d60c80e798811b126ce57257d9fd04a7ea7dc 21-Jul-2008 Ingo Weinhold <ingo_weinhold@gmx.de>

r26509 broke char codes (e.g. Ctrl-K and Ctrl-D) matching one of the
checked B_* char codes. Fixes bug #2533.


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


# 552580cd286ca2c227145eb17878b0a80271fcf7 19-Jul-2008 Ingo Weinhold <ingo_weinhold@gmx.de>

* TermView::KeyDown(): We were writing to the TTY even when the user
pressed a shortcut that should result in a terminal action
(e.g. Shift-Left/Right -- Shift-Left generated a Ctrl-\).
* Removed spaces at the end of lines.


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


# fca1417369d0fde1af7a7ec9c2438e987c4050ec 11-Jul-2008 Ingo Weinhold <ingo_weinhold@gmx.de>

Fixed small selection problems:
* When selecting character-wise backwards the initially selected char
was deselected.
* When first extending a selection and then moving the mouse back into
the initial selection region (char, word, or line), the previously
selected additional char/word/line would not be deselected (only when
moving the mouse in the other direction out of the initial selection).


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


# 975d43b4332df6c99c36cf602cfa7c02db8e64d4 11-Jul-2008 Ingo Weinhold <ingo_weinhold@gmx.de>

Incorrect selection line end enforcement -- the selection end is
exclusive. Fixes bug #2516.


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


# bd434c17abf99d9120a57da9ce6ee0030de10fc5 26-Jun-2008 Ingo Weinhold <ingo_weinhold@gmx.de>

When CTRL-H is pressed send the CTRL-H char not the backspace char.


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


# 2fd41f637c69fc34fb14ad313b75bf5c3afa18c0 19-Jun-2008 Ingo Weinhold <ingo_weinhold@gmx.de>

Also scroll to the cursor when pasting something.


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


# a5e61a10eb0f4c1fbd2ffb4b509cf5eb8522cc8f 19-Jun-2008 Ingo Weinhold <ingo_weinhold@gmx.de>

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


# 769b9b3c405c28a4e432373afa4b06c2d32b9389 19-Jun-2008 Ingo Weinhold <ingo_weinhold@gmx.de>

* 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


# f9428b3ecd17576df7597b87e0ac96b83243549f 19-Jun-2008 Ingo Weinhold <ingo_weinhold@gmx.de>

Also clear the selection when invalidating all.


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


# f3c7795744dc95a4875ebf00f50e9c3882d6d931 19-Jun-2008 Ingo Weinhold <ingo_weinhold@gmx.de>

Also update the cursor on full invalidation.


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


# a71fd7987b6eda68698e0b342afcd7890d2f4d86 19-Jun-2008 Ingo Weinhold <ingo_weinhold@gmx.de>

* 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


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

* 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


# 0dd40534ebf04da76712f7d405aec3f21bbacce3 16-Jun-2008 Ingo Weinhold <ingo_weinhold@gmx.de>

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


# 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


# 5fcf3f86e84c9c22913ad34af1782b24e5c791dc 15-Jun-2008 Ingo Weinhold <ingo_weinhold@gmx.de>

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


# 799a9a3449a0151626da9d454a892b5d34f17ff1 14-Jun-2008 Ingo Weinhold <ingo_weinhold@gmx.de>

* 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


# 4c9d4b02efb56c9444a83fb99e362681aa14c7c1 14-Jun-2008 Ingo Weinhold <ingo_weinhold@gmx.de>

* 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


# 0ee6c1ea216f2b06283adc82c7d0c4ec821a8199 10-Jun-2008 Ingo Weinhold <ingo_weinhold@gmx.de>

* 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


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

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


# 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


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

Removed work-around for now fixed bug #2355.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25882 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


# 976203c80a3dc3ac4adcbb570841152bd5ab48b8 11-May-2008 Stefano Ceccherini <stefano.ceccherini@gmail.com>

typo which broke the build


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


# 66b7ce851c82e95702dce45babdf21a21eb29106 11-May-2008 Stefano Ceccherini <stefano.ceccherini@gmail.com>

We shoulnd't mess with the pulse rate of the window, since if we are a
replicant, the window is not ours. Blinking the cursor is now done with
a BMessageRunner.
Removed the dragger for the time being, since Terminal as a replicant
has some issues.


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


# 901e5756cba6cbc992b71815892d9635d32a490b 10-May-2008 François Revol <revol@free.fr>

Indeed we don't need this signal hack for BeOS, we just need to tell it the pgid. That reduces the number of things to remove later ;)


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


# 156c7443359530266cca0871892653e278981c3d 09-May-2008 Ingo Weinhold <ingo_weinhold@gmx.de>

The terminal is not supposed to send signals to the shell. That's done
by the tty. Now I also understand the BeOS work-around to ignore SIGINT
in bash I removed recently.
I suppose the signal code is still needed for BeOS. If not please remove
it.


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


# eed037b63788902306b30bc698f95400762ca1f5 08-May-2008 François Revol <revol@free.fr>

- SetPosX/Y were wrong, but not yet used.
- implemented HPA/VPA (CV/CH) sequences (set absolute v and h position). It's optional but because the beterm termcap advertises it we must implement it. Also note beterm increments args unlike others. This fixes all obvious display issues with the rhapsody IRC client (a small ncurses client I ported).
- maybe we should switch the CASE_* to an enum ?


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


# 85b80c5229bcba6eb85362bb20c496b4f182de72 08-May-2008 François Revol <revol@free.fr>

- get rid of control chars in source files (ESC and CTRL-L)
- fix Home and End keys
- simplify code
- add different strings for Ctrl-arrows, allows to map them to previous/next-word (PuTTY and others have actually several codes depending on mods & ALT, mode & CTRL and even mods & CTRL|ALT, might be even better...).


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


# 6eea7aabb84a88571d953c45459065ddc73f0014 08-May-2008 François Revol <revol@free.fr>

Handle any dropped message. This makes dropping from Pe working for ex, as well as the BeOS BColorControl.
Color drop is currently disabled, for now it just pastes it as text if provided (#rrggbb form from BColorControl).


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


# fd59bc3703a74423181a477c0e6e7300adc1fc8f 07-May-2008 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Added a BDragger so that Terminal is replicanteable. Salvatore, hope you
like it :)


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


# df06c6d8c0a904feaf1db6f308ca59377ab91453 29-Mar-2008 Axel Dörfler <axeld@pinc-software.de>

Applied patch by PulkoMandy to have a 3 pixel wide border around the text
in the Terminal. Thanks!


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


# 2614ac772b83d57cefcaf3c24cd80068c68d4e97 07-Feb-2008 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Moved call to SetSteps() from SetTermSize() to FrameResized(), where it
makes more sense (and also completes the fix for bug #1759). Retrieve
the command from the message archive.



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


# 032f7656032833ff0279dcf4844871d13d23affa 07-Feb-2008 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Also set the scrollbar steps when the terminal size changes.
Moved SetFlags() from _InitObject() to unarchiving constructor as other
constructors already set the flags.


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


# 1d7596167d9d16fabbaf75e526219d145f539a27 07-Feb-2008 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Call BScrollBar::SetSteps() with the correct values also on font change,
and when a scrollbar is attached. Fixes bug #1759


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


# 4882883b6f2e3ba2c4834a87856de978208a0072 07-Feb-2008 Stefano Ceccherini <stefano.ceccherini@gmail.com>

AppearPrefView was mixing up flags and resizing mode. Fixed.
Also set the flag B_PULSE_NEEDED (for the blinking cursor) in TermView.


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


# e4f975d47a17df95beb73056534808d482bcab89 07-Feb-2008 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Set the low and view color on construction, and set the B_WILL_DRAW flag
too, since we can't do anything without it.


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


# 894a6c62173403c4b7c4e2e3228b0101f8f66fce 04-Feb-2008 Stefano Ceccherini <stefano.ceccherini@gmail.com>

The termview was resized 2 pixels less than needed.


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


# 56e415dda141250b366bc3d5edd71814960129dd 04-Feb-2008 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Opening the preferences window and hitting "cancel" would shrink the
window every time, without reason, since _Revert() was called even if no
changes were made.
Build the list of window sizes dynamically, this way we get rid of some
code duplication.
Removed implementation of TermWindow::QuitRequested(). The
B_QUIT_ON_WINDOW close takes care of quitting the application.
Some cleanups.



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


# 58cf7360ca244204ce36f51f6dca8b0e93afccf5 29-Jan-2008 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Added shortcuts to increase and decrease the font size. Since
these key combinations (ALT + +/-) can't be used on many keymaps, we
might want to change. Moved view resizing to a private window method.
Seems to work, more or less (ticket #1334)


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


# c4eae2c1fc5ea7f6cb86552efcb895eee38e8fad 21-Jan-2008 Stefano Ceccherini <stefano.ceccherini@gmail.com>

more renaming


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


# 2fa152e4f08d89b487f16ac6fb4e3a14aceac028 18-Jan-2008 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Renamed more methods, fixed a warning


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


# e97cd7f18bd05effc5cd2d7e2c3e022ae5fe7136 18-Jan-2008 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Renamed some methods so that it's clearer what they do.


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


# 1490792706c8e82f209b25f731d3a986561351ff 18-Jan-2008 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Cleaned up a bit the code. Use GetPreferredSize() instead of
SetTermSize() to get the size of the view.


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


# 0ccf70c87723756ec0393022ae8089eed1bc117a 18-Jan-2008 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Changing the font incremented the window size of 1 every time. Fixed.


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


# 7014c8a3790cfbd79887ef7092b6c89ad9e548bd 17-Jan-2008 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Removed support for "Full font", which wasn't used anyway. Since
our Terminal only works correctly with fixed width fonts, now the font
menu filters out variable width ones. For some reason, though, Konatu
Tohaba isn't recognized as fixed. Various other changes.


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


# 523f71ee2b39abfec8a91ead2a576de689b4c299 16-Jan-2008 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Creating a new tab in terminal would show an error message (but still
worked). Fixed. Also moved handling of default shell command from
TermView to Shell, where it belongs.


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


# f81851cbe3a9d6e285655aa3b1bdb62f3bc34f14 11-Jan-2008 Axel Dörfler <axeld@pinc-software.de>

* Made the colors of our Terminal a bit easier to look at, especially in
the ls output.
* Made the array the size it actually is.


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


# ee3f1027befc09eaf6f2674fc3a8920b62c0af11 04-Dec-2007 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Selecting text from right to left didn't work. I disabled the use of
ResizeSelection() because it didn't support this. Selecting text flicker
a lot now, it will be fixed later. Selection should be changed to work a
bit more like BTextView. This fixes bug #1638


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


# 9d12401dcf7cb9d599a7c44a7d179e237773f1ee 12-Oct-2007 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Check keys against "raw_char" instead of "key"


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


# e7b0402927d91cd7eaa43fb1fa36df8f469b9983 18-Sep-2007 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Finally got rid of the mouse tracking thread. Put the code inside
MouseMoved(). Everything _seems_ to work like it did before, but there
might be some regressions...


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


# b86754c363df9102a470838aa0cfba3550f7d74f 13-Sep-2007 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Simplified a bit some code


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


# dbc03773ef3b00c0daf4f4cdd8871f0a4072d094 28-Aug-2007 Ingo Weinhold <ingo_weinhold@gmx.de>

Added a SIGCHLD handler, so that the terminal will notice when one of
its shells has been terminated. Usually the thread reading from the tty
master would notice when all slaves have been closed, but they won't be
closed when the shell started a background job that's still living.

Unfortunately there are race conditions in the terminal that can lead to
deadlock when a session is closed. The service threads usually happily
lock the window, while the (locked) window would wait for the service
threads to quit.



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


# 40056ffaaf9a13fc5cbc8087c059bb974ad39c9c 22-Aug-2007 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Removed CURON/CUROFF constants. Use a boolean instead.


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


# 8906492142ea2d24e675ad2e565fbb0e08e0eef1 17-Aug-2007 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Removed debug leftover


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


# f3342f281b5a3da3c48c2e77faa6cba97224c6aa 17-Aug-2007 Stefano Ceccherini <stefano.ceccherini@gmail.com>

The Shell destructor was never called. Calling it showed that
the PtyReader thread in TermParse hanged in read(). There's even a
comment in there (by Axel) that read() is never interrupted. Switched to
kill_thread() in TermParse::StopPtyReader() until this problem is fixed.
At least we don't leave running apps around anymore. :)


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


# 0f8ae3ead70117dfb46ea09bcbceefffe9fce446 16-Aug-2007 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Creating a new tab made the app crash since r21979. Use "Terminal" as
tab label instead of "scrollView". Setting Terminal to fullscreen also
resizes and moves the TermView a bit.


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


# bb4632f1ecfa5b77c87683e446ff7db70c636baf 16-Aug-2007 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Stolen Ingo's Arguments class from Miniterminal and used it in place of
GPL'd code in TermApp (slightly modified, and bugfixed, even :P).
TermView now accepts an argument vector instead of a commandline. Same
thing for Shell.
Temporarily(?) removed some commandline options.
This also fixes bug #1396 (tested)


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


# df79164d1b427055962b5fc91c6b393d67774df5 14-Aug-2007 Axel Dörfler <axeld@pinc-software.de>

Disabled somewhat annoying debug output.


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


# 18f004cc71de4c9a75ca5892aa493e2bc289e171 03-Aug-2007 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Made some TermView functions (Paste, Copy, etc) public. Made
SetTitle and NotifyQuit virtual. TermWindow now uses a TermView
subclass which closes the tab on NotifyQuit. Enabled tabbed
terminal. There are still some small glitches, most probably related
to BTabView bugs ?



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


# 2b87a97ac6932e3421e0a8a071a7d31f00ec9c73 03-Aug-2007 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Attach/DetachShell are now private. Added a new TermView constructor
which only specifies the rows and columns, view size is automatically
calculated, and used it in TermWindow. Added a TermView::SetTitle()
method, thus TermParse doesn't call Window() anymore. Some cleanups,
scrollbar was off by one.


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


# 69f6c88d58365e044396fc7c1e67e52a14fff31a 02-Aug-2007 Axel Dörfler <axeld@pinc-software.de>

* The PtyReader thread now just exits when there is no more left to be read.
* setpgid() when spawning the shell was superfluous, as we're already the
session leader.
* Added a comment to TermView::NotifyQuit() about why sending B_QUIT_REQUESTED
to the window isn't such a good idea when you have more than one use for it.


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


# cfc9ef8ac322a10b013fae5f70cfde4f524bcba2 30-Jul-2007 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Implemented B_ABOUT_REQUESTED in TermView, for the replicant version.


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


# 67188b4ca2f5bc8980c3ac5ef04c105e2b27855f 30-Jul-2007 Stefano Ceccherini <stefano.ceccherini@gmail.com>

More or less reverted TermView::KeyDown() to r21695. Fixes bug #1340.
Thanks to Ingo & Korli for the help.


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


# 9821c5c4e1f00af18c088b2a556dd50683484c35 29-Jul-2007 Stefano Ceccherini <stefano.ceccherini@gmail.com>

on MouseDown(), TermView becomes the focus view (like BTextView does).
Now input works also with a replicanted Terminal, although I have to
click on it twice(!?!?). Don't call exit_thread() anymore in
TermParse::PtyReader(). Hope this is correct. (feel free to beat me on
this).


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


# 2240e7df9b93d2c54ea3f99ab57f705877b04f6b 30-Jul-2007 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Add the add_on field in TermView::Archive(). This way instantiating a
replicant works (thank you Marc). Return errno instead of the return
value of read() (thank you Jerome).
Terminal now can be instantiated as a replicant, although input doesn't
work :((.


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


# ba40a9b6a73de2819afb94bf0f1709e480bc12ce 30-Jul-2007 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Added a TermView::NotifyQuit() method, used in TermParse, so it doesn't
mess with be_app anymore. Renamed TermView private methods to have an
underscore prefix.


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


# 53763c54d1c6dac22e9144cea381eddb0b64e89b 30-Jul-2007 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Don't use exceptions in TermView constructor, as it would cause problems
with instantiation. Note that if an error occurs in the constructor,
we're pretty much screwed. Made some TermView functions private. Some
small cleanup, and some WIP code.


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


# 69adf535c1b4469dc0991c4c9c07f2dea81f18a4 28-Jul-2007 Stefano Ceccherini <stefano.ceccherini@gmail.com>

TermView and the classes used by it now don't know about PrefHandler
anymore, but have methods to set the needed options. Various cleanups.


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


# a77bd4200b06fe347fd45f7d9621b4ba8e91f3e8 27-Jul-2007 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Implemented Archive() and unarchiving constructor. TermView won't work
as a replicant, though, until I remove the preference code from it.


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


# cd2b8867e1d331be8bfb4f0db30f659c82e30907 27-Jul-2007 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Removed weird code in TermWindow::WindowActivated. Added basic
Archive(), Instantiate(), and unarchiving constructor.


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


# 258e949475ef1971cc5560dd0715f7199123e7a4 27-Jul-2007 Stefano Ceccherini <stefano.ceccherini@gmail.com>

More work towards a tabbed terminal. Actually it already somewhat works
(code not enabled, though). Moved scripting from TermWindow to
TermView. Added a SmartTabView which (for now) only resizes the
child views to fit their size. Usual cleanups.


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


# 17dfb8b1cb676292928973a7690c277a9875d5c9 26-Jul-2007 Stefano Ceccherini <stefano.ceccherini@gmail.com>

More headers cleanup


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


# feaebcb571a64ea882404db119de225ad703c6eb 26-Jul-2007 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Encoding is now a property of TermView. Changed a lot of code to fix the
problems caused by this change. MakeEncodingMenu doesn't mark the
current encoding anymore, it was already done in TermWindow::MenusBeginning().
Removed custom enums for encodings, just use the ones provided in UTF8.h.
I'm more and more convinced we should drop the custom conversion routines
and use the system ones.


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


# f14a8c580104cc3dcdefefb04661ef93a369da8d 25-Jul-2007 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Removed more unused stuff. Cleanups.



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


# d75fc058290fb66f2b4098665aa714077ac83b33 25-Jul-2007 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Had switched rows and columns in SetTermSize() call inside TermView's
constructor. Made UpdateSIGWINCH() private and renamed it to
_UpdateSIGWINCH().


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


# 702e4be807966ff71d1c6d71b46f93d3e83314c9 25-Jul-2007 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Moved all TermView initializing code into TermView itself. Before you
couldn't just rely on its constructor to fully initialize the object,
since the code was scattered around, mostly into TermWindow. Added a
commented out TermWindow constructor which only creates and adds a
TermView object to the view hierarchy, which now works.
Removed weird TermWindowActivate method, use WindowActivated
instead. TermApp can now keep a pointer to a BWindow instead of
TermWindow, since it doesn't do anything special with it.
TermView::SetTermFont() now can filter the font attributes (it uses
B_FIXED_SPACING, I'm not sure it's needed but it doesn't hurt). Usual
cleanups.


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


# abc4720231b10f87fa94d5d1e47d18650cf457de 23-Jul-2007 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Moved cursor blinking functionality from TermParse into TermView (and
from a BMessageRunner into Pulse()). Removed more unused stuff.
Moved around some constants and definitions. Many style changes. Sorry,
I know the two should be separated, but I had already done so many changes...


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


# 6fbf283fb59bc5c78f2939d9009a33e662ad3129 22-Jul-2007 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Fixed a bug where Terminal couldn't set itself to fullscreen the first
time. Some minor cleanups.


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


# ac3a8f54460005262afcdc310481d6ba91ef6ff9 21-Jul-2007 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Made all CodeConv methods static, since there was no point for them to
be nonstatic. Moved TermParse under Shell, Removed some parameters
passing around from TermWindow/TermView/TermParse. Now TermParse threads are
started when the shell is attached to a TermView. Might still be
improved.


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


# 0ed5650b011e2b12aa43554f2b57cb01d16496a3 21-Jul-2007 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Got rid of TermBaseView


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


# dc25fe8173a381f951765f518a85c287e894cd8c 17-Jul-2007 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Got rid of gTermPref by adding some static methods to PrefHandler.
The font size menu wasn't up to date with the current settings. Fixed.


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


# 37b209af048711485162612411b223ecf1948650 17-Jul-2007 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Renamed spawn.cpp/h to Shell.cpp/h and updated the other source files to
take this change into account


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


# f3d05c8b3ae5de10c8402ed38793fd38605ed13f 17-Jul-2007 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Encapsulated low level terminal stuff into a Shell class, which also
supersedes spawn_shell(). Removed window parameter from TermParse. Since
we already have a pointer to the view, we just call Window() on it (only
used in one place, no need to save a pointer). Other cleanups.


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


# 4ec75bbee658e4c68b82281f0ee833fcfa15e018 04-Jul-2007 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Big refactoring. Got rid of some global variables by putting code in
global functions (at least for now), removed useless globals, restyled
the code. Not yet done.


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


# e1628af583835006011b4a45eb98526d64290619 02-Jul-2007 Stefano Ceccherini <stefano.ceccherini@gmail.com>

more style cleanups, removed unused global


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


# e0ba8e50cc2673c6d4a1733f368ec7c248551b28 29-Jun-2007 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Got rid of the drawing thread, drawing is faster using the "correct"
approach. There are still some leftovers, will be taken care in the next
commits (not today though)


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


# d342dd3f50b8e8c3210af0560b3993b7a2986ab3 29-Jun-2007 Stefano Ceccherini <stefano.ceccherini@gmail.com>

a small step towards removing (duplicate) selection logic from
TermBuffer. Enabled invalidating in TextView instead of weird redrawing.
Seems much faster.


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


# 6b5ac907c4502cfd490b42a8d349fe936ba4a382 29-Jun-2007 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Made TermBuffer fit a bit better into our coding style. Removed some
useless stuff. Not yet finished.


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


# 645b01f225aafb51645570d0add2dc3904a7d433 27-Jun-2007 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Got rid of fSelected, no need to maintain a separate variable to check
if we have a selection. Now there's a "HasSelection()" method which just
checks if fSelStart and fSelEnd are different.


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


# 5240f11543de98674493a3256764bcaf86b20dda 26-Apr-2007 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Removed unused methods and variables, small style cleanups


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


# ef502a7eb33440462ad3219c94d2bb46d1c5183b 20-Apr-2007 Axel Dörfler <axeld@pinc-software.de>

* Removed useless context menu.
* Removed useless mouse button preferences.
* The secondary and tertiary buttons now both paste the selection (or clipboard data)
into the Terminal, this fixes bug #1159.


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


# 63dc9cc262a181e2da2a6ec5701b82a403f30d9a 04-Mar-2007 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Got rid of the global gPfd variable. Big time cleanup, made TermParse a
bit more robust with error checks and likes. Removed unused
TermPrint.cpp file. I hope I didn't get on your
way, Vasilis :)


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


# 4fe138eecb2bd99aeacca9da7e32a1a9f0dffc85 20-Feb-2007 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Removed a goto, style changes, patch by Vasilis Kaoutsis. Thank you!


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


# f082d94258e14fe1f5550a8c21e571eaf04bb6ca 17-Feb-2007 Stefano Ceccherini <stefano.ceccherini@gmail.com>

patch by Vasilis Kaoutsis: removed the use of goto

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


# a439fba59d683a3e367cb987a326ae45fb6e2b69 10-Dec-2006 Bruno G. Albuquerque <bga@bug-br.org.br>

Fix build under Linux/GCC4.



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


# f2b50593a83669a4e181d492db3c771dfc38fadb 11-Dec-2006 Stefano Ceccherini <stefano.ceccherini@gmail.com>

renamed pfd to gPfd as it's a global variable, fixed indentation in
TermView.cpp, other style changes


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


# b19041249debf4198f24c60bb78a86e4ad35f47e 07-Dec-2006 Stefano Ceccherini <stefano.ceccherini@gmail.com>

got rid of the tty_name global


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


# f95dbf89065f63a1ed5c4588d7c263a3b9489806 22-Aug-2006 Niels Sascha Reedijk <niels.reedijk@gmail.com>

Implement Find in Terminal. This is almost identical to R5's Terminal, except that it doesn't look for regexps. Code tested by me. Thanks to jburton for helping me out and reviewing the patch.

This resolves bug #199.


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


# 3e3c4ddcceb6851b287fe5862810ad5ce98df826 06-Mar-2006 Stefano Ceccherini <stefano.ceccherini@gmail.com>

fFontHeight and fFontWidth weren't initialized in the TermView constructor, could cause some problems. Might fix bug 201, although I could never reproduce it consistently

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


# 30da2fcb94e79bc8256c8d972502b8cd24c1c820 27-Feb-2006 Axel Dörfler <axeld@pinc-software.de>

Made the terminal a bit more robust against broken settings.


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


# e0d2f8bb52f4ed9902d0cba8ee4c5aa783229ea7 21-Feb-2006 Jérôme Duval <korli@users.berlios.de>

couldn't type 1 byte characters which need option key,
I don't know what it was meant to


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


# 8eb8269db6f96501cf7deea9e56c389ba93494c0 25-Nov-2005 Axel Dörfler <axeld@pinc-software.de>

* Fixed broken CodeConv semantics (missing length parameter).
* No longer writes to the message data from clipboard.
* some cleanup.


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


# 498cd44c3a1845eb98cedf36f22775024ba79f0e 25-Nov-2005 Axel Dörfler <axeld@pinc-software.de>

Quick fix to prevent the terminal from crashing in case it got a message
with mouse coordinates outside the window (yeah, it has been written
that bad).
Need to rewrite the whole mouse handling, though...


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


# 8002431bb4e96b87005cc385afe80d7b89e19223 12-Aug-2005 DarkWyrm <darkwyrm@gmail.com>

Style fixes to TermWindow.cpp
Removed trailing spaces after text generated by file drops
Added a few TODOs


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


# 401fdf82789b128b141b3be9ab8118dc5986c564 12-Aug-2005 DarkWyrm <darkwyrm@gmail.com>

Style and header updates


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


# 217a8117cdd69b1df44729ae2809d9f3326cf85f 28-Jul-2005 Stephan Aßmus <superstippi@gmx.de>

fixed typo

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


# d3dc729f9fbe302c5c45c3ec2518650a260605d7 18-Jul-2005 Axel Dörfler <axeld@pinc-software.de>

Moved the files out of the MYOB folder into the main folder.
There are some double entries (like TermApp.cpp and TerminalApp.cpp, so
it still needs a further cleanup).


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