X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/7c74e7fe1de14f32dcd6f3c9cdd727de540bbd0e..a4372af60a7eed11d0deea8db2c7d0fdd75d2b76:/src/generic/scrolwin.cpp diff --git a/src/generic/scrolwin.cpp b/src/generic/scrolwin.cpp index 56eaf96415..4e3db4bf49 100644 --- a/src/generic/scrolwin.cpp +++ b/src/generic/scrolwin.cpp @@ -27,7 +27,6 @@ #include "wx/generic/scrolwin.h" #include "wx/panel.h" -#if !USE_SHARED_LIBRARY BEGIN_EVENT_TABLE(wxScrolledWindow, wxPanel) EVT_SCROLLWIN(wxScrolledWindow::OnScroll) EVT_SIZE(wxScrolledWindow::OnSize) @@ -35,7 +34,6 @@ BEGIN_EVENT_TABLE(wxScrolledWindow, wxPanel) END_EVENT_TABLE() IMPLEMENT_DYNAMIC_CLASS(wxScrolledWindow, wxPanel) -#endif #ifdef __WXMSW__ #include "windows.h" @@ -43,7 +41,14 @@ IMPLEMENT_DYNAMIC_CLASS(wxScrolledWindow, wxPanel) #ifdef __WXMOTIF__ // For wxRETAINED implementation +#ifdef __VMS__ //VMS's Xm.h is not (yet) compatible with C++ + //This code switches off the compiler warnings +# pragma message disable nosimpint +#endif #include +#ifdef __VMS__ +# pragma message enable nosimpint +#endif #endif wxScrolledWindow::wxScrolledWindow() @@ -149,11 +154,17 @@ void wxScrolledWindow::SetScrollbars (int pixelsPerUnitX, int pixelsPerUnitY, AdjustScrollbars(); if (do_refresh && !noRefresh) - m_targetWindow->Refresh(); + m_targetWindow->Refresh(); #ifdef __WXMSW__ - // Necessary? - UpdateWindow ((HWND) m_targetWindow->GetHWND()); + // GRG: if this turns out to be really necessary, we could + // at least move it to the above if { ... } so that it is + // only done if noRefresh = FALSE (the default). OTOH, if + // this doesn't break anything, which seems to be the + // case, we could just leave it out. + + // Necessary? + // UpdateWindow ((HWND) m_targetWindow->GetHWND()); #endif #ifdef __WXMAC__ m_targetWindow->MacUpdateImmediately() ; @@ -340,14 +351,14 @@ void wxScrolledWindow::AdjustScrollbars() if (m_xScrollLines > 0) { - // Calculate page size i.e. number of scroll units you get on the - // current client window + // Calculate page size i.e. number of scroll units you get on the + // current client window int noPagePositions = (int) ( (w/(double)m_xScrollPixelsPerLine) + 0.5 ); if (noPagePositions < 1) noPagePositions = 1; // Correct position if greater than extent of canvas minus - // the visible portion of it or if below zero - m_xScrollPosition = wxMin( m_xScrollLines-noPagePositions, m_xScrollPosition); + // the visible portion of it or if below zero + m_xScrollPosition = wxMin( m_xScrollLines-noPagePositions, m_xScrollPosition); m_xScrollPosition = wxMax( 0, m_xScrollPosition ); SetScrollbar(wxHORIZONTAL, m_xScrollPosition, noPagePositions, m_xScrollLines); @@ -362,13 +373,13 @@ void wxScrolledWindow::AdjustScrollbars() if (m_yScrollLines > 0) { - // Calculate page size i.e. number of scroll units you get on the - // current client window + // Calculate page size i.e. number of scroll units you get on the + // current client window int noPagePositions = (int) ( (h/(double)m_yScrollPixelsPerLine) + 0.5 ); if (noPagePositions < 1) noPagePositions = 1; // Correct position if greater than extent of canvas minus - // the visible portion of it or if below zero + // the visible portion of it or if below zero m_yScrollPosition = wxMin( m_yScrollLines-noPagePositions, m_yScrollPosition ); m_yScrollPosition = wxMax( 0, m_yScrollPosition ); @@ -484,46 +495,41 @@ void wxScrolledWindow::Scroll( int x_pos, int y_pos ) int old_x = m_xScrollPosition; m_xScrollPosition = x_pos; - // Calculate page size i.e. number of scroll units you get on the - // current client window + // Calculate page size i.e. number of scroll units you get on the + // current client window int noPagePositions = (int) ( (w/(double)m_xScrollPixelsPerLine) + 0.5 ); if (noPagePositions < 1) noPagePositions = 1; // Correct position if greater than extent of canvas minus - // the visible portion of it or if below zero + // the visible portion of it or if below zero m_xScrollPosition = wxMin( m_xScrollLines-noPagePositions, m_xScrollPosition ); m_xScrollPosition = wxMax( 0, m_xScrollPosition ); m_targetWindow->SetScrollPos( wxHORIZONTAL, m_xScrollPosition, TRUE ); - m_targetWindow->ScrollWindow( (old_x-m_xScrollPosition)*m_xScrollPixelsPerLine, 0 ); + m_targetWindow->ScrollWindow( (old_x-m_xScrollPosition)*m_xScrollPixelsPerLine, 0 ); } if (y_pos != -1) { int old_y = m_yScrollPosition; m_yScrollPosition = y_pos; - // Calculate page size i.e. number of scroll units you get on the - // current client window + // Calculate page size i.e. number of scroll units you get on the + // current client window int noPagePositions = (int) ( (h/(double)m_yScrollPixelsPerLine) + 0.5 ); if (noPagePositions < 1) noPagePositions = 1; // Correct position if greater than extent of canvas minus - // the visible portion of it or if below zero + // the visible portion of it or if below zero m_yScrollPosition = wxMin( m_yScrollLines-noPagePositions, m_yScrollPosition ); m_yScrollPosition = wxMax( 0, m_yScrollPosition ); m_targetWindow->SetScrollPos( wxVERTICAL, m_yScrollPosition, TRUE ); - m_targetWindow->ScrollWindow( 0, (old_y-m_yScrollPosition)*m_yScrollPixelsPerLine ); + m_targetWindow->ScrollWindow( 0, (old_y-m_yScrollPosition)*m_yScrollPixelsPerLine ); } -#ifdef __WXMSW__ -// ::UpdateWindow ((HWND) GetHWND()); -#else -// Refresh(); -#endif #ifdef __WXMAC__ m_targetWindow->MacUpdateImmediately() ; #endif @@ -544,7 +550,7 @@ void wxScrolledWindow::GetVirtualSize (int *x, int *y) const } // Where the current view starts from -void wxScrolledWindow::ViewStart (int *x, int *y) const +void wxScrolledWindow::GetViewStart (int *x, int *y) const { if ( x ) *x = m_xScrollPosition;