From 7963ee3d49e49fc3fd3b1a483e53f35974baaea1 Mon Sep 17 00:00:00 2001 From: nowrep Date: Tue, 27 Dec 2011 18:50:52 +0100 Subject: [PATCH] Clicking on buttons in locationbar now won't focus locationbar. --- src/bookmarks/bookmarkicon.cpp | 8 ++++++++ src/bookmarks/bookmarkicon.h | 2 ++ src/navigation/downicon.cpp | 16 +++++++++++++++ src/navigation/downicon.h | 17 ++++++++++++++++ src/navigation/goicon.cpp | 17 ++++++++++++++++ src/navigation/goicon.h | 21 +++++++++++++++++++ src/navigation/locationbar.cpp | 37 +++++++++++++--------------------- src/navigation/locationbar.h | 6 ++++-- src/navigation/siteicon.cpp | 5 ++++- src/rss/rssicon.cpp | 18 +++++++++++++++++ src/rss/rssicon.h | 20 ++++++++++++++++++ src/src.pro | 10 +++++++-- src/webview/siteinfowidget.cpp | 1 + translations/cs_CZ.ts | 10 ++++----- translations/de_DE.ts | 10 ++++----- translations/el_GR.ts | 10 ++++----- translations/empty.ts | 10 ++++----- translations/es_ES.ts | 10 ++++----- translations/fr_FR.ts | 10 ++++----- translations/it_IT.ts | 10 ++++----- translations/nl_NL.ts | 10 ++++----- translations/pl_PL.ts | 10 ++++----- translations/zh_CN.ts | 10 ++++----- 23 files changed, 200 insertions(+), 78 deletions(-) create mode 100644 src/navigation/downicon.cpp create mode 100644 src/navigation/downicon.h create mode 100644 src/navigation/goicon.cpp create mode 100644 src/navigation/goicon.h create mode 100644 src/rss/rssicon.cpp create mode 100644 src/rss/rssicon.h diff --git a/src/bookmarks/bookmarkicon.cpp b/src/bookmarks/bookmarkicon.cpp index 07d362ae2..aa06aea12 100644 --- a/src/bookmarks/bookmarkicon.cpp +++ b/src/bookmarks/bookmarkicon.cpp @@ -95,3 +95,11 @@ void BookmarkIcon::setBookmarkDisabled() style()->polish(this); setToolTip(tr("Bookmark this Page")); } + +void BookmarkIcon::mousePressEvent(QMouseEvent *ev) +{ + ClickableLabel::mousePressEvent(ev); + + // Prevent propagating to LocationBar + ev->accept(); +} diff --git a/src/bookmarks/bookmarkicon.h b/src/bookmarks/bookmarkicon.h index 01c16a03c..75ddbb9ca 100644 --- a/src/bookmarks/bookmarkicon.h +++ b/src/bookmarks/bookmarkicon.h @@ -41,6 +41,8 @@ private slots: void bookmarkDeleted(const BookmarksModel::Bookmark &bookmark); private: + void mousePressEvent(QMouseEvent *ev); + void setBookmarkSaved(); void setBookmarkDisabled(); diff --git a/src/navigation/downicon.cpp b/src/navigation/downicon.cpp new file mode 100644 index 000000000..3f20f8963 --- /dev/null +++ b/src/navigation/downicon.cpp @@ -0,0 +1,16 @@ +#include "downicon.h" + +DownIcon::DownIcon(QWidget *parent) + : ClickableLabel(parent) +{ + setObjectName("locationbar-down-icon"); + setCursor(Qt::ArrowCursor); +} + +void DownIcon::mousePressEvent(QMouseEvent *ev) +{ + ClickableLabel::mousePressEvent(ev); + + // Prevent propagating to LocationBar + ev->accept(); +} diff --git a/src/navigation/downicon.h b/src/navigation/downicon.h new file mode 100644 index 000000000..8114e6c2b --- /dev/null +++ b/src/navigation/downicon.h @@ -0,0 +1,17 @@ +#ifndef DOWNICON_H +#define DOWNICON_H + +#include "clickablelabel.h" + +class DownIcon : public ClickableLabel +{ + Q_OBJECT +public: + explicit DownIcon(QWidget* parent = 0); + +private: + void mousePressEvent(QMouseEvent *ev); + +}; + +#endif // DOWNICON_H diff --git a/src/navigation/goicon.cpp b/src/navigation/goicon.cpp new file mode 100644 index 000000000..d39e94069 --- /dev/null +++ b/src/navigation/goicon.cpp @@ -0,0 +1,17 @@ +#include "goicon.h" + +GoIcon::GoIcon(QWidget *parent) + : ClickableLabel(parent) +{ + setObjectName("locationbar-goicon"); + setCursor(Qt::PointingHandCursor); + setHidden(true); +} + +void GoIcon::mousePressEvent(QMouseEvent *ev) +{ + ClickableLabel::mousePressEvent(ev); + + // Prevent propagating to LocationBar + ev->accept(); +} diff --git a/src/navigation/goicon.h b/src/navigation/goicon.h new file mode 100644 index 000000000..6ae5f3a60 --- /dev/null +++ b/src/navigation/goicon.h @@ -0,0 +1,21 @@ +#ifndef GOICON_H +#define GOICON_H + +#include "clickablelabel.h" + +class GoIcon : public ClickableLabel +{ + Q_OBJECT +public: + explicit GoIcon(QWidget *parent = 0); + +signals: + +public slots: + +private: + void mousePressEvent(QMouseEvent *ev); + +}; + +#endif // GOICON_H diff --git a/src/navigation/locationbar.cpp b/src/navigation/locationbar.cpp index 34c1576b2..fdd0ff7d9 100644 --- a/src/navigation/locationbar.cpp +++ b/src/navigation/locationbar.cpp @@ -32,6 +32,9 @@ #include "toolbutton.h" #include "searchenginesmanager.h" #include "siteicon.h" +#include "goicon.h" +#include "rssicon.h" +#include "downicon.h" LocationBar::LocationBar(QupZilla* mainClass) : LineEdit() @@ -40,29 +43,17 @@ LocationBar::LocationBar(QupZilla* mainClass) , m_locationBarSettings(LocationBarSettings::instance()) { setObjectName("locationbar"); - m_siteIcon = new SiteIcon(this); - - m_rssIcon = new ClickableLabel(this); - m_rssIcon->setObjectName("locationbar-rss-icon"); - m_rssIcon->setCursor(Qt::PointingHandCursor); - m_rssIcon->setToolTip(tr("Add RSS from this page...")); - m_rssIcon->setFocusPolicy(Qt::ClickFocus); - m_rssIcon->setVisible(false); - - m_goButton = new ClickableLabel(this); - m_goButton->setObjectName("locationbar-goicon"); - m_goButton->setCursor(Qt::PointingHandCursor); - m_goButton->setHidden(true); m_bookmarkIcon = new BookmarkIcon(p_QupZilla); - - ClickableLabel* down = new ClickableLabel(this); - down->setObjectName("locationbar-down-icon"); - down->setCursor(Qt::ArrowCursor); + m_goIcon = new GoIcon(this); + m_rssIcon = new RssIcon(this); + m_rssIcon->setToolTip(tr("Add RSS from this page...")); + m_siteIcon = new SiteIcon(this); + DownIcon* down = new DownIcon(this); addWidget(down, LineEdit::RightSide); addWidget(m_bookmarkIcon, LineEdit::RightSide); - addWidget(m_goButton, LineEdit::RightSide); + addWidget(m_goIcon, LineEdit::RightSide); addWidget(m_rssIcon, LineEdit::RightSide); setWidgetSpacing(0); @@ -77,7 +68,7 @@ LocationBar::LocationBar(QupZilla* mainClass) connect(this, SIGNAL(textEdited(QString)), m_locationCompleter, SLOT(refreshCompleter(QString))); connect(m_locationCompleter->popup(), SIGNAL(clicked(QModelIndex)), p_QupZilla, SLOT(urlEnter())); connect(m_siteIcon, SIGNAL(clicked()), this, SLOT(showSiteInfo())); - connect(m_goButton, SIGNAL(clicked(QPoint)), this, SLOT(urlEnter())); + connect(m_goIcon, SIGNAL(clicked(QPoint)), this, SLOT(urlEnter())); connect(m_rssIcon, SIGNAL(clicked(QPoint)), this, SLOT(rssIconClicked())); connect(down, SIGNAL(clicked(QPoint)), this, SLOT(showMostVisited())); connect(mApp->searchEnginesManager(), SIGNAL(activeEngineChanged()), this, SLOT(updatePlaceHolderText())); @@ -135,7 +126,7 @@ void LocationBar::textEdit() void LocationBar::showGoButton() { - if (m_goButton->isVisible()) { + if (m_goIcon->isVisible()) { return; } @@ -143,18 +134,18 @@ void LocationBar::showGoButton() m_bookmarkIcon->hide(); m_rssIcon->hide(); - m_goButton->show(); + m_goIcon->show(); } void LocationBar::hideGoButton() { - if (!m_goButton->isVisible()) { + if (!m_goIcon->isVisible()) { return; } m_rssIcon->setVisible(m_rssIconVisible); m_bookmarkIcon->show(); - m_goButton->hide(); + m_goIcon->hide(); } void LocationBar::showMostVisited() diff --git a/src/navigation/locationbar.h b/src/navigation/locationbar.h index c04220c64..f5db305f6 100644 --- a/src/navigation/locationbar.h +++ b/src/navigation/locationbar.h @@ -42,6 +42,8 @@ class BookmarkIcon; class WebView; class LocationBarSettings; class SiteIcon; +class GoIcon; +class RssIcon; class LocationBar : public LineEdit { Q_OBJECT @@ -87,8 +89,8 @@ private: void hideGoButton(); BookmarkIcon* m_bookmarkIcon; - ClickableLabel* m_goButton; - ClickableLabel* m_rssIcon; + GoIcon* m_goIcon; + RssIcon* m_rssIcon; SiteIcon* m_siteIcon; QupZilla* p_QupZilla; diff --git a/src/navigation/siteicon.cpp b/src/navigation/siteicon.cpp index ea82a80ff..c78b8724c 100644 --- a/src/navigation/siteicon.cpp +++ b/src/navigation/siteicon.cpp @@ -37,12 +37,15 @@ void SiteIcon::mousePressEvent(QMouseEvent* e) } ToolButton::mousePressEvent(e); + + // Prevent propagating to LocationBar + e->accept(); } void SiteIcon::mouseMoveEvent(QMouseEvent* e) { int manhattanLength = (e->pos() - m_dragStartPosition).manhattanLength(); - if (manhattanLength > QApplication::startDragDistance()) { + if (manhattanLength <= QApplication::startDragDistance()) { ToolButton::mouseMoveEvent(e); return; } diff --git a/src/rss/rssicon.cpp b/src/rss/rssicon.cpp new file mode 100644 index 000000000..40eb31331 --- /dev/null +++ b/src/rss/rssicon.cpp @@ -0,0 +1,18 @@ +#include "rssicon.h" + +RssIcon::RssIcon(QWidget *parent) + : ClickableLabel(parent) +{ + setObjectName("locationbar-rss-icon"); + setCursor(Qt::PointingHandCursor); + setFocusPolicy(Qt::ClickFocus); + setVisible(false); +} + +void RssIcon::mousePressEvent(QMouseEvent *ev) +{ + ClickableLabel::mousePressEvent(ev); + + // Prevent propagating to LocationBar + ev->accept(); +} diff --git a/src/rss/rssicon.h b/src/rss/rssicon.h new file mode 100644 index 000000000..3b595d441 --- /dev/null +++ b/src/rss/rssicon.h @@ -0,0 +1,20 @@ +#ifndef RSSICON_H +#define RSSICON_H + +#include "clickablelabel.h" + +class RssIcon : public ClickableLabel +{ + Q_OBJECT +public: + explicit RssIcon(QWidget *parent = 0); + +signals: + +public slots: + +private: + void mousePressEvent(QMouseEvent *ev); +}; + +#endif // RSSICON_H diff --git a/src/src.pro b/src/src.pro index 4d7bc16a4..4d7181c20 100644 --- a/src/src.pro +++ b/src/src.pro @@ -181,7 +181,10 @@ SOURCES += main.cpp\ other/databasewriter.cpp \ bookmarksimport/htmlimporter.cpp \ tools/enhancedmenu.cpp \ - navigation/siteicon.cpp + navigation/siteicon.cpp \ + navigation/goicon.cpp \ + rss/rssicon.cpp \ + navigation/downicon.cpp HEADERS += \ 3rdparty/qtwin.h \ @@ -301,7 +304,10 @@ HEADERS += \ other/databasewriter.h \ bookmarksimport/htmlimporter.h \ tools/enhancedmenu.h \ - navigation/siteicon.h + navigation/siteicon.h \ + navigation/goicon.h \ + rss/rssicon.h \ + navigation/downicon.h FORMS += \ preferences/autofillmanager.ui \ diff --git a/src/webview/siteinfowidget.cpp b/src/webview/siteinfowidget.cpp index 62714afc4..bc9c9fa6b 100644 --- a/src/webview/siteinfowidget.cpp +++ b/src/webview/siteinfowidget.cpp @@ -72,6 +72,7 @@ SiteInfoWidget::SiteInfoWidget(QupZilla* mainClass, QWidget* parent) } connect(ui->pushButton, SIGNAL(clicked()), p_QupZilla, SLOT(showPageInfo())); + // Use light color for QLabels even with Ubuntu Ambiance theme QPalette pal = palette(); pal.setColor(QPalette::WindowText, QToolTip::palette().color(QPalette::ToolTipText)); ui->historyLabel->setPalette(pal); diff --git a/translations/cs_CZ.ts b/translations/cs_CZ.ts index f5cf63f44..ffbf6f8f4 100644 --- a/translations/cs_CZ.ts +++ b/translations/cs_CZ.ts @@ -1694,17 +1694,17 @@ nebyl nalezen! Zobrazit informace o stránce - + Add RSS from this page... Přidat RSS kanál ... - + Enter URL address or search on %1 Zadejte internetovou adresu nebo vyhledávejte na %1 - + .co.uk Append domain name on ALT + Enter = Should be different for every country .cz @@ -3498,12 +3498,12 @@ Prosím přidejte si nějaký kliknutím na RSS ikonku v navigačním řádku.Přidat RSS kanál z této stránky - + Untitled feed Kanál bez názvu - + Add Přidat diff --git a/translations/de_DE.ts b/translations/de_DE.ts index 0cef342c7..b08d17a87 100644 --- a/translations/de_DE.ts +++ b/translations/de_DE.ts @@ -1686,17 +1686,17 @@ Seiteninformationen anzeigen - + Add RSS from this page... RSS Feed von dieser Seite hinzufügen... - + Enter URL address or search on %1 URL eingeben oder auf %1 suchen - + .co.uk Append domain name on ALT + Enter = Should be different for every country .de @@ -3490,12 +3490,12 @@ Bitte fügen Sie Feeds über das RSS Symbol in der Navigationsleiste hinzu.RSS Feed von dieser Seite hinzufügen - + Untitled feed - + Add Hinzufügen diff --git a/translations/el_GR.ts b/translations/el_GR.ts index a62ab9a62..de6be4e4c 100644 --- a/translations/el_GR.ts +++ b/translations/el_GR.ts @@ -1630,17 +1630,17 @@ LocationBar - + Add RSS from this page... Προσθήκη RSS από αυτή τη σελίδα... - + Enter URL address or search on %1 Εισαγωγή διεύθυνσης URL ή αναζήτηση στο %1 - + .co.uk Append domain name on ALT + Enter = Should be different for every country .gr @@ -3408,12 +3408,12 @@ Please add some with RSS icon in navigation bar on site which offers feeds.Προσθήκη ροής RSS από αυτή τη σελίδα - + Untitled feed Ροή χωρίς τίτλο - + Add Προσθήκη diff --git a/translations/empty.ts b/translations/empty.ts index 754623313..f24c7f302 100644 --- a/translations/empty.ts +++ b/translations/empty.ts @@ -1627,17 +1627,17 @@ LocationBar - + Add RSS from this page... - + Enter URL address or search on %1 - + .co.uk Append domain name on ALT + Enter = Should be different for every country @@ -3399,12 +3399,12 @@ Please add some with RSS icon in navigation bar on site which offers feeds. - + Untitled feed - + Add diff --git a/translations/es_ES.ts b/translations/es_ES.ts index f22abb1d0..8623594ef 100644 --- a/translations/es_ES.ts +++ b/translations/es_ES.ts @@ -1685,17 +1685,17 @@ Ver información de la página - + Add RSS from this page... Añadir RSS desde esta página... - + Enter URL address or search on %1 Introducir la dirección URL o buscar en %1 - + .co.uk Append domain name on ALT + Enter = Should be different for every country .co.uk @@ -3487,12 +3487,12 @@ Por favor, añada alguno con el icono RSS de la barra de navegación en sitios q Añadir canales RSS desde este sitio - + Untitled feed Canal sin título - + Add Añadir diff --git a/translations/fr_FR.ts b/translations/fr_FR.ts index 4518e8dbe..72859ecb5 100644 --- a/translations/fr_FR.ts +++ b/translations/fr_FR.ts @@ -1680,17 +1680,17 @@ n'a pas été trouvé! Montrer les informations de cette page - + Add RSS from this page... Ajouter un flux RSS depuis cette page... - + Enter URL address or search on %1 Entrer une adresse URL ou chercher sur %1 - + .co.uk Append domain name on ALT + Enter = Should be different for every country .fr @@ -3471,12 +3471,12 @@ Vous pouvez en ajouter grâce à l'icône RSS dans la barre de navigation s Ajouter un flux RSS depuis ce site - + Untitled feed - + Add Ajouter diff --git a/translations/it_IT.ts b/translations/it_IT.ts index 17d827795..034acb522 100644 --- a/translations/it_IT.ts +++ b/translations/it_IT.ts @@ -1677,17 +1677,17 @@ Mostra informazioni sulla pagina - + Add RSS from this page... Aggiungi RSS da questa pagina... - + Enter URL address or search on %1 - + .co.uk Append domain name on ALT + Enter = Should be different for every country .it @@ -3482,12 +3482,12 @@ Si prega di aggiungere l'icona RSS nella barra di navigazione su un sito ch Aggiungi fonte RSS da questo sito - + Untitled feed - + Add Aggiungi diff --git a/translations/nl_NL.ts b/translations/nl_NL.ts index 82630847d..cd9f1c5ae 100644 --- a/translations/nl_NL.ts +++ b/translations/nl_NL.ts @@ -1686,17 +1686,17 @@ werd niet gevonden! Toon informatie over deze pagina - + Add RSS from this page... Voeg RSS toe van deze pagina... - + Enter URL address or search on %1 Voer URL-adres in of zoek op %1 - + .co.uk Append domain name on ALT + Enter = Should be different for every country .nl @@ -3490,12 +3490,12 @@ Voeg enkele toe via het RSS-icoon op de navigatiewerkbalk op een site die feeds Voeg RSS-feeds toe van deze site - + Untitled feed - + Add Voeg toe diff --git a/translations/pl_PL.ts b/translations/pl_PL.ts index fa004a613..415539610 100644 --- a/translations/pl_PL.ts +++ b/translations/pl_PL.ts @@ -1737,17 +1737,17 @@ p, li { white-space: pre-wrap; } Pokaż informacje o tej stronie - + Add RSS from this page... Dodaj kanał RSS... - + Enter URL address or search on %1 - + .co.uk Append domain name on ALT + Enter = Should be different for every country .pl @@ -3634,12 +3634,12 @@ Dodawaj kanały klikając na ikonę RSS pasku nawigacyjnym. Dodaj kanał RSS z tej strony - + Untitled feed - + Add Dodaj diff --git a/translations/zh_CN.ts b/translations/zh_CN.ts index 825ce08b3..70ed7d507 100644 --- a/translations/zh_CN.ts +++ b/translations/zh_CN.ts @@ -1683,17 +1683,17 @@ 显示网页信息 - + Add RSS from this page... 从网页添加RSS... - + Enter URL address or search on %1 输入URL地址或在%1上搜索 - + .co.uk Append domain name on ALT + Enter = Should be different for every country .co.uk @@ -3484,12 +3484,12 @@ Please add some with RSS icon in navigation bar on site which offers feeds.从这个网站添加RSS订阅 - + Untitled feed - + Add 添加