R6.12, R6.13: the LOK worker has no Dock icon; Show turns slides

R6.12: on macOS the worker sets LibreOffice's own NSApplication to the
accessory policy before the kit starts, so it never shows in the Dock.

R6.13: when the whole slide fits, the wheel and Up/Down (nothing
selected, no text editing) turn slides in the ElyShow editor.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
ZacharyZhang-NYandClaude Opus 5.5 committed 2026-10-15 19:29:10 -04:00
1 parent bb943fb84b
commit fdb8317d24
14 files changed
+312 -19

No files matched your search

+15 -1
View File
@@ -9,10 +9,11 @@ use ely_gpui_component::{
};
use ely_office::prelude::*;
use gpui::{
Action, App, Context, Div, InteractiveElement as _, IntoElement, Menu, MenuItem,
Action, App, Context, Div, Entity, InteractiveElement as _, IntoElement, Menu, MenuItem,
ParentElement as _, Render, RenderImage, Role, StatefulInteractiveElement as _, Styled as _,
WeakEntity, Window, actions, div, img, prelude::FluentBuilder as _, px,
};
use ely_lok::LokView;
use image::{Frame, ImageBuffer, Rgba};
use crate::deck::Deck;
@@ -98,6 +99,19 @@ impl Deck {
self.run_active(id, &[], cx);
}
/// Shows the slide `step` away, as the strip would.
pub(crate) fn turn(&mut self, id: u64, view: &Entity<LokView>, step: i32, cx: &mut Context<Self>) {
let Some(count) = self.tab(id).map(|tab| tab.extra.slides.list.len()).filter(|count| *count > 0) else {
return;
};
// From the part asked last, so quick turns add up.
let shown = view.read(cx).part();
let part = (shown as i64 + i64::from(step)).clamp(0, count as i64 - 1) as usize;
if part != shown {
view.update(cx, |view, _| view.show_part(part));
}
}
/// Paints the next missing or stale slide picture.
pub fn paint_next(&mut self, id: u64, cx: &mut Context<Self>) {
let Some(tab) = self.tab(id) else {