[haiku-commits] haiku: hrev44673 - src/kits/tracker

  • From: kallisti5@xxxxxxxxxxx
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Tue, 2 Oct 2012 20:26:04 +0200 (CEST)

hrev44673 adds 1 changeset to branch 'master'
old head: 9af3b8357592d97fbe2b01f6f0cbee8d4eade538
new head: ff09527e4f6f674c4df23e39b365b84e87bfac43

----------------------------------------------------------------------------

ff09527: 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

                          [ Alexander von Gluck IV <kallisti5@xxxxxxxxxxx> ]

----------------------------------------------------------------------------

Revision:    hrev44673
Commit:      ff09527e4f6f674c4df23e39b365b84e87bfac43
URL:         http://cgit.haiku-os.org/haiku/commit/?id=ff09527
Author:      Alexander von Gluck IV <kallisti5@xxxxxxxxxxx>
Date:        Tue Oct  2 16:56:36 2012 UTC

Ticket:      https://dev.haiku-os.org/ticket/9039

----------------------------------------------------------------------------

3 files changed, 51 insertions(+), 26 deletions(-)
src/kits/tracker/Commands.h          |    1 +
src/kits/tracker/ContainerWindow.cpp |   63 ++++++++++++++++++------------
src/kits/tracker/DeskWindow.cpp      |   13 +++++-

----------------------------------------------------------------------------

diff --git a/src/kits/tracker/Commands.h b/src/kits/tracker/Commands.h
index 208cbb6..869270b 100644
--- a/src/kits/tracker/Commands.h
+++ b/src/kits/tracker/Commands.h
@@ -78,6 +78,7 @@ const uint32 kLoadAddOn = 'Tlda';
 const uint32 kEmptyTrash = 'Tetr';
 const uint32 kAddPrinter = 'Tadp';
 const uint32 kMakeActivePrinter = 'Tmap';
+const uint32 kRestartDeskbar = 'DBar';
 
 const uint32 kRunAutomounterSettings = 'Tram';
 
diff --git a/src/kits/tracker/ContainerWindow.cpp 
b/src/kits/tracker/ContainerWindow.cpp
index fe16183..574cc23 100644
--- a/src/kits/tracker/ContainerWindow.cpp
+++ b/src/kits/tracker/ContainerWindow.cpp
@@ -873,34 +873,36 @@ BContainerWindow::RepopulateMenus()
        fWindowContextMenu->SetFont(be_plain_font);
        AddWindowContextMenus(fWindowContextMenu);
 
-       fMenuBar->RemoveItem(fFileMenu);
-       delete fFileMenu;
-       fFileMenu = new BMenu(B_TRANSLATE("File"));
-       AddFileMenu(fFileMenu);
-       fMenuBar->AddItem(fFileMenu);
-
-       fMenuBar->RemoveItem(fWindowMenu);
-       delete fWindowMenu;
-       fWindowMenu = new BMenu(B_TRANSLATE("Window"));
-       fMenuBar->AddItem(fWindowMenu);
-       AddWindowMenu(fWindowMenu);
-
-       // just create the attribute, decide to add it later
-       fMenuBar->RemoveItem(fAttrMenu);
-       delete fAttrMenu;
-       fAttrMenu = new BMenu(B_TRANSLATE("Attributes"));
-       NewAttributeMenu(fAttrMenu);
-       if (PoseView()->ViewMode() == kListMode)
-               ShowAttributeMenu();
+       if (fMenuBar != NULL) {
+               fMenuBar->RemoveItem(fFileMenu);
+               delete fFileMenu;
+               fFileMenu = new BMenu(B_TRANSLATE("File"));
+               AddFileMenu(fFileMenu);
+               fMenuBar->AddItem(fFileMenu);
+
+               fMenuBar->RemoveItem(fWindowMenu);
+               delete fWindowMenu;
+               fWindowMenu = new BMenu(B_TRANSLATE("Window"));
+               fMenuBar->AddItem(fWindowMenu);
+               AddWindowMenu(fWindowMenu);
+
+               // just create the attribute, decide to add it later
+               fMenuBar->RemoveItem(fAttrMenu);
+               delete fAttrMenu;
+               fAttrMenu = new BMenu(B_TRANSLATE("Attributes"));
+               NewAttributeMenu(fAttrMenu);
+               if (PoseView()->ViewMode() == kListMode)
+                       ShowAttributeMenu();
 
-       PopulateArrangeByMenu(fArrangeByMenu);
+               PopulateArrangeByMenu(fArrangeByMenu);
 
-       int32 selectCount = PoseView()->SelectionList()->CountItems();
+               int32 selectCount = PoseView()->SelectionList()->CountItems();
 
-       SetupOpenWithMenu(fFileMenu);
-       SetupMoveCopyMenus(selectCount ? PoseView()->SelectionList()->
-                       FirstItem()->TargetModel()->EntryRef() : NULL,
-               fFileMenu);
+               SetupOpenWithMenu(fFileMenu);
+               SetupMoveCopyMenus(selectCount ? PoseView()->SelectionList()
+                               ->FirstItem()->TargetModel()->EntryRef() : NULL,
+                       fFileMenu);
+       }
 }
 
 
@@ -1526,6 +1528,13 @@ BContainerWindow::MessageReceived(BMessage* message)
                        (new FindWindow())->Show();
                        break;
 
+               case kRestartDeskbar:
+               {
+                       BRoster roster;
+                       roster.Launch(kDeskbarSignature);
+                       break;
+               }
+
                case kQuitTracker:
                        be_app->PostMessage(B_QUIT_REQUESTED);
                        break;
@@ -2713,6 +2722,10 @@ BContainerWindow::ShowContextMenu(BPoint loc, const 
entry_ref* ref, BView*)
                if (fWindowContextMenu->Window())
                        return;
 
+               // Repopulate desktop menu if IsDesktop
+               if (dynamic_cast<BDeskWindow*>(this))
+                       RepopulateMenus();
+
                MenusEnded();
 
                // clicked on a window, show window context menu
diff --git a/src/kits/tracker/DeskWindow.cpp b/src/kits/tracker/DeskWindow.cpp
index a4ac775..5ad22a8 100644
--- a/src/kits/tracker/DeskWindow.cpp
+++ b/src/kits/tracker/DeskWindow.cpp
@@ -39,6 +39,7 @@ All rights reserved.
 #include <NodeMonitor.h>
 #include <Path.h>
 #include <PopUpMenu.h>
+#include <Roster.h>
 #include <Screen.h>
 #include <Volume.h>
 #include <VolumeRoster.h>
@@ -274,6 +275,16 @@ BDeskWindow::CreatePoseView(Model* model)
 void
 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(),
                B_TRANSLATE("New"));
 
@@ -287,7 +298,7 @@ BDeskWindow::AddWindowContextMenus(BMenu* menu)
 
        BMessage* message = new BMessage(kIconMode);
        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->SetTarget(PoseView());
        iconSizeMenu->AddItem(item);


Other related posts: