forked from AuroraMiddleware/gtk
Bug 611709 - Add gtk_statusbar_remove_all
This commit is contained in:
parent
6c0ff288b0
commit
75e48d68bc
@ -3885,6 +3885,7 @@ gtk_statusbar_new
|
||||
gtk_statusbar_pop
|
||||
gtk_statusbar_push
|
||||
gtk_statusbar_remove
|
||||
gtk_statusbar_remove_all
|
||||
gtk_statusbar_set_has_resize_grip
|
||||
#endif
|
||||
#endif
|
||||
|
@ -462,6 +462,72 @@ gtk_statusbar_remove (GtkStatusbar *statusbar,
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* gtk_statusbar_remove_all:
|
||||
* @statusbar: a #GtkStatusBar
|
||||
* @context_id: a context identifier
|
||||
*
|
||||
* Forces the removal of all messages from a statusbar's
|
||||
* stack with the exact @context_id.
|
||||
*
|
||||
* Since: 2.22
|
||||
*/
|
||||
void
|
||||
gtk_statusbar_remove_all (GtkStatusbar *statusbar,
|
||||
guint context_id)
|
||||
{
|
||||
GtkStatusbarMsg *msg;
|
||||
GSList *prev, *list;
|
||||
|
||||
g_return_if_fail (GTK_IS_STATUSBAR (statusbar));
|
||||
|
||||
if (statusbar->messages == NULL)
|
||||
return;
|
||||
|
||||
msg = statusbar->messages->data;
|
||||
|
||||
/* care about signal emission if the topmost item is removed */
|
||||
if (msg->context_id == context_id)
|
||||
{
|
||||
gtk_statusbar_pop (statusbar, context_id);
|
||||
|
||||
prev = NULL;
|
||||
list = statusbar->messages;
|
||||
}
|
||||
else
|
||||
{
|
||||
prev = statusbar->messages;
|
||||
list = prev->next;
|
||||
}
|
||||
|
||||
while (list != NULL)
|
||||
{
|
||||
msg = list->data;
|
||||
|
||||
if (msg->context_id == context_id)
|
||||
{
|
||||
if (prev == NULL)
|
||||
statusbar->messages = list->next;
|
||||
else
|
||||
prev->next = list->next;
|
||||
|
||||
g_free (msg->text);
|
||||
g_slice_free (GtkStatusbarMsg, msg);
|
||||
g_slist_free_1 (list);
|
||||
|
||||
if (prev == NULL)
|
||||
prev = statusbar->messages;
|
||||
|
||||
list = prev->next;
|
||||
}
|
||||
else
|
||||
{
|
||||
prev = list;
|
||||
list = prev->next;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* gtk_statusbar_set_has_resize_grip:
|
||||
* @statusbar: a #GtkStatusBar
|
||||
|
@ -102,6 +102,9 @@ void gtk_statusbar_pop (GtkStatusbar *statusbar,
|
||||
void gtk_statusbar_remove (GtkStatusbar *statusbar,
|
||||
guint context_id,
|
||||
guint message_id);
|
||||
void gtk_statusbar_remove_all (GtkStatusbar *statusbar,
|
||||
guint context_id);
|
||||
|
||||
|
||||
void gtk_statusbar_set_has_resize_grip (GtkStatusbar *statusbar,
|
||||
gboolean setting);
|
||||
|
Loading…
Reference in New Issue
Block a user