summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--frontends/qt/urlbar.cls.h8
-rw-r--r--frontends/qt/urlbar.cpp76
2 files changed, 28 insertions, 56 deletions
diff --git a/frontends/qt/urlbar.cls.h b/frontends/qt/urlbar.cls.h
index c2b0993f9..af3bb1041 100644
--- a/frontends/qt/urlbar.cls.h
+++ b/frontends/qt/urlbar.cls.h
@@ -23,6 +23,7 @@
#include <QToolBar>
#include <QLineEdit>
+#include <QAction>
extern "C" {
@@ -40,7 +41,14 @@ public:
NS_URLBar(QWidget* parent, struct browser_window *bw);
nserror set_url(struct nsurl *url);
+private slots:
+ void back_slot(bool checked);
+ void forward_slot(bool checked);
+
private:
+ void update_enabled(void);
struct browser_window *m_bw;
+ QAction *m_back;
+ QAction *m_forward;
QLineEdit *m_input;
};
diff --git a/frontends/qt/urlbar.cpp b/frontends/qt/urlbar.cpp
index ae5259571..4274f6f37 100644
--- a/frontends/qt/urlbar.cpp
+++ b/frontends/qt/urlbar.cpp
@@ -22,9 +22,11 @@
*/
#include <QLineEdit>
+#include <QStyle>
extern "C" {
#include "utils/nsurl.h"
+#include "desktop/browser_history.h"
}
#include "qt/urlbar.cls.h"
@@ -35,12 +37,19 @@ extern "C" {
NS_URLBar::NS_URLBar(QWidget* parent, struct browser_window *bw)
: QToolBar(parent), m_bw(bw)
{
- addAction(QIcon(":/icons/back.png"), "Back");
- addAction(QIcon(":/icons/forward.png"), "Forward");
+ m_back = addAction(style()->standardIcon(QStyle::SP_ArrowLeft), "Back");
+ connect(m_back, &QAction::triggered, this, &NS_URLBar::back_slot);
+
+ m_forward = addAction(style()->standardIcon(QStyle::SP_ArrowRight), "Forward");
+ connect(m_forward, &QAction::triggered, this, &NS_URLBar::forward_slot);
+
m_input=new QLineEdit();
addWidget(m_input);
+
+ update_enabled();
}
+
nserror NS_URLBar::set_url(struct nsurl *url)
{
size_t idn_url_l;
@@ -51,72 +60,27 @@ nserror NS_URLBar::set_url(struct nsurl *url)
} else {
m_input->setText(nsurl_access(url));
}
- return NSERROR_OK;
-}
-
-#if 0
-/**
- * widget representing url bar
- */
-class NS_URLBar : public Fl_Pack
-{
-private:
- struct browser_window *m_bw;
- Fl_Button *m_back_button;
- Fl_Button *m_forward_button;
- Fl_Input *m_input;
-
- void back_callback(Fl_Button *button);
- void forward_callback(Fl_Button *button);
-public:
- NS_URLBar(int X,int Y,int W,int H, struct browser_window *bw);
- nserror set_url(struct nsurl *url);
-
- /* static wrapper for qt callbacks */
- static void static_back_callback(Fl_Widget *w, void *f);
- static void static_forward_callback(Fl_Widget *w, void *f);
-
-};
-
-NS_URLBar::NS_URLBar(int X,int Y,int W,int H, struct browser_window *bw)
- : Fl_Pack(X,Y,W,H), m_bw(bw)
-{
- type(Fl_Pack::HORIZONTAL);
- spacing(4);
-
- m_back_button = new Fl_Button(0,0,H,H, "B");
- m_back_button->callback(static_back_callback, (void *)this);
-
- m_forward_button = new Fl_Button(0,0,H,H, "F");
- m_forward_button->callback(static_forward_callback, (void *)this);
- m_input = new Fl_Input(0,0,W,H);
+ update_enabled();
- end();
-
- resizable(m_input);
+ return NSERROR_OK;
}
-
-void NS_URLBar::back_callback(Fl_Button *button)
+void NS_URLBar::back_slot(bool checked)
{
browser_window_history_back(m_bw, false);
+ update_enabled();
}
-void NS_URLBar::forward_callback(Fl_Button *button)
+void NS_URLBar::forward_slot(bool checked)
{
browser_window_history_forward(m_bw, false);
+ update_enabled();
}
-
-void NS_URLBar::static_back_callback(Fl_Widget *w, void *f)
-{
- ((NS_URLBar *)f)->back_callback((Fl_Button *)w);
-}
-
-void NS_URLBar::static_forward_callback(Fl_Widget *w, void *f)
+void NS_URLBar::update_enabled()
{
- ((NS_URLBar *)f)->forward_callback((Fl_Button *)w);
+ m_back->setEnabled(browser_window_history_back_available(m_bw));
+ m_forward->setEnabled(browser_window_history_forward_available(m_bw));
}
-#endif