Commit Graph

17931 Commits

Author SHA1 Message Date
mcrmck
412cd30cd2 Fix synthetic '+' tab rendering and make it always-visible as a new-tab button
- Skip user tab_title_template for synthetic tabs (tab_id < 0) so custom
  templates referencing layout_name no longer produce '? +' during drags
- Always append the '+' drop indicator to tab_bar_data (not only during
  window drags), making it a persistent clickable new-tab button
- Handle click on the '+' tab (tab_id == -1) in the tab bar mouse handler
  by calling new_tab() on left-button release
2026-03-22 13:06:30 -04:00
Kovid Goyal
e9661f0f3a Graphics protocol: Fix crash when handling invalid offset values in graphics compose commands 2026-03-22 21:49:12 +05:30
Kovid Goyal
f7626c7472 Update copilot instructions 2026-03-22 07:57:47 +05:30
Kovid Goyal
46eee6e5df Update changelog 2026-03-22 07:54:51 +05:30
copilot-swe-agent[bot]
9b9bfeb02d Fix XI_BadDevice crash on USB device disconnect (#9723)
When a USB HID device (keyboard/mouse) is disconnected, X11 fires an
XI_HierarchyChanged event, which triggers read_xi_scroll_devices().
That function calls XIGetProperty() on devices from XIQueryDevice().
There is a race condition: if a device is removed between these calls,
X11 generates an XI_BadDevice error. Without a custom error handler, the
default X11 handler calls exit(), killing kitty.

Fix: wrap the device query loop in read_xi_scroll_devices() with
_glfwGrabErrorHandlerX11() / _glfwReleaseErrorHandlerX11() so that any
XI_BadDevice error is captured by kitty's own handler rather than the
default fatal one.

Fixes #9723
Fixes #9724
2026-03-22 07:52:49 +05:30
Kovid Goyal
07099b3a3d Add a reminder about cloning shell envs being unsafe 2026-03-22 07:36:55 +05:30
Kovid Goyal
48ab623f59 Graphics protocol: Fix crash when handling invalid PNG image with direct transmission 2026-03-21 17:23:06 +05:30
Kovid Goyal
bd2a5cccfb More work on dnd protocol 2026-03-21 17:13:19 +05:30
Kovid Goyal
6a71687942 Apply same correction for mid_lines() based chars as well
Also update changelog
2026-03-21 12:09:05 +05:30
copilot-swe-agent[bot]
b7d18d512e Fix diagonal line visual thickness in cross_line and half_cross_line
Fixes #9719
Fixes #9721
2026-03-21 12:04:43 +05:30
Kovid Goyal
b4005d0e97 Fix drop on clients. data should be requested only after the client actually requests it not on return from drop event callback 2026-03-21 09:06:24 +05:30
Kovid Goyal
59117ff5fd ... 2026-03-21 08:41:48 +05:30
Kovid Goyal
59cb8eb201 Fix offered mimes only being sent once 2026-03-21 08:41:48 +05:30
Kovid Goyal
bdd35ba84f Only send the i client id key when needed 2026-03-21 08:41:48 +05:30
Kovid Goyal
32d0d23f24 ... 2026-03-21 08:41:48 +05:30
Kovid Goyal
27ad4bc070 Fix some more misc bugs in the DnD code 2026-03-21 08:41:48 +05:30
Kovid Goyal
78d474fee3 Dont have empty m key when no payload is present 2026-03-21 08:41:47 +05:30
Kovid Goyal
1704d27004 ... 2026-03-21 08:41:47 +05:30
Kovid Goyal
eddaaed3e3 Modernize Go code 2026-03-21 08:41:47 +05:30
copilot-swe-agent[bot]
3d13cf1ca5 Fix three bugs in mouse demo kitten DnD drop handling
Fixes #9631
2026-03-21 08:41:47 +05:30
Kovid Goyal
3b17bf0b1a ... 2026-03-21 08:41:47 +05:30
copilot-swe-agent[bot]
e55c4468e5 Fix Too many timers bug and snprintf format string bug in DnD protocol
Fixes #9628
2026-03-21 08:41:47 +05:30
copilot-swe-agent[bot]
9ee058eaf9 Initial implementation of drop client in mouse_demo
Fixes #9623
2026-03-21 08:41:47 +05:30
Kovid Goyal
67b706ff71 Make DND code constant available to kittens 2026-03-21 08:41:47 +05:30
Kovid Goyal
b4d57525ea Only base64 encode payload when needed 2026-03-21 08:41:47 +05:30
Kovid Goyal
17e941a180 Implement finishing of drops 2026-03-21 08:41:47 +05:30
Kovid Goyal
5ad55ec936 Implement drop data transmission 2026-03-21 08:41:47 +05:30
Kovid Goyal
4f404f8c85 Send dropped message 2026-03-21 08:41:47 +05:30
Kovid Goyal
3a30c47942 Get drop status updates working 2026-03-21 08:41:47 +05:30
Kovid Goyal
111b35b6a7 Implement drop leaving window 2026-03-21 08:41:47 +05:30
Kovid Goyal
fba67322d6 Some docs 2026-03-21 08:41:47 +05:30
Kovid Goyal
b0e57b4dce Send drop move events to child 2026-03-21 08:41:46 +05:30
Kovid Goyal
8d069d3bcd More dnd protocol docs 2026-03-21 08:41:46 +05:30
Kovid Goyal
5a8132d241 Start and stop accepting drops 2026-03-21 08:41:46 +05:30
Kovid Goyal
2898324047 Start work on DnD protocol 2026-03-21 08:41:46 +05:30
Kovid Goyal
4483a6c110 version 0.46.2 v0.46.2 2026-03-21 06:36:04 +05:30
mcrmck
b8da1d285f Add '+' tab indicator when dragging a window over empty tab bar space
Appends a synthetic TabBarData(tab_id=-1, title='+') to tab_bar_data
while a window drag is active. The existing tab highlight machinery
(_set_drag_target_tab / mark_tab_bar_dirty) handles hover highlighting
with no extra state. Dropping on it falls through the existing new-tab
branch in on_window_drop (tab_for_id(-1) returns None). Mark tab bar
dirty at drag start so the indicator appears immediately, and again
after set_window_being_dragged() on drop so it clears right away.
2026-03-20 20:48:10 -04:00
mcrmck
8dd4aaf111 Remove debug logging; clean up on_window_drop clear ordering 2026-03-20 01:37:19 -04:00
mcrmck
5c0a4accb3 Fix two bugs: splits layout corruption and overlay stuck on early drop exit
splits.py: insert_window_next_to called split_and_add on self.pairs_root
instead of on the pair found by pair_for_window. split_and_add only handles
direct children, so nested dest windows fell to 'else: self.two = pair',
silently replacing an entire subtree. Lost windows were re-added by
do_layout, producing phantom panes.

tabs.py: on_window_drop returned early (window not found) before calling
_clear_force_show_title_bars, leaving the drag overlay stuck on screen.
2026-03-20 01:34:01 -04:00
mcrmck
940b8bf1d3 Fix drag overlay: separate title bar highlight from body hover overlay
quadrant=5: title bar hover — full window overlay + title bar highlight
quadrant=6: body hover (non-Splits) — full window overlay only
quadrant=1-4: Splits body hover — directional half-window overlay

Previously quadrant=5 was used for all full-window cases, causing
is_drag_target=True to fire on body hover which incorrectly lit up
the title bar highlight whenever hovering any window body.
2026-03-20 01:23:23 -04:00
mcrmck
2bf4da9724 Fix: full-window overlay for title bar hover in Splits layout 2026-03-20 01:16:59 -04:00
Kovid Goyal
c57305addc Ignore dependency CVEs against unreleased versions of deps 2026-03-20 10:45:08 +05:30
Kovid Goyal
81c3fa71a0 Update changelog 2026-03-20 08:32:26 +05:30
copilot-swe-agent[bot]
7c79e2fc9e Fix text selection via click-and-drag in unfocused splits
The regression was introduced by commit b277a016b which added an early
`return` in handle_button_event that prevented kitty's internal text
selection from starting on focus-transfer clicks to unfocused splits.

Changes:
- In handle_button_event: replace the early return with a local
  suppress_child_forwarding flag that prevents PRESS from being forwarded
  to child processes in mouse-tracking mode, while still allowing
  dispatch_mouse_event to run (which starts text selection)
- In mouse_event's active_drag_in_window release path: clear
  suppress_left_mouse_release to prevent stale flags after drags

Fixes #9713
Fixes #9715
2026-03-20 08:30:53 +05:30
copilot-swe-agent[bot]
ef7b456ce7 Fix scroll valuator reset when mouse leaves window without focus change
Fixes #9716
2026-03-20 08:13:45 +05:30
Kovid Goyal
98bf76ab52 Merge branch 'master' of https://github.com/kdnk/kitty 2026-03-19 19:59:54 +05:30
Kodai Nakamura
7e62808fb7 fix: Use strict modifier check for Ctrl+H IME unmarking
Refine the check to mods == GLFW_MOD_CONTROL to ensure that
combinations like Ctrl+Shift+H do not trigger unmarkText, following
code review feedback.
2026-03-19 23:21:34 +09:00
Kodai Nakamura
2c4b6d6d8e cocoa: Unmark IME pre-edit text on Ctrl+H
This ensures that Ctrl+H behaves like Backspace and correctly clears
the pre-edit state, preventing uncommitted characters from remaining
on the screen when using IMEs like the Japanese one on macOS.
2026-03-19 23:06:09 +09:00
Kovid Goyal
4eaf380c30 Update changelog 2026-03-19 15:36:02 +05:30
copilot-swe-agent[bot]
d37a9fd48a Fix marker highlighting for CJK/wide chars not at position 0
Fixes #9705
Fixes #9706
2026-03-19 15:35:14 +05:30