]> www.fi.muni.cz Git - evince.git/commitdiff
[libview] Move cursor handling stuff to a new file
authorCarlos Garcia Campos <carlosgc@gnome.org>
Sun, 3 Jan 2010 16:56:20 +0000 (17:56 +0100)
committerCarlos Garcia Campos <carlosgc@gnome.org>
Sun, 3 Jan 2010 20:14:12 +0000 (21:14 +0100)
libview/Makefile.am
libview/ev-view-cursor.c [new file with mode: 0644]
libview/ev-view-cursor.h [new file with mode: 0644]
libview/ev-view-private.h
libview/ev-view.c

index e26e82ed96612b5f7d8e4d619396572f9d939fc6..95d9f29ddfe16ff609898faba11ad67d0ccbe22a 100644 (file)
@@ -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 (file)
index 0000000..6411712
--- /dev/null
@@ -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 (file)
index 0000000..2315a7f
--- /dev/null
@@ -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__ */
index 7bd16e9151c0ea6437fee8100d4b81d3926f638c..bfc6ea2cc1e0d6422a4859563a5913a1b1f2d573 100644 (file)
@@ -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
 
@@ -101,16 +102,6 @@ typedef enum {
        SCROLL_TO_FIND_LOCATION,
 } 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,
index b84cb2c2d27a9c5507eb26454aa1c8746bbdbb3b..d7475815fd623f16dd2bff47a1cf07e390a93070 100644 (file)
@@ -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