Commit graph

532 commits

Author SHA1 Message Date
Admin
1ba7b2f7fe First 2.0 2026-02-12 14:52:33 +01:00
Admin
af7d507488 compile 2026-02-10 18:26:51 +01:00
Eddy Bruel
dc953df2c4 Clear layout cache in text input if turtle width changes. 2026-02-06 15:38:00 +01:00
Julián Montes de Oca
9e53e13d68
IME: Support on Android and Input Configuration (#839)
* WIP

* Improvements for cursor control

* Enhance text selection and key event handling for Samsung keyboard compatibility

* Default to multine inputtype in android

* WIP Input configurations

* Enhance iOS text input handling

* Cleanup

* Comment out 'Next' variant across platforms for future implementation.

* Rename IME Config API to match web APIs

* Fix Android emoji deletion by implementing UTF-16 code unit index conversion

* Proper ASCII-only input and improve iOS keyboard handling

* Replace 'is_numeric_only' with 'input_mode'

* Prevent pasting invalid characters

* Cleanup

* Cleanup

* Hide clipboard actions on text change

* Cleanup

* Unify keyboard event types and fix iOS text input regressions

Unified TextInputEvent with new fields for better IME support across platforms:
- Added `composition` field for IME preview ranges (CJKinput)
- Added `full_state_sync` for complete buffer state (Android approach)
- Added `replace_range` for autocorrect/suggestion replacements (iOS approach)

All platforms: Standardized on CharOffset for character position handling

* Prevent text synchronization with the platform during active composition

* Add UITextInputCurrentInputModeDidChangeNotification support

* Add underline for active IME composition in TextInput

* Improve editor action handling for multiline inputs on Android

* Enhance IME composition tracking and clipboard action handling in TextInput

* Simplify IME state handling on Android

* Cleanup IME handling on iOS

* Cleanup

* Cleanup IME handling on iOS

* Improve docs/comments

* Improve docs/comments

* Add floating cursor support for keyboard trackpad in iOS

* Refine IME handling in TextInput to prevent iOS buffer loss during composition updates

* Move UITextInput protocol implementation into its own module

* Move MakepadInputConnection into its own file

* Cleanup

* Improve general IME handling in TextInput. Improve docs and comments

* Refactor text input configuration to separate soft keyboard settings for mobile platforms.
2026-02-02 11:48:21 +01:00
Admin
aca1828886 updated zune libraries to latest 2026-01-30 14:01:42 +01:00
Admin
e248f240b2 oops\ 2026-01-29 19:08:12 +01:00
Admin
89592532e5 add apply_default for animator 2026-01-28 11:01:55 +01:00
Kevin Boos
2898fb1367
Hide the Tooltip widget upon any click/tap, drag, or scroll event (#844)
* Hide the `Tooltip` widget upon any click/tap, drag, or scroll event

* Tooltip: handle raw events directly as to not impact `Hit` consumption
2026-01-21 19:41:31 +01:00
Eddy Bruel
7a5069495a Whitespace should never be wrapped 2026-01-20 20:40:17 +01:00
Jason Yau
4355f29c4b
fixed IME composition popup position for Windows (#841)
Co-authored-by: jasonqiu <jasonqiuchen@outlook.com>
2026-01-17 17:57:36 +01:00
Julián Montes de Oca
b966c2ab02
iOS: Add UITextInput protocol implementation for IME support (#838)
- MakepadTextInputView with marked text (composition) for CJK input
- UTF-16 ↔ char index conversion for emoji/Unicode handling
- TextRangeReplaceEvent for autocorrect/autocomplete
2026-01-12 14:10:44 +01:00
Julián Montes de Oca
bcb3bfa1d3
Add clipboard actions support for iOS (#833)
Implemented UIEditMenuInteraction for clipboard actions, allowing copy, cut, paste, and select all functionalities.
2026-01-06 17:00:02 +01:00
Julián Montes de Oca
7e2e0eadae
Add support for definding a math view in Markdown (#825) 2026-01-05 15:14:19 +01:00
Kevin Boos
b5de1c3060
Add optional serde derives for Serialization/Deserialization on select public types (#831)
Can be activated by setting the "serde" feature on `makepad-widgets`
(or other internal crates).
2025-12-18 08:38:58 +01:00
Admin
1cfba392c1 fix up tests 2025-12-10 13:04:00 +01:00
Eddy Bruel
286db39bd5 Move math widget to its own crate 2025-12-05 13:27:20 +01:00
Eddy Bruel
735a489219 Initial attempt 2025-12-05 13:27:20 +01:00
Admin
7880546817 align mathtypes to WGSL 2025-12-02 11:43:12 +01:00
Julián Montes de Oca
619dec61c4
Android: Implement ShowClipboardActions with native ActionMode (#821)
Cx API:
- Implement existing ShowClipboardActions
- Add HideClipboardActions
- Cross-platform API ready for iOS implementation

Android Implementation:
- Native ActionMode integration with floating toolbar (API 23+)
- JNI bindings for showing/hiding menu and handling clipboard actions
- Event system for Copy/Cut/Paste/Select All actions
- Smart menu state management based on selection and clipboard

TextInput Integration:
- Long press selects word and shows menu
- Double tap and long press selects word and shows menu
- Selection preservation when tapping selected text
2025-11-22 10:06:05 +01:00
Eddy Bruel
b3dc1e2c42 Fix bug in label areas 2025-11-17 14:58:31 +01:00
Kevin Boos
97983ad26f
Fix modal; enable widgets to block scrolling except within a certain area (#819)
* Fix modal event handling behavior

Everything now works as expected, *except* for Scroll events that seem to
still be received by views beneath the modal, e.g., an underlying PortalList.

* Enable widgets to block scrolling, except within a certain area

* This is important for Modals to prevent scrolling of background widgets
  whilst still allowing the inner `content` view to be scrolled.
* Modals are now forcibly full-screen (or rather, full-window)
  in order to properly ensure that scrolling-allowed areas
  always stay relevant, as the Modal can no longer be contained
  within a non-full-window parent widget/view.

* remove errant log statement
2025-11-13 08:45:36 +01:00
Eddy Bruel
e761b94852 Wrap walk metrics into struct 2025-11-10 16:20:51 +01:00
wyenox
3e6d4c951e
"app focus" events renamed to "window focus" (#818) 2025-11-07 22:59:54 +01:00
wyenox
e68263e2a2
fix window-level focus issues (#817) 2025-11-07 19:04:41 +01:00
Julián Montes de Oca
fe01aa947e
Enable drag scrolling by default in Scroll*Views (#810) 2025-11-03 17:16:22 +01:00
Eddy Bruel
fe1a0a4dd2 Add descender to walks 2025-11-03 14:36:06 +01:00
alanpoon
5f58721cc5
Added set_texture for RotatedImage (#806) 2025-10-30 22:20:52 +01:00
Eddy Bruel
d5bc7b9806 Prefer Right over Right { wrap: false } in DSL 2025-10-30 16:04:52 +01:00
Eddy Bruel
04f25515ac Implement per-row alignment for rightward flowing turtles 2025-10-30 12:43:18 +01:00
Eddy Bruel
9674bda214 Unify Size::Right and Size::RightWrap 2025-10-28 09:20:57 +01:00
Eddy Bruel
1a195ba297 Fix 2025-10-27 11:19:22 +01:00
Eddy Bruel
b1cb63962e Remove spurious printlns 2025-10-27 11:13:50 +01:00
Admin
2176889023 Fused Id and LiveId 2025-10-25 20:53:30 +02:00
Admin
ad5ac76b10 dont turn on touch scroll by default, fix gradient 2025-10-25 20:03:29 +02:00
Julián Montes de Oca
dbf0ac96fc
Add focus loss detection to TextInput, for keyboard dismissal (#802)
TextInput now self-detects when user taps outside its area and dismisses the keyboard.
The tap event is not consumed.

Fixes keyboard staying open when tapping widgets that don't grab focus.
2025-10-25 19:42:32 +02:00
Julián Montes de Oca
cfde454ad2
Add touch-based drag scrolling to ScrollBar (#799)
* Add drag and flick scrolling to ScrollBars

* Move touch-based drag and flick implementation to ScrollBar
2025-10-25 19:41:36 +02:00
Julián Montes de Oca
8cd911a8e9
Fix Markdown and HTML ordered list numbering and alignment (#794)
* Fix numbered markdown lists repeating the first number

* Refactor list item padding calculation to accommodate multi-digit markers and fix alignment
2025-10-25 19:36:41 +02:00
Eddy Bruel
4f5bf512a0 Rethink selection drag scrolling as a post-op during draw 2025-10-24 11:40:36 +02:00
Eddy Bruel
16a742a9ff Implement vertical selection drag scrolling for TextInput 2025-10-23 10:48:02 +02:00
Eddy Bruel
c395817415 Add ascender to selection rects 2025-10-21 12:24:33 +02:00
alanpoon
6ce9aca06b
allow apply_over for image_scale and image_pan (#788) 2025-10-18 10:12:21 +02:00
Admin
2ee3aca1b7 moved id/value out 2025-10-13 11:19:58 +02:00
Eddy Bruel
fdf9d66e81 Implement min/max fits 2025-09-25 16:09:28 +02:00
makepaddev
6a9b75c601 fix elided lifetime warnings 2025-09-09 21:37:52 +02:00
Admin
fdab48a1b7 ai fixup 2025-09-09 09:37:35 +02:00
Admin
963cad9d81 sync load image sizes 2025-07-22 11:58:12 +02:00
Kevin Boos
8970147b06
Create PageFlip child widget within set_active_page() (#783)
This allows an app dev/user to create and populate a new widget
within the PageFlip parent widget *before* waiting for it to be drawn.
Previously, the child widgets within PageFlip were either created
upon app load (which is inefficient) or upon draw (which is too late).
2025-07-21 20:52:34 +02:00
Julián Montes de Oca
7fc2283327
Rework StackNavigation into an actual Stack (#766)
* Refactor stack navigation into a proper stack

 - Replace show_stack_view_by_id with push/pop/popToRoot methods
- Add proper navigation stack with history tracking
- Fix animation transitions between consecutive views
- Add stack inspection methods (depth, can_pop, current_view)
- Maintain backward compatibility with deprecated methods
- Update action enum to use Push/Pop/PopToRoot variants

* Add support for multiple instances of StackNavigation.

- Introduced full-screen flag necessary to disable full-screen positioning and sliding animations when needed.
2025-07-12 02:11:27 +02:00
alanpoon
a5b8f1bb6a
fix_small_spinner_not_showing (#782)
* fix_small_spinner_not_showing

* remove debug
2025-07-12 02:11:16 +02:00
Kevin Boos
13842ff545
Add PortalList::is_filling_viewport() (#781)
* Update old `windows-targets` dep version to reduce lockfile duplicates

All other crates in the Rust ecosystem depend on `windows-targets`
v0.52.*, so this small change vastly reduces the number of duplicate
`windows-*` crate dependencies that cargo must download and track in the lockfile.

Also address minor compiler warnings in AdaptiveView.

* Add `PortalList::is_filling_viewport()`

This is needed in order for an app to be able to take action
upon a portal list's viewport not being completely full.
For example, if you're showing a chat room, you can fetch older events
until there is enough history to fill the entire viewport.
2025-07-12 02:11:05 +02:00