⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gnu_java_awt_peer_gtk_gtkcomponentpeer.c

📁 gcc的组建
💻 C
📖 第 1 页 / 共 3 页
字号:
     It infers numlock state from the only Java virtual keys that are     affected by it. */  if (keyCode == VK_NUMPAD9      || keyCode == VK_NUMPAD8      || keyCode == VK_NUMPAD7      || keyCode == VK_NUMPAD6      || keyCode == VK_NUMPAD5      || keyCode == VK_NUMPAD4      || keyCode == VK_NUMPAD3      || keyCode == VK_NUMPAD2      || keyCode == VK_NUMPAD1      || keyCode == VK_NUMPAD0      || keyCode == VK_DECIMAL)    event->key.state |= GDK_MOD2_MASK;  /* These values don't need to be filled in since GTK doesn't use     them. */  event->key.length = 0;  event->key.string = NULL;  lookup_keyval = cp_gtk_awt_keycode_to_keysym (keyCode, keyLocation);  if (!gdk_keymap_get_entries_for_keyval (gdk_keymap_get_default (),                                          lookup_keyval,                                          &keymap_keys,                                          &n_keys))    {      /* No matching keymap entry was found. */      g_printerr ("No matching keymap entries were found\n");      gdk_threads_leave ();      return;    }  /* Note: if n_keys > 1 then there are multiple hardware keycodes     that translate to lookup_keyval.  We arbitrarily choose the first     hardware keycode from the list returned by     gdk_keymap_get_entries_for_keyval. */  event->key.hardware_keycode = keymap_keys[0].keycode;  event->key.group =  keymap_keys[0].group;  g_free (keymap_keys);  if (!gdk_keymap_translate_keyboard_state (gdk_keymap_get_default (),                                            event->key.hardware_keycode,                                            event->key.state,                                            event->key.group,                                            &event->key.keyval,                                            NULL, NULL, NULL))    {      /* No matching keyval was found. */      g_printerr ("No matching keyval was found\n");      gdk_threads_leave ();      return;    }  /*  keyevent = (GdkEventKey *) event; */  /*  g_printerr ("generated event: sent: %d  time: %d  state: %d  keyval: %d  length: %d  string: %s  hardware_keycode: %d  group: %d\n", keyevent->send_event, keyevent->time, keyevent->state, keyevent->keyval, keyevent->length, keyevent->string, keyevent->hardware_keycode, keyevent->group); */  /* We already received the original key event on the window itself,     so we don't want to resend it. */  if (!GTK_IS_WINDOW (ptr))    {      if (GTK_IS_SCROLLED_WINDOW (ptr))        gtk_widget_event (GTK_WIDGET (GTK_SCROLLED_WINDOW (ptr)->container.child), event);      else        gtk_widget_event (GTK_WIDGET (ptr), event);    }  gdk_threads_leave ();}/* * Find the origin of a widget's window. */JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkComponentPeer_gtkWindowGetLocationOnScreen  (JNIEnv * env, jobject obj, jintArray jpoint){  void *ptr;  jint *point;  gdk_threads_enter ();  ptr = NSA_GET_PTR (env, obj);  point = (*env)->GetIntArrayElements (env, jpoint, 0);  gdk_window_get_root_origin (GTK_WIDGET (ptr)->window, point, point+1);  (*env)->ReleaseIntArrayElements(env, jpoint, point, 0);  gdk_threads_leave ();}/* * Find the origin of a widget */JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkComponentPeer_gtkWidgetGetLocationOnScreen  (JNIEnv * env, jobject obj, jintArray jpoint){  void *ptr;  jint *point;  GtkWidget *widget;  gdk_threads_enter ();  ptr = NSA_GET_PTR (env, obj);  point = (*env)->GetIntArrayElements (env, jpoint, 0);  widget = GTK_WIDGET(ptr);  while(gtk_widget_get_parent(widget) != NULL)    widget = gtk_widget_get_parent(widget);  gdk_window_get_position (GTK_WIDGET(widget)->window, point, point+1);  *point += GTK_WIDGET(ptr)->allocation.x;  *(point+1) += GTK_WIDGET(ptr)->allocation.y;  (*env)->ReleaseIntArrayElements(env, jpoint, point, 0);  gdk_threads_leave ();}/* * Find this widget's current size. */JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkComponentPeer_gtkWidgetGetDimensions  (JNIEnv *env, jobject obj, jintArray jdims){  void *ptr;  jint *dims;  GtkRequisition requisition;  gdk_threads_enter ();  ptr = NSA_GET_PTR (env, obj);  dims = (*env)->GetIntArrayElements (env, jdims, 0);    dims[0] = dims[1] = 0;  gtk_widget_size_request (GTK_WIDGET (ptr), &requisition);  dims[0] = requisition.width;  dims[1] = requisition.height;  (*env)->ReleaseIntArrayElements (env, jdims, dims, 0);  gdk_threads_leave ();}/* * Find this widget's preferred size. */JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkComponentPeer_gtkWidgetGetPreferredDimensions  (JNIEnv *env, jobject obj, jintArray jdims){  void *ptr;  jint *dims;  GtkRequisition current_req;  GtkRequisition natural_req;  gdk_threads_enter ();  ptr = NSA_GET_PTR (env, obj);  dims = (*env)->GetIntArrayElements (env, jdims, 0);    dims[0] = dims[1] = 0;  /* Widgets that extend GtkWindow such as GtkFileChooserDialog may have     a default size.  These values seem more useful then the natural     requisition values, particularly for GtkFileChooserDialog. */  if (GTK_IS_WINDOW (ptr))    {      gint width, height;      gtk_window_get_default_size (GTK_WINDOW (ptr), &width, &height);      dims[0] = width;      dims[1] = height;    }  else    {      /* Save the widget's current size request. */      gtk_widget_size_request (GTK_WIDGET (ptr), &current_req);      /* Get the widget's "natural" size request. */      gtk_widget_set_size_request (GTK_WIDGET (ptr), -1, -1);      gtk_widget_size_request (GTK_WIDGET (ptr), &natural_req);      /* Reset the widget's size request. */      gtk_widget_set_size_request (GTK_WIDGET (ptr),			           current_req.width, current_req.height);      dims[0] = natural_req.width;      dims[1] = natural_req.height;    }  (*env)->ReleaseIntArrayElements (env, jdims, dims, 0);  gdk_threads_leave ();}JNIEXPORT void JNICALLJava_gnu_java_awt_peer_gtk_GtkComponentPeer_setNativeBounds  (JNIEnv *env, jobject obj, jint x, jint y, jint width, jint height){  GtkWidget *widget;  void *ptr;  gdk_threads_enter ();  ptr = NSA_GET_PTR (env, obj);  widget = GTK_WIDGET (ptr);  /* We assume that -1 is a width or height and not a request for the     widget's natural size. */  width = width < 0 ? 0 : width;  height = height < 0 ? 0 : height;  if (GTK_IS_VIEWPORT (widget->parent))    gtk_widget_set_size_request (widget, width, height);  else    {      if (!(width == 0 && height == 0))        {          gtk_widget_set_size_request (widget, width, height);          if (widget->parent != NULL)            gtk_fixed_move (GTK_FIXED (widget->parent), widget, x, y);        }    }  gdk_threads_leave ();}JNIEXPORT jintArray JNICALL Java_gnu_java_awt_peer_gtk_GtkComponentPeer_gtkWidgetGetBackground  (JNIEnv *env, jobject obj){  void *ptr;  jintArray array;  int *rgb;  GdkColor bg;  gdk_threads_enter ();  ptr = NSA_GET_PTR (env, obj);  bg = GTK_WIDGET (ptr)->style->bg[GTK_STATE_NORMAL];  array = (*env)->NewIntArray (env, 3);  rgb = (*env)->GetIntArrayElements (env, array, NULL);  /* convert color data from 16 bit values down to 8 bit values */  rgb[0] = bg.red   >> 8;  rgb[1] = bg.green >> 8;  rgb[2] = bg.blue  >> 8;  (*env)->ReleaseIntArrayElements (env, array, rgb, 0);  gdk_threads_leave ();  return array;}JNIEXPORT jintArray JNICALL Java_gnu_java_awt_peer_gtk_GtkComponentPeer_gtkWidgetGetForeground  (JNIEnv *env, jobject obj){  void *ptr;  jintArray array;  jint *rgb;  GdkColor fg;  gdk_threads_enter ();  ptr = NSA_GET_PTR (env, obj);  fg = GTK_WIDGET (ptr)->style->fg[GTK_STATE_NORMAL];  array = (*env)->NewIntArray (env, 3);  rgb = (*env)->GetIntArrayElements (env, array, NULL);  /* convert color data from 16 bit values down to 8 bit values */  rgb[0] = fg.red   >> 8;  rgb[1] = fg.green >> 8;  rgb[2] = fg.blue  >> 8;  (*env)->ReleaseIntArrayElements (env, array, rgb, 0);  gdk_threads_leave ();  return array;}JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkComponentPeer_gtkWidgetSetBackground  (JNIEnv *env, jobject obj, jint red, jint green, jint blue){  GdkColor normal_color;  GdkColor active_color;  GtkWidget *widget;  void *ptr;  gdk_threads_enter ();  ptr = NSA_GET_PTR (env, obj);  normal_color.red = (red / 255.0) * 65535;  normal_color.green = (green / 255.0) * 65535;  normal_color.blue = (blue / 255.0) * 65535;  /* This calculation only approximates the active colors produced by     Sun's AWT. */  active_color.red = 0.85 * (red / 255.0) * 65535;  active_color.green = 0.85 * (green / 255.0) * 65535;  active_color.blue = 0.85 * (blue / 255.0) * 65535;  widget = find_bg_color_widget (GTK_WIDGET (ptr));  gtk_widget_modify_bg (widget, GTK_STATE_NORMAL, &normal_color);  gtk_widget_modify_bg (widget, GTK_STATE_ACTIVE, &active_color);  gtk_widget_modify_bg (widget, GTK_STATE_PRELIGHT, &normal_color);  gdk_threads_leave ();}JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkComponentPeer_gtkWidgetSetForeground  (JNIEnv *env, jobject obj, jint red, jint green, jint blue){  GdkColor color;  GtkWidget *widget;  void *ptr;  gdk_threads_enter ();  ptr = NSA_GET_PTR (env, obj);  color.red = (red / 255.0) * 65535;  color.green = (green / 255.0) * 65535;  color.blue = (blue / 255.0) * 65535;  widget = find_fg_color_widget (GTK_WIDGET (ptr));  gtk_widget_modify_fg (widget, GTK_STATE_NORMAL, &color);  gtk_widget_modify_fg (widget, GTK_STATE_ACTIVE, &color);  gtk_widget_modify_fg (widget, GTK_STATE_PRELIGHT, &color);  gdk_threads_leave ();}JNIEXPORT void JNICALLJava_gnu_java_awt_peer_gtk_GtkComponentPeer_setVisibleNative  (JNIEnv *env, jobject obj, jboolean visible){  gdk_threads_enter();  Java_gnu_java_awt_peer_gtk_GtkComponentPeer_setVisibleNativeUnlocked    (env, obj, visible);  gdk_threads_leave();}JNIEXPORT void JNICALLJava_gnu_java_awt_peer_gtk_GtkComponentPeer_setVisibleNativeUnlocked  (JNIEnv *env, jobject obj, jboolean visible){  void *ptr;  ptr = NSA_GET_PTR (env, obj);  if (visible)    gtk_widget_show (GTK_WIDGET (ptr));  else    gtk_widget_hide (GTK_WIDGET (ptr));}JNIEXPORT jboolean JNICALL Java_gnu_java_awt_peer_gtk_GtkComponentPeer_isEnabled   (JNIEnv *env, jobject obj)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -