~bratsche/ubuntu/maverick/gtk+2.0/menu-activation-fix

« back to all changes in this revision

Viewing changes to gtk/gtkcellrendererpixbuf.c

Import upstream version 2.17.11

Show diffs side-by-side

added added

removed removed

Lines of Context:
284
284
}
285
285
 
286
286
static void
287
 
unset_image_properties (GtkCellRendererPixbuf *cell)
288
 
{
289
 
  GtkCellRendererPixbufPrivate *priv;
290
 
 
291
 
  priv = GTK_CELL_RENDERER_PIXBUF_GET_PRIVATE (cell);
292
 
 
293
 
  if (priv->stock_id)
294
 
    {
295
 
      g_free (priv->stock_id);
296
 
      priv->stock_id = NULL;
297
 
      g_object_notify (G_OBJECT (cell), "stock-id");
298
 
    }
299
 
  if (priv->icon_name)
300
 
    {
301
 
      g_free (priv->icon_name);
302
 
      priv->icon_name = NULL;
303
 
      g_object_notify (G_OBJECT (cell), "icon-name");
304
 
    }
305
 
  if (cell->pixbuf)
306
 
    {
307
 
      g_object_unref (cell->pixbuf);
308
 
      cell->pixbuf = NULL;
309
 
      g_object_notify (G_OBJECT (cell), "pixbuf");
310
 
    }
311
 
  if (priv->gicon)
312
 
    {
313
 
      g_object_unref (priv->gicon);
314
 
      priv->gicon = NULL;
315
 
      g_object_notify (G_OBJECT (cell), "gicon");
316
 
    }
317
 
}
318
 
 
319
 
static void
320
287
gtk_cell_renderer_pixbuf_set_property (GObject      *object,
321
288
                                       guint         param_id,
322
289
                                       const GValue *value,
330
297
  switch (param_id)
331
298
    {
332
299
    case PROP_PIXBUF:
333
 
      unset_image_properties (cellpixbuf);
334
 
      cellpixbuf->pixbuf = (GdkPixbuf *) g_value_dup_object (value);
 
300
      if (cellpixbuf->pixbuf)
 
301
        g_object_unref (cellpixbuf->pixbuf);
 
302
      cellpixbuf->pixbuf = (GdkPixbuf*) g_value_dup_object (value);
 
303
      if (cellpixbuf->pixbuf)
 
304
        {
 
305
          if (priv->stock_id)
 
306
            {
 
307
              g_free (priv->stock_id);
 
308
              priv->stock_id = NULL;
 
309
              g_object_notify (object, "stock-id");
 
310
            }
 
311
          if (priv->icon_name)
 
312
            {
 
313
              g_free (priv->icon_name);
 
314
              priv->icon_name = NULL;
 
315
              g_object_notify (object, "icon-name");
 
316
            }
 
317
          if (priv->gicon)
 
318
            {
 
319
              g_object_unref (priv->gicon);
 
320
              priv->gicon = NULL;
 
321
              g_object_notify (object, "gicon");
 
322
            }
 
323
        }
335
324
      break;
336
325
    case PROP_PIXBUF_EXPANDER_OPEN:
337
326
      if (cellpixbuf->pixbuf_expander_open)
344
333
      cellpixbuf->pixbuf_expander_closed = (GdkPixbuf*) g_value_dup_object (value);
345
334
      break;
346
335
    case PROP_STOCK_ID:
347
 
      unset_image_properties (cellpixbuf);
 
336
      if (priv->stock_id)
 
337
        {
 
338
          if (cellpixbuf->pixbuf)
 
339
            {
 
340
              g_object_unref (cellpixbuf->pixbuf);
 
341
              cellpixbuf->pixbuf = NULL;
 
342
              g_object_notify (object, "pixbuf");
 
343
            }
 
344
          g_free (priv->stock_id);
 
345
        }
348
346
      priv->stock_id = g_value_dup_string (value);
 
347
      if (priv->stock_id)
 
348
        {
 
349
          if (cellpixbuf->pixbuf)
 
350
            {
 
351
              g_object_unref (cellpixbuf->pixbuf);
 
352
              cellpixbuf->pixbuf = NULL;
 
353
              g_object_notify (object, "pixbuf");
 
354
            }
 
355
          if (priv->icon_name)
 
356
            {
 
357
              g_free (priv->icon_name);
 
358
              priv->icon_name = NULL;
 
359
              g_object_notify (object, "icon-name");
 
360
            }
 
361
          if (priv->gicon)
 
362
            {
 
363
              g_object_unref (priv->gicon);
 
364
              priv->gicon = NULL;
 
365
              g_object_notify (object, "gicon");
 
366
            }
 
367
        }
349
368
      break;
350
369
    case PROP_STOCK_SIZE:
351
370
      priv->stock_size = g_value_get_uint (value);
355
374
      priv->stock_detail = g_value_dup_string (value);
356
375
      break;
357
376
    case PROP_ICON_NAME:
358
 
      unset_image_properties (cellpixbuf);
 
377
      if (priv->icon_name)
 
378
        {
 
379
          if (cellpixbuf->pixbuf)
 
380
            {
 
381
              g_object_unref (cellpixbuf->pixbuf);
 
382
              cellpixbuf->pixbuf = NULL;
 
383
              g_object_notify (object, "pixbuf");
 
384
            }
 
385
          g_free (priv->icon_name);
 
386
        }
359
387
      priv->icon_name = g_value_dup_string (value);
 
388
      if (priv->icon_name)
 
389
        {
 
390
          if (cellpixbuf->pixbuf)
 
391
            {
 
392
              g_object_unref (cellpixbuf->pixbuf);
 
393
              cellpixbuf->pixbuf = NULL;
 
394
              g_object_notify (object, "pixbuf");
 
395
            }
 
396
          if (priv->stock_id)
 
397
            {
 
398
              g_free (priv->stock_id);
 
399
              priv->stock_id = NULL;
 
400
              g_object_notify (object, "stock-id");
 
401
            }
 
402
          if (priv->gicon)
 
403
            {
 
404
              g_object_unref (priv->gicon);
 
405
              priv->gicon = NULL;
 
406
              g_object_notify (object, "gicon");
 
407
            }
 
408
        }
360
409
      break;
361
410
    case PROP_FOLLOW_STATE:
362
411
      priv->follow_state = g_value_get_boolean (value);
363
412
      break;
364
413
    case PROP_GICON:
365
 
      unset_image_properties (cellpixbuf);
 
414
      if (priv->gicon)
 
415
        {
 
416
          if (cellpixbuf->pixbuf)
 
417
            {
 
418
              g_object_unref (cellpixbuf->pixbuf);
 
419
              cellpixbuf->pixbuf = NULL;
 
420
              g_object_notify (object, "pixbuf");
 
421
            }
 
422
          g_object_unref (priv->gicon);
 
423
        }
366
424
      priv->gicon = (GIcon *) g_value_dup_object (value);
 
425
      if (priv->gicon)
 
426
        {
 
427
          if (cellpixbuf->pixbuf)
 
428
            {
 
429
              g_object_unref (cellpixbuf->pixbuf);
 
430
              cellpixbuf->pixbuf = NULL;
 
431
              g_object_notify (object, "pixbuf");
 
432
            }
 
433
          if (priv->stock_id)
 
434
            {
 
435
              g_free (priv->stock_id);
 
436
              priv->stock_id = NULL;
 
437
              g_object_notify (object, "stock-id");
 
438
            }
 
439
          if (priv->icon_name)
 
440
            {
 
441
              g_free (priv->icon_name);
 
442
              priv->icon_name = NULL;
 
443
              g_object_notify (object, "icon-name");
 
444
            }
 
445
        }
367
446
      break;
368
447
    default:
369
448
      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec);