aboutsummaryrefslogtreecommitdiffstats
path: root/src/haikuselect.c (follow)
Commit message (Collapse)AuthorAgeFilesLines
* Update copyright year to 2025Paul Eggert2025-01-011-1/+1
| | | | Run "TZ=UTC0 admin/update-copyright".
* Merge from savannah/emacs-29Po Lu2024-01-021-1/+1
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | dc4e6b13296 ; Update copyright years in more files 64b37776318 ; Run set-copyright from admin.el 8e1c56ae467 ; Add 2024 to copyright years # Conflicts: # doc/misc/modus-themes.org # doc/misc/texinfo.tex # etc/NEWS # etc/refcards/ru-refcard.tex # etc/themes/modus-operandi-theme.el # etc/themes/modus-themes.el # etc/themes/modus-vivendi-theme.el # lib/alloca.in.h # lib/binary-io.h # lib/c-ctype.h # lib/c-strcasecmp.c # lib/c-strncasecmp.c # lib/careadlinkat.c # lib/cloexec.c # lib/close-stream.c # lib/diffseq.h # lib/dup2.c # lib/filemode.h # lib/fpending.c # lib/fpending.h # lib/fsusage.c # lib/getgroups.c # lib/getloadavg.c # lib/gettext.h # lib/gettime.c # lib/gettimeofday.c # lib/group-member.c # lib/malloc.c # lib/md5-stream.c # lib/md5.c # lib/md5.h # lib/memmem.c # lib/memrchr.c # lib/nanosleep.c # lib/save-cwd.h # lib/sha1.c # lib/sig2str.c # lib/stdlib.in.h # lib/strtoimax.c # lib/strtol.c # lib/strtoll.c # lib/time_r.c # lib/xalloc-oversized.h # lisp/auth-source-pass.el # lisp/emacs-lisp/lisp-mnt.el # lisp/emacs-lisp/timer.el # lisp/info-look.el # lisp/jit-lock.el # lisp/loadhist.el # lisp/mail/rmail.el # lisp/net/ntlm.el # lisp/net/webjump.el # lisp/progmodes/asm-mode.el # lisp/progmodes/project.el # lisp/progmodes/sh-script.el # lisp/textmodes/flyspell.el # lisp/textmodes/reftex-toc.el # lisp/textmodes/reftex.el # lisp/textmodes/tex-mode.el # lisp/url/url-gw.el # m4/alloca.m4 # m4/clock_time.m4 # m4/d-type.m4 # m4/dirent_h.m4 # m4/dup2.m4 # m4/euidaccess.m4 # m4/fchmodat.m4 # m4/filemode.m4 # m4/fsusage.m4 # m4/getgroups.m4 # m4/getloadavg.m4 # m4/getrandom.m4 # m4/gettime.m4 # m4/gettimeofday.m4 # m4/gnulib-common.m4 # m4/group-member.m4 # m4/inttypes.m4 # m4/malloc.m4 # m4/manywarnings.m4 # m4/mempcpy.m4 # m4/memrchr.m4 # m4/mkostemp.m4 # m4/mktime.m4 # m4/nproc.m4 # m4/nstrftime.m4 # m4/pathmax.m4 # m4/pipe2.m4 # m4/pselect.m4 # m4/pthread_sigmask.m4 # m4/readlink.m4 # m4/realloc.m4 # m4/sig2str.m4 # m4/ssize_t.m4 # m4/stat-time.m4 # m4/stddef_h.m4 # m4/stdint.m4 # m4/stdio_h.m4 # m4/stdlib_h.m4 # m4/stpcpy.m4 # m4/strnlen.m4 # m4/strtoimax.m4 # m4/strtoll.m4 # m4/time_h.m4 # m4/timegm.m4 # m4/timer_time.m4 # m4/timespec.m4 # m4/unistd_h.m4 # m4/warnings.m4 # nt/configure.bat # nt/preprep.c # test/lisp/register-tests.el
| * ; Add 2024 to copyright yearsPo Lu2024-01-021-1/+1
| |
* | Split safe_call between redisplay and non-redisplay versionsStefan Monnier2023-12-231-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The `safe_call/eval` family of functions started its life in `xdisp.c` for the needs of redisplay but quickly became popular outside of it. This is not ideal because despite their name, they are somewhat specific to the needs of redisplay. So we split them into `safe_call/eval` (in `eval.c`) and `dsafe_call/eval` (in `xdisp.c`). We took this opportunity to slightly change their calling convention to be friendly to the CALLN-style macros. While at it, we introduce a new `calln` macro as well which does all that `call[1-8]` used to do. * src/eval.c (safe_eval_handler, safe_funcall, safe_eval): New functions, Copied from `xdisp.c`. Don't obey `inhibit_eval_during_redisplay` any more. Adjust error message to not claim it happened during redisplay. * src/lisp.h (calln): New macro. (call1, call2, call3, call4, call5, call6, call7, call8): Turn them into aliases of `calln`. (safe_funcall): Declare. (safe_calln): New macro. (safe_call1, safe_call2): Redefine as compatibility macros. (safe_call, safe_call1, safe_call2): Delete. Replace all callers with calls to `safe_calln`. * src/xdisp.c (dsafe_eval_handler): Rename from `safe_eval_handler`. Adjust all users. (dsafe__call): Rename from `safe_call` and change calling convention to work with something like CALLMANY. Adjust all users. (safe_call, safe__call1, safe_call2): Delete functions. (SAFE_CALLMANY, dsafe_calln): New macros. (dsafe_call1, dsafe_eval): Rename from `safe_call1` and `safe_eval`, and rewrite using them. Adjust all users. (clear_message, prepare_menu_bars, redisplay_window): Use `dsafe_calln`. (run_window_scroll_functions): Don't let-bind `Qinhibit_quit` since `safe_run_hooks_2` does it for us.
* | Introduce support for Desktop Notifications on HaikuPo Lu2023-08-171-0/+125
|/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * doc/lispref/os.texi (Desktop Notifications): Document Haiku desktop notifications. * etc/NEWS: Announce this change. * lisp/org/org-clock.el (haiku-notifications-notify): New declaration. (org-show-notification): Employ that function. * src/haiku_io.c (haiku_len) <NOTIFICATION_CLICK_EVENT>: Return the length for this type of event. * src/haiku_select.cc (my_team_id, be_display_notification): New functions. * src/haiku_support.cc (my_team_id, ArgvReceived): New functions. * src/haiku_support.h (enum haiku_event_type): New event type NOTIFICATION_CLICK_EVENT. (struct haiku_notification_click_event): New structure. * src/haikuselect.c (haiku_notifications_notify_1) (Fhaiku_notifications_notify): New functions. (syms_of_haikuselect): Register new defsubr. * src/haikuterm.c (haiku_read_socket): * src/haikuselect.h: * src/termhooks.h: Add new events for notification clicks on Haiku.
* ; Add 2023 to copyright years.Eli Zaretskii2023-01-011-1/+1
|
* ; Fix typos (prefer US spelling)Stefan Kangas2022-11-181-1/+1
|
* Implement wallpaper.el support for HaikuPo Lu2022-09-141-0/+129
| | | | | | | | | | | | | | | | * lisp/image/wallpaper.el (haiku-set-wallpaper, wallpaper-set): Use `haiku-set-wallpaper' on Haiku. * lisp/term/haiku-win.el (haiku-write-node-attribute) (haiku-send-message, haiku-set-wallpaper): New function. * src/haiku_support.cc (be_write_node_message, be_send_message): New functions. * src/haiku_support.h: Update prototypes. * src/haikuselect.c (haiku_message_to_lisp) (haiku_lisp_to_message): Fix CSTR type handling to include NULL byte. (haiku_report_system_error, Fhaiku_write_node_attribute) (Fhaiku_send_message): New functions. (syms_of_haikuselect): Add defsubrs.
* Handle modifiers during Haiku DND wheel movementPo Lu2022-07-261-6/+7
| | | | | | | | | | * lisp/term/haiku-win.el (haiku-dnd-modifier-mask) (haiku-dnd-wheel-modifier-type): New functions. (haiku-handle-drag-wheel): Use them. * lisp/x-dnd.el (x-dnd-modifier-mask): Remove outdated comment. * src/haikuselect.c (haiku_note_drag_wheel): Pass modifiers to wheel function. (syms_of_haikuselect): Update doc strings.
* Implement wheel movement during DND on HaikuPo Lu2022-07-201-2/+43
| | | | | | | | | | | | | | | | | | | | * lisp/term/haiku-win.el (haiku-dnd-wheel-count): New defvar. (haiku-note-wheel-click, haiku-handle-drag-wheel): New functions. * src/haiku_support.cc (EmacsWindow): Get rid of window ID logic. (MessageReceived, MouseMoved, be_drag_message): Use thread ID to identify windows instead of window ID. * src/haikuselect.c (Fhaiku_drag_message): Record whether or not the DND frame is a valid drop target. (haiku_note_drag_wheel): New function. (syms_of_haikuselect): New defvar. * src/haikuterm.c (haiku_read_socket): Call `haiku_note_drag_wheel' when appropriate. * src/haikuterm.h: Update prototypes.
* Implement last change on Haiku as wellPo Lu2022-07-181-0/+5
| | | | | | | * lisp/term/haiku-win.el (haiku-dnd-drag-handler): Stop redisplaying here. * src/haikuselect.c (haiku_note_drag_motion): Use redisplay_preserve_echo_area.
* Implement TIMESTAMP target for Haiku selectionsPo Lu2022-07-131-0/+18
| | | | | | | | | | * lisp/term/haiku-win.el (haiku-selection-targets): Fix return values. (gui-backend-get-selection): Handle TIMESTAMP specially. * src/haiku_select.cc (be_get_clipboard_count): New function. * src/haikuselect.c (Fhaiku_selection_timestamp): New function. (syms_of_haikuselect): Add new defsubr. * src/haikuselect.h: Update prototypes.
* Fix race conditions handling selection clear events on HaikuPo Lu2022-07-091-1/+9
| | | | | | | | | | | | * src/haiku_select.cc (be_handle_clipboard_changed_message): Include current clipboard count. (be_selection_outdated_p): New function. * src/haikuselect.c (haiku_handle_selection_clear): Ignore outdated events. (haiku_selection_disowned): New argument `count'. Include it in the timestamp field of the selection clear event. * src/haikuselect.h: Update prototypes. * src/systime.h: Define `Time' to an appropriate value on Haiku.
* Fix redisplay after running selection hook on HaikuPo Lu2022-07-091-0/+4
| | | | | * src/haikuselect.c (haiku_handle_selection_clear): Call redisplay_preserve_echo_area.
* Port `x-lost-selection-functions' to HaikuPo Lu2022-07-071-0/+51
| | | | | | | | | | | | | | | | | | | | | | | | | | | * src/haiku_io.c (haiku_len): Add `CLIPBOARD_CHANGED_EVENT'. * src/haiku_select.cc (be_update_clipboard_count): Set ownership flags. (be_handle_clipboard_changed_message): (be_start_watching_selection): New functions. * src/haiku_support.cc (class Emacs): Handle B_CLIPBOARD_CHANGED. * src/haiku_support.h (enum haiku_event_type): New event `CLIPBOARD_CHANGED_EVENT'. (struct haiku_clipboard_changed_event): New struct. * src/haikuselect.c (haiku_handle_selection_clear) (haiku_selection_disowned, haiku_start_watching_selections): New functions. (syms_of_haikuselect): New defsym and defvar. * src/haikuselect.h: Update prototypes. * src/haikuterm.c (haiku_read_socket): Handle selection events. (haiku_term_init): Start watching selections. * src/haikuterm.h: Update prototypes. * src/keyboard.c (kbd_buffer_get_event, process_special_events) (mark_kboards): Handle SELECTON_CLEAR_EVENTs correctly on Haiku.
* Automatically detect cyclic lists in some Haiku functionsPo Lu2022-06-281-5/+5
| | | | | * src/haikuselect.c (haiku_lisp_to_message): Use FOR_EACH_TAIL to iterate over message data.
* Remove unused Haiku codePo Lu2022-06-181-0/+6
| | | | | | | | | | * src/haiku_select.cc (be_get_clipboard_targets_1) (be_get_clipboard_targets): Delete functions. (init_haiku_select): Rename to `be_clipboard_init'. Avoid duplicate definition with haikuterm.h. * src/haikuselect.c (init_haiku_select): New function. * src/haikuselect.h: Update prototypes.
* Fix type mixup in haikuselect.cPo Lu2022-06-181-1/+1
| | | | | * src/haikuselect.c (haiku_lisp_to_message): Fix variable mixup. Found with --enable-check-lisp-object-type.
* Fix some drag-and-drop handling on HaikuPo Lu2022-06-111-5/+8
| | | | | | | | | | * 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.
* * src/haikuselect.c (haiku_note_drag_motion): Only handle visible tip_f.Po Lu2022-06-101-1/+1
|
* Implement `follow-tooltip' for DND on HaikuPo Lu2022-06-091-3/+74
| | | | | | | | | | | | | | | | | * 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.
* Fix `gui-backend-selection-owner-p' on HaikuPo Lu2022-05-231-8/+5
| | | | | | | | | | | | | * src/haiku_select.cc (be_update_clipboard_count): New function. (be_set_clipboard_data): Update clipboard counts. (BClipboard_owns_clipboard, clipboard_owner_p) (BClipboard_owns_primary, primary_owner_p) (BClipboard_owns_secondary, secondary_owner_p): Rename functions somewhat. (be_clipboard_owner_p): New function. * src/haikuselect.c (Fhaiku_selection_put) (Fhaiku_selection_owner_p): Update selection counts as well. * src/haikuselect.h: Update prototypes.
* Implement more data type conversions for Haiku selectionsPo Lu2022-05-201-1/+52
| | | | | | | | * src/haikuselect.c (haiku_message_to_lisp): (lisp_to_type_code): (haiku_lisp_to_message): (Fhaiku_drag_message): Recognize `double' and `float' types. (syms_of_haikuselect): New defsyms.
* Improve error checking in `haiku-roster-launch'Po Lu2022-05-161-1/+8
| | | | | * src/haikuselect.c (Fhaiku_roster_launch): Signal error if FILE-OR-TYPE doesn't exist or ARGS does not apply.
* Improve return value of `haiku-roster-launch'Po Lu2022-05-151-2/+11
| | | | | | | * src/haikuselect.c (Fhaiku_roster_launch): Return `already-running' if no PID is available since the target application is already running. (syms_of_haikuselect): New defsym.
* Simplify Haiku selection codePo Lu2022-05-101-50/+25
| | | | | | | | | | | | | | | | | | | | | | | | | * src/haiku_select.cc (get_clipboard_object): New function. (BClipboard_find_data, BClipboard_get_targets, BClipboard_set_data) (BClipboard_find_system_data) (BClipboard_find_primary_selection_data) (BClipboard_find_secondary_selection_data) (BClipboard_set_system_data, BClipboard_set_primary_selection_data) (BClipboard_set_secondary_selection_data, BClipboard_free_data) (BClipboard_system_targets, BClipboard_primary_targets) (BClipboard_secondary_targets): Delete functions. (be_find_clipboard_data_1, be_set_clipboard_data_1) (be_get_clipboard_targets_1, be_find_clipboard_data) (be_set_clipboard_data, be_get_clipboard_targets): New functions. (be_lock_clipboard_message, be_unlock_clipboard): Use `get_clipboard_object' to get clipboard from ID. * src/haikuselect.c (haiku_get_clipboard_name): New function. (Fhaiku_selection_data, Fhaiku_selection_put) (Fhaiku_selection_owner_p): Adjust to use new simplified functions. * src/haikuselect.h: Update prototypes.
* Fix file-based launching on HaikuPo Lu2022-05-091-2/+3
| | | | | * src/haikuselect.c (Fhaiku_roster_launch): Canonicalize file names before using them.
* Use default external browser by default on HaikuPo Lu2022-05-091-2/+85
| | | | | | | | | | | | | * lisp/net/browse-url.el (browse-url-default-browser): Use that by default on Haiku. (browse-url-default-haiku-browser): New function. * src/haiku_support.cc (be_roster_launch): * src/haiku_support.h: New function. Update prototypes. * src/haikuselect.c (haiku_message_to_lisp): Encode and decode files correctly. (haiku_lisp_to_message): Encode and decode files correctly. (Fhaiku_roster_launch): New function. (syms_of_haikuselect): Update defsubrs.
* Improve safety of haiku-drag-messagePo Lu2022-04-061-0/+10
| | | | | | | | | | | | | | | | | * lisp/term/haiku-win.el (haiku-drag-and-drop): Ignore placeholder message. * src/frame.c (delete_frame): Prevent deleting drop source frame on Haiku. * src/haiku_support.cc (RELEASE_NOW, CANCEL_DROP): New message types. (class EmacsView, MessageReceived): Handle new message types. (be_drag_message): Drag CANCEL_DROP message on quit; also send RELEASE_NOW to view if quitting. * src/haikuselect.c (syms_of_haikuselect) (haiku_unwind_drag_message): Clear new frame variable. (Fhaiku_drag_message): Set new frame variable. * src/haikuterm.h: Update prototypes.
* Respect new DND options when dragging to ourselves on HaikuPo Lu2022-04-051-0/+28
| | | | | | | | | | | | | | | * lisp/mouse.el (mouse-drag-and-drop-region): Allow dragging to the current frame if we know `return-frame' doesn't work. * lisp/term/haiku-win.el (haiku-dnd-drag-handler): New function. * src/haiku_support.cc (MouseMoved): Don't send drag motion events for the drag frame. * src/haikuselect.c (haiku_note_drag_motion_1) (haiku_note_drag_motion_2, haiku_note_drag_motion): New functions. (syms_of_haikuselect): New variable `haiku-drag-track-function'. * src/haikuterm.c (haiku_read_socket): Note mouse motion in that case.q * src/haikuterm.h: Update prototypes.
* Simplify Haiku drag-and-drop implementationPo Lu2022-04-011-3/+0
| | | | | | | | | | | * lisp/term/haiku-win.el (x-begin-drag): Bind `mouse-highlight' to nil. * src/haikuselect.c (haiku_unwind_drag_message) (Fhaiku_drag_message): * src/haikuterm.h (HAVE_CHAR_CACHE_MAX): * src/xdisp.c (note_mouse_highlight): Delete `haiku_dnd_in_progress' variable.
* Ignore mouse movement correctly on Haiku during drag and dropPo Lu2022-03-301-1/+10
| | | | | | | | | | * src/haikuselect.c (haiku_unwind_drag_message): New function. (Fhaiku_drag_message): Set `haiku_dnd_in_progress' to false. * src/haikuterm.c (haiku_read_socket): Fix overriding of need_flush when reading events from multiple frames. * src/haikuterm.h (haiku_dnd_in_progress): New variable. * src/xdisp.c (note_mouse_highlight): Ignore if said variable is true.
* Prevent signals when dragging nonexistent files on HaikuPo Lu2022-03-301-1/+8
| | | | | | | | | | * lisp/term/haiku-win.el (x-begin-drag): Bind `haiku-signal-invalid-refs' to nil. * src/haiku_support.cc (MouseMoved): Send motion events while dragging as well. * src/haikuselect.c (haiku_lisp_to_message): Respect new variable. (syms_of_haikuselect): New variable `haiku-signal-invalid-refs'.
* Specially decode more selection types on HaikuPo Lu2022-03-291-22/+127
| | | | | | | | | | | * src/haiku_select.cc (be_get_point_data, be_add_point_data): New functions. * src/haikuselect.c (haiku_message_to_lisp, lisp_to_type_code) (haiku_lisp_to_message): Accept new types `size_t', `ssize_t' and `point'. (Fhaiku_drag_message): Update doc string. (syms_of_haikuselect): New defsyms. * src/haikuselect.h: Update prototypes.
* Minor fixes to Haiku selection supportPo Lu2022-03-281-1/+1
| | | | | | | | | * lisp/term/haiku-win.el (haiku-selection-bounds): New function. (haiku-dnd-convert-string, haiku-select-encode-xstring) (haiku-select-encode-utf-8-string): Handle position pairs correctly. (gui-backend-set-selection): Adjust for new airity. * src/haikuselect.c (Fhaiku_selection_put): Fix arity.
* Store latin-1 content into the Haiku clipboard as wellPo Lu2022-03-271-7/+49
| | | | | | | | | | | | | | | | | | | | | | | * lisp/term/haiku-win.el (haiku-normal-selection-encoders): New variable. (haiku-select-encode-utf-8-string, haiku-select-encode-xstring): New functions. (gui-backend-set-selection): Use new selection encoder functions instead of hard-coding UTF-8. (haiku-dnd-handle-drag-n-drop-event): Rename to `haiku-drag-and-drop'. * src/haiku_select.cc (be_lock_clipboard_message): Accept new argument `clear'. (be_unlock_clipboard): Accept new argument `discard'. * src/haikuselect.c (Fhaiku_selection_data): Change calls to `be_lock_clipboard_message' and `be_unlock_clipboard'. (haiku_unwind_clipboard_lock): New function. (Fhaiku_selection_put): Accept new meaning of `name' which means to set the selection message. * src/haikuselect.h: Update prototypes.
* Implement new drag and drop parameter on HaikuPo Lu2022-03-251-3/+7
| | | | | | | | | | * lisp/term/haiku-win.el (x-begin-drag): Implement `allow-current-frame'. * src/haiku_support.cc (be_drag_message): New argument `allow_same_view'. * src/haiku_support.h: Update prototypes. * src/haikuselect.c (Fhaiku_drag_message): New parameter `allow-same-frame'.
* Improvements to Haiku selection handlingPo Lu2022-03-231-43/+84
| | | | | | | | | | | | | | | | | | | | * lisp/term/haiku-win.el (haiku-selection-targets): Implement in Lisp. * src/haiku_select.cc (be_get_message_type): (be_set_message_type): (be_get_message_message): (be_add_message_message): New functions. * src/haiku_support.cc (MessageReceived): Fix typo. * src/haikuselect.c (haiku_selection_data_1) (Fhaiku_selection_targets): Delete functions. (haiku_message_to_lisp, lisp_to_type_code) (haiku_lisp_to_message): Correctly decode and encode nested messages, and fix encoding specially decoded types via numeric names. Also store and decode message types inside Lisp messages. (Fhaiku_drag_message): Update doc string. (syms_of_haikuselect): Update subrs. * src/haikuselect.h: Update prototypes.
* Allow retrieving some more kinds of clipboard data on HaikuPo Lu2022-03-231-26/+59
| | | | | | | | | | | * src/haiku_select.cc (BClipboard_find_data): Handle NULL characters inside data correctly. (be_lock_clipboard_message, be_unlock_clipboard): New functions. * src/haikuselect.c (Fhaiku_selection_data): Return entire clipboard contents as a message when clipboard is NULL. (haiku_lisp_to_message): Allow quitting when iterating through potentially large or circular lists. * src/haikuselect.h (enum haiku_clipboard): New enum.
* Fix crash in haiku_message_to_lispPo Lu2022-03-231-0/+3
| | | | | * src/haikuselect.c (haiku_message_to_lisp): Block input around `free'.
* Minor fixes to Haiku DND supportPo Lu2022-03-211-3/+14
| | | | | | | | | | * src/haiku_support.cc (MessageReceived): If source is remote, don't test window ID. (MouseMoved): Don't send mouse motion if dragging. (be_drag_message): Return true if quit-flag. * src/haiku_support.h: Update prototypes. * src/haikuselect.c (haiku_should_quit_drag): New function. (Fhaiku_drag_message): If rc is true, quit.
* Implement drag-and-drop of files on HaikuPo Lu2022-03-181-18/+37
| | | | | | | | | | | * lisp/term/haiku-win.el (haiku-dnd-selection-converters): Add new selection converter. (haiku-dnd-convert-uri-list): New function. (x-begin-drag): Allow selection converters to change message field type. * src/haikuselect.c (haiku_lisp_to_message): Perform more error checking.
* Allow dragging messages with file names on HaikuPo Lu2022-03-181-1/+4
| | | | | | | * src/haiku_select.cc (be_add_refs_data): New function. * src/haikuselect.c (haiku_lisp_to_message): Handle `ref' type correctly. * src/haikuselect.h: Update prototypes.
* * src/haikuselect.c (Fhaiku_drag_message): Clear display grab after drag ends.Po Lu2022-03-171-0/+1
|
* Implement cross-program drag-and-drop on HaikuPo Lu2022-03-171-4/+220
| | | | | | | | | | | | | | | | | | | | | | | | | | * doc/lispref/frames.texi (Drag and Drop): Fix documentation of `x-begin-drag' to match actual function arity. * lisp/term/haiku-win.el (haiku-dnd-selection-value): New variable. (haiku-dnd-selection-converters): New variable. (haiku-dnd-convert-string): New function. (gui-backend-get-selection, gui-backend-set-selection): Handle XdndSelection specially. (x-begin-drag): New function. * src/haiku_select.cc (be_create_simple_message) (be_add_message_data): New functions. * src/haiku_support.cc (WAIT_FOR_RELEASE): New message type. (class EmacsView, MouseUp): If waiting for release, reply and drop event. (be_drag_message, be_drag_message_thread_entry): New functions. * src/haiku_support.h: Update prototypes. * src/haikuselect.c (lisp_to_type_code, haiku_lisp_to_message) (Fhaiku_drag_message): New functions. (syms_of_haikuselect): Define new subr. * src/haikuselect.h: Update prototypes.
* Redo Haiku DND supportPo Lu2022-03-161-0/+140
| | | | | | | | | | | | | | | | | | | | | * lisp/term/haiku-win.el (haiku-dnd-handle-drag-n-drop-event): Update for new DND event format. * src/haiku_io.c (haiku_len): Handle DRAG_AND_DROP_EVENTs. * src/haiku_select.cc (be_enum_message, be_get_refs_data) (be_get_message_data): New function. * src/haiku_support.cc (class Emacs): Remove `RefsReceived'. (MessageReceived): Generate new kind of drag-n-drop events. * src/haiku_support.h (enum haiku_event_type): Rename `REFS_EVENT' to `DRAG_AND_DROP_EVENT'. (struct haiku_refs_event): Delete struct. (struct haiku_drag_and_drop_event): New struct. * src/haikuselect.c (haiku_message_to_lisp): New function. (syms_of_haikuselect): New symbols. * src/haikuselect.h: Update prototypes. * src/haikuterm.c (haiku_read_socket): Handle new type of drag-and-drop events by serializing drop message to Lisp and letting Lisp code do the processing. * src/haikuterm.h: Update prototypes.
* Improve Haiku selection handlingPo Lu2022-02-141-24/+7
| | | | | | | | | | | | * lisp/select.el (gui--selection-value-internal): Use X types on Haiku as well. * lisp/term/haiku-win.el (haiku--selection-type-to-mime): Update types to correspond better with X. * src/haikuselect.c (Fhaiku_selection_data): (Fhaiku_selection_put): Remove a great deal of ad hoc code now handled by the regular selection machinery.
* Implement selection ownership on HaikuPo Lu2022-01-201-0/+31
| | | | | | | | | | | | | | | | | | | | | | * 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.
* * src/haikuselect.c: Fix implicit declaration of free.Po Lu2022-01-071-0/+2
|
* ; Add 2022 to copyright years.Eli Zaretskii2022-01-011-1/+1
|