[gtk+/refactor: 15/16] gail: Use accessor functions to access GtkEntry
- From: Javier Jardón <jjardon src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+/refactor: 15/16] gail: Use accessor functions to access GtkEntry
- Date: Fri, 22 Oct 2010 09:39:21 +0000 (UTC)
commit 1426d36efa57a0bc954614294da49e5c5308d3ae
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]