Commit Graph
105 Commits
Author SHA1 Message Date
Antonio Scandurra 776f7dd5a9 Add a new Hooks element to invoke a callback before layout
This is useful to cap the width of sidebars when dragging the
resize handles beyond the maximum bounds of the sidebar.
2021-09-03 12:18:31 +02:00
Antonio Scandurra a0dd41cdf6 Add a Flexible element that works like in Flutter 2021-09-03 11:40:18 +02:00
Antonio ScandurraandMax Brunsfeld 3d4ff43f9e Reset visible bounds when painting an Overlay element
Co-Authored-By: Max Brunsfeld <max@zed.dev>
2021-09-02 18:46:48 +02:00
Antonio ScandurraandNathan Sobo 6a071e865f Make Line::paint interface consistent with Line::paint_wrapped
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2021-09-02 14:33:52 +02:00
Antonio ScandurraandNathan Sobo bdc35f03f2 Paint only glyphs that intersect the visible bounds in Text
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2021-09-02 14:14:05 +02:00
Antonio Scandurra 0490c609fb Introduce a visible_bounds parameter to Element::paint
We're not using this yet but this will be useful to avoid rendering
unnecessary portions of text.
2021-09-02 11:42:23 +02:00
Antonio Scandurra 38dc023942 Toggle sidebar items on mouse down instead of on click 2021-09-02 10:20:58 +02:00
Antonio Scandurra 4876e40a98 Reset rendered range when calling ListState::reset 2021-09-02 10:14:32 +02:00
Max BrunsfeldandNathan Sobo 985788b855 Allow uniform margins and paddings to be specified as single numbers
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2021-09-01 16:14:25 -07:00
Max BrunsfeldandNathan Sobo 848dd5f4c5 Add refreshing field to LayoutContext
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2021-09-01 16:02:12 -07:00
Max BrunsfeldandNathan Sobo 894531d0e0 Fix list's scrollwheel direction
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2021-09-01 15:36:22 -07:00
Max BrunsfeldandNathan Sobo 82d1fb82d2 Clean up List::layout
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2021-09-01 15:27:23 -07:00
Max BrunsfeldandNathan Sobo bfdb0f35ba Return correct scroll top from layout when list is not full
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2021-09-01 14:27:38 -07:00
bc38baf241 Get randomized test passing
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
Co-Authored-By: Antonio Scandurra <me@as-cii.com>
2021-09-01 13:25:12 -07:00
Antonio ScandurraandNathan Sobo 6e91289235 Adjust the stored scroll top during layout if it exceeds scroll max
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2021-09-01 17:29:26 +02:00
Antonio ScandurraandNathan Sobo 20e18ac3ad WIP
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2021-09-01 16:19:01 +02:00
Antonio Scandurra c8d67f428d WIP 2021-09-01 13:50:39 +02:00
Antonio Scandurra c7a8972a57 Fix off-by-one error in StateInner::visible_range
I even wonder if we should keep this function around, as it feels
like it can only be called at certain times (e.g. layout) and not
after a splice or a scroll where we may not have rendered the
elements we actually need.
2021-09-01 12:20:48 +02:00
Antonio Scandurra 0a22dee764 Save last layout width in List to avoid unnecessary re-renders 2021-09-01 12:20:11 +02:00
477740360d Start work on partial rendering for List element
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
Co-Authored-By: Antonio Scandurra <me@as-cii.com>
2021-08-31 21:57:56 -07:00
Antonio ScandurraandNathan Sobo 2db49ce27f Maintain logical scroll top when splicing List elements
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2021-08-31 16:35:57 +02:00
Antonio ScandurraandNathan Sobo d410ff83a7 Express scroll position with an element index and an offset
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2021-08-31 15:57:03 +02:00
Max BrunsfeldandNathan Sobo 73a8fda9c7 Get the channel select looking good
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2021-08-30 17:59:13 -07:00
Antonio ScandurraandNathan Sobo ef89ceae4d Take &mut self in View::render
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2021-08-30 17:51:26 +02:00
Antonio ScandurraandNathan Sobo 917a80ec36 🎨
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2021-08-30 17:24:51 +02:00
Antonio ScandurraandNathan Sobo 87cd668a33 Replace foreground layers with stacking contexts
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2021-08-30 17:19:03 +02:00
Antonio Scandurra 171627b63a Add a new zero-sized Overlay element and paint it in the foreground 2021-08-30 15:42:03 +02:00
Max BrunsfeldandNathan Sobo bc63fca8d7 Fetch older messages when scrolling up in the chat message list
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2021-08-27 14:58:28 -07:00
Max Brunsfeld 5262dcd3cb Don't change cursor on mouse move while mouse button is held down 2021-08-27 10:34:11 -07:00
5e6e0c68cd Allow styling the cursor in MouseEventHandler
Co-Authored-By: Max Brunsfeld <max@zed.dev>
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2021-08-27 19:01:49 +02:00
Antonio ScandurraandNathan Sobo 53dc08dfc5 Remove lock from element states
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2021-08-27 18:04:21 +02:00
Antonio Scandurra 8a10234b14 Introduce MouseEventHandler::on_drag 2021-08-27 14:30:08 +02:00
Max Brunsfeld 1489c865e7 Remove ui font fields from settings 2021-08-26 17:12:56 -07:00
3bb5610ad1 Overhaul handling of font families
* Specify font families in the theme.
* Load fonts eagerly when loading themes, instead of loading
  them lazily when rendering.

Co-Authored-By: Antonio Scandurra <me@as-cii.com>
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2021-08-26 15:06:00 -07:00
Antonio ScandurraandNathan Sobo 381f2499b2 Preserve scroll position of List when refreshing windows
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2021-08-26 16:46:28 +02:00
Antonio ScandurraandNathan Sobo 4388c45029 Re-render all list elements when refreshing windows
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2021-08-26 16:36:56 +02:00
77c7fa53da Introduce Orientation concept to List
When the Orientation is Bottom, we paint elements from the bottom of the list when underflowing and express scroll position relative to the bottom. In either orientation, when inserting elements outside the visible area, we adjust the scroll position as needed to keep the visible elements stable.

Co-Authored-By: Max Brunsfeld <maxbrunsfeld@gmail.com>
Co-Authored-By: Antonio Scandurra <me@as-cii.com>
2021-08-25 12:45:17 -06:00
Antonio ScandurraandNathan Sobo 1aa1e6c6ab Move pooling of line wrappers into FontCache
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2021-08-25 17:28:25 +02:00
Antonio ScandurraandNathan Sobo 0c9e72cce7 Support hard wraps in Text element
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2021-08-25 16:53:26 +02:00
Antonio Scandurra 399ecaabc6 Wrap lines in Text element 2021-08-25 14:59:52 +02:00
Antonio Scandurra 463284f0af Move LineWrapper into gpui 2021-08-25 10:43:54 +02:00
Max Brunsfeld f404f5f32f wip2 2021-08-24 18:09:36 -07:00
Nathan SoboandMax Brunsfeld 33dbbf271e WIP
Co-Authored-By: Max Brunsfeld <maxbrunsfeld@gmail.com>
2021-08-24 18:09:36 -07:00
Nathan SoboandMax Brunsfeld 3ac489a8b6 Fix panic when scrolling non-overflowing lists
Co-Authored-By: Max Brunsfeld <maxbrunsfeld@gmail.com>
2021-08-24 17:51:37 -06:00
Max Brunsfeld baded7d416 Start work on subscribing to model from ChatPanel 2021-08-23 17:21:06 -07:00
Max Brunsfeld 5ecedd894d Add ChannelList to AppState 2021-08-23 15:03:45 -07:00
Max BrunsfeldandNathan Sobo d02eaf9e3a Fix scrolling in List element
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2021-08-23 11:02:30 -07:00
Antonio ScandurraandNathan Sobo 3543aceff3 Implement scrolling and painting for List
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2021-08-23 16:41:48 +02:00
Antonio ScandurraandNathan Sobo bd89dc4114 Perform a full layout of List when width changes
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2021-08-23 16:04:23 +02:00
Antonio ScandurraandNathan Sobo 03b7c3c8c6 Implement and test splice for ListState
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2021-08-23 16:00:05 +02:00