gnu_java_awt_peer_gtk_GtkScrollPanePeer.c [plain text]
#include "gtkpeer.h"
#include "gnu_java_awt_peer_gtk_GtkScrollPanePeer.h"
JNIEXPORT void JNICALL
Java_gnu_java_awt_peer_gtk_GtkScrollPanePeer_create
(JNIEnv *env, jobject obj, int width, int height)
{
GtkWidget *sw;
NSA_SET_GLOBAL_REF (env, obj);
gdk_threads_enter ();
sw = gtk_scrolled_window_new (NULL, NULL);
gtk_widget_set_size_request (sw, width, height);
gdk_threads_leave ();
NSA_SET_PTR (env, obj, sw);
}
JNIEXPORT void JNICALL
Java_gnu_java_awt_peer_gtk_GtkScrollPanePeer_setScrollPosition
(JNIEnv *env, jobject obj, jint x, jint y)
{
GtkAdjustment *hadj, *vadj;
GtkScrolledWindow *sw;
void *ptr;
ptr = NSA_GET_PTR (env, obj);
gdk_threads_enter ();
sw = GTK_SCROLLED_WINDOW (ptr);
hadj = gtk_scrolled_window_get_hadjustment (sw);
vadj = gtk_scrolled_window_get_vadjustment (sw);
gtk_adjustment_set_value (hadj, x);
gtk_adjustment_set_value (vadj, y);
gdk_threads_leave ();
}
JNIEXPORT void JNICALL
Java_gnu_java_awt_peer_gtk_GtkScrollPanePeer_gtkScrolledWindowSetHScrollIncrement
(JNIEnv *env, jobject obj, jint u)
{
GtkAdjustment *hadj;
GtkScrolledWindow *sw;
void *ptr;
ptr = NSA_GET_PTR (env, obj);
gdk_threads_enter ();
sw = GTK_SCROLLED_WINDOW(ptr);
hadj = gtk_scrolled_window_get_hadjustment (sw);
hadj->step_increment = u;
gdk_threads_leave ();
}
JNIEXPORT void JNICALL
Java_gnu_java_awt_peer_gtk_GtkScrollPanePeer_gtkScrolledWindowSetVScrollIncrement
(JNIEnv *env, jobject obj, jint u)
{
GtkAdjustment *vadj;
GtkScrolledWindow *sw;
void *ptr;
ptr = NSA_GET_PTR (env, obj);
gdk_threads_enter ();
sw = GTK_SCROLLED_WINDOW(ptr);
vadj = gtk_scrolled_window_get_hadjustment (sw);
vadj->step_increment = u;
gdk_threads_leave ();
}
JNIEXPORT jint JNICALL
Java_gnu_java_awt_peer_gtk_GtkScrollPanePeer_getHScrollbarHeight
(JNIEnv *env, jobject obj)
{
void *ptr;
GtkScrolledWindow *sw;
GtkRequisition requisition;
jint height = 0;
jint spacing = 0;
ptr = NSA_GET_PTR (env, obj);
gdk_threads_enter ();
sw = GTK_SCROLLED_WINDOW (ptr);
gtk_widget_size_request (sw->hscrollbar, &requisition);
gtk_widget_style_get (GTK_WIDGET (sw), "scrollbar_spacing", &spacing, NULL);
height = requisition.height + spacing;
gdk_threads_leave ();
return height;
}
JNIEXPORT jint JNICALL
Java_gnu_java_awt_peer_gtk_GtkScrollPanePeer_getVScrollbarWidth
(JNIEnv *env, jobject obj)
{
void *ptr;
GtkScrolledWindow *sw;
GtkRequisition requisition;
jint width = 0;
jint spacing = 0;
ptr = NSA_GET_PTR (env, obj);
gdk_threads_enter ();
sw = GTK_SCROLLED_WINDOW (ptr);
gtk_widget_size_request (sw->vscrollbar, &requisition);
gtk_widget_style_get (GTK_WIDGET (sw), "scrollbar_spacing", &spacing, NULL);
width = requisition.width + spacing;
gdk_threads_leave ();
return width;
}
JNIEXPORT void JNICALL
Java_gnu_java_awt_peer_gtk_GtkScrollPanePeer_setPolicy
(JNIEnv *env, jobject obj, jint policy)
{
void *ptr;
ptr = NSA_GET_PTR (env, obj);
switch (policy)
{
case AWT_SCROLLPANE_SCROLLBARS_AS_NEEDED:
policy = GTK_POLICY_AUTOMATIC;
break;
case AWT_SCROLLPANE_SCROLLBARS_ALWAYS:
policy = GTK_POLICY_ALWAYS;
break;
case AWT_SCROLLPANE_SCROLLBARS_NEVER:
policy = GTK_POLICY_NEVER;
break;
}
gdk_threads_enter ();
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (ptr), policy, policy);
gdk_threads_leave ();
}