Skip to content

Commit 848ff5f

Browse files
authored
Add support for dragging panel tabs docked into other panel tab bars (#4006)
* Add support for dragging panel tabs docked into other panel tab bars * Fix terminology * Add Group suffix to PanelGroupId enums variants * Code review
1 parent 19aaeb3 commit 848ff5f

File tree

14 files changed

+627
-182
lines changed

14 files changed

+627
-182
lines changed

editor/src/dispatcher.rs

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ use crate::messages::debug::utility_types::MessageLoggingVerbosity;
22
use crate::messages::defer::DeferMessageContext;
33
use crate::messages::dialog::DialogMessageContext;
44
use crate::messages::layout::layout_message_handler::LayoutMessageContext;
5+
use crate::messages::portfolio::utility_types::PanelType;
56
use crate::messages::preferences::preferences_message_handler::PreferencesMessageContext;
67
use crate::messages::prelude::*;
78
use crate::messages::tool::common_functionality::utility_functions::make_path_editable_is_allowed;
@@ -234,9 +235,10 @@ impl Dispatcher {
234235
let menu_bar_message_handler = &mut self.message_handlers.menu_bar_message_handler;
235236

236237
menu_bar_message_handler.focus_document = self.message_handlers.portfolio_message_handler.focus_document;
237-
menu_bar_message_handler.data_panel_open = self.message_handlers.portfolio_message_handler.data_panel_open;
238-
menu_bar_message_handler.layers_panel_open = self.message_handlers.portfolio_message_handler.layers_panel_open;
239-
menu_bar_message_handler.properties_panel_open = self.message_handlers.portfolio_message_handler.properties_panel_open;
238+
let layout = &self.message_handlers.portfolio_message_handler.workspace_panel_layout;
239+
menu_bar_message_handler.data_panel_open = layout.is_panel_present(PanelType::Data);
240+
menu_bar_message_handler.layers_panel_open = layout.is_panel_present(PanelType::Layers);
241+
menu_bar_message_handler.properties_panel_open = layout.is_panel_present(PanelType::Properties);
240242
menu_bar_message_handler.message_logging_verbosity = self.message_handlers.debug_message_handler.message_logging_verbosity;
241243
menu_bar_message_handler.reset_node_definitions_on_open = self.message_handlers.portfolio_message_handler.reset_node_definitions_on_open;
242244

editor/src/messages/frontend/frontend_message.rs

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ use crate::messages::portfolio::document::node_graph::utility_types::{
99
};
1010
use crate::messages::portfolio::document::utility_types::nodes::{LayerPanelEntry, LayerStructureEntry};
1111
use crate::messages::portfolio::document::utility_types::wires::{WirePath, WirePathUpdate};
12+
use crate::messages::portfolio::utility_types::WorkspacePanelLayout;
1213
use crate::messages::prelude::*;
1314
use crate::messages::tool::tool_messages::eyedropper_tool::PrimarySecondary;
1415
use graph_craft::document::NodeId;
@@ -194,14 +195,9 @@ pub enum FrontendMessage {
194195
UpdateGraphViewOverlay {
195196
open: bool,
196197
},
197-
UpdateDataPanelState {
198-
open: bool,
199-
},
200-
UpdatePropertiesPanelState {
201-
open: bool,
202-
},
203-
UpdateLayersPanelState {
204-
open: bool,
198+
UpdateWorkspacePanelLayout {
199+
#[serde(rename = "panelLayout")]
200+
panel_layout: WorkspacePanelLayout,
205201
},
206202
UpdateLayout {
207203
#[serde(rename = "layoutTarget")]

editor/src/messages/portfolio/document/document_message_handler.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1021,8 +1021,8 @@ impl MessageHandler<DocumentMessage, DocumentMessageContext<'_>> for DocumentMes
10211021
}
10221022
}
10231023
}
1024-
DocumentMessage::SetActivePanel { active_panel: panel } => {
1025-
match panel {
1024+
DocumentMessage::SetActivePanel { active_panel } => {
1025+
match active_panel {
10261026
PanelType::Document => {
10271027
if self.graph_view_overlay_open {
10281028
self.selection_network_path.clone_from(&self.breadcrumb_network_path);

editor/src/messages/portfolio/portfolio_message.rs

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
use super::document::utility_types::document_metadata::LayerNodeIdentifier;
2-
use super::utility_types::PanelType;
2+
use super::utility_types::PanelGroupId;
33
use crate::messages::frontend::utility_types::{ExportBounds, FileType};
44
use crate::messages::portfolio::document::utility_types::clipboards::Clipboard;
55
use crate::messages::portfolio::utility_types::FontCatalog;
@@ -61,6 +61,11 @@ pub enum PortfolioMessage {
6161
LoadDocumentResources {
6262
document_id: DocumentId,
6363
},
64+
MovePanelTab {
65+
source_group: PanelGroupId,
66+
target_group: PanelGroupId,
67+
insert_index: usize,
68+
},
6469
NewDocumentWithName {
6570
name: String,
6671
},
@@ -130,10 +135,16 @@ pub enum PortfolioMessage {
130135
document_id: DocumentId,
131136
new_index: usize,
132137
},
138+
ReorderPanelGroupTab {
139+
group: PanelGroupId,
140+
old_index: usize,
141+
new_index: usize,
142+
},
133143
RequestWelcomeScreenButtonsLayout,
134144
RequestStatusBarInfoLayout,
135-
SetActivePanel {
136-
panel: PanelType,
145+
SetPanelGroupActiveTab {
146+
group: PanelGroupId,
147+
tab_index: usize,
137148
},
138149
SelectDocument {
139150
document_id: DocumentId,
@@ -161,4 +172,5 @@ pub enum PortfolioMessage {
161172
ToggleRulers,
162173
UpdateDocumentWidgets,
163174
UpdateOpenDocumentsList,
175+
UpdateWorkspacePanelLayout,
164176
}

0 commit comments

Comments
 (0)