Commit 845366bc authored by Tristan Van Berkom's avatar Tristan Van Berkom
Browse files

* gladeui/glade-editor-property.[ch]:

	  - Give object dialogs a bigger default size and hide the column headers

	* gladeui/glade-signal-editor.c:
	  - Now show an icon and tooltip in rows for signals that are only
	    supported in the future, refresh them when support changes.

	* gladeui/glade-widget-adaptor.h, gladeui/glade-property-class.h: Added some version checking macros.

	* gladeui/glade-signal.[ch]: Add support warning meta data to signals

	* gladeui/glade-project.c:
	  - Simplify code with new version checking macros
	  - Do the verify on signals for widgets as well as project warnings
	    (update the signals a verify time).

	* gladeui/glade-widget.c: GladeWidget takes a new "support-changed" to broadcast support changes
	  on the widget.

	* gladeui/glade-signal-editor.c:
parent 320f07d8
2010-03-29 Tristan Van Berkom <tvb@gnome.org>
* gladeui/glade-editor-property.[ch]: Added glade_editor_property_show_object_dialog()
* gladeui/glade-editor-property.[ch]:
- Added glade_editor_property_show_object_dialog()
- Give object dialogs a bigger default size and hide the column headers
* gladeui/glade-signal-editor.c:
- Use glade_editor_property_show_object_dialog() to select project objects for signal user data.
- Added tooltips for the column headers
- Now show an icon and tooltip in rows for signals that are only
supported in the future, refresh them when support changes.
* gladeui/glade-widget-adaptor.h, gladeui/glade-property-class.h: Added some version checking macros.
* gladeui/glade-signal.[ch]: Add support warning meta data to signals
* gladeui/glade-project.c:
- Simplify code with new version checking macros
- Do the verify on signals for widgets as well as project warnings
(update the signals a verify time).
* gladeui/glade-widget.c: GladeWidget takes a new "support-changed" to broadcast support changes
on the widget.
* gladeui/glade-signal-editor.c:
2010-03-28 Tristan Van Berkom <tvb@gnome.org>
* gladeui/Makefile.am, gladeui/glade-cell-renderer-icon.[ch]: Added activatable pixbuf renderer
......
......@@ -1106,7 +1106,7 @@ glade_eprop_flags_show_dialog (GtkWidget *button,
GTK_STOCK_CLOSE,
GTK_RESPONSE_CLOSE,
NULL);
gtk_window_set_default_size (GTK_WINDOW (dialog), 300, 400);
gtk_dialog_set_has_separator (GTK_DIALOG (dialog), FALSE);
gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_CLOSE);
......@@ -2645,6 +2645,7 @@ glade_eprop_object_view (gboolean radio)
g_object_set_data (G_OBJECT (model), "radio-list", GINT_TO_POINTER (radio));
view_widget = gtk_tree_view_new_with_model (model);
gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (view_widget), FALSE);
/* Pass ownership to the view */
g_object_unref (G_OBJECT (model));
......@@ -2766,6 +2767,8 @@ glade_editor_property_show_object_dialog (GladeProject *project,
GTK_RESPONSE_CANCEL,
GLADE_RESPONSE_CLEAR,
-1);
gtk_window_set_default_size (GTK_WINDOW (dialog), 600, 500);
gtk_dialog_set_has_separator (GTK_DIALOG (dialog), FALSE);
gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_OK);
......@@ -2908,7 +2911,7 @@ glade_eprop_object_show_dialog (GtkWidget *dialog_button,
-1);
}
gtk_window_set_default_size (GTK_WINDOW (dialog), 600, 500);
gtk_dialog_set_has_separator (GTK_DIALOG (dialog), FALSE);
gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_OK);
......@@ -3212,6 +3215,8 @@ glade_eprop_objects_show_dialog (GtkWidget *dialog_button,
GTK_STOCK_OK, GTK_RESPONSE_OK,
NULL);
g_free (title);
gtk_window_set_default_size (GTK_WINDOW (dialog), 600, 500);
gtk_dialog_set_has_separator (GTK_DIALOG (dialog), FALSE);
vbox = gtk_vbox_new (FALSE, 6);
......
......@@ -1229,10 +1229,7 @@ glade_project_introspect_gtk_version (GladeProject *project)
g_free (catalog);
/* Check widget class version */
if (is_gtk_adaptor &&
(target_major < GWA_VERSION_SINCE_MAJOR (widget->adaptor) ||
(target_major == GWA_VERSION_SINCE_MAJOR (widget->adaptor) &&
target_minor < GWA_VERSION_SINCE_MINOR (widget->adaptor))))
if (is_gtk_adaptor && !GWA_VERSION_CHECK (widget->adaptor, target_major, target_minor))
{
target_major = GWA_VERSION_SINCE_MAJOR (widget->adaptor);
target_minor = GWA_VERSION_SINCE_MINOR (widget->adaptor);
......@@ -1261,9 +1258,7 @@ glade_project_introspect_gtk_version (GladeProject *project)
/* Check GTK+ property class versions */
if (is_gtk_adaptor &&
(target_major < property->klass->version_since_major ||
(target_major == property->klass->version_since_major &&
target_minor < property->klass->version_since_minor)))
!GPC_VERSION_CHECK (property->klass, target_major, target_minor))
{
target_major = property->klass->version_since_major;
target_minor = property->klass->version_since_minor;
......@@ -1774,6 +1769,10 @@ glade_project_save (GladeProject *project, const gchar *path, GError **error)
/* translators: reffers to a signal '%s' of widget '[%s]' in toolkit version '%s %d.%d' */
#define SIGNAL_VERSION_CONFLICT_FMT _("[%s] Signal '%s' of object class '%s' was introduced in %s %d.%d\n")
/* translators: reffers to a signal in toolkit version '%s %d.%d'
* and a project targeting toolkit version '%s %d.%d' */
#define SIGNAL_VERSION_CONFLICT_MSGFMT _("This signal was introduced in %s %d.%d while project targets %s %d.%d")
static void
glade_project_verify_property (GladeProject *project,
GladeProperty *property,
......@@ -1826,9 +1825,7 @@ glade_project_verify_property (GladeProject *project,
property->klass->name,
adaptor->title);
}
else if (target_major < property->klass->version_since_major ||
(target_major == property->klass->version_since_major &&
target_minor < property->klass->version_since_minor))
else if (!GPC_VERSION_CHECK (property->klass, target_major, target_minor))
{
if (forwidget)
{
......@@ -1854,9 +1851,7 @@ glade_project_verify_property (GladeProject *project,
property->klass->version_since_minor);
}
else if (project->priv->format == GLADE_PROJECT_FORMAT_GTKBUILDER &&
(target_major < property->klass->builder_since_major ||
(target_major == property->klass->builder_since_major &&
target_minor < property->klass->builder_since_minor)))
!GPC_BUILDER_VERSION_CHECK (property->klass, target_major, target_minor))
{
if (forwidget)
{
......@@ -1887,7 +1882,6 @@ glade_project_verify_property (GladeProject *project,
g_free (catalog);
}
static void
glade_project_verify_properties_internal (GladeWidget *widget,
const gchar *path_name,
......@@ -1914,26 +1908,12 @@ glade_project_verify_properties_internal (GladeWidget *widget,
}
}
/**
* glade_project_verify_properties:
* @widget: A #GladeWidget
*
* Synchonizes @widget with user visible information
* about version compatability
*/
void
glade_project_verify_properties (GladeWidget *widget)
{
g_return_if_fail (GLADE_IS_WIDGET (widget));
glade_project_verify_properties_internal (widget, NULL, NULL, TRUE);
}
static void
glade_project_verify_signal (GladeWidget *widget,
GladeSignal *signal,
const gchar *path_name,
GString *string)
GString *string,
gboolean forwidget)
{
GladeSignalClass *signal_class;
gint target_major, target_minor;
......@@ -1953,26 +1933,48 @@ glade_project_verify_signal (GladeWidget *widget,
&target_major,
&target_minor);
if (target_major < signal_class->version_since_major ||
(target_major == signal_class->version_since_major &&
target_minor < signal_class->version_since_minor))
g_string_append_printf (string,
SIGNAL_VERSION_CONFLICT_FMT,
path_name,
signal->name,
signal_class->adaptor->title,
catalog,
signal_class->version_since_major,
signal_class->version_since_minor);
if (!GSC_VERSION_CHECK (signal_class, target_major, target_minor))
{
if (forwidget)
{
gchar *warning;
warning = g_strdup_printf (SIGNAL_VERSION_CONFLICT_MSGFMT,
catalog,
signal_class->version_since_major,
signal_class->version_since_minor,
catalog, target_major, target_minor);
glade_signal_set_support_warning (signal, warning);
g_free (warning);
}
else
g_string_append_printf (string,
SIGNAL_VERSION_CONFLICT_FMT,
path_name,
signal->name,
signal_class->adaptor->title,
catalog,
signal_class->version_since_major,
signal_class->version_since_minor);
}
else if (forwidget)
glade_signal_set_support_warning (signal, NULL);
g_free (catalog);
}
void
glade_project_update_signal_support_warning (GladeWidget *widget,
GladeSignal *signal)
{
glade_project_verify_signal (widget, signal, NULL, NULL, TRUE);
}
static void
glade_project_verify_signals (GladeWidget *widget,
const gchar *path_name,
GString *string)
GString *string,
gboolean forwidget)
{
GladeSignal *signal;
GList *signals, *list;
......@@ -1982,12 +1984,31 @@ glade_project_verify_signals (GladeWidget *widget,
for (list = signals; list; list = list->next)
{
signal = list->data;
glade_project_verify_signal (widget, signal, path_name, string);
glade_project_verify_signal (widget, signal, path_name, string, forwidget);
}
g_list_free (signals);
}
}
/**
* glade_project_verify_properties:
* @widget: A #GladeWidget
*
* Synchonizes @widget with user visible information
* about version compatability and notifies the UI
* it should update.
*/
void
glade_project_verify_properties (GladeWidget *widget)
{
g_return_if_fail (GLADE_IS_WIDGET (widget));
glade_project_verify_properties_internal (widget, NULL, NULL, TRUE);
glade_project_verify_signals (widget, NULL, NULL, TRUE);
glade_widget_support_changed (widget);
}
static gboolean
glade_project_verify_dialog (GladeProject *project,
GString *string,
......@@ -2047,7 +2068,7 @@ glade_project_verify (GladeProject *project,
glade_project_verify_adaptor (project, widget->adaptor,
path_name, string, saving, FALSE, NULL);
glade_project_verify_properties_internal (widget, path_name, string, FALSE);
glade_project_verify_signals (widget, path_name, string);
glade_project_verify_signals (widget, path_name, string, FALSE);
g_free (path_name);
}
......@@ -2103,9 +2124,7 @@ glade_project_verify_adaptor (GladeProject *project,
/* Only one versioning message (builder or otherwise)...
*/
if (target_major < GWA_VERSION_SINCE_MAJOR (adaptor_iter) ||
(target_major == GWA_VERSION_SINCE_MAJOR (adaptor_iter) &&
target_minor < GWA_VERSION_SINCE_MINOR (adaptor_iter)))
if (!GWA_VERSION_CHECK (adaptor_iter, target_major, target_minor))
{
if (forwidget)
g_string_append_printf (string,
......
......@@ -190,6 +190,9 @@ void glade_project_get_target_version (GladeProject *project,
gint *major,
gint *minor);
void glade_project_update_signal_support_warning (GladeWidget *widget,
GladeSignal *signal);
G_END_DECLS
#endif /* __GLADE_PROJECT_H__ */
......@@ -35,7 +35,7 @@ G_BEGIN_DECLS
/**
* GPC_CHECK_RUNTIME:
* GPC_VERSION_CHECK:
* @klass: A #GladePropertyClass
* @major_version: The major version to check
* @minor_version: The minor version to check
......@@ -44,8 +44,24 @@ G_BEGIN_DECLS
*
*/
#define GPC_VERSION_CHECK(klass, major_version, minor_version) \
(GLADE_PROPERTY_CLASS (klass)->version_since_major <= major_version && \
GLADE_PROPERTY_CLASS (klass)->version_since_minor <= (minor_version))
((GLADE_PROPERTY_CLASS (klass)->version_since_major == major_version) ? \
(GLADE_PROPERTY_CLASS (klass)->version_since_minor <= minor_version) : \
(GLADE_PROPERTY_CLASS (klass)->version_since_major <= major_version))
/**
* GPC_BUILDER_VERSION_CHECK:
* @klass: A #GladePropertyClass
* @major_version: The major version to check
* @minor_version: The minor version to check
*
* Evaluates to %TRUE if @klass is available for use with GtkBuilder in its
* owning library version-@major_verion.@minor_version.
*
*/
#define GPC_BUILDER_VERSION_CHECK(klass, major_version, minor_version) \
((GLADE_PROPERTY_CLASS (klass)->builder_since_major == major_version) ? \
(GLADE_PROPERTY_CLASS (klass)->builder_since_minor <= minor_version) : \
(GLADE_PROPERTY_CLASS (klass)->builder_since_major <= major_version))
#define GPC_OBJECT_DELIMITER ", "
......
......@@ -191,7 +191,7 @@ static void
move_row (GtkTreeModel *model, GtkTreeIter *from, GtkTreeIter *to)
{
gchar *handler;
gchar *userdata;
gchar *userdata, *support_warning;
gboolean after;
gboolean slot;
gboolean visible;
......@@ -200,7 +200,7 @@ move_row (GtkTreeModel *model, GtkTreeIter *from, GtkTreeIter *to)
gboolean userdata_editable;
gboolean swapped;
gboolean swapped_visible;
gboolean bold, content;
gboolean bold, content, warn;
gtk_tree_model_get (model, from,
GSE_COLUMN_HANDLER, &handler,
......@@ -215,6 +215,8 @@ move_row (GtkTreeModel *model, GtkTreeIter *from, GtkTreeIter *to)
GSE_COLUMN_SWAPPED_VISIBLE, &swapped_visible,
GSE_COLUMN_BOLD, &bold,
GSE_COLUMN_CONTENT, &content,
GSE_COLUMN_WARN, &warn,
GSE_COLUMN_TOOLTIP, &support_warning,
-1);
gtk_tree_store_set (GTK_TREE_STORE (model), to,
......@@ -230,7 +232,11 @@ move_row (GtkTreeModel *model, GtkTreeIter *from, GtkTreeIter *to)
GSE_COLUMN_SWAPPED_VISIBLE, swapped_visible,
GSE_COLUMN_BOLD, bold,
GSE_COLUMN_CONTENT, content,
GSE_COLUMN_WARN, warn,
GSE_COLUMN_TOOLTIP, support_warning,
-1);
g_free (support_warning);
g_free (handler);
g_free (userdata);
}
......@@ -789,7 +795,9 @@ glade_signal_editor_construct_signals_list (GladeSignalEditor *editor)
G_TYPE_BOOLEAN, /* Userdata editable */
G_TYPE_BOOLEAN, /* New slot */
G_TYPE_BOOLEAN, /* Mark with bold */
G_TYPE_BOOLEAN); /* Not a class title slot */
G_TYPE_BOOLEAN, /* Not a class title slot */
G_TYPE_BOOLEAN, /* Show a warning icon for the signal */
G_TYPE_STRING); /* A tooltip for the signal row */
model = GTK_TREE_MODEL (editor->model);
......@@ -798,19 +806,35 @@ glade_signal_editor_construct_signals_list (GladeSignalEditor *editor)
view = GTK_TREE_VIEW (view_widget);
gtk_tree_view_set_tooltip_column (view, GSE_COLUMN_TOOLTIP);
/* the view now holds a reference, we can get rid of our own */
g_object_unref (G_OBJECT (editor->model));
/************************ signal column ************************/
column = gtk_tree_view_column_new ();
column_header_widget (column, _("Signal"), _("The name of the signal to connect to"));
renderer = gtk_cell_renderer_text_new ();
column = gtk_tree_view_column_new_with_attributes
(NULL, renderer, "text", GSE_COLUMN_SIGNAL, NULL);
gtk_tree_view_column_pack_start (column, renderer, FALSE);
gtk_tree_view_column_set_attributes (column, renderer,
"text", GSE_COLUMN_SIGNAL,
NULL);
column_header_widget (column, _("Signal"), _("The name of the signal to connect to"));
gtk_tree_view_column_set_cell_data_func (column, renderer,
glade_signal_editor_signal_cell_data_func,
NULL, NULL);
renderer = gtk_cell_renderer_pixbuf_new ();
g_object_set (G_OBJECT (renderer), "icon-name", GTK_STOCK_DIALOG_WARNING, NULL);
gtk_tree_view_column_pack_end (column, renderer, FALSE);
gtk_tree_view_column_set_attributes (column, renderer,
"visible", GSE_COLUMN_WARN,
NULL);
gtk_tree_view_append_column (view, column);
/************************ handler column ************************/
......@@ -823,6 +847,8 @@ glade_signal_editor_construct_signals_list (GladeSignalEditor *editor)
g_object_set (G_OBJECT (editor->handler_renderer),
"model", editor->handler_store,
"text-column", 0,
"ellipsize", PANGO_ELLIPSIZE_END,
"width-chars", 14,
NULL);
}
......@@ -848,6 +874,7 @@ glade_signal_editor_construct_signals_list (GladeSignalEditor *editor)
NULL, NULL);
}
gtk_tree_view_column_set_resizable (editor->handler_column, TRUE);
gtk_tree_view_column_set_expand (editor->handler_column, TRUE);
gtk_tree_view_append_column (view, editor->handler_column);
......@@ -899,6 +926,7 @@ glade_signal_editor_construct_signals_list (GladeSignalEditor *editor)
NULL);
}
gtk_tree_view_column_set_resizable (editor->userdata_column, TRUE);
gtk_tree_view_column_set_expand (editor->userdata_column, TRUE);
gtk_tree_view_append_column (view, editor->userdata_column);
......@@ -1040,6 +1068,14 @@ glade_signal_editor_new (gpointer *editor)
return signal_editor;
}
static void
glade_signal_editor_refresh_support (GladeWidget *widget,
GladeSignalEditor *editor)
{
g_assert (editor->widget == widget);
glade_signal_editor_load_widget (editor, editor->widget);
}
/**
* glade_signal_editor_load_widget:
* @editor: a #GladeSignalEditor
......@@ -1064,9 +1100,27 @@ glade_signal_editor_load_widget (GladeSignalEditor *editor,
gtk_tree_store_clear (editor->model);
editor->widget = widget;
editor->adaptor = widget ? widget->adaptor : NULL;
if (editor->widget != widget)
{
if (editor->widget)
{
g_signal_handler_disconnect (editor->widget, editor->refresh_id);
editor->refresh_id = 0;
g_object_unref (editor->widget);
}
editor->widget = widget;
editor->adaptor = widget ? widget->adaptor : NULL;
if (editor->widget)
{
g_object_ref (editor->widget);
editor->refresh_id =
g_signal_connect (G_OBJECT (editor->widget), "support-changed",
G_CALLBACK (glade_signal_editor_refresh_support), editor);
}
}
if (!widget)
return;
......@@ -1075,6 +1129,10 @@ glade_signal_editor_load_widget (GladeSignalEditor *editor,
for (list = editor->adaptor->signals; list; list = list->next)
{
GladeSignalClass *signal = (GladeSignalClass *) list->data;
GladeSignal *sig = glade_signal_new (signal->name, NULL, NULL, FALSE, FALSE);
/* Check versioning here with a virtual signal */
glade_project_update_signal_support_warning (editor->widget, sig);
/* Add class name that this signal belongs to.
*/
......@@ -1098,8 +1156,9 @@ glade_signal_editor_load_widget (GladeSignalEditor *editor,
if (!signals || signals->len == 0)
{
gtk_tree_store_set
(editor->model, &parent_signal,
(editor->model, &parent_signal,
GSE_COLUMN_SIGNAL, signal->name,
GSE_COLUMN_HANDLER, HANDLER_DEFAULT,
GSE_COLUMN_AFTER, FALSE,
......@@ -1112,6 +1171,8 @@ glade_signal_editor_load_widget (GladeSignalEditor *editor,
GSE_COLUMN_SLOT, TRUE,
GSE_COLUMN_USERDATA_SLOT, TRUE,
GSE_COLUMN_CONTENT, TRUE,
GSE_COLUMN_WARN, sig->support_warning != NULL,
GSE_COLUMN_TOOLTIP, sig->support_warning,
-1);
}
else
......@@ -1150,6 +1211,8 @@ glade_signal_editor_load_widget (GladeSignalEditor *editor,
widget_signal->userdata ? FALSE : TRUE,
GSE_COLUMN_BOLD, TRUE,
GSE_COLUMN_CONTENT, TRUE,
GSE_COLUMN_WARN, widget_signal->support_warning != NULL,
GSE_COLUMN_TOOLTIP, widget_signal->support_warning,
-1);
for (i = 1; i < signals->len; i++)
......@@ -1174,6 +1237,8 @@ glade_signal_editor_load_widget (GladeSignalEditor *editor,
GSE_COLUMN_USERDATA_SLOT,
widget_signal->userdata ? FALSE : TRUE,
GSE_COLUMN_CONTENT, TRUE,
GSE_COLUMN_WARN, widget_signal->support_warning != NULL,
GSE_COLUMN_TOOLTIP, widget_signal->support_warning,
-1);
}
......@@ -1192,8 +1257,13 @@ glade_signal_editor_load_widget (GladeSignalEditor *editor,
GSE_COLUMN_SLOT, TRUE,
GSE_COLUMN_USERDATA_SLOT, TRUE,
GSE_COLUMN_CONTENT, TRUE,
GSE_COLUMN_WARN, sig->support_warning != NULL,
GSE_COLUMN_TOOLTIP, sig->support_warning,
-1);
}
glade_signal_free (sig);
}
path_first = gtk_tree_path_new_first ();
......
......@@ -34,6 +34,9 @@ enum
GSE_COLUMN_SLOT, /* if this row contains a "<Type...>" label */
GSE_COLUMN_BOLD,
GSE_COLUMN_CONTENT,
GSE_COLUMN_WARN,
GSE_COLUMN_TOOLTIP,
GSE_NUM_COLUMNS
};
......@@ -59,6 +62,8 @@ struct _GladeSignalEditor
GtkCellRenderer *handler_renderer, *userdata_renderer;
GtkTreeViewColumn *handler_column, *userdata_column;
IsVoidFunc is_void_handler, is_void_userdata;
gulong refresh_id;
};
struct _GladeSignalEditorClass
......
......@@ -48,7 +48,7 @@ GladeSignal *glade_signal_new (const gchar *name,
gboolean after,
gboolean swapped)
{
GladeSignal *signal = g_new0 (GladeSignal, 1);
GladeSignal *signal = g_slice_new0 (GladeSignal);
signal->name = g_strdup (name);
signal->handler = g_strdup (handler);
......@@ -73,7 +73,8 @@ glade_signal_free (GladeSignal *signal)
g_free (signal->name);
g_free (signal->handler);
g_free (signal->userdata);
g_free (signal);
g_free (signal->support_warning);
g_slice_free (GladeSignal, signal);
}
/**
......@@ -89,7 +90,8 @@ glade_signal_equal (GladeSignal *sig1, GladeSignal *sig2)
gboolean ret = FALSE;
g_return_val_if_fail (GLADE_IS_SIGNAL (sig1), FALSE);
g_return_val_if_fail (GLADE_IS_SIGNAL (sig2), FALSE);
/* Intentionally ignore support_warning */
if (!strcmp (sig1->name, sig2->name) &&
!strcmp (sig1->handler, sig2->handler) &&
sig1->after == sig2->after &&
......@@ -113,14 +115,19 @@ glade_signal_equal (GladeSignal *sig1, GladeSignal *sig2)
GladeSignal *
glade_signal_clone (const GladeSignal *signal)
{
g_return_val_if_fail (signal != NULL, NULL);
GladeSignal *dup;
g_return_val_if_fail (GLADE_IS_SIGNAL (signal), NULL);
return glade_signal_new (signal->name,
signal->handler,
signal->userdata,
signal->after,
signal->swapped);
dup = glade_signal_new (signal->name,
signal->handler,
signal->userdata,
signal->after,
signal->swapped);
glade_signal_set_support_warning (dup, signal->support_warning);
return dup;
}
/**
......@@ -220,3 +227,17 @@ glade_signal_read (GladeXmlNode *node)
return signal;
}
void
glade_signal_set_support_warning (GladeSignal *signal,
const gchar *support_warning)
{
g_return_if_fail (GLADE_IS_SIGNAL (signal));
if (g_strcmp0 (signal->support_warning, support_warning))
{
g_free (signal->support_warning);
signal->support_warning =
support_warning ? g_strdup (support_warning) : NULL;
}
}
......@@ -17,6 +17,9 @@ struct _GladeSignal