From 510e8547bba307dc1e7dd72bd1484faa27db1a4f Mon Sep 17 00:00:00 2001 From: Federico Mena Quintero Date: Tue, 2 Nov 1999 21:48:52 +0000 Subject: Renamed the move modes to MODE_MOVE and MOVE_MODE_DRAGGING. 1999-11-02 Federico Mena Quintero * src/print-preview.c (PreviewMode): Renamed the move modes to MODE_MOVE and MOVE_MODE_DRAGGING. (preview_canvas_button_press): Split the event handling code between several functions. Rationale: we will want drag-zoom and we need different modes for this, and the code in a single function would get unwieldy. In addition, grab the pointer and use GDK_POINTER_MOTION_HINT_MASK for better behavior. (PrintPreview): Added fields for drag anchor and drag offset. (drag_to): New function to drag/scroll. (create_preview_canvas): Connect to the different event handlers. (do_zoom): We do not need to re-render the page; just set the zoom factor. Also, use exponential zooming for better behavior. * src/cursors.h: Moved the cursor #defines to an enum. This way we can check for a max value in cursor_get(). Moved the cursor array to the .c file and made it private. * src/cursors.c (cursors_init): Added sanity check so that all cursors are defined. (cursor_get): New function to get a cursor based on its type. (cursors): Added hand cursors. * src/pixmaps/cursor_hand_{open,closed}.xpm: Added hand cursors. svn path=/trunk/; revision=1365 --- widgets/misc/e-cursors.c | 47 ++++++++++++++--------------- widgets/misc/e-cursors.h | 47 ++++++++++++++--------------- widgets/misc/pixmaps/cursor_hand_closed.xpm | 38 +++++++++++++++++++++++ widgets/misc/pixmaps/cursor_hand_open.xpm | 38 +++++++++++++++++++++++ 4 files changed, 120 insertions(+), 50 deletions(-) create mode 100644 widgets/misc/pixmaps/cursor_hand_closed.xpm create mode 100644 widgets/misc/pixmaps/cursor_hand_open.xpm diff --git a/widgets/misc/e-cursors.c b/widgets/misc/e-cursors.c index b94c54bc73..597c3c1787 100644 --- a/widgets/misc/e-cursors.c +++ b/widgets/misc/e-cursors.c @@ -1,41 +1,38 @@ #ifndef GNUMERIC_CURSORS_H #define GNUMERIC_CURSORS_H -typedef struct { - GdkCursor *cursor; - int hot_x, hot_y; - char **xpm; -} GnumericCursorDef; - -#define GNUMERIC_CURSOR_FAT_CROSS 0 -#define GNUMERIC_CURSOR_THIN_CROSS 1 -#define GNUMERIC_CURSOR_ARROW 2 -#define GNUMERIC_CURSOR_MOVE 3 -#define GNUMERIC_CURSOR_ZOOM_IN 4 -#define GNUMERIC_CURSOR_ZOOM_OUT 5 -#define GNUMERIC_CURSOR_SIZE_X 6 -#define GNUMERIC_CURSOR_SIZE_Y 7 -#define GNUMERIC_CURSOR_SIZE_TL 8 -#define GNUMERIC_CURSOR_SIZE_TR 9 -#define GNUMERIC_CURSOR_PRESS 10 - -extern GnumericCursorDef gnumeric_cursors []; +typedef enum { + GNUMERIC_CURSOR_FAT_CROSS, + GNUMERIC_CURSOR_THIN_CROSS, + GNUMERIC_CURSOR_ARROW, + GNUMERIC_CURSOR_MOVE, + GNUMERIC_CURSOR_ZOOM_IN, + GNUMERIC_CURSOR_ZOOM_OUT, + GNUMERIC_CURSOR_SIZE_X, + GNUMERIC_CURSOR_SIZE_Y, + GNUMERIC_CURSOR_SIZE_TL, + GNUMERIC_CURSOR_SIZE_TR, + GNUMERIC_CURSOR_PRESS, + GNUMERIC_CURSOR_HAND_OPEN, + GNUMERIC_CURSOR_HAND_CLOSED, + GNUMERIC_CURSOR_NUM_CURSORS +} CursorType; void cursors_init (void); void cursors_shutdown (void); -#define cursor_set(win,c) \ +#define cursor_set(win, c) \ G_STMT_START { \ if (win) \ - gdk_window_set_cursor (win, gnumeric_cursors [c].cursor); \ + gdk_window_set_cursor (win, cursor_get (c)); \ } G_STMT_END -#define cursor_set_widget(w,c) \ +#define cursor_set_widget(w, c) \ G_STMT_START { \ if (GTK_WIDGET (w)->window) \ - gdk_window_set_cursor (GTK_WIDGET (w)->window, gnumeric_cursors [c].cursor); \ + gdk_window_set_cursor (GTK_WIDGET (w)->window, cursor_get (c)); \ } G_STMT_END - -#endif /* GNUMERIC_CURSORS_H */ +GdkCursor *cursor_get (CursorType type); +#endif /* GNUMERIC_CURSORS_H */ diff --git a/widgets/misc/e-cursors.h b/widgets/misc/e-cursors.h index b94c54bc73..597c3c1787 100644 --- a/widgets/misc/e-cursors.h +++ b/widgets/misc/e-cursors.h @@ -1,41 +1,38 @@ #ifndef GNUMERIC_CURSORS_H #define GNUMERIC_CURSORS_H -typedef struct { - GdkCursor *cursor; - int hot_x, hot_y; - char **xpm; -} GnumericCursorDef; - -#define GNUMERIC_CURSOR_FAT_CROSS 0 -#define GNUMERIC_CURSOR_THIN_CROSS 1 -#define GNUMERIC_CURSOR_ARROW 2 -#define GNUMERIC_CURSOR_MOVE 3 -#define GNUMERIC_CURSOR_ZOOM_IN 4 -#define GNUMERIC_CURSOR_ZOOM_OUT 5 -#define GNUMERIC_CURSOR_SIZE_X 6 -#define GNUMERIC_CURSOR_SIZE_Y 7 -#define GNUMERIC_CURSOR_SIZE_TL 8 -#define GNUMERIC_CURSOR_SIZE_TR 9 -#define GNUMERIC_CURSOR_PRESS 10 - -extern GnumericCursorDef gnumeric_cursors []; +typedef enum { + GNUMERIC_CURSOR_FAT_CROSS, + GNUMERIC_CURSOR_THIN_CROSS, + GNUMERIC_CURSOR_ARROW, + GNUMERIC_CURSOR_MOVE, + GNUMERIC_CURSOR_ZOOM_IN, + GNUMERIC_CURSOR_ZOOM_OUT, + GNUMERIC_CURSOR_SIZE_X, + GNUMERIC_CURSOR_SIZE_Y, + GNUMERIC_CURSOR_SIZE_TL, + GNUMERIC_CURSOR_SIZE_TR, + GNUMERIC_CURSOR_PRESS, + GNUMERIC_CURSOR_HAND_OPEN, + GNUMERIC_CURSOR_HAND_CLOSED, + GNUMERIC_CURSOR_NUM_CURSORS +} CursorType; void cursors_init (void); void cursors_shutdown (void); -#define cursor_set(win,c) \ +#define cursor_set(win, c) \ G_STMT_START { \ if (win) \ - gdk_window_set_cursor (win, gnumeric_cursors [c].cursor); \ + gdk_window_set_cursor (win, cursor_get (c)); \ } G_STMT_END -#define cursor_set_widget(w,c) \ +#define cursor_set_widget(w, c) \ G_STMT_START { \ if (GTK_WIDGET (w)->window) \ - gdk_window_set_cursor (GTK_WIDGET (w)->window, gnumeric_cursors [c].cursor); \ + gdk_window_set_cursor (GTK_WIDGET (w)->window, cursor_get (c)); \ } G_STMT_END - -#endif /* GNUMERIC_CURSORS_H */ +GdkCursor *cursor_get (CursorType type); +#endif /* GNUMERIC_CURSORS_H */ diff --git a/widgets/misc/pixmaps/cursor_hand_closed.xpm b/widgets/misc/pixmaps/cursor_hand_closed.xpm new file mode 100644 index 0000000000..61a6de4b88 --- /dev/null +++ b/widgets/misc/pixmaps/cursor_hand_closed.xpm @@ -0,0 +1,38 @@ +/* XPM */ +static char * cursor_hand_closed_xpm[] = { +"32 32 3 1", +" c None", +". c #000000", +"+ c #FFFFFF", +" ", +" ", +" ", +" ", +" ", +" .. ", +" ..++... ", +" .+++++++.. ", +" .+++++++++. ", +" ...+++++++++. ", +" .++.+++++++++. ", +" .++++++++++++. ", +" .+++++++++++. ", +" .++++++++++. ", +" .+++++++++. ", +" .+++++++. ", +" .++++++. ", +" .++++++. ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" "}; diff --git a/widgets/misc/pixmaps/cursor_hand_open.xpm b/widgets/misc/pixmaps/cursor_hand_open.xpm new file mode 100644 index 0000000000..048acc8054 --- /dev/null +++ b/widgets/misc/pixmaps/cursor_hand_open.xpm @@ -0,0 +1,38 @@ +/* XPM */ +static char * cursor_hand_open_xpm[] = { +"32 32 3 1", +" c None", +". c #000000", +"+ c #FFFFFF", +" ", +" ", +" .. ", +" .. .++... ", +" .++..++.++. ", +" .++..++.++. . ", +" .++.++.++..+. ", +" .++.++.++.++. ", +" .. .+++++++.++. ", +" .++..++++++++++. ", +" .+++.+++++++++. ", +" .++++++++++++. ", +" .+++++++++++. ", +" .++++++++++. ", +" .+++++++++. ", +" .+++++++. ", +" .++++++. ", +" .++++++. ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" "}; -- cgit v1.2.3