Rewrite generic message box
Minor corrections to frame/resizing Update for wxPython git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@2322 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
parent
8d72073ee3
commit
15b24b148a
@ -35,11 +35,110 @@ working the same as described in the wxWindows documents the best
|
||||
thing to do is to scan through the wxPython sources, especially the .i
|
||||
files, as that is where the interfaces for wxPython are defined.
|
||||
|
||||
Currently this extension module is designed such that the entire
|
||||
application will be written in Python. I havn't tried it yet, but I
|
||||
am sure that attempting to embed wxPython in a C++ wxWindows
|
||||
application will cause problems. However there is a plan to support
|
||||
this in the future.
|
||||
I have reports of successfully embedding wxPython within a wxWindows
|
||||
C++ app on GTK. It hasn't yet been attempted on MSW (to my knowledge)
|
||||
so I don't know how successful such an attempt would be. However it
|
||||
is certainly possible.
|
||||
|
||||
|
||||
|
||||
Getting Help
|
||||
------------
|
||||
|
||||
Since wxPython is a blending of multiple technologies, help comes from
|
||||
multiple sources. See the http://alldunn.com/wxPython for details on
|
||||
various sources of help, but probably the best source is the
|
||||
wxPython-users mail list. You can view the archive or subscribe by
|
||||
going to
|
||||
|
||||
http://starship.python.net/mailman/listinfo/wxpython-users
|
||||
|
||||
Or you can send mail directly to the list using this address:
|
||||
|
||||
wxpython-users@starship.python.net
|
||||
|
||||
|
||||
|
||||
What's new in 2.0b9
|
||||
-------------------
|
||||
Bug fix for ListCtrl in test4.py (Was a missing file... DSM!)
|
||||
|
||||
Bug fix for occassional GPF on Win32 systems upon termination of a
|
||||
wxPython application.
|
||||
|
||||
Added wxListBox.GetSelections returning selections as a Tuple.
|
||||
|
||||
Added a wxTreeItemData that is able to hold any Python object and be
|
||||
associated with items in a wxTreeCtrl. Added test pytree.py to show
|
||||
this feature off.
|
||||
|
||||
Added wxSafeYield function.
|
||||
|
||||
OpenGL Canvas can be optionally compiled in to wxPython.
|
||||
|
||||
Awesome new Demo Framework for showing off wxPython and for learning
|
||||
how it all works.
|
||||
|
||||
The pre-built Win32 version is no longer distributing the wxWindows
|
||||
DLL. It is statically linked with the wxWindows library instead.
|
||||
|
||||
Added a couple missing items from the docs.
|
||||
|
||||
Added wxImage, wxImageHandler, wxPNGHandler, wxJPEGHandler,
|
||||
wxGIFHandler and wxBMPHandler.
|
||||
|
||||
Added new methods to wxTextCtrl.
|
||||
|
||||
|
||||
|
||||
What's new in 2.0b8
|
||||
-------------------
|
||||
Support for using Python threads in wxPython apps.
|
||||
|
||||
Several missing methods from various classes.
|
||||
|
||||
Various bug fixes.
|
||||
|
||||
|
||||
|
||||
What's new in 2.0b7
|
||||
-------------------
|
||||
Added DLG_PNT and DLG_SZE convienience methods to wxWindow class.
|
||||
|
||||
Added missing constructor and other methods for wxMenuItem.
|
||||
|
||||
|
||||
|
||||
What's new in 2.0b6
|
||||
-------------------
|
||||
Just a quickie update to fix the self-installer to be compatible with
|
||||
Python 1.5.2b2's Registry settings.
|
||||
|
||||
|
||||
What's new in 2.0b5
|
||||
-------------------
|
||||
Well obviously the numbering scheme has changed. I did this to
|
||||
reflect the fact that this truly is the second major revision of
|
||||
wxPython, (well the third actually if you count the one I did for
|
||||
wxWindows 1.68 and then threw away...) and also that it is associated
|
||||
with the 2.0 version of wxWindows.
|
||||
|
||||
I have finally started documenting wxPython. There are several pages
|
||||
in the wxWindows documentation tree specifically about wxPython, and I
|
||||
have added notes within the class references about where wxPython
|
||||
diverges from wxWindows.
|
||||
|
||||
Added wxWindow_FromHWND(hWnd) for wxMSW to construct a wxWindow from a
|
||||
window handle. If you can get the window handle into the python code,
|
||||
it should just work... More news on this later.
|
||||
|
||||
Added wxImageList, wxToolTip.
|
||||
|
||||
Re-enabled wxConfig.DeleteAll() since it is reportedly fixed for the
|
||||
wxRegConfig class.
|
||||
|
||||
As usual, some bug fixes, tweaks, etc.
|
||||
|
||||
|
||||
|
||||
What's new in 0.5.3
|
||||
@ -142,11 +241,11 @@ there, make sure wxUSE_OWNER_DRAWN is also set to 1.
|
||||
|
||||
2. Change into the $(WXWIN)/utils/wxPython/src directory.
|
||||
|
||||
3. Edit makefile.nt and specify where your python installation is at.
|
||||
3. Edit makefile.vc and specify where your python installation is at.
|
||||
You may also want to fiddle with the TARGETDIR variable as described
|
||||
above.
|
||||
|
||||
4. Run nmake -f makefile.nt
|
||||
4. Run nmake -f makefile.vc
|
||||
|
||||
5. If it builds successfully, congratulations! Move on to the next
|
||||
step. If not then you can try mailing me for help. Also, I will
|
||||
@ -169,7 +268,7 @@ version of Python either from the command line or from a shortcut.
|
||||
Unix
|
||||
----
|
||||
|
||||
1. Change into the wxPython/src directory.
|
||||
1. Change into the $(WXWIN)/utils/wxPython/src directory.
|
||||
|
||||
2. Edit Setup.in and ensure that the flags, directories, and toolkit
|
||||
options are correct. See the above commentary about TARGETDIR. There
|
||||
@ -188,18 +287,19 @@ module:
|
||||
make
|
||||
|
||||
4b. Log in as root. [Robert Roebling]
|
||||
|
||||
|
||||
make install
|
||||
|
||||
4c. Log out from root. [Robert Roebling]
|
||||
|
||||
|
||||
5. Change to the wxPython/tests directory.
|
||||
5. Change to the $(WXWIN)/utils/wxPython/tests directory.
|
||||
|
||||
6. Try executing the test programs. For example:
|
||||
|
||||
python test1.py
|
||||
|
||||
|
||||
|
||||
|
||||
------------------------
|
||||
10/20/1998
|
||||
|
||||
|
@ -11,7 +11,7 @@ CCC=g++
|
||||
WXWIN=~/wxWindows
|
||||
GENCODEDIR=gtk
|
||||
srcdir=$(GENCODEDIR)
|
||||
WX_CONFIG_CFLAGS=`wx-config --cflags`
|
||||
WX_CONFIG_CFLAGS=`wx-config --cflags` `gtk-config --cflags`
|
||||
WX_CONFIG_LIBS=`wx-config --libs`
|
||||
|
||||
# Depending on how your Python was built, you may have to set this
|
||||
|
@ -27,15 +27,19 @@ WXDLLEXPORT_DATA(extern const wxChar*) wxMessageBoxCaptionStr;
|
||||
class WXDLLEXPORT wxGenericMessageDialog: public wxDialog
|
||||
{
|
||||
DECLARE_DYNAMIC_CLASS(wxGenericMessageDialog)
|
||||
protected:
|
||||
long m_dialogStyle;
|
||||
|
||||
public:
|
||||
wxGenericMessageDialog(wxWindow *parent, const wxString& message, const wxString& caption = wxMessageBoxCaptionStr,
|
||||
wxGenericMessageDialog(wxWindow *parent, const wxString& message,
|
||||
const wxString& caption = wxMessageBoxCaptionStr,
|
||||
long style = wxOK|wxCENTRE, const wxPoint& pos = wxDefaultPosition);
|
||||
|
||||
void OnYes(wxCommandEvent& event);
|
||||
void OnNo(wxCommandEvent& event);
|
||||
void OnCancel(wxCommandEvent& event);
|
||||
|
||||
private:
|
||||
wxList m_buttons;
|
||||
int m_dialogStyle;
|
||||
|
||||
DECLARE_EVENT_TABLE()
|
||||
};
|
||||
|
@ -1,11 +1,11 @@
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// Name: msgdlgg.cpp
|
||||
// Purpose: wxGenericMessageDialog
|
||||
// Author: Julian Smart
|
||||
// Author: Julian Smart, Robert Roebling
|
||||
// Modified by:
|
||||
// Created: 04/01/98
|
||||
// RCS-ID: $Id$
|
||||
// Copyright: (c) Julian Smart and Markus Holzem
|
||||
// Copyright: (c) Julian Smart, Markus Holzem, Robert Roebling
|
||||
// Licence: wxWindows license
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
@ -39,36 +39,40 @@
|
||||
// New dialog box implementations
|
||||
|
||||
// Split message, using constraints to position controls
|
||||
void wxSplitMessage2(const wxChar *message, wxList *messageList, wxWindow *parent, wxRowColSizer *sizer)
|
||||
wxSize wxSplitMessage2( const wxString &message, wxWindow *parent )
|
||||
{
|
||||
wxChar *copyMessage = copystring(message);
|
||||
size_t i = 0;
|
||||
size_t len = wxStrlen(copyMessage);
|
||||
wxChar *currentMessage = copyMessage;
|
||||
|
||||
// wxWindow *lastWindow = parent;
|
||||
|
||||
while (i < len) {
|
||||
while ((i < len) && (copyMessage[i] != _T('\n'))) i++;
|
||||
if (i < len) copyMessage[i] = 0;
|
||||
wxStaticText *mess = new wxStaticText(parent, -1, currentMessage);
|
||||
|
||||
/*
|
||||
wxLayoutConstraints *c = new wxLayoutConstraints;
|
||||
c->left.SameAs (parent, wxLeft, 10);
|
||||
c->top.SameAs (lastWindow, wxBottom, 5);
|
||||
c->right.AsIs ();
|
||||
c->height.AsIs ();
|
||||
|
||||
mess->SetConstraints(c);
|
||||
*/
|
||||
sizer->AddSizerChild(mess);
|
||||
|
||||
messageList->Append(mess);
|
||||
|
||||
currentMessage = copyMessage + i + 1;
|
||||
}
|
||||
delete[] copyMessage;
|
||||
int y = 10;
|
||||
int w = 50;
|
||||
wxString line( _T("") );
|
||||
for (uint pos = 0; pos < message.Len(); pos++)
|
||||
{
|
||||
if (message[pos] == _T('\n'))
|
||||
{
|
||||
if (!line.IsEmpty())
|
||||
{
|
||||
wxStaticText *s1 = new wxStaticText( parent, -1, line, wxPoint(15,y) );
|
||||
wxSize size1( s1->GetSize() );
|
||||
if (size1.x > w) w = size1.x;
|
||||
line = _T("");
|
||||
}
|
||||
y += 18;
|
||||
}
|
||||
else
|
||||
{
|
||||
line += message[pos];
|
||||
}
|
||||
}
|
||||
|
||||
if (!line.IsEmpty())
|
||||
{
|
||||
wxStaticText *s2 = new wxStaticText( parent, -1, line, wxPoint(15,y) );
|
||||
wxSize size2( s2->GetSize() );
|
||||
if (size2.x > w) w = size2.x;
|
||||
}
|
||||
|
||||
y += 18;
|
||||
|
||||
return wxSize(w+30,y);
|
||||
}
|
||||
|
||||
#if !USE_SHARED_LIBRARY
|
||||
@ -81,106 +85,90 @@ END_EVENT_TABLE()
|
||||
IMPLEMENT_CLASS(wxGenericMessageDialog, wxDialog)
|
||||
#endif
|
||||
|
||||
wxGenericMessageDialog::wxGenericMessageDialog(wxWindow *parent, const wxString& message, const wxString& caption,
|
||||
long style, const wxPoint& pos):
|
||||
wxDialog(parent, -1, caption, pos,
|
||||
#ifdef __WXMOTIF_
|
||||
wxSize(400, 300),
|
||||
#else
|
||||
wxDefaultSize,
|
||||
#endif
|
||||
wxDEFAULT_DIALOG_STYLE|wxDIALOG_MODAL)
|
||||
wxGenericMessageDialog::wxGenericMessageDialog( wxWindow *parent, const wxString& message,
|
||||
const wxString& caption, long style, const wxPoint& pos) :
|
||||
wxDialog( parent, -1, caption, pos, wxDefaultSize )
|
||||
{
|
||||
m_dialogStyle = style;
|
||||
|
||||
wxBeginBusyCursor();
|
||||
wxSize message_size( wxSplitMessage2( message, this ) );
|
||||
|
||||
wxSizer *topSizer = new wxSizer(this, wxSizerShrink);
|
||||
topSizer->SetBorder(10, 10);
|
||||
|
||||
// message sizer at the top
|
||||
wxRowColSizer *messageSizer = new wxRowColSizer(topSizer, wxSIZER_COLS, 100);
|
||||
messageSizer->SetName(_T("messageSizer"));
|
||||
|
||||
// bool centre = ((style & wxCENTRE) == wxCENTRE);
|
||||
|
||||
wxList messageList;
|
||||
wxSplitMessage2(message, &messageList, this, messageSizer);
|
||||
|
||||
// spacer size in the middle
|
||||
wxSpacingSizer *spacingSizer = new wxSpacingSizer(topSizer, wxBelow, messageSizer, 20);
|
||||
|
||||
// row size at the bottom
|
||||
wxRowColSizer *buttonSizer = new wxRowColSizer(topSizer, wxSIZER_ROWS );
|
||||
buttonSizer->SetName(_T("buttonSizer"));
|
||||
buttonSizer->SetSpacing(12,0);
|
||||
|
||||
// Specify constraints for the button sizer
|
||||
wxLayoutConstraints *c = new wxLayoutConstraints;
|
||||
c->width.AsIs ();
|
||||
c->height.AsIs ();
|
||||
c->top.Below (spacingSizer);
|
||||
c->left.Absolute (10);
|
||||
// c->centreX.SameAs (spacingSizer, wxCentreX);
|
||||
buttonSizer->SetConstraints(c);
|
||||
|
||||
wxButton *ok = (wxButton *) NULL;
|
||||
wxButton *cancel = (wxButton *) NULL;
|
||||
wxButton *yes = (wxButton *) NULL;
|
||||
wxButton *no = (wxButton *) NULL;
|
||||
|
||||
if (style & wxYES_NO) {
|
||||
yes = new wxButton(this, wxID_YES, _("Yes"), wxDefaultPosition, wxSize(75,-1) );
|
||||
no = new wxButton(this, wxID_NO, _("No"), wxDefaultPosition, wxSize(75,-1) );
|
||||
|
||||
buttonSizer->AddSizerChild(yes);
|
||||
buttonSizer->AddSizerChild(no);
|
||||
|
||||
int y = message_size.y + 30;
|
||||
|
||||
if (style & wxYES_NO)
|
||||
{
|
||||
yes = new wxButton( this, wxID_YES, _("Yes"), wxPoint(-1,y), wxSize(80,-1) );
|
||||
m_buttons.Append( yes );
|
||||
no = new wxButton( this, wxID_NO, _("No"), wxPoint(-1,y), wxSize(80,-1) );
|
||||
m_buttons.Append( no );
|
||||
}
|
||||
|
||||
if (style & wxOK) {
|
||||
ok = new wxButton(this, wxID_OK, _("OK"), wxDefaultPosition, wxSize(75,-1) );
|
||||
buttonSizer->AddSizerChild(ok);
|
||||
if (style & wxOK)
|
||||
{
|
||||
ok = new wxButton( this, wxID_OK, _("OK"), wxPoint(-1,y), wxSize(80,-1) );
|
||||
m_buttons.Append( ok );
|
||||
}
|
||||
|
||||
if (style & wxCANCEL) {
|
||||
cancel = new wxButton(this, wxID_CANCEL, _("Cancel"), wxDefaultPosition, wxSize(75,-1) );
|
||||
buttonSizer->AddSizerChild(cancel);
|
||||
if (style & wxCANCEL)
|
||||
{
|
||||
cancel = new wxButton( this, wxID_CANCEL, _("Cancel"), wxPoint(-1,y), wxSize(80,-1) );
|
||||
m_buttons.Append( cancel );
|
||||
}
|
||||
|
||||
if (ok)
|
||||
{
|
||||
ok->SetDefault();
|
||||
ok->SetFocus();
|
||||
ok->SetDefault();
|
||||
ok->SetFocus();
|
||||
}
|
||||
else if (yes)
|
||||
{
|
||||
yes->SetDefault();
|
||||
yes->SetFocus();
|
||||
yes->SetDefault();
|
||||
yes->SetFocus();
|
||||
}
|
||||
|
||||
Layout();
|
||||
|
||||
Centre(wxBOTH);
|
||||
int w = m_buttons.GetCount() * 100;
|
||||
if (message_size.x > w) w = message_size.x;
|
||||
int space = w / (m_buttons.GetCount()*2);
|
||||
|
||||
int n = 0;
|
||||
wxNode *node = m_buttons.First();
|
||||
while (node)
|
||||
{
|
||||
wxWindow *win = (wxWindow*)node->Data();
|
||||
int x = (n*2+1)*space - 40 + 15;
|
||||
win->Move( x, -1 );
|
||||
node = node->Next();
|
||||
n++;
|
||||
}
|
||||
|
||||
SetSize( w+30, y+40 );
|
||||
|
||||
wxEndBusyCursor();
|
||||
Centre( wxBOTH );
|
||||
}
|
||||
|
||||
void wxGenericMessageDialog::OnYes(wxCommandEvent& WXUNUSED(event))
|
||||
{
|
||||
EndModal(wxID_YES);
|
||||
EndModal( wxID_YES );
|
||||
}
|
||||
|
||||
void wxGenericMessageDialog::OnNo(wxCommandEvent& WXUNUSED(event))
|
||||
{
|
||||
EndModal(wxID_NO);
|
||||
EndModal( wxID_NO );
|
||||
}
|
||||
|
||||
void wxGenericMessageDialog::OnCancel(wxCommandEvent& WXUNUSED(event))
|
||||
{
|
||||
// Allow cancellation via ESC/Close button except if
|
||||
// only YES and NO are specified.
|
||||
/* Allow cancellation via ESC/Close button except if
|
||||
only YES and NO are specified. */
|
||||
if ( (m_dialogStyle & wxYES_NO) != wxYES_NO || (m_dialogStyle & wxCANCEL) )
|
||||
EndModal(wxID_CANCEL);
|
||||
{
|
||||
EndModal( wxID_CANCEL );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
@ -109,35 +109,6 @@ gtk_dialog_realized_callback( GtkWidget *widget, wxDialog *win )
|
||||
{
|
||||
if (g_isIdle) wxapp_install_idle_handler();
|
||||
|
||||
/* all this is for Motif Window Manager "hints" and is supposed to be
|
||||
recognized by other WM as well. not tested. */
|
||||
long decor = (long) GDK_DECOR_ALL;
|
||||
long func = (long) GDK_FUNC_ALL;
|
||||
|
||||
if ((win->m_windowStyle & wxCAPTION) == 0)
|
||||
decor |= GDK_DECOR_TITLE;
|
||||
/* if ((win->m_windowStyle & wxMINIMIZE) == 0)
|
||||
func |= GDK_FUNC_MINIMIZE;
|
||||
if ((win->m_windowStyle & wxMAXIMIZE) == 0)
|
||||
func |= GDK_FUNC_MAXIMIZE; */
|
||||
if ((win->m_windowStyle & wxSYSTEM_MENU) == 0)
|
||||
decor |= GDK_DECOR_MENU;
|
||||
if ((win->m_windowStyle & wxMINIMIZE_BOX) == 0)
|
||||
decor |= GDK_DECOR_MINIMIZE;
|
||||
if ((win->m_windowStyle & wxMAXIMIZE_BOX) == 0)
|
||||
decor |= GDK_DECOR_MAXIMIZE;
|
||||
if ((win->m_windowStyle & wxRESIZE_BORDER) == 0)
|
||||
func |= GDK_FUNC_RESIZE;
|
||||
|
||||
gdk_window_set_decorations( win->m_widget->window, (GdkWMDecoration)decor);
|
||||
gdk_window_set_functions( win->m_widget->window, (GdkWMFunction)func);
|
||||
|
||||
/* GTK's shrinking/growing policy */
|
||||
if ((win->m_windowStyle & wxRESIZE_BORDER) == 0)
|
||||
gtk_window_set_policy(GTK_WINDOW(win->m_widget), 0, 0, 1);
|
||||
else
|
||||
gtk_window_set_policy(GTK_WINDOW(win->m_widget), 1, 1, 1);
|
||||
|
||||
/* reset the icon */
|
||||
if (win->m_icon != wxNullIcon)
|
||||
{
|
||||
@ -156,8 +127,41 @@ gtk_dialog_realized_callback( GtkWidget *widget, wxDialog *win )
|
||||
static gint
|
||||
gtk_dialog_map_callback( GtkWidget *widget, wxDialog *win )
|
||||
{
|
||||
/* I haven''t been able to set the position of
|
||||
the dialog before it is shown, so I do it here */
|
||||
gtk_widget_set_uposition( widget, win->m_x, win->m_y );
|
||||
|
||||
/* all this is for Motif Window Manager "hints" and is supposed to be
|
||||
recognized by other WM as well. not tested. */
|
||||
long decor = (long) GDK_DECOR_ALL;
|
||||
long func = (long) GDK_FUNC_ALL;
|
||||
|
||||
if ((win->m_windowStyle & wxCAPTION) == 0)
|
||||
decor |= GDK_DECOR_TITLE;
|
||||
if ((win->m_windowStyle & wxSYSTEM_MENU) == 0)
|
||||
decor |= GDK_DECOR_MENU;
|
||||
if ((win->m_windowStyle & wxMINIMIZE_BOX) == 0)
|
||||
{
|
||||
func |= GDK_FUNC_MINIMIZE;
|
||||
decor |= GDK_DECOR_MINIMIZE;
|
||||
}
|
||||
if ((win->m_windowStyle & wxMAXIMIZE_BOX) == 0)
|
||||
{
|
||||
decor |= GDK_DECOR_MAXIMIZE;
|
||||
func |= GDK_FUNC_MAXIMIZE;
|
||||
}
|
||||
if ((win->m_windowStyle & wxRESIZE_BORDER) == 0)
|
||||
func |= GDK_FUNC_RESIZE;
|
||||
|
||||
gdk_window_set_decorations( win->m_widget->window, (GdkWMDecoration)decor);
|
||||
gdk_window_set_functions( win->m_widget->window, (GdkWMFunction)func);
|
||||
|
||||
/* GTK's shrinking/growing policy */
|
||||
if ((win->m_windowStyle & wxRESIZE_BORDER) == 0)
|
||||
gtk_window_set_policy(GTK_WINDOW(win->m_widget), 0, 0, 1);
|
||||
else
|
||||
gtk_window_set_policy(GTK_WINDOW(win->m_widget), 1, 1, 1);
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
@ -196,16 +196,18 @@ gtk_frame_realized_callback( GtkWidget *widget, wxFrame *win )
|
||||
|
||||
if ((win->m_windowStyle & wxCAPTION) == 0)
|
||||
decor |= GDK_DECOR_TITLE;
|
||||
/* if ((win->m_windowStyle & wxMINIMIZE) == 0)
|
||||
func |= GDK_FUNC_MINIMIZE;
|
||||
if ((win->m_windowStyle & wxMAXIMIZE) == 0)
|
||||
func |= GDK_FUNC_MAXIMIZE; */
|
||||
if ((win->m_windowStyle & wxSYSTEM_MENU) == 0)
|
||||
decor |= GDK_DECOR_MENU;
|
||||
if ((win->m_windowStyle & wxMINIMIZE_BOX) == 0)
|
||||
{
|
||||
func |= GDK_FUNC_MINIMIZE;
|
||||
decor |= GDK_DECOR_MINIMIZE;
|
||||
}
|
||||
if ((win->m_windowStyle & wxMAXIMIZE_BOX) == 0)
|
||||
{
|
||||
func |= GDK_FUNC_MAXIMIZE;
|
||||
decor |= GDK_DECOR_MAXIMIZE;
|
||||
}
|
||||
if ((win->m_windowStyle & wxRESIZE_BORDER) == 0)
|
||||
func |= GDK_FUNC_RESIZE;
|
||||
|
||||
|
@ -3532,6 +3532,7 @@ bool wxWindow::Layout()
|
||||
GetSizer()->LayoutPhase1(&noChanges);
|
||||
GetSizer()->LayoutPhase2(&noChanges);
|
||||
GetSizer()->SetConstraintSizes(); // Recursively set the real window sizes
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
else
|
||||
|
@ -109,35 +109,6 @@ gtk_dialog_realized_callback( GtkWidget *widget, wxDialog *win )
|
||||
{
|
||||
if (g_isIdle) wxapp_install_idle_handler();
|
||||
|
||||
/* all this is for Motif Window Manager "hints" and is supposed to be
|
||||
recognized by other WM as well. not tested. */
|
||||
long decor = (long) GDK_DECOR_ALL;
|
||||
long func = (long) GDK_FUNC_ALL;
|
||||
|
||||
if ((win->m_windowStyle & wxCAPTION) == 0)
|
||||
decor |= GDK_DECOR_TITLE;
|
||||
/* if ((win->m_windowStyle & wxMINIMIZE) == 0)
|
||||
func |= GDK_FUNC_MINIMIZE;
|
||||
if ((win->m_windowStyle & wxMAXIMIZE) == 0)
|
||||
func |= GDK_FUNC_MAXIMIZE; */
|
||||
if ((win->m_windowStyle & wxSYSTEM_MENU) == 0)
|
||||
decor |= GDK_DECOR_MENU;
|
||||
if ((win->m_windowStyle & wxMINIMIZE_BOX) == 0)
|
||||
decor |= GDK_DECOR_MINIMIZE;
|
||||
if ((win->m_windowStyle & wxMAXIMIZE_BOX) == 0)
|
||||
decor |= GDK_DECOR_MAXIMIZE;
|
||||
if ((win->m_windowStyle & wxRESIZE_BORDER) == 0)
|
||||
func |= GDK_FUNC_RESIZE;
|
||||
|
||||
gdk_window_set_decorations( win->m_widget->window, (GdkWMDecoration)decor);
|
||||
gdk_window_set_functions( win->m_widget->window, (GdkWMFunction)func);
|
||||
|
||||
/* GTK's shrinking/growing policy */
|
||||
if ((win->m_windowStyle & wxRESIZE_BORDER) == 0)
|
||||
gtk_window_set_policy(GTK_WINDOW(win->m_widget), 0, 0, 1);
|
||||
else
|
||||
gtk_window_set_policy(GTK_WINDOW(win->m_widget), 1, 1, 1);
|
||||
|
||||
/* reset the icon */
|
||||
if (win->m_icon != wxNullIcon)
|
||||
{
|
||||
@ -156,8 +127,41 @@ gtk_dialog_realized_callback( GtkWidget *widget, wxDialog *win )
|
||||
static gint
|
||||
gtk_dialog_map_callback( GtkWidget *widget, wxDialog *win )
|
||||
{
|
||||
/* I haven''t been able to set the position of
|
||||
the dialog before it is shown, so I do it here */
|
||||
gtk_widget_set_uposition( widget, win->m_x, win->m_y );
|
||||
|
||||
/* all this is for Motif Window Manager "hints" and is supposed to be
|
||||
recognized by other WM as well. not tested. */
|
||||
long decor = (long) GDK_DECOR_ALL;
|
||||
long func = (long) GDK_FUNC_ALL;
|
||||
|
||||
if ((win->m_windowStyle & wxCAPTION) == 0)
|
||||
decor |= GDK_DECOR_TITLE;
|
||||
if ((win->m_windowStyle & wxSYSTEM_MENU) == 0)
|
||||
decor |= GDK_DECOR_MENU;
|
||||
if ((win->m_windowStyle & wxMINIMIZE_BOX) == 0)
|
||||
{
|
||||
func |= GDK_FUNC_MINIMIZE;
|
||||
decor |= GDK_DECOR_MINIMIZE;
|
||||
}
|
||||
if ((win->m_windowStyle & wxMAXIMIZE_BOX) == 0)
|
||||
{
|
||||
decor |= GDK_DECOR_MAXIMIZE;
|
||||
func |= GDK_FUNC_MAXIMIZE;
|
||||
}
|
||||
if ((win->m_windowStyle & wxRESIZE_BORDER) == 0)
|
||||
func |= GDK_FUNC_RESIZE;
|
||||
|
||||
gdk_window_set_decorations( win->m_widget->window, (GdkWMDecoration)decor);
|
||||
gdk_window_set_functions( win->m_widget->window, (GdkWMFunction)func);
|
||||
|
||||
/* GTK's shrinking/growing policy */
|
||||
if ((win->m_windowStyle & wxRESIZE_BORDER) == 0)
|
||||
gtk_window_set_policy(GTK_WINDOW(win->m_widget), 0, 0, 1);
|
||||
else
|
||||
gtk_window_set_policy(GTK_WINDOW(win->m_widget), 1, 1, 1);
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
@ -196,16 +196,18 @@ gtk_frame_realized_callback( GtkWidget *widget, wxFrame *win )
|
||||
|
||||
if ((win->m_windowStyle & wxCAPTION) == 0)
|
||||
decor |= GDK_DECOR_TITLE;
|
||||
/* if ((win->m_windowStyle & wxMINIMIZE) == 0)
|
||||
func |= GDK_FUNC_MINIMIZE;
|
||||
if ((win->m_windowStyle & wxMAXIMIZE) == 0)
|
||||
func |= GDK_FUNC_MAXIMIZE; */
|
||||
if ((win->m_windowStyle & wxSYSTEM_MENU) == 0)
|
||||
decor |= GDK_DECOR_MENU;
|
||||
if ((win->m_windowStyle & wxMINIMIZE_BOX) == 0)
|
||||
{
|
||||
func |= GDK_FUNC_MINIMIZE;
|
||||
decor |= GDK_DECOR_MINIMIZE;
|
||||
}
|
||||
if ((win->m_windowStyle & wxMAXIMIZE_BOX) == 0)
|
||||
{
|
||||
func |= GDK_FUNC_MAXIMIZE;
|
||||
decor |= GDK_DECOR_MAXIMIZE;
|
||||
}
|
||||
if ((win->m_windowStyle & wxRESIZE_BORDER) == 0)
|
||||
func |= GDK_FUNC_RESIZE;
|
||||
|
||||
|
@ -3532,6 +3532,7 @@ bool wxWindow::Layout()
|
||||
GetSizer()->LayoutPhase1(&noChanges);
|
||||
GetSizer()->LayoutPhase2(&noChanges);
|
||||
GetSizer()->SetConstraintSizes(); // Recursively set the real window sizes
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
else
|
||||
|
Loading…
Reference in New Issue
Block a user