*/
#include "config.h"
+
+#include "gtkcellrendereraccel.h"
+
+#include "gdk/gdkkeysyms.h"
+
#include "gtkintl.h"
#include "gtkaccelgroup.h"
#include "gtkmarshalers.h"
-#include "gtkcellrendereraccel.h"
#include "gtklabel.h"
#include "gtkeventbox.h"
#include "gtkmain.h"
+#include "gtksizerequest.h"
#include "gtkprivate.h"
-#include "gdk/gdkkeysyms.h"
static void gtk_cell_renderer_accel_get_property (GObject *object,
guint param_id,
const GValue *value,
GParamSpec *pspec);
-static void gtk_cell_renderer_accel_get_size (GtkCellRenderer *cell,
- GtkWidget *widget,
- GdkRectangle *cell_area,
- gint *x_offset,
- gint *y_offset,
- gint *width,
- gint *height);
+static void gtk_cell_renderer_accel_get_size (GtkCellRenderer *cell,
+ GtkWidget *widget,
+ const GdkRectangle *cell_area,
+ gint *x_offset,
+ gint *y_offset,
+ gint *width,
+ gint *height);
static GtkCellEditable *
- gtk_cell_renderer_accel_start_editing (GtkCellRenderer *cell,
- GdkEvent *event,
- GtkWidget *widget,
- const gchar *path,
- GdkRectangle *background_area,
- GdkRectangle *cell_area,
- GtkCellRendererState flags);
+ gtk_cell_renderer_accel_start_editing (GtkCellRenderer *cell,
+ GdkEvent *event,
+ GtkWidget *widget,
+ const gchar *path,
+ const GdkRectangle *background_area,
+ const GdkRectangle *cell_area,
+ GtkCellRendererState flags);
static gchar *convert_keysym_state_to_string (GtkCellRendererAccel *accel,
guint keysym,
GdkModifierType mask,
PROP_ACCEL_MODE
};
-struct _GtkCellRendererAccelPriv
+struct _GtkCellRendererAccelPrivate
{
GtkCellRendererAccelMode accel_mode;
cell_accel->priv = G_TYPE_INSTANCE_GET_PRIVATE (cell_accel,
GTK_TYPE_CELL_RENDERER_ACCEL,
- GtkCellRendererAccelPriv);
+ GtkCellRendererAccelPrivate);
text = convert_keysym_state_to_string (cell_accel, 0, 0, 0);
g_object_set (cell_accel, "text", text, NULL);
G_TYPE_NONE, 1,
G_TYPE_STRING);
- g_type_class_add_private (cell_accel_class, sizeof (GtkCellRendererAccelPriv));
+ g_type_class_add_private (cell_accel_class, sizeof (GtkCellRendererAccelPrivate));
}
GdkModifierType mask,
guint keycode)
{
- GtkCellRendererAccelPriv *priv = accel->priv;
+ GtkCellRendererAccelPrivate *priv = accel->priv;
if (keysym == 0 && keycode == 0)
/* This label is displayed in a treeview cell displaying
GValue *value,
GParamSpec *pspec)
{
- GtkCellRendererAccelPriv *priv = GTK_CELL_RENDERER_ACCEL (object)->priv;
+ GtkCellRendererAccelPrivate *priv = GTK_CELL_RENDERER_ACCEL (object)->priv;
switch (param_id)
{
GParamSpec *pspec)
{
GtkCellRendererAccel *accel = GTK_CELL_RENDERER_ACCEL (object);
- GtkCellRendererAccelPriv *priv = accel->priv;
+ GtkCellRendererAccelPrivate *priv = accel->priv;
gboolean changed = FALSE;
switch (param_id)
}
static void
-gtk_cell_renderer_accel_get_size (GtkCellRenderer *cell,
- GtkWidget *widget,
- GdkRectangle *cell_area,
- gint *x_offset,
- gint *y_offset,
- gint *width,
- gint *height)
+gtk_cell_renderer_accel_get_size (GtkCellRenderer *cell,
+ GtkWidget *widget,
+ const GdkRectangle *cell_area,
+ gint *x_offset,
+ gint *y_offset,
+ gint *width,
+ gint *height)
{
- GtkCellRendererAccelPriv *priv = GTK_CELL_RENDERER_ACCEL (cell)->priv;
+ GtkCellRendererAccelPrivate *priv = GTK_CELL_RENDERER_ACCEL (cell)->priv;
GtkRequisition requisition;
if (priv->sizing_label == NULL)
priv->sizing_label = gtk_label_new (_("New accelerator..."));
- gtk_widget_size_request (priv->sizing_label, &requisition);
+ gtk_widget_get_preferred_size (priv->sizing_label, &requisition, NULL);
GTK_CELL_RENDERER_CLASS (gtk_cell_renderer_accel_parent_class)->get_size (cell, widget, cell_area,
x_offset, y_offset, width, height);
GdkEventKey *event,
GtkCellRendererAccel *accel)
{
- GtkCellRendererAccelPriv *priv = accel->priv;
+ GtkCellRendererAccelPrivate *priv = accel->priv;
GdkModifierType accel_mods = 0;
guint accel_key;
gchar *path;
NULL, NULL, NULL, &consumed_modifiers);
accel_key = gdk_keyval_to_lower (event->keyval);
- if (accel_key == GDK_ISO_Left_Tab)
- accel_key = GDK_Tab;
+ if (accel_key == GDK_KEY_ISO_Left_Tab)
+ accel_key = GDK_KEY_Tab;
accel_mods = event->state & gtk_accelerator_get_default_mod_mask ();
{
switch (event->keyval)
{
- case GDK_Escape:
+ case GDK_KEY_Escape:
goto out; /* cancel */
- case GDK_BackSpace:
+ case GDK_KEY_BackSpace:
/* clear the accelerator on Backspace */
cleared = TRUE;
goto out;
ungrab_stuff (GtkWidget *widget,
GtkCellRendererAccel *accel)
{
- GtkCellRendererAccelPriv *priv = accel->priv;
+ GtkCellRendererAccelPrivate *priv = accel->priv;
gtk_device_grab_remove (priv->grab_widget, priv->grab_pointer);
gdk_device_ungrab (priv->grab_keyboard, GDK_CURRENT_TIME);
GdkEvent *event,
GtkWidget *widget,
const gchar *path,
- GdkRectangle *background_area,
- GdkRectangle *cell_area,
+ const GdkRectangle *background_area,
+ const GdkRectangle *cell_area,
GtkCellRendererState flags)
{
- GtkCellRendererAccelPriv *priv;
+ GtkCellRendererAccelPrivate *priv;
GtkCellRendererText *celltext;
GtkCellRendererAccel *accel;
+ GtkStyle *style;
GtkWidget *label;
GtkWidget *eventbox;
GdkDevice *device, *keyb, *pointer;
+ GdkWindow *window;
+ gboolean editable;
guint32 time;
celltext = GTK_CELL_RENDERER_TEXT (cell);
priv = accel->priv;
/* If the cell isn't editable we return NULL. */
- if (celltext->editable == FALSE)
+ g_object_get (celltext, "editable", &editable, NULL);
+ if (editable == FALSE)
return NULL;
- g_return_val_if_fail (widget->window != NULL, NULL);
+ window = gtk_widget_get_window (widget);
+ style = gtk_widget_get_style (widget);
+
+ g_return_val_if_fail (window != NULL, NULL);
if (event)
device = gdk_event_get_device (event);
time = gdk_event_get_time (event);
- if (gdk_device_grab (keyb, widget->window,
+ if (gdk_device_grab (keyb, window,
GDK_OWNERSHIP_WINDOW, FALSE,
GDK_KEY_PRESS_MASK | GDK_KEY_RELEASE_MASK,
NULL, time) != GDK_GRAB_SUCCESS)
return NULL;
- if (gdk_device_grab (pointer, widget->window,
+ if (gdk_device_grab (pointer, window,
GDK_OWNERSHIP_WINDOW, FALSE,
GDK_BUTTON_PRESS_MASK,
NULL, time) != GDK_GRAB_SUCCESS)
label = gtk_label_new (NULL);
gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
+
+
gtk_widget_modify_bg (eventbox, GTK_STATE_NORMAL,
- &widget->style->bg[GTK_STATE_SELECTED]);
+ &style->bg[GTK_STATE_SELECTED]);
gtk_widget_modify_fg (label, GTK_STATE_NORMAL,
- &widget->style->fg[GTK_STATE_SELECTED]);
-
+ &style->fg[GTK_STATE_SELECTED]);
+
/* This label is displayed in a treeview cell displaying
* an accelerator when the cell is clicked to change the
* acelerator.