* 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
This commit is contained in:
@@ -91,6 +91,8 @@ static const uint32 MSG_SET_TERMNAL_TITLE = 'sett';
|
|||||||
static const uint32 MSG_QUIT_TERMNAL = 'qutt';
|
static const uint32 MSG_QUIT_TERMNAL = 'qutt';
|
||||||
static const uint32 MSG_REPORT_MOUSE_EVENT = 'mous';
|
static const uint32 MSG_REPORT_MOUSE_EVENT = 'mous';
|
||||||
static const uint32 MSG_SAVE_WINDOW_POSITION = 'swps';
|
static const uint32 MSG_SAVE_WINDOW_POSITION = 'swps';
|
||||||
|
static const uint32 MSG_MOVE_TAB_LEFT = 'mvtl';
|
||||||
|
static const uint32 MSG_MOVE_TAB_RIGHT = 'mvtr';
|
||||||
|
|
||||||
// Preference Read/Write Keys
|
// Preference Read/Write Keys
|
||||||
static const char* const PREF_HALF_FONT_FAMILY = "Half Font Family";
|
static const char* const PREF_HALF_FONT_FAMILY = "Half Font Family";
|
||||||
|
|||||||
@@ -1589,10 +1589,8 @@ TermView::KeyDown(const char *bytes, int32 numBytes)
|
|||||||
case B_LEFT_ARROW:
|
case B_LEFT_ARROW:
|
||||||
if (rawChar == B_LEFT_ARROW) {
|
if (rawChar == B_LEFT_ARROW) {
|
||||||
if ((mod & B_SHIFT_KEY) != 0) {
|
if ((mod & B_SHIFT_KEY) != 0) {
|
||||||
if (fListener != NULL) {
|
if (fListener != NULL)
|
||||||
fListener->PreviousTermView(this,
|
fListener->PreviousTermView(this);
|
||||||
(mod & B_COMMAND_KEY) != 0);
|
|
||||||
}
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if ((mod & B_CONTROL_KEY) || (mod & B_COMMAND_KEY))
|
if ((mod & B_CONTROL_KEY) || (mod & B_COMMAND_KEY))
|
||||||
@@ -1605,10 +1603,8 @@ TermView::KeyDown(const char *bytes, int32 numBytes)
|
|||||||
case B_RIGHT_ARROW:
|
case B_RIGHT_ARROW:
|
||||||
if (rawChar == B_RIGHT_ARROW) {
|
if (rawChar == B_RIGHT_ARROW) {
|
||||||
if ((mod & B_SHIFT_KEY) != 0) {
|
if ((mod & B_SHIFT_KEY) != 0) {
|
||||||
if (fListener != NULL) {
|
if (fListener != NULL)
|
||||||
fListener->NextTermView(this,
|
fListener->NextTermView(this);
|
||||||
(mod & B_COMMAND_KEY) != 0);
|
|
||||||
}
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if ((mod & B_CONTROL_KEY) || (mod & B_COMMAND_KEY))
|
if ((mod & B_CONTROL_KEY) || (mod & B_COMMAND_KEY))
|
||||||
@@ -3310,12 +3306,12 @@ TermView::Listener::SetTermViewTitle(TermView* view, const char* title)
|
|||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
TermView::Listener::PreviousTermView(TermView* view, bool move)
|
TermView::Listener::PreviousTermView(TermView* view)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
TermView::Listener::NextTermView(TermView* view, bool move)
|
TermView::Listener::NextTermView(TermView* view)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -296,8 +296,8 @@ public:
|
|||||||
int32 reason);
|
int32 reason);
|
||||||
virtual void SetTermViewTitle(TermView* view,
|
virtual void SetTermViewTitle(TermView* view,
|
||||||
const char* title);
|
const char* title);
|
||||||
virtual void PreviousTermView(TermView* view, bool move);
|
virtual void PreviousTermView(TermView* view);
|
||||||
virtual void NextTermView(TermView* view, bool move);
|
virtual void NextTermView(TermView* view);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -220,6 +220,11 @@ TermWindow::_InitWindow()
|
|||||||
AddShortcut('1' + i, B_COMMAND_KEY, message);
|
AddShortcut('1' + i, B_COMMAND_KEY, message);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
AddShortcut(B_LEFT_ARROW, B_COMMAND_KEY | B_SHIFT_KEY,
|
||||||
|
new BMessage(MSG_MOVE_TAB_LEFT));
|
||||||
|
AddShortcut(B_RIGHT_ARROW, B_COMMAND_KEY | B_SHIFT_KEY,
|
||||||
|
new BMessage(MSG_MOVE_TAB_RIGHT));
|
||||||
|
|
||||||
BRect textFrame = Bounds();
|
BRect textFrame = Bounds();
|
||||||
textFrame.top = fMenubar->Bounds().bottom + 1.0;
|
textFrame.top = fMenubar->Bounds().bottom + 1.0;
|
||||||
|
|
||||||
@@ -677,6 +682,12 @@ TermWindow::MessageReceived(BMessage *message)
|
|||||||
_CheckChildren();
|
_CheckChildren();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case MSG_MOVE_TAB_LEFT:
|
||||||
|
case MSG_MOVE_TAB_RIGHT:
|
||||||
|
_NavigateTab(_IndexOfTermView(_ActiveTermView()),
|
||||||
|
message->what == MSG_MOVE_TAB_LEFT ? -1 : 1, true);
|
||||||
|
break;
|
||||||
|
|
||||||
case kSetActiveTab:
|
case kSetActiveTab:
|
||||||
{
|
{
|
||||||
int32 index;
|
int32 index;
|
||||||
@@ -957,12 +968,19 @@ TermWindow::_NavigateTab(int32 index, int32 direction, bool move)
|
|||||||
if (count <= 1 || index < 0 || index >= count)
|
if (count <= 1 || index < 0 || index >= count)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
int32 newIndex = (index + direction + count) % count;
|
||||||
|
if (newIndex == index)
|
||||||
|
return;
|
||||||
|
|
||||||
if (move) {
|
if (move) {
|
||||||
// TODO: Move the tab!
|
// move the given tab to the new index
|
||||||
} else {
|
Session* session = (Session*)fSessions.RemoveItem(index);
|
||||||
index += direction;
|
fSessions.AddItem(session, newIndex);
|
||||||
fTabView->Select((index + count) % count);
|
fTabView->MoveTab(index, newIndex);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// activate the respective tab
|
||||||
|
fTabView->Select(newIndex);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -1122,16 +1140,16 @@ TermWindow::SetTermViewTitle(TermView* view, const char* title)
|
|||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
TermWindow::PreviousTermView(TermView* view, bool move)
|
TermWindow::PreviousTermView(TermView* view)
|
||||||
{
|
{
|
||||||
_NavigateTab(_IndexOfTermView(view), -1, move);
|
_NavigateTab(_IndexOfTermView(view), -1, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
TermWindow::NextTermView(TermView* view, bool move)
|
TermWindow::NextTermView(TermView* view)
|
||||||
{
|
{
|
||||||
_NavigateTab(_IndexOfTermView(view), 1, move);
|
_NavigateTab(_IndexOfTermView(view), 1, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -82,8 +82,8 @@ private:
|
|||||||
int32 reason);
|
int32 reason);
|
||||||
virtual void SetTermViewTitle(TermView* view,
|
virtual void SetTermViewTitle(TermView* view,
|
||||||
const char* title);
|
const char* title);
|
||||||
virtual void PreviousTermView(TermView* view, bool move);
|
virtual void PreviousTermView(TermView* view);
|
||||||
virtual void NextTermView(TermView* view, bool move);
|
virtual void NextTermView(TermView* view);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
struct Title {
|
struct Title {
|
||||||
|
|||||||
Reference in New Issue
Block a user