Tk Source Code

View Ticket
Login
2020-02-02
16:18 Ticket [3019563fff] copy and paste from Tk entry fails status still Closed with 5 other changes artifact: cab87cb6c1 user: fvogel
2020-02-01
20:47 Ticket [3019563fff]: 4 changes artifact: 1d2fc3c8da user: bll
17:42 Closed ticket [3019563fff]. artifact: f64c23dfb9 user: bll
2020-01-27
02:26 Ticket [3019563fff]: 3 changes artifact: 8f2daf75c5 user: bll
01:42 Ticket [3019563fff]: 3 changes artifact: ca496501ca user: bll
2020-01-26
11:53 Ticket [3019563fff]: 3 changes artifact: bb0850f9ae user: fvogel
2019-12-23
12:39 Ticket [3019563fff]: 3 changes artifact: 45716e723e user: fvogel
11:56 Ticket [3019563fff]: 3 changes artifact: 8b748372b0 user: jan.nijtmans
11:36 Ticket [3019563fff]: 3 changes artifact: 5679c0a584 user: fvogel
11:10 Ticket [3019563fff]: 3 changes artifact: 656cd8355f user: jan.nijtmans
10:57 Ticket [3019563fff]: 3 changes artifact: 6649268172 user: fvogel
2015-11-05
21:12 Ticket [3019563fff]: 3 changes artifact: 297619eaf7 user: fvogel
2015-11-03
21:26 Ticket [3019563fff]: 7 changes artifact: b65fa44305 user: fvogel
2010-06-22
12:03 New ticket [3019563fff]. artifact: 0063fa2724 user: lvirden

Ticket UUID: 3019563
Title: copy and paste from Tk entry fails
Type: Bug Version: obsolete: 8.6b1.1
Submitter: lvirden Created on: 2010-06-22 12:03:26
Subsystem: 07. [entry] Assigned To: nobody
Priority: 5 Medium Severity: Minor
Status: Closed Last Modified: 2020-02-02 16:18:06
Resolution: Works For Me Closed By: fvogel
    Closed on: 2020-02-02 16:18:06
Description:
Platform: SPARC Solaris 10, tk 8.6 cvs head (happens in older versions of Tk as well)
displaying on Windows XP SP 3 via either Hummingbird Exceed or Cygwin/X
Program:
package require Tk
entry .e
entry .f
pack .e .f


Case 1:
I type the words "English1 English2" into the entry box.
I press down on the mouse button, and drag across the first word.
I press control-c to copy the text.
I move the mouse into Microsoft Word 
I press control-v to paste.
Only the first character of the text is pasted.

Case 2:
Using the same program, with the same text in the entry, I double click on the string "English1".
I press control-c to copy
I move the mouse into Microsoft Word and press control-v.
The word "English1" is pasted.
I move the mouse back to the Tk entry widget, and double click on the word "English2".
I press control-c to copy.
I move the mouse back to Microsoft Word and press control-v.
The world "English1" - which was the previous item copied to the clipboard - is pasted.

Note that if I move the mouse to the second entry box, type some text there, and double click it, then move back to the first box and double click English2, 
press control-c, move the mouse into Microsoft Word and press control-v, the correct word is pasted.
User Comments: fvogel added on 2020-02-02 16:18:06:
Confirmed as working for me as well with cygwin version of Tcl/Tk core-8-6-branch. I can no longer reproduce what I saw on 2015-11-05.

bll added on 2020-02-01 20:47:03:
Tested again on Vista/64.
Copied from Tk to cygwin using control-insert and shift-insert.

bll added on 2020-02-01 17:42:05:
Able to copy/paste from windows terminal to cygwin Tk and from windows to cygwin Tk.
Closing.  Please reopen if this issue re-occurs.

bll added on 2020-01-27 02:26:33:
Err, should we open a new ticket for the cygwin build?

This section in the Makefile is trying to build windows stuff.
I commented out a few lines.

${STUB_LIB_FILE}: ${STUB_LIB_OBJS}
#       @if test "x${LIB_FILE}" = "xlibtcl${MAJOR_VERSION}.${MINOR_VERSION}.dll"; then \
#           (cd ${TOP_DIR}/win; ${MAKE} winextensions); \
#       fi
        rm -f $@
        ${STLIB_LD} $@ ${STUB_LIB_OBJS} ; ${RANLIB} $@


And now I get:

/home/bll/tcl-work/tcl8.6.10/generic/tclCmdAH.c: In function ‘StoreStatData’:
/home/bll/tcl-work/tcl8.6.10/generic/tclCmdAH.c:2528:65: error: ‘Tcl_StatBuf {aka struct <anonymous>}’ has no member named ‘st_blocks’; did you mean ‘st_nlink’?
     STORE_ARY("blocks", Tcl_NewWideIntObj((Tcl_WideInt)statPtr->st_blocks));
                                                                 ^
Which is sort of weird.  The stat structure is (post cpp):

struct stat
{
  dev_t st_dev;
  ino_t st_ino;
  mode_t st_mode;
  nlink_t st_nlink;
  uid_t st_uid;
  gid_t st_gid;
  dev_t st_rdev;
  off_t st_size;
  timestruc_t st_atim;
  timestruc_t st_mtim;
  timestruc_t st_ctim;
  blksize_t st_blksize;
  blkcnt_t st_blocks;
  timestruc_t st_birthtim;
};

Ok, tcl.h is redefining struct stat for cygwin, which is just dumb.

bll added on 2020-01-27 01:42:22:
The build is set up to default to all the mingw-....-program executables,
which is annoying.

I got it to compile a few modules with:

make CC=gcc AR=ar RANLIB=ranlib CFLAGS="-I $HOME/tcl-work/tcl8.6.10/unix" prefix=$HOME/tcl-work/localC

but it soon failed. It started compiling stuff from the win/ directory, even 
though I configured and built from the unix/ directory.

I did not get very far.

I already have /usr/bin listed before the mingw directory.

fvogel added on 2020-01-26 11:53:32:
Since I saw there were evolutions in some build files I have tried once more to build under Cygwin, but the issue is still present. I can't build under cygwin anymore, and therefore can't investigate this ticket. I can show the build log if anyone is interested.

fvogel added on 2019-12-23 12:39:36:

I'm building with the same script as on Linux:

cd ~/Documents/tcltk/fossil/tcl/unix
make clean
./configure --prefix=/home/francois/Documents/tcltk/fossil/tcltk --enable-symbols
make
make install

cd ~/Documents/tcltk/fossil/tk/unix
make clean
./configure --with-tcl=/home/francois/Documents/tcltk/fossil/tcl/unix --prefix=/home/francois/Documents/tcltk/fossil/tcltk --enable-symbols
make
make install

However, the difference with Linux is that on cygwin I need to put the /usr/bin path before the mingw paths otherwise cygwin is picking up the mingw compiler, i.e. before the above script I run:

PATH="/usr/local/bin:/usr/bin:/cygdrive/C/mingw/bin:[...and the rest of the PATH variable]"

Btw, my report concerns core-8-6-branch (didn't try another branch).


jan.nijtmans added on 2019-12-23 11:56:02:
Second guess: You configured/built Tcl from the "win" directory and Tk from the "unix" directory. (I regulary build Tcl/Tk with Cygwin, everything works for me)

fvogel added on 2019-12-23 11:36:01:
No, I'm using the 32 bits version (the following spits "i686":

$ uname -r -m
2.2.1(0.289/5/3) i686

jan.nijtmans added on 2019-12-23 11:10:23:
Are you using cygwin64?   If so, do you "configure --enable-64bit" ?

fvogel added on 2019-12-23 10:57:37:

Cygwin build apparently does no longer work for Tk. Tcl build under cygwin is OK, but with Tk I get:

[...]
make[1]: Entering directory '/home/francois/Documents/tcltk/fossil/tk/win'
make[1]: *** No rule to make target 'tk86.dll'.  Stop.
make[1]: Leaving directory '/home/francois/Documents/tcltk/fossil/tk/win'
cp: cannot stat '/home/francois/Documents/tcltk/fossil/tk/unix/../win/tk86.dll': No such file or directory
Makefile:594: recipe for target 'libtkstub8.6.a' failed
make: *** [libtkstub8.6.a] Error 1


fvogel added on 2015-11-05 21:12:12:
With Cygwin:
 - Case 1 not reproduced.
 - Case 2 reproduced.

fvogel added on 2015-11-03 21:26:41:
Cannot reproduce on Win Vista nor Win7 nor OpenSolaris 2009.6.

Hummingbird Exceed / Cygwin issue? I will try with Cygwin (can you still reproduce, five years after creating the ticket?)