diff options
-rw-r--r-- | .SRCINFO | 4 | ||||
-rw-r--r-- | PKGBUILD | 5 | ||||
-rw-r--r-- | gtk4-fix-broken-alert-dialog-on-failure.patch | 150 |
3 files changed, 157 insertions, 2 deletions
@@ -1,7 +1,7 @@ pkgbase = yass-proxy pkgdesc = lightweight http/socks proxy pkgver = 1.9.1 - pkgrel = 1 + pkgrel = 2 url = https://github.com/Chilledheart/yass arch = x86_64 license = GPL-2.0-only @@ -28,6 +28,8 @@ pkgbase = yass-proxy provides = yass-proxy conflicts = yass-proxy-git source = https://github.com/Chilledheart/yass/releases/download/1.9.1/yass-1.9.1.tar.bz2 + source = gtk4-fix-broken-alert-dialog-on-failure.patch sha256sums = a2b7c2ac47778b6513788ca58e6293ce701eef28d29c8cb4efd4a1fb51ef0690 + sha256sums = b0fc6a9593308816361ea33737c0a0d9818b344f0a380b2b020276cb6927bace pkgname = yass-proxy @@ -3,7 +3,7 @@ pkgname=yass-proxy pkgver=1.9.1 -pkgrel=1 +pkgrel=2 _pkgver=1.9.1 _pkgrel=1 pkgdesc="lightweight http/socks proxy" @@ -17,13 +17,16 @@ checkdepends=(curl) provides=(yass-proxy) conflicts=(yass-proxy-git) source=("https://github.com/Chilledheart/yass/releases/download/${_pkgver}/yass-${_pkgver}.tar.bz2" + "gtk4-fix-broken-alert-dialog-on-failure.patch" ) sha256sums=('a2b7c2ac47778b6513788ca58e6293ce701eef28d29c8cb4efd4a1fb51ef0690' + 'b0fc6a9593308816361ea33737c0a0d9818b344f0a380b2b020276cb6927bace' ) prepare() { SRC_DIR="${srcdir}/yass-${_pkgver}" pushd $SRC_DIR + patch --forward --strip=1 --input=../gtk4-fix-broken-alert-dialog-on-failure.patch cd tools go build cd .. diff --git a/gtk4-fix-broken-alert-dialog-on-failure.patch b/gtk4-fix-broken-alert-dialog-on-failure.patch new file mode 100644 index 000000000000..54892ae966da --- /dev/null +++ b/gtk4-fix-broken-alert-dialog-on-failure.patch @@ -0,0 +1,150 @@ +From e3176c3fd87d41a74833d40e8cb3f0040c10cd15 Mon Sep 17 00:00:00 2001 +From: Keeyou <keeyou-cn@outlook.com> +Date: Mon, 22 Apr 2024 13:51:47 +0800 +Subject: [PATCH] gtk4: fix broken alert dialog on failure + +--- + src/gtk/yass.cpp | 1 - + src/gtk/yass_window.cpp | 2 +- + src/gtk4/yass.cpp | 1 - + src/gtk4/yass_en.po | 8 ++++++++ + src/gtk4/yass_window.cpp | 20 ++++++++++++++++---- + src/gtk4/yass_zh_CN.po | 8 ++++++++ + src/mac/YassAppDelegate.mm | 1 - + src/win32/yass.cpp | 2 -- + 8 files changed, 33 insertions(+), 10 deletions(-) + +diff --git a/src/gtk/yass.cpp b/src/gtk/yass.cpp +index 3402a9b7..dd6b4ad8 100644 +--- a/src/gtk/yass.cpp ++++ b/src/gtk/yass.cpp +@@ -267,7 +267,6 @@ void YASSApp::OnStartFailed(const std::string& error_msg) { + state_ = START_FAILED; + + error_msg_ = error_msg; +- LOG(ERROR) << "worker failed due to: " << error_msg_; + main_window_->StartFailed(); + } + +diff --git a/src/gtk/yass_window.cpp b/src/gtk/yass_window.cpp +index ec3fda60..848e2318 100644 +--- a/src/gtk/yass_window.cpp ++++ b/src/gtk/yass_window.cpp +@@ -377,7 +377,7 @@ void YASSWindow::StartFailed() { + gtk_widget_set_sensitive(GTK_WIDGET(dot_host_), true); + gtk_widget_set_sensitive(GTK_WIDGET(timeout_), true); + +- GtkDialog* alert_dialog = GTK_DIALOG(gtk_message_dialog_new(impl_, GTK_DIALOG_MODAL, GTK_MESSAGE_WARNING, ++ GtkDialog* alert_dialog = GTK_DIALOG(gtk_message_dialog_new(impl_, GTK_DIALOG_MODAL, GTK_MESSAGE_ERROR, + GTK_BUTTONS_OK, "%s", mApp->GetStatus().c_str())); + + gtk_dialog_run(GTK_DIALOG(alert_dialog)); +diff --git a/src/gtk4/yass.cpp b/src/gtk4/yass.cpp +index 9d3708f7..f3ec143c 100644 +--- a/src/gtk4/yass.cpp ++++ b/src/gtk4/yass.cpp +@@ -310,7 +310,6 @@ void YASSApp::OnStartFailed(const std::string& error_msg) { + state_ = START_FAILED; + + error_msg_ = error_msg; +- LOG(ERROR) << "worker failed due to: " << error_msg_; + main_window_->StartFailed(); + } + +diff --git a/src/gtk4/yass_en.po b/src/gtk4/yass_en.po +index 183df608..7b992203 100644 +--- a/src/gtk4/yass_en.po ++++ b/src/gtk4/yass_en.po +@@ -89,6 +89,14 @@ msgstr "DNS over HTTPS URL:" + msgid "DNS over TLS Host:" + msgstr "DNS over TLS Host:" + ++#: yass_window.cpp:298 ++msgid "Start Failed" ++msgstr "Start Failed" ++ ++#: yass_window.cpp:298 ++msgid "OK" ++msgstr "OK" ++ + #: yass_window.ui:101 + msgid "Timeout:" + msgstr "Timeout:" +diff --git a/src/gtk4/yass_window.cpp b/src/gtk4/yass_window.cpp +index bb72c913..b3b3ea69 100644 +--- a/src/gtk4/yass_window.cpp ++++ b/src/gtk4/yass_window.cpp +@@ -295,10 +295,22 @@ void YASSWindow::StartFailed() { + gtk_widget_set_sensitive(impl_->dot_host, true); + gtk_widget_set_sensitive(impl_->timeout, true); + +- GtkDialog* dialog = GTK_DIALOG(gtk_message_dialog_new(GTK_WINDOW(impl_), GTK_DIALOG_MODAL, GTK_MESSAGE_WARNING, +- GTK_BUTTONS_CLOSE, "%s", mApp->GetStatus().c_str())); +- +- g_signal_connect(dialog, "response", G_CALLBACK(gtk_window_destroy), NULL); ++ // Gtk4 Message Dialog is deprecated since 4.10 ++#if GTK_CHECK_VERSION(4, 10, 0) ++ GtkAlertDialog* dialog = gtk_alert_dialog_new("%s", _("Start Failed")); ++ const char* buttons[] = {_("OK"), nullptr}; ++ gtk_alert_dialog_set_detail(dialog, mApp->GetStatus().c_str()); ++ gtk_alert_dialog_set_buttons(dialog, buttons); ++ gtk_window_present(GTK_WINDOW(impl_)); ++ gtk_alert_dialog_choose(dialog, GTK_WINDOW(impl_), nullptr, nullptr, nullptr); ++#else ++ GtkDialogFlags flags = (GtkDialogFlags)(GTK_DIALOG_DESTROY_WITH_PARENT | GTK_DIALOG_MODAL); ++ GtkDialog* dialog = GTK_DIALOG(gtk_message_dialog_new(GTK_WINDOW(impl_), flags, GTK_MESSAGE_ERROR, GTK_BUTTONS_OK, ++ "%s", mApp->GetStatus().c_str())); ++ ++ g_signal_connect(dialog, "response", G_CALLBACK(gtk_window_destroy), nullptr); ++ gtk_widget_show(GTK_WIDGET(dialog)); ++#endif + } + + void YASSWindow::Stopped() { +diff --git a/src/gtk4/yass_zh_CN.po b/src/gtk4/yass_zh_CN.po +index 3715169f..cb59cb8c 100644 +--- a/src/gtk4/yass_zh_CN.po ++++ b/src/gtk4/yass_zh_CN.po +@@ -90,6 +90,14 @@ msgstr "基于 HTTPS 的 DNS (DoH) URL:" + msgid "DNS over TLS Host:" + msgstr "基于 TLS 的 DNS (DoT) 域名:" + ++#: yass_window.cpp:298 ++msgid "Start Failed" ++msgstr "启动失败" ++ ++#: yass_window.cpp:298 ++msgid "OK" ++msgstr "确认" ++ + #: yass_window.ui:101 + msgid "Timeout:" + msgstr "超时时间:" +diff --git a/src/mac/YassAppDelegate.mm b/src/mac/YassAppDelegate.mm +index d594dd69..15893c52 100644 +--- a/src/mac/YassAppDelegate.mm ++++ b/src/mac/YassAppDelegate.mm +@@ -168,7 +168,6 @@ + state_ = START_FAILED; + + error_msg_ = error_msg; +- LOG(ERROR) << "worker failed due to: " << error_msg_; + YassWindowController* windowController = + (YassWindowController*)NSApplication.sharedApplication.mainWindow.windowController; + [windowController StartFailed]; +diff --git a/src/win32/yass.cpp b/src/win32/yass.cpp +index abc32569..0ec4adf9 100644 +--- a/src/win32/yass.cpp ++++ b/src/win32/yass.cpp +@@ -365,8 +365,6 @@ void CYassApp::OnStartFailed(WPARAM w, LPARAM l) { + std::unique_ptr<std::string> message_ptr(reinterpret_cast<std::string*>(l)); + + error_msg_ = std::move(message_ptr.operator*()); +- +- LOG(ERROR) << "worker failed due to: " << error_msg_; + frame_->OnStartFailed(); + } + +-- +2.44.0 + |