void wxSlider::DoSetSize(int x, int y, int width, int height, int sizeFlags) { Widget widget = (Widget) m_mainWidget; bool managed = XtIsManaged(widget); if (managed) XtUnmanageChild (widget); if (((m_windowStyle & wxHORIZONTAL) == wxHORIZONTAL) && (width > -1)) { XtVaSetValues (widget, XmNscaleWidth, wxMax (width, 10), NULL); } if (((m_windowStyle & wxVERTICAL) == wxVERTICAL) && (height > -1)) { XtVaSetValues (widget, XmNscaleHeight, wxMax (height, 10), NULL); } int xx = x; int yy = y; AdjustForParentClientOrigin(xx, yy, sizeFlags); if (x > -1 || (sizeFlags & wxSIZE_ALLOW_MINUS_ONE)) XtVaSetValues (widget, XmNx, xx, NULL); if (y > -1 || (sizeFlags & wxSIZE_ALLOW_MINUS_ONE)) XtVaSetValues (widget, XmNy, yy, NULL); if (managed) XtManageChild (widget); }
// set the size of the window: if the dimensions are positive, just use them, // but if any of them is equal to -1, it means that we must find the value for // it ourselves (unless sizeFlags contains wxSIZE_ALLOW_MINUS_ONE flag, in // which case -1 is a valid value for x and y) // // If sizeFlags contains wxSIZE_AUTO_WIDTH/HEIGHT flags (default), we calculate // the width/height to best suit our contents, otherwise we reuse the current // width/height void wxWindowPalm::DoSetSize(int x, int y, int width, int height, int sizeFlags) { // get the current size and position... int currentX, currentY; GetPosition(¤tX, ¤tY); int currentW,currentH; GetSize(¤tW, ¤tH); // ... and don't do anything (avoiding flicker) if it's already ok if ( x == currentX && y == currentY && width == currentW && height == currentH ) { return; } if ( x == wxDefaultCoord && !(sizeFlags & wxSIZE_ALLOW_MINUS_ONE) ) x = currentX; if ( y == wxDefaultCoord && !(sizeFlags & wxSIZE_ALLOW_MINUS_ONE) ) y = currentY; AdjustForParentClientOrigin(x, y, sizeFlags); wxSize size = wxDefaultSize; if ( width == wxDefaultCoord ) { if ( sizeFlags & wxSIZE_AUTO_WIDTH ) { size = DoGetBestSize(); width = size.x; } else { // just take the current one width = currentW; } } if ( height == wxDefaultCoord ) { if ( sizeFlags & wxSIZE_AUTO_HEIGHT ) { if ( size.x == wxDefaultCoord ) { size = DoGetBestSize(); } //else: already called DoGetBestSize() above height = size.y; } else { // just take the current one height = currentH; } } DoMoveWindow(x, y, width, height); }
void wxWindowX11::DoSetSize(int x, int y, int width, int height, int sizeFlags) { // wxLogDebug("DoSetSize: %s (%ld) %d, %d %dx%d", GetClassInfo()->GetClassName(), GetId(), x, y, width, height); Window xwindow = (Window) m_mainWindow; wxCHECK_RET( xwindow, wxT("invalid window") ); XWindowAttributes attr; Status status = XGetWindowAttributes( wxGlobalDisplay(), xwindow, &attr ); wxCHECK_RET( status, wxT("invalid window attributes") ); int new_x = attr.x; int new_y = attr.y; int new_w = attr.width; int new_h = attr.height; if (x != -1 || (sizeFlags & wxSIZE_ALLOW_MINUS_ONE)) { int yy = 0; AdjustForParentClientOrigin( x, yy, sizeFlags); new_x = x; } if (y != -1 || (sizeFlags & wxSIZE_ALLOW_MINUS_ONE)) { int xx = 0; AdjustForParentClientOrigin( xx, y, sizeFlags); new_y = y; } if (width != -1) { new_w = width; if (new_w <= 0) new_w = 20; } if (height != -1) { new_h = height; if (new_h <= 0) new_h = 20; } DoMoveWindow( new_x, new_y, new_w, new_h ); }
void wxWindowMGL::DoGetPosition(int *x, int *y) const { wxASSERT_MSG( m_wnd, wxT("invalid window") ); int pX = 0, pY = 0; AdjustForParentClientOrigin(pX, pY, 0); if (x) *x = m_wnd->x - pX; if (y) *y = m_wnd->y - pY; }
void wxWindowBeOS::DoSetSize(int x, int y, int width, int height, int sizeFlags) { wxLogDebug("DoSetSize: %s (%ld) %d, %d %dx%d", GetClassInfo()->GetClassName(), GetId(), x, y, width, height); BRect bounds; if(m_view) bounds = m_view->bounds(); else bounds = BRect(0, 0, 0, 0); int new_x = (int)bounds.left; int new_y = (int)bounds.top; int new_w = bounds.IntegerWidth(); int new_h = bounds.IntegerHeight(); if (x != -1 || (sizeFlags & wxSIZE_ALLOW_MINUS_ONE)) { int yy = 0; AdjustForParentClientOrigin( x, yy, sizeFlags); new_x = x; } if (y != -1 || (sizeFlags & wxSIZE_ALLOW_MINUS_ONE)) { int xx = 0; AdjustForParentClientOrigin( xx, y, sizeFlags); new_y = y; } if (width != -1) { new_w = width; if (new_w <= 0) new_w = 20; } if (height != -1) { new_h = height; if (new_h <= 0) new_h = 20; } DoMoveWindow( new_x, new_y, new_w, new_h ); }
wxIDirectFBSurfacePtr wxWindowDFB::ObtainDfbSurface() const { wxCHECK_MSG( m_parent, NULL, "parentless window?" ); wxIDirectFBSurfacePtr parentSurface(m_parent->GetDfbSurface()); wxCHECK_MSG( parentSurface, NULL, "invalid parent surface" ); wxRect r(GetRect()); AdjustForParentClientOrigin(r.x, r.y, 0); DFBRectangle rect = { r.x, r.y, r.width, r.height }; return parentSurface->GetSubSurface(&rect); }
void wxControl::DoGetPosition( int *x, int *y ) const { int ox = 0, oy = 0; AdjustForParentClientOrigin(ox, oy); RectangleType rect; DoGetBounds(&rect); if(x) *x = rect.topLeft.x - ox; if(y) *y = rect.topLeft.y - oy; }
// real construction (Init() must have been called before!) bool wxWindowMGL::Create(wxWindow *parent, wxWindowID id, const wxPoint& pos, const wxSize& size, long style, const wxString& name) { if ( !CreateBase(parent, id, pos, size, style, wxDefaultValidator, name) ) return false; if ( parent ) parent->AddChild(this); int x, y, w, h; x = pos.x, y = pos.y; if ( x == -1 ) x = 0; // FIXME_MGL, something better, see GTK+ if ( y == -1 ) y = 0; // FIXME_MGL, something better, see GTK+ AdjustForParentClientOrigin(x, y, 0); w = WidthDefault(size.x); h = HeightDefault(size.y); long mgl_style = 0; window_t *wnd_parent = parent ? parent->GetHandle() : NULL; if ( style & wxFULL_REPAINT_ON_RESIZE ) { mgl_style |= MGL_WM_FULL_REPAINT_ON_RESIZE; } if ( style & wxSTAY_ON_TOP ) { mgl_style |= MGL_WM_ALWAYS_ON_TOP; } if ( style & wxPOPUP_WINDOW ) { mgl_style |= MGL_WM_ALWAYS_ON_TOP; // it is created hidden as other top level windows m_isShown = false; wnd_parent = NULL; } window_t *wnd = MGL_wmCreateWindow(g_winMng, wnd_parent, x, y, w, h); MGL_wmSetWindowFlags(wnd, mgl_style); MGL_wmShowWindow(wnd, m_isShown); SetMGLwindow_t(wnd); return true; }
bool wxWindow::DoDrawBackground(wxDC& dc) { wxRect rect; wxSize size = GetSize(); // Why not GetClientSize() ? rect.x = 0; rect.y = 0; rect.width = size.x; rect.height = size.y; wxWindow * const parent = GetParent(); if ( HasTransparentBackground() && !UseBgCol() && parent ) { // DirectFB paints the parent first, then its child windows, so by // the time this code is called, parent's background was already // drawn and there's no point in (imperfectly!) duplicating the work // here: #ifndef __WXDFB__ wxASSERT( !IsTopLevel() ); wxPoint pos = GetPosition(); AdjustForParentClientOrigin( pos.x, pos.y, 0 ); // Adjust DC logical origin wxCoord org_x, org_y, x, y; dc.GetLogicalOrigin( &org_x, &org_y ); x = org_x + pos.x; y = org_y + pos.y; dc.SetLogicalOrigin( x, y ); // Adjust draw rect rect.x = pos.x; rect.y = pos.y; // Let parent draw the background parent->EraseBackground( dc, rect ); // Restore DC logical origin dc.SetLogicalOrigin( org_x, org_y ); #endif // !__WXDFB__ } else { // Draw background ourselves EraseBackground( dc, rect ); } return true; }
bool wxControl::PalmCreateField(const wxString& label, const wxPoint& pos, const wxSize& size, bool editable, bool underlined, int justification) { FormType* form = (FormType*)GetParentForm(); if(form==NULL) return false; m_label = label; wxCoord x = pos.x == wxDefaultCoord ? 0 : pos.x, y = pos.y == wxDefaultCoord ? 0 : pos.y, w = size.x == wxDefaultCoord ? 1 : size.x, h = size.y == wxDefaultCoord ? 1 : size.y; AdjustForParentClientOrigin(x, y); FieldType *field = FldNewField( (void **)&form, GetId(), x, y, w, h, stdFont, 10, editable, underlined, false, false, (JustificationType)justification, false, false, false ); if(field==NULL) return false; m_palmField = true; SetInitialBestSize(size); SetLabel(label); Show(); return true; }
WXLRESULT wxStatusBar95::MSWWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam) { #ifndef __WXWINCE__ if ( nMsg == WM_WINDOWPOSCHANGING ) { WINDOWPOS *lpPos = (WINDOWPOS *)lParam; int x, y, w, h; GetPosition(&x, &y); GetSize(&w, &h); // we need real window coords and not wx client coords AdjustForParentClientOrigin(x, y); lpPos->x = x; lpPos->y = y; lpPos->cx = w; lpPos->cy = h; return 0; } if ( nMsg == WM_NCLBUTTONDOWN ) { // if hit-test is on gripper then send message to TLW to begin // resizing. It is possible to send this message to any window. if ( wParam == HTBOTTOMRIGHT ) { wxWindow *win; for ( win = GetParent(); win; win = win->GetParent() ) { if ( win->IsTopLevel() ) { SendMessage(GetHwndOf(win), WM_NCLBUTTONDOWN, wParam, lParam); return 0; } } } } #endif return wxStatusBarBase::MSWWindowProc(nMsg, wParam, lParam); }
bool wxWindow::DoDrawBackground(wxDC& dc) { wxRect rect; wxSize size = GetSize(); // Why not GetClientSize() ? rect.x = 0; rect.y = 0; rect.width = size.x; rect.height = size.y; wxWindow * const parent = GetParent(); if ( HasTransparentBackground() && parent ) { wxASSERT( !IsTopLevel() ); wxPoint pos = GetPosition(); AdjustForParentClientOrigin( pos.x, pos.y, 0 ); // Adjust DC logical origin wxCoord org_x, org_y, x, y; dc.GetLogicalOrigin( &org_x, &org_y ); x = org_x + pos.x; y = org_y + pos.y; dc.SetLogicalOrigin( x, y ); // Adjust draw rect rect.x = pos.x; rect.y = pos.y; // Let parent draw the background parent->EraseBackground( dc, rect ); // Restore DC logical origin dc.SetLogicalOrigin( org_x, org_y ); } else { // Draw background ourselves EraseBackground( dc, rect ); } return true; }
void wxWindowDFB::DoMoveWindow(int x, int y, int width, int height) { // NB: [x,y] arguments are in (parent's) window coordinates, while // m_rect.{x,y} are in (parent's) client coordinates. That's why we // offset by parentOrigin in some places below wxPoint parentOrigin(0, 0); AdjustForParentClientOrigin(parentOrigin.x, parentOrigin.y); wxRect oldpos(m_rect); oldpos.Offset(parentOrigin); wxRect newpos(x, y, width, height); // input [x,y] is in window coords, but we store client coords in m_rect: m_rect = newpos; m_rect.Offset(-parentOrigin); // window's position+size changed and so did the subsurface that covers it InvalidateDfbSurface(); if ( IsShown() ) { // queue both former and new position of the window for repainting: wxWindow *parent = GetParent(); // only refresh the visible parts: if ( !CanBeOutsideClientArea() ) { wxRect parentClient(parent->GetClientSize()); oldpos.Intersect(parentClient); newpos.Intersect(parentClient); } parent->RefreshRect(oldpos); parent->RefreshRect(newpos); } }
void wxRadioBox::DoSetSize(int x, int y, int width, int height, int sizeFlags) { bool managed = XtIsManaged((Widget) m_mainWidget); if (managed) XtUnmanageChild ((Widget) m_mainWidget); int xx = x; int yy = y; AdjustForParentClientOrigin(xx, yy, sizeFlags); if (x > -1 || (sizeFlags & wxSIZE_ALLOW_MINUS_ONE)) XtVaSetValues ((Widget) m_mainWidget, XmNx, xx, NULL); if (y > -1 || (sizeFlags & wxSIZE_ALLOW_MINUS_ONE)) XtVaSetValues ((Widget) m_mainWidget, XmNy, yy, NULL); if (width > 0) XtVaSetValues ((Widget) m_mainWidget, XmNwidth, width, NULL); if (height > 0) XtVaSetValues ((Widget) m_mainWidget, XmNheight, height, NULL); if (managed) XtManageChild ((Widget) m_mainWidget); }
// set the size of the window: if the dimensions are positive, just use them, // but if any of them is equal to -1, it means that we must find the value for // it ourselves (unless sizeFlags contains wxSIZE_ALLOW_MINUS_ONE flag, in // which case -1 is a valid value for x and y) // // If sizeFlags contains wxSIZE_AUTO_WIDTH/HEIGHT flags (default), we calculate // the width/height to best suit our contents, otherwise we reuse the current // width/height void wxWindowDFB::DoSetSize(int x, int y, int width, int height, int sizeFlags) { // get the current size and position... int currentX, currentY; GetPosition(¤tX, ¤tY); int currentW,currentH; GetSize(¤tW, ¤tH); if ( x == -1 && !(sizeFlags & wxSIZE_ALLOW_MINUS_ONE) ) x = currentX; if ( y == -1 && !(sizeFlags & wxSIZE_ALLOW_MINUS_ONE) ) y = currentY; // ... and don't do anything (avoiding flicker) if it's already ok if ( x == currentX && y == currentY && width == currentW && height == currentH ) { return; } wxSize size(-1, -1); if ( width == -1 ) { if ( sizeFlags & wxSIZE_AUTO_WIDTH ) { size = DoGetBestSize(); width = size.x; } else { // just take the current one width = currentW; } } if ( height == -1 ) { if ( sizeFlags & wxSIZE_AUTO_HEIGHT ) { if ( size.x == -1 ) { size = DoGetBestSize(); } //else: already called DoGetBestSize() above height = size.y; } else { // just take the current one height = currentH; } } int maxWidth = GetMaxWidth(), minWidth = GetMinWidth(), maxHeight = GetMaxHeight(), minHeight = GetMinHeight(); if ( minWidth != -1 && width < minWidth ) width = minWidth; if ( maxWidth != -1 && width > maxWidth ) width = maxWidth; if ( minHeight != -1 && height < minHeight ) height = minHeight; if ( maxHeight != -1 && height > maxHeight ) height = maxHeight; if ( m_rect.x != x || m_rect.y != y || m_rect.width != width || m_rect.height != height ) { AdjustForParentClientOrigin(x, y, sizeFlags); DoMoveWindow(x, y, width, height); wxSize newSize(width, height); wxSizeEvent event(newSize, GetId()); event.SetEventObject(this); HandleWindowEvent(event); } }
WXLRESULT wxStatusBar::MSWWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam) { #ifndef __WXWINCE__ if ( nMsg == WM_WINDOWPOSCHANGING ) { WINDOWPOS *lpPos = (WINDOWPOS *)lParam; int x, y, w, h; GetPosition(&x, &y); GetSize(&w, &h); // we need real window coords and not wx client coords AdjustForParentClientOrigin(x, y); lpPos->x = x; lpPos->y = y; lpPos->cx = w; lpPos->cy = h; return 0; } if ( nMsg == WM_NCLBUTTONDOWN ) { // if hit-test is on gripper then send message to TLW to begin // resizing. It is possible to send this message to any window. if ( wParam == HTBOTTOMRIGHT ) { wxWindow *win; for ( win = GetParent(); win; win = win->GetParent() ) { if ( win->IsTopLevel() ) { SendMessage(GetHwndOf(win), WM_NCLBUTTONDOWN, wParam, lParam); return 0; } } } } #endif if ( nMsg == WM_SIZE ) { MSWUpdateFieldsWidths(); if ( HasFlag(wxSTB_ELLIPSIZE_START) || HasFlag(wxSTB_ELLIPSIZE_MIDDLE) || HasFlag(wxSTB_ELLIPSIZE_END) ) { for (int i=0; i<GetFieldsCount(); i++) { // re-set the field text, in case we need to ellipsize // (or de-ellipsize) some parts of it DoUpdateStatusText(i); } } } return wxStatusBarBase::MSWWindowProc(nMsg, wParam, lParam); }
bool wxSlider::Create(wxWindow *parent, wxWindowID id, int value, int minValue, int maxValue, const wxPoint& pos, const wxSize& size, long style, const wxValidator& validator, const wxString& name) { // wxSL_AUTOTICKS is ignored - always on // wxSL_LABELS is ignored - always off // wxSL_LEFT is ignored - always off // wxSL_RIGHT is ignored - always off // wxSL_TOP is ignored - always off // wxSL_SELRANGE is ignored - always off // wxSL_VERTICAL is impossible in native form wxCHECK_MSG(!(style & wxSL_VERTICAL), false, wxT("non vertical slider on PalmOS")); if(!wxControl::Create(parent, id, pos, size, style, validator, name)) return false; FormType* form = (FormType*)GetParentForm(); if(form==NULL) return false; m_oldValue = m_oldPos = value; wxCoord x = pos.x == wxDefaultCoord ? 0 : pos.x, y = pos.y == wxDefaultCoord ? 0 : pos.y, w = size.x == wxDefaultCoord ? 1 : size.x, h = size.y == wxDefaultCoord ? 1 : size.y; AdjustForParentClientOrigin(x, y); #ifdef __WXPALMOS6__ SliderControlType *slider = CtlNewSliderControl ( (void **)&form, GetId(), feedbackSliderCtl, NULL, 0, 0, x, y, w, h, minValue, maxValue, 1, value ); #else // __WXPALMOS5__ //SliderControlType *CtlNewSliderControl (void **formPP, UInt16 ID, ControlStyleType style, DmResID thumbID, // DmResID backgroundID, Coord x, Coord y, Coord width, Coord height, UInt16 minValue, UInt16 maxValue, // UInt16 pageSize, UInt16 value); SliderControlType *slider = CtlNewSliderControl ((void **)&form, GetId(), feedbackSliderCtl,//style 0,//thumbID 0,//backgroundid x, y, w, h, minValue, maxValue, 1, value); #endif // __WXPALMOS6__/__WXPALMOS5__ if(slider==NULL) return false; SetInitialSize(size); Show(); return true; }
bool wxControl::MSWCreateControl(const wxChar *classname, WXDWORD style, const wxPoint& pos, const wxSize& size, const wxString& label, WXDWORD exstyle) { // if no extended style given, determine it ourselves if ( exstyle == (WXDWORD)-1 ) { exstyle = 0; (void) MSWGetStyle(GetWindowStyle(), &exstyle); } // all controls should have this style style |= WS_CHILD; // create the control visible if it's currently shown for wxWidgets if ( m_isShown ) { style |= WS_VISIBLE; } // choose the position for the control: we have a problem with default size // here as we can't calculate the best size before the control exists // (DoGetBestSize() may need to use m_hWnd), so just choose the minimal // possible but non 0 size because 0 window width/height result in problems // elsewhere int x = pos.x == wxDefaultCoord ? 0 : pos.x, y = pos.y == wxDefaultCoord ? 0 : pos.y, w = size.x == wxDefaultCoord ? 1 : size.x, h = size.y == wxDefaultCoord ? 1 : size.y; // ... and adjust it to account for a possible parent frames toolbar AdjustForParentClientOrigin(x, y); m_hWnd = (WXHWND)::CreateWindowEx ( exstyle, // extended style classname, // the kind of control to create label, // the window name style, // the window style x, y, w, h, // the window position and size GetHwndOf(GetParent()), // parent (HMENU)GetId(), // child id wxGetInstance(), // app instance NULL // creation parameters ); if ( !m_hWnd ) { #ifdef __WXDEBUG__ wxFAIL_MSG(wxString::Format ( _T("CreateWindowEx(\"%s\", flags=%08x, ex=%08x) failed"), classname, (unsigned int)style, (unsigned int)exstyle )); #endif // __WXDEBUG__ return false; } // install wxWidgets window proc for this window SubclassWin(m_hWnd); // set up fonts and colours InheritAttributes(); if (!m_hasFont) SetFont(GetDefaultAttributes().font); // set the size now if no initial size specified SetInitialBestSize(size); return true; }
bool wxControl::MSWCreateControl(const wxChar *classname, WXDWORD style, const wxPoint& pos, const wxSize& size, const wxString& label, WXDWORD exstyle) { // if no extended style given, determine it ourselves if ( exstyle == (WXDWORD)-1 ) { exstyle = 0; (void) MSWGetStyle(GetWindowStyle(), &exstyle); } // all controls should have this style style |= WS_CHILD; // create the control visible if it's currently shown for wxWidgets if ( m_isShown ) { style |= WS_VISIBLE; } // choose the position for the control: we have a problem with default size // here as we can't calculate the best size before the control exists // (DoGetBestSize() may need to use m_hWnd), so just choose the minimal // possible but non 0 size because 0 window width/height result in problems // elsewhere int x = pos.x == wxDefaultCoord ? 0 : pos.x, y = pos.y == wxDefaultCoord ? 0 : pos.y, w = size.x == wxDefaultCoord ? 1 : size.x, h = size.y == wxDefaultCoord ? 1 : size.y; // ... and adjust it to account for a possible parent frames toolbar AdjustForParentClientOrigin(x, y); m_hWnd = (WXHWND)::CreateWindowEx ( exstyle, // extended style classname, // the kind of control to create label.t_str(), // the window name style, // the window style x, y, w, h, // the window position and size GetHwndOf(GetParent()), // parent (HMENU)wxUIntToPtr(GetId()), // child id wxGetInstance(), // app instance NULL // creation parameters ); if ( !m_hWnd ) { wxLogLastError(wxString::Format ( wxT("CreateWindowEx(\"%s\", flags=%08lx, ex=%08lx)"), classname, style, exstyle )); return false; } #if !wxUSE_UNICODE // Text labels starting with the character 0xff (which is a valid character // in many code pages) don't appear correctly as CreateWindowEx() has some // special treatment for this case, apparently the strings starting with -1 // are not really strings but something called "ordinals". There is no // documentation about it but the fact is that the label gets mangled or // not displayed at all if we don't do this, see #9572. // // Notice that 0xffff is not a valid Unicode character so the problem // doesn't arise in Unicode build. if ( !label.empty() && label[0] == -1 ) ::SetWindowText(GetHwnd(), label.t_str()); #endif // !wxUSE_UNICODE // saving the label in m_labelOrig to return it verbatim // later in GetLabel() m_labelOrig = label; // install wxWidgets window proc for this window SubclassWin(m_hWnd); // set up fonts and colours InheritAttributes(); if ( !m_hasFont ) { bool setFont = true; wxFont font = GetDefaultAttributes().font; // if we set a font for {list,tree}ctrls and the font size is changed in // the display properties then the font size for these controls doesn't // automatically adjust when they receive WM_SETTINGCHANGE // FIXME: replace the dynamic casts with virtual function calls!! #if wxUSE_LISTCTRL || wxUSE_TREECTRL bool testFont = false; #if wxUSE_LISTCTRL if ( wxDynamicCastThis(wxListCtrl) ) testFont = true; #endif // wxUSE_LISTCTRL #if wxUSE_TREECTRL if ( wxDynamicCastThis(wxTreeCtrl) ) testFont = true; #endif // wxUSE_TREECTRL if ( testFont ) { // not sure if we need to explicitly set the font here for Win95/NT4 // but we definitely can't do it for any newer version // see wxGetCCDefaultFont() in src/msw/settings.cpp for explanation // of why this test works // TODO: test Win95/NT4 to see if this is needed or breaks the // font resizing as it does on newer versions if ( font != wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT) ) { setFont = false; } } #endif // wxUSE_LISTCTRL || wxUSE_TREECTRL if ( setFont ) { SetFont(GetDefaultAttributes().font); } } // set the size now if no initial size specified SetInitialSize(size); return true; }