static void gtk_css_image_win32_finalize (GObject *object) { GtkCssImageWin32 *wimage = GTK_CSS_IMAGE_WIN32 (object); if (wimage->theme) gtk_win32_theme_unref (wimage->theme); G_OBJECT_CLASS (_gtk_css_image_win32_parent_class)->finalize (object); }
static void gtk_css_value_win32_size_free (GtkCssValue *value) { gtk_win32_theme_unref (value->theme); g_slice_free (GtkCssValue, value); }
GtkCssValue * gtk_css_win32_size_value_parse (GtkCssParser *parser, GtkCssNumberParseFlags flags) { GtkWin32Theme *theme; GtkCssValue *result; guint type; for (type = 0; type < G_N_ELEMENTS(css_value_names); type++) { if (_gtk_css_parser_try (parser, css_value_names[type], TRUE)) break; } if (type >= G_N_ELEMENTS(css_value_names)) { _gtk_css_parser_error (parser, "Not a win32 size value"); return NULL; } theme = gtk_win32_theme_parse (parser); if (theme == NULL) return NULL; result = gtk_css_win32_size_value_new (1.0, theme, type); gtk_win32_theme_unref (theme); if (! _gtk_css_parser_try (parser, ",", TRUE)) { _gtk_css_value_unref (result); _gtk_css_parser_error (parser, "Expected ','"); return NULL; } switch (result->type) { case GTK_WIN32_SIZE: result = gtk_css_win32_size_value_parse_size (result, parser); break; case GTK_WIN32_PART_WIDTH: case GTK_WIN32_PART_HEIGHT: case GTK_WIN32_PART_BORDER_TOP: case GTK_WIN32_PART_BORDER_RIGHT: case GTK_WIN32_PART_BORDER_BOTTOM: case GTK_WIN32_PART_BORDER_LEFT: result = gtk_css_win32_size_value_parse_part_size (result, parser); break; default: g_assert_not_reached (); _gtk_css_value_unref (result); result = NULL; break; } if (result == NULL) return NULL; if (!_gtk_css_parser_try (parser, ")", TRUE)) { _gtk_css_value_unref (result); _gtk_css_parser_error (parser, "Expected ')'"); return NULL; } return result; }