X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/442b35b53bf95f5c6c003ea9ddbefd17adbc2a00..e3556282410eb387e426d68076403fa69f2b669f:/src/univ/winuniv.cpp?ds=sidebyside diff --git a/src/univ/winuniv.cpp b/src/univ/winuniv.cpp index 80eb9968e1..16eb13ae26 100644 --- a/src/univ/winuniv.cpp +++ b/src/univ/winuniv.cpp @@ -109,12 +109,11 @@ bool wxWindow::Create(wxWindow *parent, long style, const wxString& name) { - // we add wxCLIP_CHILDREN and wxNO_FULL_REPAINT_ON_RESIZE because without - // these styles we can't get rid of flicker on wxMSW + // we add wxCLIP_CHILDREN to get the same ("natural") behaviour under MSW + // as under the other platforms if ( !wxWindowNative::Create(parent, id, pos, size, - style | - wxCLIP_CHILDREN | - wxNO_FULL_REPAINT_ON_RESIZE, name) ) + style | wxCLIP_CHILDREN, + name) ) { return FALSE; } @@ -482,6 +481,15 @@ wxPoint wxWindow::GetClientAreaOrigin() const void wxWindow::DoGetClientSize(int *width, int *height) const { + // if it is a native window, we assume it handles the scrollbars itself + // too - and if it doesn't, there is not much we can do + if ( !m_renderer ) + { + wxWindowNative::DoGetClientSize(width, height); + + return; + } + int w, h; wxWindowNative::DoGetClientSize(&w, &h); @@ -720,8 +728,13 @@ void wxWindow::SetScrollPos(int orient, int pos, bool refresh) wxCHECK_RET( scrollbar, _T("no scrollbar to set position for") ); scrollbar->SetThumbPosition(pos); + + // VZ: I think we can safely ignore this as we always refresh it + // automatically whenever the value chanegs +#if 0 if ( refresh ) Refresh(); +#endif } int wxWindow::GetScrollPos(int orient) const @@ -843,7 +856,7 @@ wxRect wxWindow::ScrollNoRefresh(int dx, int dy, const wxRect *rectTotal) dcMem.SelectObject(bmp); dcMem.Blit(wxPoint(0, 0), size, &dc, ptSource -#if defined(__WXGTK__) && !defined(__WX_DC_BLIT_FIXED__) +#if defined(__WXGTK__) && !defined(wxHAS_WORKING_GTK_DC_BLIT) + GetClientAreaOrigin() #endif // broken wxGTK wxDC::Blit );