Skip to content
Snippets Groups Projects
Commit dfd2fc6e authored by Alberto Nidasio's avatar Alberto Nidasio
Browse files

Added ESC shortcut to close maximized pane and disabled other shortcuts while a pane is maximized

parent f32848f3
Branches
No related tags found
1 merge request!1Pane maximization
...@@ -47,6 +47,7 @@ impl eframe::App for ComposableView { ...@@ -47,6 +47,7 @@ impl eframe::App for ComposableView {
((Modifiers::NONE, Key::H), PaneAction::SplitH), ((Modifiers::NONE, Key::H), PaneAction::SplitH),
((Modifiers::NONE, Key::C), PaneAction::Close), ((Modifiers::NONE, Key::C), PaneAction::Close),
((Modifiers::SHIFT, Key::Escape), PaneAction::Maximize), ((Modifiers::SHIFT, Key::Escape), PaneAction::Maximize),
((Modifiers::NONE, Key::Escape), PaneAction::Exit),
]; ];
pane_action = pane_action.or(shortcuts::map_to_action(ctx, &key_action_pairs[..]) pane_action = pane_action.or(shortcuts::map_to_action(ctx, &key_action_pairs[..])
.map(|action| (action, hovered_pane))); .map(|action| (action, hovered_pane)));
...@@ -56,6 +57,7 @@ impl eframe::App for ComposableView { ...@@ -56,6 +57,7 @@ impl eframe::App for ComposableView {
if let Some((action, hovered_tile)) = pane_action.take() { if let Some((action, hovered_tile)) = pane_action.take() {
match action { match action {
PaneAction::SplitH => { PaneAction::SplitH => {
if self.maximized_pane.is_none() {
let hovered_tile_pane = panes_tree.tiles.remove(hovered_tile).unwrap(); let hovered_tile_pane = panes_tree.tiles.remove(hovered_tile).unwrap();
let left_pane = panes_tree.tiles.insert_new(hovered_tile_pane); let left_pane = panes_tree.tiles.insert_new(hovered_tile_pane);
let right_pane = panes_tree.tiles.insert_pane(Pane::default()); let right_pane = panes_tree.tiles.insert_pane(Pane::default());
...@@ -68,7 +70,9 @@ impl eframe::App for ComposableView { ...@@ -68,7 +70,9 @@ impl eframe::App for ComposableView {
))), ))),
); );
} }
}
PaneAction::SplitV => { PaneAction::SplitV => {
if self.maximized_pane.is_none() {
let hovered_tile_pane = panes_tree.tiles.remove(hovered_tile).unwrap(); let hovered_tile_pane = panes_tree.tiles.remove(hovered_tile).unwrap();
let replaced = panes_tree.tiles.insert_new(hovered_tile_pane); let replaced = panes_tree.tiles.insert_new(hovered_tile_pane);
let lower_pane = panes_tree.tiles.insert_pane(Pane::default()); let lower_pane = panes_tree.tiles.insert_pane(Pane::default());
...@@ -81,9 +85,10 @@ impl eframe::App for ComposableView { ...@@ -81,9 +85,10 @@ impl eframe::App for ComposableView {
))), ))),
); );
} }
}
PaneAction::Close => { PaneAction::Close => {
// Ignore if the root pane is the only one // Ignore if the root pane is the only one
if panes_tree.tiles.len() != 1 { if panes_tree.tiles.len() != 1 && self.maximized_pane.is_none() {
panes_tree.remove_recursively(hovered_tile); panes_tree.remove_recursively(hovered_tile);
} }
} }
...@@ -111,6 +116,11 @@ impl eframe::App for ComposableView { ...@@ -111,6 +116,11 @@ impl eframe::App for ComposableView {
} }
} }
} }
PaneAction::Exit => {
if self.maximized_pane.is_some() {
self.maximized_pane = None;
}
}
} }
} }
...@@ -279,4 +289,5 @@ pub enum PaneAction { ...@@ -279,4 +289,5 @@ pub enum PaneAction {
Close, Close,
Replace(Box<Pane>), Replace(Box<Pane>),
Maximize, Maximize,
Exit,
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment