#if wxUSE_SCROLLBAR
#include "wx/utils.h"
+
#include <math.h>
-#include "gdk/gdk.h"
-#include "gtk/gtk.h"
+#include <gdk/gdk.h>
+#include <gtk/gtk.h>
//-----------------------------------------------------------------------------
// idle system
extern bool g_blockEventsOnDrag;
extern bool g_blockEventsOnScroll;
+static const float sensitivity = 0.02;
+
//-----------------------------------------------------------------------------
// "value_changed"
//-----------------------------------------------------------------------------
if (g_blockEventsOnDrag) return;
float diff = adjust->value - win->m_oldPos;
- if (fabs(diff) < 0.2) return;
+ if (fabs(diff) < sensitivity) return;
win->m_oldPos = adjust->value;
{
if (g_isIdle) wxapp_install_idle_handler();
- win->SetScrolling(TRUE);
+ win->m_isScrolling = TRUE;
// g_blockEventsOnScroll = TRUE; doesn't work in DialogEd
return FALSE;
wxScrollBar *win )
{
if (g_isIdle) wxapp_install_idle_handler();
+
+ wxASSERT( win->m_isScrolling );
- win->SetScrolling(FALSE);
+ win->m_isScrolling = FALSE;
// g_blockEventsOnScroll = FALSE;
- gtk_signal_emit_by_name( GTK_OBJECT(win->m_adjust), "value_changed" );
+ wxEventType command = wxEVT_SCROLL_THUMBTRACK;
+ int value = (int)ceil(win->m_adjust->value);
+ int dir = win->HasFlag(wxSB_VERTICAL) ? wxVERTICAL : wxHORIZONTAL;
+
+ wxScrollEvent event( command, value, dir );
+ event.SetScrolling( FALSE );
+ event.SetEventObject( win );
+ win->GetEventHandler()->ProcessEvent( event );
return FALSE;
}
if (!PreCreation( parent, pos, size ) ||
!CreateBase( parent, id, pos, size, style, validator, name ))
{
- wxFAIL_MSG( T("wxScrollBar creation failed") );
+ wxFAIL_MSG( wxT("wxScrollBar creation failed") );
return FALSE;
}