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
This commit is contained in:
@@ -161,6 +161,7 @@ TermWindow::TermWindow(BRect frame, const BString& title,
|
|||||||
fNextSessionID(0),
|
fNextSessionID(0),
|
||||||
fTabView(NULL),
|
fTabView(NULL),
|
||||||
fMenuBar(NULL),
|
fMenuBar(NULL),
|
||||||
|
fSwitchTerminalsMenuItem(NULL),
|
||||||
fEncodingMenu(NULL),
|
fEncodingMenu(NULL),
|
||||||
fPrintSettings(NULL),
|
fPrintSettings(NULL),
|
||||||
fPrefWindow(NULL),
|
fPrefWindow(NULL),
|
||||||
@@ -185,11 +186,20 @@ TermWindow::TermWindow(BRect frame, const BString& title,
|
|||||||
|
|
||||||
_InitWindow();
|
_InitWindow();
|
||||||
_AddTab(args);
|
_AddTab(args);
|
||||||
|
|
||||||
|
// register as an application roster listener -- we want to know when other
|
||||||
|
// terminals are started and quit, so we can update the our
|
||||||
|
// "Switch Terminals" menu item.
|
||||||
|
be_roster->StartWatching(this);
|
||||||
|
|
||||||
|
_UpdateSwitchTerminalsMenuItem();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
TermWindow::~TermWindow()
|
TermWindow::~TermWindow()
|
||||||
{
|
{
|
||||||
|
be_roster->StopWatching(this);
|
||||||
|
|
||||||
_FinishTitleDialog();
|
_FinishTitleDialog();
|
||||||
|
|
||||||
if (fPrefWindow)
|
if (fPrefWindow)
|
||||||
@@ -356,6 +366,7 @@ TermWindow::_SetupMenu()
|
|||||||
// Terminal
|
// Terminal
|
||||||
.AddMenu(B_TRANSLATE("Terminal"))
|
.AddMenu(B_TRANSLATE("Terminal"))
|
||||||
.AddItem(B_TRANSLATE("Switch Terminals"), MENU_SWITCH_TERM, B_TAB)
|
.AddItem(B_TRANSLATE("Switch Terminals"), MENU_SWITCH_TERM, B_TAB)
|
||||||
|
.GetItem(fSwitchTerminalsMenuItem)
|
||||||
.AddItem(B_TRANSLATE("New Terminal"), MENU_NEW_TERM, 'N')
|
.AddItem(B_TRANSLATE("New Terminal"), MENU_NEW_TERM, 'N')
|
||||||
.AddItem(B_TRANSLATE("New tab"), kNewTab, 'T')
|
.AddItem(B_TRANSLATE("New tab"), kNewTab, 'T')
|
||||||
.AddSeparator()
|
.AddSeparator()
|
||||||
@@ -798,6 +809,17 @@ TermWindow::MessageReceived(BMessage *message)
|
|||||||
_OpenSetWindowTitleDialog();
|
_OpenSetWindowTitleDialog();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case B_SOME_APP_LAUNCHED:
|
||||||
|
case B_SOME_APP_QUIT:
|
||||||
|
{
|
||||||
|
BString signature;
|
||||||
|
if (message->FindString("be:signature", &signature) == B_OK
|
||||||
|
&& signature == TERM_SIGNATURE) {
|
||||||
|
_UpdateSwitchTerminalsMenuItem();
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
default:
|
default:
|
||||||
BWindow::MessageReceived(message);
|
BWindow::MessageReceived(message);
|
||||||
break;
|
break;
|
||||||
@@ -1347,6 +1369,18 @@ TermWindow::_MakeWindowSizeMenu()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void
|
||||||
|
TermWindow::_UpdateSwitchTerminalsMenuItem()
|
||||||
|
{
|
||||||
|
// get the running Terminal teams
|
||||||
|
BList teams;
|
||||||
|
be_roster->GetAppList(TERM_SIGNATURE, &teams);
|
||||||
|
|
||||||
|
// update the menu item
|
||||||
|
fSwitchTerminalsMenuItem->SetEnabled(teams.CountItems() > 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
TermWindow::_TitleSettingsChanged()
|
TermWindow::_TitleSettingsChanged()
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -123,8 +123,9 @@ private:
|
|||||||
void _SetTermColors(TermViewContainerView* termView);
|
void _SetTermColors(TermViewContainerView* termView);
|
||||||
void _InitWindow();
|
void _InitWindow();
|
||||||
void _SetupMenu();
|
void _SetupMenu();
|
||||||
static BMenu* _MakeEncodingMenu();
|
static BMenu* _MakeEncodingMenu();
|
||||||
static BMenu* _MakeWindowSizeMenu();
|
static BMenu* _MakeWindowSizeMenu();
|
||||||
|
void _UpdateSwitchTerminalsMenuItem();
|
||||||
|
|
||||||
void _GetPreferredFont(BFont &font);
|
void _GetPreferredFont(BFont &font);
|
||||||
status_t _DoPageSetup();
|
status_t _DoPageSetup();
|
||||||
@@ -174,6 +175,7 @@ private:
|
|||||||
SmartTabView* fTabView;
|
SmartTabView* fTabView;
|
||||||
|
|
||||||
BMenuBar* fMenuBar;
|
BMenuBar* fMenuBar;
|
||||||
|
BMenuItem* fSwitchTerminalsMenuItem;
|
||||||
BMenu* fEncodingMenu;
|
BMenu* fEncodingMenu;
|
||||||
|
|
||||||
BMessage* fPrintSettings;
|
BMessage* fPrintSettings;
|
||||||
|
|||||||
Reference in New Issue
Block a user