X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/3a8c693aea7d83397af67825943e2750f1723628..84c5b38d579e140df28cfbb649587e8862148c89:/src/generic/scrlwing.cpp diff --git a/src/generic/scrlwing.cpp b/src/generic/scrlwing.cpp index 3897dca59f..ff58945bf8 100644 --- a/src/generic/scrlwing.cpp +++ b/src/generic/scrlwing.cpp @@ -57,9 +57,7 @@ #endif #endif -#ifndef __WXGTK__ IMPLEMENT_CLASS(wxScrolledWindow, wxGenericScrolledWindow) -#endif // ---------------------------------------------------------------------------- // wxScrollHelperEvtHandler: intercept the events from the window and forward @@ -321,22 +319,22 @@ void wxScrollHelper::SetScrollbars(int pixelsPerUnitX, int totalPixelWidth = m_xScrollLines * m_xScrollPixelsPerLine; int totalPixelHeight = m_yScrollLines * m_yScrollPixelsPerLine; - if (m_targetWindow->m_backingPixmap && - !((m_targetWindow->m_pixmapWidth == totalPixelWidth) && - (m_targetWindow->m_pixmapHeight == totalPixelHeight))) + if (m_targetWindow->GetBackingPixmap() && + !((m_targetWindow->GetPixmapWidth() == totalPixelWidth) && + (m_targetWindow->GetPixmapHeight() == totalPixelHeight))) { - XFreePixmap (dpy, (Pixmap) m_targetWindow->m_backingPixmap); - m_targetWindow->m_backingPixmap = (WXPixmap) 0; + XFreePixmap (dpy, (Pixmap) m_targetWindow->GetBackingPixmap()); + m_targetWindow->SetBackingPixmap((WXPixmap) 0); } - if (!m_targetWindow->m_backingPixmap && + if (!m_targetWindow->GetBackingPixmap() && (noUnitsX != 0) && (noUnitsY != 0)) { int depth = wxDisplayDepth(); - m_pixmapWidth = totalPixelWidth; - m_pixmapHeight = totalPixelHeight; - m_backingPixmap = (WXPixmap) XCreatePixmap (dpy, RootWindow (dpy, DefaultScreen (dpy)), - m_pixmapWidth, m_pixmapHeight, depth); + m_targetWindow->SetPixmapWidth(totalPixelWidth); + m_targetWindow->SetPixmapHeight(totalPixelHeight); + m_targetWindow->SetBackingPixmap((WXPixmap) XCreatePixmap (dpy, RootWindow (dpy, DefaultScreen (dpy)), + m_targetWindow->GetPixmapWidth(), m_targetWindow->GetPixmapHeight(), depth)); } } @@ -386,12 +384,12 @@ void wxScrollHelper::HandleOnScroll(wxScrollWinEvent& event) if (orient == wxHORIZONTAL) { m_xScrollPosition += nScrollInc; - m_targetWindow->SetScrollPos(wxHORIZONTAL, m_xScrollPosition, FALSE); + m_targetWindow->SetScrollPos(wxHORIZONTAL, m_xScrollPosition); } else { m_yScrollPosition += nScrollInc; - m_targetWindow->SetScrollPos(wxVERTICAL, m_yScrollPosition, FALSE); + m_targetWindow->SetScrollPos(wxVERTICAL, m_yScrollPosition); } bool needsRefresh = FALSE; @@ -679,7 +677,7 @@ void wxScrollHelper::Scroll( int x_pos, int y_pos ) m_xScrollPosition = wxMax( 0, m_xScrollPosition ); if (old_x != m_xScrollPosition) { - m_targetWindow->SetScrollPos( wxHORIZONTAL, m_xScrollPosition, FALSE ); + m_targetWindow->SetScrollPos( wxHORIZONTAL, m_xScrollPosition ); m_targetWindow->ScrollWindow( (old_x-m_xScrollPosition)*m_xScrollPixelsPerLine, 0, GetRect() ); } @@ -700,7 +698,7 @@ void wxScrollHelper::Scroll( int x_pos, int y_pos ) m_yScrollPosition = wxMax( 0, m_yScrollPosition ); if (old_y != m_yScrollPosition) { - m_targetWindow->SetScrollPos( wxVERTICAL, m_yScrollPosition, FALSE ); + m_targetWindow->SetScrollPos( wxVERTICAL, m_yScrollPosition ); m_targetWindow->ScrollWindow( 0, (old_y-m_yScrollPosition)*m_yScrollPixelsPerLine, GetRect() ); } @@ -811,6 +809,9 @@ void wxScrollHelper::HandleOnChar(wxKeyEvent& event) szy = -1; } + int xScrollOld = m_xScrollPosition, + yScrollOld = m_yScrollPosition; + int dsty; switch ( event.KeyCode() ) { @@ -853,6 +854,22 @@ void wxScrollHelper::HandleOnChar(wxKeyEvent& event) // not for us event.Skip(); } + + if ( m_xScrollPosition != xScrollOld ) + { + wxScrollWinEvent event(wxEVT_SCROLLWIN_THUMBTRACK, m_xScrollPosition, + wxHORIZONTAL); + event.SetEventObject(m_win); + m_win->GetEventHandler()->ProcessEvent(event); + } + + if ( m_yScrollPosition != yScrollOld ) + { + wxScrollWinEvent event(wxEVT_SCROLLWIN_THUMBTRACK, m_yScrollPosition, + wxVERTICAL); + event.SetEventObject(m_win); + m_win->GetEventHandler()->ProcessEvent(event); + } } // ----------------------------------------------------------------------------