A bit more Unicode compilation.

Window insertion corrections for window, frame, dialog, mdi.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@2597 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Robert Roebling
1999-05-30 16:20:42 +00:00
parent f3bd1796ca
commit ddb6bc7126
14 changed files with 132 additions and 51 deletions

View File

@@ -49,7 +49,7 @@ class wxFrame: public wxWindow
DECLARE_DYNAMIC_CLASS(wxFrame) DECLARE_DYNAMIC_CLASS(wxFrame)
public: public:
wxFrame(); wxFrame() { Init(); }
wxFrame( wxWindow *parent, wxWindowID id, const wxString &title, wxFrame( wxWindow *parent, wxWindowID id, const wxString &title,
const wxPoint &pos = wxDefaultPosition, const wxSize &size = wxDefaultSize, const wxPoint &pos = wxDefaultPosition, const wxSize &size = wxDefaultSize,
long style = wxDEFAULT_FRAME_STYLE, const wxString &name = wxFrameNameStr ); long style = wxDEFAULT_FRAME_STYLE, const wxString &name = wxFrameNameStr );
@@ -120,6 +120,9 @@ public:
bool m_insertInClientArea; /* not from within OnCreateXXX */ bool m_insertInClientArea; /* not from within OnCreateXXX */
protected: protected:
// common part of all ctors
void Init();
virtual void DoSetSize(int x, int y, virtual void DoSetSize(int x, int y,
int width, int height, int width, int height,
int sizeFlags = wxSIZE_AUTO); int sizeFlags = wxSIZE_AUTO);

View File

@@ -123,7 +123,7 @@ class wxMDIChildFrame: public wxFrame
virtual wxStatusBar* CreateStatusBar( int WXUNUSED(number)=1, long WXUNUSED(style)=1, virtual wxStatusBar* CreateStatusBar( int WXUNUSED(number)=1, long WXUNUSED(style)=1,
wxWindowID WXUNUSED(id)=1, const wxString& WXUNUSED(name)=WXSTRINGCAST NULL ) {return (wxStatusBar*)NULL; } wxWindowID WXUNUSED(id)=1, const wxString& WXUNUSED(name)=WXSTRINGCAST NULL ) {return (wxStatusBar*)NULL; }
virtual wxStatusBar *GetStatusBar() const { return (wxStatusBar*)NULL; } virtual wxStatusBar *GetStatusBar() const { return (wxStatusBar*)NULL; }
virtual void SetStatusText( const wxString &WXUNUSED(text), int WXUNUSED(number) ) {} virtual void SetStatusText( const wxString &WXUNUSED(text), int WXUNUSED(number)=0 ) {}
virtual void SetStatusWidths( int WXUNUSED(n), const int WXUNUSED(widths_field)[] ) {} virtual void SetStatusWidths( int WXUNUSED(n), const int WXUNUSED(widths_field)[] ) {}
// no size hints // no size hints

View File

@@ -125,8 +125,10 @@ public:
const wxSize &size, long style, const wxString &name ); const wxSize &size, long style, const wxString &name );
void PostCreation(); void PostCreation();
void InsertChild(wxWindow *child) { (*m_insertCallback)(this, child); } /* internal addition of child windows. differs from class
void DoAddChild(wxWindow *child) { AddChild(child); InsertChild(child); } to class not by using virtual functions but by using
the m_insertCallback */
void DoAddChild(wxWindow *child);
/* the methods below are required because many native widgets /* the methods below are required because many native widgets
are composed of several subwidgets and setting a style for are composed of several subwidgets and setting a style for
@@ -139,14 +141,14 @@ public:
virtual bool IsOwnGtkWindow( GdkWindow *window ); virtual bool IsOwnGtkWindow( GdkWindow *window );
void ConnectWidget( GtkWidget *widget ); void ConnectWidget( GtkWidget *widget );
// creates a new widget style if none is there /* creates a new widget style if none is there
// and sets m_widgetStyle to this value. and sets m_widgetStyle to this value. */
GtkStyle *GetWidgetStyle(); GtkStyle *GetWidgetStyle();
// called by SetFont() and SetXXXColour etc /* called by SetFont() and SetXXXColour etc */
void SetWidgetStyle(); void SetWidgetStyle();
// overridden in many GTK widgets /* overridden in many GTK widgets */
virtual void ApplyWidgetStyle(); virtual void ApplyWidgetStyle();
#if wxUSE_TOOLTIPS #if wxUSE_TOOLTIPS
@@ -162,11 +164,11 @@ public:
int m_x, m_y; int m_x, m_y;
int m_width, m_height; int m_width, m_height;
// see the docs in src/gtk/window.cpp /* see the docs in src/gtk/window.cpp */
GtkWidget *m_widget; GtkWidget *m_widget;
GtkWidget *m_wxwindow; GtkWidget *m_wxwindow;
// scrolling stuff /* scrolling stuff */
GtkAdjustment *m_hAdjust,*m_vAdjust; GtkAdjustment *m_hAdjust,*m_vAdjust;
float m_oldHorizontalPos; float m_oldHorizontalPos;
float m_oldVerticalPos; float m_oldVerticalPos;

View File

@@ -49,7 +49,7 @@ class wxFrame: public wxWindow
DECLARE_DYNAMIC_CLASS(wxFrame) DECLARE_DYNAMIC_CLASS(wxFrame)
public: public:
wxFrame(); wxFrame() { Init(); }
wxFrame( wxWindow *parent, wxWindowID id, const wxString &title, wxFrame( wxWindow *parent, wxWindowID id, const wxString &title,
const wxPoint &pos = wxDefaultPosition, const wxSize &size = wxDefaultSize, const wxPoint &pos = wxDefaultPosition, const wxSize &size = wxDefaultSize,
long style = wxDEFAULT_FRAME_STYLE, const wxString &name = wxFrameNameStr ); long style = wxDEFAULT_FRAME_STYLE, const wxString &name = wxFrameNameStr );
@@ -120,6 +120,9 @@ public:
bool m_insertInClientArea; /* not from within OnCreateXXX */ bool m_insertInClientArea; /* not from within OnCreateXXX */
protected: protected:
// common part of all ctors
void Init();
virtual void DoSetSize(int x, int y, virtual void DoSetSize(int x, int y,
int width, int height, int width, int height,
int sizeFlags = wxSIZE_AUTO); int sizeFlags = wxSIZE_AUTO);

View File

@@ -123,7 +123,7 @@ class wxMDIChildFrame: public wxFrame
virtual wxStatusBar* CreateStatusBar( int WXUNUSED(number)=1, long WXUNUSED(style)=1, virtual wxStatusBar* CreateStatusBar( int WXUNUSED(number)=1, long WXUNUSED(style)=1,
wxWindowID WXUNUSED(id)=1, const wxString& WXUNUSED(name)=WXSTRINGCAST NULL ) {return (wxStatusBar*)NULL; } wxWindowID WXUNUSED(id)=1, const wxString& WXUNUSED(name)=WXSTRINGCAST NULL ) {return (wxStatusBar*)NULL; }
virtual wxStatusBar *GetStatusBar() const { return (wxStatusBar*)NULL; } virtual wxStatusBar *GetStatusBar() const { return (wxStatusBar*)NULL; }
virtual void SetStatusText( const wxString &WXUNUSED(text), int WXUNUSED(number) ) {} virtual void SetStatusText( const wxString &WXUNUSED(text), int WXUNUSED(number)=0 ) {}
virtual void SetStatusWidths( int WXUNUSED(n), const int WXUNUSED(widths_field)[] ) {} virtual void SetStatusWidths( int WXUNUSED(n), const int WXUNUSED(widths_field)[] ) {}
// no size hints // no size hints

View File

@@ -125,8 +125,10 @@ public:
const wxSize &size, long style, const wxString &name ); const wxSize &size, long style, const wxString &name );
void PostCreation(); void PostCreation();
void InsertChild(wxWindow *child) { (*m_insertCallback)(this, child); } /* internal addition of child windows. differs from class
void DoAddChild(wxWindow *child) { AddChild(child); InsertChild(child); } to class not by using virtual functions but by using
the m_insertCallback */
void DoAddChild(wxWindow *child);
/* the methods below are required because many native widgets /* the methods below are required because many native widgets
are composed of several subwidgets and setting a style for are composed of several subwidgets and setting a style for
@@ -139,14 +141,14 @@ public:
virtual bool IsOwnGtkWindow( GdkWindow *window ); virtual bool IsOwnGtkWindow( GdkWindow *window );
void ConnectWidget( GtkWidget *widget ); void ConnectWidget( GtkWidget *widget );
// creates a new widget style if none is there /* creates a new widget style if none is there
// and sets m_widgetStyle to this value. and sets m_widgetStyle to this value. */
GtkStyle *GetWidgetStyle(); GtkStyle *GetWidgetStyle();
// called by SetFont() and SetXXXColour etc /* called by SetFont() and SetXXXColour etc */
void SetWidgetStyle(); void SetWidgetStyle();
// overridden in many GTK widgets /* overridden in many GTK widgets */
virtual void ApplyWidgetStyle(); virtual void ApplyWidgetStyle();
#if wxUSE_TOOLTIPS #if wxUSE_TOOLTIPS
@@ -162,11 +164,11 @@ public:
int m_x, m_y; int m_x, m_y;
int m_width, m_height; int m_width, m_height;
// see the docs in src/gtk/window.cpp /* see the docs in src/gtk/window.cpp */
GtkWidget *m_widget; GtkWidget *m_widget;
GtkWidget *m_wxwindow; GtkWidget *m_wxwindow;
// scrolling stuff /* scrolling stuff */
GtkAdjustment *m_hAdjust,*m_vAdjust; GtkAdjustment *m_hAdjust,*m_vAdjust;
float m_oldHorizontalPos; float m_oldHorizontalPos;
float m_oldVerticalPos; float m_oldVerticalPos;

View File

@@ -171,7 +171,8 @@ END_EVENT_TABLE()
void MyFrame::LoadFile(wxCommandEvent& WXUNUSED(event) ) void MyFrame::LoadFile(wxCommandEvent& WXUNUSED(event) )
{ {
wxString s = wxFileSelector("Load text file", (const char *) NULL, (const char *) NULL, (const char *) NULL, "*.txt"); wxString s = wxFileSelector( _T("Load text file"), (const wxChar *) NULL,
(const wxChar *) NULL, (const wxChar *) NULL, _T("*.txt") );
if (s != "") if (s != "")
{ {
#ifdef __WXMSW__ #ifdef __WXMSW__

View File

@@ -172,7 +172,7 @@ void MyFrame::OnClose(wxCloseEvent& event)
if ( event.CanVeto() && (gs_nFrames > 0) ) if ( event.CanVeto() && (gs_nFrames > 0) )
{ {
wxString msg; wxString msg;
msg.Printf("%d windows still open, close anyhow?", gs_nFrames); msg.Printf(_T("%d windows still open, close anyhow?"), gs_nFrames);
if ( wxMessageBox(msg, "Please confirm", if ( wxMessageBox(msg, "Please confirm",
wxICON_QUESTION | wxYES_NO) != wxYES ) wxICON_QUESTION | wxYES_NO) != wxYES )
{ {
@@ -205,7 +205,7 @@ void MyFrame::OnNewWindow(wxCommandEvent& WXUNUSED(event) )
wxDEFAULT_FRAME_STYLE); wxDEFAULT_FRAME_STYLE);
wxString title; wxString title;
title.Printf("Canvas Frame %d", ++gs_nFrames); title.Printf(_T("Canvas Frame %d"), ++gs_nFrames);
subframe->SetTitle(title); subframe->SetTitle(title);

View File

@@ -169,6 +169,32 @@ gtk_dialog_map_callback( GtkWidget *widget, wxDialog *win )
return FALSE; return FALSE;
} }
//-----------------------------------------------------------------------------
// InsertChild for wxDialog
//-----------------------------------------------------------------------------
/* Callback for wxFrame. This very strange beast has to be used because
* C++ has no virtual methods in a constructor. We have to emulate a
* virtual function here as wxWindows requires different ways to insert
* a child in container classes. */
static void wxInsertChildInDialog( wxDialog* parent, wxWindow* child )
{
gtk_myfixed_put( GTK_MYFIXED(parent->m_wxwindow),
GTK_WIDGET(child->m_widget),
child->m_x,
child->m_y,
child->m_width,
child->m_height );
if (parent->HasFlag(wxTAB_TRAVERSAL))
{
/* we now allow a window to get the focus as long as it
doesn't have any children. */
GTK_WIDGET_UNSET_FLAGS( parent->m_wxwindow, GTK_CAN_FOCUS );
}
}
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
// wxDialog // wxDialog
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
@@ -211,6 +237,8 @@ bool wxDialog::Create( wxWindow *parent,
PreCreation( parent, id, pos, size, style, name ); PreCreation( parent, id, pos, size, style, name );
m_insertCallback = (wxInsertChildFunction) wxInsertChildInDialog;
m_widget = gtk_window_new( GTK_WINDOW_TOPLEVEL ); m_widget = gtk_window_new( GTK_WINDOW_TOPLEVEL );
if (!name.IsEmpty()) if (!name.IsEmpty())

View File

@@ -304,7 +304,7 @@ END_EVENT_TABLE()
IMPLEMENT_DYNAMIC_CLASS(wxFrame,wxWindow) IMPLEMENT_DYNAMIC_CLASS(wxFrame,wxWindow)
wxFrame::wxFrame() void wxFrame::Init()
{ {
m_frameMenuBar = (wxMenuBar *) NULL; m_frameMenuBar = (wxMenuBar *) NULL;
m_frameStatusBar = (wxStatusBar *) NULL; m_frameStatusBar = (wxStatusBar *) NULL;
@@ -315,7 +315,6 @@ wxFrame::wxFrame()
m_mainWidget = (GtkWidget*) NULL; m_mainWidget = (GtkWidget*) NULL;
m_menuBarDetached = FALSE; m_menuBarDetached = FALSE;
m_toolBarDetached = FALSE; m_toolBarDetached = FALSE;
m_insertCallback = (wxInsertChildFunction) NULL;
m_insertInClientArea = TRUE; m_insertInClientArea = TRUE;
} }
@@ -323,17 +322,8 @@ wxFrame::wxFrame( wxWindow *parent, wxWindowID id, const wxString &title,
const wxPoint &pos, const wxSize &size, const wxPoint &pos, const wxSize &size,
long style, const wxString &name ) long style, const wxString &name )
{ {
m_frameMenuBar = (wxMenuBar *) NULL; Init();
m_frameStatusBar = (wxStatusBar *) NULL;
m_frameToolBar = (wxToolBar *) NULL;
m_sizeSet = FALSE;
m_miniEdge = 0;
m_miniTitle = 0;
m_mainWidget = (GtkWidget*) NULL;
m_menuBarDetached = FALSE;
m_toolBarDetached = FALSE;
m_insertCallback = (wxInsertChildFunction) NULL;
m_insertInClientArea = TRUE;
Create( parent, id, title, pos, size, style, name ); Create( parent, id, title, pos, size, style, name );
} }

View File

@@ -1625,7 +1625,7 @@ void wxWindow::Init()
m_scrollGC = (GdkGC*) NULL; m_scrollGC = (GdkGC*) NULL;
m_widgetStyle = (GtkStyle*) NULL; m_widgetStyle = (GtkStyle*) NULL;
m_insertCallback = wxInsertChildInWindow; m_insertCallback = (wxInsertChildFunction) NULL;
m_isStaticBox = FALSE; m_isStaticBox = FALSE;
m_acceptsFocus = FALSE; m_acceptsFocus = FALSE;
@@ -1651,6 +1651,8 @@ bool wxWindow::Create( wxWindow *parent, wxWindowID id,
{ {
PreCreation( parent, id, pos, size, style, name ); PreCreation( parent, id, pos, size, style, name );
m_insertCallback = wxInsertChildInWindow;
m_widget = gtk_scrolled_window_new( (GtkAdjustment *) NULL, (GtkAdjustment *) NULL ); m_widget = gtk_scrolled_window_new( (GtkAdjustment *) NULL, (GtkAdjustment *) NULL );
GTK_WIDGET_UNSET_FLAGS( m_widget, GTK_CAN_FOCUS ); GTK_WIDGET_UNSET_FLAGS( m_widget, GTK_CAN_FOCUS );
@@ -2366,6 +2368,21 @@ bool wxWindow::Reparent( wxWindow *newParent )
return TRUE; return TRUE;
} }
void wxWindow::DoAddChild(wxWindow *child)
{
wxASSERT_MSG( (m_widget != NULL), _T("invalid window") );
wxASSERT_MSG( (child != NULL), _T("invalid child window") );
wxASSERT_MSG( (m_insertCallback != NULL), _T("invalid child insertion function") );
/* add to list */
AddChild( child );
/* insert GTK representation */
(*m_insertCallback)(this, child);
}
void wxWindow::Raise() void wxWindow::Raise()
{ {
wxCHECK_RET( (m_widget != NULL), _T("invalid window") ); wxCHECK_RET( (m_widget != NULL), _T("invalid window") );

View File

@@ -169,6 +169,32 @@ gtk_dialog_map_callback( GtkWidget *widget, wxDialog *win )
return FALSE; return FALSE;
} }
//-----------------------------------------------------------------------------
// InsertChild for wxDialog
//-----------------------------------------------------------------------------
/* Callback for wxFrame. This very strange beast has to be used because
* C++ has no virtual methods in a constructor. We have to emulate a
* virtual function here as wxWindows requires different ways to insert
* a child in container classes. */
static void wxInsertChildInDialog( wxDialog* parent, wxWindow* child )
{
gtk_myfixed_put( GTK_MYFIXED(parent->m_wxwindow),
GTK_WIDGET(child->m_widget),
child->m_x,
child->m_y,
child->m_width,
child->m_height );
if (parent->HasFlag(wxTAB_TRAVERSAL))
{
/* we now allow a window to get the focus as long as it
doesn't have any children. */
GTK_WIDGET_UNSET_FLAGS( parent->m_wxwindow, GTK_CAN_FOCUS );
}
}
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
// wxDialog // wxDialog
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
@@ -211,6 +237,8 @@ bool wxDialog::Create( wxWindow *parent,
PreCreation( parent, id, pos, size, style, name ); PreCreation( parent, id, pos, size, style, name );
m_insertCallback = (wxInsertChildFunction) wxInsertChildInDialog;
m_widget = gtk_window_new( GTK_WINDOW_TOPLEVEL ); m_widget = gtk_window_new( GTK_WINDOW_TOPLEVEL );
if (!name.IsEmpty()) if (!name.IsEmpty())

View File

@@ -304,7 +304,7 @@ END_EVENT_TABLE()
IMPLEMENT_DYNAMIC_CLASS(wxFrame,wxWindow) IMPLEMENT_DYNAMIC_CLASS(wxFrame,wxWindow)
wxFrame::wxFrame() void wxFrame::Init()
{ {
m_frameMenuBar = (wxMenuBar *) NULL; m_frameMenuBar = (wxMenuBar *) NULL;
m_frameStatusBar = (wxStatusBar *) NULL; m_frameStatusBar = (wxStatusBar *) NULL;
@@ -315,7 +315,6 @@ wxFrame::wxFrame()
m_mainWidget = (GtkWidget*) NULL; m_mainWidget = (GtkWidget*) NULL;
m_menuBarDetached = FALSE; m_menuBarDetached = FALSE;
m_toolBarDetached = FALSE; m_toolBarDetached = FALSE;
m_insertCallback = (wxInsertChildFunction) NULL;
m_insertInClientArea = TRUE; m_insertInClientArea = TRUE;
} }
@@ -323,17 +322,8 @@ wxFrame::wxFrame( wxWindow *parent, wxWindowID id, const wxString &title,
const wxPoint &pos, const wxSize &size, const wxPoint &pos, const wxSize &size,
long style, const wxString &name ) long style, const wxString &name )
{ {
m_frameMenuBar = (wxMenuBar *) NULL; Init();
m_frameStatusBar = (wxStatusBar *) NULL;
m_frameToolBar = (wxToolBar *) NULL;
m_sizeSet = FALSE;
m_miniEdge = 0;
m_miniTitle = 0;
m_mainWidget = (GtkWidget*) NULL;
m_menuBarDetached = FALSE;
m_toolBarDetached = FALSE;
m_insertCallback = (wxInsertChildFunction) NULL;
m_insertInClientArea = TRUE;
Create( parent, id, title, pos, size, style, name ); Create( parent, id, title, pos, size, style, name );
} }

View File

@@ -1625,7 +1625,7 @@ void wxWindow::Init()
m_scrollGC = (GdkGC*) NULL; m_scrollGC = (GdkGC*) NULL;
m_widgetStyle = (GtkStyle*) NULL; m_widgetStyle = (GtkStyle*) NULL;
m_insertCallback = wxInsertChildInWindow; m_insertCallback = (wxInsertChildFunction) NULL;
m_isStaticBox = FALSE; m_isStaticBox = FALSE;
m_acceptsFocus = FALSE; m_acceptsFocus = FALSE;
@@ -1651,6 +1651,8 @@ bool wxWindow::Create( wxWindow *parent, wxWindowID id,
{ {
PreCreation( parent, id, pos, size, style, name ); PreCreation( parent, id, pos, size, style, name );
m_insertCallback = wxInsertChildInWindow;
m_widget = gtk_scrolled_window_new( (GtkAdjustment *) NULL, (GtkAdjustment *) NULL ); m_widget = gtk_scrolled_window_new( (GtkAdjustment *) NULL, (GtkAdjustment *) NULL );
GTK_WIDGET_UNSET_FLAGS( m_widget, GTK_CAN_FOCUS ); GTK_WIDGET_UNSET_FLAGS( m_widget, GTK_CAN_FOCUS );
@@ -2366,6 +2368,21 @@ bool wxWindow::Reparent( wxWindow *newParent )
return TRUE; return TRUE;
} }
void wxWindow::DoAddChild(wxWindow *child)
{
wxASSERT_MSG( (m_widget != NULL), _T("invalid window") );
wxASSERT_MSG( (child != NULL), _T("invalid child window") );
wxASSERT_MSG( (m_insertCallback != NULL), _T("invalid child insertion function") );
/* add to list */
AddChild( child );
/* insert GTK representation */
(*m_insertCallback)(this, child);
}
void wxWindow::Raise() void wxWindow::Raise()
{ {
wxCHECK_RET( (m_widget != NULL), _T("invalid window") ); wxCHECK_RET( (m_widget != NULL), _T("invalid window") );