[libgda/LIBGDA_4.2] GdauiDataProxyInfo corrections
- From: Vivien Malerba <vivien src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [libgda/LIBGDA_4.2] GdauiDataProxyInfo corrections
- Date: Mon, 25 Jul 2011 19:59:57 +0000 (UTC)
commit 6f886e13cec3d9d5ab584c93d6f305f8ae1cc5d5
Author: Vivien Malerba <malerba gnome-db org>
Date: Mon Jul 25 18:42:47 2011 +0200
GdauiDataProxyInfo corrections
libgda-ui/gdaui-data-proxy-info.c | 52 +++++++++++++++++++++++++++++-------
1 files changed, 42 insertions(+), 10 deletions(-)
---
diff --git a/libgda-ui/gdaui-data-proxy-info.c b/libgda-ui/gdaui-data-proxy-info.c
index d221a70..e3cdb4f 100644
--- a/libgda-ui/gdaui-data-proxy-info.c
+++ b/libgda-ui/gdaui-data-proxy-info.c
@@ -64,6 +64,7 @@ struct _GdauiDataProxyInfoPriv
guint merge_id_chunck_change;
GtkWidget *buttons_bar;
+ gboolean buttons_bar_from_ui;
GtkWidget *tool_item;
GtkWidget *current_sample;
GtkWidget *row_spin;
@@ -147,6 +148,8 @@ gdaui_data_proxy_info_init (GdauiDataProxyInfo *wid)
wid->priv->data_proxy = NULL;
wid->priv->proxy = NULL;
wid->priv->row_spin = NULL;
+ wid->priv->buttons_bar = NULL;
+ wid->priv->tool_item = NULL;
}
/**
@@ -427,6 +430,7 @@ static const gchar *ui_chunck_change =
" </toolbar>"
"</ui>";
+
static void row_spin_changed_cb (GtkSpinButton *spin, GdauiDataProxyInfo *info);
static void
modif_buttons_make (GdauiDataProxyInfo *info)
@@ -450,6 +454,13 @@ modif_buttons_make (GdauiDataProxyInfo *info)
if (! info->priv->data_proxy)
return;
+ if (info->priv->tool_item) {
+ /* remove tool_item from toolbar */
+ gtk_container_remove (GTK_CONTAINER (info->priv->buttons_bar),
+ info->priv->tool_item);
+ gtk_widget_unparent (info->priv->tool_item);
+ }
+
if (info->priv->uimanager) {
if (info->priv->merge_id_row_modif) {
gtk_ui_manager_remove_ui (info->priv->uimanager, info->priv->merge_id_row_modif);
@@ -489,16 +500,35 @@ modif_buttons_make (GdauiDataProxyInfo *info)
-1, NULL);
}
- if (! info->priv->buttons_bar) {
- GtkUIManager *ui;
- ui = info->priv->uimanager;
- info->priv->buttons_bar = gtk_ui_manager_get_widget (ui, "/ToolBar");
- gtk_toolbar_set_icon_size (GTK_TOOLBAR (info->priv->buttons_bar), GTK_ICON_SIZE_MENU);
- g_object_set (G_OBJECT (info->priv->buttons_bar), "toolbar-style", GTK_TOOLBAR_ICONS, NULL);
- gtk_widget_set_name (info->priv->buttons_bar, "gdaui-data-proxy-info");
- gtk_box_pack_start (GTK_BOX (info), info->priv->buttons_bar, TRUE, TRUE, 0);
- gtk_widget_show (info->priv->buttons_bar);
+ /* get rid of previous toolbar if any */
+ if (info->priv->buttons_bar) {
+ if (gtk_widget_get_parent (info->priv->buttons_bar)) {
+ gtk_container_remove (GTK_CONTAINER (info), info->priv->buttons_bar);
+ gtk_widget_unparent (info->priv->buttons_bar);
+ }
+ if (info->priv->buttons_bar_from_ui)
+ g_object_unref (info->priv->buttons_bar);
+ else
+ gtk_widget_destroy (info->priv->buttons_bar);
+ info->priv->buttons_bar = NULL;
+ }
+
+ /* create new toolbar */
+ GtkUIManager *ui;
+ ui = info->priv->uimanager;
+ info->priv->buttons_bar = gtk_ui_manager_get_widget (ui, "/ToolBar");
+ if (info->priv->buttons_bar)
+ info->priv->buttons_bar_from_ui = TRUE;
+ else {
+ info->priv->buttons_bar = gtk_toolbar_new ();
+ info->priv->buttons_bar_from_ui = FALSE;
}
+ g_object_ref_sink (info->priv->buttons_bar);
+ gtk_toolbar_set_icon_size (GTK_TOOLBAR (info->priv->buttons_bar), GTK_ICON_SIZE_MENU);
+ g_object_set (G_OBJECT (info->priv->buttons_bar), "toolbar-style", GTK_TOOLBAR_ICONS, NULL);
+ gtk_widget_set_name (info->priv->buttons_bar, "gdaui-data-proxy-info");
+ gtk_box_pack_start (GTK_BOX (info), info->priv->buttons_bar, TRUE, TRUE, 0);
+ gtk_widget_show (info->priv->buttons_bar);
if (flags & GDAUI_DATA_PROXY_INFO_CURRENT_ROW) {
if (info->priv->tool_item) {
@@ -506,12 +536,14 @@ modif_buttons_make (GdauiDataProxyInfo *info)
gtk_widget_destroy (gtk_bin_get_child (GTK_BIN (info->priv->tool_item)));
info->priv->row_spin = NULL;
info->priv->current_sample = NULL;
+ gtk_toolbar_insert (GTK_TOOLBAR (info->priv->buttons_bar),
+ GTK_TOOL_ITEM (info->priv->tool_item), -1);
}
else {
GtkToolItem *ti;
ti = gtk_tool_item_new ();
gtk_toolbar_insert (GTK_TOOLBAR (info->priv->buttons_bar), ti, -1);
- info->priv->tool_item = GTK_WIDGET (ti);
+ info->priv->tool_item = GTK_WIDGET (g_object_ref (G_OBJECT (ti)));
}
GtkWidget *toolwid;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]