Changed logic of RMB menu function creating; Added function to set scroll widget for specific scrollbar

pull/12/head
parent 3e57ae4c4d
commit 95679e5897

@ -100,6 +100,31 @@ void yon_terminal_integrated_start(GtkWidget *terminal, char* command, void *end
vte_terminal_set_scroll_on_keystroke(VTE_TERMINAL(terminal), TRUE); vte_terminal_set_scroll_on_keystroke(VTE_TERMINAL(terminal), TRUE);
gtk_widget_show_all(terminal); gtk_widget_show_all(terminal);
} }
void yon_gtk_set_scroll(GtkWidget* self,GdkEventScroll *event, GtkAdjustment *adjustment){
if (self){};
gdouble val = gtk_adjustment_get_value(adjustment);
gdouble lower = gtk_adjustment_get_lower(adjustment);
gdouble upper = gtk_adjustment_get_upper(adjustment);
switch (event->direction){
case GDK_SCROLL_DOWN:
val+=2;
if (val>upper) val=upper;
break;
case GDK_SCROLL_UP:
val-=2;
if (val<lower) val=lower;
break;
default:
}
gtk_adjustment_set_value(adjustment,val);
}
void yon_gtk_widget_set_scroll_window_for_scroll(GtkWidget *target, GtkScrollbar *scroll){
GtkAdjustment *adjustment = gtk_range_get_adjustment(GTK_RANGE(scroll));
g_signal_connect(G_OBJECT(target),"scroll-event",G_CALLBACK(yon_gtk_set_scroll),adjustment);
}
// Window config section // Window config section
#define check_window_config_setup if(__yon_window_config_target_window) #define check_window_config_setup if(__yon_window_config_target_window)
@ -926,7 +951,7 @@ typedef int (*RmbCheck)(void*);
gboolean on_rmb_menu_open(GtkWidget *self,GdkEventButton *event, rmb_menu_window *window){ gboolean on_rmb_menu_open(GtkWidget *self,GdkEventButton *event, rmb_menu_window *window){
int (*func)(void*) = (RmbCheck)(window->show_function); int (*func)(void*) = (RmbCheck)(window->show_function);
if (func(window->show_data)){ if (!func||func(window->show_data)){
if (self){}; if (self){};
if (event->button==3){ if (event->button==3){
@ -979,6 +1004,7 @@ rmb_menu_window *yon_rmb_menu_setup(GtkWidget *target_widget, int (show_function
GCallback current_function; GCallback current_function;
gpointer *current_data; gpointer *current_data;
while ((current_label=va_arg(list,const char*))){ while ((current_label=va_arg(list,const char*))){
if (current_label){
current_icon=va_arg(list,const char*); current_icon=va_arg(list,const char*);
current_function=va_arg(list,GCallback); current_function=va_arg(list,GCallback);
current_data=va_arg(list,gpointer); current_data=va_arg(list,gpointer);
@ -998,9 +1024,12 @@ rmb_menu_window *yon_rmb_menu_setup(GtkWidget *target_widget, int (show_function
if (current_function){ if (current_function){
g_signal_connect(G_OBJECT(menu_item),"activate",current_function,current_data); g_signal_connect(G_OBJECT(menu_item),"activate",current_function,current_data);
} else {
} }
yon_dictionary_add_or_create_if_exists_with_data(window->buttons,(char*)current_label,menu_item); yon_dictionary_add_or_create_if_exists_with_data(window->buttons,(char*)current_label,menu_item);
gtk_menu_shell_append(GTK_MENU_SHELL(window->menu),menu_item); gtk_menu_shell_append(GTK_MENU_SHELL(window->menu),menu_item);
gtk_widget_show(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; return window;

@ -29,12 +29,20 @@ void yon_terminal_integrated_launch(GtkWidget *place_to_show, char* command, voi
* after terminal done its work [endwork_function] is called with [endwork_function_argument] argument. * after terminal done its work [endwork_function] is called with [endwork_function_argument] argument.
* [RU] * [RU]
* Запускает терминал с командой [command], * Запускает терминал с командой [command],
* терминал добавляется в контейнер [place_to_show] виджета,
* после завершения работы терминала вызывается функция [endwork_function] с аргументом [endwork_function_argument]. * после завершения работы терминала вызывается функция [endwork_function] с аргументом [endwork_function_argument].
*/ */
void yon_terminal_integrated_start(GtkWidget *terminal, char* command, void *endwork_function, void* endwork_function_argument); void yon_terminal_integrated_start(GtkWidget *terminal, char* command, void *endwork_function, void* endwork_function_argument);
#endif #endif
/**yon_gtk_widget_set_scroll_window_for_scroll(GtkWidget *target, GtkScrollbar *scroll)
* [EN]
*
* [RU]
* Устанавливает для виджета [target] прокрутку скролла [scroll]
*/
void yon_gtk_widget_set_scroll_window_for_scroll(GtkWidget *target, GtkScrollbar *scroll);
/**YON_TYPE /**YON_TYPE
* [EN] * [EN]
* *

Loading…
Cancel
Save