Commit Graph
100 Commits
Author SHA1 Message Date
Ingo Weinhold d23cadce4c [_{kern,user}_]{start,stop}_system_watching()
-> [_{kern,user}_]{start,stop}_watching_system()


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39872 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-12-16 17:01:23 +00:00
Ingo Weinhold 756b64fd83 * Removed the obsolescent [B]Reference[able] API and replaced the remaining
uses. Fixes the gcc 2 acpi build.
* Renamed WeakReferenceable::{Add,Remove}Reference() to
  {Acquire,Release}Reference() for consistency.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39871 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-12-16 16:35:42 +00:00
Ingo Weinhold 88e38c178a Replace uses of obsolescent BReference[able] API.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39870 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-12-16 14:29:37 +00:00
Ingo Weinhold c3e066cf6d Replaced uses of obsolescent BReference[able] API.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39869 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-12-16 13:50:30 +00:00
Ingo Weinhold 09d6a5822a Added a test program for the system watching mechanism.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39863 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-12-16 01:50:27 +00:00
Ingo Weinhold d2bf328d72 Implemented a generic system watching mechanism with a userland API. Currently
only a few events can be watched (team creation/deletion/exec, thread creation/
deletion/name changes). The functions start_system_watching()/
stop_system_watching start/stop watching events.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39862 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-12-16 01:49:52 +00:00
Ingo Weinhold 4ebc8f615d * Added a "name changed" notification to the thread notification service.
* Added a "team" field to the notification events.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39861 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-12-16 01:44:15 +00:00
Ingo Weinhold 2d8d1cdbaa * Implemented a generic way to associate data with a team which is
automatically cleaned up when the team is deleted: Class AssociatedData is
  the base class for a data item, AssociatedDataOwner a container for them
  (struct team derives from it). Functions team_associate_data() and
  team_dissociate_data() add/remove data.
* Turned sTeamHash into a BOpenHashTable (necessary since struct team is no
  longer a POD).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39860 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-12-16 01:15:35 +00:00
Ingo Weinhold eeecbf6fb8 The header is no longer included from pure C sources, so we can finally freely
use C++.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39859 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-12-15 23:18:13 +00:00
Ingo Weinhold 76c4f83965 * priv.c -> priv.cpp
* Defined curthread to NULL. Using Haiku's struct thread is not acceptable
  without proper locking and the only purpose ATM is to pass it to priv_check()
  which ignores it anyway.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39858 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-12-15 23:12:38 +00:00
Ingo Weinhold a68810a9a4 Don't use private kernel API.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39857 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-12-15 23:09:14 +00:00
Ingo Weinhold 078e1762a3 AddOnManager::MessageReceived(): ERROR() -> TRACE()
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39768 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-12-08 18:34:54 +00:00
Ingo Weinhold 9f1aca35af Implemented Humdinger's resizing method, activated on Cmd-Ctrl-middle-click.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39656 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-11-26 21:36:45 +00:00
Ingo Weinhold 97d623045e ResizeBorderState: Set a suitable mouse cursor.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39654 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-11-26 20:29:10 +00:00
Ingo Weinhold 8689fe066a Added method SetManagementCursor() that allows to set a cursor that overrides
the normal cursor set with SetCursor(). Intended for window management
interactions.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39653 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-11-26 20:25:57 +00:00
Ingo Weinhold 006f748565 * Got rid of DefaultWindowBehaviour::Region again. Since we also need to
discriminate between the different borders and corners, there wasn't much
  difference between it and Decorator::Region anymore and we can as well use
  the latter.
* Added new state ManageWindowState which is entered when the mouse is over the
  window and the window management modifiers are held down. When being in this
  state the borders that will be resized when pressing the right mouse button
  are highlighted.
* Added State::ExitState() hook for cleanup work.
* _NextState() does now call Desktop::SetMouseEventWindow() for our window when
  entering a new state, respectively resets it when going stateless.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39652 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-11-26 18:28:52 +00:00
Ingo Weinhold 92fe8be943 * ExtendDirtyRegion(): The left and right border rects don't include the
corners. Make sure they are added as well.
* GetComponentColors(): Added support for HIGHLIGHT_RESIZE_BORDER. We simply
  shift the standard colors towards blue. Improvements welcome.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39651 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-11-26 18:17:34 +00:00
Ingo Weinhold 37ba7e5389 Flush the bitmap caches for the zoom and close button, when their hightlight
changes. Fixes that the buttons were not drawn with the right color when the
S&T tab highlight was active.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39648 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-11-26 14:52:56 +00:00
Ingo Weinhold 07655104d5 Eliminated _acquire_spinlock(). Since the macro is defined after
acquire_spinlock_inline(), there's actually no undesired recursion.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39647 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-11-26 13:55:20 +00:00
Ingo Weinhold c07db2ec3f * elf_find_symbol(): Skip undefined symbols and symbols with the wrong binding.
* Implemented missing handling of symbolically linked images and of weak
  symbols.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39646 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-11-26 13:32:24 +00:00
Ingo Weinhold 003b80f0bb Fixed gcc 2 warning.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39645 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-11-26 13:24:10 +00:00
Ingo Weinhold 2b602c7364 * Decorator:
- Added ExtendDirtyRegion(), given a decorator region it extends the given
    dirty region. Implemented only in DefaultDecorator yet.
  - Added [Set]RegionHighlight() which allows to set/get a highlight for a
    decorator region. The visual representation of the set highlight value
    is up to the derived classes. The only globally defined value is
    HIGHLIGHT_RESIZE_BORDER, though it's not implemented anywhere yet.
* DefaultDecorator: Added the highlight for the component as a parameter to
  GetComponentColors(). Added a wrapper _GetComponentColors() with the old
  interface, fetching the highlight from the base class.
* SATDecorator: Defines and interprets its own highlight value
  HIGHLIGHT_STACK_AND_TILE.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39640 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-11-26 01:03:27 +00:00
Ingo Weinhold 06aa76e216 DefaultDecorator(/SATDecorator):
* Use a separate color array for the buttons, instead of using that for the
  tab.
* _DrawBlendedRect(): No longer gets the focus flag, but gets a color array
  instead.
* _GetBitmapForButton(): Made non-static and removed the "focus" and "object"
  parameters.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39637 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-11-25 23:23:08 +00:00
Ingo Weinhold 09b19da8c2 Introduced enum DefaultDecorator::Component to refer to the components of the
default decorator and used it instead of Decorator::Region where appropriate
(GetComponentColors(), _GetBitmapForButton()).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39636 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-11-25 22:42:21 +00:00
Ingo Weinhold ad1100115a Don't use the border highlight colors for the tab frame.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39635 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-11-25 22:32:37 +00:00
Ingo Weinhold e3ab8648d1 * DefaultDecorator:
- Introduced a virtual GetComponentColors(), that returns an array with the
    current colors for the specified component.
  - Removed all rgb_color members. Replaced the ones that were actually
    constant by const (or static const) ones and made use of
    GetComponentColors() where the non-constant ones were used.
* SATDecorator:
  - Turned rgb_color members into constants and added an overriding version
    of GetComponentColors().
  - HighlightBorders(): Invalidate the tab, too, as we use the border
    colors for drawing the outer lines of the tab (was this intented?).
    Fixes artifacts when breaking apart titled windows.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39630 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-11-25 20:07:32 +00:00
Ingo Weinhold 2ee2a8ede4 In FFM mode always update the focus in MouseMoved() regardless of the state.
I broke that with r39608.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39629 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-11-25 16:41:22 +00:00
Ingo Weinhold 7ca71ab6a2 * DefaultDecorator: Moved the button drawing from _DrawTab() to the new
virtual DrawButtons().
* SATDecorator: Override DrawButtons() instead of _DrawTab(), thus saving a
  good deal of code duplication.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39627 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-11-25 15:01:30 +00:00
Ingo Weinhold 638d9c8039 * Coding style cleanup.
* Made inline getters in SATDecorator const.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39626 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-11-25 14:42:28 +00:00
Ingo Weinhold e29729e2a5 Removed first of two consecutive assignments to fNonFocusFrameColors[1].
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39625 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-11-25 14:37:17 +00:00
Ingo Weinhold 427788e06f * Extended the Desktop's MouseFilter to reset the mouse-down messages' "clicks"
field. It does that when the modifiers, the pressed buttons, or the click
  target changes between the clicks, or when the distance between the click
  points is >= four pixels.
* Adjusted the Window::MouseDown() and WindowBehavior::MouseDown() interfaces
  and implementation accordingly (we now also pass and return click count and
  click targets).
* Removed the no longer need multi-click handling from DefaultWindowBehaviour.

Fixes #6841 and #6867.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39623 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-11-25 04:03:47 +00:00
Ingo Weinhold 76107eeb11 Added ModifiersChanged() hook to Window and [Default]WindowBehavior.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39622 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-11-25 00:38:32 +00:00
Ingo Weinhold b509dbd998 Removed unused _SetColors().
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39619 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-11-24 23:17:31 +00:00
Ingo Weinhold b3b7517070 Coding style cleanup.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39618 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-11-24 22:55:57 +00:00
Ingo Weinhold 78f7f8745e find_undefined_symbol_beos(): Look up the symbol in the requesting image
first. Fixes binary compatibility issue introduced with symbol preemption
support in the runtime loader. For unknown reasons liblayout.so, though
linked symbolically, contains a non-weak (!), preemptable BFont type info,
which was no longer resolved correctly with the new method.
Fixes #6892.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39617 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-11-24 22:11:42 +00:00
Ingo Weinhold 4e5bf97339 DefaultWindowBehaviour::MouseDown(): Reorganized the region checks. Instead of
checking the mouse button in every case, use separate switches for the
buttons. Makes things easier to read.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39616 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-11-24 21:31:05 +00:00
Ingo Weinhold 7cf8907453 Added new state ResizeBorderState, activated by right click on the decorator
or Cmd-Ctrl-right-click anywhere. Introduces the following behavioral changes:
* The send-to-back effect is triggered on mouse-up now. It expires after a
  short time of holding the button or moving the mouse, just like the
  activation effect on left-click in FFM mode.
* Depending on where the mouse was pressed, moving it will move the closest
  border or corner with it, thus resizing the window. The algorithm choosing
  the border/corner needs refinement. Currently the window is divided into 8
  equally sized sectors corresponding to the borders/corners.

Work in progress...


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39615 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-11-24 21:22:13 +00:00
Ingo Weinhold 0fd5329656 * Removed click_type enum. Introduced a private Action enum in
DefaultWindowBehavior instead. DefaultDecorator uses the more appropriate
  Decorator::Region.
* DefaultWindowBehavior::MouseTrackingState: Generalized the fActivateOnMouseUp
  handling. It is now named fWindowActionOnMouseUp and the virtual method
  MouseUpWindowAction() is called.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39614 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-11-24 18:34:40 +00:00
Ingo Weinhold 5bbbdc9182 Fixed typo. Spotted by korli.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39611 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-11-24 16:51:34 +00:00
Ingo Weinhold 98c0eab3d4 Fixed another regression introduced in r39602: Reset the click count when a
different region has been clicked since the last click.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39610 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-11-24 16:38:31 +00:00
Ingo Weinhold 5116393fb9 MouseDown(): Also check whether the buttons pressed have changed since the
last click and reset the click count, if so. Fixes a regression introduced in
r39602 (left-click after right-click was recognized as double-click).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39609 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-11-24 16:25:12 +00:00
Ingo Weinhold 52cac2e7a4 * Refactored the MouseMoved(), MouseUp(), and part of the MouseDown() code
into newly introduced state classes.
* Fixed the right-click-while dragging behavior, I broke in r39602.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39608 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-11-24 16:17:32 +00:00
Ingo Weinhold 89d652d5e0 * Decorator: Replaced the MouseAction() method with a new RegionAt().
RegionAt() just gets a point and returns which region was hit. This is in
  order to move behavioral code to [Default]WindowBehaviour. I'm not happy
  with this solution either, but to do it properly one would have to break the
  Decorator interface into separate look and feel interfaces and reorganize the
  interaction with WindowBehaviour. A task for the so-inclined reader. :-)
* Adjusted the Decorators implementations, but really tested only the default
  one.
* DefaultWindowBehaviour:
  - Replaced _ActionFor() method by a _RegionFor() which interprets the region
    returned by Decorator::RegionAt() and converts it to a "functional" region,
    i.e. combines cases we handle the same way.
  - MouseDown():
    - Handle the click region cases more in detail, disentangling the mouse
      button cases. With the following effects:
      - The middle mouse button has no effect anymore.
      - Left and right mouse buttons no longer share common behavior. A right
        click on a decorator button will send the window to the back.
    - The window key window management modifier combo does now have precedence,
      i.e. Cmd-Ctrl-click on the decorator buttons will have the same effect as
      clicking anywhere in the window.
    - When modifiers change between the clicks, reset the click count. Prevents
      a standard click in the window followed by a Cmd-Ctrl-click from being
      recognized as a double-click.
  - Mouse*(): Introduced a fMinimizeCheckOnMouseUp which works similar to
    fActivateOnMouseUp, just for double-clicks. The decision whether a
    double-click minimizes the window is postponed until releasing the mouse
    button. After moving the mouse sufficiently far or waiting half a second
    without moving the mouse the window will no longer be minimized. Fixes
    #6868.
  - MouseUp(): Moved the primary mouse button check without the
    "decorator != NULL" block. I suppose this fixes issues with the Cmd-Ctrl
    actions and decoratorless windows (if those actually exist).

I can't wait to hear what things I've broken. :-)


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39602 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-11-24 02:09:50 +00:00
Ingo Weinhold c059c8c5d0 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
2010-11-23 17:49:40 +00:00
Ingo Weinhold fa8c3f1065 Added IsAlternateScreenActive().
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39588 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-11-23 17:45:55 +00:00
Ingo Weinhold e9e3be37f9 Coding style cleanup.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39585 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-11-23 17:06:57 +00:00
Ingo Weinhold 38eb09a376 Fixed regression introduced by r38409: For a parameterless escape sequence
process_vt100_command() would be invoked with argument count 1 (instead of 0).
This broke e.g. the "dis" command and the command history navigation.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39584 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-11-23 16:43:28 +00:00
Ingo Weinhold ca598670fb * 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
2010-11-22 15:30:26 +00:00
Ingo Weinhold 65b57677b5 TermWindow::TermWindow(): Update the TerminalRoster's window info.
Fixes #6880.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39572 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-11-22 13:29:21 +00:00
Ingo Weinhold 25dc253d6a * Merged weak-symbols branch.
* Fixed trivial merge conflict in src/system/libroot/posix/locale/nl_langinfo.cpp
* Fixed gcc 2 compilation of src/system/glue/init_term_dyn.c.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39571 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-11-22 13:06:36 +00:00
Ingo Weinhold 921e955104 Adjusted SubDir invocation according to r39568.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39569 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-11-22 12:56:23 +00:00
Ingo Weinhold 36cdd7a292 Corrected the alert text for the case that multiple processes are still active.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39567 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-11-22 11:17:35 +00:00
Ingo Weinhold 53c32667f7 TermWindow::_CanClose(): Collect the names of the running processes and display
them in the alert. Fixes #6862.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39564 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-11-21 21:00:10 +00:00
Ingo Weinhold dd2cdb3a75 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
2010-11-21 19:52:16 +00:00
Ingo Weinhold 105093fddb * Added new class TerminalRoster, which maintains a list of all running
terminals, including their window minimized status and workspaces. These
  information are shared via our special-purpose clipboard. TerminalRoster
  mainly acts as a cache.
* Removed the terminal ID management from TermApp. Most is now done by
  TerminalRoster, the rest has been moved to TermWindow.
* Moved the terminal position file reading/writing from TermApp to TermWindow.
* Moved the remaining terminal window title handling from TermApp to TermWindow.
* Replaced the solution for #6613 implemented in r39530 (enabling/disabling the
  "Switch Terminals" menu item depending on whether there are other Terminals).
  The new solution is more correct, since it does enable the menu item, if and
  only if switching to another Terminal will happen when triggering it. I.e.
  minimized Terminals and ones on other workspaces are ignored.

Should also fix #6612, since there's no synchronous communication between
different terminal apps anymore.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39562 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-11-21 19:31:19 +00:00
Ingo Weinhold 441d3509c9 Removed debug leftover.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39561 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-11-21 18:35:32 +00:00
Ingo Weinhold b216f4070e Enable/disable the "Switch Terminals" menu item depending on whether there are
other Terminals. Fixes #6613.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39530 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-11-19 23:51:16 +00:00
Ingo Weinhold 45a4344050 MessageReceived(): More descriptive variable name.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39529 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-11-19 23:49:46 +00:00
Ingo Weinhold 2e394a4764 As suggested by Humdinger, replace "%p" by "--", if the shell is the active
process.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39528 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-11-19 22:27:46 +00:00
Ingo Weinhold a9e89a7325 Also made LayoutContext() const.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39526 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-11-19 21:53:25 +00:00
Ingo Weinhold df7309870f Made AncestorsVisible() const.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39525 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-11-19 21:26:54 +00:00
Ingo Weinhold 00e694dce3 Aligned the second MoveIntoFrame() parameter name with the implementation.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39518 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-11-19 17:49:09 +00:00
Ingo Weinhold 47dbffcd1e Added a "Close other tabs" item to the tab menu.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39515 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-11-19 15:30:09 +00:00
Ingo Weinhold ad617d3320 * Moved some locally used message constants from TermConst.h to TermWindow.cpp.
* Added an "Edit tab title..." item to the tab menu.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39514 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-11-19 15:24:33 +00:00
Ingo Weinhold 486cd82188 Added a menu item that opens a dialog for editing the window title.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39513 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-11-19 15:08:05 +00:00
Ingo Weinhold 19838430ab Superfluous parentheses.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39510 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-11-19 14:42:50 +00:00
Ingo Weinhold df2b4726b2 BLayoutUtils::MoveIntoFrame(): Fixed check. Spotted by korli.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39509 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-11-19 14:37:54 +00:00
Ingo Weinhold 1ded93a4b9 Use the new menu layout builder.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39508 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-11-19 14:30:42 +00:00
Ingo Weinhold 6bb10e965d Added a layout builder for menus.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39507 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-11-19 14:29:37 +00:00
Ingo Weinhold 8a6bf08d49 Renamed menu related member variables.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39502 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-11-19 12:30:21 +00:00
Ingo Weinhold 0f7255f763 Renamed fHelpmenu to fSettingsMenu.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39501 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-11-19 12:26:00 +00:00
Ingo Weinhold 5feeb23410 A failing FindInt32() still modifies the result variable.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39500 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-11-19 12:20:41 +00:00
Ingo Weinhold 54197c6163 Don't send TermView pointers around in messages. When the message is processed
the pointer might already be invalid. Use SessionID instead.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39499 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-11-19 12:11:58 +00:00
Ingo Weinhold 713b2a7886 Added _SessionAt() helper method.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39498 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-11-19 11:54:01 +00:00
Ingo Weinhold 135f173dce * Added SetTitleDialog, a dialog to edit a tab/window title.
* Use the dialog to open the tab title. Opened on double-click on the tab.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39497 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-11-19 11:49:23 +00:00
Ingo Weinhold b647673227 Moved the reusable part of the tab/window title prefs tool tips to
TermConst.h/cpp.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39496 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-11-19 11:42:47 +00:00
Ingo Weinhold 58bee54422 Renamed _CheckSizeLimits() to UpdateSizeLimits() and made it public.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39495 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-11-19 11:38:45 +00:00
Ingo Weinhold 39c1cc127a Added MoveIntoFrame() method.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39494 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-11-19 11:29:52 +00:00
Ingo Weinhold 38d5ce6271 * 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
2010-11-19 01:08:21 +00:00
Ingo Weinhold 52474b49a3 Added MoveTab() method.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39489 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-11-19 01:06:02 +00:00
Ingo Weinhold 92b0038ec0 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
2010-11-18 17:16:56 +00:00
Ingo Weinhold b1b6854036 * Renamed the session ID to index.
* Introduced class SessionID to uniquely identify a session. Unlike the indexes
  the IDs aren't reused.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39484 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-11-18 16:26:36 +00:00
Ingo Weinhold 3c90554279 TitlePlaceholderMapper::MapPlaceholder(): Don't cut of the root '/', if the
path had less components than requested.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39483 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-11-18 16:02:37 +00:00
Ingo Weinhold d4443633cc Don't require the user to hold the mouse perfectly still when click-opening the
tab menu.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39482 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-11-18 15:55:15 +00:00
Ingo Weinhold b28dba722e * SmartTabView::MouseDown(): Also notify the listener when the click didn't hit
a tab.
* TermWindow: Add a new tab on double-click in the tab view's tab-free area.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39481 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-11-18 15:41:06 +00:00
Ingo Weinhold d365030ea5 * Added a listener interface to SmartTabView and moved functionality that
doesn't belong in SmartTabView to TermWindow. This also allowed to get rid of
  TermWindow::TabView.
* Also check for double clicks on tabs. No action attached yet.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39480 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-11-18 15:08:58 +00:00
Ingo Weinhold 5afe0aef82 * Use B_WIDTH_FROM_WIDEST for tabs, so the titles aren't truncated
unnecessarily.
* Invalidate the complete tab view after setting a label. Otherwise we'd get
  artifacts when the label gets shorter.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39478 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-11-18 13:58:49 +00:00
Ingo Weinhold a949fa2a67 PrefWindow::_Revert(): Also send notifications for the tab and window title
settings.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39477 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-11-18 12:54:23 +00:00
Ingo Weinhold 02ee32bb0d Implemented support for dynamic tab and window titles:
* Added settings for tab and window titles. Both are strings with optional
  placeholders for tab/terminal index, currently active process name and
  current directory.
* Added a generic utility class PatternEvaluator that allows to expand this
  kind of pattern strings and callback classes
  [Tab,Window]TitlePlaceholderMapper that provide the specific expansion for
  the tab and window title placeholders.
* TermWindow:
  - Separated the notions of session (== tab) and window titles. The tty
    clients no longer set the window, but the session title.
  - Use the patterns instead of the hard-coded window/tab titles.
  - Recompute all titles once a second, so changes of running programs are
    reflected.
* The default patterns for tab and window titles are "%1d: %p" (last CWD
  component and name of the running process) and "Terminal %i: %t" (Terminal
  ID and active tab title). Unfortunately the space on the tabs is seriously
  limited, so that the tab title is virtually always truncated. Ideas welcome.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39473 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-11-17 23:46:13 +00:00
Ingo Weinhold e492be3195 Added versions of the constructors that take a const BMessage& instead of a
pointer. Allows for passing a temporary object.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39472 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-11-17 23:23:09 +00:00
Ingo Weinhold 8aabb37b49 Style cleanup.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39471 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-11-17 23:18:08 +00:00
Ingo Weinhold 8510499a79 Fixed the FindLast() char versions. They wouldn't find a character at the
beginning of the string.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39470 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-11-17 23:17:40 +00:00
Ingo Weinhold 116fb65719 Removed unused support for saving/loading binary settings files.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39467 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-11-17 17:22:37 +00:00
Ingo Weinhold 8875dc741a Marked all constants static.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39466 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-11-17 16:56:29 +00:00
Ingo Weinhold e4acf496c6 BLayoutBuilder::Grid::{AddMenuField,AddTextControl}(): Use separate column
count parameters for label and control view. Most likely when one doesn't want
to use the default value (1), the label and the view will cover a different
amount of columns.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39465 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-11-17 16:29:06 +00:00
Ingo Weinhold b3b19de56b Style cleanup.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39464 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-11-17 15:37:48 +00:00
Ingo Weinhold 50913c0873 Switched shortcuts for closing the window and closing the active tab, thus
aligning them with WebPositive.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39463 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-11-17 15:27:27 +00:00
Ingo Weinhold 631cc3ea7b Keep things in order.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39459 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-11-16 20:54:49 +00:00
Ingo Weinhold 47589f1c26 Before launching a new terminal window change the current working directory
to that of the active tab. This makes the new terminal inherit it. Implements
the missing part of #6712.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39458 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-11-16 20:51:33 +00:00
Ingo Weinhold 37322c4b52 * 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
2010-11-16 20:40:26 +00:00