* Boston, MA 02111-1307, USA.
*/
+#include "config.h"
+
#include <string.h>
+
#include <gtk/gtk.h>
#include "gaillabel.h"
#include "gailwindow.h"
/* atkobject.h */
-static G_CONST_RETURN gchar* gail_label_get_name (AtkObject *accessible);
+static const gchar* gail_label_get_name (AtkObject *accessible);
static AtkStateSet* gail_label_ref_state_set (AtkObject *accessible);
static AtkRelationSet* gail_label_ref_relation_set (AtkObject *accessible);
widget = GTK_WIDGET (data);
- if (GTK_WIDGET_MAPPED (widget))
+ if (gtk_widget_get_mapped (widget))
gail_label_init_text_util (gail_label, widget);
else
g_signal_connect (widget,
gail_label->label_length = g_utf8_strlen (label_text, -1);
}
-AtkObject*
-gail_label_new (GtkWidget *widget)
-{
- GObject *object;
- AtkObject *accessible;
-
- g_return_val_if_fail (GTK_IS_LABEL (widget), NULL);
-
- object = g_object_new (GAIL_TYPE_LABEL, NULL);
-
- accessible = ATK_OBJECT (object);
- atk_object_initialize (accessible, widget);
-
- return accessible;
-}
-
static void
notify_name_change (AtkObject *atk_obj)
{
GtkWidget *widget;
GObject *gail_obj;
- widget = GTK_ACCESSIBLE (atk_obj)->widget;
+ widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (atk_obj));
if (widget == NULL)
/*
* State is defunct
}
else if (strcmp (pspec->name, "cursor-position") == 0)
{
- gint start, end;
+ gint start, end, tmp;
gboolean text_caret_moved = FALSE;
gboolean selection_changed = FALSE;
- gboolean is_start = TRUE;
gail_obj = G_OBJECT (atk_obj);
label = GTK_LABEL (widget);
+ if (gail_label->selection_bound != -1 && gail_label->selection_bound < gail_label->cursor_position)
+ {
+ tmp = gail_label->selection_bound;
+ gail_label->selection_bound = gail_label->cursor_position;
+ gail_label->cursor_position = tmp;
+ }
+
if (gtk_label_get_selection_bounds (label, &start, &end))
{
if (start != gail_label->cursor_position ||
end != gail_label->selection_bound)
{
if (end != gail_label->selection_bound)
- is_start = FALSE;
- gail_label->selection_bound = end;
- gail_label->cursor_position = start;
+ {
+ gail_label->selection_bound = start;
+ gail_label->cursor_position = end;
+ }
+ else
+ {
+ gail_label->selection_bound = end;
+ gail_label->cursor_position = start;
+ }
text_caret_moved = TRUE;
if (start != end)
selection_changed = TRUE;
if (gail_label->selection_bound != -1 && end != gail_label->selection_bound)
{
text_caret_moved = TRUE;
- is_start = FALSE;
+ gail_label->cursor_position = end;
+ gail_label->selection_bound = start;
+ }
+ else
+ {
+ gail_label->cursor_position = start;
+ gail_label->selection_bound = end;
}
- gail_label->cursor_position = start;
- gail_label->selection_bound = end;
}
else
{
}
if (text_caret_moved)
g_signal_emit_by_name (gail_obj, "text_caret_moved",
- is_start ? gail_label->cursor_position : gail_label->selection_bound);
+ gail_label->cursor_position);
if (selection_changed)
g_signal_emit_by_name (gail_obj, "text_selection_changed");
GtkWidget *widget;
state_set = ATK_OBJECT_CLASS (gail_label_parent_class)->ref_state_set (accessible);
- widget = GTK_ACCESSIBLE (accessible)->widget;
+ widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (accessible));
if (widget == NULL)
return state_set;
g_return_val_if_fail (GAIL_IS_LABEL (obj), NULL);
- widget = GTK_ACCESSIBLE (obj)->widget;
+ widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (obj));
if (widget == NULL)
/*
* State is defunct
*
* The relation set is not updated if the mnemonic widget is changed
*/
- GtkWidget *mnemonic_widget = GTK_LABEL (widget)->mnemonic_widget;
+ GtkWidget *mnemonic_widget = gtk_label_get_mnemonic_widget (GTK_LABEL (widget));
if (mnemonic_widget)
{
AtkObject *accessible_array[1];
AtkRelation* relation;
- if (!GTK_WIDGET_CAN_FOCUS (mnemonic_widget))
+ if (!gtk_widget_get_can_focus (mnemonic_widget))
{
/*
* Handle the case where a GtkFileChooserButton is specified as the
{
GtkWidget *temp_widget;
- temp_widget = GTK_BIN (list->data)->child;
+ temp_widget = gtk_bin_get_child (GTK_BIN (list->data));
if (GTK_IS_BUTTON (temp_widget))
mnemonic_widget = temp_widget;
}
temp_widget = GTK_WIDGET (list->data);
g_list_free (list);
list = gtk_container_get_children (GTK_CONTAINER (temp_widget));
- if (GTK_IS_COMBO (list->data))
- {
- mnemonic_widget = GTK_WIDGET (list->data);
- }
}
}
g_list_free (list);
return relation_set;
}
-static G_CONST_RETURN gchar*
+static const gchar*
gail_label_get_name (AtkObject *accessible)
{
- G_CONST_RETURN gchar *name;
+ const gchar *name;
g_return_val_if_fail (GAIL_IS_LABEL (accessible), NULL);
*/
GtkWidget *widget;
- widget = GTK_ACCESSIBLE (accessible)->widget;
+ widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (accessible));
if (widget == NULL)
/*
* State is defunct
const gchar *label_text;
- widget = GTK_ACCESSIBLE (text)->widget;
+ widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (text));
if (widget == NULL)
/* State is defunct */
return NULL;
GtkWidget *widget;
GtkLabel *label;
- widget = GTK_ACCESSIBLE (text)->widget;
+ widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (text));
if (widget == NULL)
/* State is defunct */
GtkWidget *widget;
GtkLabel *label;
- widget = GTK_ACCESSIBLE (text)->widget;
+ widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (text));
if (widget == NULL)
/* State is defunct */
GtkWidget *widget;
GtkLabel *label;
- widget = GTK_ACCESSIBLE (text)->widget;
+ widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (text));
if (widget == NULL)
{
GtkWidget *widget;
GtkLabel *label;
- widget = GTK_ACCESSIBLE (text)->widget;
+ widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (text));
if (widget == NULL)
/* State is defunct */
return 0;
GtkWidget *widget;
GtkLabel *label;
- widget = GTK_ACCESSIBLE (text)->widget;
+ widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (text));
if (widget == NULL)
/* State is defunct */
return 0;
if (gtk_label_get_selectable (label) &&
offset >= 0 &&
- offset <= g_utf8_strlen (label->text, -1))
+ offset <= g_utf8_strlen (gtk_label_get_text (label), -1))
{
gtk_label_select_region (label, offset, offset);
return TRUE;
GtkLabel *label;
gint start, end;
- widget = GTK_ACCESSIBLE (text)->widget;
+ widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (text));
if (widget == NULL)
/* State is defunct */
return 0;
GtkWidget *widget;
GtkLabel *label;
- widget = GTK_ACCESSIBLE (text)->widget;
+ widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (text));
if (widget == NULL)
/* State is defunct */
return NULL;
GtkLabel *label;
gint start, end;
- widget = GTK_ACCESSIBLE (text)->widget;
+ widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (text));
if (widget == NULL)
/* State is defunct */
return FALSE;
GtkLabel *label;
gint start, end;
- widget = GTK_ACCESSIBLE (text)->widget;
+ widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (text));
if (widget == NULL)
/* State is defunct */
return FALSE;
GtkLabel *label;
gint start, end;
- widget = GTK_ACCESSIBLE (text)->widget;
+ widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (text));
if (widget == NULL)
/* State is defunct */
return FALSE;
GtkWidget *widget;
GtkLabel *label;
PangoRectangle char_rect;
+ const gchar *label_text;
gint index, x_layout, y_layout;
- widget = GTK_ACCESSIBLE (text)->widget;
+ widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (text));
if (widget == NULL)
/* State is defunct */
label = GTK_LABEL (widget);
gtk_label_get_layout_offsets (label, &x_layout, &y_layout);
- index = g_utf8_offset_to_pointer (label->text, offset) - label->text;
+ label_text = gtk_label_get_text (label);
+ index = g_utf8_offset_to_pointer (label_text, offset) - label_text;
pango_layout_index_to_pos (gtk_label_get_layout (label), index, &char_rect);
gail_misc_get_extents_from_pango_rectangle (widget, &char_rect,
{
GtkWidget *widget;
GtkLabel *label;
+ const gchar *label_text;
gint index, x_layout, y_layout;
- widget = GTK_ACCESSIBLE (text)->widget;
+ widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (text));
if (widget == NULL)
/* State is defunct */
return -1;
index = gail_misc_get_index_at_point_in_layout (widget,
gtk_label_get_layout (label),
x_layout, y_layout, x, y, coords);
+ label_text = gtk_label_get_text (label);
if (index == -1)
{
if (coords == ATK_XY_WINDOW || coords == ATK_XY_SCREEN)
- return g_utf8_strlen (label->text, -1);
+ return g_utf8_strlen (label_text, -1);
return index;
}
else
- return g_utf8_pointer_to_offset (label->text, label->text + index);
+ return g_utf8_pointer_to_offset (label_text, label_text + index);
}
static AtkAttributeSet*
GtkJustification justify;
GtkTextDirection dir;
- widget = GTK_ACCESSIBLE (text)->widget;
+ widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (text));
if (widget == NULL)
/* State is defunct */
return NULL;
at_set = gail_misc_layout_get_run_attributes (at_set,
gtk_label_get_layout (label),
- label->text,
+ gtk_label_get_text (label),
offset,
start_offset,
end_offset);
GtkLabel *label;
AtkAttributeSet *at_set = NULL;
- widget = GTK_ACCESSIBLE (text)->widget;
+ widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (text));
if (widget == NULL)
/* State is defunct */
return NULL;
const gchar *string;
gchar *index;
- widget = GTK_ACCESSIBLE (text)->widget;
+ widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (text));
if (widget == NULL)
/* State is defunct */
return '\0';