supporting menu dimension retrieval for menubars, fixes #2570
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@76943 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
parent
c4691daac7
commit
c7f1a920b1
@ -202,6 +202,11 @@ public :
|
||||
wxMenu* GetWXPeer() { return m_peer ; }
|
||||
|
||||
virtual void PopUp( wxWindow *win, int x, int y ) = 0;
|
||||
|
||||
virtual void GetMenuBarDimensions(int &x, int &y, int &width, int &height) const
|
||||
{
|
||||
x = y = width = height = -1;
|
||||
}
|
||||
|
||||
static wxMenuImpl* Create( wxMenu* peer, const wxString& title );
|
||||
static wxMenuImpl* CreateRootMenu( wxMenu* peer );
|
||||
|
@ -160,6 +160,11 @@ public:
|
||||
|
||||
|
||||
static WXHMENU MacGetWindowMenuHMenu() { return s_macWindowMenuHandle ; }
|
||||
|
||||
virtual void DoGetPosition(int *x, int *y) const;
|
||||
virtual void DoGetSize(int *width, int *height) const;
|
||||
virtual void DoGetClientSize(int *width, int *height) const;
|
||||
|
||||
protected:
|
||||
// common part of all ctors
|
||||
void Init();
|
||||
|
@ -253,7 +253,16 @@ public :
|
||||
[popUpButtonCell performClickWithFrame:frame inView:view];
|
||||
[popUpButtonCell release];
|
||||
}
|
||||
|
||||
|
||||
virtual void GetMenuBarDimensions(int &x, int &y, int &width, int &height) const wxOVERRIDE
|
||||
{
|
||||
NSRect r = [(NSScreen*)[[NSScreen screens] objectAtIndex:0] frame];
|
||||
height = [m_osxMenu menuBarHeight];
|
||||
x = r.origin.x;
|
||||
y = r.origin.y;
|
||||
width = r.size.width;
|
||||
}
|
||||
|
||||
WXHMENU GetHMenu() wxOVERRIDE { return m_osxMenu; }
|
||||
|
||||
static wxMenuImpl* Create( wxMenu* peer, const wxString& title );
|
||||
|
@ -1022,4 +1022,34 @@ void wxMenuBar::Attach(wxFrame *frame)
|
||||
wxMenuBarBase::Attach( frame ) ;
|
||||
}
|
||||
|
||||
void wxMenuBar::DoGetPosition(int *x, int *y) const
|
||||
{
|
||||
int _x,_y,_width,_height;
|
||||
|
||||
m_rootMenu->GetPeer()->GetMenuBarDimensions(_x, _y, _width, _height);
|
||||
|
||||
if (x)
|
||||
*x = _x;
|
||||
if (y)
|
||||
*y = _y;
|
||||
}
|
||||
|
||||
void wxMenuBar::DoGetSize(int *width, int *height) const
|
||||
{
|
||||
int _x,_y,_width,_height;
|
||||
|
||||
m_rootMenu->GetPeer()->GetMenuBarDimensions(_x, _y, _width, _height);
|
||||
|
||||
if (width)
|
||||
*width = _width;
|
||||
if (height)
|
||||
*height = _height;
|
||||
}
|
||||
|
||||
void wxMenuBar::DoGetClientSize(int *width, int *height) const
|
||||
{
|
||||
DoGetSize(width, height);
|
||||
}
|
||||
|
||||
|
||||
#endif // wxUSE_MENUS
|
||||
|
Loading…
Reference in New Issue
Block a user