summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/urlbar/urlbar.cpp108
-rw-r--r--src/urlbar/urlbar.h3
2 files changed, 51 insertions, 60 deletions
diff --git a/src/urlbar/urlbar.cpp b/src/urlbar/urlbar.cpp
index 7b77f3db..54045bf4 100644
--- a/src/urlbar/urlbar.cpp
+++ b/src/urlbar/urlbar.cpp
@@ -81,6 +81,21 @@ void IconButton::mouseReleaseEvent(QMouseEvent* event)
// -----------------------------------------------------------------------------------------------------------
+QString guessUrlWithCustomFirstLevel(const QString &str1, const QString &str2)
+{
+ QUrl url(QL1S("http://www.") + str1);
+ QString host = url.host().toLower();
+ if (!host.endsWith(str2, Qt::CaseInsensitive))
+ {
+ host += str2;
+ url.setHost(host);
+ }
+ return url.toString();
+}
+
+// -----------------------------------------------------------------------------------------------------------
+
+
UrlBar::UrlBar(QWidget *parent)
: KLineEdit(parent)
, _tab(0)
@@ -153,7 +168,7 @@ void UrlBar::setQUrl(const QUrl& url)
}
-void UrlBar::activated(const KUrl& url, Rekonq::OpenType type)
+void UrlBar::loadRequestedUrl(const KUrl& url, Rekonq::OpenType type)
{
activateSuggestions(false);
clearFocus();
@@ -242,60 +257,43 @@ void UrlBar::paintEvent(QPaintEvent *event)
void UrlBar::keyPressEvent(QKeyEvent *event)
{
- // this handles the Modifiers + Return key combinations
QString currentText = text().trimmed();
- if (event->modifiers() == Qt::AltModifier)
- {
- if (event->key() == Qt::Key_Return || event->key() == Qt::Key_Enter)
- {
- activated(currentText, Rekonq::NewFocusedTab);
- }
- }
- if ((event->key() == Qt::Key_Enter || event->key() == Qt::Key_Return)
- && !currentText.startsWith(QL1S("http://"), Qt::CaseInsensitive)
- && event->modifiers() != Qt::NoModifier)
- {
- QString append;
- if (event->modifiers() == Qt::ControlModifier)
- {
- append = QL1S(".com");
- }
- else if (event->modifiers() == (Qt::ControlModifier | Qt::ShiftModifier))
- {
- append = QL1S(".org");
- }
- else if (event->modifiers() == Qt::ShiftModifier)
- {
- append = QL1S(".net");
- }
- if (!append.isEmpty())
+ if (currentText.isEmpty())
+ return KLineEdit::keyPressEvent(event);
+
+ // this handles the Modifiers + Return key combinations
+ if (event->key() == Qt::Key_Return || event->key() == Qt::Key_Enter)
+ {
+ switch(event->modifiers())
{
- QUrl url(QL1S("http://www.") + currentText);
- QString host = url.host();
- if (!host.endsWith(append, Qt::CaseInsensitive))
- {
- host += append;
- url.setHost(host);
- }
-
- // now, load it!
- activated(url);
+ case Qt::AltModifier:
+ loadRequestedUrl(currentText, Rekonq::NewFocusedTab);
+ break;
+
+ case Qt::ControlModifier:
+ loadRequestedUrl(guessUrlWithCustomFirstLevel(currentText, QL1S(".com")));
+ break;
+
+ case 0x06000000: // Qt::ControlModifier | Qt::ShiftModifier:
+ loadRequestedUrl(guessUrlWithCustomFirstLevel(currentText, QL1S(".org")));
+ break;
+
+ case Qt::ShiftModifier:
+ loadRequestedUrl(guessUrlWithCustomFirstLevel(currentText, QL1S(".net")));
+ break;
+
+ default:
+ loadRequestedUrl(currentText);
+ break;
}
}
- else if ((event->key() == Qt::Key_Enter || event->key() == Qt::Key_Return)
- && !currentText.isEmpty())
- {
- loadTyped(currentText);
- }
-
- else if (event->key() == Qt::Key_Escape)
+ if (event->key() == Qt::Key_Escape)
{
clearFocus();
- if (text() != rApp->mainWindow()->currentTab()->view()->url().toString()
- && !rApp->mainWindow()->currentTab()->view()->url().toString().startsWith(QL1S("about")))
- setText(rApp->mainWindow()->currentTab()->view()->url().toString());
+ if (!(_tab->url().protocol() == QL1S("about")))
+ setText(_tab->url().url());
event->accept();
}
@@ -321,14 +319,14 @@ void UrlBar::dropEvent(QDropEvent *event)
if (url.isValid())
{
setQUrl(url);
- activated(text());
+ loadRequestedUrl(text());
return;
}
}
// handles everything else
KLineEdit::dropEvent(event);
- activated(text());
+ loadRequestedUrl(text());
}
@@ -425,12 +423,6 @@ void UrlBar::updateRightIcons()
}
-void UrlBar::loadTyped(const QString &text)
-{
- activated(KUrl(text));
-}
-
-
void UrlBar::activateSuggestions(bool b)
{
if (b)
@@ -439,7 +431,7 @@ void UrlBar::activateSuggestions(bool b)
{
_box = new CompletionWidget(this);
installEventFilter(_box.data());
- connect(_box.data(), SIGNAL(chosenUrl(const KUrl &, Rekonq::OpenType)), this, SLOT(activated(const KUrl &, Rekonq::OpenType)));
+ connect(_box.data(), SIGNAL(chosenUrl(const KUrl &, Rekonq::OpenType)), this, SLOT(loadRequestedUrl(const KUrl &, Rekonq::OpenType)));
// activate suggestions on edit text
connect(this, SIGNAL(textChanged(const QString &)), this, SLOT(detectTypedString(const QString &)));
@@ -724,7 +716,7 @@ void UrlBar::addFavorite()
void UrlBar::pasteAndGo()
{
- activated(rApp->clipboard()->text());
+ loadRequestedUrl(rApp->clipboard()->text());
}
@@ -732,7 +724,7 @@ void UrlBar::pasteAndSearch()
{
KService::Ptr defaultEngine = SearchEngine::defaultEngine();
if (defaultEngine)
- activated(KUrl(SearchEngine::buildQuery(defaultEngine, rApp->clipboard()->text())));
+ loadRequestedUrl(KUrl(SearchEngine::buildQuery(defaultEngine, rApp->clipboard()->text())));
}
diff --git a/src/urlbar/urlbar.h b/src/urlbar/urlbar.h
index a9ce301d..2d158ff3 100644
--- a/src/urlbar/urlbar.h
+++ b/src/urlbar/urlbar.h
@@ -95,10 +95,9 @@ public Q_SLOTS:
void setQUrl(const QUrl &url);
private Q_SLOTS:
- void activated(const KUrl& url, Rekonq::OpenType = Rekonq::CurrentTab);
+ void loadRequestedUrl(const KUrl& url, Rekonq::OpenType = Rekonq::CurrentTab);
void loadFinished();
- void loadTyped(const QString &);
void clearRightIcons();
void updateRightIcons();