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:
Ingo Weinhold
2010-11-19 23:51:16 +00:00
parent 45a4344050
commit b216f4070e
2 changed files with 38 additions and 2 deletions
+34
View File
@@ -161,6 +161,7 @@ TermWindow::TermWindow(BRect frame, const BString& title,
fNextSessionID(0),
fTabView(NULL),
fMenuBar(NULL),
fSwitchTerminalsMenuItem(NULL),
fEncodingMenu(NULL),
fPrintSettings(NULL),
fPrefWindow(NULL),
@@ -185,11 +186,20 @@ TermWindow::TermWindow(BRect frame, const BString& title,
_InitWindow();
_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()
{
be_roster->StopWatching(this);
_FinishTitleDialog();
if (fPrefWindow)
@@ -356,6 +366,7 @@ TermWindow::_SetupMenu()
// Terminal
.AddMenu(B_TRANSLATE("Terminal"))
.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 tab"), kNewTab, 'T')
.AddSeparator()
@@ -798,6 +809,17 @@ TermWindow::MessageReceived(BMessage *message)
_OpenSetWindowTitleDialog();
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:
BWindow::MessageReceived(message);
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
TermWindow::_TitleSettingsChanged()
{
+4 -2
View File
@@ -123,8 +123,9 @@ private:
void _SetTermColors(TermViewContainerView* termView);
void _InitWindow();
void _SetupMenu();
static BMenu* _MakeEncodingMenu();
static BMenu* _MakeWindowSizeMenu();
static BMenu* _MakeEncodingMenu();
static BMenu* _MakeWindowSizeMenu();
void _UpdateSwitchTerminalsMenuItem();
void _GetPreferredFont(BFont &font);
status_t _DoPageSetup();
@@ -174,6 +175,7 @@ private:
SmartTabView* fTabView;
BMenuBar* fMenuBar;
BMenuItem* fSwitchTerminalsMenuItem;
BMenu* fEncodingMenu;
BMessage* fPrintSettings;