📄 gnu_java_awt_peer_gtk_gtkwindowpeer.c
字号:
(jint) AWT_WINDOW_CLOSED, (jobject) NULL, (jint) 0);}static voidwindow_show_cb (GtkWidget *widget __attribute__((unused)), jobject peer){ (*cp_gtk_gdk_env())->CallVoidMethod (cp_gtk_gdk_env(), peer, postWindowEventID, (jint) AWT_WINDOW_OPENED, (jobject) NULL, (jint) 0);}static voidwindow_focus_state_change_cb (GtkWidget *widget, GParamSpec *pspec __attribute__((unused)), jobject peer){ if (GTK_WINDOW (widget)->has_toplevel_focus) (*cp_gtk_gdk_env())->CallVoidMethod (cp_gtk_gdk_env(), peer, postWindowEventID, (jint) AWT_WINDOW_ACTIVATED, (jobject) NULL, (jint) 0); else (*cp_gtk_gdk_env())->CallVoidMethod (cp_gtk_gdk_env(), peer, postWindowEventID, (jint) AWT_WINDOW_DEACTIVATED, (jobject) NULL, (jint) 0);}static gbooleanwindow_focus_in_cb (GtkWidget * widget __attribute__((unused)), GdkEventFocus *event __attribute__((unused)), jobject peer){ (*cp_gtk_gdk_env())->CallVoidMethod (cp_gtk_gdk_env(), peer, postWindowEventID, (jint) AWT_WINDOW_GAINED_FOCUS, (jobject) NULL, (jint) 0); return FALSE;}static gbooleanwindow_focus_out_cb (GtkWidget * widget __attribute__((unused)), GdkEventFocus *event __attribute__((unused)), jobject peer){ (*cp_gtk_gdk_env())->CallVoidMethod (cp_gtk_gdk_env(), peer, postWindowEventID, (jint) AWT_WINDOW_LOST_FOCUS, (jobject) NULL, (jint) 0); return FALSE;}static gbooleanwindow_window_state_cb (GtkWidget *widget __attribute__((unused)), GdkEvent *event, jobject peer){ jint new_state; /* Handle WINDOW_ICONIFIED and WINDOW_DEICONIFIED events. */ if (event->window_state.changed_mask & GDK_WINDOW_STATE_ICONIFIED) { /* We've either been iconified or deiconified. */ if (event->window_state.new_window_state & GDK_WINDOW_STATE_ICONIFIED) { /* We've been iconified. */ (*cp_gtk_gdk_env())->CallVoidMethod (cp_gtk_gdk_env(), peer, postWindowEventID, (jint) AWT_WINDOW_ICONIFIED, (jobject) NULL, (jint) 0); } else { /* We've been deiconified. */ (*cp_gtk_gdk_env())->CallVoidMethod (cp_gtk_gdk_env(), peer, postWindowEventID, (jint) AWT_WINDOW_DEICONIFIED, (jobject) NULL, (jint) 0); } } /* Post a WINDOW_STATE_CHANGED event, passing the new frame state to GtkWindowPeer. */ new_state = AWT_FRAME_STATE_NORMAL; if (event->window_state.new_window_state & GDK_WINDOW_STATE_ICONIFIED) new_state |= AWT_FRAME_STATE_ICONIFIED; (*cp_gtk_gdk_env())->CallVoidMethod (cp_gtk_gdk_env(), peer, postWindowEventID, (jint) AWT_WINDOW_STATE_CHANGED, (jobject) NULL, new_state); return TRUE;}static gbooleanwindow_property_changed_cb (GtkWidget *widget __attribute__((unused)), GdkEventProperty *event, jobject peer){ unsigned long *extents; union extents_union gu_ex; gu_ex.extents = &extents; if (gdk_atom_intern ("_NET_FRAME_EXTENTS", FALSE) == event->atom && gdk_property_get (event->window, gdk_atom_intern ("_NET_FRAME_EXTENTS", FALSE), gdk_atom_intern ("CARDINAL", FALSE), 0, sizeof (unsigned long) * 4, FALSE, NULL, NULL, NULL, gu_ex.gu_extents)) { (*cp_gtk_gdk_env())->CallVoidMethod (cp_gtk_gdk_env(), peer, postInsetsChangedEventID, (jint) extents[2], /* top */ (jint) extents[0], /* left */ (jint) extents[3], /* bottom */ (jint) extents[1]); /* right */ } return FALSE;}static voidrealize_cb (GtkWidget *widget, jobject peer){ jint top = 0; jint left = 0; jint bottom = 0; jint right = 0; jint width = 0; jint height = 0; width = (*cp_gtk_gdk_env())->CallIntMethod (cp_gtk_gdk_env(), peer, windowGetWidthID); height = (*cp_gtk_gdk_env())->CallIntMethod (cp_gtk_gdk_env(), peer, windowGetHeightID); window_get_frame_extents (widget, &top, &left, &bottom, &right); (*cp_gtk_gdk_env())->CallVoidMethod (cp_gtk_gdk_env(), peer, postInsetsChangedEventID, top, left, bottom, right); gtk_window_set_default_size (GTK_WINDOW (widget), MAX (1, width - left - right), MAX (1, height - top - bottom)); /* set the size like we do in nativeSetBounds */ gtk_widget_set_size_request (widget, MAX (1, width - left - right), MAX (1, height - top - bottom)); gtk_window_resize (GTK_WINDOW (widget), MAX (1, width - left - right), MAX (1, height - top - bottom));}/* * This method returns a GDK keyval that corresponds to one of the * keysyms in the X keymap table. The return value is only used to * determine the keyval's corresponding hardware keycode, and doesn't * reflect an accurate translation of a Java virtual key value to a * GDK keyval. */#ifdef __GNUC____inline#endifguintcp_gtk_awt_keycode_to_keysym (jint keyCode, jint keyLocation){ /* GDK_A through GDK_Z */ if (keyCode >= VK_A && keyCode <= VK_Z) return gdk_keyval_to_lower (keyCode); /* GDK_0 through GDK_9 */ if (keyCode >= VK_0 && keyCode <= VK_9) return keyCode; switch (keyCode) { case VK_ENTER: return keyLocation == AWT_KEY_LOCATION_NUMPAD ? GDK_KP_Enter : GDK_Return; case VK_BACK_SPACE: return GDK_BackSpace; case VK_TAB: return GDK_Tab; case VK_CANCEL: return GDK_Cancel; case VK_CLEAR: return GDK_Clear; case VK_SHIFT: return keyLocation == AWT_KEY_LOCATION_LEFT ? GDK_Shift_L : GDK_Shift_R; case VK_CONTROL: return keyLocation == AWT_KEY_LOCATION_LEFT ? GDK_Control_L : GDK_Control_R; case VK_ALT: return keyLocation == AWT_KEY_LOCATION_LEFT ? GDK_Alt_L : GDK_Alt_R; case VK_PAUSE: return GDK_Pause; case VK_CAPS_LOCK: return GDK_Caps_Lock; case VK_ESCAPE: return GDK_Escape; case VK_SPACE: return GDK_space; case VK_PAGE_UP: return keyLocation == AWT_KEY_LOCATION_NUMPAD ? GDK_KP_Page_Up : GDK_Page_Up; case VK_PAGE_DOWN: return keyLocation == AWT_KEY_LOCATION_NUMPAD ? GDK_KP_Page_Down : GDK_Page_Down; case VK_END: return keyLocation == AWT_KEY_LOCATION_NUMPAD ? GDK_KP_End : GDK_End; case VK_HOME: return keyLocation == AWT_KEY_LOCATION_NUMPAD ? GDK_KP_Home : GDK_Home; case VK_LEFT: return GDK_Left; case VK_UP: return GDK_Up; case VK_RIGHT: return GDK_Right; case VK_DOWN: return GDK_Down; case VK_COMMA: return GDK_comma; case VK_MINUS: return GDK_minus; case VK_PERIOD: return GDK_period; case VK_SLASH: return GDK_slash; /* case VK_0: case VK_1: case VK_2: case VK_3: case VK_4: case VK_5: case VK_6: case VK_7: case VK_8: case VK_9: */ case VK_SEMICOLON: return GDK_semicolon; case VK_EQUALS: return GDK_equal; /* case VK_A: case VK_B: case VK_C: case VK_D: case VK_E: case VK_F: case VK_G: case VK_H: case VK_I: case VK_J: case VK_K: case VK_L: case VK_M: case VK_N: case VK_O: case VK_P: case VK_Q: case VK_R: case VK_S: case VK_T: case VK_U: case VK_V: case VK_W: case VK_X: case VK_Y: case VK_Z: */ case VK_OPEN_BRACKET: return GDK_bracketleft; case VK_BACK_SLASH: return GDK_backslash; case VK_CLOSE_BRACKET: return GDK_bracketright; case VK_NUMPAD0: return GDK_KP_0; case VK_NUMPAD1: return GDK_KP_1; case VK_NUMPAD2: return GDK_KP_2; case VK_NUMPAD3: return GDK_KP_3; case VK_NUMPAD4: return GDK_KP_4; case VK_NUMPAD5: return GDK_KP_5; case VK_NUMPAD6: return GDK_KP_6; case VK_NUMPAD7: return GDK_KP_7; case VK_NUMPAD8: return GDK_KP_8; case VK_NUMPAD9: return GDK_KP_9; case VK_MULTIPLY: return GDK_KP_Multiply; case VK_ADD: return GDK_KP_Add; /* case VK_SEPARATER: */ case VK_SEPARATOR: return GDK_KP_Separator; case VK_SUBTRACT: return GDK_KP_Subtract; case VK_DECIMAL: return GDK_KP_Decimal; case VK_DIVIDE: return GDK_KP_Divide; case VK_DELETE: return keyLocation == AWT_KEY_LOCATION_NUMPAD ? GDK_KP_Delete : GDK_Delete; case VK_NUM_LOCK: return GDK_Num_Lock; case VK_SCROLL_LOCK: return GDK_Scroll_Lock; case VK_F1: return GDK_F1; case VK_F2: return GDK_F2; case VK_F3: return GDK_F3; case VK_F4: return GDK_F4; case VK_F5: return GDK_F5; case VK_F6: return GDK_F6; case VK_F7: return GDK_F7; case VK_F8: return GDK_F8; case VK_F9: return GDK_F9; case VK_F10: return GDK_F10; case VK_F11: return GDK_F11; case VK_F12: return GDK_F12; case VK_F13: return GDK_F13; case VK_F14: return GDK_F14; case VK_F15: return GDK_F15; case VK_F16: return GDK_F16; case VK_F17: return GDK_F17; case VK_F18: return GDK_F18; case VK_F19: return GDK_F19; case VK_F20: return GDK_F20; case VK_F21: return GDK_F21; case VK_F22: return GDK_F22; case VK_F23: return GDK_F23; case VK_F24: return GDK_F24; case VK_PRINTSCREEN: return GDK_Print; case VK_INSERT: return keyLocation == AWT_KEY_LOCATION_NUMPAD ? GDK_KP_Insert : GDK_Insert; case VK_HELP: return GDK_Help; case VK_META: return keyLocation == AWT_KEY_LOCATION_LEFT ? GDK_Meta_L : GDK_Meta_R; case VK_BACK_QUOTE: return GDK_grave; case VK_QUOTE: return GDK_apostrophe; case VK_KP_UP: return GDK_KP_Up; case VK_KP_DOWN: return GDK_KP_Down; case VK_KP_LEFT: return GDK_KP_Left; case VK_KP_RIGHT: return GDK_KP_Right; case VK_DEAD_GRAVE: return GDK_dead_grave; case VK_DEAD_ACUTE: return GDK_dead_acute; case VK_DEAD_CIRCUMFLEX: return GDK_dead_circumflex; case VK_DEAD_TILDE: return GDK_dead_tilde; case VK_DEAD_MACRON: return GDK_dead_macron; case VK_DEAD_BREVE: return GDK_dead_breve; case VK_DEAD_ABOVEDOT: return GDK_dead_abovedot; case VK_DEAD_DIAERESIS: return GDK_dead_diaeresis; case VK_DEAD_ABOVERING: return GDK_dead_abovering; case VK_DEAD_DOUBLEACUTE: return GDK_dead_doubleacute; case VK_DEAD_CARON: return GDK_dead_caron; case VK_DEAD_CEDILLA: return GDK_dead_cedilla; case VK_DEAD_OGONEK: return GDK_dead_ogonek; case VK_DEAD_IOTA: return GDK_dead_iota; case VK_DEAD_VOICED_SOUND: return GDK_dead_voiced_sound; case VK_DEAD_SEMIVOICED_SOUND: return GDK_dead_semivoiced_sound; case VK_AMPERSAND: return GDK_ampersand; case VK_ASTERISK: return GDK_asterisk; case VK_QUOTEDBL: return GDK_quotedbl; case VK_LESS: return GDK_less; case VK_GREATER: return GDK_greater; case VK_BRACELEFT: return GDK_braceleft; case VK_BRACERIGHT: return GDK_braceright; case VK_AT: return GDK_at; case VK_COLON: return GDK_colon; case VK_CIRCUMFLEX: return GDK_asciicircum; case VK_DOLLAR: return GDK_dollar; case VK_EURO_SIGN: return GDK_EuroSign; case VK_EXCLAMATION_MARK: return GDK_exclam; case VK_INVERTED_EXCLAMATION_MARK: return GDK_exclamdown; case VK_LEFT_PARENTHESIS: return GDK_parenleft; case VK_NUMBER_SIGN: return GDK_numbersign; case VK_PLUS: return GDK_plus; case VK_RIGHT_PARENTHESIS: return GDK_parenright; case VK_UNDERSCORE: return GDK_underscore; /* case VK_FINAL: case VK_CONVERT: case VK_NONCONVERT: case VK_ACCEPT: */ case VK_MODECHANGE: return GDK_Mode_switch; /* case VK_KANA: */ case VK_KANJI: return GDK_Kanji; /* case VK_ALPHANUMERIC: */ case VK_KATAKANA: return GDK_Katakana; case VK_HIRAGANA: return GDK_Hiragana; /* case VK_FULL_WIDTH: case VK_HALF_WIDTH: case VK_ROMAN_CHARACTERS: case VK_ALL_CANDIDATES: */ case VK_PREVIOUS_CANDIDATE: return GDK_PreviousCandidate; case VK_CODE_INPUT: return GDK_Codeinput; /* case VK_JAPANESE_KATAKANA: case VK_JAPANESE_HIRAGANA: case VK_JAPANESE_ROMAN: */ case VK_KANA_LOCK: return GDK_Kana_Lock; /* case VK_INPUT_METHOD_ON_OFF: case VK_CUT: case VK_COPY: case VK_PASTE: case VK_UNDO: case VK_AGAIN: case VK_FIND: case VK_PROPS: case VK_STOP: case VK_COMPOSE: case VK_ALT_GRAPH: */ default: return GDK_VoidSymbol; }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -