diff --git a/res/ui/ui.glade b/res/ui/ui.glade index de78779..2fb0dff 100644 --- a/res/ui/ui.glade +++ b/res/ui/ui.glade @@ -1672,6 +1672,22 @@ 2 + + + Invert Scroll Direction + True + True + False + 0 + True + + + + False + True + 3 + + True @@ -1728,7 +1744,7 @@ False True - 3 + 4 @@ -1743,7 +1759,7 @@ False True - 4 + 5 diff --git a/src/ui/input.c b/src/ui/input.c index 9edafa1..56fa601 100644 --- a/src/ui/input.c +++ b/src/ui/input.c @@ -18,6 +18,7 @@ #include "gfx.h" #include "satellite.h" #include "search.h" +#include "setting.h" #include "type.h" #include "ui.h" @@ -134,7 +135,7 @@ gboolean on_glarea_scroll_event(GtkWidget *widget, GdkEvent *event, gpointer use (void)user_data; GdkEventScroll *scroll = &event->scroll; - camera_zoom(&e_camera, scroll->delta_y * 0.2); + camera_zoom(&e_camera, scroll->delta_y * 0.2 * (gs_invert_scroll ? 1 : -1)); return TRUE; } diff --git a/src/ui/setting.c b/src/ui/setting.c index 2ebc1ae..a25f1a6 100644 --- a/src/ui/setting.c +++ b/src/ui/setting.c @@ -25,7 +25,7 @@ struct Setting { gboolean *val; }; -struct Setting settings[3] = { +struct Setting settings[] = { { .id = "lighting", .val = &gs_lighting, @@ -38,11 +38,16 @@ struct Setting settings[3] = { .id = "local_time", .val = &gs_gmt, }, + { + .id = "invert_scroll", + .val = &gs_invert_scroll, + }, }; gboolean gs_gmt = FALSE; gboolean gs_clouds = TRUE; gboolean gs_lighting = TRUE; +gboolean gs_invert_scroll = FALSE; enum ReferenceFrame gs_reference_frame = REFERENCE_FRAME_FIXED; static GtkWindow *window_settings; @@ -75,9 +80,9 @@ void on_setting_toggled(GtkToggleButton *togglebutton, gpointer user_data) { (void)user_data; unsigned i; - for (i = 0; i < 3 && settings[i].button != togglebutton; i++) + for (i = 0; i < 4 && settings[i].button != togglebutton; i++) ; - *settings[i].val = !*settings[i].val; + *settings[i].val = gtk_toggle_button_get_active(togglebutton); } void on_fetch_data_clicked(GtkButton *button, gpointer user_data) @@ -116,6 +121,6 @@ void setting_init(GtkBuilder *builder) gtk_label_set_text(about, ABOUT_STRING); unsigned i; - for (i = 0; i < 3; i++) + for (i = 0; i < 4; i++) settings[i].button = GTK_TOGGLE_BUTTON(gtk_builder_get_object(builder, settings[i].id)); } diff --git a/src/ui/setting.h b/src/ui/setting.h index 4aba140..2b0523e 100644 --- a/src/ui/setting.h +++ b/src/ui/setting.h @@ -26,6 +26,7 @@ enum ReferenceFrame { extern gboolean gs_gmt; extern gboolean gs_clouds; extern gboolean gs_lighting; +extern gboolean gs_invert_scroll; extern enum ReferenceFrame gs_reference_frame; void setting_init(GtkBuilder *builder);