Tk Library Source Code

View Ticket
Login
Ticket UUID: 539776b62c7de320a215f0c574c0c0647f2407ed
Title: Application hangs when navigating table cells via arrow keys
Type: Bug Version: 6.0
Submitter: anonymous Created on: 2018-01-14 02:23:37
Subsystem: tklib :: tablelist Assigned To: nemethi
Priority: 5 Medium Severity: Severe
Status: Closed Last Modified: 2018-10-12 16:45:35
Resolution: Fixed Closed By: nemethi
    Closed on: 2018-10-12 16:45:35
Description:
Observed on MacOS 10.11.6

Steps to reproduce:

Alter the tablelist widget in the tileWidgets.tcl file included in the demo directory by adding the option -selecttype cell.

Navigate through the table using arrow keys.

When the focus lands on a cell in the first column (which is non-editable) the application hangs. Clicking on a cell in the first column does not cause any problems and tab navigation skips over the first column, so the behavior is only observed when navigating with arrow keys.

Interestingly, the same steps repeated on the embeddedWindows.tcl file or the style.tcl file do not result in this behavior.
User Comments: nemethi added on 2018-10-11 17:33:31:
Sorry, "repeated" -> "reported".

nemethi added on 2018-10-11 15:42:25:
Unfortunately, up to now I haven't been aware of this ticket.

The repeated behavior happens only with Tablelist_tile, if the current theme is "aqua" and the first column is right-aligned.  Under these circumstances the procedure tablelist::seeCell, implemented in the file tablelistWidget.tcl, triggers an endless while loop.  To eliminate it, we have to take into account some internal details related to the way the header labels for the "aqua" theme are placed in their parent frame.

Here is the bug-fix: Locate the line starting with "set rX":

        set rX [expr {$lX + [winfo width $data(hdrTxtFrmLbl)$col] - 1}]

Just below this line insert the following code:

        if {[string compare [getCurrentTheme] "aqua"] == 0} {
            incr lX
            if {$col == 0} {
                incr lX
            }
        }

This patch will be contained in the next Tablelist release 6.4.