static gint gail_statusbar_notify (GObject *obj, GParamSpec *pspec, gpointer user_data) { AtkObject *atk_obj = ATK_OBJECT (user_data); GtkLabel *label; GailStatusbar *statusbar; if (strcmp (pspec->name, "label") == 0) { const gchar* label_text; label = GTK_LABEL (obj); label_text = gtk_label_get_text (label); statusbar = GAIL_STATUSBAR (atk_obj); gail_text_util_text_setup (statusbar->textutil, label_text); if (atk_obj->name == NULL) { /* * The label has changed so notify a change in accessible-name */ g_object_notify (G_OBJECT (atk_obj), "accessible-name"); } /* * The label is the only property which can be changed */ g_signal_emit_by_name (atk_obj, "visible_data_changed"); } return 1; }
static void gail_item_notify_label_gtk (GObject *obj, GParamSpec *pspec, gpointer data) { AtkObject* atk_obj = ATK_OBJECT (data); GtkLabel *label; GailItem *gail_item; if (strcmp (pspec->name, "label") == 0) { const gchar* label_text; label = GTK_LABEL (obj); label_text = gtk_label_get_text (label); gail_item = GAIL_ITEM (atk_obj); gail_text_util_text_setup (gail_item->textutil, label_text); if (atk_obj->name == NULL) { /* * The label has changed so notify a change in accessible-name */ g_object_notify (G_OBJECT (atk_obj), "accessible-name"); } /* * The label is the only property which can be changed */ g_signal_emit_by_name (atk_obj, "visible_data_changed"); } }
static void gail_scale_notify (GObject *obj, GParamSpec *pspec) { GailScale *scale = GAIL_SCALE (obj); if (strcmp (pspec->name, "accessible-value") == 0) { GtkWidget *widget; widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (obj)); if (widget) { GtkScale *gtk_scale; PangoLayout *layout; const gchar *txt; gtk_scale = GTK_SCALE (widget); layout = gtk_scale_get_layout (gtk_scale); if (layout) { txt = pango_layout_get_text (layout); if (txt) { g_signal_emit_by_name (obj, "text_changed::delete", 0, gtk_text_buffer_get_char_count (scale->textutil->buffer)); gail_text_util_text_setup (scale->textutil, txt); g_signal_emit_by_name (obj, "text_changed::insert", 0, g_utf8_strlen (txt, -1)); } } } } G_OBJECT_CLASS (gail_scale_parent_class)->notify (obj, pspec); }
static gint gail_button_real_add_gtk (GtkContainer *container, GtkWidget *widget, gpointer data) { GtkLabel *label; GailButton *button; if (GTK_IS_LABEL (widget)) { const gchar* label_text; label = GTK_LABEL (widget); button = GAIL_BUTTON (data); if (!button->textutil) gail_button_init_textutil (button, widget); else { label_text = gtk_label_get_text (label); gail_text_util_text_setup (button->textutil, label_text); } } return 1; }
static void gail_expander_init_textutil (GailExpander *expander, GtkExpander *widget) { const gchar *label_text; expander->textutil = gail_text_util_new (); label_text = gail_expander_get_full_text (widget); gail_text_util_text_setup (expander->textutil, label_text); }
static void gail_statusbar_init_textutil (GailStatusbar *statusbar, GtkWidget *label) { const gchar *label_text; statusbar->textutil = gail_text_util_new (); label_text = gtk_label_get_text (GTK_LABEL (label)); gail_text_util_text_setup (statusbar->textutil, label_text); g_signal_connect (label, "notify", (GCallback) gail_statusbar_notify, statusbar); }
static void gail_item_init_textutil (GailItem *item, GtkWidget *label) { const gchar *label_text; if (item->textutil == NULL) { item->textutil = gail_text_util_new (); g_signal_connect (label, "notify", (GCallback) gail_item_notify_label_gtk, item); } label_text = gtk_label_get_text (GTK_LABEL (label)); gail_text_util_text_setup (item->textutil, label_text); }
static void gail_notebook_page_init_textutil (GailNotebookPage *page, GtkWidget *label) { const gchar *label_text; if (page->textutil == NULL) { page->textutil = gail_text_util_new (); g_signal_connect (label, "notify", (GCallback) gail_notebook_page_notify, page); } label_text = gtk_label_get_text (GTK_LABEL (label)); gail_text_util_text_setup (page->textutil, label_text); }
static void gail_expander_real_notify_gtk (GObject *obj, GParamSpec *pspec) { AtkObject* atk_obj; GtkExpander *expander; GailExpander *gail_expander; expander = GTK_EXPANDER (obj); atk_obj = gtk_widget_get_accessible (GTK_WIDGET (expander)); ; if (strcmp (pspec->name, "label") == 0) { const gchar* label_text; label_text = gail_expander_get_full_text (expander); gail_expander = GAIL_EXPANDER (atk_obj); if (gail_expander->textutil) gail_text_util_text_setup (gail_expander->textutil, label_text); if (atk_obj->name == NULL) { /* * The label has changed so notify a change in accessible-name */ g_object_notify (G_OBJECT (atk_obj), "accessible-name"); } /* * The label is the only property which can be changed */ g_signal_emit_by_name (atk_obj, "visible_data_changed"); } else if (strcmp (pspec->name, "expanded") == 0) { atk_object_notify_state_change (atk_obj, ATK_STATE_CHECKED, gtk_expander_get_expanded (expander)); atk_object_notify_state_change (atk_obj, ATK_STATE_EXPANDED, gtk_expander_get_expanded (expander)); g_signal_emit_by_name (atk_obj, "visible_data_changed"); } else GAIL_WIDGET_CLASS (gail_expander_parent_class)->notify_gtk (obj, pspec); }
static void gail_label_init_text_util (GailLabel *gail_label, GtkWidget *widget) { GtkLabel *label; const gchar *label_text; if (gail_label->textutil == NULL) gail_label->textutil = gail_text_util_new (); label = GTK_LABEL (widget); label_text = gtk_label_get_text (label); gail_text_util_text_setup (gail_label->textutil, label_text); if (label_text == NULL) gail_label->label_length = 0; else gail_label->label_length = g_utf8_strlen (label_text, -1); }
static void gail_button_init_textutil (GailButton *button, GtkWidget *label) { const gchar *label_text; if (button->textutil) g_object_unref (button->textutil); button->textutil = gail_text_util_new (); label_text = gtk_label_get_text (GTK_LABEL (label)); gail_text_util_text_setup (button->textutil, label_text); g_object_weak_ref (G_OBJECT (button), gail_button_notify_weak_ref, label); g_object_weak_ref (G_OBJECT (label), gail_button_notify_label_weak_ref, button); g_signal_connect (label, "notify", (GCallback) gail_button_notify_label_gtk, button); }
static void gail_scale_real_initialize (AtkObject *obj, gpointer data) { GailScale *gail_scale; const gchar *txt; PangoLayout *layout; ATK_OBJECT_CLASS (gail_scale_parent_class)->initialize (obj, data); gail_scale = GAIL_SCALE (obj); gail_scale->textutil = gail_text_util_new (); layout = gtk_scale_get_layout (GTK_SCALE (data)); if (layout) { txt = pango_layout_get_text (layout); if (txt) { gail_text_util_text_setup (gail_scale->textutil, txt); } } }
static gboolean gail_text_cell_update_cache (GailRendererCell *cell, gboolean emit_change_signal) { GailTextCell *text_cell = GAIL_TEXT_CELL (cell); AtkObject *obj = ATK_OBJECT (cell); gboolean rv = FALSE; gint temp_length; gchar *new_cache; g_object_get (G_OBJECT (cell->renderer), "text", &new_cache, NULL); if (text_cell->cell_text) { /* * If the new value is NULL and the old value isn't NULL, then the * value has changed. */ if (new_cache == NULL || strcmp (text_cell->cell_text, new_cache)) { g_free (text_cell->cell_text); temp_length = text_cell->cell_length; text_cell->cell_text = NULL; text_cell->cell_length = 0; if (emit_change_signal) { g_signal_emit_by_name (cell, "text_changed::delete", 0, temp_length); if (obj->name == NULL) g_object_notify (G_OBJECT (obj), "accessible-name"); } if (new_cache) rv = TRUE; } } else rv = TRUE; if (rv) { if (new_cache == NULL) { text_cell->cell_text = g_strdup (""); text_cell->cell_length = 0; } else { text_cell->cell_text = g_strdup (new_cache); text_cell->cell_length = g_utf8_strlen (new_cache, -1); } } g_free (new_cache); gail_text_util_text_setup (text_cell->textutil, text_cell->cell_text); if (rv) { if (emit_change_signal) { g_signal_emit_by_name (cell, "text_changed::insert", 0, text_cell->cell_length); if (obj->name == NULL) g_object_notify (G_OBJECT (obj), "accessible-name"); } } return rv; }