Merge pull request 'master' (#11) from YanTheKaller/libublsettings-gtk3:master into master

Reviewed-on: #11
master v1.10
Dmitry Razumov 2 years ago
commit 4d0ea80005

@ -892,7 +892,7 @@ void yon_ubl_setup_sockets(GtkWidget *main_window, GtkWidget *left_window, GtkWi
// webkit section // webkit section
#ifdef WEBKIT_INCLUDE #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 *browser=gtk_window_new(GTK_WINDOW_TOPLEVEL);
GtkWidget *web_place=gtk_box_new(GTK_ORIENTATION_VERTICAL,0); GtkWidget *web_place=gtk_box_new(GTK_ORIENTATION_VERTICAL,0);
GtkWidget *header=gtk_header_bar_new(); GtkWidget *header=gtk_header_bar_new();
@ -907,28 +907,35 @@ void yon_ubl_browser_window_open(char *link, char *browser_window_name){
webkit_web_view_load_uri(WEBKIT_WEB_VIEW(WebView),link); webkit_web_view_load_uri(WEBKIT_WEB_VIEW(WebView),link);
gtk_box_pack_start(GTK_BOX(web_place),WebView,1,1,0); gtk_box_pack_start(GTK_BOX(web_place),WebView,1,1,0);
gtk_widget_show_all(browser); gtk_widget_show_all(browser);
return browser;
} }
#else #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"); char *user=getenv("SUDO_USER");
if (!user) if (!user)
user=getlogin(); user=getlogin();
char *command=yon_char_unite("sudo -u ",user," xdg-open ", link,NULL); char *command=yon_char_unite("sudo -u ",user," xdg-open ", link,NULL);
yon_launch(command); yon_launch(command);
return NULL;
} }
#endif #endif
// rmb menu section // rmb menu section
gboolean on_rmb_menu_open(GtkWidget *self,GdkEventButton *event, rmb_menu_window *window){ typedef int (*RmbCheck)(void*);
if (self){};
if (event->button==3){
gtk_widget_show_all(window->menu); gboolean on_rmb_menu_open(GtkWidget *self,GdkEventButton *event, rmb_menu_window *window){
gtk_menu_popup_at_pointer(GTK_MENU(window->menu),NULL); 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;
} }
return 0;
} }
rmb_menu_window *yon_rmb_menu_new(){ rmb_menu_window *yon_rmb_menu_new(){
@ -940,9 +947,11 @@ rmb_menu_window *yon_rmb_menu_new(){
return window; 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){ if (target_widget){
rmb_menu_window *window = yon_rmb_menu_new(); 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 *menu_item = gtk_menu_item_new();
GtkWidget *content_box = gtk_box_new(GTK_ORIENTATION_HORIZONTAL,5); GtkWidget *content_box = gtk_box_new(GTK_ORIENTATION_HORIZONTAL,5);
@ -994,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); 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); g_signal_connect(G_OBJECT(target_widget),"button-press-event",G_CALLBACK(on_rmb_menu_open),window);
return window;
} }
} }
#endif #endif

@ -411,7 +411,7 @@ void yon_ubl_setup_sockets(GtkWidget *main_window, GtkWidget *left_window, GtkWi
* [RU] * [RU]
* Открывает встроенный браузер с именем [browser_window_name] и показываемой страницей по ссылке [link] * Открывает встроенный браузер с именем [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 #else
/**yon_ubl_browser_window_open(char *link, char *browser_window_name) /**yon_ubl_browser_window_open(char *link, char *browser_window_name)
@ -422,14 +422,16 @@ void yon_ubl_browser_window_open(char *link, char *browser_window_name);
* Открывает браузер со страницей по ссылке [link] * Открывает браузер со страницей по ссылке [link]
* [browser_window_name] не используется. Нужна для совместимости с webkit версией этой функции. * [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
#endif #endif
// rmb menu section // rmb menu section
typedef struct { typedef struct {
GtkWidget *menu; GtkWidget *menu;
dictionary *buttons; dictionary *buttons;
GCallback show_function;
void *show_data;
} rmb_menu_window; } 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 #endif
Loading…
Cancel
Save