Max Brunsfeld
0b81a4dfae
Call methods on the focused view during input events
2022-07-20 16:44:26 -07:00
Max Brunsfeld
1b0e93b153
Change interpretation of marked_text and edit when handling input
...
Co-authored-by: Antonio Scandurra <antonio@zed.dev
2022-07-20 09:53:49 -07:00
Antonio Scandurra
42ac4bf9fc
WIP
2022-07-20 18:06:29 +02:00
Antonio Scandurra
2ea0b89e7c
WIP
2022-07-20 15:07:09 +02:00
Keith Simmons
c2868a39e8
Merge pull request #1388 from zed-industries/mouse-region-refactor
...
Mouse Region Refactor
2022-07-19 16:50:12 -07:00
Antonio Scandurra
7757fbe241
Implement NSTextInputClient
protocol on window using no-ops
2022-07-19 14:52:02 +02:00
Antonio Scandurra
456a390166
Add character palette menu item
2022-07-19 14:51:57 +02:00
Max Brunsfeld
7998771d9f
Avoid panic when unable to access a GPU
...
This will remove noise from our panic logs.
Co-authored-by: Nathan Sobo <nathan@zed.dev>
2022-07-18 14:13:12 -07:00
K Simmons
8add81350e
Rework presenter and MouseRegion to use Handler hashmap rather than individual fields
2022-07-17 23:19:32 -07:00
Antonio Scandurra
8e2e5b5cf0
Don't borrow window state mutably until we need to invoke resize callback
2022-07-13 10:38:34 +02:00
Antonio Scandurra
c53fa4941a
Ensure no borrows are held when activating window or creating prompts
2022-07-13 10:37:55 +02:00
Antonio Scandurra
d4e0f73ffe
Drop window borrow before calling makeKeyAndOrderFront
...
We're seeing some stack traces where calling `makeKeyAndOrderFront`
could invoke `setFrameSize`, which is causing a double borrow.
2022-07-13 10:19:46 +02:00
Keith Simmons
8d34fe7e94
Refactor terminal connection into a model which can be copied between terminal views
...
Refactor terminal modal code to use TerminalConnection model handle so we aren't storing TerminalViews in the globals
Adjust INSTANCE_BUFFER_SIZE in renderer to handle pathological terminal renders
Co-authored-by: mikayla.c.maki@gmail.com
2022-07-08 16:10:09 -07:00
Keith Simmons
c139f1e6b6
combine branches of events in from_native
2022-07-06 16:59:58 -07:00
Keith Simmons
bcb553f233
Combine platform mouse events to use common MouseEvent struct and remove MouseDragged event in favor of MouseMoved
2022-07-06 16:37:56 -07:00
Keith Simmons
686e57373b
pull event data out into individual Event structs
2022-07-06 15:36:42 -07:00
Antonio Scandurra
d43e8b270a
Add unit test for ViewContext::observe_window_activation
2022-07-05 17:51:01 +02:00
Max Brunsfeld
6f49f4a9cf
Recalculate Metal layer's drawable size when window's scale factor changes
2022-07-04 15:14:08 -07:00
Antonio Scandurra
9a6092dd1b
Support hitting enter on numpad
2022-07-04 10:01:56 +02:00
Keith Simmons
92ab107fc9
working jump to definition with tests
2022-06-24 15:09:31 -07:00
Keith Simmons
848445455d
Working underline based on symbol origin
2022-06-24 15:05:35 -07:00
Antonio Scandurra
2dae0ddcdb
Add test to verify closing window via the mouse
2022-06-23 14:18:53 +02:00
Antonio Scandurra
06033d7fa9
Introduce ViewContext::on_window_should_close
...
This is a new callback that can be used to interrupt closing the window
when the user has unsaved changes.
2022-06-23 11:43:19 +02:00
Antonio Scandurra
ca8ddcdeec
Set window's edited = true
when there are unsaved changes
2022-06-23 10:59:50 +02:00
Antonio Scandurra
a35d7c5e15
Use BOOL
instead of Rust booleans in handle_key_equivalent
2022-06-17 17:19:18 +02:00
Antonio Scandurra
8f6d081de8
Override performKeyEquivalent
to handle key events
...
This lets us bypass the application menu and invoke the event handler
in Zed first. If that doesn't handle the event, the application menu
item corresponding to the shortcut will be actioned. Prior to this
commit the opposite would happen, which would dramatically limit the
throughput at which we could handle events.
2022-06-17 17:12:56 +02:00
Antonio Scandurra
607903eed5
Return true in the Window::on_event
callback if event was handled
2022-06-17 17:09:16 +02:00
Max Brunsfeld
a3b17ffd15
Allow creating application menus with submenus
2022-06-16 17:47:39 -07:00
Antonio Scandurra
22dd68fbfb
Add keystroke for menu item only when action is equal to binding
...
This fixes a bug where we would show `cmd-e` instead of `cmd-f` for
`Edit -> Find` because both bindings would have the `buffer_search::Deploy`
action and we were mistakenly selecting the former.
2022-06-06 09:26:33 +02:00
Antonio Scandurra
20e1044d49
Merge branch 'main' into project-panel-with-new-mouse-events
2022-05-30 18:29:46 +02:00
Max Brunsfeld
04bd57b2c7
Add an API for setting a window's title
...
This controls how the window appears in the Window menu.
2022-05-27 10:45:55 -07:00
Nathan Sobo
b110fd5fb7
Render a context menu when right-clicking in project panel
...
It doesn't currently do anything, but I managed to get it rendering in an absolutely positioned way.
2022-05-26 09:59:25 +02:00
Max Brunsfeld
fbd589b589
Start work on handling multibuffers properly when closing unsaved buffers
2022-05-22 16:48:33 -07:00
Max Brunsfeld
b72d97ce78
Disable menu item key equivalents while there are pending keystrokes
2022-05-20 10:04:43 -07:00
Max Brunsfeld
21862faa58
Convert function keys to the correct macOS codes for menu items
2022-05-19 17:37:46 -07:00
Max Brunsfeld
ea85473f4f
Enable and disable application menu items based on the active view
2022-05-19 16:50:40 -07:00
Max Brunsfeld
7445197f4d
Derive application menu key equivalents from the keymap
2022-05-19 10:04:01 -07:00
Max Brunsfeld
8445eaab85
Fix crash when emptying atlases
...
Previously, when an atlas was emptied, we would move it into a different
vector: free_atlases. This removal could cause existing atlas ids to
refer to the wrong atlases.
2022-05-05 17:52:47 -07:00
Antonio Scandurra
61346f734d
WIP
2022-05-05 15:15:58 +02:00
Antonio Scandurra
7ec5c04fdf
Correctly alpha-blend border and background in quad SDF
2022-04-28 13:54:18 +02:00
Max Brunsfeld
e8d263274c
Remove duplication between windowDid{Become,Resign}Key callbacks
2022-04-22 15:06:50 -07:00
Max Brunsfeld
6b9e93ac6d
Fix double-borrow crash by calling window activated callback asynchronously
2022-04-22 15:01:19 -07:00
Max Brunsfeld
7f64076f8d
Focus/blur views when application windows become active/inactive
2022-04-22 14:18:50 -07:00
Nathan Sobo
92f040df00
Apply cursor styles during paint
...
This makes the editor's cursor an IBeam and properly deals with nested cursor styles.
Co-Authored-By: Antonio Scandurra <me@as-cii.com>
2022-04-22 10:54:18 -06:00
Antonio Scandurra
fb87bacc7e
Merge branch 'main' into auto-update
2022-04-21 09:53:06 +02:00
Antonio Scandurra
a210b05d00
Remove App::on_open_files
, as it's a subset of on_open_urls
...
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2022-04-20 17:36:27 +02:00
Max Brunsfeld
fbd1afc51f
Add a command for installing the CLI
2022-04-20 17:27:33 +02:00
Nathan Sobo
75f0326e54
Use ipc_channel crate to communicate between cli and app
...
We still aren't handling CLI requests in the app, but this lays the foundation for bi-directional communication.
Co-Authored-By: Max Brunsfeld <maxbrunsfeld@gmail.com>
2022-04-20 17:15:46 +02:00
Antonio Scandurra
01eb2dce24
WIP: Start on a new cli
crate
...
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2022-04-20 17:15:45 +02:00
Keith Simmons
4b55b578b2
Don't panic when allocating tiny_skia pixmap
2022-04-13 14:57:16 -07:00
Antonio Scandurra
8e89074714
Reduce allocations when caching fonts
...
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2022-04-13 19:06:34 +02:00
Antonio Scandurra
cdcdccfb89
Render emojis
...
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2022-04-13 17:31:10 +02:00
Antonio Scandurra
fff1d9c631
Implement glyph scaling in a way that works with emojis as well
2022-04-13 15:56:32 +02:00
Keith Simmons
4249b5687e
Implement font fallback in layout_line
...
Co-authored-by: Max Brunsfeld <max@zed.dev>
2022-04-13 11:42:19 +02:00
Antonio Scandurra
6cc9306f00
Make room for font subpixel variants correctly
2022-04-13 11:36:54 +02:00
Antonio Scandurra
6b629dfa5c
Use CTFont::draw_glyphs
to rasterize glyphs
...
This API supports rendering emojis in addition to normal glyphs.
2022-04-12 19:37:26 +02:00
Keith Simmons
0ca4c9946a
Add logging when atlas allocator fails to allocate
2022-04-11 10:31:38 -07:00
Keith Simmons
7abd3a98a8
Make atlas allocation fallable and skip rendering icons and paths when it fails
2022-04-11 10:15:49 -07:00
Max Brunsfeld
5242a3a6dc
Restructure action macro to assign a namespace to every action
...
Also, allow arbitrary types to be used as Actions via the impl_actions macro
Co-authored-by: Nathan Sobo <nathan@zed.dev>
Co-authored-by: Keith Simmons <keith@zed.dev>
2022-04-07 16:20:49 -07:00
Nathan Sobo
0214bec7f4
Don't dispatch events to flex children outside of parent flex's bounds
2022-04-06 10:59:03 -06:00
Nathan Sobo
aeb0b42c7a
Report more information when we panic due to an allocation failure
2022-04-05 13:53:13 -06:00
Antonio Scandurra
61c479ebc8
Pass an NSString
to objectForInfoDictionaryKey
2022-04-05 10:02:37 +02:00
Max Brunsfeld
e566a8335f
Find path to running app using [NSBundle bundlePath]
2022-04-04 20:53:46 -07:00
Nathan Sobo
66544d54f2
Drop borrow to window state before calling beginSheetModalForWindow
...
Co-Authored-By: Keith Simmons <keith@the-simmons.net>
2022-04-04 16:18:28 -06:00
Antonio Scandurra
38e902b241
WIP: Start on auto-update
...
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
Co-Authored-By: Max Brunsfeld <max@zed.dev>
Co-Authored-By: Keith Simmons <keith@zed.dev>
2022-04-04 18:59:57 +02:00
Antonio Scandurra
dee416bdbe
Avoid text insertion when holding down the fn
key
2022-04-04 11:13:35 +02:00
Antonio Scandurra
f69bd0e327
Snap icon sprites to pixel grid
...
This should resolve some rendering artifacts potentially caused by
floating point errors when sampling the texture. It should also lead
to crisper images when icons are rendered midway through a pixel.
2022-03-28 11:52:13 +02:00
Antonio Scandurra
fbf7cdf4f2
Make all HighlightStyle
properties optional
...
Previously, some of those properties such the font weight, style and color
would be mandatory: when the theme didn't specify them, Zed would use a default
value during deserialization. This meant that those default properties would
unconditionally override the base text style, causing a rendering bug when
combining syntax highlights with diagnostic styles.
This commit fixes that by making `HighlightStyle`s more additive: each property
can be set independently and only the properties that theme specifies get
overridden in the base text style.
2022-03-15 10:39:43 +01:00
Keith Simmons
6ee0cceb14
Switch to using mouse navigation events instead of other in order to get rid of opaque button id
2022-03-09 15:04:04 -08:00
Keith Simmons
fc36c706d3
Add missing mouse button events and mouse history navigation
...
Co-Authored-By: Max Brunsfeld
Co-Authored-By: Nathan Sobo
2022-03-08 15:45:36 -08:00
Max Brunsfeld
5c1aff1143
Don't insert input into editors when control or command keys are held
...
This is a follow-up to #475
2022-03-02 14:09:46 -08:00
Antonio Scandurra
83a3402235
Make TestAppContext
and its dependencies available only in tests
...
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2022-03-01 17:01:52 +01:00
Nathan Sobo
618f0a127a
Don't insert input in editor when control keys are pressed
2022-02-21 18:21:27 -07:00
Max Brunsfeld
16acbd2123
Handle appkit's cancelOperation: message to allow binding cmd-.
2022-02-04 17:33:09 -08:00
Nathan Sobo
960696a504
Bind autocomplete to ctrl-space
...
Co-Authored-By: Antonio Scandurra <me@as-cii.com>
2022-01-31 11:34:19 -07:00
Antonio Scandurra
51c34ebcc2
Alpha-blend borders with backgrounds in quad SDF
...
Co-Authored-By: Max Brunsfeld <max@zed.dev>
2022-01-26 19:16:26 +01:00
Antonio Scandurra
dedd5d63fb
Fix blending of quad's border with background
...
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2022-01-26 17:06:20 +01:00
Antonio Scandurra
b9b255652f
Display squiggly underlines underneath text with diagnostics
...
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2022-01-26 15:52:40 +01:00
Antonio Scandurra
52594fe250
WIP: Start on squiggly underlines
2022-01-26 13:07:39 +01:00
Nathan Sobo
19751e9200
Merge remote-tracking branch 'origin/main' into go-to-definition
2022-01-21 11:12:38 -07:00
Nathan Sobo
fbca28337a
When opening a path in an existing window, move it to the foreground
2022-01-20 20:45:30 -07:00
Antonio Scandurra
634340dd84
Return a task from Workspace::save_active_item
...
This required changing our approach to OS prompts and this commit greatly
simplifies that. We now avoid passing a callback and return a simple future
instead. This lets callers spawn tasks to handle those futures.
2022-01-20 09:51:29 +01:00
Antonio Scandurra
45d1690f6e
Use 16-bit float to store path windings
...
Previously, we were using a normalized 8-bit unsigned integer which forced us
to represent each increment of the winding number as a fraction of the max
value (1 / 255) which we would then add up using additive alpha blending.
This had three major drawbacks:
- The max winding number could not be greater than 255.
- Adding up (1 / 255) several times could result in a loss of precision.
- Due to also computing anti-aliasing as a fractional winding number, we had to
reduce the max winding number to 32. This was still not good enough because
we would multiply a fractional value with `1 / 32`, thus introducing more and
more loss of precision.
This commit changes the texture type to an `f16` which doesn't require the
division by 255 and enables greater precision in the computation of the
anti-aliased parts of a curve. Note how this also removes the limitation of 255
windings at most per curve. The tradeoff is paying twice as much memory for
storing the texture, but that seems totally valid to achieve rendering accuracy.
Note that this kind of texture should be compatible with WebGL2 once we start
working on a web version of Zed.
2021-12-05 11:17:26 +01:00
Antonio Scandurra
d19d3bbe45
Calculate an overshoot when mousing to build columnar selections
2021-11-24 10:28:32 +01:00
Nathan Sobo
e0bf5337ca
Merge pull request #244 from zed-industries/mouse-selections
...
Improve support for selecting text via the mouse
2021-11-23 18:11:04 -07:00
Max Brunsfeld
294769be35
Add outdent command, fix indent bugs
2021-11-23 16:44:05 -08:00
Nathan Sobo
73afb29b04
Use alt modifier instead of cmd to add selections
2021-11-23 16:23:30 -07:00
Nathan Sobo
d969f38850
Implement shift-click to extend the newest selection
2021-11-23 15:42:21 -07:00
Max Brunsfeld
091ed9ab47
Maximize new windows
2021-11-23 10:24:31 -08:00
Antonio Scandurra
bcf38e6bb5
Implement word-wise mouse selection
...
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2021-11-23 18:50:17 +01:00
Antonio Scandurra
005a7076af
Expose a count
field on Event::LeftMouseDown
2021-11-23 16:18:17 +01:00
Max Brunsfeld
4002be882f
Clear sprite cache when scale factor changes
2021-11-22 16:47:51 -08:00
Max Brunsfeld
23fbeaf978
Include scale factor in glyph cache keys
2021-11-22 16:37:01 -08:00
Max Brunsfeld
0b63d882ce
Allow key bindings to F1 through F12
2021-11-18 14:23:36 -08:00
Max Brunsfeld
b8994c2a89
Add a facility for delaying quit until critical tasks finish
...
Co-Authored-By: Antonio Scandurra <me@as-cii.com>
2021-11-01 11:57:31 -07:00
Max Brunsfeld
4069db4959
Allow underlines to have different color than the text
...
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2021-10-26 12:46:46 -07:00
Antonio Scandurra
59ed535cdf
Implement a more robust way of locating rust-analyzer
...
When bundled, we will retrieve it out of the `Resources` folder.
Locally, we're expected to run `script/download-rust-analyzer` and
put `vendor/bin` in our $PATH.
2021-10-25 11:02:35 +02:00
Max Brunsfeld
94209d2b6d
Rename rpc_client -> client
...
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2021-10-04 17:14:21 -07:00
Nathan Sobo
fdfed3d7db
Move all crates to a top-level crates folder
...
Co-Authored-By: Max Brunsfeld <maxbrunsfeld@gmail.com>
2021-10-04 13:22:21 -06:00