]> git.saurik.com Git - wxWidgets.git/blobdiff - src/gtk/slider.cpp
More for wxPython 2.0b9 (hopefully the last...)
[wxWidgets.git] / src / gtk / slider.cpp
index 08a4da1d1956fc0c097177709d6f533452f6afdd..fb6b989378e4ce4404e33ef5beccb3a5c226fdda 100644 (file)
 #include "gdk/gdk.h"
 #include "gtk/gtk.h"
 
+//-----------------------------------------------------------------------------
+// idle system
+//-----------------------------------------------------------------------------
+
+extern void wxapp_install_idle_handler();
+extern bool g_isIdle;
+
 //-----------------------------------------------------------------------------
 // data
 //-----------------------------------------------------------------------------
@@ -30,6 +37,8 @@ extern bool   g_blockEventsOnDrag;
 
 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;
     
@@ -50,7 +59,7 @@ static void gtk_slider_callback( GtkWidget *WXUNUSED(widget), wxSlider *win )
     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;
@@ -92,13 +101,16 @@ bool wxSlider::Create(wxWindow *parent, wxWindowID id,
 
     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), 
@@ -157,12 +169,12 @@ void wxSlider::SetRange( int minValue, int maxValue )
 
 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 )
@@ -178,7 +190,7 @@ 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 )
@@ -194,7 +206,7 @@ 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) )