nautilus r14980 - in branches/gnome-2-24: . src/file-manager



Author: cneumair
Date: Fri Feb 20 11:09:09 2009
New Revision: 14980
URL: http://svn.gnome.org/viewvc/nautilus?rev=14980&view=rev

Log:
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.


Modified:
   branches/gnome-2-24/ChangeLog
   branches/gnome-2-24/src/file-manager/fm-directory-view.c
   branches/gnome-2-24/src/file-manager/fm-directory-view.h
   branches/gnome-2-24/src/file-manager/fm-icon-view.c

Modified: branches/gnome-2-24/src/file-manager/fm-directory-view.c
==============================================================================
--- branches/gnome-2-24/src/file-manager/fm-directory-view.c	(original)
+++ branches/gnome-2-24/src/file-manager/fm-directory-view.c	Fri Feb 20 11:09:09 2009
@@ -9562,15 +9562,11 @@
     }
 }
 
-/* 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 @@
 		}
 	}
 
+	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);
 }
 

Modified: branches/gnome-2-24/src/file-manager/fm-directory-view.h
==============================================================================
--- branches/gnome-2-24/src/file-manager/fm-directory-view.h	(original)
+++ branches/gnome-2-24/src/file-manager/fm-directory-view.h	Fri Feb 20 11:09:09 2009
@@ -437,6 +437,8 @@
 									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,

Modified: branches/gnome-2-24/src/file-manager/fm-icon-view.c
==============================================================================
--- branches/gnome-2-24/src/file-manager/fm-icon-view.c	(original)
+++ branches/gnome-2-24/src/file-manager/fm-icon-view.c	Fri Feb 20 11:09:09 2009
@@ -2176,6 +2176,43 @@
 	}
 }
 
+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 @@
 	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;



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]