* Fix Scrollbars [part 1/n]
* Implement TrackClickBehaviors correctly
* Fix macOS scrollbar styling
* Provide ScrollableContainers for a simple, turn-key scrollbar API
* Make expanded scrollbar not hide while the mouse moves over the
scrollable composable
* Fix the expanding behaviour and animation on macOS
* Fix the visibility logic on macOS
* Resolve a number of inconsistencies with Swing implementations
* Simplify and consolidate internal implementation
* Separate tabStrip scrollbar styling
* Fix Scrollbars [part 2/n]
* Fix thumb colour fade in AlwaysVisible mode
* Move sample border to Outside so it doesn't overlap the scrollbar
* Fix Scrollbars [part 4/n]
* Rework layout/draw logic to finally align with Swing, in dark mode too
* Switch to custom drawing for the thumb for more control
* Fix Scrollbars [part 5/n]
* Cleanup code
* Update API definitions
* Fix Scrollbars [part 6/n]
* Make bridge compile
* Fix styling in bridge
* Update bridge samples
* Fix TextArea scrollbars
* Fix Scrollbars [part 7/n]
* Fix bug in ScrollableContainer
* Improve ReleasesSampleCompose
* Fix Scrollbars [part 8/n]
* Rewrite MacScrollbarHelper to avoid native crashes
* Fix Scrollbars [part 10/n]
* Add decorationModifier to TextArea API (useful e.g., for padding when
there are scrollbars)
* Fix ScrollableContainerImpl layout logic and bugs
* Fix one HorizontallyScrollableContainer using vScroll by mistake
* Use HorizontallyScrollableContainer in Markdown block renderer
* Update standalone sample Markdown with new APIs
* Fix Scrollbars [part 11/n]
* Add mouse move linger behaviour to all ScrollableContainers
* Add horizontal scrolling example to standalone sample
* Fix ScrollableContainerImpl layout bug with WhenScrolling
* Fix Scrollbars [part 12/n]
* Remove debug bg from Scrollbars sample
* Fix thumb appearing/disappearing animation
* Fix colour animations
* Keep AlwaysVisible thumb "hovered" while dragging
* Fix styling in the bridge
* Fix Scrollbars [part 13/n]
* Fix InputField ignoring provided scrollbar style
* Remove useless KDocs from TextArea/TextField
* Clean up code
* Mark non-state-based TextArea/TextField as scheduled for removal
* Fix Scrollbars [part 14/n]
* Fix native crash when TextField/TextArea don't have a fixed width
* Redo the entire BTF2-based InputField implementation, better
* Expose all the new parameters that BTF2-based InputField has to the
users of TextField and TextArea
* Fix TextArea decoration and scrollbars
* Fix Scrollbars [part 15/n]
* Fix scrollbars on Windows and Linux
* Fix TextArea end padding to account for scrollbar
* Fix Scrollbars [part 16/16]
* Clean up code
* Add scrollbar to undecorated TextAreas
GitOrigin-RevId: 3cfeadb7e17d05f76b25a38c4a1ed9062bcbc8d3
* # Conflicts:
# samples/standalone/src/main/kotlin/org/jetbrains/jewel/samples/standalone/view/component/Scrollbars.kt
* stitch wrong import after rebase
Signed-off-by: Ivan Morgillo <imorgillo@gmail.com>
* reformat according to feedback
Signed-off-by: Ivan Morgillo <imorgillo@gmail.com>
---------
Signed-off-by: Ivan Morgillo <imorgillo@gmail.com>
GitOrigin-RevId: ed31952efb8444b91269869cc0b1490d92a00ddc
* Add segmented controls
* Fix colors and focus behaviour of segmented controls
* Modify focus behaviour and colors of segmented controls
* Add segmented controls
* Fix colors and focus behaviour of segmented controls
* Modify focus behaviour and colors of segmented controls
* Tweak implementation to match actual impl/behaviour
The one thing that is still TODO is avoid focusing the control when it's
clicked. I removed the previous "clear focus" behaviour because it
clears the focus on click even when it shouldn't. I'll come up with a
better solution as soon as I can.
* Change focus behaviour to match Swing's
We made the buttons not focusable anymore, to prevent unwanted focus
movement. There is a bit of focus dark magic, but it now works as we'd
expect.
* Update segmented controls api
---------
Co-authored-by: Sebastiano Poggi <sebp@google.com>
GitOrigin-RevId: 3e847ba84adc08a489518d73ecdc8bd9410b483b
* The default button was missing spacing between its bg and the focus
outline. Outlined buttons are unaffected.
* The chips were drawing a double-outline when focused and selected. Now
they only draw the selected outline if they are both focused and
selected.
* The chips didn't clearly signal the pressed and selected states. The
background now reflects these states better (standalone only).
There are no specs so we're going with a bit more freedom in the
standalone version, as the Swing impl is quite lacking in polish still
GitOrigin-RevId: f57eba2a16493454cfd978f0a6dedc73e30848bb
The IDE also has an editor and a console text style, which come from the
editor color scheme. We weren't using them until now, but we now fully
comply to it in the Markdown rendering, too.
GitOrigin-RevId: 6732d567e0a22155ac6b3b0a05c8ab5e371296a3
It's practical to have the "base" text colours in GlobalColors:
* Normal
* Selected
* Disabled
* Info
* Error
They apply to labels and most components, but not every component
(e.g., default buttons have "inverted" text colors).
Note that the text colour is used as content colour, but not directly
in the styling. Besides, when initialising the stylings, we can't
really read these values as they haven't been init yet.
This is mostly a convenience for users that want to set a content colour
(e.g., to visually show some text as disabled/error).
Note: GlobalColors.paneBackground was renamed to panelBackground for
consistency with the Swing color key naming.
GitOrigin-RevId: 76d7dc9a3d33d4b82c9a5d2605ca6174efa55751
The main root cause was a missing return statement in retrieveIntAsDp(),
but we also had terribly inconsistent values for the menus compared to
the actual appearance. I have tweaked the bridge menu style defaults to
align better, but we'll have to come back to revisit the whole menu
implementation to actually use the right values in the right way. The
current implementation is not satisfactory.
GitOrigin-RevId: 5ffff1124420179750630370aaa33888f88506f2
* Update standalone bundled Inter font to 4.0
* Rename textStyle -> defaultTextStyle
This makes the extension function on JewelTheme clearer in its intent of
accessing the default TextStyle from the composition locals.
The former defaultTextStyle has been transformed to a function, which is
also making clearer it's a creation and not a field access. It has
contextually been renamed to createDefaultTextStyle().
GitOrigin-RevId: a893d03baad34a2912b632aedad16c257019581e
* Update TabData for flexible content
* Update ui/src/main/kotlin/org/jetbrains/jewel/ui/component/TabStrip.kt
Co-authored-by: Sebastiano Poggi <rock3r@users.noreply.github.com>
* Update ui/src/main/kotlin/org/jetbrains/jewel/ui/component/TabStrip.kt
Co-authored-by: Sebastiano Poggi <rock3r@users.noreply.github.com>
* review
* review
* Add tab content spacing to the user interface
The user interface has been updated to include tab content spacing. This is established by adding a new parameter, `tabContentSpacing`, in TabMetrics and adjusting and testing its implementation across various files like `IntUiTabStyling.kt`, `IntUiBridge.kt`, and `Tabs.kt`. This modification will ensure more consistency and control over the user interface design. The user interface api file has also been updated to reflect this change.
* lint
* api fix
* Update int-ui-standalone APIs
GitOrigin-RevId: 7e61aafa34113649798ccad1e3d3fc6208390a01
* Update dropdown item with icons and keybindings
* Fix minor issues (typos, formatting)
* Make the CI pass
The API check works locally, but not on the CI. Not sure why.
* api dump
* Run apiDump on Linux, because.
---------
Co-authored-by: Sebastiano Poggi <sebp@google.com>
Co-authored-by: Sebastiano Poggi <poggos@gmail.com>
GitOrigin-RevId: 0db2d4b906939f8b0a21e71e758509525bba7c12
* Make icon button and tabs unfocusable
* Stroke hint with svg patcher
* Stroke hint with svg patcher
* Fix light header switching
* Update api
* DynamicComponentStyling support
* Rename to LazyComponentStyling
* Make ComponentStyling.defaultComponentStyle as a LazyComponentStyling
* Simplify function name
* Update api
* Make ktlint happy
* Update api
* Update api
* Activation, SelectableIconButton support and new standalone sample
* Fix comment
* Make linters happy
* Fix comments
* Update API
* Make ktlint happy
* Fix comments
* Fix comments, outline button dark disabled style
* Update api
* Make ktlint happy
GitOrigin-RevId: 6dfacea4195d9bcd275797e1d3fd1b2464d7ed7c
* Refactor component styling API for extension components
* Make detekt happy
* Make detekt happy
GitOrigin-RevId: 21d3aa4ae014b429449ba0c491b5521a5236d876
* Move core components to core.component package
Includes moving their styling to a subpackage
* Move state to core.state package
* Move other bits to core and foundation packages
* Move basic theme stuff to foundation package
The foundation package doesn't depend on core anymore!
* Rename core package to ui
* Remove int-ui-core module
Its few files have been moved to ui and intui-standalone
* Rename core module to ui
* Split foundation module out of ui module
* Add missing foundation.api file
* Remove unnecessary FQNs
GitOrigin-RevId: 7cc69fd7345c6ead217f79d658b50944d5e90581
* Collapse Global* interfaces
* Collapse IconData interface, update generator
* Collapse ThemeColorPalette interface, update generator
* Collapse ThemeDefinition interface, update generator
* Renamed theme to JewelTheme
Cannot collapse the theme into JewelTheme since we get some
nasty classloading issue with Composer. Will investigate
separately.
* Cleanup some more code
* Rename ComponentStyling
* Rename ContextMenuRepresentation
* Clean up decorated window code, too
* Final cleanup pass
* Get rid of BaseIntUiTheme and IntUiTheme
One theme to rule them all!
GitOrigin-RevId: f9f9c42d11c682220b7c3bf4b3652e72d2e01db4
* Cleanup code, remove compiler warnings
* Add API validation to check task
1. Running binary-compatibility-validator on code
2. Flagging public data classes and failing build
3. Running Poko to autogen equals/hashcode/toString
* Remove all public data classes, add API dumps
GitOrigin-RevId: f90d8a9a992737b176f1c7d83409798628a629c1