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:
@@ -202,6 +202,11 @@ public :
|
|||||||
wxMenu* GetWXPeer() { return m_peer ; }
|
wxMenu* GetWXPeer() { return m_peer ; }
|
||||||
|
|
||||||
virtual void PopUp( wxWindow *win, int x, int y ) = 0;
|
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* Create( wxMenu* peer, const wxString& title );
|
||||||
static wxMenuImpl* CreateRootMenu( wxMenu* peer );
|
static wxMenuImpl* CreateRootMenu( wxMenu* peer );
|
||||||
|
@@ -160,6 +160,11 @@ public:
|
|||||||
|
|
||||||
|
|
||||||
static WXHMENU MacGetWindowMenuHMenu() { return s_macWindowMenuHandle ; }
|
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:
|
protected:
|
||||||
// common part of all ctors
|
// common part of all ctors
|
||||||
void Init();
|
void Init();
|
||||||
|
@@ -253,7 +253,16 @@ public :
|
|||||||
[popUpButtonCell performClickWithFrame:frame inView:view];
|
[popUpButtonCell performClickWithFrame:frame inView:view];
|
||||||
[popUpButtonCell release];
|
[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; }
|
WXHMENU GetHMenu() wxOVERRIDE { return m_osxMenu; }
|
||||||
|
|
||||||
static wxMenuImpl* Create( wxMenu* peer, const wxString& title );
|
static wxMenuImpl* Create( wxMenu* peer, const wxString& title );
|
||||||
|
@@ -1022,4 +1022,34 @@ void wxMenuBar::Attach(wxFrame *frame)
|
|||||||
wxMenuBarBase::Attach( 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
|
#endif // wxUSE_MENUS
|
||||||
|
Reference in New Issue
Block a user