/[classpath]/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkScrollBarPeer.c
ViewVC logotype

Diff of /classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkScrollBarPeer.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.10.2.2 by gnu_andrew, Thu Jan 20 00:37:23 2005 UTC revision 1.10.2.3 by gnu_andrew, Fri May 27 00:01:46 2005 UTC
# Line 36  obligated to do so.  If you do not wish Line 36  obligated to do so.  If you do not wish
36  exception statement from your version. */  exception statement from your version. */
37    
38    
39    #include <math.h>
40  #include "gtkpeer.h"  #include "gtkpeer.h"
41  #include "gnu_java_awt_peer_gtk_GtkComponentPeer.h"  #include "gnu_java_awt_peer_gtk_GtkComponentPeer.h"
42  #include "gnu_java_awt_peer_gtk_GtkScrollbarPeer.h"  #include "gnu_java_awt_peer_gtk_GtkScrollbarPeer.h"
43    
44  static void post_change_event (GtkRange *range, jobject peer);  static gboolean slider_moved_cb (GtkRange *range,
45                                     GtkScrollType scroll,
46                                     gdouble value,
47                                     jobject obj);
48    
49  JNIEXPORT void JNICALL  JNIEXPORT void JNICALL
50  Java_gnu_java_awt_peer_gtk_GtkScrollbarPeer_create  Java_gnu_java_awt_peer_gtk_GtkScrollbarPeer_create
51  (JNIEnv *env, jobject obj, jint orientation, jint value,    (JNIEnv *env, jobject obj, jint orientation, jint value,
52   jint min, jint max, jint step_incr, jint page_incr, jint visible_amount)     jint min, jint max, jint step_incr, jint page_incr, jint visible_amount)
53  {  {
54    GtkWidget *scrollbar;    GtkWidget *scrollbar;
55    GtkObject *adj;    GtkObject *adj;
# Line 54  Java_gnu_java_awt_peer_gtk_GtkScrollbarP Line 58  Java_gnu_java_awt_peer_gtk_GtkScrollbarP
58    NSA_SET_GLOBAL_REF (env, obj);    NSA_SET_GLOBAL_REF (env, obj);
59    
60    gdk_threads_enter ();    gdk_threads_enter ();
61      
62    adj = gtk_adjustment_new ((gdouble) value,    adj = gtk_adjustment_new ((gdouble) value,
63                              (gdouble) min,                              (gdouble) min,
64                              (gdouble) max,                              (gdouble) max,
# Line 62  Java_gnu_java_awt_peer_gtk_GtkScrollbarP Line 66  Java_gnu_java_awt_peer_gtk_GtkScrollbarP
66                              (gdouble) page_incr,                              (gdouble) page_incr,
67                              (gdouble) visible_amount);                              (gdouble) visible_amount);
68    
69    scrollbar = (orientation) ? gtk_vscrollbar_new (GTK_ADJUSTMENT (adj)) :    scrollbar = orientation
70                         gtk_hscrollbar_new (GTK_ADJUSTMENT (adj));      ? gtk_vscrollbar_new (GTK_ADJUSTMENT (adj))
71        : gtk_hscrollbar_new (GTK_ADJUSTMENT (adj));
72    
73    GTK_RANGE (scrollbar)->round_digits = 0;    GTK_RANGE (scrollbar)->round_digits = 0;
74    /* These calls seem redundant but they are not.  They clamp values    /* These calls seem redundant but they are not.  They clamp values
# Line 87  Java_gnu_java_awt_peer_gtk_GtkScrollbarP Line 92  Java_gnu_java_awt_peer_gtk_GtkScrollbarP
92    
93    gdk_threads_enter ();    gdk_threads_enter ();
94    
95    g_signal_connect (G_OBJECT (ptr), "value-changed",    g_signal_connect (G_OBJECT (ptr), "change-value",
96                      G_CALLBACK (post_change_event), *gref);                      GTK_SIGNAL_FUNC (slider_moved_cb), *gref);
97    
98    gdk_threads_leave ();    gdk_threads_leave ();
99    
# Line 96  Java_gnu_java_awt_peer_gtk_GtkScrollbarP Line 101  Java_gnu_java_awt_peer_gtk_GtkScrollbarP
101    Java_gnu_java_awt_peer_gtk_GtkComponentPeer_connectSignals (env, obj);    Java_gnu_java_awt_peer_gtk_GtkComponentPeer_connectSignals (env, obj);
102  }  }
103    
104    JNIEXPORT void JNICALL
 JNIEXPORT void JNICALL  
105  Java_gnu_java_awt_peer_gtk_GtkScrollbarPeer_setLineIncrement  Java_gnu_java_awt_peer_gtk_GtkScrollbarPeer_setLineIncrement
106      (JNIEnv *env, jobject obj, jint amount)    (JNIEnv *env, jobject obj, jint amount)
107  {  {
108    void *ptr;    void *ptr;
109    GtkAdjustment *adj;    GtkAdjustment *adj;
# Line 115  Java_gnu_java_awt_peer_gtk_GtkScrollbarP Line 119  Java_gnu_java_awt_peer_gtk_GtkScrollbarP
119    gdk_threads_leave ();    gdk_threads_leave ();
120  }  }
121    
122  JNIEXPORT void JNICALL  JNIEXPORT void JNICALL
123  Java_gnu_java_awt_peer_gtk_GtkScrollbarPeer_setPageIncrement  Java_gnu_java_awt_peer_gtk_GtkScrollbarPeer_setPageIncrement
124      (JNIEnv *env, jobject obj, jint amount)    (JNIEnv *env, jobject obj, jint amount)
125  {  {
126    void *ptr;    void *ptr;
127    GtkAdjustment *adj;    GtkAdjustment *adj;
# Line 133  Java_gnu_java_awt_peer_gtk_GtkScrollbarP Line 137  Java_gnu_java_awt_peer_gtk_GtkScrollbarP
137    gdk_threads_leave ();    gdk_threads_leave ();
138  }  }
139    
140  JNIEXPORT void JNICALL  JNIEXPORT void JNICALL
141  Java_gnu_java_awt_peer_gtk_GtkScrollbarPeer_setValues  Java_gnu_java_awt_peer_gtk_GtkScrollbarPeer_setValues
142      (JNIEnv *env, jobject obj, jint value, jint visible, jint min, jint max)    (JNIEnv *env, jobject obj, jint value, jint visible, jint min, jint max)
143  {  {
144    void *ptr;    void *ptr;
145    GtkAdjustment *adj;    GtkAdjustment *adj;
# Line 150  Java_gnu_java_awt_peer_gtk_GtkScrollbarP Line 154  Java_gnu_java_awt_peer_gtk_GtkScrollbarP
154    gtk_range_set_range (GTK_RANGE (ptr), (gdouble) min, (gdouble) max);    gtk_range_set_range (GTK_RANGE (ptr), (gdouble) min, (gdouble) max);
155    gtk_range_set_value (GTK_RANGE (ptr), (gdouble) value);    gtk_range_set_value (GTK_RANGE (ptr), (gdouble) value);
156    
   gtk_adjustment_changed (adj);  
   
157    gdk_threads_leave ();    gdk_threads_leave ();
158  }  }
159    
160  static void  static gboolean
161  post_change_event (GtkRange *range, jobject peer)  slider_moved_cb (GtkRange *range,
162  {                   GtkScrollType scroll,
163    GtkAdjustment *adj;                   gdouble value,
164    adj = gtk_range_get_adjustment (range);                   jobject obj)
165    (*gdk_env())->CallVoidMethod (gdk_env(), peer, postAdjustmentEventID,  {
166                                AWT_ADJUSTMENT_TRACK, (jint) adj->value);    GtkAdjustment *adj = gtk_range_get_adjustment (GTK_RANGE (range));
167    
168      value = CLAMP (value, adj->lower,
169                     (adj->upper - adj->page_size));
170    
171      if (range->round_digits >= 0)
172        {
173          gdouble power;
174          gint i;
175    
176          i = range->round_digits;
177          power = 1;
178          while (i--)
179            power *= 10;
180          
181          value = floor ((value * power) + 0.5) / power;
182        }
183      
184      switch (scroll)
185        {
186        case GTK_SCROLL_STEP_BACKWARD:
187          (*gdk_env())->CallVoidMethod (gdk_env(), obj, postAdjustmentEventID,
188                                        AWT_ADJUSTMENT_UNIT_DECREMENT,
189                                        (jint) value);
190          break;
191        case GTK_SCROLL_STEP_FORWARD:
192          (*gdk_env())->CallVoidMethod (gdk_env(), obj, postAdjustmentEventID,
193                                        AWT_ADJUSTMENT_UNIT_INCREMENT,
194                                        (jint) value);
195          break;
196        case GTK_SCROLL_PAGE_BACKWARD:
197          (*gdk_env())->CallVoidMethod (gdk_env(), obj, postAdjustmentEventID,
198                                        AWT_ADJUSTMENT_BLOCK_DECREMENT,
199                                        (jint) value);
200          break;
201        case GTK_SCROLL_PAGE_FORWARD:
202          (*gdk_env())->CallVoidMethod (gdk_env(), obj, postAdjustmentEventID,
203                                        AWT_ADJUSTMENT_BLOCK_INCREMENT,
204                                        (jint) value);
205          break;
206        default:
207          /* GTK_SCROLL_JUMP: */
208          (*gdk_env())->CallVoidMethod (gdk_env(), obj, postAdjustmentEventID,
209                                        AWT_ADJUSTMENT_TRACK,
210                                        (jint) value);
211          break;
212        }
213      return FALSE;
214  }  }

Legend:
Removed from v.1.10.2.2  
changed lines
  Added in v.1.10.2.3

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26