335 Commits

Author SHA1 Message Date
Stefano Ceccherini
e7b0402927 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
2007-09-18 21:19:54 +00:00
Ryan Leavengood
b6f9f38a7f Applied patch from Bek of the HOST team: allow the Terminal to be resized
to one line.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22236 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-09-16 18:51:59 +00:00
Stefano Ceccherini
b86754c363 Simplified a bit some code
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22231 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-09-13 21:39:02 +00:00
Ingo Weinhold
dbc03773ef 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
2007-08-28 21:19:15 +00:00
Ingo Weinhold
0c770dc39e Changed the suspend character to Ctrl-Z.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22065 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-08-26 16:11:13 +00:00
Stefano Ceccherini
40056ffaaf Removed CURON/CUROFF constants. Use a boolean instead.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22042 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-08-22 20:29:40 +00:00
Marcus Overhagen
e9b8c538b0 increase history size to a useful value
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22030 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-08-21 18:46:01 +00:00
Axel Dörfler
871d97a9f5 * Fixed the kernel bug that prevented SIGCONT from working properly: the problem
occured if SIGSTOP was already delivered but not yet handled when SIGCONT was
  sent. Now, SIGCONT will clear all stop signals from the pending signals.
* SIGTSTP, SIGTTIN, and SIGTTOU are supposed to suspend the thread as well, adapted
  the default behaviour to respect that.
* Removed the work-around from r21997 TermParse.cpp for this exact problem.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22004 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-08-17 13:08:24 +00:00
Axel Dörfler
3e5ede51ed * Fixed build under Dano
* Some cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22001 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-08-17 12:12:46 +00:00
Stefano Ceccherini
8906492142 Removed debug leftover
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21998 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-08-17 09:57:28 +00:00
Stefano Ceccherini
f3342f281b 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
2007-08-17 09:54:32 +00:00
Stefano Ceccherini
8b63673c13 Also use _GetPreferredFonts() in the other place when we read the fonts
from the preferences


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21985 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-08-16 15:36:42 +00:00
Stefano Ceccherini
e7f9f277ef Use a try { } catch block in TermWindow::_AddTab(). Note that this
doesn't fix bug #1392, since TermView::_InitObject() use std::nothrow 
for allocations. Added TermWindow::_GetPreferredFonts() and moved some 
code in there.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21984 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-08-16 15:32:09 +00:00
Stefano Ceccherini
0f8ae3ead7 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
2007-08-16 14:17:19 +00:00
Stefano Ceccherini
b438035431 Removed leak
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21980 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-08-16 13:17:00 +00:00
Stefano Ceccherini
bb4632f1ec 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
2007-08-16 13:11:00 +00:00
Axel Dörfler
df79164d1b Disabled somewhat annoying debug output.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21956 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-08-15 00:06:42 +00:00
Stefano Ceccherini
db5b3a0249 TermWindow didn't set the colors correctly on Terminals in a new tab.
Now TermWindow::_SetTermColors() accepts a pointer to a TermView to fix 
that.
Spotted by Andrea Bernardi. Thanks! 


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21870 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-08-09 10:35:08 +00:00
Stefano Ceccherini
d6f28abebe Added a popup menu to the tabview: for now it only contains a "close
tab" item. Note that you can also close the tab by clicking on it with 
the tertiary mouse button. Renamed some methods of TermWindow.
I'm not really happy with this code (tab creation/deletion code is 
spread between TermWindow and SmartTabView), I will need to come up with 
something better.
There are still some visual glitches when tabs are switched, created or 
deleted.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21850 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-08-08 09:50:01 +00:00
Stefano Ceccherini
187453512d If there's only one tab, quit the window when TermView::NotifyQuit() is
called.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21824 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-08-04 14:35:38 +00:00
Stefano Ceccherini
1820113ead removed old comments
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21814 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-08-03 20:50:41 +00:00
Stefano Ceccherini
18f004cc71 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
2007-08-03 20:41:04 +00:00
Stefano Ceccherini
ce10f265de In case the user supplied a wrong commandline, the Terminal didn't launch
the shell as the code would seem to do. I've disabled showing the Alert, 
since system() doesn't return the return value of "alert".


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21809 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-08-03 10:47:27 +00:00
Stefano Ceccherini
2b87a97ac6 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
2007-08-03 09:59:30 +00:00
Axel Dörfler
69f6c88d58 * 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
2007-08-02 17:21:12 +00:00
Axel Dörfler
f328fdc455 Fixed the build under BeOS/Dano:
* setenv() actually exists in Dano.
* On R5, it now uses sprintf() - the previous version would not compile.
* Cleaned some weird code in TermBuffer.cpp to set the "buf" variable to the
  end of the string - it also no longer uses the index() BSD extension
  (same as strchr()).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21793 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-08-02 16:55:44 +00:00
Stefano Ceccherini
678f903e20 Implemented tabbed terminal (with a couple of bad hacks which will go
away soon, hopefully). The menuitem to open a new tab is still 
disabled, until I figure out how to catch the exit signal... HELP ? 
Plus there are still a couple of visual issues, but AFAICT without tabs 
the Terminal appearance should be the same as it was before, so no one 
should complain.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21790 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-08-02 13:17:23 +00:00
Stefano Ceccherini
bba01ef7c1 Try to have a really smart tab view... It won't show any tabs when
there's only one view attached.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21785 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-08-02 06:44:34 +00:00
Stefano Ceccherini
d7b25be846 cleaned up a bit thread creation and deletion
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21762 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-07-31 12:53:16 +00:00
Stefano Ceccherini
cfc9ef8ac3 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
2007-07-30 15:22:37 +00:00
Stefano Ceccherini
67188b4ca2 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
2007-07-30 15:05:04 +00:00
Stefano Ceccherini
9821c5c4e1 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
2007-07-30 12:19:20 +00:00
Stefano Ceccherini
2240e7df9b 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
2007-07-30 11:48:35 +00:00
Stefano Ceccherini
ba40a9b6a7 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
2007-07-30 09:59:17 +00:00
Stefano Ceccherini
53763c54d1 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
2007-07-30 08:59:12 +00:00
Stefano Ceccherini
69adf535c1 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
2007-07-28 14:49:39 +00:00
Stefano Ceccherini
a77bd4200b 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
2007-07-27 21:56:47 +00:00
Stefano Ceccherini
cd2b8867e1 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
2007-07-27 21:43:24 +00:00
Stefano Ceccherini
258e949475 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
2007-07-27 21:23:32 +00:00
Stefano Ceccherini
17dfb8b1cb More headers cleanup
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21706 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-07-26 15:22:21 +00:00
Stefano Ceccherini
b10dd441dd Fixed warnings, rearranged some headers.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21705 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-07-26 15:07:16 +00:00
Stefano Ceccherini
feaebcb571 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
2007-07-26 14:52:24 +00:00
Stefano Ceccherini
f14a8c5801 Removed more unused stuff. Cleanups.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21700 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-07-25 11:31:17 +00:00
Stefano Ceccherini
d75fc05829 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
2007-07-25 10:16:18 +00:00
Stefano Ceccherini
702e4be807 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
2007-07-25 09:50:34 +00:00
Stefano Ceccherini
abc4720231 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
2007-07-24 12:18:24 +00:00
Stefano Ceccherini
6fbf283fb5 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
2007-07-22 13:26:17 +00:00
Stefano Ceccherini
ac3a8f5446 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
2007-07-21 20:50:06 +00:00
Stefano Ceccherini
0ed5650b01 Got rid of TermBaseView
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21679 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-07-21 19:56:55 +00:00
Stefano Ceccherini
90c6c3e8a4 Sorry, the previous commit also contained broken WIP stuff.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21678 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-07-21 19:22:53 +00:00