forked from AuroraMiddleware/gtk
Entry: Fix unset icon tooltip hiding Entry tooltip
Our ::query-tooltip handler first checks whether the pointer is over any of the icons, returning their tooltip if so, and if not chains up to Widget::query-tooltip in order to show the text for the widget overall. But ensure_has_tooltip(), which exists to update :has-tooltip based on whether ::query-tooltip is needed, only set :has-tooltip to TRUE if any icon had a tooltip, without caring whether the widget as a whole does. That is asymmetrical and meant that if the Entry had a tooltip, but subsequently all icons had their tooltips unset, :has-tooltip would be set to FALSE, and hence the tooltip for the widget would become lost. The fix is to set :has-tooltip to TRUE if the widget has a tooltip of its own, and we only need to check the icons if that is not the case. https://bugzilla.gnome.org/show_bug.cgi?id=785672
This commit is contained in:
parent
b3a6067541
commit
44c4faeed0
@ -8085,18 +8085,18 @@ gtk_entry_get_icon_area (GtkEntry *entry,
|
|||||||
static void
|
static void
|
||||||
ensure_has_tooltip (GtkEntry *entry)
|
ensure_has_tooltip (GtkEntry *entry)
|
||||||
{
|
{
|
||||||
GtkEntryPrivate *priv;
|
gboolean has_tooltip = gtk_widget_get_tooltip_text (GTK_WIDGET (entry)) != NULL;
|
||||||
EntryIconInfo *icon_info;
|
|
||||||
int i;
|
|
||||||
gboolean has_tooltip = FALSE;
|
|
||||||
|
|
||||||
priv = entry->priv;
|
if (!has_tooltip)
|
||||||
|
|
||||||
for (i = 0; i < MAX_ICONS; i++)
|
|
||||||
{
|
{
|
||||||
if ((icon_info = priv->icons[i]) != NULL)
|
GtkEntryPrivate *priv = entry->priv;
|
||||||
|
int i;
|
||||||
|
|
||||||
|
for (i = 0; i < MAX_ICONS; i++)
|
||||||
{
|
{
|
||||||
if (icon_info->tooltip != NULL)
|
EntryIconInfo *icon_info = priv->icons[i];
|
||||||
|
|
||||||
|
if (icon_info != NULL && icon_info->tooltip != NULL)
|
||||||
{
|
{
|
||||||
has_tooltip = TRUE;
|
has_tooltip = TRUE;
|
||||||
break;
|
break;
|
||||||
|
Loading…
Reference in New Issue
Block a user