From 1dce6e622fbf335b3843564dccc7693103a2507c Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Tue, 12 Mar 2024 12:09:50 +0600 Subject: [PATCH 1/3] Changed api for web window access --- source/libublsettings-gtk3.c | 6 ++++-- source/libublsettings-gtk3.h | 4 ++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/source/libublsettings-gtk3.c b/source/libublsettings-gtk3.c index 060a516..df67921 100644 --- a/source/libublsettings-gtk3.c +++ b/source/libublsettings-gtk3.c @@ -892,7 +892,7 @@ void yon_ubl_setup_sockets(GtkWidget *main_window, GtkWidget *left_window, GtkWi // webkit section #ifdef WEBKIT_INCLUDE -void yon_ubl_browser_window_open(char *link, char *browser_window_name){ +GtkWidget *yon_ubl_browser_window_open(char *link, char *browser_window_name){ GtkWidget *browser=gtk_window_new(GTK_WINDOW_TOPLEVEL); GtkWidget *web_place=gtk_box_new(GTK_ORIENTATION_VERTICAL,0); GtkWidget *header=gtk_header_bar_new(); @@ -907,15 +907,17 @@ void yon_ubl_browser_window_open(char *link, char *browser_window_name){ webkit_web_view_load_uri(WEBKIT_WEB_VIEW(WebView),link); gtk_box_pack_start(GTK_BOX(web_place),WebView,1,1,0); gtk_widget_show_all(browser); + return browser; } #else -void yon_ubl_browser_window_open(char *link, char *browser_window_name){ +GtkWidget *yon_ubl_browser_window_open(char *link, char *browser_window_name){ char *user=getenv("SUDO_USER"); if (!user) user=getlogin(); char *command=yon_char_unite("sudo -u ",user," xdg-open ", link,NULL); yon_launch(command); + return NULL } #endif diff --git a/source/libublsettings-gtk3.h b/source/libublsettings-gtk3.h index 9881ded..adf0595 100644 --- a/source/libublsettings-gtk3.h +++ b/source/libublsettings-gtk3.h @@ -411,7 +411,7 @@ void yon_ubl_setup_sockets(GtkWidget *main_window, GtkWidget *left_window, GtkWi * [RU] * Открывает встроенный браузер с именем [browser_window_name] и показываемой страницей по ссылке [link] */ -void yon_ubl_browser_window_open(char *link, char *browser_window_name); +GtkWidget *yon_ubl_browser_window_open(char *link, char *browser_window_name); #else /**yon_ubl_browser_window_open(char *link, char *browser_window_name) @@ -422,7 +422,7 @@ void yon_ubl_browser_window_open(char *link, char *browser_window_name); * Открывает браузер со страницей по ссылке [link] * [browser_window_name] не используется. Нужна для совместимости с webkit версией этой функции. */ -void yon_ubl_browser_window_open(char *link, char *browser_window_name); +GtkWidget *yon_ubl_browser_window_open(char *link, char *browser_window_name); #endif #endif // rmb menu section From 7a1c5b9f58ddbd459bc6a1a8685ba7982befcca0 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Tue, 12 Mar 2024 14:47:55 +0600 Subject: [PATCH 2/3] Added argument for function to set checking function for showing menu --- source/libublsettings-gtk3.c | 26 +++++++++++++++++--------- source/libublsettings-gtk3.h | 4 +++- 2 files changed, 20 insertions(+), 10 deletions(-) diff --git a/source/libublsettings-gtk3.c b/source/libublsettings-gtk3.c index df67921..d5c185e 100644 --- a/source/libublsettings-gtk3.c +++ b/source/libublsettings-gtk3.c @@ -917,20 +917,25 @@ GtkWidget *yon_ubl_browser_window_open(char *link, char *browser_window_name){ user=getlogin(); char *command=yon_char_unite("sudo -u ",user," xdg-open ", link,NULL); yon_launch(command); - return NULL + return NULL; } #endif // rmb menu section -gboolean on_rmb_menu_open(GtkWidget *self,GdkEventButton *event, rmb_menu_window *window){ - if (self){}; - if (event->button==3){ +typedef int (*RmbCheck)(void*); - gtk_widget_show_all(window->menu); - gtk_menu_popup_at_pointer(GTK_MENU(window->menu),NULL); +gboolean on_rmb_menu_open(GtkWidget *self,GdkEventButton *event, rmb_menu_window *window){ + int (*func)(void*) = (RmbCheck)(window->show_function); + if (func(window->show_data)){ + if (self){}; + if (event->button==3){ + + gtk_widget_show_all(window->menu); + gtk_menu_popup_at_pointer(GTK_MENU(window->menu),NULL); + return 0; + } return 0; } - return 0; } rmb_menu_window *yon_rmb_menu_new(){ @@ -942,9 +947,11 @@ rmb_menu_window *yon_rmb_menu_new(){ return window; } -rmb_menu_window *yon_rmb_menu_setup(GtkWidget *target_widget, const char *button_label, const char *icon_name, GCallback function, gpointer data,...){ +rmb_menu_window *yon_rmb_menu_setup(GtkWidget *target_widget, int (show_function)(void*), void *show_data, const char *button_label, const char *icon_name, GCallback function, gpointer data,...){ if (target_widget){ rmb_menu_window *window = yon_rmb_menu_new(); + window->show_function=(GCallback)show_function; + window->show_data=show_data; { GtkWidget *menu_item = gtk_menu_item_new(); GtkWidget *content_box = gtk_box_new(GTK_ORIENTATION_HORIZONTAL,5); @@ -996,6 +1003,7 @@ rmb_menu_window *yon_rmb_menu_setup(GtkWidget *target_widget, const char *button gtk_menu_shell_append(GTK_MENU_SHELL(window->menu),menu_item); } g_signal_connect(G_OBJECT(target_widget),"button-press-event",G_CALLBACK(on_rmb_menu_open),window); - } + } + } #endif \ No newline at end of file diff --git a/source/libublsettings-gtk3.h b/source/libublsettings-gtk3.h index adf0595..72625b1 100644 --- a/source/libublsettings-gtk3.h +++ b/source/libublsettings-gtk3.h @@ -429,7 +429,9 @@ GtkWidget *yon_ubl_browser_window_open(char *link, char *browser_window_name); typedef struct { GtkWidget *menu; dictionary *buttons; + GCallback show_function; + void *show_data; } rmb_menu_window; -rmb_menu_window *yon_rmb_menu_setup(GtkWidget *target_widget, const char *button_label, const char *icon_name, GCallback function, gpointer data,...); +rmb_menu_window *yon_rmb_menu_setup(GtkWidget *target_widget, int (*show_function)(void*), void *show_data, const char *button_label, const char *icon_name, GCallback function, gpointer data,...); #endif \ No newline at end of file From 3e57ae4c4daa50356ecdb3c04b7c7528e185767b Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Thu, 14 Mar 2024 14:36:18 +0600 Subject: [PATCH 3/3] Added return for sat up right mouse button menu --- source/libublsettings-gtk3.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/libublsettings-gtk3.c b/source/libublsettings-gtk3.c index d5c185e..53211d3 100644 --- a/source/libublsettings-gtk3.c +++ b/source/libublsettings-gtk3.c @@ -1003,7 +1003,7 @@ rmb_menu_window *yon_rmb_menu_setup(GtkWidget *target_widget, int (show_function gtk_menu_shell_append(GTK_MENU_SHELL(window->menu),menu_item); } g_signal_connect(G_OBJECT(target_widget),"button-press-event",G_CALLBACK(on_rmb_menu_open),window); - } - + return window; + } } #endif \ No newline at end of file