Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <gtkmm.h>
- #define TITLE "Test"
- enum Size : unsigned int { WIDTH = 640, HEIGHT = 480 };
- class DrawingArea : public Gtk::DrawingArea
- {
- public:
- DrawingArea()
- {
- _dimensions.set_x(0);
- _dimensions.set_y(0);
- _dimensions.set_width(Size::WIDTH);
- _dimensions.set_height(Size::HEIGHT);
- set_size_request(_dimensions.get_width(), _dimensions.get_height());
- signal_draw().connect(sigc::mem_fun(*this, &DrawingArea::draw_draw));
- }
- void set_mouse()
- {
- get_window()->set_events(Gdk::EventMask::BUTTON1_MOTION_MASK);
- signal_button_press_event().connect(sigc::mem_fun(*this, &DrawingArea::draw_get_mouse), false);
- }
- private:
- bool draw_draw(const Cairo::RefPtr<Cairo::Context>& cr)
- {
- cr->set_source_rgb(0.0, 0.0, 0.0);
- cr->rectangle(_dimensions.get_x(), _dimensions.get_y(), _dimensions.get_width(), _dimensions.get_height());
- cr->fill();
- return true;
- }
- // this doesn't work
- bool draw_get_mouse(const GdkEventButton *button)
- {
- g_print("%0.0f\t%0.0f\n", button->x, button->y);
- return true;
- }
- Gdk::Rectangle _dimensions;
- };
- class Window : public Gtk::Window
- {
- public:
- Window()
- {
- set_default_size(Size::WIDTH, Size::HEIGHT);
- set_title(TITLE);
- _scrolled_window.set_overlay_scrolling(true);
- _scrolled_window.set_policy(Gtk::PolicyType::POLICY_AUTOMATIC, Gtk::PolicyType::POLICY_AUTOMATIC);
- _scrolled_window.add(_drawing_area);
- add(_scrolled_window);
- _drawing_area.queue_draw();
- }
- void set_mouse()
- {
- _drawing_area.set_mouse();
- }
- private:
- Gtk::ScrolledWindow _scrolled_window;
- DrawingArea _drawing_area;
- };
- int main(int argc, char **argv)
- {
- Glib::RefPtr<Gtk::Application> app = Gtk::Application::create();
- Window win;
- win.show_all();
- win.set_mouse();
- return app->run(win);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement