From 3a0d34c0240f4421737a6a08761f99d6f8140d02 Mon Sep 17 00:00:00 2001 From: Héctor Ramón Jiménez Date: Sat, 4 Mar 2023 05:37:11 +0100 Subject: Create `iced_widget` subcrate and re-organize the whole codebase --- examples/pane_grid/src/main.rs | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'examples/pane_grid/src') diff --git a/examples/pane_grid/src/main.rs b/examples/pane_grid/src/main.rs index c9f1376c..dfb80853 100644 --- a/examples/pane_grid/src/main.rs +++ b/examples/pane_grid/src/main.rs @@ -1,14 +1,16 @@ use iced::alignment::{self, Alignment}; +use iced::event::{self, Event}; use iced::executor; use iced::keyboard; +use iced::subscription; use iced::theme::{self, Theme}; use iced::widget::pane_grid::{self, PaneGrid}; -use iced::widget::{button, column, container, row, scrollable, text}; +use iced::widget::{ + button, column, container, responsive, row, scrollable, text, +}; use iced::{ Application, Color, Command, Element, Length, Settings, Size, Subscription, }; -use iced_lazy::responsive; -use iced_native::{event, subscription, Event}; pub fn main() -> iced::Result { Example::run(Settings::default()) -- cgit From 99aa54cd88d7eb99149699d539ee4d59e08047b1 Mon Sep 17 00:00:00 2001 From: Joao Freitas <51237625+jhff@users.noreply.github.com> Date: Tue, 16 May 2023 16:12:29 +0100 Subject: Add pane_grid functionality to split a pane with another pane --- examples/pane_grid/src/main.rs | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'examples/pane_grid/src') diff --git a/examples/pane_grid/src/main.rs b/examples/pane_grid/src/main.rs index dfb80853..d670e1e8 100644 --- a/examples/pane_grid/src/main.rs +++ b/examples/pane_grid/src/main.rs @@ -108,8 +108,12 @@ impl Application for Example { Message::Dragged(pane_grid::DragEvent::Dropped { pane, target, + region, }) => { - self.panes.swap(&pane, &target); + if let Some(state) = self.panes.get(&pane) { + let pane = (*state, &pane); + self.panes.split_with(&target, pane, region); + } } Message::Dragged(_) => {} Message::TogglePin(pane) => { @@ -255,6 +259,7 @@ fn handle_hotkey(key_code: keyboard::KeyCode) -> Option { } } +#[derive(Clone, Copy)] struct Pane { id: usize, pub is_pinned: bool, -- cgit From bc590e2d6f3a39b09b11928c829f05d7bc9f9211 Mon Sep 17 00:00:00 2001 From: Joao Freitas <51237625+jhff@users.noreply.github.com> Date: Fri, 19 May 2023 12:12:08 +0100 Subject: Take pane state internally --- examples/pane_grid/src/main.rs | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) (limited to 'examples/pane_grid/src') diff --git a/examples/pane_grid/src/main.rs b/examples/pane_grid/src/main.rs index d670e1e8..2ffdcc69 100644 --- a/examples/pane_grid/src/main.rs +++ b/examples/pane_grid/src/main.rs @@ -110,10 +110,7 @@ impl Application for Example { target, region, }) => { - if let Some(state) = self.panes.get(&pane) { - let pane = (*state, &pane); - self.panes.split_with(&target, pane, region); - } + self.panes.split_with(&target, &pane, region); } Message::Dragged(_) => {} Message::TogglePin(pane) => { -- cgit From 57db196c3a169fe1ecd654e9b58ce66defa5dd7e Mon Sep 17 00:00:00 2001 From: Héctor Ramón Jiménez Date: Thu, 8 Jun 2023 20:23:47 +0200 Subject: Increase width of controls in `pane_grid` example --- examples/pane_grid/src/main.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'examples/pane_grid/src') diff --git a/examples/pane_grid/src/main.rs b/examples/pane_grid/src/main.rs index 2ffdcc69..54c36d69 100644 --- a/examples/pane_grid/src/main.rs +++ b/examples/pane_grid/src/main.rs @@ -300,7 +300,7 @@ fn view_content<'a>( ) ] .spacing(5) - .max_width(150); + .max_width(160); if total_panes > 1 && !is_pinned { controls = controls.push( -- cgit From e5c9dd54b3f51e913f39b38e8907c321c8bfd040 Mon Sep 17 00:00:00 2001 From: Joao Freitas <51237625+jhff@users.noreply.github.com> Date: Fri, 19 May 2023 11:24:52 +0100 Subject: Add ability to drag pane to the pane grid edges & optional style for dragged pane --- examples/pane_grid/src/main.rs | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) (limited to 'examples/pane_grid/src') diff --git a/examples/pane_grid/src/main.rs b/examples/pane_grid/src/main.rs index 54c36d69..c5652e2d 100644 --- a/examples/pane_grid/src/main.rs +++ b/examples/pane_grid/src/main.rs @@ -108,10 +108,15 @@ impl Application for Example { Message::Dragged(pane_grid::DragEvent::Dropped { pane, target, - region, - }) => { - self.panes.split_with(&target, &pane, region); - } + }) => match target { + pane_grid::Target::PaneGrid(edge) => { + self.panes.move_to_edge(&pane, edge) + } + pane_grid::Target::Pane { + pane: target, + region, + } => self.panes.split_with(&target, &pane, region), + }, Message::Dragged(_) => {} Message::TogglePin(pane) => { if let Some(Pane { is_pinned, .. }) = self.panes.get_mut(&pane) -- cgit From ecce8bbcee45dddedef8a33bf3dc086d76c27b39 Mon Sep 17 00:00:00 2001 From: Héctor Ramón Jiménez Date: Thu, 6 Jul 2023 07:37:51 +0200 Subject: Simplify `Target` enum in `widget::pane_grid` --- examples/pane_grid/src/main.rs | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) (limited to 'examples/pane_grid/src') diff --git a/examples/pane_grid/src/main.rs b/examples/pane_grid/src/main.rs index c5652e2d..1361eeb9 100644 --- a/examples/pane_grid/src/main.rs +++ b/examples/pane_grid/src/main.rs @@ -109,13 +109,12 @@ impl Application for Example { pane, target, }) => match target { - pane_grid::Target::PaneGrid(edge) => { + pane_grid::Target::Edge(edge) => { self.panes.move_to_edge(&pane, edge) } - pane_grid::Target::Pane { - pane: target, - region, - } => self.panes.split_with(&target, &pane, region), + pane_grid::Target::Pane(target, region) => { + self.panes.split_with(&target, &pane, region) + } }, Message::Dragged(_) => {} Message::TogglePin(pane) => { -- cgit From c5a623f32b3d972501bb02d87d296381b66f9481 Mon Sep 17 00:00:00 2001 From: Héctor Ramón Jiménez Date: Thu, 6 Jul 2023 07:45:47 +0200 Subject: Introduce `drop` helper to `pane_grid::State` --- examples/pane_grid/src/main.rs | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) (limited to 'examples/pane_grid/src') diff --git a/examples/pane_grid/src/main.rs b/examples/pane_grid/src/main.rs index 1361eeb9..04896e20 100644 --- a/examples/pane_grid/src/main.rs +++ b/examples/pane_grid/src/main.rs @@ -108,14 +108,9 @@ impl Application for Example { Message::Dragged(pane_grid::DragEvent::Dropped { pane, target, - }) => match target { - pane_grid::Target::Edge(edge) => { - self.panes.move_to_edge(&pane, edge) - } - pane_grid::Target::Pane(target, region) => { - self.panes.split_with(&target, &pane, region) - } - }, + }) => { + self.panes.drop(&pane, target); + } Message::Dragged(_) => {} Message::TogglePin(pane) => { if let Some(Pane { is_pinned, .. }) = self.panes.get_mut(&pane) -- cgit