#!/usr/bin/perl -w ###################################################################### # Example for catching motion events on the Gdk drawing area. # # Dov Grobgeld ###################################################################### use Gtk; use strict; my ($w_label, $w_drawing_area); sub window_event { my $this = shift; my $event = shift; if ($event->{type} eq "expose") { # Draw something. E.g. by using Gtk::Window::Draw } elsif ($event->{type} eq "motion_notify") { my($x,$y) = ($event->{x},$event->{y}); $w_label->set("x,y = $x,$y"); } return 1; } # main { init Gtk; my $mw = Gtk::Widget->new("Gtk::Window", type => "toplevel", title => "Motion example", "signal::destroy" => sub {exit} ); my $vbox = Gtk::Widget->new("Gtk::VBox"); $mw->add($vbox); $w_drawing_area = Gtk::Widget->new("Gtk::DrawingArea", width=>300, height=>300, visible=>1, events=>['pointer-motion-mask']); $vbox->pack_start($w_drawing_area, 1,1,0); # Global label $w_label = Gtk::Widget->new("Gtk::Label", label=>"x,y"); $vbox->pack_start($w_label,1,1,0); $w_drawing_area->signal_connect(event=>\&window_event); $mw->show_all(); main Gtk; }