Tracker: Introduce "Restart Deskbar" option (+alpha3)
* Matches "Restart Tracker" option in Deskbar * Only shows up when 0 Deskbar processes exist * Don't dereference fFileMenu if RepopulateMenus called on desktop (no menu bar) * Regenerate desktop menu on each click * Resolves #9039
This commit is contained in:
@@ -78,6 +78,7 @@ const uint32 kLoadAddOn = 'Tlda';
|
|||||||
const uint32 kEmptyTrash = 'Tetr';
|
const uint32 kEmptyTrash = 'Tetr';
|
||||||
const uint32 kAddPrinter = 'Tadp';
|
const uint32 kAddPrinter = 'Tadp';
|
||||||
const uint32 kMakeActivePrinter = 'Tmap';
|
const uint32 kMakeActivePrinter = 'Tmap';
|
||||||
|
const uint32 kRestartDeskbar = 'DBar';
|
||||||
|
|
||||||
const uint32 kRunAutomounterSettings = 'Tram';
|
const uint32 kRunAutomounterSettings = 'Tram';
|
||||||
|
|
||||||
|
|||||||
@@ -873,34 +873,36 @@ BContainerWindow::RepopulateMenus()
|
|||||||
fWindowContextMenu->SetFont(be_plain_font);
|
fWindowContextMenu->SetFont(be_plain_font);
|
||||||
AddWindowContextMenus(fWindowContextMenu);
|
AddWindowContextMenus(fWindowContextMenu);
|
||||||
|
|
||||||
fMenuBar->RemoveItem(fFileMenu);
|
if (fMenuBar != NULL) {
|
||||||
delete fFileMenu;
|
fMenuBar->RemoveItem(fFileMenu);
|
||||||
fFileMenu = new BMenu(B_TRANSLATE("File"));
|
delete fFileMenu;
|
||||||
AddFileMenu(fFileMenu);
|
fFileMenu = new BMenu(B_TRANSLATE("File"));
|
||||||
fMenuBar->AddItem(fFileMenu);
|
AddFileMenu(fFileMenu);
|
||||||
|
fMenuBar->AddItem(fFileMenu);
|
||||||
|
|
||||||
fMenuBar->RemoveItem(fWindowMenu);
|
fMenuBar->RemoveItem(fWindowMenu);
|
||||||
delete fWindowMenu;
|
delete fWindowMenu;
|
||||||
fWindowMenu = new BMenu(B_TRANSLATE("Window"));
|
fWindowMenu = new BMenu(B_TRANSLATE("Window"));
|
||||||
fMenuBar->AddItem(fWindowMenu);
|
fMenuBar->AddItem(fWindowMenu);
|
||||||
AddWindowMenu(fWindowMenu);
|
AddWindowMenu(fWindowMenu);
|
||||||
|
|
||||||
// just create the attribute, decide to add it later
|
// just create the attribute, decide to add it later
|
||||||
fMenuBar->RemoveItem(fAttrMenu);
|
fMenuBar->RemoveItem(fAttrMenu);
|
||||||
delete fAttrMenu;
|
delete fAttrMenu;
|
||||||
fAttrMenu = new BMenu(B_TRANSLATE("Attributes"));
|
fAttrMenu = new BMenu(B_TRANSLATE("Attributes"));
|
||||||
NewAttributeMenu(fAttrMenu);
|
NewAttributeMenu(fAttrMenu);
|
||||||
if (PoseView()->ViewMode() == kListMode)
|
if (PoseView()->ViewMode() == kListMode)
|
||||||
ShowAttributeMenu();
|
ShowAttributeMenu();
|
||||||
|
|
||||||
PopulateArrangeByMenu(fArrangeByMenu);
|
PopulateArrangeByMenu(fArrangeByMenu);
|
||||||
|
|
||||||
int32 selectCount = PoseView()->SelectionList()->CountItems();
|
int32 selectCount = PoseView()->SelectionList()->CountItems();
|
||||||
|
|
||||||
SetupOpenWithMenu(fFileMenu);
|
SetupOpenWithMenu(fFileMenu);
|
||||||
SetupMoveCopyMenus(selectCount ? PoseView()->SelectionList()->
|
SetupMoveCopyMenus(selectCount ? PoseView()->SelectionList()
|
||||||
FirstItem()->TargetModel()->EntryRef() : NULL,
|
->FirstItem()->TargetModel()->EntryRef() : NULL,
|
||||||
fFileMenu);
|
fFileMenu);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -1526,6 +1528,13 @@ BContainerWindow::MessageReceived(BMessage* message)
|
|||||||
(new FindWindow())->Show();
|
(new FindWindow())->Show();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case kRestartDeskbar:
|
||||||
|
{
|
||||||
|
BRoster roster;
|
||||||
|
roster.Launch(kDeskbarSignature);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
case kQuitTracker:
|
case kQuitTracker:
|
||||||
be_app->PostMessage(B_QUIT_REQUESTED);
|
be_app->PostMessage(B_QUIT_REQUESTED);
|
||||||
break;
|
break;
|
||||||
@@ -2713,6 +2722,10 @@ BContainerWindow::ShowContextMenu(BPoint loc, const entry_ref* ref, BView*)
|
|||||||
if (fWindowContextMenu->Window())
|
if (fWindowContextMenu->Window())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
// Repopulate desktop menu if IsDesktop
|
||||||
|
if (dynamic_cast<BDeskWindow*>(this))
|
||||||
|
RepopulateMenus();
|
||||||
|
|
||||||
MenusEnded();
|
MenusEnded();
|
||||||
|
|
||||||
// clicked on a window, show window context menu
|
// clicked on a window, show window context menu
|
||||||
|
|||||||
@@ -39,6 +39,7 @@ All rights reserved.
|
|||||||
#include <NodeMonitor.h>
|
#include <NodeMonitor.h>
|
||||||
#include <Path.h>
|
#include <Path.h>
|
||||||
#include <PopUpMenu.h>
|
#include <PopUpMenu.h>
|
||||||
|
#include <Roster.h>
|
||||||
#include <Screen.h>
|
#include <Screen.h>
|
||||||
#include <Volume.h>
|
#include <Volume.h>
|
||||||
#include <VolumeRoster.h>
|
#include <VolumeRoster.h>
|
||||||
@@ -274,6 +275,16 @@ BDeskWindow::CreatePoseView(Model* model)
|
|||||||
void
|
void
|
||||||
BDeskWindow::AddWindowContextMenus(BMenu* menu)
|
BDeskWindow::AddWindowContextMenus(BMenu* menu)
|
||||||
{
|
{
|
||||||
|
BMenuItem* item;
|
||||||
|
|
||||||
|
BRoster roster;
|
||||||
|
if (!roster.IsRunning(kDeskbarSignature)) {
|
||||||
|
item = new BMenuItem(B_TRANSLATE("Restart Deskbar"),
|
||||||
|
new BMessage(kRestartDeskbar));
|
||||||
|
menu->AddItem(item);
|
||||||
|
menu->AddSeparatorItem();
|
||||||
|
}
|
||||||
|
|
||||||
TemplatesMenu* tempateMenu = new TemplatesMenu(PoseView(),
|
TemplatesMenu* tempateMenu = new TemplatesMenu(PoseView(),
|
||||||
B_TRANSLATE("New"));
|
B_TRANSLATE("New"));
|
||||||
|
|
||||||
@@ -287,7 +298,7 @@ BDeskWindow::AddWindowContextMenus(BMenu* menu)
|
|||||||
|
|
||||||
BMessage* message = new BMessage(kIconMode);
|
BMessage* message = new BMessage(kIconMode);
|
||||||
message->AddInt32("size", 32);
|
message->AddInt32("size", 32);
|
||||||
BMenuItem* item = new BMenuItem(B_TRANSLATE("32 x 32"), message);
|
item = new BMenuItem(B_TRANSLATE("32 x 32"), message);
|
||||||
item->SetMarked(PoseView()->IconSizeInt() == 32);
|
item->SetMarked(PoseView()->IconSizeInt() == 32);
|
||||||
item->SetTarget(PoseView());
|
item->SetTarget(PoseView());
|
||||||
iconSizeMenu->AddItem(item);
|
iconSizeMenu->AddItem(item);
|
||||||
|
|||||||
Reference in New Issue
Block a user