Hello, I filed a bug-report against gnome-terminal because of a 'anomaly' in selection. I got no reply since Dec 2 and the anomaly still is in gnome-libs-1.2.13. This reports seems to have vanised from the bugtracking-system I found out that this is not in gnome-terminal but in libzvt and patched it. With this patch the word a word-selection (doubleklick) always stay in the selections, even if selecting backwards. This also fixes the "first word in line gets lost from selection"-bug. patch appended. I would like to have some feedback and this patch included in the next gnome-release. MfG bmg -- "Des is völlig wurscht, was heut beschlos- | M G Berberich sen wird: I bin sowieso dagegn!" | berberic fmi uni-passau de (SPD-Stadtrat Kurt Schindler; Regensburg) |
diff -Naur gnome-libs-1.2.13/zvt/vtx.h gnome-libs-1.2.13-bmg/zvt/vtx.h
--- gnome-libs-1.2.13/zvt/vtx.h Fri Nov 19 01:50:17 1999
+++ gnome-libs-1.2.13-bmg/zvt/vtx.h Fri May 4 17:58:36 2001
@@ -82,6 +82,7 @@
int selstartx, selstarty;
int selendx, selendy;
+ int selinitx, selinity;
/* previously rendered values */
int selstartxold, selstartyold;
diff -Naur gnome-libs-1.2.13/zvt/zvtterm.c gnome-libs-1.2.13-bmg/zvt/zvtterm.c
--- gnome-libs-1.2.13/zvt/zvtterm.c Fri Mar 9 07:22:04 2001
+++ gnome-libs-1.2.13-bmg/zvt/zvtterm.c Fri May 4 18:18:10 2001
@@ -1548,6 +1548,8 @@
vx->selstarty = y;
vx->selendx = x;
vx->selendy = y;
+ vx->selinitx = x;
+ vx->selinity = y;
/* reset 'drawn' screen (to avoid mis-refreshes) */
if (!vx->selected) {
@@ -1799,6 +1801,22 @@
if (vx->selectiontype != VT_SELTYPE_NONE){
+ /* word-select always should contain start-word */
+ if (vx->selectiontype & VT_SELTYPE_WORD) {
+ if (vx->selstarty > vx->selinity ||
+ (vx->selstarty == vx->selinity && vx->selstartx > vx->selinitx)) {
+ vx->selstarty = vx->selinity;
+ vx->selstartx = vx->selinitx;
+ vx->selectiontype |= VT_SELTYPE_BYSTART;
+ vx->selectiontype &= ~VT_SELTYPE_BYEND;
+ } else if (vx->selendy < vx->selinity ||
+ (vx->selendy == vx->selinity && vx->selendx < vx->selinitx)) {
+ vx->selendy = vx->selinity;
+ vx->selendx = vx->selinitx;
+ vx->selectiontype |= VT_SELTYPE_BYEND;
+ vx->selectiontype &= ~VT_SELTYPE_BYSTART;
+ }
+ }
/* move end of selection, and draw it ... */
if (vx->selectiontype & VT_SELTYPE_BYSTART) {
vx->selendx = x;
Attachment:
pgpgwO5ErbI1o.pgp
Description: PGP signature