1 #include <gnumeric-config.h>
3 #include <gnumeric-simple-canvas.h>
5 #include <sheet-control-gui-priv.h>
7 #include <goffice/goffice.h>
8 #include <gsf/gsf-impl-utils.h>
10 static gboolean debug_canvas_grab
;
12 static GtkWidgetClass
const *parent
;
14 gnm_simple_canvas_key_press (GtkWidget
*widget
, GdkEventKey
*event
)
16 GnmSimpleCanvas
*gcanvas
= GNM_SIMPLE_CANVAS (widget
);
18 if (gcanvas
->scg
->grab_stack
> 0)
20 return parent
->key_press_event (widget
, event
);
24 gnm_simple_canvas_key_release (GtkWidget
*widget
, GdkEventKey
*event
)
26 GnmSimpleCanvas
*gcanvas
= GNM_SIMPLE_CANVAS (widget
);
28 if (gcanvas
->scg
->grab_stack
> 0)
30 return parent
->key_release_event (widget
, event
);
34 gnm_simple_canvas_class_init (GtkWidgetClass
*klass
)
36 parent
= g_type_class_peek_parent (klass
);
37 klass
->key_press_event
= gnm_simple_canvas_key_press
;
38 klass
->key_release_event
= gnm_simple_canvas_key_release
;
39 debug_canvas_grab
= gnm_debug_flag ("canvas-grab");
42 GSF_CLASS (GnmSimpleCanvas
, gnm_simple_canvas
,
43 gnm_simple_canvas_class_init
, NULL
,
47 gnm_simple_canvas_new (SheetControlGUI
*scg
)
49 GnmSimpleCanvas
*gcanvas
= g_object_new (GNM_SIMPLE_CANVAS_TYPE
, NULL
);
52 return GOC_CANVAS (gcanvas
);
56 gnm_simple_canvas_ungrab (GocItem
*item
)
58 GnmSimpleCanvas
*gcanvas
= GNM_SIMPLE_CANVAS(item
->canvas
);
60 g_return_if_fail (gcanvas
!= NULL
);
62 gcanvas
->scg
->grab_stack
--;
63 if (debug_canvas_grab
)
64 g_printerr ("Grab dec to %d\n", gcanvas
->scg
->grab_stack
);
65 goc_item_ungrab (item
);
69 gnm_simple_canvas_grab (GocItem
*item
)
71 GnmSimpleCanvas
*gcanvas
= GNM_SIMPLE_CANVAS(item
->canvas
);
73 g_return_if_fail (gcanvas
!= NULL
);
75 gcanvas
->scg
->grab_stack
++;
76 if (debug_canvas_grab
)
77 g_printerr ("Grab inc to %d\n", gcanvas
->scg
->grab_stack
);