[gtk+/gtk-2-24] Implement the editing-canceled property in GtkCellEditableEventBox
- From: Michael Natterer <mitch src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+/gtk-2-24] Implement the editing-canceled property in GtkCellEditableEventBox
- Date: Fri, 20 Jan 2012 11:23:13 +0000 (UTC)
commit 165d2c0ca278ada18f2b53f4be086abcd9b9f5ff
Author: Matthias Clasen <mclasen redhat com>
Date: Fri Jan 14 20:24:26 2011 -0500
Implement the editing-canceled property in GtkCellEditableEventBox
https://bugzilla.gnome.org/show_bug.cgi?id=639455
(cherry picked from commit 8f6a8441a24b40003b8ec4128931fb2601bc0d30)
gtk/gtkcellrendereraccel.c | 200 ++++++++++++++++++++++++++++----------------
1 files changed, 128 insertions(+), 72 deletions(-)
---
diff --git a/gtk/gtkcellrendereraccel.c b/gtk/gtkcellrendereraccel.c
index 3436610..4882faf 100644
--- a/gtk/gtkcellrendereraccel.c
+++ b/gtk/gtkcellrendereraccel.c
@@ -144,14 +144,14 @@ gtk_cell_renderer_accel_class_init (GtkCellRendererAccelClass *cell_accel_class)
* Since: 2.10
*/
g_object_class_install_property (object_class,
- PROP_KEYCODE,
- g_param_spec_uint ("keycode",
- P_("Accelerator keycode"),
- P_("The hardware keycode of the accelerator"),
- 0,
- G_MAXINT,
- 0,
- GTK_PARAM_READWRITE));
+ PROP_KEYCODE,
+ g_param_spec_uint ("keycode",
+ P_("Accelerator keycode"),
+ P_("The hardware keycode of the accelerator"),
+ 0,
+ G_MAXINT,
+ 0,
+ GTK_PARAM_READWRITE));
/**
* GtkCellRendererAccel:accel-mode:
@@ -166,11 +166,11 @@ gtk_cell_renderer_accel_class_init (GtkCellRendererAccelClass *cell_accel_class)
g_object_class_install_property (object_class,
PROP_ACCEL_MODE,
g_param_spec_enum ("accel-mode",
- P_("Accelerator Mode"),
- P_("The type of accelerators"),
- GTK_TYPE_CELL_RENDERER_ACCEL_MODE,
- GTK_CELL_RENDERER_ACCEL_MODE_GTK,
- GTK_PARAM_READWRITE));
+ P_("Accelerator Mode"),
+ P_("The type of accelerators"),
+ GTK_TYPE_CELL_RENDERER_ACCEL_MODE,
+ GTK_CELL_RENDERER_ACCEL_MODE_GTK,
+ GTK_PARAM_READWRITE));
/**
* GtkCellRendererAccel::accel-edited:
@@ -185,16 +185,16 @@ gtk_cell_renderer_accel_class_init (GtkCellRendererAccelClass *cell_accel_class)
* Since: 2.10
*/
signals[ACCEL_EDITED] = g_signal_new (I_("accel-edited"),
- GTK_TYPE_CELL_RENDERER_ACCEL,
- G_SIGNAL_RUN_LAST,
- G_STRUCT_OFFSET (GtkCellRendererAccelClass, accel_edited),
- NULL, NULL,
- _gtk_marshal_VOID__STRING_UINT_FLAGS_UINT,
- G_TYPE_NONE, 4,
- G_TYPE_STRING,
- G_TYPE_UINT,
- GDK_TYPE_MODIFIER_TYPE,
- G_TYPE_UINT);
+ GTK_TYPE_CELL_RENDERER_ACCEL,
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (GtkCellRendererAccelClass, accel_edited),
+ NULL, NULL,
+ _gtk_marshal_VOID__STRING_UINT_FLAGS_UINT,
+ G_TYPE_NONE, 4,
+ G_TYPE_STRING,
+ G_TYPE_UINT,
+ GDK_TYPE_MODIFIER_TYPE,
+ G_TYPE_UINT);
/**
* GtkCellRendererAccel::accel-cleared:
@@ -206,13 +206,13 @@ gtk_cell_renderer_accel_class_init (GtkCellRendererAccelClass *cell_accel_class)
* Since: 2.10
*/
signals[ACCEL_CLEARED] = g_signal_new (I_("accel-cleared"),
- GTK_TYPE_CELL_RENDERER_ACCEL,
- G_SIGNAL_RUN_LAST,
- G_STRUCT_OFFSET (GtkCellRendererAccelClass, accel_cleared),
- NULL, NULL,
- g_cclosure_marshal_VOID__STRING,
- G_TYPE_NONE, 1,
- G_TYPE_STRING);
+ GTK_TYPE_CELL_RENDERER_ACCEL,
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (GtkCellRendererAccelClass, accel_cleared),
+ NULL, NULL,
+ g_cclosure_marshal_VOID__STRING,
+ G_TYPE_NONE, 1,
+ G_TYPE_STRING);
}
@@ -233,9 +233,9 @@ gtk_cell_renderer_accel_new (void)
static gchar *
convert_keysym_state_to_string (GtkCellRendererAccel *accel,
- guint keysym,
+ guint keysym,
GdkModifierType mask,
- guint keycode)
+ guint keycode)
{
if (keysym == 0 && keycode == 0)
/* This label is displayed in a treeview cell displaying
@@ -256,24 +256,24 @@ convert_keysym_state_to_string (GtkCellRendererAccel *accel,
return gtk_accelerator_get_label (keysym, mask);
}
else
- {
- gchar *name;
+ {
+ gchar *name;
- name = gtk_accelerator_get_label (keysym, mask);
- if (name == NULL)
- name = gtk_accelerator_name (keysym, mask);
+ name = gtk_accelerator_get_label (keysym, mask);
+ if (name == NULL)
+ name = gtk_accelerator_name (keysym, mask);
- if (keysym == 0)
- {
- gchar *tmp;
+ if (keysym == 0)
+ {
+ gchar *tmp;
- tmp = name;
- name = g_strdup_printf ("%s0x%02x", tmp, keycode);
- g_free (tmp);
- }
+ tmp = name;
+ name = g_strdup_printf ("%s0x%02x", tmp, keycode);
+ g_free (tmp);
+ }
- return name;
- }
+ return name;
+ }
}
}
@@ -321,36 +321,36 @@ gtk_cell_renderer_accel_set_property (GObject *object,
{
case PROP_ACCEL_KEY:
{
- guint accel_key = g_value_get_uint (value);
+ guint accel_key = g_value_get_uint (value);
- if (accel->accel_key != accel_key)
- {
- accel->accel_key = accel_key;
- changed = TRUE;
- }
+ if (accel->accel_key != accel_key)
+ {
+ accel->accel_key = accel_key;
+ changed = TRUE;
+ }
}
break;
case PROP_ACCEL_MODS:
{
- guint accel_mods = g_value_get_flags (value);
+ guint accel_mods = g_value_get_flags (value);
- if (accel->accel_mods != accel_mods)
- {
- accel->accel_mods = accel_mods;
- changed = TRUE;
- }
+ if (accel->accel_mods != accel_mods)
+ {
+ accel->accel_mods = accel_mods;
+ changed = TRUE;
+ }
}
break;
case PROP_KEYCODE:
{
- guint keycode = g_value_get_uint (value);
+ guint keycode = g_value_get_uint (value);
- if (accel->keycode != keycode)
- {
- accel->keycode = keycode;
- changed = TRUE;
- }
+ if (accel->keycode != keycode)
+ {
+ accel->keycode = keycode;
+ changed = TRUE;
+ }
}
break;
@@ -465,11 +465,11 @@ grab_key_callback (GtkWidget *widget,
if (accel->accel_mode == GTK_CELL_RENDERER_ACCEL_MODE_GTK)
{
if (!gtk_accelerator_valid (accel_key, accel_mods))
- {
- gtk_widget_error_bell (widget);
+ {
+ gtk_widget_error_bell (widget);
- return TRUE;
- }
+ return TRUE;
+ }
}
edited = TRUE;
@@ -488,7 +488,7 @@ grab_key_callback (GtkWidget *widget,
if (edited)
g_signal_emit (accel, signals[ACCEL_EDITED], 0, path,
- accel_key, accel_mods, event->hardware_keycode);
+ accel_key, accel_mods, event->hardware_keycode);
else if (cleared)
g_signal_emit (accel, signals[ACCEL_CLEARED], 0, path);
@@ -514,7 +514,7 @@ ungrab_stuff (GtkWidget *widget,
static void
_gtk_cell_editable_event_box_start_editing (GtkCellEditable *cell_editable,
- GdkEvent *event)
+ GdkEvent *event)
{
/* do nothing, because we are pointless */
}
@@ -525,17 +525,73 @@ _gtk_cell_editable_event_box_cell_editable_init (GtkCellEditableIface *iface)
iface->start_editing = _gtk_cell_editable_event_box_start_editing;
}
-typedef GtkEventBox GtkCellEditableEventBox;
-typedef GtkEventBoxClass GtkCellEditableEventBoxClass;
+typedef struct _GtkCellEditableEventBox GtkCellEditableEventBox;
+typedef GtkEventBoxClass GtkCellEditableEventBoxClass;
+
+struct _GtkCellEditableEventBox
+{
+ GtkEventBox box;
+ gboolean editing_canceled;
+};
G_DEFINE_TYPE_WITH_CODE (GtkCellEditableEventBox, _gtk_cell_editable_event_box, GTK_TYPE_EVENT_BOX, { \
G_IMPLEMENT_INTERFACE (GTK_TYPE_CELL_EDITABLE, _gtk_cell_editable_event_box_cell_editable_init) \
})
+enum {
+ PROP_ZERO,
+ PROP_EDITING_CANCELED
+};
+
+static void
+gtk_cell_editable_event_box_set_property (GObject *object,
+ guint prop_id,
+ const GValue *value,
+ GParamSpec *pspec)
+{
+ GtkCellEditableEventBox *box = (GtkCellEditableEventBox*)object;
+
+ switch (prop_id)
+ {
+ case PROP_EDITING_CANCELED:
+ box->editing_canceled = g_value_get_boolean (value);
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
+}
+
+static void
+gtk_cell_editable_event_box_get_property (GObject *object,
+ guint prop_id,
+ GValue *value,
+ GParamSpec *pspec)
+{
+ GtkCellEditableEventBox *box = (GtkCellEditableEventBox*)object;
+
+ switch (prop_id)
+ {
+ case PROP_EDITING_CANCELED:
+ g_value_set_boolean (value, box->editing_canceled);
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
+}
static void
_gtk_cell_editable_event_box_class_init (GtkCellEditableEventBoxClass *class)
{
+ GObjectClass *gobject_class = G_OBJECT_CLASS (class);
+
+ gobject_class->set_property = gtk_cell_editable_event_box_set_property;
+ gobject_class->get_property = gtk_cell_editable_event_box_get_property;
+
+ g_object_class_override_property (gobject_class,
+ PROP_EDITING_CANCELED,
+ "editing-canceled");
}
static void
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]