/[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.12 by mkoch, Wed Jan 19 08:10:27 2005 UTC revision 1.13 by fitzsim, Wed May 25 01:11:17 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 78  Java_gnu_java_awt_peer_gtk_GtkScrollbarP Line 83  Java_gnu_java_awt_peer_gtk_GtkScrollbarP
83  }  }
84    
85  JNIEXPORT void JNICALL  JNIEXPORT void JNICALL
86    Java_gnu_java_awt_peer_gtk_GtkScrollbarPeer_connectJObject
87      (JNIEnv *env, jobject obj)
88    {
89      void *ptr;
90    
91      ptr = NSA_GET_PTR (env, obj);
92    
93      gdk_threads_enter ();
94    
95      connect_awt_hook (env, obj, 1, GTK_WIDGET (ptr)->window);
96    
97      gdk_threads_leave ();
98    }
99    
100    JNIEXPORT void JNICALL
101  Java_gnu_java_awt_peer_gtk_GtkScrollbarPeer_connectSignals  Java_gnu_java_awt_peer_gtk_GtkScrollbarPeer_connectSignals
102    (JNIEnv *env, jobject obj)    (JNIEnv *env, jobject obj)
103  {  {
# Line 87  Java_gnu_java_awt_peer_gtk_GtkScrollbarP Line 107  Java_gnu_java_awt_peer_gtk_GtkScrollbarP
107    
108    gdk_threads_enter ();    gdk_threads_enter ();
109    
110    g_signal_connect (G_OBJECT (ptr), "value-changed",    g_signal_connect (G_OBJECT (ptr), "change-value",
111                      G_CALLBACK (post_change_event), *gref);                      GTK_SIGNAL_FUNC (slider_moved_cb), *gref);
112    
113    gdk_threads_leave ();    gdk_threads_leave ();
114    
# Line 96  Java_gnu_java_awt_peer_gtk_GtkScrollbarP Line 116  Java_gnu_java_awt_peer_gtk_GtkScrollbarP
116    Java_gnu_java_awt_peer_gtk_GtkComponentPeer_connectSignals (env, obj);    Java_gnu_java_awt_peer_gtk_GtkComponentPeer_connectSignals (env, obj);
117  }  }
118    
119    JNIEXPORT void JNICALL
 JNIEXPORT void JNICALL  
120  Java_gnu_java_awt_peer_gtk_GtkScrollbarPeer_setLineIncrement  Java_gnu_java_awt_peer_gtk_GtkScrollbarPeer_setLineIncrement
121      (JNIEnv *env, jobject obj, jint amount)    (JNIEnv *env, jobject obj, jint amount)
122  {  {
123    void *ptr;    void *ptr;
124    GtkAdjustment *adj;    GtkAdjustment *adj;
# Line 115  Java_gnu_java_awt_peer_gtk_GtkScrollbarP Line 134  Java_gnu_java_awt_peer_gtk_GtkScrollbarP
134    gdk_threads_leave ();    gdk_threads_leave ();
135  }  }
136    
137  JNIEXPORT void JNICALL  JNIEXPORT void JNICALL
138  Java_gnu_java_awt_peer_gtk_GtkScrollbarPeer_setPageIncrement  Java_gnu_java_awt_peer_gtk_GtkScrollbarPeer_setPageIncrement
139      (JNIEnv *env, jobject obj, jint amount)    (JNIEnv *env, jobject obj, jint amount)
140  {  {
141    void *ptr;    void *ptr;
142    GtkAdjustment *adj;    GtkAdjustment *adj;
# Line 133  Java_gnu_java_awt_peer_gtk_GtkScrollbarP Line 152  Java_gnu_java_awt_peer_gtk_GtkScrollbarP
152    gdk_threads_leave ();    gdk_threads_leave ();
153  }  }
154    
155  JNIEXPORT void JNICALL  JNIEXPORT void JNICALL
156  Java_gnu_java_awt_peer_gtk_GtkScrollbarPeer_setValues  Java_gnu_java_awt_peer_gtk_GtkScrollbarPeer_setValues
157      (JNIEnv *env, jobject obj, jint value, jint visible, jint min, jint max)    (JNIEnv *env, jobject obj, jint value, jint visible, jint min, jint max)
158  {  {
159    void *ptr;    void *ptr;
160    GtkAdjustment *adj;    GtkAdjustment *adj;
# Line 150  Java_gnu_java_awt_peer_gtk_GtkScrollbarP Line 169  Java_gnu_java_awt_peer_gtk_GtkScrollbarP
169    gtk_range_set_range (GTK_RANGE (ptr), (gdouble) min, (gdouble) max);    gtk_range_set_range (GTK_RANGE (ptr), (gdouble) min, (gdouble) max);
170    gtk_range_set_value (GTK_RANGE (ptr), (gdouble) value);    gtk_range_set_value (GTK_RANGE (ptr), (gdouble) value);
171    
   gtk_adjustment_changed (adj);  
   
172    gdk_threads_leave ();    gdk_threads_leave ();
173  }  }
174    
175  static void  static gboolean
176  post_change_event (GtkRange *range, jobject peer)  slider_moved_cb (GtkRange *range,
177  {                   GtkScrollType scroll,
178    GtkAdjustment *adj;                   gdouble value,
179    adj = gtk_range_get_adjustment (range);                   jobject obj)
180    (*gdk_env())->CallVoidMethod (gdk_env(), peer, postAdjustmentEventID,  {
181                                AWT_ADJUSTMENT_TRACK, (jint) adj->value);    GtkAdjustment *adj = gtk_range_get_adjustment (GTK_RANGE (range));
182    
183      value = CLAMP (value, adj->lower,
184                     (adj->upper - adj->page_size));
185    
186      if (range->round_digits >= 0)
187        {
188          gdouble power;
189          gint i;
190    
191          i = range->round_digits;
192          power = 1;
193          while (i--)
194            power *= 10;
195          
196          value = floor ((value * power) + 0.5) / power;
197        }
198      
199      switch (scroll)
200        {
201        case GTK_SCROLL_STEP_BACKWARD:
202          (*gdk_env())->CallVoidMethod (gdk_env(), obj, postAdjustmentEventID,
203                                        AWT_ADJUSTMENT_UNIT_DECREMENT,
204                                        (jint) value);
205          break;
206        case GTK_SCROLL_STEP_FORWARD:
207          (*gdk_env())->CallVoidMethod (gdk_env(), obj, postAdjustmentEventID,
208                                        AWT_ADJUSTMENT_UNIT_INCREMENT,
209                                        (jint) value);
210          break;
211        case GTK_SCROLL_PAGE_BACKWARD:
212          (*gdk_env())->CallVoidMethod (gdk_env(), obj, postAdjustmentEventID,
213                                        AWT_ADJUSTMENT_BLOCK_DECREMENT,
214                                        (jint) value);
215          break;
216        case GTK_SCROLL_PAGE_FORWARD:
217          (*gdk_env())->CallVoidMethod (gdk_env(), obj, postAdjustmentEventID,
218                                        AWT_ADJUSTMENT_BLOCK_INCREMENT,
219                                        (jint) value);
220          break;
221        default:
222          /* GTK_SCROLL_JUMP: */
223          (*gdk_env())->CallVoidMethod (gdk_env(), obj, postAdjustmentEventID,
224                                        AWT_ADJUSTMENT_TRACK,
225                                        (jint) value);
226          break;
227        }
228      return FALSE;
229  }  }

Legend:
Removed from v.1.12  
changed lines
  Added in v.1.13

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