fixes for dialogs whose parent is wxMDI<whatever>Frame
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7204 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -1,10 +1,10 @@
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// Name: mdi.h
|
||||
// Name: gtk/mdi.h
|
||||
// Purpose:
|
||||
// Author: Robert Roebling
|
||||
// Id: $Id$
|
||||
// Copyright: (c) 1998 Robert Roebling
|
||||
// Licence: wxWindows licence
|
||||
// Licence: wxWindows licence
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
@@ -45,12 +45,20 @@ extern const wxChar* wxStatusLineNameStr;
|
||||
class wxMDIParentFrame: public wxFrame
|
||||
{
|
||||
public:
|
||||
wxMDIParentFrame();
|
||||
wxMDIParentFrame( wxWindow *parent,
|
||||
wxWindowID id, const wxString& title,
|
||||
const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize,
|
||||
long style = wxDEFAULT_FRAME_STYLE | wxVSCROLL | wxHSCROLL,
|
||||
const wxString& name = wxFrameNameStr );
|
||||
wxMDIParentFrame() { Init(); }
|
||||
wxMDIParentFrame(wxWindow *parent,
|
||||
wxWindowID id,
|
||||
const wxString& title,
|
||||
const wxPoint& pos = wxDefaultPosition,
|
||||
const wxSize& size = wxDefaultSize,
|
||||
long style = wxDEFAULT_FRAME_STYLE | wxVSCROLL | wxHSCROLL,
|
||||
const wxString& name = wxFrameNameStr)
|
||||
{
|
||||
Init();
|
||||
|
||||
(void)Create(parent, id, title, pos, size, style, name);
|
||||
}
|
||||
|
||||
~wxMDIParentFrame(void);
|
||||
bool Create( wxWindow *parent,
|
||||
wxWindowID id, const wxString& title,
|
||||
@@ -60,32 +68,31 @@ public:
|
||||
|
||||
void GetClientSize(int *width, int *height) const;
|
||||
wxMDIChildFrame *GetActiveChild() const;
|
||||
|
||||
wxMDIClientWindow *GetClientWindow() const;
|
||||
|
||||
wxMDIClientWindow *GetClientWindow() const;
|
||||
virtual wxMDIClientWindow *OnCreateClient();
|
||||
|
||||
|
||||
virtual void Cascade() {}
|
||||
virtual void Tile() {}
|
||||
virtual void ArrangeIcons() {}
|
||||
virtual void ActivateNext();
|
||||
virtual void ActivatePrevious();
|
||||
|
||||
void OnActivate( wxActivateEvent& event );
|
||||
void OnSysColourChanged( wxSysColourChangedEvent& event );
|
||||
|
||||
// implementation
|
||||
// implementation
|
||||
|
||||
wxMDIClientWindow *m_clientWindow;
|
||||
bool m_justInserted;
|
||||
|
||||
virtual void GtkOnSize( int x, int y, int width, int height );
|
||||
virtual void OnInternalIdle();
|
||||
|
||||
|
||||
protected:
|
||||
void Init();
|
||||
|
||||
private:
|
||||
friend class wxMDIChildFrame;
|
||||
|
||||
|
||||
DECLARE_DYNAMIC_CLASS(wxMDIParentFrame)
|
||||
DECLARE_EVENT_TABLE()
|
||||
};
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
@@ -105,7 +112,7 @@ public:
|
||||
wxWindowID id, const wxString& title,
|
||||
const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize,
|
||||
long style = wxDEFAULT_FRAME_STYLE, const wxString& name = wxFrameNameStr );
|
||||
|
||||
|
||||
virtual void SetMenuBar( wxMenuBar *menu_bar );
|
||||
virtual wxMenuBar *GetMenuBar() const;
|
||||
|
||||
@@ -113,11 +120,11 @@ public:
|
||||
virtual void AddChild( wxWindowBase *child );
|
||||
|
||||
virtual void Activate();
|
||||
|
||||
|
||||
#if wxUSE_STATUSBAR
|
||||
// no status bars
|
||||
virtual wxStatusBar* CreateStatusBar( int WXUNUSED(number) = 1,
|
||||
long WXUNUSED(style) = 1,
|
||||
long WXUNUSED(style) = 1,
|
||||
wxWindowID WXUNUSED(id) = 1,
|
||||
const wxString& WXUNUSED(name) = wxEmptyString)
|
||||
{ return (wxStatusBar*)NULL; }
|
||||
@@ -131,38 +138,38 @@ public:
|
||||
virtual void SetSizeHints( int WXUNUSED(minW), int WXUNUSED(minH),
|
||||
int WXUNUSED(maxW), int WXUNUSED(maxH),
|
||||
int WXUNUSED(incW), int WXUNUSED(incH) ) {}
|
||||
|
||||
|
||||
#if wxUSE_TOOLBAR
|
||||
// no toolbar bars
|
||||
virtual wxToolBar* CreateToolBar( long WXUNUSED(style), wxWindowID WXUNUSED(id),
|
||||
virtual wxToolBar* CreateToolBar( long WXUNUSED(style), wxWindowID WXUNUSED(id),
|
||||
const wxString& WXUNUSED(name) ) { return (wxToolBar*)NULL; }
|
||||
virtual wxToolBar *GetToolBar() const { return (wxToolBar*)NULL; }
|
||||
#endif
|
||||
|
||||
|
||||
// no icon
|
||||
void SetIcon( const wxIcon &icon ) { m_icon = icon; }
|
||||
|
||||
// no title
|
||||
void SetTitle( const wxString &title ) { m_title = title; }
|
||||
|
||||
// no title
|
||||
void SetTitle( const wxString &title );
|
||||
wxString GetTitle() const { return m_title; }
|
||||
|
||||
|
||||
// no maximize etc
|
||||
virtual void Maximize( bool WXUNUSED(maximize) ) {}
|
||||
virtual void Restore() {}
|
||||
|
||||
|
||||
virtual bool IsTopLevel() const { return FALSE; }
|
||||
|
||||
|
||||
void OnActivate( wxActivateEvent& event );
|
||||
void OnMenuHighlight( wxMenuEvent& event );
|
||||
|
||||
|
||||
// implementation
|
||||
|
||||
|
||||
wxMenuBar *m_menuBar;
|
||||
GtkNotebookPage *m_page;
|
||||
bool m_justInserted;
|
||||
|
||||
|
||||
private:
|
||||
DECLARE_EVENT_TABLE()
|
||||
DECLARE_EVENT_TABLE()
|
||||
DECLARE_DYNAMIC_CLASS(wxMDIChildFrame)
|
||||
};
|
||||
|
||||
|
@@ -1,10 +1,10 @@
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// Name: mdi.h
|
||||
// Name: gtk/mdi.h
|
||||
// Purpose:
|
||||
// Author: Robert Roebling
|
||||
// Id: $Id$
|
||||
// Copyright: (c) 1998 Robert Roebling
|
||||
// Licence: wxWindows licence
|
||||
// Licence: wxWindows licence
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
@@ -45,12 +45,20 @@ extern const wxChar* wxStatusLineNameStr;
|
||||
class wxMDIParentFrame: public wxFrame
|
||||
{
|
||||
public:
|
||||
wxMDIParentFrame();
|
||||
wxMDIParentFrame( wxWindow *parent,
|
||||
wxWindowID id, const wxString& title,
|
||||
const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize,
|
||||
long style = wxDEFAULT_FRAME_STYLE | wxVSCROLL | wxHSCROLL,
|
||||
const wxString& name = wxFrameNameStr );
|
||||
wxMDIParentFrame() { Init(); }
|
||||
wxMDIParentFrame(wxWindow *parent,
|
||||
wxWindowID id,
|
||||
const wxString& title,
|
||||
const wxPoint& pos = wxDefaultPosition,
|
||||
const wxSize& size = wxDefaultSize,
|
||||
long style = wxDEFAULT_FRAME_STYLE | wxVSCROLL | wxHSCROLL,
|
||||
const wxString& name = wxFrameNameStr)
|
||||
{
|
||||
Init();
|
||||
|
||||
(void)Create(parent, id, title, pos, size, style, name);
|
||||
}
|
||||
|
||||
~wxMDIParentFrame(void);
|
||||
bool Create( wxWindow *parent,
|
||||
wxWindowID id, const wxString& title,
|
||||
@@ -60,32 +68,31 @@ public:
|
||||
|
||||
void GetClientSize(int *width, int *height) const;
|
||||
wxMDIChildFrame *GetActiveChild() const;
|
||||
|
||||
wxMDIClientWindow *GetClientWindow() const;
|
||||
|
||||
wxMDIClientWindow *GetClientWindow() const;
|
||||
virtual wxMDIClientWindow *OnCreateClient();
|
||||
|
||||
|
||||
virtual void Cascade() {}
|
||||
virtual void Tile() {}
|
||||
virtual void ArrangeIcons() {}
|
||||
virtual void ActivateNext();
|
||||
virtual void ActivatePrevious();
|
||||
|
||||
void OnActivate( wxActivateEvent& event );
|
||||
void OnSysColourChanged( wxSysColourChangedEvent& event );
|
||||
|
||||
// implementation
|
||||
// implementation
|
||||
|
||||
wxMDIClientWindow *m_clientWindow;
|
||||
bool m_justInserted;
|
||||
|
||||
virtual void GtkOnSize( int x, int y, int width, int height );
|
||||
virtual void OnInternalIdle();
|
||||
|
||||
|
||||
protected:
|
||||
void Init();
|
||||
|
||||
private:
|
||||
friend class wxMDIChildFrame;
|
||||
|
||||
|
||||
DECLARE_DYNAMIC_CLASS(wxMDIParentFrame)
|
||||
DECLARE_EVENT_TABLE()
|
||||
};
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
@@ -105,7 +112,7 @@ public:
|
||||
wxWindowID id, const wxString& title,
|
||||
const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize,
|
||||
long style = wxDEFAULT_FRAME_STYLE, const wxString& name = wxFrameNameStr );
|
||||
|
||||
|
||||
virtual void SetMenuBar( wxMenuBar *menu_bar );
|
||||
virtual wxMenuBar *GetMenuBar() const;
|
||||
|
||||
@@ -113,11 +120,11 @@ public:
|
||||
virtual void AddChild( wxWindowBase *child );
|
||||
|
||||
virtual void Activate();
|
||||
|
||||
|
||||
#if wxUSE_STATUSBAR
|
||||
// no status bars
|
||||
virtual wxStatusBar* CreateStatusBar( int WXUNUSED(number) = 1,
|
||||
long WXUNUSED(style) = 1,
|
||||
long WXUNUSED(style) = 1,
|
||||
wxWindowID WXUNUSED(id) = 1,
|
||||
const wxString& WXUNUSED(name) = wxEmptyString)
|
||||
{ return (wxStatusBar*)NULL; }
|
||||
@@ -131,38 +138,38 @@ public:
|
||||
virtual void SetSizeHints( int WXUNUSED(minW), int WXUNUSED(minH),
|
||||
int WXUNUSED(maxW), int WXUNUSED(maxH),
|
||||
int WXUNUSED(incW), int WXUNUSED(incH) ) {}
|
||||
|
||||
|
||||
#if wxUSE_TOOLBAR
|
||||
// no toolbar bars
|
||||
virtual wxToolBar* CreateToolBar( long WXUNUSED(style), wxWindowID WXUNUSED(id),
|
||||
virtual wxToolBar* CreateToolBar( long WXUNUSED(style), wxWindowID WXUNUSED(id),
|
||||
const wxString& WXUNUSED(name) ) { return (wxToolBar*)NULL; }
|
||||
virtual wxToolBar *GetToolBar() const { return (wxToolBar*)NULL; }
|
||||
#endif
|
||||
|
||||
|
||||
// no icon
|
||||
void SetIcon( const wxIcon &icon ) { m_icon = icon; }
|
||||
|
||||
// no title
|
||||
void SetTitle( const wxString &title ) { m_title = title; }
|
||||
|
||||
// no title
|
||||
void SetTitle( const wxString &title );
|
||||
wxString GetTitle() const { return m_title; }
|
||||
|
||||
|
||||
// no maximize etc
|
||||
virtual void Maximize( bool WXUNUSED(maximize) ) {}
|
||||
virtual void Restore() {}
|
||||
|
||||
|
||||
virtual bool IsTopLevel() const { return FALSE; }
|
||||
|
||||
|
||||
void OnActivate( wxActivateEvent& event );
|
||||
void OnMenuHighlight( wxMenuEvent& event );
|
||||
|
||||
|
||||
// implementation
|
||||
|
||||
|
||||
wxMenuBar *m_menuBar;
|
||||
GtkNotebookPage *m_page;
|
||||
bool m_justInserted;
|
||||
|
||||
|
||||
private:
|
||||
DECLARE_EVENT_TABLE()
|
||||
DECLARE_EVENT_TABLE()
|
||||
DECLARE_DYNAMIC_CLASS(wxMDIChildFrame)
|
||||
};
|
||||
|
||||
|
@@ -235,7 +235,7 @@ void MyFrame::OnNewWindow(wxCommandEvent& WXUNUSED(event) )
|
||||
wxMenu *option_menu = new wxMenu;
|
||||
|
||||
option_menu->Append(MDI_REFRESH, "&Refresh picture");
|
||||
option_menu->Append(MDI_CHANGE_TITLE, "Change &title...");
|
||||
option_menu->Append(MDI_CHANGE_TITLE, "Change &title...\tCtrl-T");
|
||||
|
||||
wxMenu *help_menu = new wxMenu;
|
||||
help_menu->Append(MDI_ABOUT, "&About");
|
||||
@@ -429,7 +429,7 @@ void MyChild::OnChangeTitle(wxCommandEvent& WXUNUSED(event))
|
||||
wxString title = wxGetTextFromUser(_T("Enter the new title for MDI child"),
|
||||
_T("MDI sample question"),
|
||||
s_title,
|
||||
this);
|
||||
GetParent()->GetParent());
|
||||
if ( !title )
|
||||
return;
|
||||
|
||||
|
141
src/gtk/mdi.cpp
141
src/gtk/mdi.cpp
@@ -47,13 +47,13 @@ extern wxList wxPendingDelete;
|
||||
// "switch_page"
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
static void
|
||||
static void
|
||||
gtk_mdi_page_change_callback( GtkNotebook *WXUNUSED(widget),
|
||||
GtkNotebookPage *page,
|
||||
gint WXUNUSED(page_num),
|
||||
wxMDIParentFrame *parent )
|
||||
gint WXUNUSED(page_num),
|
||||
wxMDIParentFrame *parent )
|
||||
{
|
||||
if (g_isIdle)
|
||||
if (g_isIdle)
|
||||
wxapp_install_idle_handler();
|
||||
|
||||
// send deactivate event to old child
|
||||
@@ -65,9 +65,9 @@ gtk_mdi_page_change_callback( GtkNotebook *WXUNUSED(widget),
|
||||
event1.SetEventObject( child);
|
||||
child->GetEventHandler()->ProcessEvent( event1 );
|
||||
}
|
||||
|
||||
|
||||
// send activate event to new child
|
||||
|
||||
|
||||
wxMDIClientWindow *client_window = parent->GetClientWindow();
|
||||
if (!client_window)
|
||||
return;
|
||||
@@ -79,16 +79,16 @@ gtk_mdi_page_change_callback( GtkNotebook *WXUNUSED(widget),
|
||||
{
|
||||
wxMDIChildFrame *child_frame = (wxMDIChildFrame *)node->Data();
|
||||
if (child_frame->m_page == page)
|
||||
{
|
||||
{
|
||||
child = child_frame;
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
node = node->Next();
|
||||
}
|
||||
|
||||
|
||||
if (!child)
|
||||
return;
|
||||
|
||||
|
||||
wxActivateEvent event2( wxEVT_ACTIVATE, TRUE, child->GetId() );
|
||||
event2.SetEventObject( child);
|
||||
child->GetEventHandler()->ProcessEvent( event2 );
|
||||
@@ -100,33 +100,23 @@ gtk_mdi_page_change_callback( GtkNotebook *WXUNUSED(widget),
|
||||
|
||||
IMPLEMENT_DYNAMIC_CLASS(wxMDIParentFrame,wxFrame)
|
||||
|
||||
BEGIN_EVENT_TABLE(wxMDIParentFrame, wxFrame)
|
||||
END_EVENT_TABLE()
|
||||
|
||||
wxMDIParentFrame::wxMDIParentFrame()
|
||||
void wxMDIParentFrame::Init()
|
||||
{
|
||||
m_justInserted = FALSE;
|
||||
m_clientWindow = (wxMDIClientWindow *) NULL;
|
||||
}
|
||||
|
||||
wxMDIParentFrame::wxMDIParentFrame( wxWindow *parent,
|
||||
wxWindowID id, const wxString& title,
|
||||
const wxPoint& pos, const wxSize& size,
|
||||
long style, const wxString& name )
|
||||
{
|
||||
m_justInserted = FALSE;
|
||||
m_clientWindow = (wxMDIClientWindow *) NULL;
|
||||
Create( parent, id, title, pos, size, style, name );
|
||||
}
|
||||
|
||||
wxMDIParentFrame::~wxMDIParentFrame()
|
||||
{
|
||||
}
|
||||
|
||||
bool wxMDIParentFrame::Create( wxWindow *parent,
|
||||
wxWindowID id, const wxString& title,
|
||||
const wxPoint& pos, const wxSize& size,
|
||||
long style, const wxString& name )
|
||||
bool wxMDIParentFrame::Create(wxWindow *parent,
|
||||
wxWindowID id,
|
||||
const wxString& title,
|
||||
const wxPoint& pos,
|
||||
const wxSize& size,
|
||||
long style,
|
||||
const wxString& name )
|
||||
{
|
||||
wxFrame::Create( parent, id, title, pos, size, style, name );
|
||||
|
||||
@@ -150,8 +140,8 @@ void wxMDIParentFrame::GtkOnSize( int x, int y, int width, int height )
|
||||
menu_bar->m_y = 0;
|
||||
menu_bar->m_width = m_width;
|
||||
menu_bar->m_height = wxMENU_HEIGHT;
|
||||
gtk_pizza_set_size( GTK_PIZZA(m_mainWidget),
|
||||
menu_bar->m_widget,
|
||||
gtk_pizza_set_size( GTK_PIZZA(m_mainWidget),
|
||||
menu_bar->m_widget,
|
||||
0, 0, m_width, wxMENU_HEIGHT );
|
||||
}
|
||||
|
||||
@@ -179,31 +169,36 @@ void wxMDIParentFrame::OnInternalIdle()
|
||||
wxNode *node = m_clientWindow->GetChildren().First();
|
||||
while (node)
|
||||
{
|
||||
wxMDIChildFrame *child_frame = (wxMDIChildFrame *)node->Data();
|
||||
wxMenuBar *menu_bar = child_frame->m_menuBar;
|
||||
if (child_frame->m_menuBar)
|
||||
wxObject *child = node->Data();
|
||||
wxMDIChildFrame *child_frame = wxDynamicCast(child, wxMDIChildFrame);
|
||||
if ( child_frame )
|
||||
{
|
||||
if (child_frame == active_child_frame)
|
||||
wxMenuBar *menu_bar = child_frame->m_menuBar;
|
||||
if ( menu_bar )
|
||||
{
|
||||
if (menu_bar->Show(TRUE))
|
||||
{
|
||||
menu_bar->m_width = m_width;
|
||||
menu_bar->m_height = wxMENU_HEIGHT;
|
||||
gtk_pizza_set_size( GTK_PIZZA(m_mainWidget),
|
||||
menu_bar->m_widget,
|
||||
0, 0, m_width, wxMENU_HEIGHT );
|
||||
menu_bar->SetInvokingWindow( child_frame );
|
||||
}
|
||||
visible_child_menu = TRUE;
|
||||
if (child_frame == active_child_frame)
|
||||
{
|
||||
if (menu_bar->Show(TRUE))
|
||||
{
|
||||
menu_bar->m_width = m_width;
|
||||
menu_bar->m_height = wxMENU_HEIGHT;
|
||||
gtk_pizza_set_size( GTK_PIZZA(m_mainWidget),
|
||||
menu_bar->m_widget,
|
||||
0, 0, m_width, wxMENU_HEIGHT );
|
||||
menu_bar->SetInvokingWindow( child_frame );
|
||||
}
|
||||
visible_child_menu = TRUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (menu_bar->Show(FALSE))
|
||||
{
|
||||
menu_bar->UnsetInvokingWindow( child_frame );
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (menu_bar->Show(FALSE))
|
||||
{
|
||||
menu_bar->UnsetInvokingWindow( child_frame );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
node = node->Next();
|
||||
}
|
||||
|
||||
@@ -212,21 +207,21 @@ void wxMDIParentFrame::OnInternalIdle()
|
||||
(m_frameMenuBar->IsShown() == visible_child_menu))
|
||||
{
|
||||
if (visible_child_menu)
|
||||
{
|
||||
{
|
||||
m_frameMenuBar->Show( FALSE );
|
||||
m_frameMenuBar->UnsetInvokingWindow( this );
|
||||
}
|
||||
else
|
||||
{
|
||||
m_frameMenuBar->UnsetInvokingWindow( this );
|
||||
}
|
||||
else
|
||||
{
|
||||
m_frameMenuBar->Show( TRUE );
|
||||
m_frameMenuBar->SetInvokingWindow( this );
|
||||
|
||||
m_frameMenuBar->m_width = m_width;
|
||||
m_frameMenuBar->m_height = wxMENU_HEIGHT;
|
||||
gtk_pizza_set_size( GTK_PIZZA(m_mainWidget),
|
||||
m_frameMenuBar->m_widget,
|
||||
0, 0, m_width, wxMENU_HEIGHT );
|
||||
}
|
||||
m_frameMenuBar->SetInvokingWindow( this );
|
||||
|
||||
m_frameMenuBar->m_width = m_width;
|
||||
m_frameMenuBar->m_height = wxMENU_HEIGHT;
|
||||
gtk_pizza_set_size( GTK_PIZZA(m_mainWidget),
|
||||
m_frameMenuBar->m_widget,
|
||||
0, 0, m_width, wxMENU_HEIGHT );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -287,14 +282,6 @@ void wxMDIParentFrame::ActivatePrevious()
|
||||
gtk_notebook_prev_page( GTK_NOTEBOOK(m_clientWindow->m_widget) );
|
||||
}
|
||||
|
||||
void wxMDIParentFrame::OnActivate( wxActivateEvent& WXUNUSED(event) )
|
||||
{
|
||||
}
|
||||
|
||||
void wxMDIParentFrame::OnSysColourChanged( wxSysColourChangedEvent& WXUNUSED(event) )
|
||||
{
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// wxMDIChildFrame
|
||||
//-----------------------------------------------------------------------------
|
||||
@@ -363,8 +350,8 @@ void wxMDIChildFrame::SetMenuBar( wxMenuBar *menu_bar )
|
||||
m_menuBar->SetParent( mdi_frame );
|
||||
|
||||
/* insert the invisible menu bar into the _parent_ mdi frame */
|
||||
gtk_pizza_put( GTK_PIZZA(mdi_frame->m_mainWidget),
|
||||
m_menuBar->m_widget,
|
||||
gtk_pizza_put( GTK_PIZZA(mdi_frame->m_mainWidget),
|
||||
m_menuBar->m_widget,
|
||||
0, 0, mdi_frame->m_width, wxMENU_HEIGHT );
|
||||
}
|
||||
}
|
||||
@@ -383,7 +370,7 @@ void wxMDIChildFrame::Activate()
|
||||
gtk_notebook_set_page( notebook, pageno );
|
||||
#else
|
||||
// the only way I can see to do this under gtk+ 1.0.X would
|
||||
// be to keep track of page numbers, start at first and
|
||||
// be to keep track of page numbers, start at first and
|
||||
// do "next" enough times to get to this page number - messy
|
||||
// - J. Russell Smyth
|
||||
#endif
|
||||
@@ -492,7 +479,7 @@ bool wxMDIClientWindow::CreateClient( wxMDIParentFrame *parent, long style )
|
||||
!CreateBase( parent, -1, wxDefaultPosition, wxDefaultSize, style, wxDefaultValidator, wxT("wxMDIClientWindow") ))
|
||||
{
|
||||
wxFAIL_MSG( wxT("wxMDIClientWindow creation failed") );
|
||||
return FALSE;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
m_widget = gtk_notebook_new();
|
||||
|
141
src/gtk1/mdi.cpp
141
src/gtk1/mdi.cpp
@@ -47,13 +47,13 @@ extern wxList wxPendingDelete;
|
||||
// "switch_page"
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
static void
|
||||
static void
|
||||
gtk_mdi_page_change_callback( GtkNotebook *WXUNUSED(widget),
|
||||
GtkNotebookPage *page,
|
||||
gint WXUNUSED(page_num),
|
||||
wxMDIParentFrame *parent )
|
||||
gint WXUNUSED(page_num),
|
||||
wxMDIParentFrame *parent )
|
||||
{
|
||||
if (g_isIdle)
|
||||
if (g_isIdle)
|
||||
wxapp_install_idle_handler();
|
||||
|
||||
// send deactivate event to old child
|
||||
@@ -65,9 +65,9 @@ gtk_mdi_page_change_callback( GtkNotebook *WXUNUSED(widget),
|
||||
event1.SetEventObject( child);
|
||||
child->GetEventHandler()->ProcessEvent( event1 );
|
||||
}
|
||||
|
||||
|
||||
// send activate event to new child
|
||||
|
||||
|
||||
wxMDIClientWindow *client_window = parent->GetClientWindow();
|
||||
if (!client_window)
|
||||
return;
|
||||
@@ -79,16 +79,16 @@ gtk_mdi_page_change_callback( GtkNotebook *WXUNUSED(widget),
|
||||
{
|
||||
wxMDIChildFrame *child_frame = (wxMDIChildFrame *)node->Data();
|
||||
if (child_frame->m_page == page)
|
||||
{
|
||||
{
|
||||
child = child_frame;
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
node = node->Next();
|
||||
}
|
||||
|
||||
|
||||
if (!child)
|
||||
return;
|
||||
|
||||
|
||||
wxActivateEvent event2( wxEVT_ACTIVATE, TRUE, child->GetId() );
|
||||
event2.SetEventObject( child);
|
||||
child->GetEventHandler()->ProcessEvent( event2 );
|
||||
@@ -100,33 +100,23 @@ gtk_mdi_page_change_callback( GtkNotebook *WXUNUSED(widget),
|
||||
|
||||
IMPLEMENT_DYNAMIC_CLASS(wxMDIParentFrame,wxFrame)
|
||||
|
||||
BEGIN_EVENT_TABLE(wxMDIParentFrame, wxFrame)
|
||||
END_EVENT_TABLE()
|
||||
|
||||
wxMDIParentFrame::wxMDIParentFrame()
|
||||
void wxMDIParentFrame::Init()
|
||||
{
|
||||
m_justInserted = FALSE;
|
||||
m_clientWindow = (wxMDIClientWindow *) NULL;
|
||||
}
|
||||
|
||||
wxMDIParentFrame::wxMDIParentFrame( wxWindow *parent,
|
||||
wxWindowID id, const wxString& title,
|
||||
const wxPoint& pos, const wxSize& size,
|
||||
long style, const wxString& name )
|
||||
{
|
||||
m_justInserted = FALSE;
|
||||
m_clientWindow = (wxMDIClientWindow *) NULL;
|
||||
Create( parent, id, title, pos, size, style, name );
|
||||
}
|
||||
|
||||
wxMDIParentFrame::~wxMDIParentFrame()
|
||||
{
|
||||
}
|
||||
|
||||
bool wxMDIParentFrame::Create( wxWindow *parent,
|
||||
wxWindowID id, const wxString& title,
|
||||
const wxPoint& pos, const wxSize& size,
|
||||
long style, const wxString& name )
|
||||
bool wxMDIParentFrame::Create(wxWindow *parent,
|
||||
wxWindowID id,
|
||||
const wxString& title,
|
||||
const wxPoint& pos,
|
||||
const wxSize& size,
|
||||
long style,
|
||||
const wxString& name )
|
||||
{
|
||||
wxFrame::Create( parent, id, title, pos, size, style, name );
|
||||
|
||||
@@ -150,8 +140,8 @@ void wxMDIParentFrame::GtkOnSize( int x, int y, int width, int height )
|
||||
menu_bar->m_y = 0;
|
||||
menu_bar->m_width = m_width;
|
||||
menu_bar->m_height = wxMENU_HEIGHT;
|
||||
gtk_pizza_set_size( GTK_PIZZA(m_mainWidget),
|
||||
menu_bar->m_widget,
|
||||
gtk_pizza_set_size( GTK_PIZZA(m_mainWidget),
|
||||
menu_bar->m_widget,
|
||||
0, 0, m_width, wxMENU_HEIGHT );
|
||||
}
|
||||
|
||||
@@ -179,31 +169,36 @@ void wxMDIParentFrame::OnInternalIdle()
|
||||
wxNode *node = m_clientWindow->GetChildren().First();
|
||||
while (node)
|
||||
{
|
||||
wxMDIChildFrame *child_frame = (wxMDIChildFrame *)node->Data();
|
||||
wxMenuBar *menu_bar = child_frame->m_menuBar;
|
||||
if (child_frame->m_menuBar)
|
||||
wxObject *child = node->Data();
|
||||
wxMDIChildFrame *child_frame = wxDynamicCast(child, wxMDIChildFrame);
|
||||
if ( child_frame )
|
||||
{
|
||||
if (child_frame == active_child_frame)
|
||||
wxMenuBar *menu_bar = child_frame->m_menuBar;
|
||||
if ( menu_bar )
|
||||
{
|
||||
if (menu_bar->Show(TRUE))
|
||||
{
|
||||
menu_bar->m_width = m_width;
|
||||
menu_bar->m_height = wxMENU_HEIGHT;
|
||||
gtk_pizza_set_size( GTK_PIZZA(m_mainWidget),
|
||||
menu_bar->m_widget,
|
||||
0, 0, m_width, wxMENU_HEIGHT );
|
||||
menu_bar->SetInvokingWindow( child_frame );
|
||||
}
|
||||
visible_child_menu = TRUE;
|
||||
if (child_frame == active_child_frame)
|
||||
{
|
||||
if (menu_bar->Show(TRUE))
|
||||
{
|
||||
menu_bar->m_width = m_width;
|
||||
menu_bar->m_height = wxMENU_HEIGHT;
|
||||
gtk_pizza_set_size( GTK_PIZZA(m_mainWidget),
|
||||
menu_bar->m_widget,
|
||||
0, 0, m_width, wxMENU_HEIGHT );
|
||||
menu_bar->SetInvokingWindow( child_frame );
|
||||
}
|
||||
visible_child_menu = TRUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (menu_bar->Show(FALSE))
|
||||
{
|
||||
menu_bar->UnsetInvokingWindow( child_frame );
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (menu_bar->Show(FALSE))
|
||||
{
|
||||
menu_bar->UnsetInvokingWindow( child_frame );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
node = node->Next();
|
||||
}
|
||||
|
||||
@@ -212,21 +207,21 @@ void wxMDIParentFrame::OnInternalIdle()
|
||||
(m_frameMenuBar->IsShown() == visible_child_menu))
|
||||
{
|
||||
if (visible_child_menu)
|
||||
{
|
||||
{
|
||||
m_frameMenuBar->Show( FALSE );
|
||||
m_frameMenuBar->UnsetInvokingWindow( this );
|
||||
}
|
||||
else
|
||||
{
|
||||
m_frameMenuBar->UnsetInvokingWindow( this );
|
||||
}
|
||||
else
|
||||
{
|
||||
m_frameMenuBar->Show( TRUE );
|
||||
m_frameMenuBar->SetInvokingWindow( this );
|
||||
|
||||
m_frameMenuBar->m_width = m_width;
|
||||
m_frameMenuBar->m_height = wxMENU_HEIGHT;
|
||||
gtk_pizza_set_size( GTK_PIZZA(m_mainWidget),
|
||||
m_frameMenuBar->m_widget,
|
||||
0, 0, m_width, wxMENU_HEIGHT );
|
||||
}
|
||||
m_frameMenuBar->SetInvokingWindow( this );
|
||||
|
||||
m_frameMenuBar->m_width = m_width;
|
||||
m_frameMenuBar->m_height = wxMENU_HEIGHT;
|
||||
gtk_pizza_set_size( GTK_PIZZA(m_mainWidget),
|
||||
m_frameMenuBar->m_widget,
|
||||
0, 0, m_width, wxMENU_HEIGHT );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -287,14 +282,6 @@ void wxMDIParentFrame::ActivatePrevious()
|
||||
gtk_notebook_prev_page( GTK_NOTEBOOK(m_clientWindow->m_widget) );
|
||||
}
|
||||
|
||||
void wxMDIParentFrame::OnActivate( wxActivateEvent& WXUNUSED(event) )
|
||||
{
|
||||
}
|
||||
|
||||
void wxMDIParentFrame::OnSysColourChanged( wxSysColourChangedEvent& WXUNUSED(event) )
|
||||
{
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// wxMDIChildFrame
|
||||
//-----------------------------------------------------------------------------
|
||||
@@ -363,8 +350,8 @@ void wxMDIChildFrame::SetMenuBar( wxMenuBar *menu_bar )
|
||||
m_menuBar->SetParent( mdi_frame );
|
||||
|
||||
/* insert the invisible menu bar into the _parent_ mdi frame */
|
||||
gtk_pizza_put( GTK_PIZZA(mdi_frame->m_mainWidget),
|
||||
m_menuBar->m_widget,
|
||||
gtk_pizza_put( GTK_PIZZA(mdi_frame->m_mainWidget),
|
||||
m_menuBar->m_widget,
|
||||
0, 0, mdi_frame->m_width, wxMENU_HEIGHT );
|
||||
}
|
||||
}
|
||||
@@ -383,7 +370,7 @@ void wxMDIChildFrame::Activate()
|
||||
gtk_notebook_set_page( notebook, pageno );
|
||||
#else
|
||||
// the only way I can see to do this under gtk+ 1.0.X would
|
||||
// be to keep track of page numbers, start at first and
|
||||
// be to keep track of page numbers, start at first and
|
||||
// do "next" enough times to get to this page number - messy
|
||||
// - J. Russell Smyth
|
||||
#endif
|
||||
@@ -492,7 +479,7 @@ bool wxMDIClientWindow::CreateClient( wxMDIParentFrame *parent, long style )
|
||||
!CreateBase( parent, -1, wxDefaultPosition, wxDefaultSize, style, wxDefaultValidator, wxT("wxMDIClientWindow") ))
|
||||
{
|
||||
wxFAIL_MSG( wxT("wxMDIClientWindow creation failed") );
|
||||
return FALSE;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
m_widget = gtk_notebook_new();
|
||||
|
Reference in New Issue
Block a user