]> Pileus Git - ~andy/gtk/blobdiff - modules/other/gail/gailtextcell.c
Use the correct function to free boxed GdkColors
[~andy/gtk] / modules / other / gail / gailtextcell.c
index fa07f0e50e6dc9276ffc52571a71b54d4b1f5dfa..f5d7a2afb906317755c56391ae48df06c19d2ab6 100644 (file)
@@ -94,14 +94,14 @@ gchar *gail_text_cell_property_list[] = {
   "font_desc",
 
   "attributes",
-  "background_gdk",
+  "background-gdk",
   "editable",
   "family",
-  "foreground_gdk",
+  "foreground-gdk",
   "rise",
   "scale",
   "size",
-  "size_points",
+  "size-points",
   "stretch",
   "strikethrough",
   "style",
@@ -111,19 +111,19 @@ gchar *gail_text_cell_property_list[] = {
   "weight",
 
   /* Also need the sets */
-  "background_set",
-  "editable_set",
-  "family_set",
-  "foreground_set",
-  "rise_set",
-  "scale_set",
-  "size_set",
-  "stretch_set",
-  "strikethrough_set",
-  "style_set",
-  "underline_set",
-  "variant_set",
-  "weight_set",
+  "background-set",
+  "editable-set",
+  "family-set",
+  "foreground-set",
+  "rise-set",
+  "scale-set",
+  "size-set",
+  "stretch-set",
+  "strikethrough-set",
+  "style-set",
+  "underline-set",
+  "variant-set",
+  "weight-set",
   NULL
 };
 
@@ -538,9 +538,9 @@ create_pango_layout(GtkCellRendererText *gtk_renderer,
   pango_attr_list_unref (attr_list);
 
   pango_font_description_free (font_desc);
-  g_free (foreground_gdk);
   pango_attr_list_unref (attributes);
   g_free (renderer_text);
+  gdk_color_free (foreground_gdk);
 
   return layout;
 }
@@ -572,6 +572,7 @@ gail_text_cell_get_character_extents (AtkText          *text,
   PangoRectangle char_rect;
   PangoLayout *layout;
   gchar *renderer_text;
+  gfloat xalign, yalign;
   gint x_offset, y_offset, index;
   gint xpad, ypad;
 
@@ -609,15 +610,16 @@ gail_text_cell_get_character_extents (AtkText          *text,
                                         widget,
                                         &min_size, NULL);
 
-  gtk_cell_renderer_calc_offset (GTK_CELL_RENDERER (gtk_renderer), &rendered_rect,
-                                 gtk_widget_get_direction (widget),
-                                 min_size.width, min_size.height,
-                                 &x_offset, &y_offset);
+  gtk_cell_renderer_get_alignment (GTK_CELL_RENDERER (gtk_renderer), &xalign, &yalign);
+  if (gtk_widget_get_direction (widget) == GTK_TEXT_DIR_RTL)
+    xalign = 1.0 - xalign;
+  x_offset = MAX (0, xalign * (rendered_rect.width - min_size.width));
+  y_offset = MAX (0, yalign * (rendered_rect.height - min_size.height));
 
   layout = create_pango_layout (gtk_renderer, widget);
 
   index = g_utf8_offset_to_pointer (renderer_text, offset) - renderer_text;
-  pango_layout_index_to_pos (layout, index, &char_rect); 
+  pango_layout_index_to_pos (layout, index, &char_rect);
 
   gtk_cell_renderer_get_padding (gail_renderer->renderer, &xpad, &ypad);
   gail_misc_get_extents_from_pango_rectangle (widget,
@@ -646,7 +648,6 @@ gail_text_cell_get_offset_at_point (AtkText          *text,
   GdkRectangle rendered_rect;
   PangoLayout *layout;
   gchar *renderer_text;
-  gint width, height;
   gfloat xalign, yalign;
   gint x_offset, y_offset, index;
   gint xpad, ypad;
@@ -677,12 +678,11 @@ gail_text_cell_get_offset_at_point (AtkText          *text,
   gtk_cell_renderer_get_preferred_size (GTK_CELL_RENDERER (gtk_renderer),
                                         widget,
                                         &min_size, NULL);
-  gtk_cell_renderer_get_fixed_size (GTK_CELL_RENDERER (gtk_renderer), &width, &height);
   gtk_cell_renderer_get_alignment (GTK_CELL_RENDERER (gtk_renderer), &xalign, &yalign);
   if (gtk_widget_get_direction (widget) == GTK_TEXT_DIR_RTL)
     xalign = 1.0 - xalign;
-  x_offset = MAX (0, xalign * (width - min_size.width));
-  y_offset = MAX (0, yalign * (height - min_size.height));
+  x_offset = MAX (0, xalign * (rendered_rect.width - min_size.width));
+  y_offset = MAX (0, yalign * (rendered_rect.height - min_size.height));
 
   layout = create_pango_layout (gtk_renderer, widget);