summaryrefslogtreecommitdiff
path: root/src/gtkutil.c
Commit message (Collapse)AuthorAgeFilesLines
* Revert "Improve X event timestamp tracking"Po Lu2022-08-071-11/+0
| | | | | | | This reverts commit 4b98a79a508ebdc719abfcf51ee6de32e46d0e1c. This change was installed without answering several important questions.
* Improve X event timestamp trackingDaniel Colascione2022-08-061-0/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Fix two problems with our handling of X timestamps 1) We're not properly updating the X interaction timestamp after receiving certain input events, and 2) X events sent in response to emacsclient commands get stale timestamps because the timestamp tracking doesn't take into account that interactions with the user can occur outside the X input event channel. * src/xterm.c: (x_display_set_last_user_time_1): New function. (x_display_set_last_user_time): Call it. (x_ewmh_activate_frame): Refactor. (x_focus_frame): Don't call XSetInputFocus if we can use EWMH activation. (server_timestamp_predicate): New function. (x_get_server_time): New function. (x_note_oob_interaction): New function. (x_create_terminal): Register new function as terminal hook. * src/termhooks.h: New hook: note_oob_interaction_hook. * src/gtkutil.h: (xg_set_user_timestamp): Declare. * src/gtkutil.c: (xg_set_user_timestamp): New function. * src/frame.c: (Fframe_note_oob_interaction): New function. (syms_of_frame): Register it. * lisp/server.el: (server-switch-buffer): Call frame-note-oob-interaction when user requests frame be raised.
* Undo C parts of "Don't use the Gtk region face"Po Lu2022-07-231-0/+82
| | | | | This reverts commit a24f710395f9777cb9f8b000300e5e9c892d7794, apart from the change to faces.el and NEWS.
* Don't use the Gtk region faceLars Ingebrigtsen2022-07-231-82/+0
| | | | | | | | | | * lisp/faces.el (region): Don't use the Gtk region face, because it produces low contrast combinations (bug#46493). * src/gtkutil.h: * src/gtkutil.c (xg_check_special_colors): Remove. * src/xfns.c (x_defined_color): * src/pgtkterm.c (pgtk_defined_color): Don't call.
* * src/gtkutil.c (xg_free_frame_widgets): Avoid compiler warning.Eli Zaretskii2022-07-141-0/+2
|
* Minor fixes to PGTK child framesPo Lu2022-05-231-49/+56
| | | | | | | | | | * src/gtkutil.c (xg_check_special_colors): Handle child frames correctly. * src/pgtkfns.c (pgtk_set_child_frame_border_width): Synchronize code from X. (bug#55588) * src/pgtkmenu.c (pgtk_menu_show, pgtk_dialog_show): Allow in child frames. There are no problems here. * src/pgtkterm.c (pgtk_mouse_position): Clean up coding style.
* Fix extraneous quit events processing GTK native input inside popupsPo Lu2022-05-131-0/+3
| | | | | | | * src/gtkutil.c (xg_widget_key_press_event_cb): Return immediately if a popup is active. * src/xterm.c (x_filter_event): Clear `xg_pending_quit_event' if a popup is active.
* Minor cleanups to PGTK codePo Lu2022-04-181-2/+12
| | | | | | | | | | | | | | | | | | | | | | * src/gtkutil.c (xg_set_geometry): (xg_frame_set_char_size): (x_wm_set_size_hint): Rename to `xg_wm_set_size_hint'. All callers changed. * src/gtkutil.h: Update prototypes. * src/pgtkfns.c (unwind_create_frame): (Fx_create_frame): (compute_tip_xy): * src/pgtkterm.c (x_free_frame_resources): (x_destroy_window): (x_calc_absolute_position): (x_set_offset): (pgtk_set_window_size): (x_display_pixel_height): (x_display_pixel_width): (x_set_parent_frame): Rename `x_foo' functions to `pgtk_foo'. Get rid of some copy-pasted code from various places. (pgtk_create_terminal): Clean up coding style. * src/pgtkterm.h: Update prototypes.
* Fix event source attribution for GTK input methodsPo Lu2022-04-111-0/+20
| | | | | * src/gtkutil.c (xg_im_context_commit): Use pending keystroke source if it exists.
* Fix IM event source attribution on GTKPo Lu2022-04-111-0/+23
| | | | | | | * src/xterm.c (handle_one_xevent): Set pending times on GTK as well. * src/gtkutil.c (xg_widget_key_press_event_cb): Respect pending keystroke time on XI2.
* Fix build with GTK 3.18.0 or earlierPo Lu2022-03-161-0/+4
| | | | | | * src/gtkutil.c (xg_update_scroll_bar_pos) (xg_update_horizontal_scrollbar_pos): Avoid gtk_widget_queue_allocate on older GTK versions.
* Improve reliaibility of scroll bar dimensions adjustment on GTK 3Po Lu2022-03-131-1/+57
| | | | | | | | | | * src/gtkutil.c (xg_scroll_bar_size_allocate_cb): New function. (xg_finish_scroll_bar_creation): Attach new signal. (xg_update_scrollbar_pos) (xg_update_horizontal_scrollbar_pos): Also set window dimensions for the event box. * src/xterm.c (x_scroll_bar_configure): New function. * src/xterm.h: Update prototypes.
* Fix the PGTK buildPo Lu2022-03-121-2/+2
| | | | | | * src/gtkutil.c (xg_finish_scroll_bar_creation): Fix ifdefs preventing x_window from being correctly set. (xg_get_scroll_id_for_window): Ifdef out unused function.
* Try really hard to make GTK 3 scroll bars fitPo Lu2022-03-121-15/+74
| | | | | | | | | | | | | | | | | * src/gtkutil.c (xg_get_widget_from_map): New argument DISPLAY. All callers changed. (find_scrollbar_cb): New function. (xg_finish_scroll_bar_creation, xg_remove_scroll_bar) (xg_update_scrollbar_pos, xg_update_horizontal_scrollbar_pos) (xg_set_toolkit_scroll_bar_thumb) (xg_set_toolkit_horizontal_scroll_bar_thumb, xg_initialize): Stop using id_to_widget_map on X builds with GTK 3 and set the event box as the x_window instead. * src/xterm.c (x_window_to_scroll_bar): Don't look for ID on GTK 3. (handle_one_xevent): If a ConfigureNotify event is found for a scroll bar and the dimensions are wrong, resize the X window to the right ones.
* Fix initial values of scroll bar foreground and background on GTK 3Po Lu2022-03-111-8/+0
| | | | | | | | | * src/gtkutil.c (xg_create_frame_widgets): Stop creating scrollbar stylesheet providers. * src/xfns.c (Fx_create_frame): Create scroll bar stylesheet providers here instead. (x_set_scroll_bar_background): (x_set_scroll_bar_foreground): Ignore tooltip frames.
* Implement customization of scroll bar colors on GTK 3Po Lu2022-03-111-11/+19
| | | | | | | | | | | | * src/gtkutil.c (xg_create_frame_widgets): Create CSS providers for scroll bars. (xg_finish_scroll_bar_creation): Attach created CSS providers. * src/xfns.c (x_set_scroll_bar_foreground): (x_set_scroll_bar_background): Put appropriate content into CSS providers. * src/xterm.c (x_free_frame_resources): Free CSS providers. * src/xterm.h (struct x_output): New fields for scroll bar stylesheet providers.
* Fix menu bar activation on PGTKPo Lu2022-03-101-2/+7
| | | | | | | | | | * src/gtkutil.c (menu_bar_button_pressed_cb): Only update menu bar if no menu is active, and the event window is not the widget window itself. Also make menu in use. * src/pgtkmenu.c (popup_deactivate_callback): Make menu not in use. * src/xdisp.c (redisplay_internal): Return if popup_activated also on PGTK.
* Fix menu bar event detection on XI2 builds using Core InputPo Lu2022-03-101-2/+4
| | | | | | * src/gtkutil.c (xg_get_gdk_scale): Always return 1 on GTK+ 2. (xg_event_is_for_menubar): Fix some ifdefs. * src/xterm.c (handle_one_xevent): Update a comment.
* Fix some issues with GTK native input and modifiers on GTK 2Po Lu2022-03-091-0/+7
| | | | | * src/gtkutil.c (xg_widget_key_press_event_cb): Manually ignore modifier keys on GTK 2.
* Fix reporting of wheel events on top of GTK scroll barsPo Lu2022-03-011-12/+4
| | | | | | | | | | | * src/gtkutil.c (xg_update_scrollbar_pos): (xg_update_horizontal_scrollbar_pos): Stop ensuring the window is native. (xg_event_is_for_scrollbar): New variable `for_valuator'. All callers changed. * src/gtkutil.h: Update prototypes. * src/xterm.c (handle_one_xevent): Drop all valuator change events destined for scroll bars.
* Fix GTK build with GLib <2.44Po Lu2022-02-221-2/+8
| | | | | | | | * src/gtkutil.c (struct _EmacsMenuBar, EmacsMenuBar): New structs. (emacs_menu_bar_get_type): New function declaration. * src/gtkutil.c: Remove declaration of EmacsMenuBar class.
* Prevent GTK from setting unreasonable size hints with large menu barsPo Lu2022-02-211-0/+55
| | | | | | | | | | * src/gtkutil.c (struct _EmacsMenuBar): New struct. (emacs_menu_bar_init): (emacs_menu_bar_class_init): (emacs_menu_bar_get_preferred_width): (emacs_menu_bar_new): New functions. (xg_update_menu_item): Use our own menu bar class on GTK 3. * src/gtkutil.h (EmacsMenuBar): New class.
* Avoid consing extra string when processing GTK native inputPo Lu2022-02-191-3/+13
| | | | | | | | | | | * src/gtkutil.c (xg_im_context_commit): Use `decode_string_utf8' to decode input text. * src/keyboard.c (kbd_buffer_get_event_1): If coding system is Qt, simply return the string without decoding it. * src/termhooks.h (enum event_kind): Document meaning of Qt as coding system in a multibyte keystroke event's string argument.
* Always decode GTK input method text as utf-8-unixPo Lu2022-02-191-0/+4
| | | | | * src/gtkutil.c (xg_im_context_commit): Use `utf-8-unix' as coding system for text.
* Utilize new string decoding feature in GTK native inputPo Lu2022-02-191-21/+7
| | | | | | * src/gtkutil.c (xg_im_context_commit): Don't decode strings manually using g_utf8_to_ucs4 but pass unibyte string as the keystroke event arg instead.
* Replace ptrdiff_t with new specpdl_ref type for specpdl referencesMattias Engdegård2022-02-121-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The specpdl_ref type is just an alias for ptrdiff_t; the compiled code remains the same. All operations on specpdl_ref (arithmetic, comparison etc) now go through inline functions. The bulk of the change is almost completely mechanical. It is done to prepare for a type-safe representation and subsequent performance improvement. * src/lisp.h (specpdl_ref, specpdl_count_to_ref, specpdl_ref_to_count) (specpdl_ref_eq, specpdl_ref_lt, specpdl_ref_valid_p) (make_invalid_specpdl_ref, specpdl_ref_add, specpdl_ref_to_ptr): New. (SPECPDL_INDEX, struct handler, USE_SAFE_ALLOCA, safe_free) (safe_free_unbind_to): * src/alloc.c (run_finalizer_function, inhibit_garbage_collection) (garbage_collect, Fgarbage_collect, which_symbols): * src/bidi.c (bidi_at_paragraph_end, bidi_find_paragraph_start): * src/buffer.c (Fkill_buffer, Fset_buffer_major_mode, Fmove_overlay) (Fdelete_overlay): * src/bytecode.c (exec_byte_code): * src/callint.c (Ffuncall_interactively, Fcall_interactively): * src/callproc.c (Fcall_process, call_process, create_temp_file) (Fcall_process_region): * src/charset.c (load_charset_map_from_file): * src/coding.c (decode_coding_gap, decode_coding_object) (encode_coding_object, Fread_coding_system): * src/comp.c (emit_static_object, helper_unbind_n, load_comp_unit): * src/composite.c (update_compositions, autocmp_chars): * src/cygw32.c (conv_filename_to_w32_unicode) (conv_filename_from_w32_unicode): * src/data.c (notify_variable_watchers): * src/decompress.c (Fzlib_decompress_region): * src/dired.c (directory_files_internal, file_name_completion) (file_attributes): * src/dispnew.c (Fredisplay): * src/doc.c (get_doc_string, Fsnarf_documentation): * src/editfns.c (Fsave_excursion, Fsave_current_buffer) (Freplace_buffer_contents, Fsubst_char_in_region, Fsave_restriction) (styled_format): * src/emacs-module.c (Fmodule_load, funcall_module): * src/emacs.c (init_cmdargs, Fdump_emacs): * src/eval.c (call_debugger, do_debug_on_call, FletX, Flet) (Ffuncall_with_delayed_message, Funwind_protect) (internal_lisp_condition_case, signal_or_quit) (load_with_autoload_queue, Feval, grow_specpdl_allocation) (record_in_backtrace, eval_sub, Ffuncall, apply_lambda) (funcall_lambda, clear_unwind_protect, set_unwind_protect) (set_unwind_protect_ptr, unbind_to, Fbacktrace_eval): * src/fileio.c (Fmake_temp_file_internal, Fcopy_file, Frename_file) (Finsert_file_contents, write_region, Fdo_auto_save): * src/fns.c (Fyes_or_no_p, Frequire, hash_table_user_defined_call): * src/fringe.c (update_window_fringes): * src/gtkutil.c (xg_dialog_run): * src/haiku_io.c (c_specpdl_idx_from_cxx): * src/haiku_support.cc (be_popup_file_dialog): * src/haiku_support.h (c_specpdl_idx_from_cxx): * src/haikufns.c (haiku_create_frame, haiku_create_tip_frame) (haiku_hide_tip, Fx_show_tip, Fhaiku_read_file_name): * src/haikumenu.c (haiku_popup_dialog, set_frame_menubar): * src/image.c (slurp_file): * src/indent.c (line_number_display_width, Fvertical_motion): * src/insdel.c (signal_before_change, signal_after_change) (Fcombine_after_change_execute): * src/intervals.c (get_local_map): * src/json.c (lisp_to_json_nonscalar_1, Fjson_serialize, Fjson_insert) (Fjson_parse_string, Fjson_parse_buffer): * src/keyboard.c (recursive_edit_1, Frecursive_edit, cmd_error) (Finternal_track_mouse, command_loop_1, read_menu_command) (safe_run_hooks, read_event_from_main_queue, read_char, timer_check_2) (menu_item_eval_property, read_key_sequence, read_key_sequence_vs) (Fsuspend_emacs): * src/keymap.c (Fcurrent_active_maps, Fdescribe_vector) (Fhelp__describe_vector): * src/lread.c (Fload, save_match_data_load, readevalloop) (Feval_buffer, Feval_region, grow_read_buffer, read_integer, read1): * src/macros.c (Fexecute_kbd_macro): * src/menu.c (x_popup_menu_1): * src/minibuf.c (read_minibuf, set_minibuffer_mode) (read_minibuf_unwind, Fread_string, Fread_buffer): * src/nsfns.m (Fx_create_frame, Fx_show_tip): * src/nsmenu.m (ns_update_menubar, ns_menu_show, ns_popup_dialog): * src/pdumper.c (Fdump_emacs_portable): * src/pgtkfns.c (Fx_create_frame, x_create_tip_frame, x_hide_tip) (Fx_show_tip, Fpgtk_print_frames_dialog, Fx_file_dialog, Fx_select_font): * src/pgtkmenu.c (set_frame_menubar, create_and_show_popup_menu) (pgtk_menu_show, create_and_show_dialog, pgtk_dialog_show) (pgtk_popup_dialog): * src/pgtkterm.c (pgtk_cr_export_frames): * src/print.c (PRINTPREPARE, temp_output_buffer_setup) (Fprin1_to_string, print_vectorlike): * src/process.c (Fmake_process, create_process, Fmake_pipe_process) (Fmake_serial_process, connect_network_socket, Fmake_network_process) (network_interface_info, server_accept_connection) (wait_reading_process_output, read_process_output, exec_sentinel): * src/regex-emacs.c (re_match_2_internal): * src/search.c (looking_at_1, fast_looking_at, search_buffer_re): * src/sound.c (Fplay_sound_internal): * src/sysdep.c (system_process_attributes): * src/term.c (tty_menu_show): * src/textprop.c (Fnext_single_char_property_change) (Fprevious_single_char_property_change, add_text_properties_1) (set_text_properties, set_text_properties_1, Fremove_text_properties) (Fremove_list_of_text_properties): * src/thread.c (Fmutex_lock, invoke_thread_function): * src/undo.c (truncate_undo_list): * src/w32fns.c (Fx_create_frame, w32_create_tip_frame, w32_hide_tip) (Fx_show_tip, Fx_file_dialog): * src/w32font.c (Fx_select_font): * src/w32menu.c (set_frame_menubar): * src/window.c (window_list, next_window, window_list_1) (run_window_configuration_change_hook, Frun_window_scroll_functions) (run_window_change_functions, set_window_buffer) (temp_output_buffer_show, window_scroll, scroll_command) (Fscroll_other_window, Fscroll_other_window_down): * src/xdisp.c (safe__call, handle_fontified_prop, handle_face_prop) (handle_single_display_spec, Fbuffer_text_pixel_size) (message_dolog, with_echo_area_buffer, setup_echo_area_for_printing) (display_echo_area, set_message, clear_message, echo_area_display) (gui_consider_frame_title, prepare_menu_bars, update_menu_bar) (update_tab_bar, update_tool_bar, redisplay_internal) (redisplay_preserve_echo_area, run_window_scroll_functions) (redisplay_window, extend_face_to_end_of_line) (display_count_lines_logically, display_count_lines_visually) (display_mode_lines, display_mode_line, Fformat_mode_line) (decode_mode_spec): * src/xfns.c (Fx_create_frame, x_create_tip_frame, x_hide_tip) (Fx_show_tip, Fx_file_dialog, Fx_select_font, Fx_print_frames_dialog): * src/xmenu.c (set_frame_menubar, create_and_show_popup_menu) (x_menu_show, create_and_show_dialog, x_dialog_show) (xw_popup_dialog): * src/xselect.c (x_get_local_selection, x_reply_selection_request) (x_handle_selection_request, wait_for_property_change): * src/xterm.c (x_cr_export_frames, x_connection_closed): Replace ptrdiff_t with specpdl_ref for referencing specpdl and use the corresponding functions instead of direct arithmetic.
* Clean up more code from PGTK portPo Lu2022-02-071-6/+10
| | | | | | | | | | | | | | | | | | | | | | | * lisp/term/pgtk-win.el (pgtk-disown-selection-internal) (pgtk-get-selection-internal): Fix declarations for new calling conventions. * src/gtkutil.c (xg_frame_set_char_size, x_wm_set_size_hint): Clean up meaningless variables on PGTK. * src/pgtkfns.c (Fx_create_frame, syms_of_pgtkfns): Clean up meaningless variables and fix copied doc strings to use "skip". * src/pgtkim.c (im_context_commit_cb) (im_context_retrieve_surrounding_cb) (im_context_delete_surrounding_cb, make_color_string) (im_context_preedit_changed_cb, im_context_preedit_end_cb) (im_context_preedit_start_cb): Fix coding style. * src/pgtkselect.c (pgtk_selection_usable) (Fpgtk_disown_selection_internal, Fpgtk_get_selection_internal): Remove unused arguments. (syms_of_pgtkselect): Fix doc strings and old style variable declarations. * src/pgtkterm.c (x_set_offset, x_set_parent_frame) (syms_of_pgtkterm): Clean up doc strings and remove meaningless variables.
* Fix the GTK 2 buildPo Lu2022-02-061-1/+3
| | | | | | * src/gtkutil.c (xg_filter_key): Remove call to GTK3-only function without GTK 3. * src/xfns.c (select_visual): Avoid 32-bit visuals on GTK 2.
* ; * src/gtkutil.c (xg_create_frame_widgets): Avoid private GTK symbol.Po Lu2022-01-311-1/+1
|
* Implement `alpha-background' on PGTKPo Lu2022-01-311-15/+25
| | | | | | | | | | | | | | | | | | | * src/ftcrfont.c (ftcrfont_draw): Respect alpha-background where appropriate. * src/gtkutil.c (xg_create_frame_widgets): Swap some conditionals around to get the right visual and signal handlers on PGTK. (xg_widget_style_updated): Likewise. * src/pgtkfns.c (pgtk_set_alpha_background): New function. (pgtk_frame_parm_handlers): Add it instead of the generic param handler. (Fx_create_frame): Fix typo. * src/pgtkterm.c (pgtk_fill_rectangle): (pgtk_set_cr_source_with_gc_foreground): (pgtk_set_cr_source_with_gc_background): (pgtk_set_cr_source_with_color): New argument `respect_alpha_backend'. All callers changed. * src/pgtkterm.h: Update function prototypes.
* Improve portability of GDK visual codePo Lu2022-01-311-6/+8
| | | | | * src/gtkutil.c (xg_create_frame_widgets): Look up the visual instead of assuming it based on the depth.
* Fix motion not being reported on GTK when mouse moves over toolbarPo Lu2022-01-311-15/+2
| | | | | * src/gtkutil.c (xg_event_is_for_scrollbar): Make code consistent between XI2 and Core Input.
* Implement `alpha-background' on non-Cairo buildsPo Lu2022-01-311-4/+38
| | | | | | | | | | | | | | | | | | | | | | | | | | | | * src/frame.c (gui_set_alpha_background): Recompute basic faces so xft face ext info gets reset. * src/gtkutil.c (xg_create_frame_widgets): Attach to style updated signal. (xg_update_frame_menubar): Set menu bar visual correctly. (xg_widget_style_updated): New function. * src/xfns.c (x_set_alpha_background): New function. (x_frame_parm_handlers): Use x_set_alpha_background instead. * src/xfont.c (xfont_draw): * src/xftfont.c (xftfont_draw): Handle `alpha-background' parameter. * src/xterm.c (x_xr_ensure_picture): Export function. (x_update_opaque_region): New function. (x_fill_rectangle): New parameter `respect_alpha_background'. All callers changed. (handle_one_xevent): Set opaque region on ConfigureNotify. (x_drop_xrender_surfaces): Set opaque region. (x_xrender_color_from_gc_foreground): (x_xrender_color_from_gc_background): Premultiply alpha with components if asked for. * src/xterm.h (struct x_display_info): New atom `Xatom_net_wm_opaque_region'.
* Add support for ARGB visuals on non-Xt buildsPo Lu2022-01-301-1/+1
| | | | | | | | | | | | * src/gtkutil.c (xg_create_frame_widgets): Enable RGBA visual on non-PGTK builds. * src/xfns.c (select_visual): Select 32-bit visuals on non-Xt builds. * src/xterm.c (x_draw_fringe_bitmap): (x_draw_image_glyph_string): Stop using DefaultDepthOfScreen. (x_query_colors): * src/xterm.h (x_make_truecolor_pixel): Make colors opaque on 32-bit visuals.
* Some adjustments to last changePo Lu2022-01-301-0/+2
| | | | | | * src/gtkutil.c (xg_set_undecorated): Only set ARGB visual on Cairo builds wtihout PGTK. * src/xfns.c (select_visual): Likewise.
* Add background transparency support for GTK+CairoHåkon Flatval2022-01-301-1/+13
|
* Fix GTK menu bar height reporting when scaledPo Lu2022-01-261-2/+3
| | | | | * src/gtkutil.c (xg_update_frame_menubar): Multiply requisition height by GDK scale.
* Fix tool bar size reporting on GTK when the display is scaledPo Lu2022-01-251-4/+9
| | | | | * src/gtkutil.c (xg_update_tool_bar_sizes): Multiply sizes to turn them into device pixels.
* Fix recent changes to visible bell codePo Lu2022-01-221-9/+11
| | | | | | | | | * src/gtkutil.c (xg_create_scroll_bar): (xg_create_horizontal_scroll_bar): Stop ensuring an X window before the widget is realized. (xg_update_scrollbar_pos): (xg_update_horizontal_scrollbar_pos): Ensure such a window here instead.
* Clean up visible bell code on XPo Lu2022-01-221-0/+8
| | | | | | | | * src/gtkutil.c (xg_create_scroll_bar): (xg_create_horizontal_scroll_bar): Ensure that the scroll bars have their own X windows. * src/xterm.c (XTflash): Remove use of GDK functions for drawing.
* Translate timestamps when using GTK native inputPo Lu2022-01-171-0/+3
| | | | | | * src/gtkutil.c (xg_widget_key_press_event_cb): Use timestamp specified in key event. (xg_filter_key): Translate timestamps.
* * src/gtkutil.c (xg_widget_key_press_event_cb): Also raise input signal.Po Lu2022-01-161-0/+3
|
* Fix native input when using core input eventsPo Lu2022-01-151-1/+1
| | | | | | | * src/gtkutil.c (xg_filter_key): Test for core key press events correctly. * src/xterm.c (handle_one_xevent): Also check for KeyRelease events.
* Filter key release events through GTK when using native inputPo Lu2022-01-131-1/+6
| | | | | | * src/gtkutil.c (xg_filter_key): Set correct event type for key release events. * src/xterm.c (x_filter_event): Also filter release events.
* Fix GTK native input methods randomly freezing inputPo Lu2022-01-131-3/+1
| | | | | | * src/gtkutil.c (xg_widget_key_press_event_cb): Exercise the X11 connection causing pselect to return immediately from input. (bug#53160)
* Make native input work on GTK 2Po Lu2022-01-111-0/+1
| | | | | * src/gtkutil.c (xg_create_frame_widgets): Allow focusing fixed widget.
* Stop decoding GTK event strings when using native inputPo Lu2022-01-111-33/+9
| | | | | * src/gtkutil.c (xg_widget_key_press_event_cb): Stop decoding event strings.
* Fix off-by-one errors in caret position applicationPo Lu2022-01-101-5/+6
| | | | | | | * src/gtkutil.c (xg_im_context_preedit_changed): * src/xfns.c (xic_preedit_caret_callback): (xic_preedit_draw_callback): Constrain caret position to SCHARS (arg) - 1.
* Pass through caret position from native GTK input methodsPo Lu2022-01-091-2/+11
| | | | | | | | | * src/gtkutil.c (xg_im_context_preedit_changed): Set caret position appropriately. * src/xfns.c (xg_widget_key_press_event_cb): Ignore modifier keys. (xic_preedit_caret_callback, xic_preedit_draw_callback): Constrain caret position to the string length as well.
* Fix native GTK input for cyrillic input methodsPo Lu2022-01-091-2/+19
| | | | | | | * src/gtkutil.c (xg_widget_key_press_cb): Get unicode mapping of keyval if string doesn't exist. * src/xterm.c (handle_one_xevent): Fix build without HAVE_X_I18N.