[gtk+/refactor: 6/7] gail: Use accessor functions to access GtkEntry



commit f2abd656f64fe7676e4294c5d1803996900a77dd
Author: Javier Jardón <jjardon gnome org>
Date:   Wed Oct 20 19:22:46 2010 +0200

    gail: Use accessor functions to access GtkEntry
    
    Also, we can't access entry->preedit now. Commented that code until
    some gail expert can fix it

 modules/other/gail/gailentry.c |   40 +++++++++++++++++++++++++++++-----------
 1 files changed, 29 insertions(+), 11 deletions(-)
---
diff --git a/modules/other/gail/gailentry.c b/modules/other/gail/gailentry.c
index df65324..9aa9e5f 100644
--- a/modules/other/gail/gailentry.c
+++ b/modules/other/gail/gailentry.c
@@ -209,6 +209,7 @@ gail_entry_real_initialize (AtkObject *obj,
 {
   GtkEntry *entry;
   GailEntry *gail_entry;
+  gint start_pos, end_pos;
 
   ATK_OBJECT_CLASS (gail_entry_parent_class)->initialize (obj, data);
 
@@ -219,8 +220,10 @@ gail_entry_real_initialize (AtkObject *obj,
 
   entry = GTK_ENTRY (data);
   text_setup (gail_entry, entry);
-  gail_entry->cursor_position = entry->current_pos;
-  gail_entry->selection_bound = entry->selection_bound;
+  gtk_editable_get_selection_bounds (GTK_EDITABLE (entry),
+                                     &start_pos, &end_pos);
+  gail_entry->cursor_position = end_pos;
+  gail_entry->selection_bound = start_pos;
 
   /* Set up signal callbacks */
   g_signal_connect (data, "insert-text",
@@ -617,6 +620,7 @@ gail_entry_get_character_extents (AtkText *text,
   PangoRectangle char_rect;
   gint index, cursor_index, x_layout, y_layout;
   const gchar *entry_text;
+  gint start_pos, end_pos;
 
   widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (text));
   if (widget == NULL)
@@ -625,12 +629,17 @@ gail_entry_get_character_extents (AtkText *text,
 
   entry = GTK_ENTRY (widget);
 
+  gtk_editable_get_selection_bounds (GTK_EDITABLE (entry),
+                                     &start_pos, &end_pos);
   gtk_entry_get_layout_offsets (entry, &x_layout, &y_layout);
   entry_text = gtk_entry_get_text (entry);
+
   index = g_utf8_offset_to_pointer (entry_text, offset) - entry_text;
-  cursor_index = g_utf8_offset_to_pointer (entry_text, entry->current_pos) - entry_text;
+  cursor_index = g_utf8_offset_to_pointer (entry_text, end_pos) - entry_text;
+  /* FIXME: entry->preedit cannot be accessed directly
   if (index > cursor_index)
     index += entry->preedit_length;
+  */
   pango_layout_index_to_pos (gtk_entry_get_layout(entry), index, &char_rect);
  
   gail_misc_get_extents_from_pango_rectangle (widget, &char_rect, 
@@ -669,7 +678,12 @@ gail_entry_get_offset_at_point (AtkText *text,
     }
   else
     {
-      cursor_index = g_utf8_offset_to_pointer (entry_text, entry->current_pos) - entry_text;
+      gint start_pos, end_pos;
+
+      gtk_editable_get_selection_bounds (GTK_EDITABLE (entry),
+                                         &start_pos, &end_pos);
+      cursor_index = g_utf8_offset_to_pointer (entry_text, end_pos) - entry_text;
+      /* FIXME: entry->preedit_length cannot be accessed directly
       if (index >= cursor_index && entry->preedit_length)
         {
           if (index >= cursor_index + entry->preedit_length)
@@ -677,6 +691,7 @@ gail_entry_get_offset_at_point (AtkText *text,
           else
             index = cursor_index;
         }
+      */
       return g_utf8_pointer_to_offset (entry_text, entry_text + index);
     }
 }
@@ -1158,12 +1173,15 @@ static gboolean
 check_for_selection_change (GailEntry   *entry,
                             GtkEntry    *gtk_entry)
 {
-  gboolean ret_val = FALSE;
- 
-  if (gtk_entry->current_pos != gtk_entry->selection_bound)
+  gboolean selected, ret_val = FALSE;
+  gint start_pos, end_pos;
+
+  selected = gtk_editable_get_selection_bounds (GTK_EDITABLE (gtk_entry),
+                                                &start_pos, &end_pos);
+  if (selected)
     {
-      if (gtk_entry->current_pos != entry->cursor_position ||
-          gtk_entry->selection_bound != entry->selection_bound)
+      if (end_pos != entry->cursor_position ||
+          start_pos != entry->selection_bound)
         /*
          * This check is here as this function can be called
          * for notification of selection_bound and current_pos.
@@ -1178,8 +1196,8 @@ check_for_selection_change (GailEntry   *entry,
       /* We had a selection */
       ret_val = (entry->cursor_position != entry->selection_bound);
     }
-  entry->cursor_position = gtk_entry->current_pos;
-  entry->selection_bound = gtk_entry->selection_bound;
+  entry->cursor_position = end_pos;
+  entry->selection_bound = start_pos;
 
   return ret_val;
 }



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]