[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: playground/libs/webkitkde
From: Urs Wolfer <uwolfer () kde ! org>
Date: 2009-05-11 21:22:47
Message-ID: 1242076967.622038.21272.nullmailer () svn ! kde ! org
[Download RAW message or body]
SVN commit 966797 by uwolfer:
Performace optimization:
Create the page when it is needed, not in the ctor.
Patch by Paweł Prażak, thanks.
CCMAIL:kojot350@gmail.com
M +20 -8 kdewebkit/kwebview.cpp
M +24 -2 kdewebkit/kwebview.h
M +5 -1 part/webview.cpp
M +1 -0 part/webview.h
--- trunk/playground/libs/webkitkde/kdewebkit/kwebview.cpp #966796:966797
@@ -46,19 +46,20 @@
, keyboardModifiers(Qt::NoModifier)
, pressedButtons(Qt::NoButton)
, searchBar(0)
+ , page(0)
{}
+
bool customContextMenu;
Qt::KeyboardModifiers keyboardModifiers;
Qt::MouseButtons pressedButtons;
KDEPrivate::SearchBar *searchBar;
+ KWebPage *page;
};
KWebView::KWebView(QWidget *parent)
: QWebView(parent), d(new KWebView::KWebViewPrivate())
-{
- setPage(new KWebPage(this));
-}
+{}
KWebView::~KWebView()
{
@@ -79,15 +80,26 @@
d->customContextMenu = show;
}
-KWebPage *KWebView::page()
+KWebPage *KWebView::page() const
{
- KWebPage *webPage = qobject_cast<KWebPage*>(QWebView::page());
- if (!webPage) {
- return 0;
+ if (!d->page) {
+ KWebView *that = const_cast<KWebView *>(this);
+ that->setNewPage();
}
- return webPage;
+ return d->page;
}
+void KWebView::setNewPage()
+{
+ setPage(new KWebPage(this));
+}
+
+void KWebView::setPage(KWebPage *page)
+{
+ d->page = page;
+ QWebView::setPage(page);
+}
+
void KWebView::wheelEvent(QWheelEvent *event)
{
if (QApplication::keyboardModifiers() & Qt::ControlModifier) {
--- trunk/playground/libs/webkitkde/kdewebkit/kwebview.h #966796:966797
@@ -44,9 +44,19 @@
{
Q_OBJECT
public:
- KWebView(QWidget *parent = 0);
+ explicit KWebView(QWidget *parent = 0);
~KWebView();
- KWebPage *page();
+ /**
+ * This method returns the current KWebPage, if there is none, one will be \
created. + * It calles virtual method setNewPage() to create new (K)WebPage, so
+ * of you reimplements KWebPage ypu should reimplement this setNewPage()
+ * @see setPage()
+ * @see setNewPage()
+ * @short Getter for KWebPage
+ * @return current KWebPage
+ */
+ KWebPage *page() const;
+ void setPage(KWebPage *page);
QWidget *searchBar();
public Q_SLOTS:
@@ -63,6 +73,18 @@
void openUrlInNewTab(const KUrl &url);
protected:
+ /**
+ * Creates new (K)WebPage. This virtual method is called by page() to create new \
(K)WebPage if necessary. + * Reimplement this method if you reimplement KWebPage, \
e.g: + * @code
+ * void MyWebView::setNewPage()
+ * {
+ * setPage(new MyWebPage(this));
+ * }
+ * @endcode
+ * @see page()
+ */
+ virtual void setNewPage();
void contextMenuEvent(QContextMenuEvent *event);
void wheelEvent(QWheelEvent *event);
void mousePressEvent(QMouseEvent *event);
--- trunk/playground/libs/webkitkde/part/webview.cpp #966796:966797
@@ -71,7 +71,6 @@
: KWebView(parent), d(new WebViewPrivate(this))
{
d->part = wpart;
- setPage(new WebPage(wpart, this));
d->actionCollection = new KActionCollection(this);
setAcceptDrops(true);
}
@@ -86,6 +85,11 @@
return d->result;
}
+void WebView::setNewPage()
+{
+ setPage(new WebPage(d->part, this));
+}
+
void WebView::contextMenuEvent(QContextMenuEvent *e)
{
d->result = page()->mainFrame()->hitTestContent(e->pos());
--- trunk/playground/libs/webkitkde/part/webview.h #966796:966797
@@ -43,6 +43,7 @@
QWebHitTestResult contextMenuResult() const;
protected:
+ void setNewPage();
void contextMenuEvent(QContextMenuEvent *e);
void selectActionPopupMenu(KParts::BrowserExtension::ActionGroupMap \
&selectGroupMap);
void linkActionPopupMenu(KParts::BrowserExtension::ActionGroupMap \
&linkGroupMap);
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic