New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

broken tab keyboard focus order when editing data #1

Closed
qwesda opened this Issue Jun 12, 2015 · 11 comments

Comments

Projects
None yet
2 participants
@qwesda

qwesda commented Jun 12, 2015

when editing the data in a given row the tab key selects the next column as is expected. shift + tab moves the focus to the last column instead of selecting the previous column

@jakob

This comment has been minimized.

Show comment
Hide comment
@jakob

jakob Jun 12, 2015

Owner

Shift-tab seems to work fine for me. Does it happen in every table, or just in same tables?

What version of OS X are you on?

Owner

jakob commented Jun 12, 2015

Shift-tab seems to work fine for me. Does it happen in every table, or just in same tables?

What version of OS X are you on?

@qwesda

This comment has been minimized.

Show comment
Hide comment
@qwesda

qwesda Jun 12, 2015

hmm, it seems to work for some columns. but it definitely fails once the keyboard focus is in the last column. It also tends to work for the first 3 columns but not for later ones.
I'm on 10.10.3

qwesda commented Jun 12, 2015

hmm, it seems to work for some columns. but it definitely fails once the keyboard focus is in the last column. It also tends to work for the first 3 columns but not for later ones.
I'm on 10.10.3

@qwesda

This comment has been minimized.

Show comment
Hide comment
@qwesda

qwesda Jun 12, 2015

the error doesn't occur in tables with only 2 or 3 column, but the 4th column introduces the error

qwesda commented Jun 12, 2015

the error doesn't occur in tables with only 2 or 3 column, but the 4th column introduces the error

@jakob

This comment has been minimized.

Show comment
Hide comment
@jakob

jakob Jun 15, 2015

Owner

I can't find a way to reproduce this problem. Tabbing forward and backward works just fine for every table I try. It's also an odd problem, because the tab commands are handled by the system-provided NSTableView.

Just to make sure, you are talking about moving between cells in the table data view, right?

Could you try creating the following table and see if it also exhibits the problem? Maybe the problem is related to your specific tables (eg. data types).

create table tab_test (col1 text, col2 text, col3 text, col4 text)
Owner

jakob commented Jun 15, 2015

I can't find a way to reproduce this problem. Tabbing forward and backward works just fine for every table I try. It's also an odd problem, because the tab commands are handled by the system-provided NSTableView.

Just to make sure, you are talking about moving between cells in the table data view, right?

Could you try creating the following table and see if it also exhibits the problem? Maybe the problem is related to your specific tables (eg. data types).

create table tab_test (col1 text, col2 text, col3 text, col4 text)
@qwesda

This comment has been minimized.

Show comment
Hide comment
@qwesda

qwesda Jun 15, 2015

it can be reproduced with NULL values in columns. try the following setup:

CREATE SCHEMA tab;

CREATE TABLE tab.tab_test3 (col1 text, col2 text, col3 text);
CREATE TABLE tab.tab_test4 (col1 text, col2 text, col3 text, col4 text);
CREATE TABLE tab.tab_test5 (col1 text, col2 text, col3 text, col4 text, col5 text);

INSERT INTO tab.tab_test3 (col1, col2, col3) VALUES ('col1', 'col2', 'col3');
INSERT INTO tab.tab_test3 (col1, col2, col3) VALUES ('col1', NULL,   'col3');
INSERT INTO tab.tab_test3 (col1, col2, col3) VALUES (NULL,   'col2', 'col3');
INSERT INTO tab.tab_test3 (col1, col2, col3) VALUES (NULL,   NULL,   'col3');
INSERT INTO tab.tab_test3 (col1, col2, col3) VALUES ('col1', 'col2', NULL);
INSERT INTO tab.tab_test3 (col1, col2, col3) VALUES ('col1', NULL,   NULL);
INSERT INTO tab.tab_test3 (col1, col2, col3) VALUES (NULL,   'col2', NULL);
INSERT INTO tab.tab_test3 (col1, col2, col3) VALUES (NULL,   NULL, NULL);

INSERT INTO tab.tab_test4 (col1, col2, col3, col4) VALUES ('col1', 'col2', 'col3', 'col4');
INSERT INTO tab.tab_test4 (col1, col2, col3, col4) VALUES ('col1', NULL,   'col3', 'col4');
INSERT INTO tab.tab_test4 (col1, col2, col3, col4) VALUES (NULL,   'col2', 'col3', 'col4');
INSERT INTO tab.tab_test4 (col1, col2, col3, col4) VALUES (NULL,   NULL,   'col3', 'col4');
INSERT INTO tab.tab_test4 (col1, col2, col3, col4) VALUES ('col1', 'col2', NULL,   'col4');
INSERT INTO tab.tab_test4 (col1, col2, col3, col4) VALUES ('col1', NULL,   NULL,   'col4');
INSERT INTO tab.tab_test4 (col1, col2, col3, col4) VALUES (NULL,   'col2', NULL,   'col4');
INSERT INTO tab.tab_test4 (col1, col2, col3, col4) VALUES (NULL,   NULL,   NULL,   'col4');
INSERT INTO tab.tab_test4 (col1, col2, col3, col4) VALUES ('col1', 'col2', 'col3', NULL);
INSERT INTO tab.tab_test4 (col1, col2, col3, col4) VALUES ('col1', NULL,   'col3', NULL);
INSERT INTO tab.tab_test4 (col1, col2, col3, col4) VALUES (NULL,   'col2', 'col3', NULL);
INSERT INTO tab.tab_test4 (col1, col2, col3, col4) VALUES (NULL,   NULL,   'col3', NULL);
INSERT INTO tab.tab_test4 (col1, col2, col3, col4) VALUES ('col1', 'col2', NULL,   NULL);
INSERT INTO tab.tab_test4 (col1, col2, col3, col4) VALUES ('col1', NULL,   NULL,   NULL);
INSERT INTO tab.tab_test4 (col1, col2, col3, col4) VALUES (NULL,   'col2', NULL,   NULL);
INSERT INTO tab.tab_test4 (col1, col2, col3, col4) VALUES (NULL,   NULL,   NULL,   NULL);

INSERT INTO tab.tab_test5 (col1, col2, col3, col4, col5) VALUES ('col1', 'col2', 'col3', 'col4', 'col5');
INSERT INTO tab.tab_test5 (col1, col2, col3, col4, col5) VALUES ('col1', NULL,   'col3', 'col4', 'col5');
INSERT INTO tab.tab_test5 (col1, col2, col3, col4, col5) VALUES (NULL,   'col2', 'col3', 'col4', 'col5');
INSERT INTO tab.tab_test5 (col1, col2, col3, col4, col5) VALUES (NULL,   NULL,   'col3', 'col4', 'col5');
INSERT INTO tab.tab_test5 (col1, col2, col3, col4, col5) VALUES ('col1', 'col2', NULL,   'col4', 'col5');
INSERT INTO tab.tab_test5 (col1, col2, col3, col4, col5) VALUES ('col1', NULL,   NULL,   'col4', 'col5');
INSERT INTO tab.tab_test5 (col1, col2, col3, col4, col5) VALUES (NULL,   'col2', NULL,   'col4', 'col5');
INSERT INTO tab.tab_test5 (col1, col2, col3, col4, col5) VALUES (NULL,   NULL,   NULL,   'col4', 'col5');
INSERT INTO tab.tab_test5 (col1, col2, col3, col4, col5) VALUES ('col1', 'col2', 'col3', NULL,   'col5');
INSERT INTO tab.tab_test5 (col1, col2, col3, col4, col5) VALUES ('col1', NULL,   'col3', NULL,   'col5');
INSERT INTO tab.tab_test5 (col1, col2, col3, col4, col5) VALUES (NULL,   'col2', 'col3', NULL,   'col5');
INSERT INTO tab.tab_test5 (col1, col2, col3, col4, col5) VALUES (NULL,   NULL,   'col3', NULL,   'col5');
INSERT INTO tab.tab_test5 (col1, col2, col3, col4, col5) VALUES ('col1', 'col2', NULL,   NULL,   'col5');
INSERT INTO tab.tab_test5 (col1, col2, col3, col4, col5) VALUES ('col1', NULL,   NULL,   NULL,   'col5');
INSERT INTO tab.tab_test5 (col1, col2, col3, col4, col5) VALUES (NULL,   'col2', NULL,   NULL,   'col5');
INSERT INTO tab.tab_test5 (col1, col2, col3, col4, col5) VALUES (NULL,   NULL,   NULL,   NULL,   'col5');
INSERT INTO tab.tab_test5 (col1, col2, col3, col4, col5) VALUES ('col1', 'col2', 'col3', 'col4', NULL);
INSERT INTO tab.tab_test5 (col1, col2, col3, col4, col5) VALUES ('col1', NULL,   'col3', 'col4', NULL);
INSERT INTO tab.tab_test5 (col1, col2, col3, col4, col5) VALUES (NULL,   'col2', 'col3', 'col4', NULL);
INSERT INTO tab.tab_test5 (col1, col2, col3, col4, col5) VALUES (NULL,   NULL,   'col3', 'col4', NULL);
INSERT INTO tab.tab_test5 (col1, col2, col3, col4, col5) VALUES ('col1', 'col2', NULL,   'col4', NULL);
INSERT INTO tab.tab_test5 (col1, col2, col3, col4, col5) VALUES ('col1', NULL,   NULL,   'col4', NULL);
INSERT INTO tab.tab_test5 (col1, col2, col3, col4, col5) VALUES (NULL,   'col2', NULL,   'col4', NULL);
INSERT INTO tab.tab_test5 (col1, col2, col3, col4, col5) VALUES (NULL,   NULL,   NULL,   'col4', NULL);
INSERT INTO tab.tab_test5 (col1, col2, col3, col4, col5) VALUES ('col1', 'col2', 'col3', NULL,   NULL);
INSERT INTO tab.tab_test5 (col1, col2, col3, col4, col5) VALUES ('col1', NULL,   'col3', NULL,   NULL);
INSERT INTO tab.tab_test5 (col1, col2, col3, col4, col5) VALUES (NULL,   'col2', 'col3', NULL,   NULL);
INSERT INTO tab.tab_test5 (col1, col2, col3, col4, col5) VALUES (NULL,   NULL,   'col3', NULL,   NULL);
INSERT INTO tab.tab_test5 (col1, col2, col3, col4, col5) VALUES ('col1', 'col2', NULL,   NULL,   NULL);
INSERT INTO tab.tab_test5 (col1, col2, col3, col4, col5) VALUES ('col1', NULL,   NULL,   NULL,   NULL);
INSERT INTO tab.tab_test5 (col1, col2, col3, col4, col5) VALUES (NULL,   'col2', NULL,   NULL,   NULL);
INSERT INTO tab.tab_test5 (col1, col2, col3, col4, col5) VALUES (NULL,   NULL,   NULL,   NULL,   NULL);

qwesda commented Jun 15, 2015

it can be reproduced with NULL values in columns. try the following setup:

CREATE SCHEMA tab;

CREATE TABLE tab.tab_test3 (col1 text, col2 text, col3 text);
CREATE TABLE tab.tab_test4 (col1 text, col2 text, col3 text, col4 text);
CREATE TABLE tab.tab_test5 (col1 text, col2 text, col3 text, col4 text, col5 text);

INSERT INTO tab.tab_test3 (col1, col2, col3) VALUES ('col1', 'col2', 'col3');
INSERT INTO tab.tab_test3 (col1, col2, col3) VALUES ('col1', NULL,   'col3');
INSERT INTO tab.tab_test3 (col1, col2, col3) VALUES (NULL,   'col2', 'col3');
INSERT INTO tab.tab_test3 (col1, col2, col3) VALUES (NULL,   NULL,   'col3');
INSERT INTO tab.tab_test3 (col1, col2, col3) VALUES ('col1', 'col2', NULL);
INSERT INTO tab.tab_test3 (col1, col2, col3) VALUES ('col1', NULL,   NULL);
INSERT INTO tab.tab_test3 (col1, col2, col3) VALUES (NULL,   'col2', NULL);
INSERT INTO tab.tab_test3 (col1, col2, col3) VALUES (NULL,   NULL, NULL);

INSERT INTO tab.tab_test4 (col1, col2, col3, col4) VALUES ('col1', 'col2', 'col3', 'col4');
INSERT INTO tab.tab_test4 (col1, col2, col3, col4) VALUES ('col1', NULL,   'col3', 'col4');
INSERT INTO tab.tab_test4 (col1, col2, col3, col4) VALUES (NULL,   'col2', 'col3', 'col4');
INSERT INTO tab.tab_test4 (col1, col2, col3, col4) VALUES (NULL,   NULL,   'col3', 'col4');
INSERT INTO tab.tab_test4 (col1, col2, col3, col4) VALUES ('col1', 'col2', NULL,   'col4');
INSERT INTO tab.tab_test4 (col1, col2, col3, col4) VALUES ('col1', NULL,   NULL,   'col4');
INSERT INTO tab.tab_test4 (col1, col2, col3, col4) VALUES (NULL,   'col2', NULL,   'col4');
INSERT INTO tab.tab_test4 (col1, col2, col3, col4) VALUES (NULL,   NULL,   NULL,   'col4');
INSERT INTO tab.tab_test4 (col1, col2, col3, col4) VALUES ('col1', 'col2', 'col3', NULL);
INSERT INTO tab.tab_test4 (col1, col2, col3, col4) VALUES ('col1', NULL,   'col3', NULL);
INSERT INTO tab.tab_test4 (col1, col2, col3, col4) VALUES (NULL,   'col2', 'col3', NULL);
INSERT INTO tab.tab_test4 (col1, col2, col3, col4) VALUES (NULL,   NULL,   'col3', NULL);
INSERT INTO tab.tab_test4 (col1, col2, col3, col4) VALUES ('col1', 'col2', NULL,   NULL);
INSERT INTO tab.tab_test4 (col1, col2, col3, col4) VALUES ('col1', NULL,   NULL,   NULL);
INSERT INTO tab.tab_test4 (col1, col2, col3, col4) VALUES (NULL,   'col2', NULL,   NULL);
INSERT INTO tab.tab_test4 (col1, col2, col3, col4) VALUES (NULL,   NULL,   NULL,   NULL);

INSERT INTO tab.tab_test5 (col1, col2, col3, col4, col5) VALUES ('col1', 'col2', 'col3', 'col4', 'col5');
INSERT INTO tab.tab_test5 (col1, col2, col3, col4, col5) VALUES ('col1', NULL,   'col3', 'col4', 'col5');
INSERT INTO tab.tab_test5 (col1, col2, col3, col4, col5) VALUES (NULL,   'col2', 'col3', 'col4', 'col5');
INSERT INTO tab.tab_test5 (col1, col2, col3, col4, col5) VALUES (NULL,   NULL,   'col3', 'col4', 'col5');
INSERT INTO tab.tab_test5 (col1, col2, col3, col4, col5) VALUES ('col1', 'col2', NULL,   'col4', 'col5');
INSERT INTO tab.tab_test5 (col1, col2, col3, col4, col5) VALUES ('col1', NULL,   NULL,   'col4', 'col5');
INSERT INTO tab.tab_test5 (col1, col2, col3, col4, col5) VALUES (NULL,   'col2', NULL,   'col4', 'col5');
INSERT INTO tab.tab_test5 (col1, col2, col3, col4, col5) VALUES (NULL,   NULL,   NULL,   'col4', 'col5');
INSERT INTO tab.tab_test5 (col1, col2, col3, col4, col5) VALUES ('col1', 'col2', 'col3', NULL,   'col5');
INSERT INTO tab.tab_test5 (col1, col2, col3, col4, col5) VALUES ('col1', NULL,   'col3', NULL,   'col5');
INSERT INTO tab.tab_test5 (col1, col2, col3, col4, col5) VALUES (NULL,   'col2', 'col3', NULL,   'col5');
INSERT INTO tab.tab_test5 (col1, col2, col3, col4, col5) VALUES (NULL,   NULL,   'col3', NULL,   'col5');
INSERT INTO tab.tab_test5 (col1, col2, col3, col4, col5) VALUES ('col1', 'col2', NULL,   NULL,   'col5');
INSERT INTO tab.tab_test5 (col1, col2, col3, col4, col5) VALUES ('col1', NULL,   NULL,   NULL,   'col5');
INSERT INTO tab.tab_test5 (col1, col2, col3, col4, col5) VALUES (NULL,   'col2', NULL,   NULL,   'col5');
INSERT INTO tab.tab_test5 (col1, col2, col3, col4, col5) VALUES (NULL,   NULL,   NULL,   NULL,   'col5');
INSERT INTO tab.tab_test5 (col1, col2, col3, col4, col5) VALUES ('col1', 'col2', 'col3', 'col4', NULL);
INSERT INTO tab.tab_test5 (col1, col2, col3, col4, col5) VALUES ('col1', NULL,   'col3', 'col4', NULL);
INSERT INTO tab.tab_test5 (col1, col2, col3, col4, col5) VALUES (NULL,   'col2', 'col3', 'col4', NULL);
INSERT INTO tab.tab_test5 (col1, col2, col3, col4, col5) VALUES (NULL,   NULL,   'col3', 'col4', NULL);
INSERT INTO tab.tab_test5 (col1, col2, col3, col4, col5) VALUES ('col1', 'col2', NULL,   'col4', NULL);
INSERT INTO tab.tab_test5 (col1, col2, col3, col4, col5) VALUES ('col1', NULL,   NULL,   'col4', NULL);
INSERT INTO tab.tab_test5 (col1, col2, col3, col4, col5) VALUES (NULL,   'col2', NULL,   'col4', NULL);
INSERT INTO tab.tab_test5 (col1, col2, col3, col4, col5) VALUES (NULL,   NULL,   NULL,   'col4', NULL);
INSERT INTO tab.tab_test5 (col1, col2, col3, col4, col5) VALUES ('col1', 'col2', 'col3', NULL,   NULL);
INSERT INTO tab.tab_test5 (col1, col2, col3, col4, col5) VALUES ('col1', NULL,   'col3', NULL,   NULL);
INSERT INTO tab.tab_test5 (col1, col2, col3, col4, col5) VALUES (NULL,   'col2', 'col3', NULL,   NULL);
INSERT INTO tab.tab_test5 (col1, col2, col3, col4, col5) VALUES (NULL,   NULL,   'col3', NULL,   NULL);
INSERT INTO tab.tab_test5 (col1, col2, col3, col4, col5) VALUES ('col1', 'col2', NULL,   NULL,   NULL);
INSERT INTO tab.tab_test5 (col1, col2, col3, col4, col5) VALUES ('col1', NULL,   NULL,   NULL,   NULL);
INSERT INTO tab.tab_test5 (col1, col2, col3, col4, col5) VALUES (NULL,   'col2', NULL,   NULL,   NULL);
INSERT INTO tab.tab_test5 (col1, col2, col3, col4, col5) VALUES (NULL,   NULL,   NULL,   NULL,   NULL);
@jakob

This comment has been minimized.

Show comment
Hide comment
@jakob

jakob Jun 15, 2015

Owner

I tried this, but it still seems to work perfectly for me.

Could you provide exact step-by-step instructions or a screen video recording of the bug? (You can record the screen with quicktime player.)

Owner

jakob commented Jun 15, 2015

I tried this, but it still seems to work perfectly for me.

Could you provide exact step-by-step instructions or a screen video recording of the bug? (You can record the screen with quicktime player.)

@jakob jakob added the bug label Jun 15, 2015

@qwesda

This comment has been minimized.

Show comment
Hide comment
@qwesda

qwesda Jun 15, 2015

I sent you the screen recording per mail. Github doesn't seem like arbitrary file attachments on issues

qwesda commented Jun 15, 2015

I sent you the screen recording per mail. Github doesn't seem like arbitrary file attachments on issues

@jakob

This comment has been minimized.

Show comment
Hide comment
@jakob

jakob Jun 15, 2015

Owner

Thanks for the screen recording. It looks like Shift-Tab doesn't work when you are in an empty text field. It works perfectly on my Mac (OS X 10.10.3).

Do you have any 3rd party tools installed that could interfere with tab? Any custom keyboard shortcuts or hot keys including tab?

Owner

jakob commented Jun 15, 2015

Thanks for the screen recording. It looks like Shift-Tab doesn't work when you are in an empty text field. It works perfectly on my Mac (OS X 10.10.3).

Do you have any 3rd party tools installed that could interfere with tab? Any custom keyboard shortcuts or hot keys including tab?

@qwesda

This comment has been minimized.

Show comment
Hide comment
@qwesda

qwesda Jun 15, 2015

ok ... I created a new user on my system, set up a fresh postgres install, etc. ... and the bug did not occur. After a while of trial and error I found the setting that introduces the bug: preferences.app > keyboard > full keyboard access: "all controls".

Try turning it on on your system.

qwesda commented Jun 15, 2015

ok ... I created a new user on my system, set up a fresh postgres install, etc. ... and the bug did not occur. After a while of trial and error I found the setting that introduces the bug: preferences.app > keyboard > full keyboard access: "all controls".

Try turning it on on your system.

@jakob

This comment has been minimized.

Show comment
Hide comment
@jakob

jakob Jun 16, 2015

Owner

Thanks, I can reproduce it now. I have to look into this.

Owner

jakob commented Jun 16, 2015

Thanks, I can reproduce it now. I have to look into this.

@jakob

This comment has been minimized.

Show comment
Hide comment
@jakob

jakob Jun 17, 2015

Owner

I managed to track down the issue and fix the underlying problem. Thanks again for your detailed error reports and patience in tracking this issue down!

The problem will be fixed in the next version.

Owner

jakob commented Jun 17, 2015

I managed to track down the issue and fix the underlying problem. Thanks again for your detailed error reports and patience in tracking this issue down!

The problem will be fixed in the next version.

@jakob jakob closed this Jun 17, 2015

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment