mirror of
https://github.com/ZoiteChat/zoitechat.git
synced 2026-05-16 13:40:18 +00:00
Compare commits
2 Commits
ad67af2f8f
...
dd9c5db1aa
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
dd9c5db1aa | ||
| 984ac9763e |
@@ -782,6 +782,7 @@ load_default_config(void)
|
|||||||
prefs.hex_gui_tab_middleclose = 1;
|
prefs.hex_gui_tab_middleclose = 1;
|
||||||
prefs.hex_gui_tab_server = 1;
|
prefs.hex_gui_tab_server = 1;
|
||||||
prefs.hex_gui_tab_sort = 1;
|
prefs.hex_gui_tab_sort = 1;
|
||||||
|
prefs.hex_gui_tab_scrollchans = 1;
|
||||||
prefs.hex_gui_topicbar = 1;
|
prefs.hex_gui_topicbar = 1;
|
||||||
prefs.hex_gui_transparency = 255;
|
prefs.hex_gui_transparency = 255;
|
||||||
prefs.hex_gui_tray = 1;
|
prefs.hex_gui_tray = 1;
|
||||||
|
|||||||
@@ -306,17 +306,18 @@ tab_scroll_cb (GtkWidget *widget, GdkEventScroll *event, gpointer cv)
|
|||||||
{
|
{
|
||||||
if (prefs.hex_gui_tab_scrollchans)
|
if (prefs.hex_gui_tab_scrollchans)
|
||||||
{
|
{
|
||||||
if (event->direction == GDK_SCROLL_DOWN)
|
int direction = cv_scroll_direction (event);
|
||||||
mg_switch_page (1, 1);
|
|
||||||
else if (event->direction == GDK_SCROLL_UP)
|
if (direction != 0)
|
||||||
mg_switch_page (1, -1);
|
mg_switch_page (1, direction);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
/* mouse wheel scrolling */
|
int direction = cv_scroll_direction (event);
|
||||||
if (event->direction == GDK_SCROLL_UP)
|
|
||||||
|
if (direction < 0)
|
||||||
tab_scroll_left_up_clicked (widget, cv);
|
tab_scroll_left_up_clicked (widget, cv);
|
||||||
else if (event->direction == GDK_SCROLL_DOWN)
|
else if (direction > 0)
|
||||||
tab_scroll_right_down_clicked (widget, cv);
|
tab_scroll_right_down_clicked (widget, cv);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -356,6 +357,7 @@ cv_tabs_init (chanview *cv)
|
|||||||
gtk_scrolled_window_set_min_content_height (GTK_SCROLLED_WINDOW (viewport), 1);
|
gtk_scrolled_window_set_min_content_height (GTK_SCROLLED_WINDOW (viewport), 1);
|
||||||
gtk_widget_set_hexpand (viewport, TRUE);
|
gtk_widget_set_hexpand (viewport, TRUE);
|
||||||
gtk_widget_set_vexpand (viewport, TRUE);
|
gtk_widget_set_vexpand (viewport, TRUE);
|
||||||
|
cv_add_scroll_events (viewport);
|
||||||
g_signal_connect (G_OBJECT (viewport), "scroll-event",
|
g_signal_connect (G_OBJECT (viewport), "scroll-event",
|
||||||
G_CALLBACK (tab_scroll_cb), cv);
|
G_CALLBACK (tab_scroll_cb), cv);
|
||||||
gtk_box_pack_start (GTK_BOX (outer), viewport, 1, 1, 0);
|
gtk_box_pack_start (GTK_BOX (outer), viewport, 1, 1, 0);
|
||||||
@@ -677,9 +679,11 @@ cv_tabs_add (chanview *cv, chan *ch, char *name, GtkTreeIter *parent)
|
|||||||
gtk_widget_set_name (but, "zoitechat-tab");
|
gtk_widget_set_name (but, "zoitechat-tab");
|
||||||
gtk_widget_set_size_request (but, -1, 14);
|
gtk_widget_set_size_request (but, -1, 14);
|
||||||
gtk_widget_add_events (but, GDK_POINTER_MOTION_MASK | GDK_LEAVE_NOTIFY_MASK);
|
gtk_widget_add_events (but, GDK_POINTER_MOTION_MASK | GDK_LEAVE_NOTIFY_MASK);
|
||||||
|
cv_add_scroll_events (but);
|
||||||
hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 2);
|
hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 2);
|
||||||
label = gtk_label_new (name);
|
label = gtk_label_new (name);
|
||||||
close_button = gtk_button_new ();
|
close_button = gtk_button_new ();
|
||||||
|
cv_add_scroll_events (close_button);
|
||||||
gtk_style_context_add_class (gtk_widget_get_style_context (close_button), "flat");
|
gtk_style_context_add_class (gtk_widget_get_style_context (close_button), "flat");
|
||||||
close_icon = gtk_image_new_from_icon_name ("window-close-symbolic", GTK_ICON_SIZE_MENU);
|
close_icon = gtk_image_new_from_icon_name ("window-close-symbolic", GTK_ICON_SIZE_MENU);
|
||||||
gtk_image_set_pixel_size (GTK_IMAGE (close_icon), 8);
|
gtk_image_set_pixel_size (GTK_IMAGE (close_icon), 8);
|
||||||
@@ -695,6 +699,10 @@ cv_tabs_add (chanview *cv, chan *ch, char *name, GtkTreeIter *parent)
|
|||||||
/* used to trap right-clicks */
|
/* used to trap right-clicks */
|
||||||
g_signal_connect (G_OBJECT (but), "button-press-event",
|
g_signal_connect (G_OBJECT (but), "button-press-event",
|
||||||
G_CALLBACK (tab_click_cb), ch);
|
G_CALLBACK (tab_click_cb), ch);
|
||||||
|
g_signal_connect (G_OBJECT (but), "scroll-event",
|
||||||
|
G_CALLBACK (tab_scroll_cb), cv);
|
||||||
|
g_signal_connect (G_OBJECT (close_button), "scroll-event",
|
||||||
|
G_CALLBACK (tab_scroll_cb), cv);
|
||||||
g_signal_connect (G_OBJECT (but), "motion-notify-event",
|
g_signal_connect (G_OBJECT (but), "motion-notify-event",
|
||||||
G_CALLBACK (tab_close_motion_cb), ch);
|
G_CALLBACK (tab_close_motion_cb), ch);
|
||||||
g_signal_connect (G_OBJECT (but), "leave-notify-event",
|
g_signal_connect (G_OBJECT (but), "leave-notify-event",
|
||||||
|
|||||||
@@ -111,12 +111,12 @@ cv_tree_scroll_event_cb (GtkWidget *widget, GdkEventScroll *event, gpointer user
|
|||||||
{
|
{
|
||||||
if (prefs.hex_gui_tab_scrollchans)
|
if (prefs.hex_gui_tab_scrollchans)
|
||||||
{
|
{
|
||||||
if (event->direction == GDK_SCROLL_DOWN)
|
int direction = cv_scroll_direction (event);
|
||||||
mg_switch_page (1, 1);
|
|
||||||
else if (event->direction == GDK_SCROLL_UP)
|
|
||||||
mg_switch_page (1, -1);
|
|
||||||
|
|
||||||
return TRUE;
|
if (direction != 0)
|
||||||
|
mg_switch_page (1, direction);
|
||||||
|
|
||||||
|
return direction != 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
return FALSE;
|
return FALSE;
|
||||||
@@ -141,6 +141,7 @@ cv_tree_init (chanview *cv)
|
|||||||
win = gtk_scrolled_window_new (0, 0);
|
win = gtk_scrolled_window_new (0, 0);
|
||||||
gtk_widget_set_hexpand (win, TRUE);
|
gtk_widget_set_hexpand (win, TRUE);
|
||||||
gtk_widget_set_vexpand (win, TRUE);
|
gtk_widget_set_vexpand (win, TRUE);
|
||||||
|
cv_add_scroll_events (win);
|
||||||
|
|
||||||
/*gtk_container_set_border_width (GTK_CONTAINER (win), 1);*/
|
/*gtk_container_set_border_width (GTK_CONTAINER (win), 1);*/
|
||||||
gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (win),
|
gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (win),
|
||||||
@@ -154,6 +155,7 @@ cv_tree_init (chanview *cv)
|
|||||||
view = gtk_tree_view_new_with_model (GTK_TREE_MODEL (cv->store));
|
view = gtk_tree_view_new_with_model (GTK_TREE_MODEL (cv->store));
|
||||||
gtk_widget_set_hexpand (view, TRUE);
|
gtk_widget_set_hexpand (view, TRUE);
|
||||||
gtk_widget_set_vexpand (view, TRUE);
|
gtk_widget_set_vexpand (view, TRUE);
|
||||||
|
cv_add_scroll_events (view);
|
||||||
gtk_widget_set_name (view, "zoitechat-tree");
|
gtk_widget_set_name (view, "zoitechat-tree");
|
||||||
{
|
{
|
||||||
ThemeWidgetStyleValues style_values;
|
ThemeWidgetStyleValues style_values;
|
||||||
|
|||||||
@@ -95,6 +95,37 @@ static chan *cv_find_chan_by_number (chanview *cv, int num);
|
|||||||
static int cv_find_number_of_chan (chanview *cv, chan *find_ch);
|
static int cv_find_number_of_chan (chanview *cv, chan *find_ch);
|
||||||
static void cv_find_neighbors_for_removal (chanview *cv, chan *find_ch, chan **left_ch, chan **first_ch);
|
static void cv_find_neighbors_for_removal (chanview *cv, chan *find_ch, chan **left_ch, chan **first_ch);
|
||||||
|
|
||||||
|
static void
|
||||||
|
cv_add_scroll_events (GtkWidget *widget)
|
||||||
|
{
|
||||||
|
gtk_widget_add_events (widget, GDK_SCROLL_MASK | GDK_SMOOTH_SCROLL_MASK);
|
||||||
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
cv_scroll_direction (GdkEventScroll *event)
|
||||||
|
{
|
||||||
|
gdouble dx;
|
||||||
|
gdouble dy;
|
||||||
|
|
||||||
|
if (event->direction == GDK_SCROLL_SMOOTH && gdk_event_get_scroll_deltas ((GdkEvent *) event, &dx, &dy))
|
||||||
|
{
|
||||||
|
if (dy > 0)
|
||||||
|
return 1;
|
||||||
|
if (dy < 0)
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (event->direction)
|
||||||
|
{
|
||||||
|
case GDK_SCROLL_DOWN:
|
||||||
|
return 1;
|
||||||
|
case GDK_SCROLL_UP:
|
||||||
|
return -1;
|
||||||
|
default:
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* ======= TABS ======= */
|
/* ======= TABS ======= */
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user