[webkit-dev] problem with css :focus
Alex Vazquez
alexvazquezfente at gmail.com
Fri Jun 11 06:40:03 PDT 2010
2010/6/9 Antonio Gomes (:tonikitoo) <tonikitoo at gmail.com>
> Note you need to call both setActive and setFocused of FocusController
> for it to work for you.
>
> In gtk:
>
> static void webkit_web_view_grab_focus(GtkWidget* widget)
> {
> ...
> FocusController* focusController = core(webView)->focusController();
> focusController->setActive(true);
> if (focusController->focusedFrame())
> focusController->setFocused(true);
> else
> focusController->setFocusedFrame(core(webView)->mainFrame());
> }
>
>
I had to call to focusController->setFocused(true); in both cases for it to
work. Otherwise, the focus was not being painted.
Then, i had to add DirectFB window listeners (for
DWET_GOTFOCUS/DWET_LOSTFOCUS) calling
webkit_view_grab_focus/focusController->setFocused(false); to react to
window focus changes and all is working fine now.
Regards,
> On Wed, Jun 9, 2010 at 8:24 AM, Alex Vazquez <alexvazquezfente at gmail.com>
> wrote:
> > Right, the problem is the frame not being focused. That's why changing
> the
> > condition to just e->document()->frame()->selection()->isFocused didn't
> work
> > either.
> >
> > In the webkit/GTK port, it is focused, so we are trying to find the
> > difference regarding to that in both ports. Maybe some GTK platform check
> > ...
> >
> > Any further idea is greatly appreciated and i'll post back for reference
> if
> > we find the fix.
> >
> > Thanks and kind regards,
> >
> > 2010/6/8 David Hyatt <hyatt at apple.com>
> >>
> >> isFocusedAndActive is asking if your frame is the focused frame and if
> the
> >> window that contains your frame is also active. I would guess that you
> are
> >> not setting the state of your frames/windows correctly. If your window
> is
> >> considered inactive or if your frame is not considered focused, then
> :focus
> >> is not going to be honored.
> >> dave
> >> (hyatt at apple.com)
> >> On Jun 8, 2010, at 3:33 AM, Alex Vazquez wrote:
> >>
> >> Hello list,
> >>
> >> We're running a customized build of WebKit (actually a DirectFB port)
> and
> >> we are experiencing problems with the css :focus pseudo-class. We use
> webkit
> >> as GUI renderer and, when changing the focused element through
> JavaScript
> >> (using the focus function), the style associated to the :focus
> pseudo-class
> >> is not applied. The attached page is our reduced testcase, it should
> show
> >> two links, the first of them focused but it shows two unfocused links:
> >>
> >> <html>
> >>
> >> <head>
> >>
> >> <style type="text/css">
> >>
> >> body {
> >> color: #f00;
> >> background-color:#ddd;
> >> font-size:26px;
> >> }
> >>
> >> div {
> >> float: left;
> >> padding: 50px;
> >> }
> >>
> >> a, span {
> >> float:left;
> >> display:block;
> >> clear:both;
> >> }
> >>
> >> a:focus {
> >> color:#f0f;
> >> }
> >>
> >> </style>
> >>
> >> <script type="text/javascript">
> >>
> >> function init() {
> >> document.getElementById("uno").focus();
> >> }
> >>
> >> </script>
> >>
> >> </head>
> >>
> >> <body onload="init();">
> >> <div>
> >>
> >> <a id="uno" href="http://www.webkit.org/">WebKit</a>
> >> <a id="dos" href="http://nightly.webkit.org">Nightly
> >> Builds</a>
> >>
> >> </div>
> >> </body>
> >>
> >> </html>
> >>
> >>
> >> The version with this problem is based on r58260 revision while a
> >> previously one (with nearly the same adapted patches) based in r40084
> worked
> >> fine. We build webkit for an embedded MIPS processor and for x86 too.
> Both
> >> versions show the undesired behaviour.
> >>
> >> Investigating through the WebKit code, we've found that applying the
> >> following patch fixes the problem:
> >>
> >> --- a/WebCore/css/CSSStyleSelector.cpp 2010-06-04 13:35:19.000000000
> >> +0000
> >> +++ b/WebCore/css/CSSStyleSelector.cpp 2010-06-04 13:35:35.000000000
> >> +0000
> >> @@ -2428,7 +2428,7 @@
> >> break;
> >> }
> >> case CSSSelector::PseudoFocus:
> >> - if (e && e->focused() &&
> >> e->document()->frame()->selection()->isFocusedAndActive())
> >> + if (e && e->focused())
> >> return true;
> >> break;
> >> case CSSSelector::PseudoHover: {
> >>
> >> That line was there since r40084 and it worked so we have some questions
> >> about the patch:
> >>
> >> * Does it have any problem that we have overlooked?
> >>
> >> * Can someone with knowledge on the css component explain why the active
> >> state of the selection is checked in that line? We also try to change
> that
> >> check by e->document()->frame()->selection()->isFocused() but it didn't
> fix
> >> it.
> >>
> >> Kind regards,
> >>
> >> --
> >> Alejandro Vazquez Fente
> >>
> >>
> <focus_index.html><css_style_selector_focus.patch>_______________________________________________
> >> webkit-dev mailing list
> >> webkit-dev at lists.webkit.org
> >> http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev
> >>
> >
> >
> >
> > --
> > Alejandro Vazquez Fente
> >
> > _______________________________________________
> > webkit-dev mailing list
> > webkit-dev at lists.webkit.org
> > http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev
> >
> >
>
>
>
> --
> --Antonio Gomes
>
--
Alejandro Vazquez Fente
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.webkit.org/pipermail/webkit-dev/attachments/20100611/1eb13d06/attachment.html>
More information about the webkit-dev
mailing list