roundabout,
created on Sunday, 1 June 2025, 16:36:09 (1748795769),
received on Sunday, 1 June 2025, 16:36:12 (1748795772)
Author identity: vlad <vlad.muntoiu@gmail.com>
f2f241293588c998839d676b454a4a61b8940379
panthera-www.cc
@@ -149,7 +149,7 @@ public:
);
auto next_entries = this->history_manager->storage.get_all<HistoryEntry>(
sqlite_orm::where(sqlite_orm::c(&HistoryEntry::timestamp) >= datetime.to_unix() + 86400),
sqlite_orm::order_by(&HistoryEntry::timestamp).desc()
sqlite_orm::order_by(&HistoryEntry::timestamp).asc()
);
if(next_entries.empty()) {
return;
@@ -271,6 +271,22 @@ protected:
std::shared_ptr<HistoryManager> history_manager;
HistoryViewer *history_viewer = nullptr;
static void load_change_callback(WebKitWebView *object, WebKitLoadEvent load_event, gpointer data) {
if(auto self = static_cast<PantheraWww*>(data)) {
if(load_event == WEBKIT_LOAD_COMMITTED) {
if(webkit_web_view_get_title(WEBKIT_WEB_VIEW(object)) == nullptr) {
self->history_manager->log_url(webkit_web_view_get_uri(WEBKIT_WEB_VIEW(object)), "");
} else {
self->history_manager->log_url(webkit_web_view_get_uri(WEBKIT_WEB_VIEW(object)),
webkit_web_view_get_title(WEBKIT_WEB_VIEW(object)));
}
if(self->history_viewer->get_visible()) {
self->history_viewer->reload_history();
}
}
}
}
static void notify_callback(GObject *object, GParamSpec *pspec, gpointer data) {
if(!gtk_widget_get_parent(GTK_WIDGET(object))) {
return;
@@ -294,16 +310,6 @@ protected:
gtk_image_set_from_paintable(image->gobj(), GDK_PAINTABLE(favicon));
}
}
} else if(g_strcmp0(pspec->name, "uri") == 0) {
if(webkit_web_view_get_title(WEBKIT_WEB_VIEW(object)) == nullptr) {
self->history_manager->log_url(webkit_web_view_get_uri(WEBKIT_WEB_VIEW(object)), "");
} else {
self->history_manager->log_url(webkit_web_view_get_uri(WEBKIT_WEB_VIEW(object)),
webkit_web_view_get_title(WEBKIT_WEB_VIEW(object)));
}
if(self->history_viewer->get_visible()) {
self->history_viewer->reload_history();
}
}
}
}
@@ -377,6 +383,7 @@ protected:
page_tab->set_spacing(4);
auto page = Gtk::make_managed<gPanthera::ContentPage>(content_manager, stack, page_content, page_tab);
g_signal_connect(webview, "notify", G_CALLBACK(notify_callback), this);
g_signal_connect(webview, "load-changed", G_CALLBACK(load_change_callback), this);
g_signal_connect(webview, "decide-policy", G_CALLBACK(on_decide_policy), this);
webkit_web_view_load_uri(webview, url_.data());
auto cookie_manager = webkit_network_session_get_cookie_manager(webkit_web_view_get_network_session(webview));