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
+
+
+
+ False
+ True
+ 3
+
+
@@ -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);