[glom] Dialog_Properties: Allow more null pointer checks.
- From: Murray Cumming <murrayc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [glom] Dialog_Properties: Allow more null pointer checks.
- Date: Sat, 16 Nov 2013 10:48:15 +0000 (UTC)
commit 94d8acc35dbfeeafb4ad2fbdcd84e6066f0ccd39
Author: Murray Cumming <murrayc murrayc com>
Date: Sat Nov 16 11:46:25 2013 +0100
Dialog_Properties: Allow more null pointer checks.
.../mode_design/fields/dialog_defaultformatting.cc | 2 +-
glom/mode_design/fields/dialog_fieldcalculation.cc | 2 +-
glom/mode_design/fields/dialog_fielddefinition.cc | 8 +++---
.../layout_item_dialogs/dialog_buttonscript.cc | 2 +-
.../layout_item_dialogs/dialog_imageobject.cc | 2 +-
.../layout/layout_item_dialogs/dialog_line.cc | 2 +-
.../layout_item_dialogs/dialog_textobject.cc | 2 +-
.../script_library/dialog_script_library.cc | 2 +-
glom/utility_widgets/dialog_properties.cc | 29 ++++++++++++++-----
glom/utility_widgets/dialog_properties.h | 8 ++++-
10 files changed, 38 insertions(+), 21 deletions(-)
---
diff --git a/glom/mode_design/fields/dialog_defaultformatting.cc
b/glom/mode_design/fields/dialog_defaultformatting.cc
index ecb17a0..7e667a2 100644
--- a/glom/mode_design/fields/dialog_defaultformatting.cc
+++ b/glom/mode_design/fields/dialog_defaultformatting.cc
@@ -51,7 +51,7 @@ Dialog_DefaultFormatting::Dialog_DefaultFormatting(BaseObjectType* cobject, cons
if(m_box_formatting)
{
- on_foreach_connect(*m_box_formatting);
+ on_foreach_connect(m_box_formatting);
//Plus an extra signal for the related extra show-also fields:
m_box_formatting->signal_modified().connect(
diff --git a/glom/mode_design/fields/dialog_fieldcalculation.cc
b/glom/mode_design/fields/dialog_fieldcalculation.cc
index dba8411..d103882 100644
--- a/glom/mode_design/fields/dialog_fieldcalculation.cc
+++ b/glom/mode_design/fields/dialog_fieldcalculation.cc
@@ -45,7 +45,7 @@ Dialog_FieldCalculation::Dialog_FieldCalculation(BaseObjectType* cobject, const
builder->get_widget("label_triggered_by", m_label_triggered_by);
m_button_test->signal_clicked().connect( sigc::mem_fun(*this, &Dialog_FieldCalculation::on_button_test) );
- //on_foreach_connect(*this);
+ //on_foreach_connect(this);
if(m_text_view)
{
diff --git a/glom/mode_design/fields/dialog_fielddefinition.cc
b/glom/mode_design/fields/dialog_fielddefinition.cc
index 8e1edd6..edc5a4c 100644
--- a/glom/mode_design/fields/dialog_fielddefinition.cc
+++ b/glom/mode_design/fields/dialog_fielddefinition.cc
@@ -93,9 +93,9 @@ Dialog_FieldDefinition::Dialog_FieldDefinition(BaseObjectType* cobject, const Gl
on_combo_type_changed();
- on_foreach_connect(*this);
- on_foreach_connect(*m_pBox_DefaultValueSimple);
- on_foreach_connect(*m_pBox_ValueTab);
+ on_foreach_connect(this);
+ on_foreach_connect(m_pBox_DefaultValueSimple);
+ on_foreach_connect(m_pBox_ValueTab);
Dialog_Properties::set_modified(false);
@@ -150,7 +150,7 @@ void Dialog_FieldDefinition::set_field(const sharedptr<const Field>& field, cons
if(!m_pDataWidget_DefaultValueSimple->get_data_child_widget())
std::cerr << G_STRFUNC << ": The DataWidget did not create a child widget." << std::endl;
- on_foreach_connect(*m_pDataWidget_DefaultValueSimple);
+ on_foreach_connect(m_pDataWidget_DefaultValueSimple);
Gtk::Label* pLabel = m_pDataWidget_DefaultValueSimple->get_label();
if(!pLabel->get_text().empty())
diff --git a/glom/mode_design/layout/layout_item_dialogs/dialog_buttonscript.cc
b/glom/mode_design/layout/layout_item_dialogs/dialog_buttonscript.cc
index 7c929e0..3ff5637 100644
--- a/glom/mode_design/layout/layout_item_dialogs/dialog_buttonscript.cc
+++ b/glom/mode_design/layout/layout_item_dialogs/dialog_buttonscript.cc
@@ -47,7 +47,7 @@ Dialog_ButtonScript::Dialog_ButtonScript(BaseObjectType* cobject, const Glib::Re
// Set a monospace font
m_text_view_script->override_font(Pango::FontDescription("Monospace"));
- //on_foreach_connect(*this);
+ //on_foreach_connect(this);
//Dialog_Properties::set_modified(false);
diff --git a/glom/mode_design/layout/layout_item_dialogs/dialog_imageobject.cc
b/glom/mode_design/layout/layout_item_dialogs/dialog_imageobject.cc
index a6296a6..656c593 100644
--- a/glom/mode_design/layout/layout_item_dialogs/dialog_imageobject.cc
+++ b/glom/mode_design/layout/layout_item_dialogs/dialog_imageobject.cc
@@ -46,7 +46,7 @@ Dialog_ImageObject::Dialog_ImageObject(BaseObjectType* cobject, const Glib::RefP
builder->get_widget("button_choose_image", m_button_choose_image);
m_button_choose_image->signal_clicked().connect(sigc::mem_fun(*this,
&Dialog_ImageObject::on_button_choose));
- //on_foreach_connect(*this);
+ //on_foreach_connect(this);
//Dialog_Properties::set_modified(false);
diff --git a/glom/mode_design/layout/layout_item_dialogs/dialog_line.cc
b/glom/mode_design/layout/layout_item_dialogs/dialog_line.cc
index 30880b7..7a096b6 100644
--- a/glom/mode_design/layout/layout_item_dialogs/dialog_line.cc
+++ b/glom/mode_design/layout/layout_item_dialogs/dialog_line.cc
@@ -40,7 +40,7 @@ Dialog_Line::Dialog_Line(BaseObjectType* cobject, const Glib::RefPtr<Gtk::Builde
builder->get_widget("spinbutton_line_width", m_spinbutton_line_width);
builder->get_widget("colorbutton", m_colorbutton);
- //on_foreach_connect(*this);
+ //on_foreach_connect(this);
//Dialog_Properties::set_modified(false);
diff --git a/glom/mode_design/layout/layout_item_dialogs/dialog_textobject.cc
b/glom/mode_design/layout/layout_item_dialogs/dialog_textobject.cc
index e70d77a..157b48c 100644
--- a/glom/mode_design/layout/layout_item_dialogs/dialog_textobject.cc
+++ b/glom/mode_design/layout/layout_item_dialogs/dialog_textobject.cc
@@ -42,7 +42,7 @@ Dialog_TextObject::Dialog_TextObject(BaseObjectType* cobject, const Glib::RefPtr
builder->get_widget("entry_title", m_entry_title);
builder->get_widget("textview_text", m_text_view);
- //on_foreach_connect(*this);
+ //on_foreach_connect(this);
//Dialog_Properties::set_modified(false);
diff --git a/glom/mode_design/script_library/dialog_script_library.cc
b/glom/mode_design/script_library/dialog_script_library.cc
index bcda2b4..179985e 100644
--- a/glom/mode_design/script_library/dialog_script_library.cc
+++ b/glom/mode_design/script_library/dialog_script_library.cc
@@ -53,7 +53,7 @@ Dialog_ScriptLibrary::Dialog_ScriptLibrary(BaseObjectType* cobject, const Glib::
m_button_add->signal_clicked().connect( sigc::mem_fun(*this, &Dialog_ScriptLibrary::on_button_add) );
m_button_remove->signal_clicked().connect( sigc::mem_fun(*this, &Dialog_ScriptLibrary::on_button_remove) );
m_combobox_name->signal_changed().connect( sigc::mem_fun(*this,
&Dialog_ScriptLibrary::on_combo_name_changed) );
- //on_foreach_connect(*this);
+ //on_foreach_connect(this);
//Dialog_Properties::set_modified(false);
diff --git a/glom/utility_widgets/dialog_properties.cc b/glom/utility_widgets/dialog_properties.cc
index 7c05afc..c43b0a1 100644
--- a/glom/utility_widgets/dialog_properties.cc
+++ b/glom/utility_widgets/dialog_properties.cc
@@ -22,6 +22,7 @@
#include "dialog_properties.h"
#include <gtkmm/togglebutton.h>
#include <gtkmm/textview.h>
+#include <iostream>
namespace Glom
{
@@ -71,37 +72,43 @@ void Dialog_Properties::add(Gtk::Widget& /*widget */)
//on_foreach_connect(widget);
}
-void Dialog_Properties::widget_connect_changed_signal(Gtk::Widget& widget)
+void Dialog_Properties::widget_connect_changed_signal(Gtk::Widget* widget)
{
- Gtk::ComboBox* pCombo = dynamic_cast<Gtk::ComboBox*>(&widget);
+ if(!widget)
+ {
+ std::cerr << G_STRFUNC << ": widget is null." << std::endl;
+ return;
+ }
+
+ Gtk::ComboBox* pCombo = dynamic_cast<Gtk::ComboBox*>(widget);
if(pCombo) //If it is actually a Combo:
{
pCombo->signal_changed().connect(sigc::mem_fun(*this, &Dialog_Properties::on_anything_changed));
}
else
{
- Gtk::Entry* pEntry = dynamic_cast<Gtk::Entry*>(&widget);
+ Gtk::Entry* pEntry = dynamic_cast<Gtk::Entry*>(widget);
if(pEntry) //If it is actually an Entry:
{
pEntry->signal_changed().connect(sigc::mem_fun(*this, &Dialog_Properties::on_anything_changed));
}
else
{
- Gtk::ToggleButton* pToggleButton = dynamic_cast<Gtk::ToggleButton*>(&widget);
+ Gtk::ToggleButton* pToggleButton = dynamic_cast<Gtk::ToggleButton*>(widget);
if(pToggleButton)
{
pToggleButton->signal_toggled().connect( sigc::mem_fun(*this,
&Dialog_Properties::on_anything_changed) );
}
else
{
- Gtk::TextView* pTextView = dynamic_cast<Gtk::TextView*>(&widget);
+ Gtk::TextView* pTextView = dynamic_cast<Gtk::TextView*>(widget);
if(pTextView)
{
pTextView->get_buffer()->signal_changed().connect( sigc::mem_fun(*this,
&Dialog_Properties::on_anything_changed) );
}
else
{
- AddDel* pAddDel = dynamic_cast<AddDel*>(&widget);
+ AddDel* pAddDel = dynamic_cast<AddDel*>(widget);
if(pAddDel)
{
pAddDel->signal_user_changed().connect( sigc::mem_fun(*this,
&Dialog_Properties::on_adddel_user_changed) );
@@ -129,12 +136,18 @@ void Dialog_Properties::on_anything_changed()
}
}
-void Dialog_Properties::on_foreach_connect(Gtk::Widget& widget)
+void Dialog_Properties::on_foreach_connect(Gtk::Widget* widget)
{
+ if(!widget)
+ {
+ std::cerr << G_STRFUNC << ": widget is null." << std::endl;
+ return;
+ }
+
widget_connect_changed_signal(widget); //Connect the appropriate signal
//Recurse through children:
- Gtk::Container* pContainer = dynamic_cast<Gtk::Container*>(&widget);
+ Gtk::Container* pContainer = dynamic_cast<Gtk::Container*>(widget);
if(pContainer)
{
pContainer->foreach( sigc::mem_fun(*this, &Dialog_Properties::on_foreach_connect)); //recursive
diff --git a/glom/utility_widgets/dialog_properties.h b/glom/utility_widgets/dialog_properties.h
index e9ffadf..b2112c5 100644
--- a/glom/utility_widgets/dialog_properties.h
+++ b/glom/utility_widgets/dialog_properties.h
@@ -56,8 +56,12 @@ protected:
/// Disable/enable other controls when a control is selected.
virtual void enforce_constraints();
- void on_foreach_connect(Gtk::Widget& widget);
- void widget_connect_changed_signal(Gtk::Widget& widget);
+ void on_foreach_connect(Gtk::Widget* widget);
+
+private:
+ void widget_connect_changed_signal(Gtk::Widget* widget);
+
+protected:
void set_blocked(bool val = true);
type_signal_apply m_signal_apply;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]