Antonio Scandurra
74aa9c1320
Capture mouse events when rendering disconnected overlay
...
We do so by replacing `EventHandler::capture` with a new `::capture_all` method.
After switching to mouse regions as part of zed-industries/zed#1081 , overriding
`dispatch_event` on `EventHandler` wasn't enough anymore because mouse interactions
take place on a privileged code path that runs *before* dispatching any event.
With this change, `EventHandler` will now push a mouse region that intercepts all
mouse interactions, as well as pushing a cursor region that resets the cursor style
to `Arrow`.
One interesting change as part of this is that we've removed the ability to see which
event we are capturing: we were not using this capability anyway and `capture_all` provides
a simpler interface, so I went with that. In the future, we can opt into capturing specific
events or mouse interactions if there's a code path that needs that.
2022-06-04 10:41:29 +02:00
Max Brunsfeld
724affc442
Upgrade deps to avoid multiple versions of transitive deps
...
* env_logger
* prost-build
* bindgen
2022-06-02 17:38:33 -07:00
Max Brunsfeld
8d46edd26c
Avoid holding RefCell borrow while calling TestAppContext::spawn callback
2022-06-02 17:29:11 -07:00
Max Brunsfeld
7ef9de32b1
Show private projects in the contacts panel
...
Introduce a ProjectStore that lets you iterate through all open projects.
Allow projects to be made public by clicking the lock.
2022-06-02 17:29:11 -07:00
Antonio Scandurra
701e2090cd
Align context menu to fit within the window bounds
2022-06-02 09:47:06 +02:00
Antonio Scandurra
cc028cca78
Simplify usage of tooltip
...
Now you simply specify a text, an action and a style and GPUI will
take of rendering it properly. This is simpler compared to always
providing a custom element and should make tooltip more consistent
across the UI.
2022-06-02 09:12:50 +02:00
Antonio Scandurra
0e1307fb23
📝
2022-06-01 10:18:10 +02:00
Antonio Scandurra
238827642a
Align tooltip based on the available window space
2022-06-01 10:03:46 +02:00
Antonio Scandurra
982de971fa
Introduce a new Tooltip
element and a with_tooltip
helper
2022-06-01 09:55:25 +02:00
Antonio Scandurra
94fc28b29d
WIP: start on tooltips
2022-05-31 19:00:44 +02:00
Antonio Scandurra
339069b1d3
Cap MessageStream
buffer size to 1MB
...
We temporarily let it grow when the message size exceed the limit,
but restore the buffer's capacity shortly after. This ensures that,
for each connection in its entire lifetime, we only ever use 1MB.
2022-05-31 11:16:32 +02:00
Antonio Scandurra
34bf248614
Avoid notifying views that have been removed
2022-05-31 10:36:10 +02:00
Antonio Scandurra
e067212ad4
Always re-render visible elements in List
2022-05-31 09:52:44 +02:00
Antonio Scandurra
0fd47da880
Prevent mouse down events from piercing through overlays
2022-05-31 09:34:37 +02:00
Antonio Scandurra
f832c0074f
Fix memory leak in ListState
2022-05-30 18:29:51 +02:00
Antonio Scandurra
20e1044d49
Merge branch 'main' into project-panel-with-new-mouse-events
2022-05-30 18:29:46 +02:00
Antonio Scandurra
6c145b2abc
Show keystrokes as uppercase
2022-05-30 12:23:03 +02:00
Antonio Scandurra
2b9015c096
Introduce {MutableAppContext,ViewContext}::observe_actions
2022-05-30 10:01:23 +02:00
Antonio Scandurra
e7ab61d125
Dismiss context menu when (right-)mousing down outside of it
2022-05-28 08:51:46 +02:00
Antonio Scandurra
fb26f8195b
Sort mouse regions by their stacking context's depth
2022-05-28 08:45:10 +02:00
Nathan Sobo
44c8ee5709
Add mouse down out handlers
...
These will fire whenever the left/right mouse button is pressed down outside a specific region. I'll use these to cancel the context menu in the next commit.
2022-05-27 12:56:44 -06:00
Keith Simmons
48abbb7e63
Merge pull request #1019 from zed-industries/vim-visual-line-mode
...
Vim visual line mode
2022-05-27 11:22:56 -07:00
Nathan Sobo
9909fc529b
Allow context menu to be cancelled after deploying it twice
...
Previously, two right clicks would cause an issue with cancelling the context menu via escape.
2022-05-27 12:00:11 -06:00
Nathan Sobo
c3baf2748f
Block hovering behind overlays
2022-05-27 11:54:51 -06: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
5413a97c7e
Restrict multiple hovered regions to a single stacking context
...
We won't hover regions from stacking contexts that are below the one being hovered.
2022-05-27 11:09:07 -06:00
Antonio Scandurra
9099c40364
Merge branch 'mouse-events' into project-panel-context-menu
2022-05-27 12:07:00 +02:00
Antonio Scandurra
be0e66ef21
Invoke mouse_down
and right_mouse_down
callbacks
2022-05-27 11:20:39 +02:00
Antonio Scandurra
7c7917494c
Don't dispatch events down the tree if they were handled by mouse region
2022-05-27 11:20:32 +02:00
Antonio Scandurra
1d7fc12229
Add right-click support to MouseEventHandler
2022-05-27 10:47:54 +02:00
Antonio Scandurra
307eb1726c
Compute dispatch path based on the view id that dispatched the action
2022-05-27 09:59:24 +02:00
Nathan Sobo
aedfd74d30
Use the hit bounds when painting mouse regions
2022-05-26 20:05:20 -06:00
Nathan Sobo
893f15ddab
Switch MouseEventHandler to use MouseRegions
...
Co-Authored-By: Max Brunsfeld <maxbrunsfeld@gmail.com>
2022-05-26 20:00:01 -06:00
Nathan Sobo
50edcb06dd
Add drag callbacks to mouse regions
...
Co-Authored-By: Max Brunsfeld <maxbrunsfeld@gmail.com>
2022-05-26 18:59:38 -06:00
Nathan Sobo
bd62a68234
Eliminate ElementStateContext trait
...
We now always have a RenderContext when rendering MouseEventHandlers or scrollable Flex columns/rows.
Co-Authored-By: Max Brunsfeld <maxbrunsfeld@gmail.com>
2022-05-26 18:37:28 -06:00
Nathan Sobo
b6b16fc9c3
In UniformList, guard against misbehavior of append_items
...
If for some reason the handle got dropped and we call it, we'll deal with it somewhat gracefully.
Co-Authored-By: Max Brunsfeld <maxbrunsfeld@gmail.com>
2022-05-26 18:30:28 -06:00
Nathan Sobo
8dd82fdce1
Take a RenderContext in ListState's build item callback
...
Co-Authored-By: Max Brunsfeld <maxbrunsfeld@gmail.com>
2022-05-26 18:23:44 -06:00
Nathan Sobo
2ea085b178
Pass a RenderContext to UniformList
...
In some cases, we need to render during layout. Previously, we were rendering with a LayoutContext in some cases, but this commit adds the ability to retrieve a render context with a given handle and we use that feature in UniformList.
Co-Authored-By: Max Brunsfeld <maxbrunsfeld@gmail.com>
2022-05-26 18:03:34 -06:00
Keith Simmons
61f0daa5c5
Visual line mode handles soft wraps
2022-05-26 17:02:05 -07:00
Nathan Sobo
d69776585d
Add mouse_state method to RenderContext
...
We can use this to determine if a region is hovered or clicked.
2022-05-26 13:22:23 -06:00
Nathan Sobo
3a59d2a331
Allow hovered and clicked mouse regions to be tracked in the presenter
2022-05-26 12:44:52 -06:00
Nathan Sobo
0866f0ed55
Introduce CursorRegion struct
...
This will blend in with an upcoming MouseRegion struct that sits next to it in the scene.
Co-Authored-By: Antonio Scandurra <me@as-cii.com>
2022-05-26 11:00:10 -06:00
Antonio Scandurra
82ddac8e7e
Restore focus when closing context menu
2022-05-26 15:21:55 +02:00
Antonio Scandurra
580f1a4125
Style context menu
2022-05-26 10:40:53 +02:00
Antonio Scandurra
a8483ba458
WIP
2022-05-26 09:59:25 +02:00
Antonio Scandurra
3b2f1644fb
Constrain context menu to the width of the widest item
...
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2022-05-26 09:59:25 +02:00
Nathan Sobo
5b7825d5de
Add MutableAppContext::keystrokes_for_action
...
This can be used to lookup keystrokes that will dispatch an action based on the currently focused view. There might be multiple, but we return the first found, meaning the most recently added bindings matching that action for the closest view to the focused view in the hierarchy.
2022-05-26 09:59:25 +02: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
Antonio Scandurra
3ac6fc89c1
Pretty-print JSON of server snapshot
2022-05-26 09:34:39 +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
ef0b584532
Remove AppState from workspace actions
...
This allows those actions to be bound to keystrokes in the keymap.
Also, remove the WorkspaceParams struct, simplify how Workspaces are
constructed.
2022-05-19 14:37:26 -07:00
Max Brunsfeld
7445197f4d
Derive application menu key equivalents from the keymap
2022-05-19 10:04:01 -07:00
Antonio Scandurra
225536accc
Merge branch 'main' into request-to-join-project
2022-05-17 14:55:20 +02:00
Antonio Scandurra
e0c772db3e
Hold a weak handle to Presenter
when dispatching events
...
This ensures that the only strong reference to the presenter is held
by `App`. This is important because we want to call `flush_effects`
when removing a window and implicit drops of the `Presenter` would
make that hard.
Before this commit, if a rendered view contained strong handles to
views and models, we would only drop them on the next `flush_effects`.
This was manifesting itself in `Project`s not being released when
closing their containing window.
2022-05-17 13:04:38 +02:00
Nathan Sobo
d821e7a4c1
Cancel join requests when the requester closes the window
2022-05-16 20:29:36 -06:00
Antonio Scandurra
aa90c06012
Display a temporary window while remote project is loading
2022-05-16 17:45:50 +02:00
Nathan Sobo
a620665bed
Only synthesize mouse moves on scene construction if window is active
2022-05-13 14:05:13 -06:00
Max Brunsfeld
be51a58311
Start work on requesting to join projects
...
Co-authored-by: Nathan Sobo <nathan@zed.dev>
2022-05-12 17:53:11 -07:00
Antonio Scandurra
933a1f2cd6
Show badge when there are pending contact requests
...
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2022-05-11 17:39:03 +02:00
Nathan Sobo
eef99f059d
Make flex elements fill available space when they contain a float
...
Co-Authored-By: Antonio Scandurra <me@as-cii.com>
2022-05-10 06:14:30 -06:00
Antonio Scandurra
95d848fe1e
Ensure flex_float
works even when re-painting without layout
...
Previously, we were mutating the remaining space stored on the layout
state, which would cause re-paints to always have a `remaining_space`
of 0 and therefore not align `flex_float` elements to the right/bottom.
2022-05-06 10:20:03 +02: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
Max Brunsfeld
657ea264cc
Allow guests to create files from the project panel
...
Co-authored-by: Nathan Sobo <nathan@zed.dev>
2022-05-04 10:28:44 -07:00
Antonio Scandurra
09a8b8e675
Capture crash reports and upload them the next time Zed launches
2022-05-02 15:17:43 +02:00
Antonio Scandurra
cddafa5fef
Merge pull request #940 from zed-industries/telemetry
...
Instrument the collab server with OpenTelemetry collecting into Honeycomb.io
2022-04-29 17:50:55 +02:00
Antonio Scandurra
7ec5c04fdf
Correctly alpha-blend border and background in quad SDF
2022-04-28 13:54:18 +02:00
Nathan Sobo
36b462182b
Send telemetry to Honeycomb via GRPC
...
We updated the core-foundation crates because Tonic (the GRPC crate) relies on a newer version of core foundation to find TLS root certificates.
Co-Authored-By: Antonio Scandurra <me@as-cii.com>
2022-04-27 09:58:55 -06:00
Nathan Sobo
1293b21b2d
Get db tests passing with Tokio Postgres adaptor
...
We now run tests that interact with the real database under a Tokio reactor. We make the tests run multi-threaded so we can block on the main thread on database teardown and still make progress actually tearing down the DB.
Co-Authored-By: Max Brunsfeld <maxbrunsfeld@gmail.com>
2022-04-26 13:30:21 -06:00
Max Brunsfeld
065734e1de
Merge pull request #898 from zed-industries/track-window-focus
...
Focus/blur views when application windows become active/inactive
2022-04-25 08:54:47 -07:00
Nathan Sobo
ac6880b6ee
Only set the cursor style once per mouse move event
...
This will hopefully prevent some of the intermittent flickering we seem to be seeing.
2022-04-22 18:57:49 -06: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
3def7a6803
Avoid flicker when toggling project browser on workspace open
2022-04-22 11:53:45 +02:00
Max Brunsfeld
066b4faf61
Restructure KeyMap file, make it easy to edit in Zed
...
Add a JSON schema for this file so that autocomplete can be used for the actions.
2022-04-21 13:35:10 -07: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
Antonio Scandurra
f7055c2acc
Implement zed --wait
2022-04-20 17:28:31 +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
Max Brunsfeld
c56e2ead23
Fix hang when dropping ::scoped future under deterministic executor
...
Co-authored-by: Nathan Sobo <nathan@zed.dev>
Co-authored-by: Keith Simmons <keith@zed.dev>
2022-04-18 17:11:39 -07:00
Max Brunsfeld
d0413ac0e1
Fix crash when dropping a task that is awaiting a call to Background::scoped
...
Co-authored-by: Keith Simmons <keith@zed.dev>
2022-04-18 17:11:39 -07:00
Max Brunsfeld
3901d9d544
Display key bindings in the command palette
...
They still need to be styled.
Co-authored-by: Antonio Scandurra <me@as-cii.com>
2022-04-18 17:11:08 -07:00
Max Brunsfeld
4630071f58
Start work on a command palette
2022-04-18 17:11:08 -07:00
Max Brunsfeld
99f8466cb5
Add a gpui method for listing the available actions
2022-04-18 17:11:07 -07:00
Antonio Scandurra
77d3cc359e
Fix tests
2022-04-14 18:50:45 +02:00
Antonio Scandurra
5a8297a02f
Introduce ViewContext::observe_focus
2022-04-14 18:22:55 +02:00
Nathan Sobo
27057fdb1b
Only process a single focus effect per batch
...
This allows us to focus the query editor of the project search when deploying it. Previously, a complex interplay between focus events was preventing this from working in an intuitive way. What happened previously:
- We'd activate the project search, which enqueued a focus effect for the project search view
- We'd focus the query editor, which enqueued an effect
- We'd process the focus effect for the search view, which would enqueue an effect to transfer focus to the results editor
- We'd process the effect to focus the query editor
- We'd process the effect to focus the results editor
Now...
- We activate the project search pane item, enqueuing a focus effect for the project search itself
- We focus the query editor and *remove* the previous pending focus change effect
- We process the focus effect
2022-04-14 08:52:24 -06: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
Max Brunsfeld
949fbe7cd3
Allow dumping the project diagnostic view's state as JSON
...
Also, improve DebugElements action so that it shows the JSON in an editor.
Co-authored-by: Nathan Sobo <nathan@zed.dev>
2022-04-11 19:51:46 -07:00
Max Brunsfeld
a754c3015f
Merge pull request #762 from zed-industries/safer-atlas-allocation
...
Safer Atlas Allocation
2022-04-11 17:42:53 -07:00
Max Brunsfeld
be11f63f1e
Watch ~/.zed/bindings.json file for custom key bindings
...
Co-authored-by: Keith Simmons <keith@zed.dev>
2022-04-11 16:50:44 -07:00
Max Brunsfeld
92a5c30389
Merge branch 'main' into load-keymaps
2022-04-11 15:55:10 -07: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
3636c9ec25
Load workspace and editor key bindings from a JSON file
2022-04-10 11:18:08 -07:00
Nathan Sobo
17195e615e
Merge pull request #781 from zed-industries/structured-logging
...
Introduce structured logging
2022-04-09 07:40:24 -06:00
Max Brunsfeld
fd4b81c8fc
Allow actions to be deserialized from JSON
...
Introduce separate macro for implementing 'internal' actions which
are not intended to be loaded from keymaps.
2022-04-08 15:47:51 -07:00
Nathan Sobo
7e5a3f9f6b
Introduce structured logging
...
We're enabling the log crate feature everywhere, but only using it on the server for now.
Co-Authored-By: Antonio Scandurra <me@as-cii.com>
2022-04-08 10:06:51 -06: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
Antonio Scandurra
b396909035
Calculate hitbox based on visible bounds in {Mouse}EventHandler
...
This is in contrast to not dispatching the event altogether in `Flex` when
the event is not contained in the flex element bounds. That approach was
problematic because it didn't give an opportunity to `MouseEventHandler`s
to handle mouse move events when they didn't intersect with the element bounds,
causing elements to never clear their hover state, cursor style, etc.
2022-04-07 15:12:09 +02:00
Antonio Scandurra
73f2fd6b09
Pass visible bounds to Element::dispatch_event
2022-04-07 15:10:09 +02:00
Antonio Scandurra
ae415ee49b
Merge pull request #763 from zed-industries/inconsistent-diagnostic-state
...
Fix bad diagnostic state when restarting a language server w/ a running diagnostic task
2022-04-07 09:54:00 +02:00
Antonio Scandurra
52251c3463
Merge pull request #745 from zed-industries/scroll-tabs
...
Allow pane tabs to be scrolled when they overflow
2022-04-07 09:48:54 +02:00
Max Brunsfeld
b354af7bda
Use an unbounded channel in gpui test helper methods
...
The bounded channel could fill up when many events were emitted in one
effect cycle.
2022-04-06 22:02:04 -07:00
Keith Simmons
1812480cbb
Tab size is pulled properly from settings instead of hardcoded
2022-04-06 10:23:37 -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
Antonio Scandurra
1453954ef4
Autoscroll to active tab when activating a new item
2022-04-06 09:08:44 +02:00
Nathan Sobo
eb99588368
Remove stray dbg! expressions
2022-04-05 20:02:45 -06:00
Nathan Sobo
ab3bbe1e17
Make the tabs scrollable when they overflow
...
This adds the ability to make a Flex element scrollable by passing a type tag and instance id, which we use to store the scroll position in an ElementStateHandle.
Still need to allow the element to auto-scroll.
2022-04-05 19:58:15 -06:00
Nathan Sobo
025d857be8
Make UniformListState an Rc<RefCell<>> instead of an Arc<Mutex<>>
...
We don't need to support multiple threads.
2022-04-05 18:40:25 -06:00
Nathan Sobo
aeb0b42c7a
Report more information when we panic due to an allocation failure
2022-04-05 13:53:13 -06:00
Nathan Sobo
4f4364d510
Ensure we drop the last pane item
...
Previously, we weren't updating the toolbar's active item when emptying out a pane. This enhances an integration test to ensure that we don't hold references to any editors or buffers once we close everything.
2022-04-05 13:05:14 -06:00
Nathan Sobo
41a27e6925
💄
2022-04-05 12:09:40 -06:00
Nathan Sobo
e2bf89b1e8
Don't require a path in TestAppContext::dispatch_action
...
Instead, derive it from the presenter. This makes tests easier to write and more reliable since we'll be accurately simulating the actual relationship between parent and child views.
2022-04-05 12:08:25 -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
Nathan Sobo
903810f22e
Style search in buffer below breadcrumbs
...
We still have issues with project search styling.
Co-Authored-By: Antonio Scandurra <me@as-cii.com>
Co-Authored-By: Max Brunsfeld <maxbrunsfeld@gmail.com>
2022-03-31 11:44:16 -06:00
Antonio Scandurra
0453dd1101
Allow flex items to float to the end of the flex axis
...
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2022-03-30 16:46:14 +02:00
Antonio Scandurra
0cd356ce06
Merge pull request #689 from zed-industries/format-timeout
...
Skip formatting during save if it takes too long
2022-03-28 16:17:56 +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
26aa138429
Fire fake timers waking up at the same time as the current clock
2022-03-28 10:57:52 +02:00
Nathan Sobo
daf999c3be
Fully disable vim mode on start unless it's enabled
...
Also: Make some structural adjustments to remove the need for defer. Instead of accessing the global in associated VimState functions, have a single method that allows us to call update instance methods.
2022-03-26 19:19:12 -06:00
Keith Simmons
bb9b36dccd
Add initial vim mode mode switching
...
Co-authored-by: Nathan Sobo <nathan@zed.dev>
2022-03-25 20:10:37 -07:00
Keith Simmons
0a8d543f66
Add global tests and wrap global update functions in update call to flush effects
...
Co-authored-by: Antonio Scandurra <me@as-cii.com>
2022-03-23 10:27:27 -07:00
Keith Simmons
454f7a570c
Add global change observations
2022-03-23 09:14:12 -07:00
Antonio Scandurra
3298529ed1
Fix global nested event test after turning subscriptions into effects
2022-03-23 09:14:33 +01:00
Max Brunsfeld
880eaa268b
Coalesce followed view updates only within one frame
...
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2022-03-22 17:03:24 -07:00
Antonio Scandurra
9885c4f6ba
Don't trigger observations with notifications emitted prior to observing
...
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2022-03-22 16:28:11 +01:00
Antonio Scandurra
5ecf945e28
Don't trigger global subscriptions with events emitted prior to subscribing
...
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2022-03-22 16:14:21 +01:00
Antonio Scandurra
73eae287a1
Don't trigger subscriptions with events emitted prior to subscribing
...
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2022-03-22 15:57:30 +01:00
Antonio Scandurra
a154e4500b
Implement Workspace::unfollow
...
This also changes the structure of the follow state back to be per-pane. This
is because we can't share the same view state across different panes for
a couple of reasons:
- Rendering the same view in N different panes is almost always not something
that we want due to global state such as focus.
- If we allowed it and a user followed the same person in two different panes,
there would be no way of unfollowing in one pane without also unfollowing in
the other.
2022-03-21 16:55:18 +01:00
Max Brunsfeld
e338da0271
Allow clicking a titlebar avatar to initiate following
2022-03-18 13:37:07 -07:00
Antonio Scandurra
10e6d82c3e
WIP: Start on sending view updates to followers
2022-03-18 14:20:09 +01:00
Max Brunsfeld
eda06ee408
Add AnyWeakViewHandle
2022-03-17 17:53:38 -07:00
Antonio Scandurra
5d14c9abdf
Introduce workspace::register_project_item
...
This lets downstream crates like `editor` define how project items should be
opened.
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2022-03-17 15:54:34 +01:00
Antonio Scandurra
44d997c00c
Rename app_state
to global
in gpui
...
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2022-03-17 14:33:01 +01:00
Antonio Scandurra
aced1e2315
Finish refactoring of how editors are opened
2022-03-17 11:29:46 +01:00
Max Brunsfeld
a88320dc5f
Remove workspace::Item trait
...
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
Co-Authored-By: Keith Simmons <keith@zed.dev>
Co-Authored-By: Antonio Scandurra <antonio@zed.dev>
2022-03-16 13:34:06 -07:00
Antonio Scandurra
b0afb64a6e
Fix edge cases when calling refresh_windows
...
This commit ensures that new views are rendered for the first time. This fixes
a panic that could be reproduced by dropping the `ThemeSelector` and opening
the file finder during the same update.
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2022-03-16 14:51:54 +01:00
Antonio Scandurra
447f350123
Compute line-height as a multiple of font size
...
...instead of using the bounding box. This makes `PragmataPro` and other
fonts render more cleanly.
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2022-03-15 16:35:06 +01:00
Antonio Scandurra
45ce503afd
Start on implementing filtering support for Cursor::prev
2022-03-15 15:13:23 +01: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
Max Brunsfeld
e392368d89
Fix layout panic on empty editors with blocks
...
Co-Authored-By: Antonio Scandurra <me@as-cii.com>
2022-03-14 12:03:26 -07:00
Antonio Scandurra
5d5f89231b
Hold strong handle in ChildView
...
This eliminates a whole class of errors where the `ChildView` could
be referring to a view that doesn't exist anymore. That probably still
indicates that there's an underlying bug, but at least we won't panic.
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2022-03-14 15:49:11 +01:00
Antonio Scandurra
47b40e3839
Don't draw scene elements if their size is zero
...
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2022-03-14 15:29:18 +01:00
Antonio Scandurra
1e9b6b050d
Merge pull request #596 from zed-industries/fix/dropped-subscription-in-callback
...
Fix Dropped Subscription in Handler Bug
2022-03-12 19:14:38 +01:00
Keith Simmons
c50be72214
Format including missing formatting changes from previous PR
2022-03-11 15:38:01 -08:00
Keith Simmons
16afb3d5b1
Add some tests for global events and fix potential bug in subscriptions when subscription is dropped inside of it's own callback
...
Co-authored-by: Nathan Sobo <nathan@zed.dev>
2022-03-11 15:34:04 -08:00
Nathan Sobo
951fd1ab36
Merge branch 'main' into select-on-rename
2022-03-11 15:30:07 -07:00
Keith Simmons
87b1cfe34f
Merge pull request #576 from zed-industries/cursor-shape
...
Add support for rendering the cursor as a Block and Underscore
Co-authored-by: Max Brunsfeld <max@zed.dev>
2022-03-11 11:51:24 -08:00
Keith Simmons
144591d639
Minor renames for clarity
2022-03-11 11:25:36 -08:00
Keith Simmons
81fc812221
Add global events to MutableAppContext and raise global event when new workspace is created
2022-03-10 20:03:01 -08:00
Keith Simmons
b62daebde1
Merge pull request #563 from zed-industries/mouse-history-navigation
...
Add missing mouse button events and mouse history navigation
2022-03-10 17:39:36 -08:00
Nathan Sobo
a498cd32c8
When renaming, match the color of the renamed token in the rename editor
2022-03-10 16:38:45 -07:00
Nathan Sobo
3968b37e26
When renaming, fade out the old name and select all
2022-03-10 14:55:31 -07:00
Keith Simmons
eddb089f27
render character under block cursor
2022-03-10 13:16:31 -08:00
Nathan Sobo
e6b1fea117
WIP
2022-03-10 11:32:14 -07:00
Nathan Sobo
ac1eb19f83
Start on text highlight support
2022-03-09 20:51:35 -07: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
Antonio Scandurra
ef1ec88523
Remove delegate support from GPUI
...
We added this because we thought it would save some allocations when
sending operations given that we could move them to the delegate upon
notifying it, but the reality is that we serialize operations and that
only requires a reference.
2022-03-09 10:48:52 +01: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
Antonio Scandurra
317a1bb07b
Remove language servers from buffers
...
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
Co-Authored-By: Antonio Scandurra <antonio@zed.dev>
Co-Authored-By: Keith Simmons <keith@zed.dev>
2022-03-08 15:16:07 -08:00
Antonio Scandurra
b49951ac57
Implement {ModelHandle,ViewHandle}::become_delegate
2022-03-08 09:30:32 +01:00
Nathan Sobo
f2848a092b
WIP: Start on a delegation... like events, but single consumer that takes ownership of event
2022-03-08 09:01:57 +01:00
Max Brunsfeld
bb6ab837cf
Merge pull request #542 from zed-industries/guest-disconnections
...
Send heartbeats in both directions so the server can detect when clients disconnect
2022-03-07 15:52:35 -08:00
Max Brunsfeld
1f5eab39a9
Reset peer's receive timeout when a message is received
...
* Make advance_clock more realistic by waking timers in order,
instead of all at once.
* Don't advance the clock when simulating random delays.
Co-Authored-By: Keith Simmons <keith@zed.dev>
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2022-03-07 15:33:43 -08:00
Nathan Sobo
40c0b9e7a5
Halt keystroke dispatch when a global action is dispatched
2022-03-06 09:46:33 -07:00
Max Brunsfeld
4124308d94
Fix errors from conditional compilation in timer functions
2022-03-04 17:16:17 -08:00
Max Brunsfeld
9017a1363b
Send websocket pings from both the client and the server
...
Remove the client-only logic for sending protobuf pings.
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
Co-Authored-By: Antonio Scandurra <me@as-cii.com>
2022-03-04 15:21:18 -08:00
Max Brunsfeld
c61a1bd659
Make timer method available on both foreground and background executors
...
Also, make it return a static future.
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2022-03-04 13:54:07 -08:00
Antonio Scandurra
c38de3243d
🎨
...
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2022-03-04 17:54:48 +01:00
Antonio Scandurra
38313abc48
Disable events when project becomes read-only
...
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2022-03-04 17:37:37 +01:00
Antonio Scandurra
77e913b5a4
Blur focused view when project becomes read-only
...
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2022-03-04 17:37:26 +01:00
Max Brunsfeld
05df1dfae9
Disable doctests for all libraries
...
We don't use them, and they add a lot of noise to the test output
when running all tests in the workspace.
2022-03-03 16:15:56 -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
141e0559a5
Fix warnings
2022-03-02 12:45:49 +01:00
Antonio Scandurra
3ec76b63d3
Make dhat
optional
2022-03-02 11:02:10 +01:00
Antonio Scandurra
51345cf1e1
Advance clock when simulating random delay
2022-03-02 10:39:46 +01:00
Antonio Scandurra
be7a4770fb
Delete timer state when the future that's awaiting it gets dropped
2022-03-02 10:08:38 +01:00
Max Brunsfeld
8b7a9367fa
Avoid storing type name string on AnyViewHandle
...
It won't be needed for leak error messages, because the typed
view handle will typically be created first. And this avoids
increasing the size of the handle used in production.
2022-03-01 18:22:09 -08:00
Antonio Scandurra
a25f21df39
Remove debug_elements_callbacks
from App
...
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
Co-Authored-By: Max Brunsfeld <max@zed.dev>
2022-03-01 19:16:58 +01:00
Antonio Scandurra
bc9c034baa
Fix Presenter
leak when removing windows
2022-03-01 18:50:05 +01: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
Antonio Scandurra
0d6f6bf5bb
Detect when view handles are leaked
...
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2022-03-01 16:11:12 +01:00