restructure fullscreen code dealing with hiding bars
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@46223 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -69,6 +69,7 @@ public:
|
|||||||
void SetToolBar(wxToolBar *toolbar);
|
void SetToolBar(wxToolBar *toolbar);
|
||||||
#endif // wxUSE_TOOLBAR
|
#endif // wxUSE_TOOLBAR
|
||||||
|
|
||||||
|
virtual bool ShowFullScreen(bool show, long style = wxFULLSCREEN_ALL);
|
||||||
wxPoint GetClientAreaOrigin() const { return wxPoint(0, 0); }
|
wxPoint GetClientAreaOrigin() const { return wxPoint(0, 0); }
|
||||||
|
|
||||||
// implementation from now on
|
// implementation from now on
|
||||||
@@ -104,6 +105,9 @@ public:
|
|||||||
|
|
||||||
#endif // wxUSE_MENUS_NATIVE
|
#endif // wxUSE_MENUS_NATIVE
|
||||||
|
|
||||||
|
private:
|
||||||
|
long m_fsSaveFlag;
|
||||||
|
|
||||||
DECLARE_DYNAMIC_CLASS(wxFrame)
|
DECLARE_DYNAMIC_CLASS(wxFrame)
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@@ -95,7 +95,6 @@ public:
|
|||||||
|
|
||||||
bool m_fsIsShowing; /* full screen */
|
bool m_fsIsShowing; /* full screen */
|
||||||
long m_fsSaveGdkFunc, m_fsSaveGdkDecor;
|
long m_fsSaveGdkFunc, m_fsSaveGdkDecor;
|
||||||
long m_fsSaveFlag;
|
|
||||||
wxRect m_fsSaveFrame;
|
wxRect m_fsSaveFrame;
|
||||||
|
|
||||||
// m_windowStyle translated to GDK's terms
|
// m_windowStyle translated to GDK's terms
|
||||||
|
@@ -164,6 +164,7 @@ void wxFrame::Init()
|
|||||||
m_menuBarDetached = false;
|
m_menuBarDetached = false;
|
||||||
m_toolBarDetached = false;
|
m_toolBarDetached = false;
|
||||||
m_menuBarHeight = 2;
|
m_menuBarHeight = 2;
|
||||||
|
m_fsSaveFlag = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool wxFrame::Create( wxWindow *parent,
|
bool wxFrame::Create( wxWindow *parent,
|
||||||
@@ -235,6 +236,41 @@ void wxFrame::DoGetClientSize( int *width, int *height ) const
|
|||||||
*height = 0;
|
*height = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool wxFrame::ShowFullScreen(bool show, long style)
|
||||||
|
{
|
||||||
|
if (!wxFrameBase::ShowFullScreen(show, style))
|
||||||
|
return false;
|
||||||
|
|
||||||
|
wxWindow* const bar[] = {
|
||||||
|
m_frameMenuBar, m_frameToolBar, m_frameStatusBar
|
||||||
|
};
|
||||||
|
const long fsNoBar[] = {
|
||||||
|
wxFULLSCREEN_NOMENUBAR, wxFULLSCREEN_NOTOOLBAR, wxFULLSCREEN_NOSTATUSBAR
|
||||||
|
};
|
||||||
|
for (int i = 0; i < 3; i++)
|
||||||
|
{
|
||||||
|
if (show)
|
||||||
|
{
|
||||||
|
if (bar[i] && (style & fsNoBar[i]))
|
||||||
|
{
|
||||||
|
if (bar[i]->IsShown())
|
||||||
|
bar[i]->Show(false);
|
||||||
|
else
|
||||||
|
style &= ~fsNoBar[i];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (bar[i] && (m_fsSaveFlag & fsNoBar[i]))
|
||||||
|
bar[i]->Show(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (show)
|
||||||
|
m_fsSaveFlag = style;
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
void wxFrame::GtkOnSize()
|
void wxFrame::GtkOnSize()
|
||||||
{
|
{
|
||||||
// avoid recursions
|
// avoid recursions
|
||||||
@@ -266,10 +302,8 @@ void wxFrame::GtkOnSize()
|
|||||||
// area, which is represented by m_wxwindow.
|
// area, which is represented by m_wxwindow.
|
||||||
|
|
||||||
#if wxUSE_MENUS_NATIVE
|
#if wxUSE_MENUS_NATIVE
|
||||||
if (m_frameMenuBar && !(m_fsIsShowing && (m_fsSaveFlag & wxFULLSCREEN_NOMENUBAR) != 0))
|
if (m_frameMenuBar && m_frameMenuBar->IsShown())
|
||||||
{
|
{
|
||||||
if (!GTK_WIDGET_VISIBLE(m_frameMenuBar->m_widget))
|
|
||||||
gtk_widget_show( m_frameMenuBar->m_widget );
|
|
||||||
int xx = m_miniEdge;
|
int xx = m_miniEdge;
|
||||||
int yy = m_miniEdge + m_miniTitle;
|
int yy = m_miniEdge + m_miniTitle;
|
||||||
int ww = m_width - 2*m_miniEdge;
|
int ww = m_width - 2*m_miniEdge;
|
||||||
@@ -286,14 +320,6 @@ void wxFrame::GtkOnSize()
|
|||||||
xx, yy, ww, hh );
|
xx, yy, ww, hh );
|
||||||
client_area_y_offset += hh;
|
client_area_y_offset += hh;
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
if (m_frameMenuBar)
|
|
||||||
{
|
|
||||||
if (GTK_WIDGET_VISIBLE(m_frameMenuBar->m_widget))
|
|
||||||
gtk_widget_hide( m_frameMenuBar->m_widget );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif // wxUSE_MENUS_NATIVE
|
#endif // wxUSE_MENUS_NATIVE
|
||||||
|
|
||||||
#if wxUSE_TOOLBAR
|
#if wxUSE_TOOLBAR
|
||||||
@@ -387,12 +413,8 @@ void wxFrame::GtkOnSize()
|
|||||||
}
|
}
|
||||||
|
|
||||||
#if wxUSE_STATUSBAR
|
#if wxUSE_STATUSBAR
|
||||||
if (m_frameStatusBar && m_frameStatusBar->IsShown() &&
|
if (m_frameStatusBar && m_frameStatusBar->IsShown())
|
||||||
!(m_fsIsShowing && (m_fsSaveFlag & wxFULLSCREEN_NOSTATUSBAR) != 0))
|
|
||||||
{
|
{
|
||||||
if (!GTK_WIDGET_VISIBLE(m_frameStatusBar->m_widget))
|
|
||||||
gtk_widget_show( m_frameStatusBar->m_widget );
|
|
||||||
|
|
||||||
int xx = 0 + m_miniEdge;
|
int xx = 0 + m_miniEdge;
|
||||||
int yy = m_height - wxSTATUS_HEIGHT - m_miniEdge - client_area_y_offset;
|
int yy = m_height - wxSTATUS_HEIGHT - m_miniEdge - client_area_y_offset;
|
||||||
int ww = m_width - 2*m_miniEdge;
|
int ww = m_width - 2*m_miniEdge;
|
||||||
@@ -407,14 +429,6 @@ void wxFrame::GtkOnSize()
|
|||||||
m_frameStatusBar->m_widget,
|
m_frameStatusBar->m_widget,
|
||||||
xx, yy, ww, hh );
|
xx, yy, ww, hh );
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
if (m_frameStatusBar)
|
|
||||||
{
|
|
||||||
if (GTK_WIDGET_VISIBLE(m_frameStatusBar->m_widget))
|
|
||||||
gtk_widget_hide( m_frameStatusBar->m_widget );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif // wxUSE_STATUSBAR
|
#endif // wxUSE_STATUSBAR
|
||||||
|
|
||||||
m_sizeSet = true;
|
m_sizeSet = true;
|
||||||
|
@@ -390,7 +390,6 @@ void wxTopLevelWindowGTK::Init()
|
|||||||
m_mainWidget = (GtkWidget*) NULL;
|
m_mainWidget = (GtkWidget*) NULL;
|
||||||
m_isIconized = false;
|
m_isIconized = false;
|
||||||
m_fsIsShowing = false;
|
m_fsIsShowing = false;
|
||||||
m_fsSaveFlag = 0;
|
|
||||||
m_themeEnabled = true;
|
m_themeEnabled = true;
|
||||||
m_gdkDecor = m_gdkFunc = 0;
|
m_gdkDecor = m_gdkFunc = 0;
|
||||||
m_grabbed = false;
|
m_grabbed = false;
|
||||||
@@ -648,7 +647,7 @@ bool wxTopLevelWindowGTK::EnableCloseButton( bool enable )
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool wxTopLevelWindowGTK::ShowFullScreen(bool show, long style )
|
bool wxTopLevelWindowGTK::ShowFullScreen(bool show, long)
|
||||||
{
|
{
|
||||||
if (show == m_fsIsShowing)
|
if (show == m_fsIsShowing)
|
||||||
return false; // return what?
|
return false; // return what?
|
||||||
@@ -667,16 +666,10 @@ bool wxTopLevelWindowGTK::ShowFullScreen(bool show, long style )
|
|||||||
if ( (method == wxX11_FS_WMSPEC) && !gtk_check_version(2,2,0) )
|
if ( (method == wxX11_FS_WMSPEC) && !gtk_check_version(2,2,0) )
|
||||||
{
|
{
|
||||||
if (show)
|
if (show)
|
||||||
{
|
|
||||||
m_fsSaveFlag = style;
|
|
||||||
gtk_window_fullscreen( GTK_WINDOW( m_widget ) );
|
gtk_window_fullscreen( GTK_WINDOW( m_widget ) );
|
||||||
}
|
|
||||||
else
|
else
|
||||||
{
|
|
||||||
m_fsSaveFlag = 0;
|
|
||||||
gtk_window_unfullscreen( GTK_WINDOW( m_widget ) );
|
gtk_window_unfullscreen( GTK_WINDOW( m_widget ) );
|
||||||
}
|
}
|
||||||
}
|
|
||||||
else
|
else
|
||||||
#endif // GTK+ >= 2.2.0
|
#endif // GTK+ >= 2.2.0
|
||||||
{
|
{
|
||||||
@@ -684,7 +677,6 @@ bool wxTopLevelWindowGTK::ShowFullScreen(bool show, long style )
|
|||||||
|
|
||||||
if (show)
|
if (show)
|
||||||
{
|
{
|
||||||
m_fsSaveFlag = style;
|
|
||||||
GetPosition( &m_fsSaveFrame.x, &m_fsSaveFrame.y );
|
GetPosition( &m_fsSaveFrame.x, &m_fsSaveFrame.y );
|
||||||
GetSize( &m_fsSaveFrame.width, &m_fsSaveFrame.height );
|
GetSize( &m_fsSaveFrame.width, &m_fsSaveFrame.height );
|
||||||
|
|
||||||
@@ -718,7 +710,6 @@ bool wxTopLevelWindowGTK::ShowFullScreen(bool show, long style )
|
|||||||
}
|
}
|
||||||
else // hide
|
else // hide
|
||||||
{
|
{
|
||||||
m_fsSaveFlag = 0;
|
|
||||||
if (method != wxX11_FS_WMSPEC)
|
if (method != wxX11_FS_WMSPEC)
|
||||||
{
|
{
|
||||||
// don't do it always, Metacity hates it
|
// don't do it always, Metacity hates it
|
||||||
@@ -740,7 +731,7 @@ bool wxTopLevelWindowGTK::ShowFullScreen(bool show, long style )
|
|||||||
|
|
||||||
// documented behaviour is to show the window if it's still hidden when
|
// documented behaviour is to show the window if it's still hidden when
|
||||||
// showing it full screen
|
// showing it full screen
|
||||||
if ( show && !IsShown() )
|
if (show)
|
||||||
Show();
|
Show();
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
Reference in New Issue
Block a user