summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJuan Pablo Ugarte <jpu@src.gnome.org>2007-10-15 21:02:37 +0000
committerJuan Pablo Ugarte <jpu@src.gnome.org>2007-10-15 21:02:37 +0000
commit456827c97ede81fcb6aedfd602535ec078b2246e (patch)
tree2fe1472e680977cb1f78cf0997e9b90167011f96
parentf905cd549fa660dd79abb06fa88fd6d086b8d7e6 (diff)
downloadglade-456827c97ede81fcb6aedfd602535ec078b2246e.tar.gz
disable GtkImage::stock when edit type is not in stock mode. This fixs a
* plugins/gtk+/glade-gtk.c: disable GtkImage::stock when edit type is not in stock mode. This fixs a bug pasting a filename GtkImage. * gladeui/glade-property-class.c: glade_property_class_make_object_from_string() now returns NULL for pixbuf props on an empty string, so you can set up pixbuf props back to NULL. * gladeui/glade-widget.c: almost fixed bug #480495, it does not crash anymore. It refuses to reparent a widget if it cant embed it. svn path=/trunk/; revision=1629
-rw-r--r--ChangeLog11
-rw-r--r--gladeui/glade-property-class.c2
-rw-r--r--gladeui/glade-widget.c29
-rw-r--r--plugins/gtk+/glade-gtk.c2
4 files changed, 31 insertions, 13 deletions
diff --git a/ChangeLog b/ChangeLog
index ea53fcbc..40871f8a 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,14 @@
+2007-10-15 Juan Pablo Ugarte <juanpablougarte@gmail.com>
+
+ * plugins/gtk+/glade-gtk.c: disable GtkImage::stock when edit type is not in stock mode.
+ This fixs a bug pasting a filename GtkImage.
+
+ * gladeui/glade-property-class.c: glade_property_class_make_object_from_string() now returns NULL
+ for pixbuf props on an empty string, so you can set up pixbuf props back to NULL.
+
+ * gladeui/glade-widget.c: almost fixed bug #480495, it does not crash anymore.
+ It refuses to reparent a widget if it cant embed it.
+
2007-09-17 Tristan Van Berkom <tvb@gnome.org>
* NEWS, configure.ac: Rolling 3.4.0
diff --git a/gladeui/glade-property-class.c b/gladeui/glade-property-class.c
index 38c021f6..ad1a5574 100644
--- a/gladeui/glade-property-class.c
+++ b/gladeui/glade-property-class.c
@@ -760,6 +760,8 @@ glade_property_class_make_object_from_string (GladePropertyClass *property_class
{
GdkPixbuf *pixbuf;
+ if (*string == '\0') return NULL;
+
fullpath = glade_project_resource_fullpath (project, string);
if ((pixbuf = gdk_pixbuf_new_from_file (fullpath, NULL)) == NULL)
diff --git a/gladeui/glade-widget.c b/gladeui/glade-widget.c
index 160063cb..e041e233 100644
--- a/gladeui/glade-widget.c
+++ b/gladeui/glade-widget.c
@@ -74,7 +74,7 @@ static GladeWidget *glade_widget_new_from_widget_info (GladeWidgetInfo *i
GladeWidget *parent);
static gboolean glade_window_is_embedded (GtkWindow *window);
-static void glade_widget_embed (GladeWidget *widget);
+static gboolean glade_widget_embed (GladeWidget *widget);
enum
{
@@ -2163,11 +2163,8 @@ glade_widget_show (GladeWidget *widget)
g_return_if_fail (GLADE_IS_WIDGET (widget));
/* Position window at saved coordinates or in the center */
- if (GTK_IS_WINDOW (widget->object))
+ if (GTK_IS_WINDOW (widget->object) && glade_widget_embed (widget))
{
- if (!glade_window_is_embedded (GTK_WINDOW (widget->object)))
- glade_widget_embed (widget);
-
view = glade_design_view_get_from_project (glade_widget_get_project (widget));
layout = GTK_WIDGET (glade_design_view_get_layout (view));
@@ -2178,7 +2175,8 @@ glade_widget_show (GladeWidget *widget)
gtk_widget_show_all (GTK_WIDGET (widget->object));
- } else if (GTK_IS_WIDGET (widget->object)) {
+ } else if (GTK_IS_WIDGET (widget->object))
+ {
gtk_widget_show_all (GTK_WIDGET (widget->object));
}
widget->visible = TRUE;
@@ -4230,21 +4228,24 @@ embedded_window_size_allocate_handler (GtkWidget *widget)
*
* Embeds a window by signal connection method
*/
-static void
+static gboolean
glade_widget_embed (GladeWidget *widget)
{
GtkWindow *window;
- g_return_if_fail (GLADE_IS_WIDGET (widget));
- g_return_if_fail (GTK_IS_WINDOW (widget->object));
+ g_return_val_if_fail (GLADE_IS_WIDGET (widget), FALSE);
+ g_return_val_if_fail (GTK_IS_WINDOW (widget->object), FALSE);
window = GTK_WINDOW (widget->object);
- if (glade_window_is_embedded (window) || GTK_WIDGET_REALIZED (GTK_WIDGET (window))) {
- g_critical ("Cannot embed a window that is already realized or embedded");
- return;
+ if (glade_window_is_embedded (window)) return TRUE;
+
+ if (GTK_WIDGET_REALIZED (GTK_WIDGET (window)))
+ {
+ g_critical ("Cannot embed a window that is already realized");
+ return FALSE;
}
-
+
GTK_WIDGET_UNSET_FLAGS (GTK_WIDGET (window), GTK_TOPLEVEL);
gtk_container_set_resize_mode (GTK_CONTAINER (window), GTK_RESIZE_PARENT);
@@ -4256,5 +4257,7 @@ glade_widget_embed (GladeWidget *widget)
/* mark window as embedded */
g_object_set_qdata (G_OBJECT (window),
embedded_window_get_quark (), GINT_TO_POINTER (TRUE));
+
+ return TRUE;
}
diff --git a/plugins/gtk+/glade-gtk.c b/plugins/gtk+/glade-gtk.c
index e6d998b6..4c8daaab 100644
--- a/plugins/gtk+/glade-gtk.c
+++ b/plugins/gtk+/glade-gtk.c
@@ -4269,6 +4269,7 @@ glade_gtk_image_disable_stock (GladeWidget *gwidget)
{
glade_widget_property_set (gwidget, "glade-stock", NULL);
glade_widget_property_set (gwidget, "stock", NULL);
+ glade_widget_property_set_enabled (gwidget, "stock", FALSE);
glade_widget_property_set_sensitive (gwidget, "glade-stock", FALSE,
_("This only applies with stock type images"));
}
@@ -4377,6 +4378,7 @@ glade_gtk_image_set_type (GObject *object, const GValue *value)
case GLADEGTK_IMAGE_STOCK:
glade_gtk_image_disable_filename (gwidget);
glade_gtk_image_disable_icon_name (gwidget);
+ glade_widget_property_set_enabled (gwidget, "stock", FALSE);
glade_gtk_image_refresh (gwidget, "glade-stock");
break;