[glom/glom-1-30] Dialog_Layout_Details: Handle top-level notebooks.
- From: Murray Cumming <murrayc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [glom/glom-1-30] Dialog_Layout_Details: Handle top-level notebooks.
- Date: Sun, 7 Feb 2016 21:53:52 +0000 (UTC)
commit deb6d97b5e561e05ac88b7863331148e59ecc399
Author: Murray Cumming <murrayc murrayc com>
Date: Thu Jan 28 23:16:53 2016 +0100
Dialog_Layout_Details: Handle top-level notebooks.
Instead of just assuming that all top-level groups are standard
groups. They could be derived groups, such as notebooks.
Bug #759511
glom/mode_design/layout/dialog_layout_details.cc | 29 ++++++++++++++++-----
1 files changed, 22 insertions(+), 7 deletions(-)
---
diff --git a/glom/mode_design/layout/dialog_layout_details.cc
b/glom/mode_design/layout/dialog_layout_details.cc
index b30e719..3d501ff 100644
--- a/glom/mode_design/layout/dialog_layout_details.cc
+++ b/glom/mode_design/layout/dialog_layout_details.cc
@@ -1062,15 +1062,30 @@ void Dialog_Layout_Details::save_to_document()
for(const auto& row : m_model_items->children())
{
std::shared_ptr<LayoutItem> layout_item = row[m_model_items->m_columns.m_col_layout_item];
- std::shared_ptr<LayoutGroup> layout_group = std::dynamic_pointer_cast<LayoutGroup>(layout_item);
- std::shared_ptr<LayoutItem_Portal> layout_portal =
std::dynamic_pointer_cast<LayoutItem_Portal>(layout_item);
- if(layout_group && !layout_portal) //There may be top-level groups, but no top-level fields, because
the fields must be in a group (so that they are in columns)
- {
- std::shared_ptr<LayoutGroup> group = std::make_shared<LayoutGroup>();
- fill_group(row, group);
- list_groups.push_back(group);
+ //There may be top-level groups, but no top-level fields, because the fields must be in a group (so
that they are in columns)
+ auto layout_group = std::dynamic_pointer_cast<LayoutGroup>(layout_item);
+ if(!layout_group)
+ continue;
+
+ //TODO: This is very ugly:
+ auto layout_portal = std::dynamic_pointer_cast<LayoutItem_Portal>(layout_item);
+ auto layout_calendar_portal = std::dynamic_pointer_cast<LayoutItem_CalendarPortal>(layout_item);
+ auto layout_notebook = std::dynamic_pointer_cast<LayoutItem_Notebook>(layout_item);
+ std::shared_ptr<LayoutGroup> group;
+ if(layout_portal) {
+ group = std::make_shared<LayoutItem_Portal>();
+ } else if(layout_calendar_portal) {
+ group = std::make_shared<LayoutItem_CalendarPortal>();
+ } else if(layout_notebook) {
+ group = std::make_shared<LayoutItem_Notebook>();
+ } else {
+ group = std::make_shared<LayoutGroup>();
}
+
+ fill_group(row, group);
+
+ list_groups.emplace_back(group);
}
if(document)
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]