mirror of
https://review.haiku-os.org/haiku
synced 2025-01-24 07:14:48 +01:00
408c0ee4cd
the child menu bar or the child menu bar's menu is enabled/disabled. This means that there is just one status we have to check, the menu fields, and the child menus agree. This change takes practical form in the Backgrounds preflet which disables the placement menu when the image is set to "None", but, only the menu got disabled and not the parent menu field so the label was erroneously still drawn as enabled.
78 lines
1.8 KiB
C++
78 lines
1.8 KiB
C++
/*
|
|
* Copyright 2001-2013 Haiku, Inc. All rights reserved.
|
|
* Distributed under the terms of the MIT License.
|
|
*
|
|
* Authors:
|
|
* Stephan Aßmus, superstippi@gmx.de
|
|
* Marc Flerackers, mflerackers@androme.be
|
|
* John Scipione, jscipione@gmail.com
|
|
*/
|
|
#ifndef _BMC_PRIVATE_H
|
|
#define _BMC_PRIVATE_H
|
|
|
|
|
|
#include <BeBuild.h>
|
|
#include <MenuBar.h>
|
|
#include <MessageFilter.h>
|
|
|
|
|
|
static const float kVMargin = 2.0f;
|
|
|
|
|
|
class BMessageRunner;
|
|
|
|
|
|
class _BMCFilter_ : public BMessageFilter {
|
|
public:
|
|
_BMCFilter_(BMenuField* menuField, uint32 what);
|
|
virtual ~_BMCFilter_();
|
|
|
|
virtual filter_result Filter(BMessage* message, BHandler** handler);
|
|
|
|
private:
|
|
_BMCFilter_& operator=(const _BMCFilter_&);
|
|
|
|
BMenuField* fMenuField;
|
|
};
|
|
|
|
|
|
class _BMCMenuBar_ : public BMenuBar {
|
|
public:
|
|
_BMCMenuBar_(BRect frame, bool fixedSize,
|
|
BMenuField* menuField);
|
|
_BMCMenuBar_(BMenuField* menuField);
|
|
_BMCMenuBar_(BMessage* data);
|
|
virtual ~_BMCMenuBar_();
|
|
|
|
static BArchivable* Instantiate(BMessage* data);
|
|
|
|
virtual void AttachedToWindow();
|
|
virtual void Draw(BRect updateRect);
|
|
virtual void FrameResized(float width, float height);
|
|
virtual void MessageReceived(BMessage* msg);
|
|
virtual void MakeFocus(bool focused = true);
|
|
virtual void SetMaxContentWidth(float width);
|
|
virtual void SetEnabled(bool enabled);
|
|
|
|
void TogglePopUpMarker(bool show)
|
|
{ fShowPopUpMarker = show; }
|
|
bool IsPopUpMarkerShown() const
|
|
{ return fShowPopUpMarker; }
|
|
|
|
virtual BSize MinSize();
|
|
virtual BSize MaxSize();
|
|
|
|
private:
|
|
_BMCMenuBar_&operator=(const _BMCMenuBar_&);
|
|
|
|
void _Init();
|
|
|
|
BMenuField* fMenuField;
|
|
bool fFixedSize;
|
|
BMessageRunner* fRunner;
|
|
bool fShowPopUpMarker;
|
|
float fPreviousWidth;
|
|
};
|
|
|
|
#endif // _BMC_PRIVATE_H
|