aboutsummaryrefslogtreecommitdiffstats
path: root/src/pgtkterm.c (follow)
Commit message (Collapse)AuthorAgeFilesLines
...
* Fix crash when the visible bell is rung but there is no cairo surfacePo Lu2022-01-221-7/+9
| | | | | | * src/pgtkterm.c (pgtk_flash): Return if the cairo surface is not present. (bug#53420) (pgtk_cr_update_surface_desired_size): Reformat comment.
* * src/pgtkterm.c (evq_flush): Shift events one by oneYuuki Harano2022-01-161-4/+18
|
* Implement recent improvements to underline display on PGTKPo Lu2022-01-101-5/+16
| | | | | * src/pgtkterm.c (pgtk_draw_glyph_string): Respect new underline face fields.
* * src/pgtkterm.c (pgtk_enqueue_string): Free return of g_utf8_to_ucs4.Po Lu2022-01-081-2/+3
|
* Display pre-edit information from X input methodsPo Lu2022-01-071-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This also repurposes the `pgtk-preedit-text' event to be meaningful on X, renames it `preedit-text', and documents it. * doc/lispref/commands.texi (Misc Events): Document `preedit-text'. * lisp/term/pgtk-win.el (pgtk-preedit-text): Bind to `preedit-text' instead. * lisp/term/x-win.el (x-preedit-overlay): New variable. (x-preedit-text): New command, bound as a special event to `preedit-text'. * src/keyboard.c (kbd_buffer_get_event): (make_lispy_event): Rename PGTK_PREEDIT_TEXT_EVENT PREEDIT_TEXT_EVENT. (syms_of_keyboard): New defsym `preedit-text'. * src/pgtkterm.c (pgtk_enqueue_preedit): Use PREEDIT_TEXT_EVENT instead. * src/termhooks.h (enum event_kind): Rename `PGTK_PREEDIT_TEXT_EVENT' `PREEDIT_TEXT_EVENT'. * src/xfns.c (Xxic_preedit_draw_callback): (Xxic_preedit_caret_callback): (Xxic_preedit_done_callback): (Xxic_preedit_start_callback): New callback variables. (STYLE_OFFTHESPOT, STYLE_OVERTHESPOT): (STYLE_ROOT, STYLE_CALLBACK, STYLE_NONE): New macros. (supported_xim_styles): Use reasonable values. This also serves as a better fix for bug#10867. (best_xim_style): Restore code deleted as part of the original fix for bug#10867. (create_frame_xic): Add preedit callbacks. (xic_set_preeditarea): Add preedit callbacks. (x_xic_to_frame): (xic_preedit_start_callback): (xic_preedit_caret_callback): (xic_preedit_done_callback): (x_xim_text_to_utf8_unix): (xic_preedit_draw_callback): New functions. * src/xterm.c (x_detect_focus_change): Fix type of XI event. (x_free_frame_resources): Free preedit text buffer if still present. * src/xterm.h (struct x_output): New fields `preedit_size', `preedit_chars' and `preedit_active'.
* Fix display of internal border in child frames on pgtkPo Lu2022-01-051-1/+2
| | | | | | | * src/pgtkfns.c (Fx_create_frame): Fix child frame border resource names. * src/pgtkterm.c (pgtk_clear_under_internal_border): Fix test for child frames. (bug#53018)
* Fix mouse wheel scroll direction on pgtkPo Lu2022-01-021-2/+2
| | | | | * src/pgtkterm.c (scroll_event): Fix scroll modifiers when `mwheel-coalesce-scroll-events' is nil.
* ; Add 2022 to copyright years.Eli Zaretskii2022-01-011-1/+1
|
* Fix copyright dates in some files belonging to the pgtk portPo Lu2021-12-311-1/+1
| | | | | | | | | | * src/pgtkgui.h: * src/pgtkim.c: * src/pgtkmenu.c: * src/pgtkselect.c: * src/pgtkselect.h: * src/pgtkterm.c: * src/pgtkterm.h: Fix copyright dates to say '2021'.
* Add support for xwidgets to the PGTK portPo Lu2021-12-291-1/+89
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * src/emacsgtkfixed.c (EMACS_FIXED_GET_CLASS): New function. (struct GtkFixedPrivateL): New struct. (emacs_fixed_gtk_widget_size_allocate): (emacs_fixed_class_init): New functions. * src/keyboard.h: Declare lispy_function_keys also when HAVE_PGTK. * src/pgtkterm.c (x_free_frame_resources): Destroy all xwidget views. (pgtk_scroll_run): Move xwidget views that overlap with the scrolled area. (pgtk_emacs_to_gtk_modifiers): Expose function. * src/pgtkterm.h: Wrap in include guard. (pgtk_emacs_to_gtk_modifiers): New prototype. * src/xwidget.c (xw_forward_event_translate): (xw_forward_event_from_view): New functions. (Fmake_xwidget): Remove obsolete PGTK specific code. (Fxwidget_perform_lispy_event): Convert modifiers correctly on PGTK. (define_cursors): Use GDK functions to define cursors on PGTK. (xwidget_view_from_window): Disable on non-PGTK builds. (xwidget_show_view): (xwidget_hide_view): Implement on PGTK. (xv_do_draw): Disable on non-PGTK builds. (offscreen_damage_event): Queue xwidget views for draw. (xwidget_expose): Disable on non-PGTK builds. (xwidget_init_view): (x_draw_xwidget_glyph_string): (Fdelete_xwidget_view): Implement for PGTK. (syms_of_xwidget): Don't initialize XID to widget table on PGTK. (lower_frame_xwidget_views): Disable on PGTK. * src/xwidget.h (struct xwidget_view): New fields for PGTK builds. (kill_frame_xwidget_views): Enable on PGTK.
* * src/pgtkterm.c (pgtk_handle_event): Add pinch event support.Po Lu2021-12-271-1/+37
|
* Don't clear internal border if frame isn't realizedPo Lu2021-12-261-1/+2
| | | | | * src/pgtkterm.c (pgtk_clear_under_internal_border): Don't clear border if frame isn't realized. (bug#52705)
* * src/pgtkterm.c (scroll_event): Fix scroll delta scale.Po Lu2021-12-221-2/+2
|
* * src/pgtkterm.c (scroll_event): Fix sign of delta_y.Po Lu2021-12-221-1/+1
|
* Fix horizontal scrolling on PGTKPo Lu2021-12-221-63/+49
| | | | | * src/pgtkterm.c (scroll_event): Fix for when `mwheel-coalesce-scroll-events' is nil.
* Fix overline display when there is a box on PGTKPo Lu2021-12-121-4/+4
| | | | | * src/pgtkterm.c (pgtk_draw_glyph_string): Draw box before any text decorations.
* Implement pgtk_frame_raise_lowerYuuki Harano2021-12-111-1/+37
| | | | | | | * src/pgtkterm.c (pgtk_raise_frame): New function. (pgtk_lower_frame): New function. (pgtk_frame_raise_lower): New function to call one of those. (pgtk_create_terminal): Set frame_raise_lower_hook.
* Coding style fixesPo Lu2021-12-111-3/+2
| | | | * src/pgtkterm.c (button_event): Fix coding style.
* Merge branch 'feature/pgtk' of git.sv.gnu.org:/srv/git/emacs into feature/pgtkYuuki Harano2021-12-071-15/+28
|\
| * Fix coding stylePo Lu2021-12-061-21/+33
| | | | | | | | | | | | | | | | | | | | | | | | * src/pgtkfns.c (frame_geometry): * src/pgtkterm.c (x_set_parent_frame): (pgtk_text_icon): (key_release_event): (configure_event): (map_event): (window_state_event): (delete_event): (enter_notify_event): Fix coding style.
* | * src/pgtkterm.c (x_set_parent_frame): Fix coding styleYuuki Harano2021-12-071-6/+7
| |
* | Fix SEGV crash by unref css provider too muchYuuki Harano2021-12-071-3/+15
|/ | | | | | | | | | | | | I Got css provider from F, and was going to remove it from style context. But between them, unhighlight was called when gtk_container_remove was called, and the css provider was already freed, so I can't use the css provider to remove it from style context. As a fix, I call gtk_container_remove after remove it. Also, I free a css provider set by unhighlight. * src/pgtkterm.c (x_set_parent_frame):
* Fix double buffering on pgtkPo Lu2021-12-041-6/+34
| | | | | | | | | | * src/pgtkterm.c (pgtk_update_end): Stop flipping buffers here. (pgtk_frame_up_to_date) (pgtk_buffer_flipping_unblocked_hook): New function. (pgtk_create_terminal): Attach new hooks. (leave_notify_event): Clear mouse face.
* Keep track of scale factor by atimer and recreate cairo_surface_tYuuki Harano2021-12-041-7/+10
| | | | | | | | | | | | | | | | | | | Otherwise texts become blurry when a frame moved from 1x monitor to 2x monitor. I need GTK's such signal, but there isn't. Instead I watch frame's monitor's scale factor periodically. We can see blurriness for a short time, but it is gone soon. * src/pgtkfns.c (update_watched_scale_factor): New function to check scale factor and recreate cairo_surface_t if changed. * src/pgtkfns.c (Fx_create_frame): Initialize atimer. (Fx_show_tip): Add an argument. * src/pgtkterm.c (FRAME_CR_SURFACE_DESIRED_WIDTH): Move macros to pgtkterm.h (x_free_frame_resources): Free atimer. (size_allocate): Add an argument. (pgtk_cr_update_surface_desired_size): Add an argument. Recreate if it is true. * src/pgtkterm.h (struct pgtk_output): New members. (FRAME_CR_SURFACE_DESIRED_HEIGHT): Move macros from pgtkterm.c
* Fix a compilation warning in pgtkterm.cKoen van Greevenbroek2021-12-031-0/+1
| | | | | | | * src/pgtkterm.c (set_fullscreen_state): Fix a compilation warning (bug#52260). Copyright-paperwork-exempt: yes
* Generate touch-end events on pgtkPo Lu2021-12-031-0/+7
| | | | * src/pgtkterm.c (scroll_event): Generate touch end events.
* Stop relying on `x_coalesce_scroll_events' in pgtk codePo Lu2021-12-011-11/+7
| | | | | | * src/pgtkterm.c (scroll_event): Use `mwheel_coalesce_scroll_events'. (x_coalesce_scroll_events): Remove variable.
* Synchronize pgtk tab bar code with xtermPo Lu2021-12-011-16/+25
| | | | | * src/pgtkterm.c (x_draw_image_relief): (button_event): Synchronize code with xterm. (Bug#50779)
* Calculate pixel deltas correctlyPo Lu2021-11-301-8/+8
| | | | | * src/pgtkterm.c (scroll_event): Fix scroll delta factor. (bug#52195)
* Make interrupt input optionally work on PGTKPo Lu2021-11-301-0/+53
| | | | | | | | | * src/pgtkterm.c (pgtk_delete_terminal): Close display fd if it exists. (pgtk_term_init): Set up interrupt handling for display fd if available. * src/pgtkterm.h (struct pgtk_display_info): Add `connection' field.
* Stop setting mouse face GC manually, as it is no longer requiredPo Lu2021-11-301-14/+0
| | | | * src/pgtkterm.c (x_set_mouse_face_gc): Remove obsolete code.
* Enable pixel-precision scrolling on pgtk portPo Lu2021-11-301-11/+55
| | | | | | * src/pgtkterm.c (scroll_event): Generate enhanced wheel events. (x_coalesce_scroll_events): New variable.
* Get rid of pgtk_select and use xg_select insteadPo Lu2021-11-301-167/+0
| | | | | | | | | * src/pgtkmenu.c (pgtk_menu_wait_for_event): Get rid of pgtk_select. * src/pgtkterm.h (pgtk_select): * src/pgtkterm.c (pgtk_select): Delete function. * src/process.c (wait_reading_process_output): Stop using pgtk_select.
* Replace XFillRectangle with cairo_rectangle and cairo_fillYuuki Harano2021-11-301-18/+19
| | | | * src/pgtkterm.c (pgtk_flash):
* Use /* */ comment style instead of //Yuuki Harano2021-11-301-11/+11
| | | | | | | | | | | | | * src/gtkutil.c (xg_create_frame_widgets): * src/pgtkfns.c (Fx_create_frame): (frame_geometry): * src/pgtkterm.c (pgtk_mouse_position): (pgtk_redisplay_interface): (pgtk_clear_frame): (pgtk_create_terminal): (struct pgtk_window_is_of_frame_recursive_t): (key_press_event): (syms_of_pgtkterm):
* Remove PGTK_DEBUG stuffYuuki Harano2021-11-241-439/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * src/gtkutil.c: (xg_create_frame_widgets): (xg_create_frame_outer_widgets): (x_wm_set_size_hint): (xg_set_toolkit_scroll_bar_thumb): * src/pgtkfns.c (x_set_background_color): (pgtk_set_name): (x_explicitly_set_name): (pgtk_implicitly_set_name): (x_set_title): (Fx_create_frame): (Fpgtk_set_mouse_absolute_pixel_position): (pgtk_log): (pgtk_backtrace): * src/pgtkselect.c (get_func): (clear_func): (pgtk_selection_lost): (Fpgtk_own_selection_internal): (Fpgtk_disown_selection_internal): (Fpgtk_selection_exists_p): (Fpgtk_selection_owner_p): (nxatoms_of_pgtkselect): (syms_of_pgtkselect): * src/pgtkterm.c (flip_cr_context): (get_keysym_name): (frame_set_mouse_pixel_position): (x_free_frame_resources): (x_destroy_window): (x_set_offset): (pgtk_set_window_size): (pgtk_iconify_frame): (pgtk_make_frame_visible): (pgtk_make_frame_invisible): (pgtk_new_font): (x_display_pixel_height): (x_display_pixel_width): (x_set_no_focus_on_map): (x_set_no_accept_focus): (x_set_z_group): (x_set_cursor_gc): (x_set_glyph_string_gc): (x_set_glyph_string_clipping): (x_draw_glyph_string_background): (pgtk_draw_glyph_string): (pgtk_after_update_window_line): (pgtk_clear_frame_area): (pgtk_draw_window_cursor): (pgtk_copy_bits): (pgtk_cr_draw_image): (pgtk_draw_fringe_bitmap): (pgtk_redraw_scroll_bars): (pgtk_clear_frame): (pgtk_read_socket): (pgtk_select): (xg_scroll_callback): (xg_end_scroll_callback): (pgtk_set_vertical_scroll_bar): (set_fullscreen_state): (pgtk_fullscreen_hook): (pgtk_handle_event): (pgtk_fill_rectangle): (pgtk_clear_under_internal_border): (print_widget_tree_recursive): (print_widget_tree): (pgtk_handle_draw): (size_allocate): (key_press_event): (key_release_event): (map_event): (delete_event): (enter_notify_event): (leave_notify_event): (focus_in_event): (focus_out_event): (motion_notify_event): (button_event): (scroll_event): (drag_data_received): (pgtk_xlfd_to_fontname): (pgtk_defined_color): (pgtk_parse_color): (pgtk_query_colors): (pgtk_query_color): (pgtk_clear_area): (pgtk_cr_update_surface_desired_size): (pgtk_begin_cr_clip): (pgtk_end_cr_clip): (pgtk_set_cr_source_with_gc_foreground): (pgtk_set_cr_source_with_gc_background): (pgtk_set_cr_source_with_color): (pgtk_cr_draw_frame): (pgtk_cr_destroy_frame_context): * src/pgtkterm.h:
* ; * src/pgtkterm.c (pgtk_mouse_position): Add bug ID to the commentYuuki Harano2021-11-161-1/+1
|
* Avoid handle terminal frames in pgtk_mouse_position.Yuuki Harano2021-11-161-0/+7
| | | | | | | Just above, f1 can become a selected frame, which may be a terminal frame. We can't call gtk_widget_get_window() for a terminal frame. * src/pgtkterm.c (pgtk_mouse_position): Return if it is not a pgtk frame.
* Fix coding styleYuuki Harano2021-11-151-2/+2
| | | | | | * src/gtkutil.c (xg_set_no_accept_focus): * src/pgtkterm.c (pgtk_focus_frame): (button_event):
* pgtk: Handle (child) frame focusing betterJeff Walsh2021-11-151-8/+7
| | | | | | | | | | | | | | child frames on pgtk are gtk widgets inside the parent surface, rather than subsurfaces (in wayland ters), and the edit widget is handled separately from the parent window, so we need to handle signals more correctly, rather than squinting and assuming an event for the window is just an event for the edit widget. * src/gtkutil.c (xg_set_no_accept_focus): set focus on widget rather than request it on window * src/pgtkterm.c (pgtk_focus_frame): focus frame on edit_widget instead (button_event): Implement focus calls to replace dead X calls
* pgtk: Set correct face color for stretched glyphsJeff Walsh2021-11-141-1/+1
| | | | | * src/pgtkterm.c (x_draw_stretch_glyph_string): s/foreground/background (Bug#50579)
* Fix coding styleYuuki Harano2021-11-141-10/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Especially, insert a space between function name and paren. * src/alloc.c (garbage_collect): * src/font.h: * src/frame.h: * src/fringe.c: * src/gtkutil.c (xg_set_screen): (xg_create_frame_widgets): (xg_create_frame_outer_widgets): (xg_get_file_name): (xg_get_font): (xg_update_scrollbar_pos): * src/image.c (image_create_bitmap_from_file): (xpm_load_image): * src/pgtkfns.c (pgtk_get_monitor_scale_factor): (is_wayland_display): (pgtk_display_info_for_name): (INSTALL_CURSOR): (Fx_create_frame): (Fx_display_mm_height): (Fx_display_mm_width): (Fx_display_pixel_width): (Fx_display_pixel_height): * src/pgtkselect.c (pgtk_selection_usable): (Fpgtk_own_selection_internal): (Fpgtk_get_selection_internal): * src/pgtkterm.c: (x_set_parent_frame): (pgtk_draw_fringe_bitmap): (pgtk_handle_draw): (scroll_event): (pgtk_text_scaling_factor): (pgtk_term_init): * src/pgtkterm.h: * src/window.h: * src/xdisp.c (redisplay_internal): (draw_glyphs_debug): (draw_glyphs): (note_mouse_highlight):
* Fix a memory leak in pgtk_draw_fringe_bitmapSharaf Zaman2021-10-241-2/+1
| | | | | | | * src/pgtkterm.c (pgtk_draw_fringe_bitmap): we had an unbalanced cairo_save/restore. Copyright-paperwork-exempt: yes
* Fix a frame created without scroll/menu/toolbar is emptyYuuki Harano2021-06-181-2/+14
| | | | | * src/pgtkterm.c (size_allocate): Get frame pointer through user_data. (pgtk_set_event_handler): Pass it.
* * src/pgtkterm.c: Honor system DPI settingsJindřich Makovička2021-05-301-2/+5
|
* Disable hyper key when super and hyper conflictYuuki Harano2021-05-291-0/+10
| | | | | * src/pgtkterm.c (x_find_modifier_meanings): If super_mod_mask and hyper_mod_mask are equal, then disable hyper.
* Fix compile error when PGTK_DEBUG is enabledYuuki Harano2021-05-191-2/+1
| | | | | * src/pgtkterm.c (pgtk_set_window_size): Remove "pixelwise" arg, which is already non-existent.
* Revert "Update texts while busy"Yuuki Harano2021-05-151-24/+22
| | | | | | This reverts commit 8a649cba44cc637b5326cee9fe3febc55c653719. Because the position of the initial frame is not desired, unless initial-frame-alist is set.
* Update texts while busyYuuki Harano2021-05-151-22/+24
| | | | | | | | | | | Pgtk didn't update text and C-g didn't take effect while it is busy. By timer interrupts, we can call pgtk_read_socket, and update texts and handle C-g. * src/pgtkterm.c (start_timer): New function to start timer. (pgtk_show_hourglass): Remove code to start timer. (pgtk_hide_hourglass): Remove code to stop timer. (pgtk_term_init): Call start_timer().
* * src/pgtkterm.c remove duplicated codeJeff Walsh2021-05-131-78/+2
| | | | | | | * src/pgtkterm.c (pgtk_update_window_begin): (pgtk_update_window_end): (pgtk_redisplay_interface): Remove duplicate code and default to the generic gui_update_window_begin/end implementations