[WebKit-devel] KDE Webkit status update...
Michael Howell
mhowell123 at gmail.com
Sat Oct 3 00:59:29 CEST 2009
On Friday 02 October 2009 13:40:39 Urs Wolfer wrote:
> On Friday 02 October 2009 15:45:29 Dawit A. wrote:
> > On Thursday 01 October 2009 12:14:11 Dawit A. wrote:
> > > > One comment from my side: I would like to put kdewebkit (the binding
> > > > between kdelibs <-> QtWebKit into kdelibs/webkit ASAP. I think the
> > > > current state of this part is quite good. Most bugs have been fixed
> > > > there. This way many apps/libs could use KWeb* instead of QWeb so
> > > > they could profit from the KDE- integration. Any objections / ideas?
> > >
> > > I have no objections to that. That portion has been stable for a while
> > > now and has all the KDE integration already....
> >
> > Actually, I changed my mind on this because I went and reviewed the API
> > in KWebView and KWebPage. Here are the issues I see with it right now:
>
> Great to hear that you have reviewed this code :)
+1
> > KWebView:
> > =======
> > ** Why was there a need to override the page() and setPage(...) functions
> > there ? The functions in the parent class are not meant to be
> > reimplemented by design since they are non-virtual. It is intended to be
> > used such that people call setPage(...) with their own implementation of
> > QWebPage if they so choose and then when they access it using
> > QWebPage::page. Granted they have to cast it into KWebPage, but that is
> > simple enough. I personally think that is how the API was intended to be
> > used by design.
>
> Yes, this is true. IMHO both ways are not really nice. It it would be
> virtual, we would have no issues. You suggest removing the getter and
> setter, right?
KWebView::page() was overwritten to avoid casting. It's okay to call
QWebView::page(), so being non-virtual isn't a huge problem. Overriding
KWebView::setPage() is simply to make it harder to set page() to some non-
KWebPage. It's possible, but doesn't really work...
> > ** What is the point of setCustomContextMenu function and the associated
> > showContextMenu signal ? If it is to make it easier to recieve the
> > contextMenu event for applications that use the api without having to
> > inherit from the class, then there is already a proper way to do that in
> > QWidget. Set the contextMenuPolicy property on the widget, i.e.
> > KWebView, to
> > Qt::CustomContextMenu. and install an event filter on KWebView. Then
> > handle the CustomerContextMenu coming from KWebView. There is no need
> > for additional hacks like this at all.
>
> Yes, IIRC it was created for that. (Michael, if you are reading this,
> please correct me if I am wrong.) But I think your suggestion sounds like
> a fair alternative; so go ahead and drop it.
+1. I wasn't aware of Qt::CustomContextMenu.
> > ** loadUrl(...) should be renamed to load(...) and made into a regular
> > function, not a SLOT, just like those in its parent class.
>
> Right.
>
> > KWebPage:
> > =======
> > ** To a lesser extent, KWebPage's setAllowExternalContent and
> > isExternalContentAllowed functions have the same issue as the KWebView's
> > page() and setPage(...) functions. Calling
> > KWebPage::networkAccessManager() actually returns a custom instance of
> > KIO::AccessManager, i.e.
> > NetworkAccessManager. So all one has to do to access the above functions,
> > which are wrappers for the ones that exist in KIO::AccessManager, is to
> > simply cast whatever is returned by QWebPage::networkAccessManager to
> > KIO::AcessManager. However, I can see how both these scenarios are not
> > obvious to the developer without either reading the source code or a
> > detailed class documentation. In fact I do not have any objections if
> > these two functions remain.
>
> isExternalContentAllowed is not overwritten from QWebPage. So I think this
> function makes sense (or did i get something wrong?). About the getter
> again: if we drop the one above, why not this one also? It's not really
> nice API, I agree; though it simplifies ussage a little bit.
It does make sense. It'd make even more sense if KWebView also had the
external content stuff, the same way QWebView has the QWebPage functions.
> > Documentation
> > ==========
> > All the developer facing functions and classes need to be fully and
> > properly documented fully and properly as evidenced by some of the
> > points above.
>
> Of course, yeah. But since most things are just overwritten for internal
> resonons, we just need to document "useful" things. I will read trough the
> headers soon.
>
> > Anyhow, I am going to commit my recent fixes and then clean up the API
> > afterwards if there are no valid objections...
>
> Please do so! I will check afterwards the code as well.
>
> Anyway, before we will move anything to kdelibs, it has to go into
> kdereview. I will try to do this step as soon as I find a bit of time.
>
> Bye
> urs
> _______________________________________________
> WebKit-devel mailing list
> WebKit-devel at kde.org
> https://mail.kde.org/mailman/listinfo/webkit-devel
>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: This is a digitally signed message part.
Url : http://mail.kde.org/pipermail/webkit-devel/attachments/20091002/ca12c833/attachment.sig
More information about the WebKit-devel
mailing list