Commit graph

45136 commits

Author SHA1 Message Date
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
Po Lu
2fa1eced39 Display override redirect frames in all workspaces on Haiku
* src/haiku_support.cc (class EmacsWindow): New field
`pre_override_redirect_workspaces'.
(BWindow_set_override_redirect): Set window to display on all
workspaces.
2022-01-17 10:08:04 +00:00
Po Lu
c2f3a2f5e3 * src/haikufns.c (Fx_show_tip): Sync after making window visible. 2022-01-17 05:06:31 +00:00
Po Lu
ace6a88285 Really eliminate tooltip flicker on Haiku
* src/haikufns.c (tip_frame): Make non-static.
* src/haikuterm.c (haiku_read_socket): Ignore motion events that
didn't actually move when a tip frame is visible.
* src/haikuterm.h (tip_frame): Declare.
2022-01-17 04:53:42 +00:00
Po Lu
84ebb16577 Translate timestamps when using GTK native input
* src/gtkutil.c (xg_widget_key_press_event_cb): Use timestamp
specified in key event.
(xg_filter_key): Translate timestamps.
2022-01-17 09:48:01 +08:00
Po Lu
e25db1e167 Exercise wire right after event is filtered for native input
* src/xterm.c (handle_one_xevent): Run a no-op immediately after
an event was filtered by GDK.
2022-01-17 08:30:38 +08:00
Juri Linkov
714e11d535 Add undelete-frame-max instead of undelete-frame-mode (bug#51883)
* doc/emacs/frames.texi (Frame Commands): Replace
undelete-frame-mode with undelete-frame-max.

* lisp/frame.el (undelete-frame-max): New defcustom, by default 1.
(undelete-frame--handle-delete-frame): Use undelete-frame-max
instead of hard-coded 16.
(undelete-frame-mode): Remove function.
(after-init-hook): Add hook undelete-frame--handle-delete-frame to
delete-frame-functions using after-init-hook to not store the
initial frame.
(undelete-frame): Remove undelete-frame-mode.  Use undelete-frame-max
instead of hard-coded 16.

* lisp/menu-bar.el (menu-bar-file-menu): Remove menu item undelete-frame-mode.

* src/frame.c (Fdelete_frame): Replace `undelete-frame-mode' with
`undelete-frame-max' in the docstring.
2022-01-16 22:58:30 +02:00
Po Lu
8f65246523 Fix XI2 event filtering for very old versions of libXi
* src/xterm.c (handle_one_xevent): Handle cases where
xev->display is NULL.
2022-01-16 21:40:07 +08:00
Po Lu
1220cf605b Fix the xft build
* src/xsettings.h [!HAVE_PGTK]: Include dispextern.h and remove
duplicate definition of Display_Info.
2022-01-16 19:45:54 +08:00
Po Lu
5476026119 Use kMenuWindowFeel on Haiku toolkip windows
* src/haiku_support.cc (BWindow_set_tooltip_decoration): Use
kMenuWindowFeel and set flags here.
* src/haikufns.c (Fx_show_tip): Don't set_avoid_focus manually
since setting tooltip decorations already does that.
2022-01-16 11:02:58 +00:00
Po Lu
7f074fecf4 Make help event generation on Haiku behave closer to X
* src/haikuterm.c (haiku_read_socket): Generate help events more
like how X does it.
2022-01-16 10:43:22 +00:00
Po Lu
df53beb2db Reduce poll time for Haiku file dialogs
* src/haiku_support.c (be_popup_file_dialog): Reduce idle
processor load by increasing timeout.  The timeout is still too
low to be noticable by the user.
2022-01-16 10:12:22 +00:00
Po Lu
0ae6491a89 * src/gtkutil.c (xg_widget_key_press_event_cb): Also raise input signal. 2022-01-16 18:02:04 +08:00
Yuuki Harano
da35e9d5ef * src/pgtkterm.c (evq_flush): Shift events one by one 2022-01-16 17:25:28 +09:00
Po Lu
9b308a333b Avoid focus and allow monospace text in tooltip frames on Haiku
* src/haikufns.c (Fx_show_tip): Set avoid focus on tooltip
frames.

* src/haikuterm.c (haiku_default_font_parameter): Don't special
case the default font on tooltip frames, since the bug that was
supposed to work around has already been fixed.
2022-01-16 05:59:39 +00:00
Po Lu
e2b9f3347e Update modifier meanings even if an xkb_desc was not available
* src/xterm.c (handle_one_event): Always update modifiers after
the keyboard mapping is refreshed.
2022-01-16 13:46:39 +08:00
Po Lu
c59e870cce * src/xwidget.c (webkit_js_to_lisp): Use correct constant to check size. 2022-01-16 10:05:17 +08:00
Po Lu
80c52346c2 Fix a minor snafu when resizing frames on Haiku
* src/haiku_support.cc (BWindow_resize): Adjust for minor snafu
where BWindow::ResizeTo uses BRect-style width and height
instead of actual width and height.
2022-01-16 00:47:41 +00:00
Eli Zaretskii
de3a957265 Fix setting cursor in pixel-scrolling modes
* src/xdisp.c (redisplay_window): Don't set cursor to any glyph
row past the one that contains EOB.  (Bug#53275)
2022-01-15 15:58:21 +02:00
Po Lu
ae65f2089c Use preferred XIM style without trying to detect if it's supported
The old code would in general fall back to the default if the
preferred style wasn't available, which is usually worse than
what the user specified

* src/xfns.c (best_xim_style): Stop checking if the preferred
input style is supported.
2022-01-15 20:17:22 +08:00
Po Lu
3b27edd5f5 * src/emacsgtkfixed.c (XSetWMSizeHints): Remove some useless code. 2022-01-15 18:11:35 +08:00
Stefan Kangas
8df828e405 Merge from origin/emacs-28
5990148860 * lisp/simple.el (undo-no-redo): Fix customization group
ac2cdb8a46 * lisp/progmodes/xref.el (xref-file-name-display): Fix doc...
c05864dd25 Avoid another segfault in 'face_at_buffer_position'
2022-01-15 06:47:59 +01:00
Po Lu
43618cd44c Find a way to make lowering frames work on Haiku
* doc/lispref/frames.texi (Raising and Lowering): Document that
lowering frames is now supported on Haiku.
* src/haikuterm.c (haiku_frame_raise_lower): Implement a hack to
lower frames.
2022-01-15 05:30:28 +00:00
Po Lu
9d809ed9bb Filter key release events when using native input without having XIM
* src/xterm.c (handle_one_xevent): Also check for XI key
release events when using native input on a build without XIM.
2022-01-15 13:25:23 +08:00
Po Lu
9845f6b9aa Fix native input when using core input events
* src/gtkutil.c (xg_filter_key): Test for core key press events
correctly.
* src/xterm.c (handle_one_xevent): Also check for KeyRelease
events.
2022-01-15 09:40:28 +08:00
Po Lu
1f5f3b7e89 Remove non-functional configure test
It cannot work anymore, leading to compiler warnings when
building xterm.c.

* configure.ac: Remove test for whether
XRegisterIMInstantiateCallback wants XPointer or XPointer * as
the client_data.

* src/xterm.c (xim_initialize):
(xim_close_dpy): Just cast client data to void * and hope that
the compiler keeps quiet.
2022-01-15 09:11:11 +08:00
Eli Zaretskii
c05864dd25 Avoid another segfault in 'face_at_buffer_position'
* src/xfaces.c (face_at_buffer_position): Make really sure the
default face is usable.  (Bug#53254)
2022-01-14 16:11:34 +02:00
Po Lu
30dbdecd4a * src/xterm.c: Add a small writeup on input handling on X.
Hopefully I will extend this section with details about more
aspects of X11 support in the future.
2022-01-14 19:50:40 +08:00
Po Lu
e0268fd7d5 Fix leak when refs are sent to a frame during destruction on Haiku
* src/haikuterm.c (haiku_read_socket): Free b->ref if it was
sent from a frame that was destroyed.
2022-01-14 09:46:50 +00:00
Po Lu
a970a2a489 Make sure the X mouse position hook always looks at an X frame
* src/xterm.c (XTmouse_position): Check that f1 is an X frame.
2022-01-14 17:43:09 +08:00
Sergey Vinokurov
a5ce31a192 Use assq_no_quit on all local_var_alist accesses
* src/data.c (Fkill_local_variable):
* src/buffer.c (buffer_local_value): Use assq_no_quit instead of
Fassoc/Fassq on local_var_alist (bug#53242).

* src/data.c (Flocal_variable_p): Use assq_no_quit instead of
open-coding the search on local_var_alist.
2022-01-14 08:50:06 +01:00
Po Lu
1158c880e2 Try to make sure an XKB desc is always available
* src/xterm.c (handle_one_xevent): Re-retrieve XKB map if it's
unavailable for some reason upon handling an XKB map or keyboard
notify event.
2022-01-14 14:57:55 +08:00
Po Lu
4e1bf9bf48 Fix out of bounds bitmap access on Haiku
* src/haiku_draw_support.cc (BView_DrawBitmapWithEraseOp): Fix
out of bounds access to bitmap data.
2022-01-14 01:24:34 +00:00
Po Lu
83ae392d59 Refresh keyboard mapping upon receiving new XKB map
* src/xterm.c (handle_one_xevent): Call
XkbRefreshKeyboardMapping where required.
2022-01-14 08:52:53 +08:00
Eli Zaretskii
1ee9275c1b Avoid scrolling display when point moves into invisible text
* src/xdisp.c (try_cursor_movement): Handle point moving into
invisible text.  (Bug#53215)
2022-01-13 15:40:30 +02:00
Eli Zaretskii
8ec475e558 Improve preserving X coordinate during scroll commands
* src/window.c (window_scroll_pixel_based): Don't unnecessarily
move the iterator.  (Bug#53220)
2022-01-13 14:21:10 +02:00