I think the 'find client' should definitely be tied to WebKitWebView, but should not be settable. Ergo, only one instance of 'find client' would exist per a web view. In the current proposed API by Sergio, the 'find client' object doesn't have any user-definable properties that would require resetting the that object as the 'find client' of the web view in which the search would be performed.<div>
<br></div><div>I've been writing 'find client' because I don't really like the name. Using the word 'find' sounds to me as there's a guarantee that something would be found. This honestly is just nitpickish, but it simply sounds wrong in my ears. I'd propose using the name 'WebKitTextSearchClient'. I'd leave the 'text' part in the name just so that people would not be confused about thinking that they can perhaps perform googling or something similar.</div>
<div><br></div><div>The search client would then offer the signals as originally proposed.</div><div><br></div><div>Is there any interest of also providing a list of matches? That way something similar to what Chromium is doing could be done (showing the matches in the scrollbar). Though, other than that, I can't think of an use case. Also, _next() and _prev() would be good additions to the API in that sense.</div>
<div><br></div><div>Regards,</div><div>Zan</div><div>
<br><div class="gmail_quote">On Mon, Dec 26, 2011 at 2:17 PM, Carlos Garcia Campos <span dir="ltr"><<a href="mailto:cgarcia@igalia.com" target="_blank">cgarcia@igalia.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

El lun, 26-12-2011 a las 13:40 +0100, Sergio Villar Senin escribió:<br>
<div><div>> I'll start reviewing the current WK1 API and how it's being used and<br>
> then I'll discuss the proposal for WK2 (some of the ideas come from<br>
> talks with Carlos a couple of weeks ago).<br>
><br>
> * Current status<br>
><br>
> Both epy and devhelp use the WK1 search API the same way. Whenever<br>
> search function is enabled they both perform<br>
><br>
> webkit_web_view_unmark_text_matches();<br>
> webkit_web_view_mark_text_matches();<br>
> webkit_web_view_set_highlight_text_matches(TRUE);<br>
><br>
> In order to perform a search clients typically do:<br>
><br>
> webkit_web_view_search_text()<br>
><br>
> they are forced to store the text to be found in order to be able to<br>
> call search forward or search backward, something that IMO it's a bit<br>
> weird because by one side the API remembers the state of the search but<br>
> by the other side the client always have to provide the text to search.<br>
><br>
> Finally when find toolbars are closed<br>
> webkit_web_view_set_highlight_text_matches(FALSE) is called.<br>
><br>
> Personally I find also a bit weird to force clients to do<br>
> unmark+mark+set_hightlight always, as that should be the default action<br>
> anyone could expect when searching.<br>
><br>
> * Proposal<br>
><br>
> - Implement a WebKitWebFindClient which would be a separate object<br>
> returned by the web view. I removed the "_text" suffix from the API as<br>
> it should be pretty clear that we're searching for text. The find client<br>
> will store the text to be search removing that responsibility from the<br>
> caller. I also added the next() and prev() methods that seem to be<br>
> pretty common.<br>
><br>
> - WebKitWebFindClient webkit_web_view_get_find_client()<br>
> - void webkit_web_view_get_find_client(WebKitWebFindClient)<br>
<br>
</div></div>I guess this would be set_find_client.<br>
<br>
I would avoid using FindClient this way, we are indeed removing<br>
LoaderClient object. I like the idea of using a separate object, but I<br>
would do something similar to the downloads API.<br>
<br>
WebKitSearch *webkit_web_view_search(view, string, flags);<br>
<br>
WebKitSearch object would be your FindClient object, but it's created on<br>
demand for every search.<br>
<div><br>
> - webkit_web_find_client_search (string, flags)<br>
>  + signals<br>
>    + found-string(string, match_count)<br>
>    + find-error(string)<br>
>    + matches-count(string, match_count)<br>
<br>
</div>The string is stored in the WebKitSearch/FindClient object, so we<br>
shouldn't need to pass it on every signal, we could add API to get if<br>
needed from the callbacks.<br>
<div><div><br>
> - webkit_web_find_client_search_next()<br>
> - webkit_web_find_client_search_prev()<br>
><br>
> Opinions?<br>
<br>
</div></div><span><font color="#888888">--<br>
Carlos Garcia Campos<br>
<a href="http://pgp.rediris.es:11371/pks/lookup?op=get&search=0xF3D322D0EC4582C3" target="_blank">http://pgp.rediris.es:11371/pks/lookup?op=get&search=0xF3D322D0EC4582C3</a><br>
</font></span><br>_______________________________________________<br>
webkit-gtk mailing list<br>
<a href="mailto:webkit-gtk@lists.webkit.org" target="_blank">webkit-gtk@lists.webkit.org</a><br>
<a href="http://lists.webkit.org/mailman/listinfo.cgi/webkit-gtk" target="_blank">http://lists.webkit.org/mailman/listinfo.cgi/webkit-gtk</a><br>
<br></blockquote></div><br>
</div>