}
bool needsRefresh = false;
-#ifdef __WXMAC__
- // OS X blocks on immediate redraws, so make this a refresh
- if (!wxScrolledWindowHasChildren(m_targetWindow))
- needsRefresh = true;
-#endif
int dx = 0,
dy = 0;
int orient = event.GetOrientation();
// flush all pending repaints before we change m_{x,y}ScrollPosition, as
// otherwise invalidated area could be updated incorrectly later when
// ScrollWindow() makes sure they're repainted before scrolling them
+#ifdef __WXMAC__
+ // wxWindowMac is taking care of making sure the update area is correctly
+ // set up, while not forcing an immediate redraw
+#else
m_targetWindow->Update();
+#endif
}
if (orient == wxHORIZONTAL)
if (orient == wxHORIZONTAL)
{
- if (m_xScrollPixelsPerLine > 0)
+ if ( m_xScrollPosition + nScrollInc < 0 )
{
- if ( m_xScrollPosition + nScrollInc < 0 )
- {
- // As -ve as we can go
- nScrollInc = -m_xScrollPosition;
- }
- else // check for the other bound
+ // As -ve as we can go
+ nScrollInc = -m_xScrollPosition;
+ }
+ else // check for the other bound
+ {
+ const int posMax = m_xScrollLines - m_xScrollLinesPerPage;
+ if ( m_xScrollPosition + nScrollInc > posMax )
{
- const int posMax = m_xScrollLines - m_xScrollLinesPerPage;
- if ( m_xScrollPosition + nScrollInc > posMax )
- {
- // As +ve as we can go
- nScrollInc = posMax - m_xScrollPosition;
- }
+ // As +ve as we can go
+ nScrollInc = posMax - m_xScrollPosition;
}
}
- else
- m_targetWindow->Refresh(true, GetScrollRect());
}
- else
+ else // wxVERTICAL
{
- if ( m_yScrollPixelsPerLine > 0 )
+ if ( m_yScrollPosition + nScrollInc < 0 )
{
- if ( m_yScrollPosition + nScrollInc < 0 )
- {
- // As -ve as we can go
- nScrollInc = -m_yScrollPosition;
- }
- else // check for the other bound
- {
- const int posMax = m_yScrollLines - m_yScrollLinesPerPage;
- if ( m_yScrollPosition + nScrollInc > posMax )
- {
- // As +ve as we can go
- nScrollInc = posMax - m_yScrollPosition;
- }
- }
+ // As -ve as we can go
+ nScrollInc = -m_yScrollPosition;
}
- else
+ else // check for the other bound
{
- // VZ: why do we do this? (FIXME)
- m_targetWindow->Refresh(true, GetScrollRect());
+ const int posMax = m_yScrollLines - m_yScrollLinesPerPage;
+ if ( m_yScrollPosition + nScrollInc > posMax )
+ {
+ // As +ve as we can go
+ nScrollInc = posMax - m_yScrollPosition;
+ }
}
}
MacSetClipChildren( true ) ;
#endif
- bool ok = wxPanel::Create(parent, id, pos, size, style|wxHSCROLL|wxVSCROLL, name);
+ // by default, we're scrollable in both directions (but if one of the
+ // styles is specified explicitly, we shouldn't add the other one
+ // automatically)
+ if ( !(style & (wxHSCROLL | wxVSCROLL)) )
+ style |= wxHSCROLL | wxVSCROLL;
+
+ bool ok = wxPanel::Create(parent, id, pos, size, style, name);
return ok;
}