Some checks failed
CI / Rustfmt + Clippy (push) Has been cancelled
CI / Check (android) (push) Has been cancelled
CI / Test (Linux) (push) Has been cancelled
CI / Test (macOS) (push) Has been cancelled
CI / Test (Windows) (push) Has been cancelled
CI / rpm/deb (aarch64) (push) Has been cancelled
CI / rpm/deb (x86_64) (push) Has been cancelled
CI / macOS dmg (aarch64) (push) Has been cancelled
CI / macOS dmg (x86_64) (push) Has been cancelled
CI / Windows Installer (aarch64) (push) Has been cancelled
CI / Windows Installer (x86_64) (push) Has been cancelled
CI / Upload Artifacts to Server (push) Has been cancelled
This reworks how we detect and respond to the on-screen keyboard so inputs don’t get buried and the UI doesn’t “jump”. - Add SoftKeyboardAnim + AnimState FSM for smooth IME open/close animation - Centralize logic in keyboard_visibility() with clear edge states - Animate keyboard height via animate_value_with_time instead of layer transforms - Add ChromeOptions::KeyboardVisibility flag when focused input would be occluded - Add SidebarOptions::Compact to collapse sidebar while typing - Hide mobile toolbar when keyboard is open (columns app) - Use .stick_to_bottom(true) in reply + profile editors; remove old spacer hack - Virtual keyboard toggle moved to F1 in Debug builds - Introduce SoftKeyboardContext::platform(ctx) helper - Cleanup dead/commented code and wire up soft_kb_anim_state in Chrome Result: inputs stay visible, open/close is smooth, and UI adjusts gracefully when typing. Signed-off-by: William Casarin <jb55@jb55.com>
39 lines
1018 B
Rust
39 lines
1018 B
Rust
use bitflags::bitflags;
|
|
|
|
bitflags! {
|
|
#[repr(transparent)]
|
|
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
|
pub struct ChromeOptions: u64 {
|
|
/// Is the chrome currently open?
|
|
const NoOptions = 0;
|
|
|
|
/// Is the chrome currently open?
|
|
const IsOpen = 1 << 0;
|
|
|
|
/// Are we simulating a virtual keyboard? This is mostly for debugging
|
|
/// if we are too lazy to open up a real mobile device with soft
|
|
/// keyboard
|
|
const VirtualKeyboard = 1 << 1;
|
|
|
|
/// Are we showing the memory debug window?
|
|
const MemoryDebug = 1 << 2;
|
|
|
|
/// Repaint debug
|
|
const RepaintDebug = 1 << 3;
|
|
|
|
/// We need soft keyboard visibility
|
|
const KeyboardVisibility = 1 << 4;
|
|
}
|
|
}
|
|
|
|
impl Default for ChromeOptions {
|
|
fn default() -> Self {
|
|
let mut options = ChromeOptions::NoOptions;
|
|
options.set(
|
|
ChromeOptions::IsOpen,
|
|
!notedeck::ui::is_compiled_as_mobile(),
|
|
);
|
|
options
|
|
}
|
|
}
|