~ubuntu-branches/ubuntu/jaunty/gimp/jaunty-security

« back to all changes in this revision

Viewing changes to libgimpwidgets/gimpcellrenderertoggle.c

  • Committer: Bazaar Package Importer
  • Author(s): Daniel Holbach
  • Date: 2007-05-02 16:33:03 UTC
  • mfrom: (1.1.4 upstream)
  • Revision ID: james.westby@ubuntu.com-20070502163303-bvzhjzbpw8qglc4y
Tags: 2.3.16-1ubuntu1
* Resynchronized with Debian, remaining Ubuntu changes:
  - debian/rules: i18n magic.
* debian/control.in:
  - Maintainer: Ubuntu Core Developers <ubuntu-devel@lists.ubuntu.com>
* debian/patches/02_help-message.patch,
  debian/patches/03_gimp.desktop.in.in.patch,
  debian/patches/10_dont_show_wizard.patch: updated.
* debian/patches/04_composite-signedness.patch,
  debian/patches/05_add-letter-spacing.patch: dropped, used upstream.

Show diffs side-by-side

added added

removed removed

Lines of Context:
47
47
};
48
48
 
49
49
 
50
 
static void gimp_cell_renderer_toggle_class_init (GimpCellRendererToggleClass *klass);
51
 
 
52
50
static void gimp_cell_renderer_toggle_finalize     (GObject         *object);
53
51
static void gimp_cell_renderer_toggle_get_property (GObject         *object,
54
52
                                                    guint            param_id,
83
81
                                                     GtkWidget              *widget);
84
82
 
85
83
 
 
84
G_DEFINE_TYPE (GimpCellRendererToggle, gimp_cell_renderer_toggle,
 
85
               GTK_TYPE_CELL_RENDERER_TOGGLE)
 
86
 
 
87
#define parent_class gimp_cell_renderer_toggle_parent_class
 
88
 
86
89
static guint toggle_cell_signals[LAST_SIGNAL] = { 0 };
87
90
 
88
 
static GtkCellRendererToggleClass *parent_class = NULL;
89
 
 
90
 
 
91
 
GType
92
 
gimp_cell_renderer_toggle_get_type (void)
93
 
{
94
 
  static GType cell_type = 0;
95
 
 
96
 
  if (! cell_type)
97
 
    {
98
 
      static const GTypeInfo cell_info =
99
 
      {
100
 
        sizeof (GimpCellRendererToggleClass),
101
 
        NULL,           /* base_init      */
102
 
        NULL,           /* base_finalize  */
103
 
        (GClassInitFunc) gimp_cell_renderer_toggle_class_init,
104
 
        NULL,           /* class_finalize */
105
 
        NULL,           /* class_data     */
106
 
        sizeof (GimpCellRendererToggle),
107
 
        0,              /* n_preallocs    */
108
 
        NULL            /* instance_init  */
109
 
      };
110
 
 
111
 
      cell_type = g_type_register_static (GTK_TYPE_CELL_RENDERER_TOGGLE,
112
 
                                          "GimpCellRendererToggle",
113
 
                                          &cell_info, 0);
114
 
    }
115
 
 
116
 
  return cell_type;
117
 
}
118
91
 
119
92
static void
120
93
gimp_cell_renderer_toggle_class_init (GimpCellRendererToggleClass *klass)
122
95
  GObjectClass         *object_class = G_OBJECT_CLASS (klass);
123
96
  GtkCellRendererClass *cell_class   = GTK_CELL_RENDERER_CLASS (klass);
124
97
 
125
 
  parent_class = g_type_class_peek_parent (klass);
126
 
 
127
98
  toggle_cell_signals[CLICKED] =
128
99
    g_signal_new ("clicked",
129
 
                  G_OBJECT_CLASS_TYPE (object_class),
130
 
                  G_SIGNAL_RUN_LAST,
131
 
                  G_STRUCT_OFFSET (GimpCellRendererToggleClass, clicked),
132
 
                  NULL, NULL,
133
 
                  _gimp_widgets_marshal_VOID__STRING_FLAGS,
134
 
                  G_TYPE_NONE, 2,
135
 
                  G_TYPE_STRING,
 
100
                  G_OBJECT_CLASS_TYPE (object_class),
 
101
                  G_SIGNAL_RUN_LAST,
 
102
                  G_STRUCT_OFFSET (GimpCellRendererToggleClass, clicked),
 
103
                  NULL, NULL,
 
104
                  _gimp_widgets_marshal_VOID__STRING_FLAGS,
 
105
                  G_TYPE_NONE, 2,
 
106
                  G_TYPE_STRING,
136
107
                  GDK_TYPE_MODIFIER_TYPE);
137
108
 
138
109
  object_class->finalize     = gimp_cell_renderer_toggle_finalize;
145
116
 
146
117
  g_object_class_install_property (object_class,
147
118
                                   PROP_STOCK_ID,
148
 
                                   g_param_spec_string ("stock_id",
 
119
                                   g_param_spec_string ("stock-id",
149
120
                                                        NULL, NULL,
150
121
                                                        NULL,
151
 
                                                        G_PARAM_READWRITE |
 
122
                                                        GIMP_PARAM_READWRITE |
152
123
                                                        G_PARAM_CONSTRUCT));
153
124
  g_object_class_install_property (object_class,
154
125
                                   PROP_STOCK_SIZE,
155
 
                                   g_param_spec_int ("stock_size",
 
126
                                   g_param_spec_int ("stock-size",
156
127
                                                     NULL, NULL,
157
128
                                                     0, G_MAXINT,
158
129
                                                     DEFAULT_ICON_SIZE,
159
 
                                                     G_PARAM_READWRITE |
 
130
                                                     GIMP_PARAM_READWRITE |
160
131
                                                     G_PARAM_CONSTRUCT));
161
132
}
162
133
 
163
134
static void
 
135
gimp_cell_renderer_toggle_init (GimpCellRendererToggle *toggle)
 
136
{
 
137
}
 
138
 
 
139
static void
164
140
gimp_cell_renderer_toggle_finalize (GObject *object)
165
141
{
166
142
  GimpCellRendererToggle *toggle;
216
192
    {
217
193
    case PROP_STOCK_ID:
218
194
      if (toggle->stock_id)
219
 
        g_free (toggle->stock_id);
 
195
        g_free (toggle->stock_id);
220
196
      toggle->stock_id = g_value_dup_string (value);
221
197
      break;
222
198
    case PROP_STOCK_SIZE:
250
226
  gint                    pixbuf_width;
251
227
  gint                    pixbuf_height;
252
228
 
253
 
  if (!toggle->stock_id)
 
229
  if (! toggle->stock_id)
254
230
    {
255
231
      GTK_CELL_RENDERER_CLASS (parent_class)->get_size (cell,
256
232
                                                        widget,
260
236
      return;
261
237
    }
262
238
 
263
 
  if (!toggle->pixbuf)
 
239
  if (! toggle->pixbuf)
264
240
    gimp_cell_renderer_toggle_create_pixbuf (toggle, widget);
265
241
 
266
242
  pixbuf_width  = gdk_pixbuf_get_width  (toggle->pixbuf);
271
247
  calc_height = (pixbuf_height +
272
248
                 (gint) cell->ypad * 2 + widget->style->ythickness * 2);
273
249
 
274
 
  if (x_offset) *x_offset = 0;
275
 
  if (y_offset) *y_offset = 0;
 
250
  if (width)
 
251
    *width  = calc_width;
 
252
 
 
253
  if (height)
 
254
    *height = calc_height;
276
255
 
277
256
  if (cell_area)
278
257
    {
279
258
      if (x_offset)
280
 
        {
281
 
          *x_offset = (((gtk_widget_get_direction (widget) == GTK_TEXT_DIR_RTL) ?
 
259
        {
 
260
          *x_offset = (((gtk_widget_get_direction (widget) == GTK_TEXT_DIR_RTL) ?
282
261
                        (1.0 - cell->xalign) : cell->xalign) *
283
262
                       (cell_area->width - calc_width));
284
 
          *x_offset = MAX (*x_offset, 0);
285
 
        }
 
263
          *x_offset = MAX (*x_offset, 0);
 
264
        }
286
265
      if (y_offset)
287
 
        {
288
 
          *y_offset = cell->yalign * (cell_area->height - calc_height);
289
 
          *y_offset = MAX (*y_offset, 0);
290
 
        }
 
266
        {
 
267
          *y_offset = cell->yalign * (cell_area->height - calc_height);
 
268
          *y_offset = MAX (*y_offset, 0);
 
269
        }
291
270
    }
292
 
 
293
 
  if (width)  *width  = calc_width;
294
 
  if (height) *height = calc_height;
295
271
}
296
272
 
297
273
static void
309
285
  GtkStateType            state;
310
286
  gboolean                active;
311
287
 
312
 
  if (!toggle->stock_id)
 
288
  if (! toggle->stock_id)
313
289
    {
314
290
      GTK_CELL_RENDERER_CLASS (parent_class)->render (cell, window, widget,
315
291
                                                      background_area,
338
314
  if ((flags & GTK_CELL_RENDERER_SELECTED) == GTK_CELL_RENDERER_SELECTED)
339
315
    {
340
316
      if (GTK_WIDGET_HAS_FOCUS (widget))
341
 
        state = GTK_STATE_SELECTED;
 
317
        state = GTK_STATE_SELECTED;
342
318
      else
343
 
        state = GTK_STATE_ACTIVE;
 
319
        state = GTK_STATE_ACTIVE;
344
320
    }
345
321
  else
346
322
    {