Commit graph

45171 commits

Author SHA1 Message Date
Po Lu
7e596463be Add some menu bar help code on GNUstep
* src/nsmenu.m ([EmacsMenu menu:willHighlightItem:]): Implement
help event generation for GNUstep.
2022-01-22 21:51:46 +08:00
Po Lu
15090d7c6f Fix PGTK build with xwidgets
* src/xwidget.c: Swap some preprocessor definitions around.
Reported by Iñigo Serna <inigoserna@gmail.com>.
2022-01-22 20:28:22 +08:00
Po Lu
82f818344e Fix GNUstep build warnings
* src/nsmenu.m
([EmacsMenu menu:updateItem:atIndex:shouldCancel:])
([EmacsMenu menuHasKeyEquivalent:forEvent:target:action:])
([EmacsMenu numberOfItemsInMenu:]): New methods.
2022-01-22 20:23:34 +08:00
Eli Zaretskii
65c4158c3c ; * src/xdisp.c (Fbidi_find_overridden_directionality): Doc fix. 2022-01-22 13:09:31 +02:00
Po Lu
ebe334cdc2 Prevent raw bytes from being displayed as help text on Haiku
* src/haikumenu.c (digest_menu_items): Don't set encoded text
into the menu item vector.
2022-01-22 09:51:30 +00:00
Po Lu
2b72558527 Use locale coding system to decode XIM preedit text
* src/xfns.c (x_xim_text_to_utf8_unix): XIMs typically return
text in the locale coding system, so use that instead.
2022-01-22 16:16:26 +08:00
Po Lu
b63baeafd2 Get rid of some unnecessary code in handle_one_xevent
* src/xterm.c (handle_one_xevent): Stop mutating event->xkey.
2022-01-22 15:02:12 +08:00
Po Lu
d878c4537d Fix recent changes to visible bell code
* 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.
2022-01-22 10:25:06 +08:00
Po Lu
882997e830 Clean up visible bell code on X
* 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.
2022-01-22 10:12:18 +08:00
Po Lu
5672ee5663 Fix crash when the visible bell is rung but there is no cairo surface
* src/pgtkterm.c (pgtk_flash): Return if the cairo surface is
not present.  (bug#53420)
(pgtk_cr_update_surface_desired_size): Reformat comment.
2022-01-22 09:11:33 +08:00
Paul Eggert
fac8d0ac2f Avoid glitches in ELC lines in build output
* src/verbose.mk.in (have_working_info): New macro.
(AM_V_ELC, AM_V_ELN): Use 'echo' rather than $(info ...)
on buggy versions of GNU Make.
2022-01-21 14:48:56 -08:00
Paul Eggert
882bbeb1f9 Simplify AM_V_ELC setup
* src/verbose.mk.in (AM_V_ELC, AM_V_ELN): Use simpler Make ‘if’s.
2022-01-21 14:48:56 -08:00
Glenn Morris
98355833ba * src/keyboard.c (start_polling): Fix type mixup.
Flagged by --enable-check-lisp-object-type.
2022-01-21 12:12:43 -08:00
Po Lu
88e47934d9 * src/keyboard.c (syms_of_keyboard): Fix build without input polling. 2022-01-21 21:50:06 +08:00
Po Lu
16c785b621 Make xwidgets work on builds that don't use Cairo drawing
* configure.ac: Check for the parts of Cairo that are needed for
xwidgets when they are enabled without cairo drawing.

* src/xterm.c:
* src/xwidget.c: Always include cairo-xlib headers when xwidgets
are enabled.
2022-01-21 19:10:05 +08:00
Po Lu
6e8bafc996 Synchronize XI2 code with Core Input code
* src/xterm.c (handle_one_xevent): Apply recent changes for XI2
events as well.
2022-01-21 15:32:45 +08:00
Po Lu
03f4a2ff64 Merge from origin/emacs-28
11ea45c9e4 Fix UB in ebrowse
ba57b78064 Fix execute-extended-command-for-buffer in fundamental-mode
ef0c1d4c2c Add workaround to handle a problem with Enlightenment WM (...
2022-01-21 15:27:35 +08:00
Po Lu
7fff3c9b7e Work around GTK changing window backgrounds on colormapped displays
* src/xterm.c (x_clear_window):
(x_clear_area): Fill the contents with the reverse GC instead of
using XClearArea and XClearWindow when not double buffered.
2022-01-21 13:22:51 +08:00
Po Lu
e9e5d0ba73 Fix BadValue crash when looking up empty color names on some X servers
* src/xterm.c (x_parse_color): Avoid parsing empty color names.
2022-01-21 11:40:43 +08:00
Po Lu
452f46d366 Allow fractional values of `polling-period'
This allows C-g to be handled faster in the NS port at the cost
of some extra CPU time on slow machines.

* etc/NEWS: Announce new feature.
* src/keyboard.c (start_polling):
(bind_polling_period): Handle floating point values of
`polling-period'.
(syms_of_keyboard): Make `polling-period' a Lisp variable
instead of an int variable.
2022-01-21 09:15:52 +08:00
Po Lu
7ff7f948f7 Avoid FOCUS_IN_EVENTS not being sent on NS
* src/nsterm.m ([EmacsView windowDidBecomeKey]): Work around
emacs_event being NULL by storing focus in events directly
into the keyboard buffer.  (bug#52376)
2022-01-21 09:00:59 +08:00
Alan Mackenzie
10083e788f In early bootstrap, use byte-compiled compiler to native compile first files
This speeds up a make bootstrap by around 15%.

* lisp/Makefile.in (BYTE_COMPILE_FLAGS): set a value specific to compile-first
which doesn't contain the setting of Emacs variable load-prefer-newer.
Add a new make hunk which byte-compiles (rather then native compiles) when the
environment variable ANCIENT is "yes".  Set the date of the .elc files built
to 1971-01-01 to cause a second compilation of them later.

* src/Makefile.in: Add an extra invocation of directory lisp's MAKE with
target compile-first and the flag environment variable ANCIENT set to yes.

* src/verbose.mk.in: When ANCIENT is yes, output ELC, not ELC+ELN for
AM_V_ELC.
2022-01-20 18:40:15 +00:00
Eli Zaretskii
b01604b362 Update documentation of 'clone-indirect-buffer-hook'
* doc/emacs/buffers.texi (Indirect Buffers):
* src/buffer.c (syms_of_buffer) <clone-indirect-buffer-hook>:
Update the documentation of 'clone-indirect-buffer-hook' due the
recent changes.
* etc/NEWS: Mention the change in where the hook is run.

* lisp/face-remap.el (face-attrs--make-indirect-safe): Doc fix.
2022-01-20 19:18:54 +02:00
Andrew Hyatt
27b3948a8a Fix indirect font changes incorrectly affecting original buffer
* lisp/face-remap.el (face-attrs--make-indirect-safe):
(clone-indirect-buffer-hook): Set up a face remapping alist
(bug#53294).

* lisp/simple.el (clone-indirect-buffer): Move the point the hook
is run.

* src/buffer.c (Fmake_indirect_buffer, syms_of_buffer): Move the
place where the clone-indirect-buffer-hook variable is defined, so
that we can call it from C.
2022-01-20 14:42:31 +01:00
Po Lu
e26071e990 Make system tooltips display in the menu bar on Haiku
* doc/emacs/haiku.texi (Haiku Basics): Update documentation.
* src/haiku_support.cc (Highlight): Apply the hack used for
regular menus to the menu bar as well.
* src/haikumenu.c (digest_menu_items): Set help text on menu bar
if `tooltip-mode' is t and system tooltips are used.
(syms_of_haikumenu): New symbol `tooltip-mode'.
2022-01-20 10:55:52 +00:00
Mattias Engdegård
b929bdaeb6 Fix Fchar_syntax for non-ASCII in unibyte buffers
Fchar_syntax did not convert unibyte characters to multibyte when the
current buffer was unibyte, in contrast to `char-syntax` in
byte-compiled code (bug#53260).

* src/bytecode.c (exec_byte_code): Call out to Fchar_syntax;
the dynamic frequency is too low to justify inlining here, and it
did lead to implementations diverging.
* src/syntax.c (Fchar_syntax): Convert non-ASCII unibyte values to
multibyte.
* test/src/syntax-tests.el (syntax-char-syntax): New test.
2022-01-20 11:44:07 +01:00
Eli Zaretskii
bd6cfabdc3 Fix 'bidi-find-overridden-directionality' for Lisp strings
* src/bidi.c (bidi_find_first_overridden): Don't use ZV for Lisp
strings.  Reported by Lars Ingebrigtsen <larsi@gnus.org>.
2022-01-20 12:02:27 +02:00
Martin Rudalics
ef0c1d4c2c Add workaround to handle a problem with Enlightenment WM (Bug#53298)
* src/xterm.c (handle_one_xevent): Handle setting of variable
'x_set_frame_visibility_more_laxly' when receiving an Expose or
FocusIn event (Bug#53298).
(Qexpose): Define symbol.
(x_set_frame_visibility_more_laxly): New Lisp variable.
* etc/PROBLEMS: Mention frame redraw problem with the
Enlightenment WM and 'x-set-frame-visibility-more-laxly'
workaround.
2022-01-20 10:30:08 +01:00
Po Lu
a43b665605 Make nil' values of the :position' underline property work correctly
* src/xfaces.c (Finternal_set_lisp_face_attribute): Handle cases
where the underline property `:position' is nil.
2022-01-20 13:06:51 +08:00
Po Lu
5404bf50ad Port hourglass display to XCB
* src/xterm.c (x_show_hourglass):
(x_hide_hourglass): Use straightforward translations to XCB if
available.
2022-01-20 11:27:17 +08:00
Po Lu
8c184bb166 Get rid of calls to XRenderQueryExtension after terminal initialization
* src/image.c (x_create_xrender_picture):
(Fimage_transforms_p): Use `xrender_supported_p'.

* src/xterm.c (x_term_init): Query for XRender support and
extension versions.

* src/xterm.h (struct x_display_info): New fields
`xrender_supported_p', `xrender_major' and `xrender_minor'.
2022-01-20 10:48:25 +08:00
Po Lu
d2a23c7441 Implement selection ownership on Haiku
* lisp/term/haiku-win.el (haiku-selection-owner-p): New
declaration.
(gui-backend-selection-owner-p): Implement using newly exposed
primitive.

* src/haiku_select.cc
(count_clipboard, count_primary, count_secondary): New
variables for tracking selection ownership.
(BClipboard_set_system_data):
(BClipboard_set_primary_selection_data):
(BClipboard_set_secondary_selection_data): Set ownership
variables.
(BClipboard_owns_clipboard):
(BClipboard_owns_primary):
(BClipboard_owns_secondary): New functions.

* src/haikuselect.c (Fhaiku_selection_owner_p): New function.
(syms_of_haikuselect): Define new subr.
* src/haikuselect.h: New prototypes.
2022-01-20 01:05:53 +00:00
Po Lu
d1648945fc Fix recent change for big endian systems where `Atom' is 64 bits
* src/xfns.c (x_create_tip_frame): Cast atoms to xcb_atom_t
and pass a reference to that to xcb_change_property instead.
2022-01-19 21:28:09 +08:00
Po Lu
9693eb4aef Port some X11 tooltip code to XCB
* configure.ac: Require `xcb-aux' to be present before using
XCB.
* src/xfns.c (x_sync):
(x_create_tip_frame):
(Fx_show_tip): Port window related code to XCB.
2022-01-19 19:08:09 +08:00
Po Lu
de614ec950 Use Cairo XCB surfaces when XCB is available
This lets us get at goodies such as shm support, which aren't
available with the xlib surface.  (bug#52120)

* configure.ac: Test for cairo-xcb if cairo is available on X.
* src/xterm.c (USE_CAIRO_XCB_SURFACE): New define.
(x_begin_cr_clip): Create XCB surfaces if available.
(x_try_cr_xlib_drawable):
(x_scroll_run): Handle XCB surfaces.
(x_term_init): Find XCB visualtype structure.
* src/xterm.h (struct x_display_info): New field `xcb_visual'.
* src/xwidget.c (x_draw_xwidget_glyph_string): Fix integer
overflow.
2022-01-19 17:41:22 +08:00
Po Lu
ebe2b6fd0d * src/haikufns.c (Fx_display_mm_width): Fix copy-paste error. 2022-01-19 06:00:13 +00:00
Po Lu
95084cec09 Rename system tooltip variables to `use-system-tooltips'
* doc/emacs/frames.texi (Tooltips):
* doc/emacs/haiku.texi (Haiku Basics):
* doc/lispref/display.texi (Tooltips): Document
`use-system-tooltips' instead.

* etc/NEWS: Announce new option.
* lisp/cus-start.el (standard): Add new option.

* lisp/term/haiku-win.el (haiku-use-system-tooltips):
* lisp/term/pgtk-win.el (x-gtk-use-system-tooltips):
* lisp/term/x-win.el (x-gtk-use-system-tooltips): Add aliases
for old options.

* src/frame.c (syms_of_frame): New variable
`use-system-tooltips'.

* src/haikufns.c (Fx_show_tip):
(syms_of_haikufns):
* src/pgtkfns.c (x_hide_tip):
(Fx_show_tip):
(syms_of_pgtkfns):
* src/xfns.c (x_hide_tip):
(Fx_show_tip):
(syms_of_xfns): Use `use-system-tooltips' instead of the old
platform dependent options.
2022-01-19 13:12:18 +08:00
Po Lu
90dda33108 Use more reliable timestamps for some kinds of events on Haiku
* src/haiku_support.cc (DispatchMessage):
(MouseMoved):
(MouseDown):
(MouseUp): Set `time' field of event structures to input server
time.
* src/haiku_support.h (struct haiku_key_event):
(struct haiku_mouse_motion_event):
(struct haiku_button_event): New field `time'.
* src/haikuterm.c (haiku_read_socket): Use input server time
if provided.
2022-01-19 02:08:52 +00:00
Po Lu
d5723560d5 Fix event timestamp generation on Haiku
* src/haikuterm.c (haiku_read_socket): Use miliseconds for event
time.
2022-01-19 01:14:19 +00:00
Eli Zaretskii
f558c35a93 Remove 'cuneiform-numbers-and-punctuation' from w32font.c
* src/w32font.c (syms_of_w32font, font_supported_scripts): Remove
'cuneiform-numbers-and-punctuation'.  Reported by Kévin Le Gouguec
<kevin.legouguec@gmail.com>.
2022-01-18 16:24:36 +02:00
Po Lu
4f23dbaa67 Intern virtual modifier atoms the smart way on X
* src/xterm.c (x_find_modifier_meanings): Get rid of calls to
XInternAtom.
(x_term_init): Initialize atom refs for virtual modifiers and
make sure to only call `x_find_modifier_meanings' after they
are interned.
* src/xterm.h (struct x_display_info): New fields for virtual
modifier atoms.
2022-01-18 19:54:22 +08:00
Po Lu
d0c0f5f648 * src/haikuterm.c (haiku_read_socket): Add work for frame size bug.
BWindow::ResizeTo seems to have the same rounding issues that
BRect has, but I have no idea how to solve it there.  As a
temporary workaround until a solution has been found, avoid
garbaging tooltip frames when FrameResized reports different
dimensions from what they were set to.
2022-01-18 09:42:21 +00:00
Po Lu
68472c12e7 * src/haikufns.c (Fx_show_tip): Fix typo. 2022-01-18 08:21:43 +00:00
Po Lu
98286799a5 Fix default value of `no-special-glyphs' frame parameter on Haiku
* src/haikufns.c (haiku_create_frame): Make `no-special-glyphs'
nil by default.
2022-01-18 08:21:42 +00:00
Po Lu
d556e75af8 Improve tooltip implementation on Haiku
This fixes several issues: tooltips having no right internal
border, reusing tooltips occasionally freezing Emacs, and
inconsistent behaviour when compared to X.

* src/haiku_support.cc (BWindow_resize): Revert a recent change.
(BView_move_frame):
(BWindow_set_avoid_focus): Stop sync'ing when locked.  This
tends to cause lockups for an unknown reason.
* src/haikufns.c (initial_setup_back_buffer): New function.
(haiku_create_frame): Remove tooltip related code.
(haiku_set_internal_border_width): Handle cases where the face
cache is NULL and/or the window has not been created.
(haiku_set_inhibit_double_buffering): Likewise.
(haiku_create_tip_frame): New function.
(Fx_create_frame): Remove tooltip specific code.
(Fx_show_tip): Synchronize code with X.

* src/haikuterm.c (haiku_new_font): Don't adjust size on tooltip
frames.
(haiku_read_socket): Draw internal border on tooltip frames
during resize.
(haiku_clear_under_internal_border): Handle cases where the face
cache is NULL.
2022-01-18 08:21:42 +00:00
Po Lu
0a010902d7 Fix system tooltips above menus
* src/haikufns.c (Fx_show_tip): Disable frame reuse inside a
menu.
(syms_of_haikufns): New symbol `tooltip-reuse-hidden-frame'.
2022-01-18 02:41:29 +00:00
Po Lu
0c0b77b3cc Allow non-system tooltips to display above menus on Haiku
* doc/emacs/haiku.texi (Haiku Basics): Document that tooltips
can now be displayed above the menu bar.

* lisp/tooltip.el (tooltip-show-help): Only display help text in
the echo area if Haiku system tooltips are enabled.

* src/haiku_support.cc (FlipBuffers): Stop flushing view.
* src/haikufns.c (Fx_show_tip): Fix a sizing bug leading to
tooltips needing two redisplays to display correctly.
* src/haikuterm.c (haiku_read_socket): Ignore resize events on
tooltips.
2022-01-18 02:06:00 +00:00
Eli Zaretskii
8cc1b9035c Revert "Add undelete-frame-max instead of undelete-frame-mode (bug#51883)"
This reverts commit 714e11d535.

That commit was unilateral and disregarded past discussions.
2022-01-17 14:51:53 +02:00
Po Lu
412247c53f Fix Emacs icon not appearing on Haiku
* lib-src/be_resources.cc (main): Scale input bitmap
appropriately before setting it as the mini and large icons.
* src/Makefile.in (Emacs): Add dependency on
`lib-src/be-resources'.
2022-01-17 11:09:50 +00:00
Po Lu
1cd6737a38 Use BControlLook to determine scroll bar size on Haiku
* src/haiku_support.cc (BScrollBar_default_size): Use
BControlLook instead of legacy constants.
2022-01-17 10:46:55 +00:00