forked from AuroraMiddleware/gtk
a11y: Solved leak on gtk_widget_accessible_get_description
https://bugzilla.gnome.org/show_bug.cgi?id=643611
This commit is contained in:
parent
634ebb593c
commit
5ff328d21f
@ -24,6 +24,8 @@
|
|||||||
#include "gtkwidgetaccessible.h"
|
#include "gtkwidgetaccessible.h"
|
||||||
#include "gtknotebookpageaccessible.h"
|
#include "gtknotebookpageaccessible.h"
|
||||||
|
|
||||||
|
#define TOOLTIP_KEY "tooltip"
|
||||||
|
|
||||||
extern GtkWidget *_focus_widget;
|
extern GtkWidget *_focus_widget;
|
||||||
|
|
||||||
|
|
||||||
@ -106,6 +108,16 @@ gtk_widget_accessible_focus_event (AtkObject *obj,
|
|||||||
atk_object_notify_state_change (focus_obj, ATK_STATE_FOCUSED, focus_in);
|
atk_object_notify_state_change (focus_obj, ATK_STATE_FOCUSED, focus_in);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
gtk_widget_accessible_update_tooltip (GtkWidgetAccessible *accessible,
|
||||||
|
GtkWidget *widget)
|
||||||
|
{
|
||||||
|
g_object_set_data_full (G_OBJECT (accessible),
|
||||||
|
TOOLTIP_KEY,
|
||||||
|
gtk_widget_get_tooltip_text (widget),
|
||||||
|
g_free);
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
gtk_widget_accessible_initialize (AtkObject *obj,
|
gtk_widget_accessible_initialize (AtkObject *obj,
|
||||||
gpointer data)
|
gpointer data)
|
||||||
@ -123,6 +135,8 @@ gtk_widget_accessible_initialize (AtkObject *obj,
|
|||||||
|
|
||||||
GTK_WIDGET_ACCESSIBLE (obj)->layer = ATK_LAYER_WIDGET;
|
GTK_WIDGET_ACCESSIBLE (obj)->layer = ATK_LAYER_WIDGET;
|
||||||
obj->role = ATK_ROLE_UNKNOWN;
|
obj->role = ATK_ROLE_UNKNOWN;
|
||||||
|
|
||||||
|
gtk_widget_accessible_update_tooltip (GTK_WIDGET_ACCESSIBLE (obj), widget);
|
||||||
}
|
}
|
||||||
|
|
||||||
static const gchar *
|
static const gchar *
|
||||||
@ -137,7 +151,7 @@ gtk_widget_accessible_get_description (AtkObject *accessible)
|
|||||||
if (accessible->description)
|
if (accessible->description)
|
||||||
return accessible->description;
|
return accessible->description;
|
||||||
|
|
||||||
return gtk_widget_get_tooltip_text (widget);
|
return g_object_get_data (G_OBJECT (accessible), TOOLTIP_KEY);
|
||||||
}
|
}
|
||||||
|
|
||||||
static AtkObject *
|
static AtkObject *
|
||||||
@ -475,7 +489,11 @@ gtk_widget_accessible_notify_gtk (GObject *obj,
|
|||||||
state = ATK_STATE_HORIZONTAL;
|
state = ATK_STATE_HORIZONTAL;
|
||||||
value = (gtk_orientable_get_orientation (orientable) == GTK_ORIENTATION_HORIZONTAL);
|
value = (gtk_orientable_get_orientation (orientable) == GTK_ORIENTATION_HORIZONTAL);
|
||||||
}
|
}
|
||||||
else
|
else if (g_strcmp0 (pspec->name, "tooltip-text") == 0)
|
||||||
|
{
|
||||||
|
gtk_widget_accessible_update_tooltip (GTK_WIDGET_ACCESSIBLE (atk_obj),
|
||||||
|
widget);
|
||||||
|
}
|
||||||
return;
|
return;
|
||||||
|
|
||||||
atk_object_notify_state_change (atk_obj, state, value);
|
atk_object_notify_state_change (atk_obj, state, value);
|
||||||
|
Loading…
Reference in New Issue
Block a user