T25d Generative: sound and motion
AudioGenerationPlayer shows a generated sound's prompt, model and length, a bar while it is made, then chat::AudioMessage to play it; Regenerate and Download wait for it. TTSVoicePicker lists voices with a sample to play, the chosen one washed with a check, tags dropping below when narrow. VideoGenerationTimeline lays shots along their time under a ruler, with posters, placeholders, a playhead and Extend. AudioMessage's waveform is one Tab stop where Left and Right seek, and it gives way at 280px. debug::ruler serves the timeline's ruler. A mask shown to read no longer follows the pointer.
This commit is contained in:
16 files changed
+1198
-19
No files matched your search
+13
-11
@@ -329,19 +329,21 @@ impl RenderOnce for InpaintCanvas {
|
||||
.size_full(),
|
||||
)
|
||||
.children(ring)
|
||||
.on_mouse_move(move |event, _, cx| {
|
||||
hover.update(cx, |pointer, cx| {
|
||||
*pointer = Some(event.position);
|
||||
cx.notify();
|
||||
})
|
||||
})
|
||||
.on_hover(move |hovered, _, cx| {
|
||||
if !hovered {
|
||||
leave.update(cx, |pointer, cx| {
|
||||
*pointer = None;
|
||||
.when(drawn, |area| {
|
||||
area.on_mouse_move(move |event, _, cx| {
|
||||
hover.update(cx, |pointer, cx| {
|
||||
*pointer = Some(event.position);
|
||||
cx.notify();
|
||||
})
|
||||
}
|
||||
})
|
||||
.on_hover(move |hovered, _, cx| {
|
||||
if !hovered {
|
||||
leave.update(cx, |pointer, cx| {
|
||||
*pointer = None;
|
||||
cx.notify();
|
||||
})
|
||||
}
|
||||
})
|
||||
})
|
||||
.on_key_down(move |event, window, cx| {
|
||||
let Some(keys) = &keys else {
|
||||
|
||||
Reference in new issue
Block a user