hrev45291 adds 1 changeset to branch 'master' old head: c4d175c590ea3df03a8dad12877ff3b0a93bda6b new head: ac966d59413e7f0f7395d42d499725f8d6414c3a overview: http://cgit.haiku-os.org/haiku/log/?qt=range&q=ac966d5+%5Ec4d175c ---------------------------------------------------------------------------- ac966d5: LaunchBox: add Open containing folder option. Contributed by abhiin1947. Fixes #7951. [ Matt Madia <mattmadia@xxxxxxxxx> ] ---------------------------------------------------------------------------- Revision: hrev45291 Commit: ac966d59413e7f0f7395d42d499725f8d6414c3a URL: http://cgit.haiku-os.org/haiku/commit/?id=ac966d5 Author: Matt Madia <mattmadia@xxxxxxxxx> Date: Sun Feb 17 16:53:23 2013 UTC Ticket: https://dev.haiku-os.org/ticket/7951 ---------------------------------------------------------------------------- 3 files changed, 36 insertions(+), 6 deletions(-) src/apps/launchbox/LaunchButton.h | 1 + src/apps/launchbox/MainWindow.cpp | 33 +++++++++++++++++++++++++++------ src/apps/launchbox/PadView.cpp | 8 ++++++++ ---------------------------------------------------------------------------- diff --git a/src/apps/launchbox/LaunchButton.h b/src/apps/launchbox/LaunchButton.h index 30af199..e1d0953 100644 --- a/src/apps/launchbox/LaunchButton.h +++ b/src/apps/launchbox/LaunchButton.h @@ -16,6 +16,7 @@ enum { MSG_CLEAR_SLOT = 'clsl', MSG_REMOVE_SLOT = 'rmsl', MSG_LAUNCH = 'lnch', + MSG_OPEN_CONTAINING_FOLDER = 'opcf', }; diff --git a/src/apps/launchbox/MainWindow.cpp b/src/apps/launchbox/MainWindow.cpp index 18b9316..c300db0 100644 --- a/src/apps/launchbox/MainWindow.cpp +++ b/src/apps/launchbox/MainWindow.cpp @@ -112,7 +112,8 @@ void MainWindow::MessageReceived(BMessage* message) { switch (message->what) { - case MSG_LAUNCH: { + case MSG_LAUNCH: + { BView* pointer; if (message->FindPointer("be:source", (void**)&pointer) < B_OK) break; @@ -180,7 +181,8 @@ MainWindow::MessageReceived(BMessage* message) } break; } - case MSG_ADD_SLOT: { + case MSG_ADD_SLOT: + { LaunchButton* button; if (message->FindPointer("be:source", (void**)&button) >= B_OK) { fPadView->AddButton(new LaunchButton("launch button", @@ -188,13 +190,15 @@ MainWindow::MessageReceived(BMessage* message) } break; } - case MSG_CLEAR_SLOT: { + case MSG_CLEAR_SLOT: + { LaunchButton* button; if (message->FindPointer("be:source", (void**)&button) >= B_OK) button->SetTo((entry_ref*)NULL); break; } - case MSG_REMOVE_SLOT: { + case MSG_REMOVE_SLOT: + { LaunchButton* button; if (message->FindPointer("be:source", (void**)&button) >= B_OK) { if (fPadView->RemoveButton(button)) @@ -202,7 +206,8 @@ MainWindow::MessageReceived(BMessage* message) } break; } - case MSG_SET_DESCRIPTION: { + case MSG_SET_DESCRIPTION: + { LaunchButton* button; if (message->FindPointer("be:source", (void**)&button) >= B_OK) { const char* name; @@ -260,7 +265,8 @@ MainWindow::MessageReceived(BMessage* message) } break; } - case MSG_ADD_WINDOW: { + case MSG_ADD_WINDOW: + { BMessage settings('sett'); SaveSettings(&settings); message->AddMessage("window", &settings); @@ -283,6 +289,21 @@ MainWindow::MessageReceived(BMessage* message) else SetWorkspaces(1L << current_workspace()); break; + case MSG_OPEN_CONTAINING_FOLDER: + { + LaunchButton* button; + if (message->FindPointer("be:source", (void**)&button) == B_OK && button->Ref() != NULL) { + entry_ref target = *button->Ref(); + BEntry openTarget(&target); + BMessage openMsg(B_REFS_RECEIVED); + BMessenger tracker("application/x-vnd.Be-TRAK"); + openTarget.GetParent(&openTarget); + openTarget.GetRef(&target); + openMsg.AddRef("refs",&target); + tracker.SendMessage(&openMsg); + } + } + break; case B_SIMPLE_DATA: case B_REFS_RECEIVED: case B_PASTE: diff --git a/src/apps/launchbox/PadView.cpp b/src/apps/launchbox/PadView.cpp index eb80d10..0a22c87 100644 --- a/src/apps/launchbox/PadView.cpp +++ b/src/apps/launchbox/PadView.cpp @@ -341,6 +341,14 @@ PadView::DisplayMenu(BPoint where, LaunchButton* button) const item = new BMenuItem(B_TRANSLATE("Remove button"), message); item->SetTarget(window); menu->AddItem(item); + // Open containing folder button + if (button->Ref() != NULL) { + message = new BMessage(MSG_OPEN_CONTAINING_FOLDER); + message->AddPointer("be:source", (void*)button); + item = new BMenuItem(B_TRANSLATE("Open containing folder"), message); + item->SetTarget(window); + menu->AddItem(item); + } // set button description if (button->Ref()) { message = new BMessage(MSG_SET_DESCRIPTION);