From 19b7700c4907ba24401741dc98f83c81d4b213d0 Mon Sep 17 00:00:00 2001 From: NPScript Date: Sat, 4 Jun 2022 10:08:21 +0200 Subject: fix context menu --- sb.cpp | 32 ++++++++++++++++++++++---------- 1 file changed, 22 insertions(+), 10 deletions(-) (limited to 'sb.cpp') diff --git a/sb.cpp b/sb.cpp index af5e8a5..661ba4b 100644 --- a/sb.cpp +++ b/sb.cpp @@ -8,7 +8,7 @@ #include #include #include -#include +#include #include #include #include @@ -20,7 +20,7 @@ void search(); void page_scroll(int scroll); class Main; void get_window_id(); -uint32_t id; +uint32_t parent_id = 0; bool is_valid_url(const std::string & url) { std::regex r(".*://.*\\..*"); @@ -29,12 +29,9 @@ bool is_valid_url(const std::string & url) { return std::regex_match(url, m, r); } -std::string style = "QWidget { background: #181818; }" - "QLineEdit { color: #547f62; border: none; } " - "QLabel { color: #547f62; } "; - QWebEngineView * web; Main * view; +Display * dpy; class Main : public QMainWindow { protected: @@ -49,6 +46,8 @@ class Main : public QMainWindow { web->back(); else if (event->text() == "L") web->forward(); + else if (event->text() == "r") + web->reload(); } }; @@ -108,7 +107,6 @@ void help(char *arg0) { int main(int argc, char **argv) { QApplication app(argc, argv); - app.setStyleSheet(QString::fromStdString(style)); view = new Main(); web = new QWebEngineView(); std::cout << getenv("WWW_HOME") << '\n'; @@ -116,9 +114,9 @@ main(int argc, char **argv) { if (argc == 3) { if (argv[1] == std::string("-e")) { - Display * dpy = XOpenDisplay(NULL); - int eid = std::stoi(argv[2]); - XReparentWindow(dpy, view->winId(), eid, 0, 0); + dpy = XOpenDisplay(NULL); + parent_id = std::stoi(argv[2]); + XReparentWindow(dpy, view->winId(), parent_id, 0, 0); XFlush(dpy); } else { help(argv[0]); @@ -130,5 +128,19 @@ main(int argc, char **argv) { view->show(); view->setCentralWidget(web); + web->connect(web, &QWebEngineView::titleChanged, [&](const QString & title) { + view->setWindowTitle(title); + }); + + if (parent_id != 0) { + web->setContextMenuPolicy(Qt::CustomContextMenu); + web->connect(web, + &QWebEngineView::customContextMenuRequested, [&](){ + auto menu = web->page()->createStandardContextMenu(); + menu->popup(QCursor::pos()); + return menu; + }); + } + return app.exec(); } -- cgit v1.2.3-70-g09d2