diff options
-rw-r--r-- | src/CMakeLists.txt | 1 | ||||
-rw-r--r-- | src/mainview.cpp | 68 | ||||
-rw-r--r-- | src/mainwindow.cpp | 5 | ||||
-rw-r--r-- | src/protocolhandler.cpp | 1 | ||||
-rw-r--r-- | src/urlbar/iconbutton.cpp | 76 | ||||
-rw-r--r-- | src/urlbar/iconbutton.h | 51 | ||||
-rw-r--r-- | src/urlbar/lineedit.cpp | 71 | ||||
-rw-r--r-- | src/urlbar/lineedit.h | 19 | ||||
-rw-r--r-- | src/urlbar/urlbar.cpp | 208 | ||||
-rw-r--r-- | src/urlbar/urlbar.h | 20 | ||||
-rw-r--r-- | src/webpage.cpp | 35 | ||||
-rw-r--r-- | src/webpage.h | 6 | ||||
-rw-r--r-- | src/webview.cpp | 10 | ||||
-rw-r--r-- | src/webview.h | 3 |
14 files changed, 361 insertions, 213 deletions
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index a68faa59..8728bff8 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -49,6 +49,7 @@ SET( rekonq_KDEINIT_SRCS #---------------------------------------- urlbar/urlbar.cpp urlbar/lineedit.cpp + urlbar/iconbutton.cpp urlbar/completionwidget.cpp urlbar/urlresolver.cpp urlbar/listitem.cpp diff --git a/src/mainview.cpp b/src/mainview.cpp index a00325fb..b5829806 100644 --- a/src/mainview.cpp +++ b/src/mainview.cpp @@ -366,7 +366,7 @@ void MainView::newTab() w->load( KUrl("about:home") ); break; case 1: // blank page - urlBar()->setUrl(KUrl("")); + urlBar()->clear(); break; case 2: // homepage w->load( KUrl(ReKonfig::homePage()) ); @@ -452,16 +452,18 @@ void MainView::cloneTab(int index) // When index is -1 index chooses the current tab void MainView::closeTab(int index) { + urlBar()->clear(); + // open default homePage if just one tab is opened if (count() == 1) { WebView *w = currentWebTab()->view(); - urlBar()->setUrl(KUrl("")); switch(ReKonfig::newTabsBehaviour()) { case 0: // new tab page case 1: // blank page w->load( KUrl("about:home") ); + urlBar()->setFocus(); break; case 2: // homepage w->load( KUrl(ReKonfig::homePage()) ); @@ -469,7 +471,6 @@ void MainView::closeTab(int index) default: break; } - urlBar()->setFocus(); return; } @@ -478,43 +479,36 @@ void MainView::closeTab(int index) if (index < 0 || index >= count()) return; - bool hasFocus = false; WebTab *tab = webTab(index); - if (tab) - { - if (tab->view()->isModified()) - { - int risp = KMessageBox::warningContinueCancel(this, - i18n("This tab contains changes that have not been submitted.\n" - "Closing the tab will discard these changes.\n" - "Do you really want to close this tab?\n"), - i18n("Closing Modified Tab"), KGuiItem(i18n("Close &Tab"),"tab-close"), KStandardGuiItem::cancel()); - if (risp != KMessageBox::Continue) - return; - } - hasFocus = tab->hasFocus(); - - // store close tab except homepage - if (!tab->url().prettyUrl().startsWith( QLatin1String("about:") ) && !tab->url().isEmpty()) - { - QString title = tab->view()->title(); - QString url = tab->url().prettyUrl(); - HistoryItem item(url, QDateTime::currentDateTime(), title); - m_recentlyClosedTabs.removeAll(item); - m_recentlyClosedTabs.prepend(item); - } + if (!tab) + return; - removeTab(index); - updateTabBar(); // UI operation: do it ASAP!! - tab->deleteLater(); // tab is scheduled for deletion. - - emit tabsChanged(); + if (tab->view()->isModified()) + { + int risp = KMessageBox::warningContinueCancel(this, + i18n("This tab contains changes that have not been submitted.\n" + "Closing the tab will discard these changes.\n" + "Do you really want to close this tab?\n"), + i18n("Closing Modified Tab"), KGuiItem(i18n("Close &Tab"),"tab-close"), KStandardGuiItem::cancel()); + if (risp != KMessageBox::Continue) + return; + } - if (hasFocus && count() > 0) - { - currentWebTab()->setFocus(); - } + // store close tab except homepage + if (!tab->url().prettyUrl().startsWith( QLatin1String("about:") ) && !tab->url().isEmpty()) + { + QString title = tab->view()->title(); + QString url = tab->url().prettyUrl(); + HistoryItem item(url, QDateTime::currentDateTime(), title); + m_recentlyClosedTabs.removeAll(item); + m_recentlyClosedTabs.prepend(item); } + + removeTab(index); + updateTabBar(); // UI operation: do it ASAP!! + tab->deleteLater(); // tab is scheduled for deletion. + + emit tabsChanged(); } @@ -582,8 +576,6 @@ void MainView::webViewIconChanged() delete movie; label->setMovie(0); label->setPixmap(icon.pixmap(16, 16)); - - urlBar()->updateUrl(); } } diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index c49df102..a3c07cec 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -545,11 +545,6 @@ void MainWindow::setupPanels() void MainWindow::updateConfiguration() { - kDebug() << "======================================================================================================================"; - kDebug() << "======================================================================================================================"; - kDebug() << "======================================================================================================================"; - kDebug() << "======================================================================================================================"; - // ============== General ================== m_view->updateTabBar(); diff --git a/src/protocolhandler.cpp b/src/protocolhandler.cpp index faba894b..f6867e81 100644 --- a/src/protocolhandler.cpp +++ b/src/protocolhandler.cpp @@ -305,7 +305,6 @@ void ProtocolHandler::showResults(const KFileItemList &list) _frame->setHtml( html, _url ); Application::instance()->mainWindow()->currentTab()->setFocus(); - Application::instance()->mainWindow()->mainView()->urlBar()->setUrl(_url); Application::historyManager()->addHistoryEntry( _url.prettyUrl() ); delete _lister; diff --git a/src/urlbar/iconbutton.cpp b/src/urlbar/iconbutton.cpp new file mode 100644 index 00000000..60008993 --- /dev/null +++ b/src/urlbar/iconbutton.cpp @@ -0,0 +1,76 @@ +/* ============================================================ +* +* This file is a part of the rekonq project +* +* Copyright (C) 2010 by Andrea Diamantini <adjam7 at gmail dot com> +* +* +* This program is free software; you can redistribute it and/or +* modify it under the terms of the GNU General Public License as +* published by the Free Software Foundation; either version 2 of +* the License or (at your option) version 3 or any later version +* accepted by the membership of KDE e.V. (or its successor approved +* by the membership of KDE e.V.), which shall act as a proxy +* defined in Section 14 of version 3 of the license. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see <http://www.gnu.org/licenses/>. +* +* ============================================================ */ + + +// Self Includes +#include "iconbutton.h" +#include "iconbutton.moc" + +// Local Includes +#include "application.h" + +// KDE Includes +#include <KDebug> + + +IconButton::IconButton(QWidget *parent) + : QToolButton(parent) +{ + QPalette p = palette(); + p.setColor( QPalette::Button, Qt::transparent ); + setPalette(p); + + setCursor(Qt::ArrowCursor); + setStyleSheet("IconButton { border: none; padding: 0px}"); +} + + +void IconButton::setIconUrl(const KUrl &url, bool trusted) +{ + setToolButtonStyle(Qt::ToolButtonTextBesideIcon); + setIcon( Application::icon(url) ); + setText( url.host() ); + + if(trusted) + { + setStyleSheet("IconButton { background-color:#0F0; padding: 2px }"); + } + else + { + setStyleSheet("IconButton { background-color:#F00; padding: 2px}"); + } + + adjustSize(); +} + + +void IconButton::updateIcon(KIcon icon) +{ + setToolButtonStyle(Qt::ToolButtonIconOnly); + setIcon( icon ); + + setStyleSheet("IconButton { background-color:transparent; border: none; padding: 0px}"); + adjustSize(); +} diff --git a/src/urlbar/iconbutton.h b/src/urlbar/iconbutton.h new file mode 100644 index 00000000..b66e212b --- /dev/null +++ b/src/urlbar/iconbutton.h @@ -0,0 +1,51 @@ +/* ============================================================ +* +* This file is a part of the rekonq project +* +* Copyright (C) 2010 by Andrea Diamantini <adjam7 at gmail dot com> +* +* +* This program is free software; you can redistribute it and/or +* modify it under the terms of the GNU General Public License as +* published by the Free Software Foundation; either version 2 of +* the License or (at your option) version 3 or any later version +* accepted by the membership of KDE e.V. (or its successor approved +* by the membership of KDE e.V.), which shall act as a proxy +* defined in Section 14 of version 3 of the license. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see <http://www.gnu.org/licenses/>. +* +* ============================================================ */ + + + +#ifndef ICON_BUTTON_H +#define ICON_BUTTON_H + + +// KDE Includes +#include <KUrl> +#include <KIcon> + +// Qt Includes +#include <QToolButton> + + +class IconButton : public QToolButton +{ + Q_OBJECT + +public: + IconButton(QWidget *parent = 0); + + void setIconUrl(const KUrl &url, bool trusted); + void updateIcon(KIcon icon); +}; + +#endif // ICON_BUTTON_H diff --git a/src/urlbar/lineedit.cpp b/src/urlbar/lineedit.cpp index ac92b858..f7af1f61 100644 --- a/src/urlbar/lineedit.cpp +++ b/src/urlbar/lineedit.cpp @@ -30,24 +30,64 @@ #include "lineedit.h" #include "lineedit.moc" +// KDE Includes +#include <klocalizedstring.h> +#include <KDebug> + // Qt Includes #include <QtGui/QContextMenuEvent> #include <QtGui/QFocusEvent> #include <QtGui/QKeyEvent> +#include <QStyleOptionFrameV2> +#include <QPainter> LineEdit::LineEdit(QWidget* parent) - : KLineEdit(parent) + : KLineEdit(parent) + , _icon( new IconButton(this) ) { + // cosmetic + setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed); setMinimumWidth(200); - setFocusPolicy(Qt::WheelFocus); - setHandleSignals(true); + setMinimumHeight(26); + updateStyles(); + + // doesn't show the clear button setClearButtonShown(false); + + // trap Key_Enter & Key_Return events, while emitting the returnPressed signal + setTrapReturnKey(true); + + // insert decoded URLs + setUrlDropsEnabled(true); + + // accept focus, via tabbing, clicking & wheeling + setFocusPolicy(Qt::WheelFocus); + + // disable completion object (we have our own :) ) + setCompletionObject(0); } LineEdit::~LineEdit() { + delete _icon; +} + + +void LineEdit::updateStyles() +{ + adjustSize(); + _icon->adjustSize(); + if(_icon->toolButtonStyle() == Qt::ToolButtonIconOnly) + _icon->move( 4, 3); + else + _icon->move( 2, 1); + + int frameWidth = style()->pixelMetric(QStyle::PM_DefaultFrameWidth); + setStyleSheet(QString("LineEdit { padding-left: %1px; } ").arg(_icon->sizeHint().width() + frameWidth + 1)); + + update(); } @@ -67,3 +107,28 @@ void LineEdit::mouseDoubleClickEvent(QMouseEvent *) { selectAll(); } + + +IconButton *LineEdit::iconButton() const +{ + return _icon; +} + + +void LineEdit::paintEvent(QPaintEvent *event) +{ + KLineEdit::paintEvent(event); + + if (text().isEmpty() && !hasFocus()) + { + QStyleOptionFrame option; + initStyleOption(&option); + QRect textRect = style()->subElementRect(QStyle::SE_LineEditContents, &option, this); + QPainter painter(this); + painter.setPen(Qt::gray); + painter.drawText( textRect, + Qt::AlignLeft | Qt::AlignVCenter, + i18n("Search Bookmarks, History, Google.. and the Kitchen Sink!") + ); + } +} diff --git a/src/urlbar/lineedit.h b/src/urlbar/lineedit.h index 67ded052..96f25918 100644 --- a/src/urlbar/lineedit.h +++ b/src/urlbar/lineedit.h @@ -30,13 +30,20 @@ #define LINEEDIT_H +// Local Includes +#include "iconbutton.h" + // KDE Includes #include <KLineEdit> +#include <KIcon> + +#include <QToolButton> // Forward Declarations class QContextMenuEvent; class QFocusEvent; class QKeyEvent; +class QStyleOptionFrameV2; class LineEdit : public KLineEdit @@ -46,10 +53,18 @@ class LineEdit : public KLineEdit public: explicit LineEdit(QWidget *parent = 0); virtual ~LineEdit(); - + + IconButton *iconButton() const; + + void updateStyles(); + protected: - virtual void keyPressEvent(QKeyEvent*); + virtual void keyPressEvent(QKeyEvent *); virtual void mouseDoubleClickEvent(QMouseEvent *); + virtual void paintEvent(QPaintEvent *); + +private: + IconButton *_icon; }; #endif // LINEEDIT_H diff --git a/src/urlbar/urlbar.cpp b/src/urlbar/urlbar.cpp index 0dc91a1e..dd14a4a3 100644 --- a/src/urlbar/urlbar.cpp +++ b/src/urlbar/urlbar.cpp @@ -50,124 +50,59 @@ #include <QTimer> #include <QVBoxLayout> +// Defines +#define QL1S(x) QLatin1String(x) + UrlBar::UrlBar(QWidget *parent) - : KComboBox(true, parent) - , m_lineEdit(new LineEdit) - , m_box(new CompletionWidget(this)) + : LineEdit(parent) + , _box(new CompletionWidget(this)) , _tab(0) , _privateMode(false) { - //cosmetic - setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed); - setMinimumWidth(180); - - // signal handlings - setTrapReturnKey(true); - setUrlDropsEnabled(true); - - // Make m_lineEdit background transparent - QPalette p = m_lineEdit->palette(); - p.setColor(QPalette::Base, Qt::transparent); - m_lineEdit->setPalette(p); - - setLineEdit(m_lineEdit); - - // clear the URL bar - m_lineEdit->clear(); // load urls on activated urlbar signal - connect(this, SIGNAL(returnPressed(const QString&)), SLOT(activated(const QString&))); - - installEventFilter(m_box); - connect(m_box, SIGNAL(chosenUrl(const QString&, Rekonq::OpenType)), SLOT(activated(const QString&, Rekonq::OpenType))); -} - - -UrlBar::~UrlBar() -{ -} + connect(this, SIGNAL(returnPressed(const QString&)), this, SLOT(activated(const QString&))); - -void UrlBar::selectAll() const -{ - m_lineEdit->selectAll(); + // suggestions + installEventFilter(_box); + connect(_box, SIGNAL(chosenUrl(const QString&, Rekonq::OpenType)), SLOT(activated(const QString&, Rekonq::OpenType))); } -KUrl UrlBar::url() const +UrlBar::~UrlBar() { - return m_currentUrl; + delete _box; } -void UrlBar::setUrl(const QUrl& url) +void UrlBar::setQUrl(const QUrl& url) { - if(url.scheme() == "about") + if(url.scheme() == QL1S("about") ) { - m_currentUrl = KUrl(); - updateUrl(); + iconButton()->updateIcon( KIcon("arrow-right") ); setFocus(); } else { - m_currentUrl = KUrl(url); - updateUrl(); + LineEdit::setUrl(url); + setCursorPosition(0); + iconButton()->updateIcon( Application::icon(url) ); } -} - - -void UrlBar::updateUrl() -{ - // Don't change my typed url... - // FIXME this is not a proper solution (also if it works...) - if(hasFocus()) - { - kDebug() << "Don't change my typed url..."; - return; - } - - KIcon icon; - if(m_currentUrl.isEmpty()) - { - icon = KIcon("arrow-right"); - } - else - { - icon = Application::icon(m_currentUrl); - } - - if (count()) - { - changeUrl(0, icon, m_currentUrl); - } - else - { - insertUrl(0, icon, m_currentUrl); - } - - setCurrentIndex(0); - - // important security consideration: always display the beginning - // of the url rather than its end to prevent spoofing attempts. - // Must be AFTER setCurrentIndex - if (!hasFocus()) - { - m_lineEdit->setCursorPosition(0); - } + updateStyles(); } void UrlBar::activated(const QString& urlString, Rekonq::OpenType type) { - disconnect(this, SIGNAL(editTextChanged(const QString &)), this, SLOT(suggestUrls(const QString &))); + disconnect(this, SIGNAL(textChanged(const QString &)), this, SLOT(suggestUrls(const QString &))); if (urlString.isEmpty()) return; clearFocus(); - setUrl(urlString); - Application::instance()->loadUrl(m_currentUrl, type); + setText(urlString); + Application::instance()->loadUrl(urlString, type); } @@ -185,17 +120,16 @@ void UrlBar::paintEvent(QPaintEvent *event) // set background color of UrlBar QPalette p = palette(); - p.setColor(QPalette::Base, backgroundColor); - setPalette(p); - KComboBox::paintEvent(event); - - if (!hasFocus()) + int progr = _tab->progress(); + if (progr == 0) + { + p.setBrush(QPalette::Base, backgroundColor); + } + else { - QPainter painter(this); - QColor loadingColor; - if (m_currentUrl.scheme() == QLatin1String("https")) + if ( _tab->url().scheme() == QLatin1String("https")) { loadingColor = QColor(248, 248, 100); } @@ -203,30 +137,16 @@ void UrlBar::paintEvent(QPaintEvent *event) { loadingColor = QColor(116, 192, 250); } - int progr = _tab->progress(); - - backgroundColor.setAlpha(0); - backgroundColor.setAlpha(200); - QLinearGradient gradient(0, 0, width(), height() ); + + + QLinearGradient gradient(0, 0, width(), 0); gradient.setColorAt(0, loadingColor); gradient.setColorAt(((double)progr)/100, backgroundColor); - - painter.setBrush( gradient ); - painter.setPen(Qt::transparent); - - - QRect backgroundRect = m_lineEdit->frameGeometry(); - int mid = backgroundRect.width() * progr / 100; - QRect progressRect(backgroundRect.x(), backgroundRect.y(), mid, backgroundRect.height()); - painter.drawRect(progressRect); - painter.end(); + p.setBrush(QPalette::Base, gradient); } -} - - -QSize UrlBar::sizeHint() const -{ - return m_lineEdit->sizeHint(); + setPalette(p); + + LineEdit::paintEvent(event); } @@ -234,12 +154,12 @@ void UrlBar::keyPressEvent(QKeyEvent *event) { if(event->key() == Qt::Key_Escape) { - m_box->hide(); + _box->hide(); return; } // this handles the Modifiers + Return key combinations - QString currentText = m_lineEdit->text().trimmed(); + QString currentText = text().trimmed(); if ((event->key() == Qt::Key_Enter || event->key() == Qt::Key_Return) && !currentText.startsWith(QLatin1String("http://"), Qt::CaseInsensitive)) { @@ -263,11 +183,11 @@ void UrlBar::keyPressEvent(QKeyEvent *event) { host += append; url.setHost(host); - m_lineEdit->setText(url.toString()); + setText(url.toString()); } } - KComboBox::keyPressEvent(event); + LineEdit::keyPressEvent(event); } @@ -280,7 +200,7 @@ void UrlBar::suggestUrls(const QString &text) if(text.isEmpty()) { - m_box->hide(); + _box->hide(); return; } @@ -289,31 +209,41 @@ void UrlBar::suggestUrls(const QString &text) if(list.count() > 0) { - m_box->clear(); - m_box->insertSearchList(list); - m_box->popup(); + _box->clear(); + _box->insertSearchList(list); + _box->popup(); } } + void UrlBar::focusInEvent(QFocusEvent *event) { // activate suggestions on edit text - connect(this, SIGNAL(editTextChanged(const QString &)), this, SLOT(suggestUrls(const QString &))); + connect(this, SIGNAL(textChanged(const QString &)), this, SLOT(suggestUrls(const QString &))); - KComboBox::focusInEvent(event); + LineEdit::focusInEvent(event); } void UrlBar::setCurrentTab(WebTab *tab) { if(_tab) - disconnect(_tab->view(), SIGNAL(urlChanged(const QUrl &)), this, SLOT(setUrl(const QUrl &))); + { + disconnect(_tab->view(), SIGNAL(urlChanged(const QUrl &)), this, SLOT(setQUrl(const QUrl &))); + disconnect(_tab->view(), SIGNAL(loadFinished(bool)), this, SLOT(loadFinished())); + disconnect(_tab->page(), SIGNAL(validSSLInfo(bool)), this, SLOT(setTrustedHost(bool))); + disconnect(iconButton(), SIGNAL(clicked()), _tab->page(), SLOT(showSSLInfo())); + } _tab = tab; - connect(_tab->view(), SIGNAL(urlChanged(const QUrl &)), this, SLOT(setUrl(const QUrl &))); - + connect(_tab->view(), SIGNAL(urlChanged(const QUrl &)), this, SLOT(setQUrl(const QUrl &))); + connect(_tab->view(), SIGNAL(loadFinished(bool)), this, SLOT(loadFinished())); + connect(_tab->page(), SIGNAL(validSSLInfo(bool)), this, SLOT(setTrustedHost(bool))); + connect(iconButton(), SIGNAL(clicked()), _tab->page(), SLOT(showSSLInfo())); + // update it now (the first time) - setUrl( _tab->url() ); - update(); + updateStyles(); + _tab->view()->setFocus(); + setQUrl( _tab->url() ); } @@ -321,3 +251,21 @@ void UrlBar::setPrivateMode(bool on) { _privateMode = on; } + + +void UrlBar::loadFinished() +{ + // show RSS + + // show KGet downloads?? + + // last, but not least + updateStyles(); +} + + +void UrlBar::setTrustedHost(bool on) +{ + kDebug() << "SET TRUSTED HOST.."; + iconButton()->setIconUrl( _tab->url() , on ); +} diff --git a/src/urlbar/urlbar.h b/src/urlbar/urlbar.h index 991b9038..848073db 100644 --- a/src/urlbar/urlbar.h +++ b/src/urlbar/urlbar.h @@ -49,7 +49,7 @@ class QLinearGradient; class QWidget; -class UrlBar : public KComboBox +class UrlBar : public LineEdit { Q_OBJECT @@ -57,32 +57,24 @@ public: UrlBar(QWidget *parent = 0); ~UrlBar(); - void selectAll() const; - KUrl url() const; - QSize sizeHint() const; - void setCurrentTab(WebTab *); void setPrivateMode(bool on); - -public slots: - void setUrl(const QUrl &url); - void updateUrl(); private slots: void activated(const QString& url, Rekonq::OpenType = Rekonq::CurrentTab); void suggestUrls(const QString &editedText); + void setQUrl(const QUrl &url); + void loadFinished(); + void setTrustedHost(bool on); + protected: virtual void paintEvent(QPaintEvent *event); virtual void keyPressEvent(QKeyEvent *event); virtual void focusInEvent(QFocusEvent *event); private: - LineEdit *m_lineEdit; - - KUrl m_currentUrl; - - CompletionWidget *m_box; + CompletionWidget *_box; WebTab *_tab; bool _privateMode; }; diff --git a/src/webpage.cpp b/src/webpage.cpp index 71cc8be4..8dc0ef96 100644 --- a/src/webpage.cpp +++ b/src/webpage.cpp @@ -304,18 +304,9 @@ void WebPage::loadFinished(bool) { wallet()->fillFormData(mainFrame()); } - - // TODO: implement me! - if(_sslInfo.isValid()) - { - // show an icon in the urlbar - kDebug() << "----------------- SSL VALID INFO!!!! ------------------"; - } - else - { - // hide the icon in the urlbar - kDebug() << "----------------- SSL INFO NOT VALID... ------------------"; - } + + if( mainFrame()->url().scheme() == QL1S("https") ) + emit validSSLInfo( _sslInfo.isValid() ); } @@ -538,13 +529,23 @@ void WebPage::showSSLInfo() KSslInfoDialog::errorsFromString( _sslInfo.certificateErrors() ) ); - dlg->open(); + dlg->exec(); delete dlg; - } - else + + return; + } + + if( mainFrame()->url().scheme() == QL1S("https") ) + { + KMessageBox::error( view(), + i18n("The SSL information for this site appears to be corrupt."), + i18nc("Secure Sockets Layer", "SSL") + ); + } + else { - KMessageBox::information( 0, - i18n("The SSL information for this site appears to be corrupt."), + KMessageBox::information( view(), + i18n("This site doesn't contain SSL information."), i18nc("Secure Sockets Layer", "SSL") ); } diff --git a/src/webpage.h b/src/webpage.h index abc9833c..479d0cd3 100644 --- a/src/webpage.h +++ b/src/webpage.h @@ -58,8 +58,6 @@ public: explicit WebPage(QWidget *parent = 0); ~WebPage(); - void showSSLInfo(); - public slots: virtual void downloadRequest(const QNetworkRequest &request); void downloadAllContentsWithKGet(); @@ -77,7 +75,11 @@ protected Q_SLOTS: private slots: void manageNetworkErrors(QNetworkReply *reply); void loadFinished(bool); + void showSSLInfo(); +signals: + void validSSLInfo(bool); + private: QString errorPage(QNetworkReply *); diff --git a/src/webview.cpp b/src/webview.cpp index 6e3718e0..e874411d 100644 --- a/src/webview.cpp +++ b/src/webview.cpp @@ -66,6 +66,7 @@ WebView::WebView(QWidget* parent) , _scrollTimer( new QTimer(this) ) , _VScrollSpeed(0) , _HScrollSpeed(0) + , _disableAutoScroll(false) { WebPage *page = new WebPage(this); setPage(page); @@ -320,6 +321,9 @@ void WebView::contextMenuEvent(QContextMenuEvent *event) void WebView::mousePressEvent(QMouseEvent *event) { + QWebHitTestResult result = page()->mainFrame()->hitTestContent( event->pos() ); + _disableAutoScroll = result.isContentEditable(); + switch(event->button()) { case Qt::XButton1: @@ -425,6 +429,12 @@ void WebView::keyPressEvent(QKeyEvent *event) return; } } + + if(_disableAutoScroll) + { + KWebView::keyPressEvent(event); + return; + } // Auto Scrolling if ( event->modifiers() == Qt::ShiftModifier ) diff --git a/src/webview.h b/src/webview.h index 59105267..0fe83ae4 100644 --- a/src/webview.h +++ b/src/webview.h @@ -52,7 +52,7 @@ public: protected: void contextMenuEvent(QContextMenuEvent *event); - void mousePressEvent(QMouseEvent *event);// need to be ported + void mousePressEvent(QMouseEvent *event); // need to be ported void mouseMoveEvent(QMouseEvent *event); void keyPressEvent(QKeyEvent *event); @@ -79,6 +79,7 @@ private: QTimer *_scrollTimer; int _VScrollSpeed; int _HScrollSpeed; + bool _disableAutoScroll; }; #endif |