]> Pileus Git - ~andy/gtk/blobdiff - gtk/gtktextdisplay.c
Fix typos
[~andy/gtk] / gtk / gtktextdisplay.c
index 4b621b4315d9e1ee79d1f384a71a692117596218..1a25f64a2b492a960f534493917d1492c4f566f0 100644 (file)
 
 #define GTK_TEXT_USE_INTERNAL_UNSUPPORTED_API
 #include <config.h>
-#include "gtkalias.h"
 #include "gtktextdisplay.h"
+#include "gtkintl.h"
+#include "gtkalias.h"
 /* DO NOT go putting private headers in here. This file should only
  * use the semi-public headers, as with gtktextview.c.
  */
 
-#define GTK_TYPE_TEXT_RENDERER            (gtk_text_renderer_get_type())
+#define GTK_TYPE_TEXT_RENDERER            (_gtk_text_renderer_get_type())
 #define GTK_TEXT_RENDERER(object)         (G_TYPE_CHECK_INSTANCE_CAST ((object), GTK_TYPE_TEXT_RENDERER, GtkTextRenderer))
 #define GTK_IS_TEXT_RENDERER(object)      (G_TYPE_CHECK_INSTANCE_TYPE ((object), GTK_TYPE_TEXT_RENDERER))
 #define GTK_TEXT_RENDERER_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST ((klass), GTK_TYPE_TEXT_RENDERER, GtkTextRendererClass))
@@ -113,7 +114,7 @@ struct _GtkTextRendererClass
   GdkPangoRendererClass parent_class;
 };
 
-G_DEFINE_TYPE (GtkTextRenderer, gtk_text_renderer, GDK_TYPE_PANGO_RENDERER)
+G_DEFINE_TYPE (GtkTextRenderer, _gtk_text_renderer, GDK_TYPE_PANGO_RENDERER)
 
 static GdkColor *
 text_renderer_get_error_color (GtkTextRenderer *text_renderer)
@@ -122,7 +123,7 @@ text_renderer_get_error_color (GtkTextRenderer *text_renderer)
 
   if (!text_renderer->error_color)
     gtk_widget_style_get (text_renderer->widget,
-                         "error-underline_color", &text_renderer->error_color,
+                         "error-underline-color", &text_renderer->error_color,
                          NULL);
   
   if (!text_renderer->error_color)
@@ -181,7 +182,7 @@ gtk_text_renderer_prepare_run (PangoRenderer  *renderer,
   GdkPixmap *fg_stipple, *bg_stipple;
   GtkTextAppearance *appearance;
 
-  PANGO_RENDERER_CLASS (gtk_text_renderer_parent_class)->prepare_run (renderer, run);
+  PANGO_RENDERER_CLASS (_gtk_text_renderer_parent_class)->prepare_run (renderer, run);
 
   appearance = get_item_appearance (run->item);
   g_assert (appearance != NULL);
@@ -335,16 +336,16 @@ gtk_text_renderer_draw_shape (PangoRenderer   *renderer,
 static void
 gtk_text_renderer_finalize (GObject *object)
 {
-  G_OBJECT_CLASS (gtk_text_renderer_parent_class)->finalize (object);
+  G_OBJECT_CLASS (_gtk_text_renderer_parent_class)->finalize (object);
 }
 
 static void
-gtk_text_renderer_init (GtkTextRenderer *renderer)
+_gtk_text_renderer_init (GtkTextRenderer *renderer)
 {
 }
 
 static void
-gtk_text_renderer_class_init (GtkTextRendererClass *klass)
+_gtk_text_renderer_class_init (GtkTextRendererClass *klass)
 {
   GObjectClass *object_class = G_OBJECT_CLASS (klass);
   
@@ -532,14 +533,38 @@ render_para (GtkTextRenderer    *text_renderer,
         }
       else
         {
+          if (line_display->pg_bg_color)
+            {
+              GdkGC *bg_gc;
+              
+              bg_gc = gdk_gc_new (text_renderer->drawable);
+              gdk_gc_set_fill (bg_gc, GDK_SOLID);
+              gdk_gc_set_rgb_fg_color (bg_gc, line_display->pg_bg_color);
+            
+              gdk_draw_rectangle (text_renderer->drawable,
+                                  bg_gc,
+                                  TRUE,
+                                  x + line_display->left_margin,
+                                  selection_y,
+                                  screen_width,
+                                  selection_height);
+              
+              g_object_unref (bg_gc);
+            }
+        
          text_renderer_set_selected (text_renderer, FALSE);
          pango_renderer_draw_layout_line (PANGO_RENDERER (text_renderer),
                                           line, 
                                           PANGO_SCALE * x + line_rect.x,
                                           PANGO_SCALE * y + baseline);
 
-          if (selection_start_index <= byte_offset + line->length &&
-              selection_end_index > byte_offset) /* Some selected */
+         /* Check if some part of the line is selected; the newline
+          * that is after line->length for the last line of the
+          * paragraph counts as part of the line for this
+          */
+          if ((selection_start_index < byte_offset + line->length ||
+              (selection_start_index == byte_offset + line->length && pango_layout_iter_at_last_line (iter))) &&
+             selection_end_index > byte_offset)
             {
               GdkRegion *clip_region = get_selected_clip (text_renderer, layout, line,
                                                           x + line_display->x_offset,
@@ -622,12 +647,13 @@ render_para (GtkTextRenderer    *text_renderer,
 
 static void
 on_renderer_display_closed (GdkDisplay       *display,
+                            gboolean          is_error,
                            GtkTextRenderer  *text_renderer)
 {
   g_signal_handlers_disconnect_by_func (text_renderer->screen,
                                        (gpointer)on_renderer_display_closed,
                                        text_renderer);
-  g_object_set_data (G_OBJECT (text_renderer->screen), "gtk-text-renderer", NULL);
+  g_object_set_data (G_OBJECT (text_renderer->screen), I_("gtk-text-renderer"), NULL);
 }
 
 static GtkTextRenderer *
@@ -643,11 +669,12 @@ get_text_renderer (GdkScreen *screen)
       text_renderer = g_object_new (GTK_TYPE_TEXT_RENDERER, "screen", screen, NULL);
       text_renderer->screen = screen;
       
-      g_object_set_data_full (G_OBJECT (screen), "gtk-text-renderer", text_renderer,
+      g_object_set_data_full (G_OBJECT (screen), I_("gtk-text-renderer"), text_renderer,
                              (GDestroyNotify)g_object_unref);
 
-      g_signal_connect (gdk_screen_get_display (screen), "closed",
-                       G_CALLBACK (on_renderer_display_closed), text_renderer);
+      g_signal_connect_object (gdk_screen_get_display (screen), "closed",
+                               G_CALLBACK (on_renderer_display_closed),
+                               text_renderer, 0);
     }
 
   return text_renderer;
@@ -754,7 +781,7 @@ gtk_text_layout_draw (GtkTextLayout *layout,
                   if (gtk_text_iter_compare (&selection_end, &line_end) <= 0)
                     selection_end_index = gtk_text_iter_get_visible_line_index (&selection_end);
                   else
-                    selection_end_index = MAX(byte_count, 1);
+                    selection_end_index = byte_count + 1; /* + 1 to flag past-the-end */
                 }
             }
 
@@ -827,3 +854,6 @@ gtk_text_layout_draw (GtkTextLayout *layout,
 
   g_slist_free (line_list);
 }
+
+#define __GTK_TEXT_DISPLAY_C__
+#include "gtkaliasdef.c"