Bug 77884

Summary: [Qt][WK2] Can't use TAB key to navigate on webpage links
Product: WebKit Reporter: Hugo Parente Lima <hugo.lima>
Component: WebKit QtAssignee: Nobody <webkit-unassigned>
Status: RESOLVED INVALID    
Severity: Normal CC: cmarcelo
Priority: P2    
Version: 528+ (Nightly build)   
Hardware: Unspecified   
OS: Unspecified   
Bug Depends on:    
Bug Blocks: 95329    
Attachments:
Description Flags
Patch
none
Patch
none
Patch hausmann: review-

Description Hugo Parente Lima 2012-02-06 11:03:49 PST
How to reproduce:

Open MiniBrowser on desktop mode and try to change the focus pressing the Tab key, it must behave like QtTestBrowser.
Comment 1 Hugo Parente Lima 2012-02-06 11:10:12 PST
Created attachment 125670 [details]
Patch
Comment 2 Caio Marcelo de Oliveira Filho 2012-02-06 13:09:46 PST
Hugo, did you checked the LayoutTests after this?

I think this might cause some LayoutTests to fail. The support for override preference that enabled/disable this is not done yet for WK2. So if the test use layoutTestController to change this preference, it won't work. Could you check that. Grepping for "WebKitTabToLinksPreferenceKey" might give you a hint.
Comment 3 Hugo Parente Lima 2012-02-06 13:41:36 PST
Good to know, I'll take a look.
Comment 4 Hugo Parente Lima 2012-02-06 13:43:02 PST
I just removed the "review?" flag until I check the issue with the layout tests.
Comment 5 Hugo Parente Lima 2012-02-08 11:50:07 PST
Created attachment 126128 [details]
Patch
Comment 6 Hugo Parente Lima 2012-02-08 13:20:46 PST
Created attachment 126141 [details]
Patch
Comment 7 Simon Hausmann 2012-02-09 00:27:49 PST
Comment on attachment 126141 [details]
Patch

Making the tab preference available to us in WK2 makes sense to me, but turning this into a WebCore::Setting sounds like something that should be dealt with in a separate change.

I'm not sure the move to WC::Settings is actually worth it, but if it's done then I suppose it should replace the existing ChromeClient's keyboardUIMode(). Having both, a WC::Setting _and_ the virtual keyboardUIMode() would be wrong IMHO.
Comment 8 Hugo Parente Lima 2012-02-09 10:02:00 PST
(In reply to comment #7)
> (From update of attachment 126141 [details])
> Making the tab preference available to us in WK2 makes sense to me, but turning this into a WebCore::Setting sounds like something that should be dealt with in a separate change.
> 
> I'm not sure the move to WC::Settings is actually worth it, but if it's done then I suppose it should replace the existing ChromeClient's keyboardUIMode(). Having both, a WC::Setting _and_ the virtual keyboardUIMode() would be wrong IMHO.

I don't know if it can fully replace the virtual keyboardUIMode() because this virtual returns a enum with 3 possible values, replacing it by the value stored on WC::Settings would mean remove the KeyboardAccessFull option from keyboardUIMode().

The tab preference is stored per webkit port on ChromeClient implementations, as WK2 have their own and unique ChromeClient implementation, ugly hacks like the ones used on other ports to check if the tab preference is on or off isn't possible, e.g. some ports just put a #ifdef and get the tab preference value directly from a DRT support class.

KeyboardAccessFull seems to be used only on Mac ports, unfortunately my Objective-C skill didn't help me too much to understand why it exists.
Comment 9 Hugo Parente Lima 2012-02-09 13:30:54 PST
What do you think about WC::Settings storing the int value with the mask used by  keyboard UI mode? This for sure should exclude the need of keyboardUIMode() virtual.
Comment 10 Jocelyn Turcotte 2014-02-03 03:20:01 PST
=== Bulk closing of Qt bugs ===

If you believe that this bug report is still relevant for a non-Qt port of webkit.org, please re-open it and remove [Qt] from the summary.

If you believe that this is still an important QtWebKit bug, please fill a new report at https://bugreports.qt-project.org and add a link to this issue. See http://qt-project.org/wiki/ReportingBugsInQt for additional guidelines.