Commit graph

44401 commits

Author SHA1 Message Date
Po Lu
c3f53d2604 Expose xwidget navigation history to Lisp code
* doc/lispref/display.texi (Xwidgets): Document changes.
* etc/NEWS: Announce new function.
* src/xwidget.c (Fxwidget_webkit_back_forward_list): New
function.
(syms_of_xwidget): Define new subr.
2021-11-14 17:45:23 +08:00
Po Lu
609bc1d33a Add `kill-xwidget'
* doc/lispref/display.texi (Xwidgets): Document 'kill-xwidget'.
* src/xwidget.c (kill_xwidget, Fkill_xwidget): New function.
(syms_of_xwidget): Define new subr.
(kill_buffer_xwidgets): Use `kill_xwidget' instead.
2021-11-14 17:42:16 +08:00
Po Lu
9627b731c0 Fix crash in xwidget_end_redisplay
* src/xwidget.c (xwidget_end_redisplay): Always test if xv is
NULL.
2021-11-14 10:00:40 +08:00
Po Lu
f7abc04c40 Fix scroll event test in handle_one_xevent
* src/xterm.c (handle_one_xevent): Test for scroll wheel button
correctly in xwidget code.
2021-11-13 21:38:06 +08:00
Eli Zaretskii
89d7a71ce6 Fix font selection via :family on MS-Windows
* src/font.c (font_delete_unmatched) [HAVE_NTGUI]: Allow non-exact
matches of :weight when looking for a suitable font.  (Bug#51768)
2021-11-13 15:22:12 +02:00
Alan Mackenzie
f740becf8a Correct patch from 2021-11-12 on src/fileio.c
* src/fileio.c (restore_window_points): Reverse commit
974192413f and instead replace a < by a <=.
This ensures that if w->mpoint is at the top of the middle region being
replaced, it gets adjusted and stays at the top after the reinsertion.
2021-11-13 12:58:23 +00:00
Po Lu
102406edb1 Don't emit SELECT_WINDOW_EVENT when an xwidget is scrolled
* src/xterm.c (handle_one_event): Don't select xwidget window
on button event if the button pressed actually represents the
scroll wheel.
2021-11-13 20:04:47 +08:00
Po Lu
dafebe37eb Use GTK native file choosers in xwidget callback
* src/xwidget.c (run_file_chooser_cb): Use GtkFileChooserNative
instead.
2021-11-13 15:38:12 +08:00
Stefan Kangas
b4c6ab8cb6 Merge from origin/emacs-28
42d4e24ff3 ; Fix typos
0d0125daae Improve documentation of 'decode-coding-region'
2021-11-13 07:00:30 +01:00
Po Lu
a5008352c4 Prevent NULL-pointer dereference on xwidget callback error
* src/xwidget.c (webkit_javascript_finished_cb): Check if
`error' is NULL before freeing it.
2021-11-13 13:02:09 +08:00
Po Lu
eb4567e5be Fix file chooser hangs inside xwidget-webkit
* src/xwidget.c (run_file_chooser_cb): New function that runs
a nested event loop instead of acting asynchronously.
(Fmake_xwidget): Attach file chooser signal.
2021-11-13 11:24:13 +08:00
Po Lu
59a58328bc Remove unused xwidget code in EmacsFixed GTK widget class
This is no longer required, as we rely on X to position
xwidgets now.  It also makes resizing Emacs frames slightly
slower.

* src/emacsgtkfixed.c (EMACS_FIXED_GET_CLASS)
(struct GtkFixedPrivateL)
(emacs_fixed_gtk_widget_size_allocate)
(emacs_fixed_class_init) [HAVE_XWIDGETS]: Remove unused code.
2021-11-13 08:51:32 +08:00
Ken Brown
e4f8ce7818 Don't start both timerfd and alarms on Cygwin
* src/atimer.c (set_alarm) [CYGWIN]: Don't start both timerfd and
alarms; this causes a slowdown.  (Bug#51734)
2021-11-12 15:04:49 -05:00
Alan Mackenzie
974192413f In insert_file_contents, always set windows' point markers.
This fixes bug #51776.

* src/fileio.c (restore_window_points): Restore a w->mpoint even when that
marker originally pointed into the unchanged area near BOB or EOB.  This
prevents that window's point being moved a long way from its starting place
due to the removal of the central part of the buffer by insert_file_contents.
2021-11-12 18:43:22 +00:00
Stefan Kangas
42d4e24ff3 ; Fix typos 2021-11-12 13:59:58 +01:00
Eli Zaretskii
0d0125daae Improve documentation of 'decode-coding-region'
* src/coding.c (Fdecode_coding_region): Doc fix.

* doc/lispref/nonascii.texi (Coding System Basics)
(Explicit Encoding): Explain the significance of using 'undecided'
in 'decode-coding-*' functions.
2021-11-12 10:53:52 +02:00
Eli Zaretskii
766f636a72 ; * src/lread.c (safe_to_load_version, Fload): Fix coding style. 2021-11-12 09:47:44 +02:00
Lars Ingebrigtsen
0c3bf6ce11 Remove unused xlfd_ enums
* src/xfaces.c: Remove xlfd_weight, xlfd_swidth and xlfd_slant
enums.  These seem to be unused in the Emacs sources.
2021-11-12 08:23:45 +01:00
Po Lu
e9a68b1de5 Remove obsolete comment
The comment probably dated back to when xwidgets supported
many other GTK+ widgets with other data.  In the current
implementation of xwidgets, everything that should be freed
is already freed in `kill_buffer_xwidgets'.

* src/xwidget.c (kill_buffer_xwidgets): Remove outdated TODO.
2021-11-12 14:31:36 +08:00
Lars Ingebrigtsen
dae3c4e89b Allow choosing regular-weighted fonts when medium-weighted exist
* src/ftfont.c (ftfont_pattern_entity): Allow using both regular
and medium-weighted fonts.
2021-11-12 07:19:25 +01:00
Stefan Kangas
fc00fe53e1 Merge from origin/emacs-28
a6905e90cc Fix problem with temp buffer killing in package-install-file
144ad77fda Fix Lisp Intro markup error
24b86cb4f7 Fix ACL errors with WebDAV volumes on MS-Windows
2021-11-12 07:17:11 +01:00
Po Lu
070d6297ca Fix doc string for xwidget-webkit-load-html
* src/xwidget.c (Fxwidget_webkit_load_html): Fix doc string.
2021-11-12 14:16:31 +08:00
Bryan C. Mills
31279f92ae Make "emacs --script /dev/stdin work again when that's a pipe
* src/lread.c (Fload): Adjust callers.

* src/lread.c (safe_to_load_version): Check lseek errors
(Bug#48940).

Copyright-paperwork-exempt: yes
2021-11-12 04:27:16 +01:00
Po Lu
df2438d369 Fix potential NULL dereference in xwidget-webkit-uri
* src/xwidget.c (Fxwidget_webkit_uri): Don't assume
webkit_web_view_get_uri will always return a valid string.
2021-11-12 11:19:30 +08:00
Po Lu
372824a8bf Check for WebKit xwidgets inside all xwidget-webkit functions
This is done in preparation for the introduction of other
xwidgets, such as media xwidgets, even though there are
only WebKit widgets at present.

* src/xwidget.c (CHECK_WEBKIT_XWIDGET): New macro.
(WEBKIT_FN_INIT): Use CHECK_WEBKIT_XWIDGET.

(Fxwidget_webkit_search, Fxwidget_webkit_next_result)
(Fxwidget_webkit_previous_result)
(Fxwidget_webkit_finish_search)
(Fxwidget_webkit_load_html): Check that xwidget is a WebKit
widget.
2021-11-12 10:40:03 +08:00
Po Lu
fe0f7bddb6 Prevent crashes from Lisp code modifying xwidget-list
* src/xwidget.c (internal_xwidget_view_list)
(internal_xwidget_list): New variable.

(find_xwidget_for_offscreen_window)
(define_cursors, offscreen_damage_event)
(webkit_ready_to_show, xwidget_init_view)
(Fxwidget_resize, Fdelete_xwidget_view)
(Fxwidget_view_lookup, xwidget_spec_value)
(lookup_xwidget, xwidget_end_redisplay)
(kill_frame_xwidget_views, kill_buffer_xwidgets)
(Fmake_xwidget, Fget_buffer_xwidgets): Use internal list.

(syms_of_xwidget): Initialize internal xwidget lists.
2021-11-12 09:53:30 +08:00
Po Lu
554a875493 Prevent crashes in xwidgets whose buffers have been killed
* doc/lispref/display.texi (Xwidgets): Explain meaning of killed
xwidgets.
* src/xwidget.c (Fxwidget_live_p): New function.
(Fxwidget_perform_lispy_event, WEBKIT_FN_INIT)
(Fxwidget_resize, Fxwidget_size_request)
(Fxwidget_info, Fxwidget_plist)
(Fset_xwidget_buffer, Fset_xwidget_plist)
(Fset_xwidget_query_on_exit_flag)
(Fxwidget_query_on_exit_flag)
(Fxwidget_webkit_search)
(Fxwidget_webkit_next_result)
(Fxwidget_webkit_previous_result)
(Fxwidget_webkit_finish_search)
(Fxwidget_webkit_load_html): Check for live xwidgets instead of
just xwidgets.

(xwidget_button, xwidget_motion_or_crossing)
(xv_do_draw, x_draw_xwidget_glyph_string)
(Fdelete_xwidget_view): Ignore killed xwidgets.

(syms_of_xwidget): Define new symbols and subrs and define
appropriate weakness of id_to_xwidget map.
(kill_buffer_xwidgets): Check live xwidgets instead of
killed xwidgets, set xwidget buffer to nil, and rely on GC to
free the hash table for us instead.

* src/xwidget.h (XWIDGET_LIVE_P, CHECK_LIVE_XWIDGET): New
macros.
2021-11-12 08:17:41 +08:00
Eli Zaretskii
a8fc080851 Fix compilation on MS-Windows
* src/callproc.c (emacs_spawn) <fork_done>: Define the label only
if USABLE_POSIX_SPAWN is defined, to avoid a compiler warning.
2021-11-11 22:00:03 +01:00
Philipp Stephani
a60053f836 Use posix_spawn if possible.
posix_spawn is less error-prone than vfork + execve, and can make
better use of system-specific enhancements like 'clone' on Linux.  Use
it if we don't need to configure a pseudoterminal.

* configure.ac (HAVE_SPAWN_H, HAVE_POSIX_SPAWN)
(HAVE_POSIX_SPAWN_FILE_ACTIONS_ADDCHDIR)
(HAVE_POSIX_SPAWN_FILE_ACTIONS_ADDCHDIR_NP)
(HAVE_POSIX_SPAWNATTR_SETFLAGS, HAVE_DECL_POSIX_SPAWN_SETSID): New
configuration variables.
* src/callproc.c (USABLE_POSIX_SPAWN): New configuration macro.
(emacs_posix_spawn_init_actions)
(emacs_posix_spawn_init_attributes, emacs_posix_spawn_init): New
helper functions.
(emacs_spawn): Use posix_spawn if possible.
2021-11-11 22:00:03 +01:00
Eli Zaretskii
24b86cb4f7 Fix ACL errors with WebDAV volumes on MS-Windows
* src/w32.c (acl_get_file): Handle ERROR_INVALID_FUNCTION from
WebDAV.  Patch from Ioannis Kappas <ioannis.kappas@gmail.com>.
(Bug#51773)
2021-11-11 21:41:10 +02:00
Eli Zaretskii
2c082ce800 ; * src/term.c (init_tty): Fix last change. 2021-11-11 16:58:47 +02:00
Eli Zaretskii
4a261ce91d ; * src/term.c (init_tty): Fix style of parentheses. 2021-11-11 16:56:46 +02:00
Eli Zaretskii
386289bdc8 Fix 8-color PuTTY -nw sessions broken by a recent commit
* src/term.c (init_tty): Fix the change which introduced support
for the terminfo Tc flag.  The code as installed broke colors in
PuTTY -nw sessions, because 'tigetflag' returned -1, which is
non-zero, so it was treated as the sign that true color is
supported.  But if the value returned by 'tigetflag' is -1, it means
the capability is not a boolean one, so that's not to be used as a
valid support for 24-bit color.  (Bug#44950)
2021-11-11 16:55:11 +02:00
Tim Ruffing
f30f531159 Support Tc terminfo flag for 24-bit color support in terminal
* src/term.c (init_tty): Use the Tc flag (bug#44950).

Copyright-paperwork-exempt: yes
2021-11-11 07:14:57 +01:00
Po Lu
3d253fa3aa Add `xwidget-webkit-load-html'
* doc/lispref/display.texi (Xwidgets): Document new function.
* etc/NEWS: Announce new function.
* src/xwidget.c (Fxwidget_webkit_load_html): New function.
(syms_of_xwidget): Define new subr.
2021-11-11 08:31:09 +08:00
Eli Zaretskii
32086ea233 Fix font weights on MS-Windows
* src/w32font.c (w32_decode_weight, w32_encode_weight)
(w32_to_fc_weight): Adjust weight translations to match those in
font.c and gtkutil.c:xg_weight_to_symbol.  (Bug#51704)
2021-11-10 20:17:33 +02:00
Po Lu
4d99388c16 Prevent GDK warning about missing event devices in most cases
* src/xwidget.c (synthesize_focus_in_event): Set event device to
selected frame's pointer if it's an X frame.
2021-11-10 19:43:53 +08:00
Stefan Kangas
1bb3fb4e45 Merge from origin/emacs-28
2782bc113e Revert "Fix localized display of date and time in the NS p...
2021-11-10 12:12:29 +01:00
Po Lu
32d1a735ce Remove obsolete limitation
* src/xwidget.c (Fxwidget_webkit_goto_history): Accept any fixnum as
REL-POS, to be consistent with docstring.
2021-11-10 15:47:56 +08:00
Po Lu
465ec29926 Fix incorrect offset calculation for clipped xwidget views
* src/xwidget.c (from_embedder, to_embedder): Remove incorrect
adjustment of position by view clipping.
2021-11-10 14:29:54 +08:00
Po Lu
9653cbf355 Fix invisible content in WebKit dialogs
* src/xwidget.c (webkit_script_dialog_cb): Use custom label instead of
dialog box title to display message.
2021-11-10 14:19:15 +08:00
Po Lu
1e5eb566cc Set embedder correctly to fix menus appearing in the wrong location
* src/xwidget.c (record_osr_embedder, from_embedder, to_embedder): New
functions.
(Fmake_xwidget): Attach from-embedder and to-embedder signals.
(find_widget_for_offscreen_window): New function.
(xwidget_button, xwidget_motion_or_crossing): Set embedder on event.
(Fdelete_xwidget_view): Remove embedder status if applicable.

* src/xwidget.h (struct xwidget): New fields `embedder' and
`embedder-view'.
2021-11-10 14:06:07 +08:00
Po Lu
e27ca55ecb Revert "Fix mouse face in NS port"
This reverts commit 278e4fc9c6.
2021-11-10 14:04:26 +08:00
Po Lu
2e2260427e Revert "*** empty log message ***"
This reverts commit 68a2a3307d.
2021-11-10 14:04:25 +08:00
Po Lu
b21f1cabd8 Revert "Add support for event processing via XInput 2"
This reverts commit 346cfc8124.
2021-11-10 14:04:24 +08:00
Po Lu
12beb77ec8 Revert "Fix erasing cursor on top of raised boxes in NS port"
This reverts commit 2b5a2ab50b.
2021-11-10 14:04:22 +08:00
Po Lu
da5de19423 Revert "Revert "Fix erasing cursor on top of raised boxes in NS port""
This reverts commit 7117bbc7aa.
2021-11-10 14:04:21 +08:00
Po Lu
e9b954f0fd Revert "Support opening the toolkit menu bar on NS"
This reverts commit ff9cf991c1.
2021-11-10 14:04:05 +08:00
oldosfan
ff9cf991c1 Support opening the toolkit menu bar on NS
* src/nsmenu.m (ns_activate_menubar, Fns_open_menubar): New functions.
* src/nsterm.m (ns_create_terminal): Add activate_menubar_hook.
* lisp/menu-bar.el (menu-bar-open): Use ns-menu-bar-open on Nextstep.
2021-11-10 13:27:01 +08:00
oldosfan
7117bbc7aa Revert "Fix erasing cursor on top of raised boxes in NS port"
This reverts commit 960f0eb9ab657af85c532574b937d8851049b178.
2021-11-10 13:27:01 +08:00