glom r1820 - in trunk: . glom glom/libglom/data_structure/layout glom/reports
- From: murrayc svn gnome org
- To: svn-commits-list gnome org
- Subject: glom r1820 - in trunk: . glom glom/libglom/data_structure/layout glom/reports
- Date: Sun, 21 Dec 2008 16:13:15 +0000 (UTC)
Author: murrayc
Date: Sun Dec 21 16:13:15 2008
New Revision: 1820
URL: http://svn.gnome.org/viewvc/glom?rev=1820&view=rev
Log:
2008-12-21 Murray Cumming <murrayc murrayc com>
* glom/libglom/data_structure/layout/layoutitem_text.cc:
Copy constructor and operator=: Copy the underlying text, not just
the smartpointer to it. This stops us from accidentally changing the
empty available template parts in reports.
Ubuntu bug https://bugs.launchpad.net/ubuntu/+source/glom/+bug/309417
(elmergato)
Modified:
trunk/ChangeLog
trunk/glom/frame_glom.cc
trunk/glom/libglom/data_structure/layout/layoutitem_text.cc
trunk/glom/reports/dialog_layout_report.cc
Modified: trunk/glom/frame_glom.cc
==============================================================================
--- trunk/glom/frame_glom.cc (original)
+++ trunk/glom/frame_glom.cc Sun Dec 21 16:13:15 2008
@@ -1444,9 +1444,11 @@
{
Utils::get_glade_developer_widget_derived_with_warning("box_reports", m_pBox_Reports);
m_pDialog_Reports = new Dialog_Glom(m_pBox_Reports);
+ m_pDialog_Reports->set_transient_for(*(get_app_window()));
Utils::get_glade_developer_widget_derived_with_warning("window_report_layout", m_pDialogLayoutReport);
add_view(m_pDialogLayoutReport);
+ m_pDialogLayoutReport->set_transient_for(*(get_app_window()));
m_pDialogLayoutReport->signal_hide().connect( sigc::mem_fun(*this, &Frame_Glom::on_dialog_layout_report_hide) );
m_pDialog_Reports->get_vbox()->pack_start(*m_pBox_Reports);
Modified: trunk/glom/libglom/data_structure/layout/layoutitem_text.cc
==============================================================================
--- trunk/glom/libglom/data_structure/layout/layoutitem_text.cc (original)
+++ trunk/glom/libglom/data_structure/layout/layoutitem_text.cc Sun Dec 21 16:13:15 2008
@@ -27,14 +27,16 @@
LayoutItem_Text::LayoutItem_Text()
{
m_translatable_item_type = TRANSLATABLE_TYPE_TEXTOBJECT;
- m_text = sharedptr<TranslatableItem>::create();
+ m_text = sharedptr<TranslatableItem>::create(); //TODO: Why use a smartpointer?
}
LayoutItem_Text::LayoutItem_Text(const LayoutItem_Text& src)
: LayoutItem(src),
- m_text(src.m_text),
m_formatting(src.m_formatting)
{
+ //Copy the underlying TranslatableItem, not the shardptr to it:
+ const TranslatableItem& src_item = *(src.m_text);
+ m_text = sharedptr<TranslatableItem>(new TranslatableItem(src_item));
}
LayoutItem_Text::~LayoutItem_Text()
@@ -49,7 +51,7 @@
bool LayoutItem_Text::operator==(const LayoutItem_Text& src) const
{
bool result = LayoutItem::operator==(src) &&
- (*m_text == *(src.m_text)) &&
+ (*m_text == *(src.m_text)) && //TODO: Compare the underlying item, not the smartpointer?
(m_formatting == src.m_formatting);
return result;
@@ -60,7 +62,10 @@
{
LayoutItem::operator=(src);
- m_text = src.m_text;
+ //Copy the underlying TranslatableItem, not the shardptr to it:
+ const TranslatableItem& src_item = *(src.m_text);
+ m_text = sharedptr<TranslatableItem>(new TranslatableItem(src_item));
+
m_formatting = src.m_formatting;
return *this;
Modified: trunk/glom/reports/dialog_layout_report.cc
==============================================================================
--- trunk/glom/reports/dialog_layout_report.cc (original)
+++ trunk/glom/reports/dialog_layout_report.cc Sun Dec 21 16:13:15 2008
@@ -631,14 +631,20 @@
Glib::RefPtr<type_model> model_available = Glib::RefPtr<type_model>::cast_dynamic(m_treeview_available_parts->get_model());
Gtk::TreeModel::iterator parent = get_selected_group_parent();
- sharedptr<LayoutItem> pParentPart;
+ sharedptr<const LayoutItem> pParentPart;
if(parent)
- pParentPart = (*parent)[m_model_available_parts_main->m_columns.m_col_item];
+ {
+ sharedptr<LayoutItem> temp = (*parent)[m_model_available_parts_main->m_columns.m_col_item];
+ parent = temp;
+ }
Gtk::TreeModel::iterator available = get_selected_available();
- sharedptr<LayoutItem> pAvailablePart;
+ sharedptr<const LayoutItem> pAvailablePart;
if(available)
- pAvailablePart = (*available)[model_available->m_columns.m_col_item];
+ {
+ sharedptr<LayoutItem> temp = (*available)[model_available->m_columns.m_col_item];
+ pAvailablePart = temp;
+ }
//Check whether the available part may be a child of the selected parent:
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]