John Scipione 1c95f72222 Don't set MaxContentWidth on the menu bar of a BMenuField
Fixes #9816

It is no longer necessary, or even desirable for us to set the max
content width of the menu bar of a BMenuField now that BMenuItem
truncation and BMenuField sizing are working.

The user may, however, wish to set the max content width of the menu
bar of a BMenuField themselves like so:

menuField->MenuBar()->SetMaxContentWidth(width);

and the Interface Kit will automatically deduct the left and right
margins from the width including the space used by the drop down arrow.
2013-06-07 03:25:36 -04:00

77 lines
1.7 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);
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