aboutsummaryrefslogtreecommitdiff
path: root/src/app/state.rs
diff options
context:
space:
mode:
authorOgulcan Celik <ogulcancelik@gmail.com>2026-03-29 23:16:44 +0300
committerOgulcan Celik <ogulcancelik@gmail.com>2026-03-29 23:16:44 +0300
commit00e5da8704ecc1a59fbb270e01defdf7dcd9593e (patch)
tree86aacc5ee279901e9ec4ab493c3f9cc2bcbd0420 /src/app/state.rs
parenta2024253401f1bf2952290bf549dc71ca73502db (diff)
add mouse-driven popup interactions
Diffstat (limited to 'src/app/state.rs')
-rw-r--r--src/app/state.rs24
1 files changed, 22 insertions, 2 deletions
diff --git a/src/app/state.rs b/src/app/state.rs
index 186ede78..fcde6bff 100644
--- a/src/app/state.rs
+++ b/src/app/state.rs
@@ -396,15 +396,33 @@ pub(crate) struct DragState {
pub area: Rect,
}
+#[derive(Debug, Clone, Copy, PartialEq, Eq)]
+pub enum ContextMenuKind {
+ Workspace { ws_idx: usize },
+ Pane,
+}
+
/// Right-click context menu state.
pub struct ContextMenuState {
- pub ws_idx: usize,
+ pub kind: ContextMenuKind,
pub x: u16,
pub y: u16,
pub selected: usize,
}
-pub const CONTEXT_MENU_ITEMS: &[&str] = &["Rename", "Close"];
+impl ContextMenuState {
+ pub fn items(&self) -> &'static [&'static str] {
+ match self.kind {
+ ContextMenuKind::Workspace { .. } => &["Rename", "Close"],
+ ContextMenuKind::Pane => &[
+ "Split vertical",
+ "Split horizontal",
+ "Fullscreen",
+ "Close pane",
+ ],
+ }
+ }
+}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum ToastKind {
@@ -448,6 +466,7 @@ pub struct AppState {
pub sidebar_width: u16,
pub sidebar_collapsed: bool,
pub confirm_close: bool,
+ pub confirm_close_selected_confirm: bool,
#[allow(dead_code)] // kept for backward compat; palette.accent is the source of truth
pub accent: Color,
pub sound: SoundConfig,
@@ -537,6 +556,7 @@ impl AppState {
sidebar_width: 26,
sidebar_collapsed: false,
confirm_close: true,
+ confirm_close_selected_confirm: true,
accent: Color::Cyan,
sound: SoundConfig {
enabled: false,