[evince] [libview] Move cursor handling stuff to a new file



commit 27dd64c8e65aeaa40ab6ac3472be5df31feacaf3
Author: Carlos Garcia Campos <carlosgc gnome org>
Date:   Sun Jan 3 17:56:20 2010 +0100

    [libview] Move cursor handling stuff to a new file

 libview/Makefile.am       |    2 +
 libview/ev-view-cursor.c  |   64 +++++++++++++++++++++++++++++++++++++++++++++
 libview/ev-view-cursor.h  |   46 ++++++++++++++++++++++++++++++++
 libview/ev-view-private.h |   11 +-------
 libview/ev-view.c         |   50 +++-------------------------------
 5 files changed, 118 insertions(+), 55 deletions(-)
---
diff --git a/libview/Makefile.am b/libview/Makefile.am
index e26e82e..95d9f29 100644
--- a/libview/Makefile.am
+++ b/libview/Makefile.am
@@ -7,6 +7,7 @@ NOINST_H_FILES =			\
 	ev-timeline.h			\
 	ev-transition-animation.h	\
 	ev-view-accessible.h		\
+	ev-view-cursor.h		\
 	ev-view-marshal.h		\
 	ev-view-private.h
 
@@ -36,6 +37,7 @@ libevview_la_SOURCES = 			\
 	ev-view.c			\
 	ev-view-accessible.c		\
 	ev-view-marshal.c		\
+	ev-view-cursor.c		\
 	ev-view-type-builtins.c		\
 	$(NOINST_H_FILES)		\
 	$(INST_H_FILES)
diff --git a/libview/ev-view-cursor.c b/libview/ev-view-cursor.c
new file mode 100644
index 0000000..6411712
--- /dev/null
+++ b/libview/ev-view-cursor.c
@@ -0,0 +1,64 @@
+/* this file is part of evince, a gnome document viewer
+ *
+ *  Copyright (C) 2004 Red Hat, Inc
+ *
+ * Evince is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * Evince is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#include "ev-view-cursor.h"
+
+static GdkCursor *
+ev_view_create_invisible_cursor (void)
+{
+	GdkBitmap *empty;
+	GdkColor black = { 0, 0, 0, 0 };
+	static char bits[] = { 0x00 };
+
+	empty = gdk_bitmap_create_from_data (NULL, bits, 1, 1);
+
+	return gdk_cursor_new_from_pixmap (empty, empty, &black, &black, 0, 0);
+}
+
+GdkCursor *
+ev_view_cursor_new (GdkDisplay  *display,
+		    EvViewCursor new_cursor)
+{
+	GdkCursor *cursor = NULL;
+
+	switch (new_cursor) {
+	case EV_VIEW_CURSOR_NORMAL:
+		break;
+	case EV_VIEW_CURSOR_IBEAM:
+		cursor = gdk_cursor_new_for_display (display, GDK_XTERM);
+		break;
+	case EV_VIEW_CURSOR_LINK:
+		cursor = gdk_cursor_new_for_display (display, GDK_HAND2);
+		break;
+	case EV_VIEW_CURSOR_WAIT:
+		cursor = gdk_cursor_new_for_display (display, GDK_WATCH);
+		break;
+	case EV_VIEW_CURSOR_HIDDEN:
+		cursor = ev_view_create_invisible_cursor ();
+		break;
+	case EV_VIEW_CURSOR_DRAG:
+		cursor = gdk_cursor_new_for_display (display, GDK_FLEUR);
+		break;
+	case EV_VIEW_CURSOR_AUTOSCROLL:
+		cursor = gdk_cursor_new_for_display (display, GDK_DOUBLE_ARROW);
+		break;
+	}
+
+	return cursor;
+}
diff --git a/libview/ev-view-cursor.h b/libview/ev-view-cursor.h
new file mode 100644
index 0000000..2315a7f
--- /dev/null
+++ b/libview/ev-view-cursor.h
@@ -0,0 +1,46 @@
+/* this file is part of evince, a gnome document viewer
+ *
+ *  Copyright (C) 2004 Red Hat, Inc
+ *
+ * Evince is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * Evince is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#if !defined (__EV_EVINCE_VIEW_H_INSIDE__) && !defined (EVINCE_COMPILATION)
+#error "Only <evince-view.h> can be included directly."
+#endif
+
+#ifndef __EV_VIEW_CURSOR_H__
+#define __EV_VIEW_CURSOR_H__
+
+#include <gtk/gtk.h>
+
+G_BEGIN_DECLS
+
+typedef enum {
+	EV_VIEW_CURSOR_NORMAL,
+	EV_VIEW_CURSOR_IBEAM,
+	EV_VIEW_CURSOR_LINK,
+	EV_VIEW_CURSOR_WAIT,
+	EV_VIEW_CURSOR_HIDDEN,
+	EV_VIEW_CURSOR_DRAG,
+	EV_VIEW_CURSOR_AUTOSCROLL
+} EvViewCursor;
+
+GdkCursor *ev_view_cursor_new (GdkDisplay  *display,
+			       EvViewCursor cursor);
+
+G_END_DECLS
+
+#endif /* __EV_VIEW_CURSOR_H__ */
diff --git a/libview/ev-view-private.h b/libview/ev-view-private.h
index 7bd16e9..bfc6ea2 100644
--- a/libview/ev-view-private.h
+++ b/libview/ev-view-private.h
@@ -34,6 +34,7 @@
 #include "ev-form-field.h"
 #include "ev-selection.h"
 #include "ev-transition-animation.h"
+#include "ev-view-cursor.h"
 
 #define DRAG_HISTORY 10
 
@@ -102,16 +103,6 @@ typedef enum {
 } PendingScroll;
 
 typedef enum {
-	EV_VIEW_CURSOR_NORMAL,
-	EV_VIEW_CURSOR_IBEAM,
-	EV_VIEW_CURSOR_LINK,
-	EV_VIEW_CURSOR_WAIT,
-	EV_VIEW_CURSOR_HIDDEN,
-	EV_VIEW_CURSOR_DRAG,
-	EV_VIEW_CURSOR_AUTOSCROLL,
-} EvViewCursor;
-
-typedef enum {
 	EV_PRESENTATION_NORMAL,
 	EV_PRESENTATION_BLACK,
 	EV_PRESENTATION_WHITE,
diff --git a/libview/ev-view.c b/libview/ev-view.c
index b84cb2c..d747581 100644
--- a/libview/ev-view.c
+++ b/libview/ev-view.c
@@ -264,7 +264,6 @@ static void	ev_view_zoom_for_size_single_page 	       (EvView *view,
 				    			        int     width,
 					    			int     height);
 /*** Cursors ***/
-static GdkCursor* ev_view_create_invisible_cursor            (void);
 static void       ev_view_set_cursor                         (EvView             *view,
 							      EvViewCursor        new_cursor);
 static void       ev_view_handle_cursor_over_xy              (EvView *view,
@@ -6372,63 +6371,24 @@ ev_view_copy_link_address (EvView       *view,
 }
 
 /*** Cursor operations ***/
-
-static GdkCursor *
-ev_view_create_invisible_cursor(void)
-{
-       GdkBitmap *empty;
-       GdkColor black = { 0, 0, 0, 0 };
-       static char bits[] = { 0x00 };
-
-       empty = gdk_bitmap_create_from_data (NULL, bits, 1, 1);
-
-       return gdk_cursor_new_from_pixmap (empty, empty, &black, &black, 0, 0);
-}
-
 static void
 ev_view_set_cursor (EvView *view, EvViewCursor new_cursor)
 {
 	GdkCursor *cursor = NULL;
-	GdkDisplay *display;
 	GtkWidget *widget;
 
 	if (view->cursor == new_cursor) {
 		return;
 	}
 
-	widget = gtk_widget_get_toplevel (GTK_WIDGET (view));
-	display = gtk_widget_get_display (widget);
 	view->cursor = new_cursor;
 
-	switch (new_cursor) {
-		case EV_VIEW_CURSOR_NORMAL:
-			gdk_window_set_cursor (view->layout.bin_window, NULL);
-			break;
-		case EV_VIEW_CURSOR_IBEAM:
-			cursor = gdk_cursor_new_for_display (display, GDK_XTERM);
-			break;
-		case EV_VIEW_CURSOR_LINK:
-			cursor = gdk_cursor_new_for_display (display, GDK_HAND2);
-			break;
-		case EV_VIEW_CURSOR_WAIT:
-			cursor = gdk_cursor_new_for_display (display, GDK_WATCH);
-			break;
-                case EV_VIEW_CURSOR_HIDDEN:
-                        cursor = ev_view_create_invisible_cursor ();
-                        break;
-		case EV_VIEW_CURSOR_DRAG:
-			cursor = gdk_cursor_new_for_display (display, GDK_FLEUR);
-			break;
-		case EV_VIEW_CURSOR_AUTOSCROLL:
-			cursor = gdk_cursor_new_for_display (display, GDK_DOUBLE_ARROW);
-			break;
-	}
-
-	if (cursor) {
-		gdk_window_set_cursor (view->layout.bin_window, cursor);
+	widget = gtk_widget_get_toplevel (GTK_WIDGET (view));
+	cursor = ev_view_cursor_new (gtk_widget_get_display (widget), new_cursor);
+	gdk_window_set_cursor (view->layout.bin_window, cursor);
+	gdk_flush ();
+	if (cursor)
 		gdk_cursor_unref (cursor);
-		gdk_flush();
-	}
 }
 
 void



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