- wxEventType command = wxEVT_SCROLLWIN_THUMBTRACK;
- if (range->scroll_type == GTK_SCROLL_STEP_BACKWARD) command = wxEVT_SCROLLWIN_LINEUP;
- else if (range->scroll_type == GTK_SCROLL_STEP_FORWARD) command = wxEVT_SCROLLWIN_LINEDOWN;
- else if (range->scroll_type == GTK_SCROLL_PAGE_BACKWARD) command = wxEVT_SCROLLWIN_PAGEUP;
- else if (range->scroll_type == GTK_SCROLL_PAGE_FORWARD) command = wxEVT_SCROLLWIN_PAGEDOWN;
-
- wxScrollWinEvent event( command, y_pos, wxVERTICAL );
- event.SetEventObject( this );
- GetEventHandler()->ProcessEvent( event );
-}
-
-void wxScrolledWindow::GtkHScroll( float value )
-{
- if (!m_targetWindow)
- return;
-
- if (m_xScrollPixelsPerLine == 0)
- return;
-
- int x_pos = (int)(value+0.5);
-
- if (x_pos == m_xScrollPosition)
- return;
-
- // Update any invalidates areas before the get moved/scrolled.
- Update();
-
- GtkScrolledWindow *scrolledWindow = GTK_SCROLLED_WINDOW(m_widget);
- GtkRange *range = GTK_RANGE(scrolledWindow->hscrollbar);
-
- wxEventType command = wxEVT_SCROLLWIN_THUMBTRACK;
- if (range->scroll_type == GTK_SCROLL_STEP_BACKWARD) command = wxEVT_SCROLLWIN_LINEUP;
- else if (range->scroll_type == GTK_SCROLL_STEP_FORWARD) command = wxEVT_SCROLLWIN_LINEDOWN;
- else if (range->scroll_type == GTK_SCROLL_PAGE_BACKWARD) command = wxEVT_SCROLLWIN_PAGEUP;
- else if (range->scroll_type == GTK_SCROLL_PAGE_FORWARD) command = wxEVT_SCROLLWIN_PAGEDOWN;
-
- wxScrollWinEvent event( command, x_pos, wxHORIZONTAL );
- event.SetEventObject( this );
- GetEventHandler()->ProcessEvent( event );
-}
-
-void wxScrolledWindow::EnableScrolling (bool x_scroll, bool y_scroll)
-{
- m_xScrollingEnabled = x_scroll;
- m_yScrollingEnabled = y_scroll;
-}
-
-void wxScrolledWindow::GetVirtualSize (int *x, int *y) const
-{
- if ( x )
- *x = m_xScrollPixelsPerLine * m_xScrollLines;
- if ( y )
- *y = m_yScrollPixelsPerLine * m_yScrollLines;
-}
-
-// Where the current view starts from
-void wxScrolledWindow::GetViewStart (int *x, int *y) const
-{
- if ( x )
- *x = m_xScrollPosition;
- if ( y )
- *y = m_yScrollPosition;
-}
-
-void wxScrolledWindow::CalcScrolledPosition(int x, int y, int *xx, int *yy) const
-{
- if ( xx )
- *xx = x - m_xScrollPosition * m_xScrollPixelsPerLine;
- if ( yy )
- *yy = y - m_yScrollPosition * m_yScrollPixelsPerLine;
-}
-
-void wxScrolledWindow::CalcUnscrolledPosition(int x, int y, int *xx, int *yy) const
-{
- if ( xx )
- *xx = x + m_xScrollPosition * m_xScrollPixelsPerLine;
- if ( yy )
- *yy = y + m_yScrollPosition * m_yScrollPixelsPerLine;
-}
-
-int wxScrolledWindow::CalcScrollInc(wxScrollWinEvent& event)
-{
- int pos = event.GetPosition();
- int orient = event.GetOrientation();
-
- int nScrollInc = 0;
- if (event.GetEventType() == wxEVT_SCROLLWIN_TOP)
- {
- if (orient == wxHORIZONTAL)
- nScrollInc = - m_xScrollPosition;
- else
- nScrollInc = - m_yScrollPosition;
- } else
- if (event.GetEventType() == wxEVT_SCROLLWIN_BOTTOM)
- {
- if (orient == wxHORIZONTAL)
- nScrollInc = m_xScrollLines - m_xScrollPosition;
- else
- nScrollInc = m_yScrollLines - m_yScrollPosition;
- } else
- if (event.GetEventType() == wxEVT_SCROLLWIN_LINEUP)
- {
- nScrollInc = -1;
- } else
- if (event.GetEventType() == wxEVT_SCROLLWIN_LINEDOWN)
- {
- nScrollInc = 1;
- } else
- if (event.GetEventType() == wxEVT_SCROLLWIN_PAGEUP)
- {
- if (orient == wxHORIZONTAL)
- nScrollInc = -GetScrollPageSize(wxHORIZONTAL);
- else
- nScrollInc = -GetScrollPageSize(wxVERTICAL);
- } else
- if (event.GetEventType() == wxEVT_SCROLLWIN_PAGEDOWN)
- {
- if (orient == wxHORIZONTAL)
- nScrollInc = GetScrollPageSize(wxHORIZONTAL);
- else
- nScrollInc = GetScrollPageSize(wxVERTICAL);
- } else
- if ((event.GetEventType() == wxEVT_SCROLLWIN_THUMBTRACK) ||
- (event.GetEventType() == wxEVT_SCROLLWIN_THUMBRELEASE))
- {
- if (orient == wxHORIZONTAL)
- nScrollInc = pos - m_xScrollPosition;
- else
- nScrollInc = pos - m_yScrollPosition;
- }