1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2026-04-06 22:31:13 -07:00
Commit graph

47962 commits

Author SHA1 Message Date
Po Lu
82ce218394 Handle coordinates of Motif drop start messages
* src/xterm.c (xm_read_drop_start_message): New function.
(xm_read_drag_motion_message): Check that the originator is
correct.
(x_coords_from_dnd_message): Read drop start messages as well.
2022-06-14 13:52:45 +08:00
Po Lu
f5fb969cab Handle coordinate extraction for more event types
* src/xterm.c (xm_read_drag_motion_message): New function.
(x_coords_from_dnd_message): Handle XM_DRAG_REASON_DRAG_MOTION.
2022-06-14 10:12:48 +08:00
Po Lu
907f3a4f8d Use coordinates provided by DND messages if available
This avoids an extra sync, which matters when dropping onto
Emacs running over a slow connection.

* src/xselect.c (x_handle_dnd_message): New args
`root_window_coords', `root_x' and `root_y'.
* src/xterm.c (x_coords_from_dnd_message): New function.
(handle_one_xevent): Pass root window coordinates to
x_handle_dnd_message.
* src/xterm.h: Update prototypes.
2022-06-14 09:41:59 +08:00
Paul Eggert
24b2cc177a Pacify GCC 12.1.1 -Wanalyzer-use-of-uninitialized-value
* src/xfont.c (xfont_list_pattern): Initialize a local.
Although I’m not sure this is needed, it doesn’t change
behavior (except possibly to make undefined behavior defined).
2022-06-13 13:39:48 -07:00
Paul Eggert
de6601e62e Pacify GCC 12.1.1 in default developer build
* src/pdumper.c (pdumper_load): Use explicit memset to work around
GCC bug <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105961>.
2022-06-13 13:39:48 -07:00
Po Lu
a1a435b3f6 Respect test function when performing local drag-and-drop
* lisp/x-dnd.el (x-dnd-test-function): Fix doc string to
describe what is actually accepted.
(x-dnd-known-types, x-dnd-targets-list): Fix coding style.
(x-dnd-handle-native-drop): New function.

* src/xselect.c (x_atom_to_symbol): Export.

* src/xterm.c (x_dnd_note_self_drop): Call new variable to
determine what action to return.
(x_clear_dnd_action): New function.
(x_dnd_begin_drag_and_drop): Respect new variable.
(syms_of_xterm): New defvar `x-dnd-native-test-function'.
* src/xterm.h: Update prototypes.
2022-06-13 15:02:41 +08:00
Po Lu
16df1f4fae Improve DND tooltip updating
* src/xterm.c (x_dnd_update_tooltip_now): Add missing part of
last change.
(x_monitors_changed_cb, handle_one_xevent): Only update if a
change in monitor configuration really happened.
2022-06-13 12:49:12 +08:00
Po Lu
1ce0d8d9ef Keep tooltip position in sync with monitor changes
* src/xterm.c (x_dnd_update_tooltip_now): New function.
(x_monitors_changed_cb):
(handle_one_xevent): Call that function on monitor change.
2022-06-13 09:42:12 +08:00
Po Lu
79f50e913d Fix special DND event coordinates
* src/xterm.c (x_dnd_note_self_drop): Set DND action to
XdndActionPrivate.
(x_dnd_begin_drag_and_drop): Don't return XdndPrivate specially
here.
(handle_one_xevent): Fix order of arguments to
x_dnd_note_self_drop.
2022-06-13 09:11:08 +08:00
Eli Zaretskii
f1e1392868 Change the API of 'update_redisplay_ticks'
* src/xdisp.c (update_redisplay_ticks): Change the 2nd argument
to be 'struct window'; all callers changed.
2022-06-12 19:48:34 +03:00
Eli Zaretskii
5a596bbed5 Fix a typo in a doc string. 2022-06-12 17:44:35 +03:00
Eli Zaretskii
e1e0315252 Initial implementation of "abort-redisplay" feature
* src/xdisp.c (update_redisplay_ticks): New function.
(init_iterator, set_iterator_to_next): Call
'update_redisplay_ticks'.
(syms_of_xdisp) <max_redisplay_ticks>: New variable.
<list_of_error>: Remove 'void-variable': it is no longer needed,
since 'calc_pixel_width_or_height' can no longer signal a
void-variable error, and it gets in the way of aborting
redisplay via 'redisplay_window_error'.
2022-06-12 17:25:26 +03:00
Po Lu
6263f586b8 Fix handling of scroll bar clicks on Haiku
* src/haiku_support.cc (class EmacsView, BasicMouseDown)
(BasicMouseUp): Move MouseDown and MouseUp here.  New parameter
`scroll_bar'.
(MouseDown, MouseUp): Call basic variants.

(class EmacsScrollBar): New field `parent'.
(BScrollBar_make_for_view): Rename to
`be_create_scroll_bar_for_view'.
* src/haiku_support.h (struct haiku_button_event): New field
`scroll_bar'.
* src/haikuterm.c (haiku_scroll_bar_from_widget): Handle NULL
widget.
(haiku_scroll_bar_create): Update calls.
(haiku_mouse_position): Fix scroll bar part.
(haiku_read_socket): Handle button events on scroll bars as
scroll bar click events.
2022-06-12 13:04:37 +00:00
Mattias Engdegård
bab1d41280 Use BASE_EQ when comparing with Qunbound
Qunbound is uninterned and can therefore never be EQ to any symbol
with position.

* src/buffer.c (Fbuffer_local_value, buffer_lisp_local_variables)
(buffer_local_variables_1):
* src/bytecode.c (exec_byte_code):
* src/comp.c (compile_function, Fcomp__compile_ctxt_to_file):
* src/composite.c (composition_gstring_cache_clear_font):
* src/data.c (Fboundp, Fsymbol_value, set_internal)
(Fdefault_boundp, Fdefault_value, Fmake_variable_buffer_local):
* src/emacs-module.c (module_global_reference_p):
* src/eval.c (Fdefault_toplevel_value, defvar)
(run_hook_with_args):
* src/fns.c (hash_put, Fmaphash):
* src/font.c (font_put_extra):
* src/frame.c (gui_set_frame_parameters)
(gui_frame_get_and_record_arg, gui_default_parameter)
(gui_figure_window_size):
* src/haikufns.c (get_geometry_from_preferences)
(haiku_create_frame, haiku_create_tip_frame):
* src/haikuterm.c (haiku_draw_text_decoration)
(haiku_default_font_parameter):
* src/json.c (lisp_to_json_nonscalar_1):
* src/keymap.c (access_keymap_1, access_keymap, current_minor_maps):
* src/lread.c (readevalloop, define_symbol):
* src/minibuf.c (read_minibuf, Ftry_completion):
(Fall_completions, Ftest_completion):
* src/pgtkfns.c (pgtk_default_font_parameter, Fx_create_frame)
(x_create_tip_frame):
* src/pgtkselect.c (Fpgtk_own_selection_internal):
* src/print.c (print):
* src/profiler.c (evict_lower_half, record_backtrace):
* src/terminal.c (create_terminal):
* src/textprop.c (set_properties):
* src/w32fns.c (my_create_window, w32_icon)
(w32_default_font_parameter, Fx_create_frame)
(w32_create_tip_frame):
* src/w32term.c (w32_draw_glyph_string):
* src/xdisp.c (handle_single_display_spec)
(cursor_row_fully_visible_p, calc_pixel_width_or_height):
* src/xfns.c (x_default_scroll_bar_color_parameter, x_icon_verify)
(x_icon, x_default_font_parameter, Fx_create_frame)
(x_create_tip_frame):
* src/xselect.c (x_handle_selection_request):
* src/xterm.c (x_draw_glyph_string, x_term_init):
Use BASE_EQ instead of EQ when comparing with Qunbound.
2022-06-12 12:42:35 +02:00
Po Lu
5bf409329b Fix phantom drag-and-drop targets showing up in some programs
* src/xterm.c (x_dnd_cleanup_drag_and_drop)
(x_dnd_begin_drag_and_drop): Delete XdndTypeList if it was set
after the DND operation completes.  Some programs apparently
think its presence on the drag source means there are more than
3 targets.
2022-06-12 16:42:10 +08:00
Po Lu
c2695621fc Don't repetitively initialize type lists during DND
* src/xterm.c (x_dnd_send_enter): Only set XdndTypeList once.
(x_dnd_begin_drag_and_drop): Clear type list flag.
2022-06-12 13:45:31 +08:00
Po Lu
6aa8baaea1 Use cached monitor info during DND if available
* src/xterm.c (x_dnd_begin_drag_and_drop): Use previously cached
monitor attributes if they exist.
2022-06-12 10:17:19 +08:00
Po Lu
574c5d1de4 * src/nsfns.m (ns_move_tooltip_to_mouse_location): Handle invisible frames. 2022-06-12 10:13:04 +08:00
Po Lu
0adbb21ece Don't rely on XdndAware on frames for dropping to work
* src/xterm.c (x_dnd_get_target_window): New parameter
WAS_FRAME.  If toplevel is a frame, set it and clear proto and
motif.
(x_dnd_send_enter, x_dnd_send_position, x_dnd_send_leave)
(x_dnd_send_drop): Remove special-cased self dropping code.
(x_dnd_note_self_position, x_dnd_note_self_drop): New functions.

(x_dnd_begin_drag_and_drop, x_dnd_update_state):
(handle_one_xevent): Handle our own frames using those functions
instead.
2022-06-12 09:32:33 +08:00
Mattias Engdegård
98365c7b1e * src/fns.c (internal_equal): Use BASE_EQ where possible. 2022-06-11 18:45:49 +02:00
Po Lu
eeec16819b Fix timestamp of special drop events
* src/xterm.c (x_dnd_send_drop): Set special event timestamp
to the timestamp of the drop instead of CurrentTime.
2022-06-11 21:16:51 +08:00
Eli Zaretskii
9ea98a68f4 ; * src/fileio.c (Finsert_file_contents): Fix a typo. (Bug#18370) 2022-06-11 16:12:10 +03:00
Lars Ingebrigtsen
cb4579ed6b Allow inserting parts of /dev/urandom with insert-file-contents
* doc/lispref/files.texi (Reading from Files): Document it.
* src/fileio.c (Finsert_file_contents): Allow specifying END for
special files (bug#18370).
2022-06-11 14:39:54 +02:00
Po Lu
3675809696 Fix some drag-and-drop handling on Haiku
* lisp/term/haiku-win.el (haiku-drag-and-drop): Don't raise
frame for some types of drags.

* src/haikuselect.c (haiku_unwind_drag_message): Don't hide
tooltip here.
(Fhaiku_drag_message): Only clear grab and hide tooltip if the
drag was successful.
2022-06-11 12:01:22 +00:00
Po Lu
ab63000b6a Fix initializers for Haiku scroll bars
* src/haiku_support.cc (class Emacs):
(class EmacsScrollBar): Fix initializers.
2022-06-11 12:01:21 +00:00
Po Lu
46b9bfb9fc Fix queuing already-present selection requests
* src/xterm.c (x_defer_selection_requests): Move kbd_fetch_ptr
if possible and fix counter increment order.
2022-06-11 14:15:44 +08:00
Po Lu
9c27c7f7ce Handle allocation errors when interning large amounts of atoms
* src/xfns.c (Fx_begin_drag): Catch BadAlloc errors around
XInternAtoms.
2022-06-11 11:13:48 +08:00
Po Lu
46e6b8a1e4 Prevent crash handling keyboard input from non-frame windows
* src/xterm.c (handle_one_xevent): Use `dpyinfo' to access xkb
desc.  (bug#55890)
2022-06-11 09:19:05 +08:00
Po Lu
7def8baa08 Fix cancelling DND upon a regular X error
* src/xterm.c (x_connection_closed): The display isn't dead upon
a non-IO error, so don't avoid sending messages to clean stuff
up.
2022-06-11 09:12:44 +08:00
Po Lu
f7307f6215 Remove extra call to XTranslateCoordinates when performing "xterm" drop
* src/xterm.c (x_dnd_do_unsupported_drop): Signal error when
XdndSelection is lost, set subwindow, and simplify
XTranslateCoordinates loop.
2022-06-10 20:52:07 +08:00
Eli Zaretskii
dc09759c1d ; Fix documentation of 'completing-read' and friends
* src/minibuf.c (Fcompleting_read):
* lisp/minibuffer.el (read-file-name):
* doc/lispref/minibuf.texi (Minibuffer Completion):
* etc/NEWS: Fix typos and wording of the description of the
REQUIRE-MATCH argument to 'completing-read'.
2022-06-10 14:22:18 +03:00
Ignacio Casso
071722e411 Fix issues with loading autoloaded defcustoms while bound
* doc/lispref/customize.texi (Variable Definitions)
(Variable Definitions): Update documentation.

* lisp/custom.el (custom-initialize-set)
(custom-initialize-reset): Update doc string.
(custom-initialize-changed): Use set-default-toplevel-value.  This
fixes issues with (let ((custom-variable ...))  (autoload-function ...)).
(custom-set-default): Ditto.

* src/data.c (Fdefault_boundp): Update doc string.
2022-06-10 11:13:20 +02:00
Lars Ingebrigtsen
07fb8d284f Don't put trailing optional nil values into `command-history'
* src/callint.c (fix_command): Don't put trailing optional nil
values into `command-history' (bug#45333).
2022-06-10 10:53:21 +02:00
Lars Ingebrigtsen
49e06183f5 Allow REQUIRE-MATCH to be a function
* doc/lispref/minibuf.texi (Minibuffer Completion): Document it.

* lisp/minibuffer.el (completion--complete-and-exit): Allow
REQUIRE-MATCH to be a function.
(read-file-name): Mention it.

* src/minibuf.c (Fcompleting_read): Mention it.
2022-06-10 10:22:33 +02:00
Po Lu
45bdeb7d9c Eliminate extra call to XTranslateCoordinates looking for drop target
* src/xterm.c (x_dnd_get_target_window): Translate coordinates
starting from the root window and avoid extra sync.
2022-06-10 14:48:04 +08:00
Po Lu
feb94707a9 Fix crashes in x_tooltip_window_to_frame on GTK
* src/xterm.c (x_tooltip_window_to_frame): Ignore all non-X
frames instead of trying to get their tooltip window.
2022-06-10 09:28:45 +08:00
Po Lu
6d2bad20bb * src/haikuselect.c (haiku_note_drag_motion): Only handle visible tip_f. 2022-06-10 01:15:25 +00:00
Po Lu
0e2f94ded0 Fix DND tooltip handling with tooltip-reuse-hidden-frame
* src/xterm.c (x_dnd_update_tooltip_position): Don't move window
if tip_f is not visible.
2022-06-10 08:58:51 +08:00
Eli Zaretskii
559c276942 ; * src/window.c (window_body_unit_from_symbol): Fix Lisp EQ. 2022-06-09 19:40:25 +03:00
Po Lu
e99f41f03a Fix recalculation of `icon-title-format' after a frame is iconified
Previously it would only happen upon the next mode line
redisplay, meaning that just pressing C-z would not update the
implicit title, since C-z doesn't cause a redisplay.

* src/dispextern.h: Update prototypes.
* src/frame.h (SET_FRAME_ICONIFIED): De-slugify.  Call
`gui_consider_frame_title', since `icon-title-format' might be
different from the current frame title.
* src/xdisp.c (gui_consider_frame_title): Export (also in
dispextern.h).  (bug#55850)
2022-06-09 21:50:37 +08:00
Lars Ingebrigtsen
39d2efbfae Make `line-number-at-pos' work more like in earlier Emacs versions
* src/fns.c (Fline_number_at_pos): Allow calling with position
outside the region if called with ABSOLUTE non-nil (bug#55847).
This isn't announced in the doc string, but makes function
compatible with the version in earlier Emacs versions.
2022-06-09 14:43:40 +02:00
Po Lu
c29fb3e0d8 Never return tooltip frames from ns-begin-drag
* src/nsterm.m ([EmacsWindow draggedImage:movedTo:]):
([EmacsWindow beginDrag:forPasteboard...]): Don't return frame
if tooltip.
2022-06-09 19:42:56 +08:00
Po Lu
e563020eea Handle monitor attribute updates during drag-and-drop
* src/xterm.c (x_monitors_changed_cb):
(handle_one_xevent): Set x_dnd_monitors during monitor changes.
2022-06-09 18:21:16 +08:00
Po Lu
677367ae65 Satisfy GCC warnings on the GNUstep build
* src/nsfns.m (ns_move_tooltip_to_mouse_location):
* src/nsterm.m ([EmacsWindow draggedImage:movedTo:]): Pacify GCC.
2022-06-09 16:48:17 +08:00
Po Lu
e7ac2ac4e0 Implement `follow-tooltip' on NS as well
* lisp/term/ns-win.el (x-begin-drag): Pass `follow-tooltip'.
* src/nsfns.m (Fx_show_tip): Record last dx and dy.
(syms_of_nsfns): New staticpros.
* src/nsmenu.m ([EmacsTooltip moveTo:]): New method.

* src/nsselect.m (Fns_begin_drag): New parameter
`follow-tooltip'.

* src/nsterm.h (@interface EmacsWindow):
(EmacsTooltip): Update prototypes.
* src/nsterm.m ([EmacsWindow draggedImage:movedTo:]): Move any
tooltip to the right location.
([EmacsWindow beginDrag:forPasteboard...]): New parameter
`followTooltip'.
2022-06-09 16:34:18 +08:00
Po Lu
0ba43e15d9 Note caveats of `follow-tooltip' with system tooltips
* lisp/mouse.el (mouse-drag-and-drop-region): Turn off system
tooltips inside.
* src/xfns.c (Fx_begin_drag): Say that follow-tooltip doesn't
work with system tooltips.
2022-06-09 15:44:51 +08:00
Po Lu
0936d6fa20 Implement `follow-tooltip' for DND on Haiku
* lisp/term/haiku-win.el (x-begin-drag): Implement
`follow-tooltip'.
* src/haikufns.c (Fx_show_tip): Record last dx and dy.
(syms_of_haikufns): New staticpros.

* src/haikuselect.c (haiku_unwind_drag_message): Clear new flag.
(Fhaiku_drag_message): New argument `follow-tooltip'.  Set new
flag.
(haiku_dnd_compute_tip_xy): New function.
(haiku_note_drag_motion): Move tooltip if flag is true.

* src/haikuterm.c (haiku_read_socket): Don't generate help event
if mouse moves onto a tooltip during DND.
* src/haikuterm.h: Update prototypes.
2022-06-09 07:21:42 +00:00
Jim Porter
43f8690ebf Account for remapped faces in $COLUMNS and $LINES in Eshell
* src/window.h (window_body_unit): New enum...
(window_body_width): ... use it.

* src/window.c (window_body_unit_from_symbol): New function.
(window_body_height, window_body_width): Make PIXELWISE a
'window_body_unit'.
(window-body-height, window-body-width): Accept 'remap' for PIXELWISE.
(window-lines-pixel-dimensions, window_change_record_windows)
(run_window_change_functions, resize_frame_windows, grow_mini_window)
(shrink_mini_window, scroll-left, scroll-right): Update calls to
'window_body_height' and 'window_body_width'.

* src/indent.c (compute_motion): Update calls to 'window_body_width'.

* lisp/eshell/em-ls.el (eshell-ls-find-column-widths)
(eshell-ls-find-column-lengths): Use 'window-body-width'.

* lisp/eshell/esh-var.el (eshell-variable-aliases-list): Use
'window-body-width' and 'window-body-height'.

* test/lisp/eshell/esh-var-tests.el (esh-var-test/window-height)
(esh-var-test/window-width): Rename to...
(esh-var-test/lines-var, esh-var-test/columns-var): ... and update
expected value.

* doc/lispref/windows.texi (Window Sizes): Document new behavior of
PIXELWISE argument for 'window-body-width' and 'window-body-height'.

* etc/NEWS: Announce this change (bug#55696).
2022-06-09 10:08:15 +03:00
Eli Zaretskii
d18e60fef1 Revert "* src/comp.c (Fcomp_el_to_eln_filename): Update error message."
This reverts commit ec987e3e17.
This change was installed on the emacs-28 branch instead.
2022-06-09 09:56:59 +03:00
Jeff Walsh
ec987e3e17 * src/comp.c (Fcomp_el_to_eln_filename): Update error message. 2022-06-09 08:35:41 +02:00