* of screen pixels, with an origin of (0, 0) at the top left. x increases
* rightwards and y increases downwards.
*/
-
+
class LIBCANVAS_API Canvas
{
public:
void scroll_to (Coord x, Coord y);
void add_scroller (ScrollGroup& i);
-
+
virtual Rect visible_area () const = 0;
virtual Coord width () const = 0;
virtual Coord height () const = 0;
Duple clamp_to_window (Duple const& winpos, Duple border = Duple());
void zoomed();
-
+
std::string indent() const;
std::string render_indent() const;
void dump (std::ostream&) const;
/** Set the timeout used to display tooltips, in milliseconds
*/
static void set_tooltip_timeout (uint32_t msecs);
-
+
protected:
Root _root;
Color _bg_color;
{
public:
GtkCanvas ();
+ ~GtkCanvas () { _in_dtor = true ; }
void request_redraw (Rect const &);
void request_size (Duple);
bool on_motion_notify_event (GdkEventMotion *);
bool on_enter_notify_event (GdkEventCrossing*);
bool on_leave_notify_event (GdkEventCrossing*);
-
+
bool button_handler (GdkEventButton *);
bool motion_notify_handler (GdkEventMotion *);
bool deliver_event (GdkEvent *);
void deliver_enter_leave (Duple const & point, int state);
-
+
void pick_current_item (int state);
void pick_current_item (Duple const &, int state);
Item * _grabbed_item;
/** the item that currently has key focus or 0 */
Item * _focused_item;
-
+
bool _single_exposure;
sigc::connection tooltip_timeout_connection;
bool show_tooltip ();
void hide_tooltip ();
bool really_start_tooltip_timeout ();
+
+ bool _in_dtor;
};
/** A GTK::Alignment with a GtkCanvas inside it plus some Gtk::Adjustments for
- * scrolling.
+ * scrolling.
*
* This provides a GtkCanvas that can be scrolled. It does NOT implement the
* Gtk::Scrollable interface.