summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Neumair <cneumair@gnome.org>2009-02-20 11:09:09 +0000
committerChristian Neumair <cneumair@src.gnome.org>2009-02-20 11:09:09 +0000
commit862d47c791237a0adc9eaca09eb9d5d427496e96 (patch)
treec65f5aa32c3cc48b72f9a56683c71364cfee86e3
parentc58a9e7f8c153ec18fe28a9ab44791db45b3eb06 (diff)
downloadnautilus-862d47c791237a0adc9eaca09eb9d5d427496e96.tar.gz
Treat vertical scroll events as horizontal ones if compact view is
2009-02-20 Christian Neumair <cneumair@gnome.org> * src/file-manager/fm-directory-view.c (fm_directory_view_handle_scroll_event), (fm_directory_view_scroll_event): * src/file-manager/fm-directory-view.h: * src/file-manager/fm-icon-view.c (fm_icon_view_scroll_event), (fm_icon_view_class_init): Treat vertical scroll events as horizontal ones if compact view is enabled, and if they do not bump the zoom level. Fixes #571770. svn path=/branches/gnome-2-24/; revision=14980
-rw-r--r--ChangeLog11
-rw-r--r--src/file-manager/fm-directory-view.c27
-rw-r--r--src/file-manager/fm-directory-view.h2
-rw-r--r--src/file-manager/fm-icon-view.c38
4 files changed, 70 insertions, 8 deletions
diff --git a/ChangeLog b/ChangeLog
index 20bdce9d3..9ece99e88 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,14 @@
+2009-02-20 Christian Neumair <cneumair@gnome.org>
+
+ * src/file-manager/fm-directory-view.c
+ (fm_directory_view_handle_scroll_event),
+ (fm_directory_view_scroll_event):
+ * src/file-manager/fm-directory-view.h:
+ * src/file-manager/fm-icon-view.c (fm_icon_view_scroll_event),
+ (fm_icon_view_class_init):
+ Treat vertical scroll events as horizontal ones if compact view is
+ enabled, and if they do not bump the zoom level. Fixes #571770.
+
2009-01-13 Alexander Larsson <alexl@redhat.com>
Merged from trunk:
diff --git a/src/file-manager/fm-directory-view.c b/src/file-manager/fm-directory-view.c
index 844eb2250..06087e647 100644
--- a/src/file-manager/fm-directory-view.c
+++ b/src/file-manager/fm-directory-view.c
@@ -9562,15 +9562,11 @@ fm_directory_view_set_property (GObject *object,
}
}
-/* handle Shift+Scroll, which will cause a zoom-in/out */
-static gboolean
-fm_directory_view_scroll_event (GtkWidget *widget,
- GdkEventScroll *event)
-{
- FMDirectoryView *directory_view;
-
- directory_view = FM_DIRECTORY_VIEW (widget);
+gboolean
+fm_directory_view_handle_scroll_event (FMDirectoryView *directory_view,
+ GdkEventScroll *event)
+{
if (event->state & GDK_CONTROL_MASK) {
switch (event->direction) {
case GDK_SCROLL_UP:
@@ -9592,6 +9588,21 @@ fm_directory_view_scroll_event (GtkWidget *widget,
}
}
+ return FALSE;
+}
+
+/* handle Shift+Scroll, which will cause a zoom-in/out */
+static gboolean
+fm_directory_view_scroll_event (GtkWidget *widget,
+ GdkEventScroll *event)
+{
+ FMDirectoryView *directory_view;
+
+ directory_view = FM_DIRECTORY_VIEW (widget);
+ if (fm_directory_view_handle_scroll_event (directory_view, event)) {
+ return TRUE;
+ }
+
return GTK_WIDGET_CLASS (parent_class)->scroll_event (widget, event);
}
diff --git a/src/file-manager/fm-directory-view.h b/src/file-manager/fm-directory-view.h
index abefea876..ed8366ada 100644
--- a/src/file-manager/fm-directory-view.h
+++ b/src/file-manager/fm-directory-view.h
@@ -437,6 +437,8 @@ void fm_directory_view_new_file (FMDirect
NautilusFile *source);
void fm_directory_view_ignore_hidden_file_preferences (FMDirectoryView *view);
void fm_directory_view_init_view_iface (NautilusViewIface *iface);
+gboolean fm_directory_view_handle_scroll_event (FMDirectoryView *view,
+ GdkEventScroll *event);
void fm_directory_view_handle_netscape_url_drop (FMDirectoryView *view,
const char *encoded_url,
const char *target_uri,
diff --git a/src/file-manager/fm-icon-view.c b/src/file-manager/fm-icon-view.c
index 8065feeb7..944dfef3f 100644
--- a/src/file-manager/fm-icon-view.c
+++ b/src/file-manager/fm-icon-view.c
@@ -2176,6 +2176,43 @@ fm_icon_view_screen_changed (GtkWidget *widget,
}
}
+static gboolean
+fm_icon_view_scroll_event (GtkWidget *widget,
+ GdkEventScroll *scroll_event)
+{
+ FMIconView *icon_view;
+ GdkEvent *event_copy;
+ GdkEventScroll *scroll_event_copy;
+ gboolean ret;
+
+ icon_view = FM_ICON_VIEW (widget);
+
+ if (icon_view->details->compact &&
+ (scroll_event->direction == GDK_SCROLL_UP ||
+ scroll_event->direction == GDK_SCROLL_DOWN)) {
+ ret = fm_directory_view_handle_scroll_event (FM_DIRECTORY_VIEW (icon_view), scroll_event);
+ if (!ret) {
+ /* in column-wise layout, re-emit vertical mouse scroll events as horizontal ones,
+ * if they don't bump zoom */
+ event_copy = gdk_event_copy ((GdkEvent *) scroll_event);
+
+ scroll_event_copy = (GdkEventScroll *) event_copy;
+ if (scroll_event_copy->direction == GDK_SCROLL_UP) {
+ scroll_event_copy->direction = GDK_SCROLL_LEFT;
+ } else {
+ scroll_event_copy->direction = GDK_SCROLL_RIGHT;
+ }
+
+ ret = gtk_widget_event (widget, event_copy);
+ gdk_event_free (event_copy);
+ }
+
+ return ret;
+ }
+
+ return GTK_WIDGET_CLASS (fm_icon_view_parent_class)->scroll_event (widget, scroll_event);
+}
+
static void
selection_changed_callback (NautilusIconContainer *container,
FMIconView *icon_view)
@@ -2791,6 +2828,7 @@ fm_icon_view_class_init (FMIconViewClass *klass)
GTK_OBJECT_CLASS (klass)->destroy = fm_icon_view_destroy;
GTK_WIDGET_CLASS (klass)->screen_changed = fm_icon_view_screen_changed;
+ GTK_WIDGET_CLASS (klass)->scroll_event = fm_icon_view_scroll_event;
fm_directory_view_class->add_file = fm_icon_view_add_file;
fm_directory_view_class->flush_added_files = fm_icon_view_flush_added_files;