gtktextbuffer: small cleanup in clipboard handling

Make code shorter and also more efficient since we move the
selection check out of the loop

https://bugzilla.gnome.org/show_bug.cgi?id=747096
This commit is contained in:
Paolo Borelli 2015-03-29 12:22:42 +02:00 committed by Matthias Clasen
parent 49ec67c7eb
commit 6b977e6870

View File

@ -3626,40 +3626,36 @@ static void
update_selection_clipboards (GtkTextBuffer *buffer)
{
GtkTextBufferPrivate *priv;
GSList *tmp_list = buffer->priv->selection_clipboards;
gboolean has_selection;
GtkTextIter start;
GtkTextIter end;
GSList *tmp_list;
priv = buffer->priv;
gtk_text_buffer_get_copy_target_list (buffer);
has_selection = gtk_text_buffer_get_selection_bounds (buffer, &start, &end);
tmp_list = buffer->priv->selection_clipboards;
while (tmp_list)
{
GtkTextIter start;
GtkTextIter end;
SelectionClipboard *selection_clipboard = tmp_list->data;
GtkClipboard *clipboard = selection_clipboard->clipboard;
/* Determine whether we have a selection and adjust X selection
* accordingly.
*/
if (!gtk_text_buffer_get_selection_bounds (buffer, &start, &end))
{
if (gtk_clipboard_get_owner (clipboard) == G_OBJECT (buffer))
gtk_clipboard_clear (clipboard);
}
else
{
/* Even if we already have the selection, we need to update our
* timestamp.
*/
if (has_selection)
{
/* Even if we already have the selection, we need to update our
* timestamp.
*/
gtk_clipboard_set_with_owner (clipboard,
priv->copy_target_entries,
priv->n_copy_target_entries,
clipboard_get_selection_cb,
clipboard_clear_selection_cb,
G_OBJECT (buffer));
}
}
else if (gtk_clipboard_get_owner (clipboard) == G_OBJECT (buffer))
gtk_clipboard_clear (clipboard);
tmp_list = tmp_list->next;
}