diff --git a/src/apps/launchbox/LaunchButton.h b/src/apps/launchbox/LaunchButton.h
index 30af199..e1d0953 100644
a
|
b
|
enum {
|
16 | 16 | MSG_CLEAR_SLOT = 'clsl', |
17 | 17 | MSG_REMOVE_SLOT = 'rmsl', |
18 | 18 | MSG_LAUNCH = 'lnch', |
| 19 | MSG_OPEN_CONTAINING_FOLDER = 'opcf', |
19 | 20 | }; |
20 | 21 | |
21 | 22 | |
diff --git a/src/apps/launchbox/MainWindow.cpp b/src/apps/launchbox/MainWindow.cpp
index 76f4c45..a7d74d8 100644
a
|
b
|
void
|
109 | 109 | MainWindow::MessageReceived(BMessage* message) |
110 | 110 | { |
111 | 111 | switch (message->what) { |
112 | | case MSG_LAUNCH: { |
| 112 | case MSG_LAUNCH: |
| 113 | { |
113 | 114 | BView* pointer; |
114 | 115 | if (message->FindPointer("be:source", (void**)&pointer) < B_OK) |
115 | 116 | break; |
… |
… |
MainWindow::MessageReceived(BMessage* message)
|
176 | 177 | } |
177 | 178 | break; |
178 | 179 | } |
179 | | case MSG_ADD_SLOT: { |
| 180 | case MSG_ADD_SLOT: |
| 181 | { |
180 | 182 | LaunchButton* button; |
181 | 183 | if (message->FindPointer("be:source", (void**)&button) >= B_OK) { |
182 | 184 | fPadView->AddButton(new LaunchButton("launch button", |
… |
… |
MainWindow::MessageReceived(BMessage* message)
|
184 | 186 | } |
185 | 187 | break; |
186 | 188 | } |
187 | | case MSG_CLEAR_SLOT: { |
| 189 | case MSG_CLEAR_SLOT: |
| 190 | { |
188 | 191 | LaunchButton* button; |
189 | 192 | if (message->FindPointer("be:source", (void**)&button) >= B_OK) |
190 | 193 | button->SetTo((entry_ref*)NULL); |
191 | 194 | break; |
192 | 195 | } |
193 | | case MSG_REMOVE_SLOT: { |
| 196 | case MSG_REMOVE_SLOT: |
| 197 | { |
194 | 198 | LaunchButton* button; |
195 | 199 | if (message->FindPointer("be:source", (void**)&button) >= B_OK) { |
196 | 200 | if (fPadView->RemoveButton(button)) |
… |
… |
MainWindow::MessageReceived(BMessage* message)
|
198 | 202 | } |
199 | 203 | break; |
200 | 204 | } |
201 | | case MSG_SET_DESCRIPTION: { |
| 205 | case MSG_SET_DESCRIPTION: |
| 206 | { |
202 | 207 | LaunchButton* button; |
203 | 208 | if (message->FindPointer("be:source", (void**)&button) >= B_OK) { |
204 | 209 | const char* name; |
… |
… |
MainWindow::MessageReceived(BMessage* message)
|
256 | 261 | } |
257 | 262 | break; |
258 | 263 | } |
259 | | case MSG_ADD_WINDOW: { |
| 264 | case MSG_ADD_WINDOW: |
| 265 | { |
260 | 266 | BMessage settings('sett'); |
261 | 267 | SaveSettings(&settings); |
262 | 268 | message->AddMessage("window", &settings); |
… |
… |
MainWindow::MessageReceived(BMessage* message)
|
279 | 285 | else |
280 | 286 | SetWorkspaces(1L << current_workspace()); |
281 | 287 | break; |
| 288 | case MSG_OPEN_CONTAINING_FOLDER: |
| 289 | { |
| 290 | LaunchButton* button; |
| 291 | if (message->FindPointer("be:source", (void**)&button) == B_OK && button->Ref() != NULL) { |
| 292 | entry_ref target = *button->Ref(); |
| 293 | BEntry openTarget(&target); |
| 294 | BMessage openMsg(B_REFS_RECEIVED); |
| 295 | BMessenger tracker("application/x-vnd.Be-TRAK"); |
| 296 | openTarget.GetParent(&openTarget); |
| 297 | openTarget.GetRef(&target); |
| 298 | openMsg.AddRef("refs",&target); |
| 299 | tracker.SendMessage(&openMsg); |
| 300 | } |
| 301 | } |
| 302 | break; |
282 | 303 | case B_SIMPLE_DATA: |
283 | 304 | case B_REFS_RECEIVED: |
284 | 305 | case B_PASTE: |
diff --git a/src/apps/launchbox/PadView.cpp b/src/apps/launchbox/PadView.cpp
index aa24e46..4a4325d 100644
a
|
b
|
PadView::DisplayMenu(BPoint where, LaunchButton* button) const
|
341 | 341 | item = new BMenuItem(B_TRANSLATE("Remove button"), message); |
342 | 342 | item->SetTarget(window); |
343 | 343 | menu->AddItem(item); |
| 344 | // Open containing folder button |
| 345 | if (button->Ref() != NULL) { |
| 346 | message = new BMessage(MSG_OPEN_CONTAINING_FOLDER); |
| 347 | message->AddPointer("be:source", (void*)button); |
| 348 | item = new BMenuItem(B_TRANSLATE("Open containing folder"), message); |
| 349 | item->SetTarget(window); |
| 350 | menu->AddItem(item); |
| 351 | } |
344 | 352 | // set button description |
345 | 353 | if (button->Ref()) { |
346 | 354 | message = new BMessage(MSG_SET_DESCRIPTION); |