diff options
author | Christian Neumair <cneumair@gnome.org> | 2009-02-20 11:09:09 +0000 |
---|---|---|
committer | Christian Neumair <cneumair@src.gnome.org> | 2009-02-20 11:09:09 +0000 |
commit | 862d47c791237a0adc9eaca09eb9d5d427496e96 (patch) | |
tree | c65f5aa32c3cc48b72f9a56683c71364cfee86e3 | |
parent | c58a9e7f8c153ec18fe28a9ab44791db45b3eb06 (diff) | |
download | nautilus-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-- | ChangeLog | 11 | ||||
-rw-r--r-- | src/file-manager/fm-directory-view.c | 27 | ||||
-rw-r--r-- | src/file-manager/fm-directory-view.h | 2 | ||||
-rw-r--r-- | src/file-manager/fm-icon-view.c | 38 |
4 files changed, 70 insertions, 8 deletions
@@ -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; |