summaryrefslogtreecommitdiff
path: root/gtk
diff options
context:
space:
mode:
authorPaolo Borelli <pborelli@katamail.com>2006-08-17 01:12:02 +0000
committerPaolo Borelli <pborelli@src.gnome.org>2006-08-17 01:12:02 +0000
commit2bca4a48d043df577a6f5477b312b7f97adb29c7 (patch)
treed9da2735283bf95095b852bc3ea1d50cbe46d78f /gtk
parent6f4fa658339440abbb843a4798d9c7c8d87faa72 (diff)
downloadgtk+-2bca4a48d043df577a6f5477b312b7f97adb29c7.tar.gz
make sure the has-selection property is updated when the delection is
2006-08-17 Paolo Borelli <pborelli@katamail.com> * gtk/gtktextbuffer.c: make sure the has-selection property is updated when the delection is deleted. Bug #329752 * tests/testtext.c: add a copy menu item and show how to update its sensitivity tracking the has-selection property.
Diffstat (limited to 'gtk')
-rw-r--r--gtk/gtktextbuffer.c18
1 files changed, 11 insertions, 7 deletions
diff --git a/gtk/gtktextbuffer.c b/gtk/gtktextbuffer.c
index fa7f4980cf..3de0d79208 100644
--- a/gtk/gtktextbuffer.c
+++ b/gtk/gtktextbuffer.c
@@ -1388,6 +1388,8 @@ gtk_text_buffer_real_delete_range (GtkTextBuffer *buffer,
GtkTextIter *start,
GtkTextIter *end)
{
+ gboolean has_selection;
+
g_return_if_fail (GTK_IS_TEXT_BUFFER (buffer));
g_return_if_fail (start != NULL);
g_return_if_fail (end != NULL);
@@ -1397,6 +1399,13 @@ gtk_text_buffer_real_delete_range (GtkTextBuffer *buffer,
/* may have deleted the selection... */
update_selection_clipboards (buffer);
+ has_selection = gtk_text_buffer_get_selection_bounds (buffer, NULL, NULL);
+ if (has_selection != buffer->has_selection)
+ {
+ buffer->has_selection = has_selection;
+ g_object_notify (G_OBJECT (buffer), "has-selection");
+ }
+
g_signal_emit (buffer, signals[CHANGED], 0);
g_object_notify (G_OBJECT (buffer), "cursor-position");
}
@@ -1854,12 +1863,6 @@ gtk_text_buffer_set_mark (GtkTextBuffer *buffer,
iter,
should_exist);
- if (_gtk_text_btree_mark_is_insert (get_btree (buffer), mark) ||
- _gtk_text_btree_mark_is_selection_bound (get_btree (buffer), mark))
- {
- update_selection_clipboards (buffer);
- }
-
_gtk_text_btree_get_iter_at_mark (get_btree (buffer),
&location,
mark);
@@ -2200,7 +2203,6 @@ gtk_text_buffer_select_range (GtkTextBuffer *buffer,
gtk_text_buffer_mark_set (buffer, &real_bound,
gtk_text_buffer_get_mark (buffer,
"selection_bound"));
- update_selection_clipboards (buffer);
}
/*
@@ -2306,6 +2308,8 @@ gtk_text_buffer_real_mark_set (GtkTextBuffer *buffer,
{
gboolean has_selection;
+ update_selection_clipboards (buffer);
+
has_selection = gtk_text_buffer_get_selection_bounds (buffer,
NULL,
NULL);