* Simply check if fTrashContextMenu->Window() is non NULL. This should be the definitive
solution :) git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28152 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -54,7 +54,6 @@ All rights reserved.
|
|||||||
#include "IconMenuItem.h"
|
#include "IconMenuItem.h"
|
||||||
#include "MountMenu.h"
|
#include "MountMenu.h"
|
||||||
#include "PoseView.h"
|
#include "PoseView.h"
|
||||||
#include "ShowingAwarePopUpMenu.h"
|
|
||||||
#include "Tracker.h"
|
#include "Tracker.h"
|
||||||
#include "TemplatesMenu.h"
|
#include "TemplatesMenu.h"
|
||||||
|
|
||||||
@@ -329,7 +328,7 @@ void
|
|||||||
BDeskWindow::AddTrashContextMenu()
|
BDeskWindow::AddTrashContextMenu()
|
||||||
{
|
{
|
||||||
// setup special trash context menu
|
// setup special trash context menu
|
||||||
fTrashContextMenu = new BShowingAwarePopUpMenu("TrashContext");
|
fTrashContextMenu = new BPopUpMenu("TrashContext");
|
||||||
fTrashContextMenu->SetFont(be_plain_font);
|
fTrashContextMenu->SetFont(be_plain_font);
|
||||||
fTrashContextMenu->AddItem(new BMenuItem("Empty Trash",
|
fTrashContextMenu->AddItem(new BMenuItem("Empty Trash",
|
||||||
new BMessage(kEmptyTrash)));
|
new BMessage(kEmptyTrash)));
|
||||||
@@ -351,7 +350,7 @@ BDeskWindow::ShowContextMenu(BPoint loc, const entry_ref *ref, BView *view)
|
|||||||
|
|
||||||
if (ref && entry.SetTo(ref) == B_OK && FSIsTrashDir(&entry)) {
|
if (ref && entry.SetTo(ref) == B_OK && FSIsTrashDir(&entry)) {
|
||||||
|
|
||||||
if (fTrashContextMenu->IsShowing() || Dragging())
|
if (fTrashContextMenu->Window() || Dragging())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
// selected item was trash, show the trash context menu instead
|
// selected item was trash, show the trash context menu instead
|
||||||
|
|||||||
@@ -41,11 +41,10 @@ All rights reserved.
|
|||||||
#include "ContainerWindow.h"
|
#include "ContainerWindow.h"
|
||||||
#include "DesktopPoseView.h"
|
#include "DesktopPoseView.h"
|
||||||
|
|
||||||
|
class BPopUpMenu;
|
||||||
|
|
||||||
namespace BPrivate {
|
namespace BPrivate {
|
||||||
|
|
||||||
class BShowingAwarePopUpMenu;
|
|
||||||
|
|
||||||
class BDeskWindow : public BContainerWindow {
|
class BDeskWindow : public BContainerWindow {
|
||||||
public:
|
public:
|
||||||
BDeskWindow(LockingList<BWindow> *windowList);
|
BDeskWindow(LockingList<BWindow> *windowList);
|
||||||
@@ -83,7 +82,7 @@ protected:
|
|||||||
private:
|
private:
|
||||||
BShelf *fDeskShelf;
|
BShelf *fDeskShelf;
|
||||||
// shelf for replicant support
|
// shelf for replicant support
|
||||||
BShowingAwarePopUpMenu *fTrashContextMenu;
|
BPopUpMenu *fTrashContextMenu;
|
||||||
|
|
||||||
BRect fOldFrame;
|
BRect fOldFrame;
|
||||||
|
|
||||||
|
|||||||
@@ -72,7 +72,6 @@ SharedLibrary libtracker.so :
|
|||||||
Settings.cpp
|
Settings.cpp
|
||||||
SettingsHandler.cpp
|
SettingsHandler.cpp
|
||||||
SettingsViews.cpp
|
SettingsViews.cpp
|
||||||
ShowingAwarePopUpMenu.cpp
|
|
||||||
SlowContextPopup.cpp
|
SlowContextPopup.cpp
|
||||||
SlowMenu.cpp
|
SlowMenu.cpp
|
||||||
StatusWindow.cpp
|
StatusWindow.cpp
|
||||||
|
|||||||
@@ -1,37 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2008, Haiku Inc.
|
|
||||||
* Distributed under the terms of the MIT License.
|
|
||||||
*
|
|
||||||
* Authors:
|
|
||||||
* Alexandre Deckner, [email protected]
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include "ShowingAwarePopUpMenu.h"
|
|
||||||
|
|
||||||
|
|
||||||
BShowingAwarePopUpMenu::BShowingAwarePopUpMenu(const char *title, bool radioMode,
|
|
||||||
bool autoRename, menu_layout layout)
|
|
||||||
: BPopUpMenu(title, radioMode, autoRename, layout),
|
|
||||||
fIsShowing(false)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
BShowingAwarePopUpMenu::~BShowingAwarePopUpMenu()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void
|
|
||||||
BShowingAwarePopUpMenu::AttachedToWindow()
|
|
||||||
{
|
|
||||||
fIsShowing = true;
|
|
||||||
BPopUpMenu::AttachedToWindow();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void
|
|
||||||
BShowingAwarePopUpMenu::DetachedFromWindow()
|
|
||||||
{
|
|
||||||
fIsShowing = false;
|
|
||||||
}
|
|
||||||
@@ -1,38 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2008, Haiku, Inc. All Rights Reserved.
|
|
||||||
* Distributed under the terms of the MIT License.
|
|
||||||
*/
|
|
||||||
#ifndef _SHOWING_AWARE_POPUP_MENU_H
|
|
||||||
#define _SHOWING_AWARE_POPUP_MENU_H
|
|
||||||
|
|
||||||
#include <PopUpMenu.h>
|
|
||||||
|
|
||||||
|
|
||||||
namespace BPrivate {
|
|
||||||
|
|
||||||
class BShowingAwarePopUpMenu : public BPopUpMenu {
|
|
||||||
public:
|
|
||||||
BShowingAwarePopUpMenu(const char *title, bool radioMode = true,
|
|
||||||
bool autoRename = true, menu_layout layout = B_ITEMS_IN_COLUMN);
|
|
||||||
virtual ~BShowingAwarePopUpMenu();
|
|
||||||
|
|
||||||
virtual void AttachedToWindow();
|
|
||||||
virtual void DetachedFromWindow();
|
|
||||||
|
|
||||||
const bool IsShowing() const;
|
|
||||||
|
|
||||||
private:
|
|
||||||
bool fIsShowing;
|
|
||||||
};
|
|
||||||
|
|
||||||
} // namespace BPrivate
|
|
||||||
|
|
||||||
using namespace BPrivate;
|
|
||||||
|
|
||||||
inline const bool
|
|
||||||
BShowingAwarePopUpMenu::IsShowing() const
|
|
||||||
{
|
|
||||||
return fIsShowing;
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif
|
|
||||||
Reference in New Issue
Block a user