Fix for Selection problem in Text Components
Olga Rodimina
rodimina@redhat.com
Mon Dec 1 17:31:00 GMT 2003
Hi,
This patch fixes selection problem in Text Components.
With this patch, getSelectedText() will return "" if the text is not
selected, instead of throwing IndexOutOfBoundsException.
Olga.
-------------- next part --------------
? .snprj
? libjava.proj
? patch
? jni/patch
Index: ChangeLog
===================================================================
RCS file: /cvsroot/gcc/gcc/libjava/ChangeLog,v
retrieving revision 1.2384
diff -c -p -c -p -r1.2384 ChangeLog
*** ChangeLog 1 Dec 2003 14:32:24 -0000 1.2384
--- ChangeLog 1 Dec 2003 17:17:25 -0000
***************
*** 1,3 ****
--- 1,13 ----
+ 2003-12-01 Olga Rodimina <rodimina@redhat.com>
+
+ * java/awt/TextComponent.java:
+ (getSelectionStart): Updated javadocs.
+ (getSelectionEnd): Ditto.
+ * jni/gtk-peer/gnu_java_awt_peer_gtk_GtkTextComponentPeer:
+ (getSelectionStart): Changed to return caret position if no
+ text is selected
+ (getSelectionEnd): Ditto.
+
2003-12-01 Michael Koch <konqueror@gmx.de>
* gnu/java/net/natPlainSocketImplPosix.cc
Index: java/awt/TextComponent.java
===================================================================
RCS file: /cvsroot/gcc/gcc/libjava/java/awt/TextComponent.java,v
retrieving revision 1.9
diff -c -p -c -p -r1.9 TextComponent.java
*** java/awt/TextComponent.java 15 Feb 2003 09:21:55 -0000 1.9
--- java/awt/TextComponent.java 1 Dec 2003 17:17:26 -0000
*************** getSelectedText()
*** 163,169 ****
/**
* Returns the starting position of the selected text region.
! * // FIXME: What is returned if there is no selected text?
*
* @return The starting position of the selected text region.
*/
--- 163,169 ----
/**
* Returns the starting position of the selected text region.
! * If the text is not selected then caret position is returned.
*
* @return The starting position of the selected text region.
*/
*************** setSelectionStart(int selectionStart)
*** 196,202 ****
/**
* Returns the ending position of the selected text region.
! * // FIXME: What is returned if there is no selected text.
*
* @return The ending position of the selected text region.
*/
--- 196,202 ----
/**
* Returns the ending position of the selected text region.
! * If the text is not selected, then caret position is returned
*
* @return The ending position of the selected text region.
*/
Index: jni/gtk-peer/gnu_java_awt_peer_gtk_GtkTextComponentPeer.c
===================================================================
RCS file: /cvsroot/gcc/gcc/libjava/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkTextComponentPeer.c,v
retrieving revision 1.7
diff -c -p -c -p -r1.7 gnu_java_awt_peer_gtk_GtkTextComponentPeer.c
*** jni/gtk-peer/gnu_java_awt_peer_gtk_GtkTextComponentPeer.c 8 Oct 2003 15:49:33 -0000 1.7
--- jni/gtk-peer/gnu_java_awt_peer_gtk_GtkTextComponentPeer.c 1 Dec 2003 17:17:27 -0000
*************** Java_gnu_java_awt_peer_gtk_GtkTextCompon
*** 194,199 ****
--- 194,201 ----
GtkTextIter start;
GtkTextIter end;
int starti, endi;
+ GtkTextMark *mark;
+ GtkTextIter iter;
ptr = NSA_GET_PTR (env, obj);
*************** Java_gnu_java_awt_peer_gtk_GtkTextCompon
*** 204,209 ****
--- 206,213 ----
editable = GTK_EDITABLE (ptr);
if (gtk_editable_get_selection_bounds (editable, &starti, &endi))
pos = starti;
+ else
+ pos = gtk_editable_get_position (editable);
}
else
{
*************** Java_gnu_java_awt_peer_gtk_GtkTextCompon
*** 221,226 ****
--- 225,236 ----
buf = gtk_text_view_get_buffer (GTK_TEXT_VIEW (text));
if (gtk_text_buffer_get_selection_bounds(buf, &start, &end))
pos = gtk_text_iter_get_offset (&start);
+ else
+ {
+ mark = gtk_text_buffer_get_insert (buf);
+ gtk_text_buffer_get_iter_at_mark (buf, &iter, mark);
+ pos = gtk_text_iter_get_offset (&iter);
+ }
}
}
*************** Java_gnu_java_awt_peer_gtk_GtkTextCompon
*** 241,246 ****
--- 251,258 ----
GtkTextIter start;
GtkTextIter end;
int starti, endi;
+ GtkTextMark *mark;
+ GtkTextIter iter;
ptr = NSA_GET_PTR (env, obj);
*************** Java_gnu_java_awt_peer_gtk_GtkTextCompon
*** 251,256 ****
--- 263,270 ----
editable = GTK_EDITABLE (ptr);
if (gtk_editable_get_selection_bounds (editable, &starti, &endi))
pos = endi;
+ else
+ pos = gtk_editable_get_position (editable);
}
else
{
*************** Java_gnu_java_awt_peer_gtk_GtkTextCompon
*** 268,273 ****
--- 282,293 ----
buf = gtk_text_view_get_buffer (GTK_TEXT_VIEW (text));
if (gtk_text_buffer_get_selection_bounds(buf, &start, &end))
pos = gtk_text_iter_get_offset (&end);
+ else
+ {
+ mark = gtk_text_buffer_get_insert (buf);
+ gtk_text_buffer_get_iter_at_mark (buf, &iter, mark);
+ pos = gtk_text_iter_get_offset (&iter);
+ }
}
}
More information about the Java-patches
mailing list