454 |
* Find the origin of a widget's window. |
* Find the origin of a widget's window. |
455 |
*/ |
*/ |
456 |
JNIEXPORT void JNICALL |
JNIEXPORT void JNICALL |
457 |
Java_gnu_java_awt_peer_gtk_GtkComponentPeer_gtkWidgetGetLocationOnScreen |
Java_gnu_java_awt_peer_gtk_GtkComponentPeer_gtkWindowGetLocationOnScreen |
458 |
(JNIEnv * env, jobject obj, jintArray jpoint) |
(JNIEnv * env, jobject obj, jintArray jpoint) |
459 |
{ |
{ |
460 |
void *ptr; |
void *ptr; |
467 |
|
|
468 |
gdk_window_get_root_origin (GTK_WIDGET (ptr)->window, point, point+1); |
gdk_window_get_root_origin (GTK_WIDGET (ptr)->window, point, point+1); |
469 |
|
|
470 |
if (!GTK_IS_CONTAINER (ptr)) |
(*env)->ReleaseIntArrayElements(env, jpoint, point, 0); |
471 |
{ |
|
472 |
*point += GTK_WIDGET(ptr)->allocation.x; |
gdk_threads_leave (); |
473 |
*(point+1) += GTK_WIDGET(ptr)->allocation.y; |
} |
474 |
} |
|
475 |
|
/* |
476 |
|
* Find the origin of a widget |
477 |
|
*/ |
478 |
|
JNIEXPORT void JNICALL |
479 |
|
Java_gnu_java_awt_peer_gtk_GtkComponentPeer_gtkWidgetGetLocationOnScreen |
480 |
|
(JNIEnv * env, jobject obj, jintArray jpoint) |
481 |
|
{ |
482 |
|
void *ptr; |
483 |
|
jint *point; |
484 |
|
GtkWidget *widget; |
485 |
|
|
486 |
|
gdk_threads_enter (); |
487 |
|
|
488 |
|
ptr = NSA_GET_PTR (env, obj); |
489 |
|
point = (*env)->GetIntArrayElements (env, jpoint, 0); |
490 |
|
|
491 |
|
widget = GTK_WIDGET(ptr); |
492 |
|
while(gtk_widget_get_parent(widget) != NULL) |
493 |
|
widget = gtk_widget_get_parent(widget); |
494 |
|
gdk_window_get_position (GTK_WIDGET(widget)->window, point, point+1); |
495 |
|
|
496 |
|
*point += GTK_WIDGET(ptr)->allocation.x; |
497 |
|
*(point+1) += GTK_WIDGET(ptr)->allocation.y; |
498 |
|
|
499 |
(*env)->ReleaseIntArrayElements(env, jpoint, point, 0); |
(*env)->ReleaseIntArrayElements(env, jpoint, point, 0); |
500 |
|
|