Commit graph

1,863 commits

Author SHA1 Message Date
Admin
04e4c51ab8 implicit io markers 2026-02-27 08:36:46 +01:00
Admin
deaf6303d7 studio2 otw 2026-02-26 21:07:27 +01:00
offline-ant
b3cec2dd2d
cargo-makepad android: use crate name for Rust .so lookup (#893)
Co-authored-by: ant <ant@offline.click>
2026-02-26 20:00:04 +01:00
Admin
8ac86f0666 fix up voice build on non tahoe 2026-02-26 15:22:40 +01:00
Julián Montes de Oca
0675c98cc8
Restore StackNavigation widget, add examples to ui-zoo (#892) 2026-02-26 13:54:36 +01:00
alanpoon
7bee85bb3e
agent_acp (#888) 2026-02-26 11:36:12 +01:00
offline-ant
8549e70668
gl_render_bridge: fix Android EGL wiring and reset GL state on restore (#889)
Fix EGL context initialization on Android to properly wire up the GL
render bridge display/context/surface.

Add GL state reset in restore_gl_context on Linux/Android to prevent
state leakage from external GL consumers (e.g. Servo) back into the
Makepad render pipeline.

Co-authored-by: ant <ant@offline.click>
2026-02-26 11:35:54 +01:00
offline-ant
31f2a41038
cargo-makepad: cross-platform icon build pipeline and desktop packaging (#890)
Refactor app icon handling into a unified app_icon module that replaces
the old window_icon.rs. Build-time icon generation produces platform-
native formats (ICO with multiple sizes for Windows, ICNS for macOS,
multi-resolution PNGs for Linux/Wayland/X11).

Add `cargo makepad desktop` subcommand for desktop packaging with
automatic icon detection from MAKEPAD_APP_ICON_PATH env var, or from
Cargo package metadata.

Resolve binary names from [[bin]] targets in Cargo.toml so .app bundles,
.exe outputs, and APK labels use the correct name instead of defaulting
to the package name.

Use llvm-rc for Windows .res generation (cross-compilation compatible)
with absolute link paths for reliable resource embedding.

Co-authored-by: ant <ant@offline.click>
2026-02-26 11:33:26 +01:00
offline-ant
a00db2bf04
FOOTGUN FIX: panic on nil return from script_mod! in from_script_mod (#891)
When script_mod! is used with 'let app = startup() do ...' but the
block omits the final 'app' expression, the module returns nil. This
silently creates an App with an empty WidgetRef -- no window, no UI,
no error. The app runs indefinitely doing nothing.

Panic with an actionable message instead of silently succeeding.

Co-authored-by: ant <ant@offline.click>
2026-02-26 11:32:47 +01:00
Admin
8b42b20198 restore merge script 2026-02-26 10:09:28 +01:00
Admin
9cf7fbb8b7 new merge script 2026-02-26 10:08:25 +01:00
Admin
813844becc counter splash example 2026-02-26 10:08:25 +01:00
Admin
22ebf59337 text layout
\
2026-02-26 10:08:22 +01:00
offline-ant
690be7c85d
widgets: add Label visible live property support (#885)
Co-authored-by: ant <ant@offline.click>
2026-02-26 08:24:29 +01:00
Kevin Boos
3db5766d33
Fix circle view (#887)
* Fix `CircleView` shader, support true circle shader behavior

Add CircleView examples w/ variety to `uizoo`

* splash example: fix popup notification behavior
2026-02-26 08:17:49 +01:00
admin
ddca609ad8 api 2026-02-25 17:14:39 +01:00
Kevin Boos
d1737883da
FIx Icon, improve to support IconRotated, expose geom in draw_svg (#883)
* Fix draw_svg to support a rotated Icon. Add `IconRotated` widget.

Fix icon resource paths in `splash` example

* Expose geometry in draw_svg to make icon/svg rotation more efficient

simplifies the code too
2026-02-25 13:05:14 +01:00
offline-ant
8f3451c5cb
restore set_window_icon lost during rebase of #877 (#880)
The rebase squash into 26318769 used the early draft of window_icon.rs,
dropping the OnceLock-based global setter added in the fixup commit.

Restore from pre-rebase commit 83bf5d62:
- add static GLOBAL_ICON: OnceLock<WindowIcon>
- add pub fn set_window_icon(icon: WindowIcon)
- refactor default_window_icon() to check global override first
- re-export set_window_icon from platform lib.rs

Co-authored-by: ant <ant@offline.click>
2026-02-25 13:05:00 +01:00
Sabin Regmi
ec983c982a
Remove left margin from window caption label (#884)
* Remove left margin from window caption label

Delete the hardcoded Inset{left: 100} margin on the caption Label in widgets/src/window.rs so the label can be centered by the parent layout. This cleans up alignment and removes an unnecessary offset in the window header.

* Use window title in caption; format button click

Apply the configured window title to the window caption and make a small UI code cleanup.

- examples/splash: set window.title to "Splash Example" and reformat the tooltip button click check to a multiline expression for readability.
- widgets/src/window.rs: import label::* and update ensure_initialized to copy cx.windows[window_id].create_title into the caption_label when non-empty so the window chrome shows the configured title.
2026-02-25 13:04:46 +01:00
Admin
33eeb0d244 little glitches in script engine 2026-02-24 23:32:56 +01:00
Admin
8aab18f4d9 warnings 2026-02-24 21:43:35 +01:00
Admin
677d2ba934 cleanup warnings 2026-02-24 21:40:08 +01:00
Admin
d75499e215 edmx 2026-02-24 21:40:08 +01:00
Admin
688da80e11 fix gc issues 2026-02-24 21:40:08 +01:00
Kevin Boos
c3cd1f034a
Add missing callout tooltip file (#882) 2026-02-24 19:59:44 +01:00
Kevin Boos
c0082cc323
Fix Tooltip behavior and structure. Add CalloutTooltip widget (#881)
The CalloutTooltip is a fancier wrapper atop Tooltip that allows
the user to display a tooltip with a callout triangle that points
at a particular widget, making it clearer what the tooltip
corresponds to. It also supports a custom text color, background color,
positioning suggestion (top, right, left, bottom), full text wrapping,
and dynamically resize and re-orient itself to fit within the app screen.
2026-02-24 19:43:06 +01:00
offline-ant
1519ca78cc
add cross-platform GL render bridge for external GL consumers (#878)
New GlRenderBridge API lets external code (e.g. servo in havi) render
via GL into a makepad-displayable texture with zero-copy.

Platform backends:
- Linux/Android: wraps existing EGL context (EglRenderBridge)
- Windows: ANGLE EGL on D3D11 device via mozangle (AngleRenderBridge)
- macOS: standalone CGL 3.2 Core bridged to Metal via IOSurface (CglRenderBridge)

Cx methods: create_gl_render_bridge, create_gl_render_bridge_texture,
restore_gl_context -- all platform-dispatched via cfg.

Co-authored-by: ant <ant@offline.click>
2026-02-24 17:32:08 +01:00
offline-ant
b14e9cf45f
fix(wayland): negate scroll axis values to match Makepad convention (#875)
Wayland wl_pointer::Axis values are defined as motion-event vectors:
positive vertical = downward on screen. This means positive values
represent content sliding down under the pointer, i.e. the viewport
moving UP.

Makepad's internal scroll convention is positive = viewport moves DOWN.
This matches X11 (button 4/up maps to negative, button 5/down maps to
positive) and macOS (which negates scrollingDeltaY for the same reason).
The web backend also follows this via browser deltaY semantics.

The Wayland backend was passing axis values through without negation,
producing reversed scroll on all Wayland sessions. Negate at the
accumulator stage, consistent with how winit handles the same mismatch
(explicit comment: "Wayland sign convention is the inverse of winit").

The ignored AxisRelativeDirection event is unrelated -- it is a hint
telling clients whether the compositor applied natural-scrolling
inversion to the axis values, intended for widgets like volume sliders
that should track physical finger direction. The axis values themselves
already have natural scrolling applied by the compositor.

Co-authored-by: ant <ant@offline.click>
2026-02-24 17:31:04 +01:00
offline-ant
2631876982
Add cross-platform window icon support (#877)
Add WindowIcon and WindowIconBuffer types to platform/src/window.rs with
RGBA8 pixel buffer data. Embed a default 64x64 Makepad icon generated at
runtime (dark rounded rect with white M glyph).

Platform backends:

- Windows: CreateIcon from RGBA->BGRA data, set on WNDCLASSEXW.hIcon
- X11: XChangeProperty with _NET_WM_ICON atom (RGBA->ARGB u32 array)
- macOS: NSBitmapImageRep + NSImage, setApplicationIconImage on NSApp
- Wayland: vendor xdg-toplevel-icon-v1 protocol, regenerate bindings,
  bind wl_shm + xdg_toplevel_icon_manager_v1 globals, create shm buffer
  icon when compositor supports it, silent fallback to app_id otherwise.
  Use configurable create_app_id field (default "Makepad").

Codegen: extend tools/wayland_codegen to generate xdg toplevel_icon
bindings into libs/linux/wayland-protocols/src/xdg.rs.

Co-authored-by: ant <ant@offline.click>
2026-02-24 17:30:43 +01:00
Admin
7813788fcd text cast in set_text 2026-02-24 17:12:54 +01:00
Admin
81c3dc5dd9 fix android sdk install issues 2026-02-24 17:06:21 +01:00
Admin
f37bb78aaf fix linux 2026-02-24 16:49:11 +01:00
Admin
94c459cee9 add splash test/set text 2026-02-24 16:33:36 +01:00
Admin
35f01b85a0 ssl sockets 2026-02-24 16:28:21 +01:00
Admin
9d18257fd1 add source to components 2026-02-24 14:40:08 +01:00
Admin
7816d8da43 network refactor 2026-02-24 14:04:37 +01:00
Admin
ca17ee8baa splice out a makepad-network crate 2026-02-23 23:21:31 +01:00
Admin
7752acdf13 dropshadows back 2026-02-23 21:09:52 +01:00
Admin
5486630d21 splat 2026-02-23 19:15:37 +01:00
Admin
aa056e8053 fix dx11 memleak 2026-02-23 18:30:26 +01:00
Admin
7dc1249b4f fix up uizoo 2026-02-23 18:00:19 +01:00
offline-ant
ddbf066580
platform: unified StudioToApp dispatch and control channel (#874)
* platform: unified StudioToApp dispatch and control channel

Shared dispatch_studio_msg() in cx_shared.rs handles all common
StudioToApp variants (input, clipboard, screenshot, widget dump, kill).
Each stdin backend resolves window_id for mouse events, then delegates.

Control channel (web_socket.rs) enables StudioToApp dispatch in windowed
apps. Event loops poll it alongside their native event sources.

WindowGeomChange events are emitted on stdin geometry updates.

* fix RunView Y-flip on Linux: flip in shader instead of CPU readback

---------

Co-authored-by: ant <ant@offline.click>
2026-02-23 17:46:41 +01:00
offline-ant
d2b0513138
defer aux-channel accept until binary starts running (#873)
accept_host_endpoint() has a 10s timeout. Calling it at spawn time
fails for any build that takes longer to compile. Defer to when
"Running " appears in stderr, which is when the binary actually
starts and connects to the aux channel.

build_server: match+return instead of expect on spawn failure.

Co-authored-by: ant <ant@offline.click>
2026-02-23 17:46:07 +01:00
offline-ant
751e8d994d
macOS IOSurface render texture support for havishell (#872)
Co-authored-by: ant <ant@offline.click>
2026-02-23 17:45:54 +01:00
offline-ant
cd90738d8d
fix Studio crash on child process failure (#871)
build_client: log instead of panic on closed channel.

Co-authored-by: ant <ant@offline.click>
2026-02-23 17:45:40 +01:00
offline-ant
c9e36d14c8
fix: map atan2 to atan in GLSL shader backend (#870)
Co-authored-by: ant <ant@offline.click>
2026-02-23 17:45:22 +01:00
offline-ant
759eeec03c
widgets: expose Label and View fields for external composition (#869)
Co-authored-by: ant <ant@offline.click>
2026-02-23 17:44:49 +01:00
offline-ant
adfa3dbace
wayland: edge-resize, scroll acceleration, seat v5 binding (#868)
Co-authored-by: ant <ant@offline.click>
2026-02-23 17:44:34 +01:00
Admin
a8135d72e2 fix windows 2026-02-23 17:22:39 +01:00
Admin
1b38aad46f tunnel 2026-02-23 16:55:20 +01:00