static int key_action_page_switch (GtkWidget * wid, GdkEventKey * evt, char *d1, char *d2, struct session *sess) { int len, i, num; if (!d1) return 1; len = strlen (d1); if (!len) return 1; for (i = 0; i < len; i++) { if (d1[i] < '0' || d1[i] > '9') { if (i == 0 && (d1[i] == '+' || d1[i] == '-')) continue; else return 1; } } num = atoi (d1); if (!d2) num--; if (!d2 || d2[0] == 0) mg_switch_page (FALSE, num); else mg_switch_page (TRUE, num); return 0; }
static int key_action_page_switch (GtkWidget * wid, GdkEventKey * evt, char *d1, char *d2, struct session *sess) { session *newsess; int len, i, num; if (!d1) return 1; len = strlen (d1); if (!len) return 1; if (strcasecmp(d1, "auto") == 0) { /* Auto switch makes no sense in detached sessions */ if (!sess->gui->is_tab) return 1; /* Obtain a session with recent activity */ newsess = lastact_getfirst(session_check_is_tab); if (newsess) { /* * Only sessions in the current window should be considered (i.e. * we don't want to move the focus on a different window). This * call could, in theory, do this, but we checked before that * newsess->gui->is_tab and sess->gui->is_tab. */ mg_bring_tofront_sess(newsess); return 0; } else return 1; } for (i = 0; i < len; i++) { if (d1[i] < '0' || d1[i] > '9') { if (i == 0 && (d1[i] == '+' || d1[i] == '-')) continue; else return 1; } } num = atoi (d1); if (!d2) num--; if (!d2 || d2[0] == 0) mg_switch_page (FALSE, num); else mg_switch_page (TRUE, num); return 0; }
static void cv_tree_scroll_event_cb (GtkWidget *widget, GdkEventScroll *event) { if (prefs.pchat_gui_tab_scrollchans) { if (event->direction == GDK_SCROLL_DOWN) mg_switch_page (1, 1); else if (event->direction == GDK_SCROLL_UP) mg_switch_page (1, -1); } }
static gboolean tab_scroll_cb (GtkWidget *widget, GdkEventScroll *event, gpointer cv) { if (prefs.hex_gui_tab_scrollchans) { if (event->direction == GDK_SCROLL_DOWN) mg_switch_page (1, 1); else if (event->direction == GDK_SCROLL_UP) mg_switch_page (1, -1); } else { /* mouse wheel scrolling */ if (event->direction == GDK_SCROLL_UP) tab_scroll_left_up_clicked (widget, cv); else if (event->direction == GDK_SCROLL_DOWN) tab_scroll_right_down_clicked (widget, cv); } return FALSE; }