summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJuan Pablo Ugarte <juanpablougarte@gmail.com>2012-10-13 12:00:05 -0300
committerJuan Pablo Ugarte <juanpablougarte@gmail.com>2012-10-13 12:00:05 -0300
commitab0b1d401592fc135880ed79cd66a9628bed737b (patch)
treeadb5af7ef079897556ee21bfa614b5ea799b7152
parentd56c804fb91ad5112a0ddfb0590e8b627907d104 (diff)
downloadglade-ab0b1d401592fc135880ed79cd66a9628bed737b.tar.gz
Fixed bug in GtkButton custom editor properties sensitivity
bug #685816 "Widget attributes editing broken"
-rw-r--r--plugins/gtk+/glade-gtk-activatable.c85
1 files changed, 47 insertions, 38 deletions
diff --git a/plugins/gtk+/glade-gtk-activatable.c b/plugins/gtk+/glade-gtk-activatable.c
index 31d538f3..244fc1fc 100644
--- a/plugins/gtk+/glade-gtk-activatable.c
+++ b/plugins/gtk+/glade-gtk-activatable.c
@@ -26,58 +26,67 @@
#include "glade-gtk-activatable.h"
/* ----------------------------- GtkActivatable ------------------------------ */
+static void
+update_use_action_appearance (GladeWidget *gwidget,
+ gboolean related_action,
+ gboolean use_appearance)
+{
+ gboolean sensitivity;
+ gchar *msg;
+
+ if (use_appearance)
+ {
+ sensitivity = FALSE;
+ msg = ACTION_APPEARANCE_MSG;
+ }
+ else
+ {
+ sensitivity = TRUE;
+ msg = NULL;
+ }
+
+ glade_widget_property_set_sensitive (gwidget, "label", sensitivity, msg);
+ glade_widget_property_set_sensitive (gwidget, "use-underline", sensitivity, msg);
+ glade_widget_property_set_sensitive (gwidget, "stock", sensitivity, msg);
+ //glade_widget_property_set_sensitive (gwidget, "use-stock", sensitivity, msg);
+ glade_widget_property_set_sensitive (gwidget, "image", sensitivity, msg);
+ glade_widget_property_set_sensitive (gwidget, "image-position", sensitivity, msg);
+ glade_widget_property_set_sensitive (gwidget, "custom-child", sensitivity, msg);
+ glade_widget_property_set_sensitive (gwidget, "stock-id", sensitivity, msg);
+ glade_widget_property_set_sensitive (gwidget, "label-widget", sensitivity, msg);
+ glade_widget_property_set_sensitive (gwidget, "icon-name", sensitivity, msg);
+ glade_widget_property_set_sensitive (gwidget, "icon-widget", sensitivity, msg);
+ glade_widget_property_set_sensitive (gwidget, "icon", sensitivity, msg);
+
+ if (related_action)
+ {
+ glade_widget_property_set_sensitive (gwidget, "visible", sensitivity, msg);
+ glade_widget_property_set_sensitive (gwidget, "sensitive", sensitivity, msg);
+ glade_widget_property_set_sensitive (gwidget, "accel-group", sensitivity, msg);
+ glade_widget_property_set_sensitive (gwidget, "use-action-appearance",
+ !sensitivity, sensitivity ? msg : NULL);
+ }
+}
+
void
glade_gtk_activatable_evaluate_property_sensitivity (GObject *object,
const gchar *id,
const GValue *value)
{
GladeWidget *gwidget = glade_widget_get_from_gobject (object);
- gboolean sensitivity;
- gchar *msg;
if (!strcmp (id, "related-action"))
{
+ gboolean use_appearance = gtk_activatable_get_use_action_appearance (GTK_ACTIVATABLE (object));
GtkAction *action = g_value_get_object (value);
-
- if (action)
- {
- sensitivity = FALSE;
- msg = ACTION_APPEARANCE_MSG;
- }
- else
- {
- sensitivity = TRUE;
- msg = NULL;
- }
- glade_widget_property_set_sensitive (gwidget, "visible", sensitivity, msg);
- glade_widget_property_set_sensitive (gwidget, "sensitive", sensitivity, msg);
- glade_widget_property_set_sensitive (gwidget, "accel-group", sensitivity, msg);
- glade_widget_property_set_sensitive (gwidget, "use-action-appearance", !sensitivity, sensitivity ? msg : NULL);
+ update_use_action_appearance (gwidget, TRUE, action);
}
else if (!strcmp (id, "use-action-appearance"))
{
- if (g_value_get_boolean (value))
- {
- sensitivity = FALSE;
- msg = ACTION_APPEARANCE_MSG;
- }
- else
- {
- sensitivity = TRUE;
- msg = NULL;
- }
+ GtkAction *action = gtk_activatable_get_related_action (GTK_ACTIVATABLE (object));
+ gboolean use_appearance = g_value_get_boolean (value);
- glade_widget_property_set_sensitive (gwidget, "label", sensitivity, msg);
- glade_widget_property_set_sensitive (gwidget, "use-underline", sensitivity, msg);
- glade_widget_property_set_sensitive (gwidget, "stock", sensitivity, msg);
- //glade_widget_property_set_sensitive (gwidget, "use-stock", sensitivity, msg);
- glade_widget_property_set_sensitive (gwidget, "image", sensitivity, msg);
- glade_widget_property_set_sensitive (gwidget, "custom-child", sensitivity, msg);
- glade_widget_property_set_sensitive (gwidget, "stock-id", sensitivity, msg);
- glade_widget_property_set_sensitive (gwidget, "label-widget", sensitivity, msg);
- glade_widget_property_set_sensitive (gwidget, "icon-name", sensitivity, msg);
- glade_widget_property_set_sensitive (gwidget, "icon-widget", sensitivity, msg);
- glade_widget_property_set_sensitive (gwidget, "icon", sensitivity, msg);
+ update_use_action_appearance (gwidget, FALSE, action && use_appearance);
}
}