#include "gdk/gdk.h"
#include "gtk/gtk.h"
+//-----------------------------------------------------------------------------
+// idle system
+//-----------------------------------------------------------------------------
+
+extern void wxapp_install_idle_handler();
+extern bool g_isIdle;
+
//-----------------------------------------------------------------------------
// data
//-----------------------------------------------------------------------------
static void gtk_slider_callback( GtkWidget *WXUNUSED(widget), wxSlider *win )
{
+ if (g_isIdle) wxapp_install_idle_handler();
+
if (!win->HasVMT()) return;
if (g_blockEventsOnDrag) return;
else if (fabs(diff+page_step) < 0.2) command = wxEVT_SCROLL_PAGEUP;
else command = wxEVT_SCROLL_THUMBTRACK;
- int value = (int)(win->m_adjust->value+0.5);
+ int value = (int)ceil(win->m_adjust->value);
int orient = wxHORIZONTAL;
if (win->GetWindowStyleFlag() & wxSB_VERTICAL == wxSB_VERTICAL) orient = wxVERTICAL;
m_oldPos = 0.0;
- if (style & wxSL_VERTICAL == wxSL_VERTICAL)
- m_widget = gtk_hscale_new( (GtkAdjustment *) NULL );
- else
+ if (style & wxSL_VERTICAL)
m_widget = gtk_vscale_new( (GtkAdjustment *) NULL );
+ else
+ m_widget = gtk_hscale_new( (GtkAdjustment *) NULL );
- gtk_scale_set_draw_value( GTK_SCALE( m_widget ), FALSE );
-
+ if (style & wxSL_LABELS)
+ gtk_scale_set_draw_value( GTK_SCALE( m_widget ), TRUE );
+ else
+ gtk_scale_set_draw_value( GTK_SCALE( m_widget ), FALSE );
+
m_adjust = gtk_range_get_adjustment( GTK_RANGE(m_widget) );
gtk_signal_connect( GTK_OBJECT(m_adjust),
int wxSlider::GetMin(void) const
{
- return (int)(m_adjust->lower+0.5);
+ return (int)ceil(m_adjust->lower);
}
int wxSlider::GetMax(void) const
{
- return (int)(m_adjust->upper+0.5);
+ return (int)ceil(m_adjust->upper);
}
void wxSlider::SetPageSize( int pageSize )
int wxSlider::GetPageSize(void) const
{
- return (int)(m_adjust->page_increment+0.5);
+ return (int)ceil(m_adjust->page_increment);
}
void wxSlider::SetThumbLength( int len )
int wxSlider::GetThumbLength(void) const
{
- return (int)(m_adjust->page_size+0.5);
+ return (int)ceil(m_adjust->page_size);
}
void wxSlider::SetLineSize( int WXUNUSED(lineSize) )