Gtk2-Ex-WidgetCursor

 view release on metacpan or  search on metacpan

devel/run.pl  view on Meta::CPAN

    $vbox->pack_start ($button, 0, 0, 0);
  }
  {
    my $button = Gtk2::Button->new_with_label ("Pointer Grab");
    $button->signal_connect
      (clicked => sub {
         my $event = Gtk2->get_current_event;
         my $window = $area->window;
         my $event_mask = [];
         my $confine_to = undef;
         my $cursor = undef;
         my $time = $event->time;

         print "$window, 1, $event_mask, ",
           defined $confine_to ? $confine_to : 'undef',",",
             " ", defined $cursor ? $cursor : 'undef',",",
               " $time\n";
         my $status = Gtk2::Gdk->pointer_grab
           ($window, 1, $event_mask, $confine_to, $cursor, $time);
         print "$progname: grab $status\n";

       });
    $vbox->pack_start ($button, 0, 0, 0);
  }
  {
    my $screen = $toplevel->get_screen;
    my $confine_win = Gtk2::Gdk::Window->new
      ($screen->get_root_window,
       { window_type => 'temp',
         wclass      => 'GDK_INPUT_ONLY',
         x           => $screen->get_width / 2,
         y           => $screen->get_height / 2,
         width       => $screen->get_width / 2,
         height      => $screen->get_height / 2,
         override_redirect => 1 });

    my $button = Gtk2::Button->new_with_label ("Confined Grab");
    $button->signal_connect
      (clicked => sub {
         my $event = Gtk2->get_current_event;
         my $window = $area->window;
         my $event_mask = [];
         my $cursor = undef;
         my $time = $event->time;
         $confine_win->show;

         my $status = Gtk2::Gdk->pointer_grab
           ($window, 1, $event_mask, $confine_win, $cursor, $time);
         print "$progname: grab $status\n";

       });
    $vbox->pack_start ($button, 0, 0, 0);
  }
  Gtk2->key_snooper_install
    (sub {
       print "$progname: pointer_ungrab\n";
       Gtk2::Gdk->pointer_ungrab (0);
     });

  {
    my $combobox = Gtk2::ComboBox->new_text;
    $vbox->pack_start ($combobox, 1,1,0);
    foreach ('one', 'two', 'three', 'four') {
      $combobox->append_text ($_);
    }
    $combobox->set_active (0);
  }

  $toplevel->show_all;
}

{
  my $display_name = Gtk2::Gdk::Display->get_default->get_name;
  my $display = Gtk2::Gdk::Display->open ($display_name);
  my $screen = $display->get_default_screen;
  my $toplevel = Gtk2::Window->new ('toplevel');
  $toplevel->set_name ("my_toplevel_2");
  $toplevel->set_screen ($screen);
  $toplevel->set_size_request (100, 100);
  $toplevel->signal_connect (destroy => sub {
                               print "$progname: second toplevel quit\n";
                               Gtk2->main_quit;
                             });
  $toplevel->{'mycursor'} = Gtk2::Ex::WidgetCursor->new (widget => $toplevel,
                                                         cursor => 'fleur',
                                                         active => 1);

  print "$progname: second toplevel $toplevel\n";
  $toplevel->show_all;
}

print "$progname: toplevel widgets are\n";
foreach my $widget (Gtk2::Window->list_toplevels) {
  print "  $widget  ", $widget->get_name, "\n";

  if ($widget->get_name =~ /Gtk/) {
    foreach my $widget (Gtk2::Ex::WidgetCursor::_container_recursively ($widget)) {
      print "    $widget  ", $widget->get_name, "\n";
    }
  }
}

Gtk2->main;
exit 0;


__END__



( run in 1.464 second using v1.01-cache-2.11-cpan-8dfa8b56332 )