diff options
-rw-r--r-- | frontends/qt/urlbar.cls.h | 8 | ||||
-rw-r--r-- | frontends/qt/urlbar.cpp | 76 |
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 |