Re: label with context menu (populate-popup)




Peter Daum wrote:
Is there an easy way to get a context menu on a label?
According to the documentation, it should support a
'populate-popup' signal, so it looks like this should be
painless. If I try the following (which works fine on other
occasions):
[snip]
I get no warning, only the signal is never triggered.
The documentation for GtkLabel doesn't say when this
signal occurs, I just assumed it would be triggered
whith the right mouse button...

Labels are "no-window" widgets.  You must have a window to receive an event. 
Labels have no window and therefore receive no events.

The way to get a Label to have a window is to make it selectable.  In fact,
it's when it is selectable that the popup menu is useful, because you can
select clipboard operations.


To wit:

#!/usr/bin/perl -w
use strict;
use Gtk2 -init;

my $window = Gtk2::Window->new;
my $label = Gtk2::Label->new ("Hi, i am a label");

# This is what will make it possible to get the context menu on the label
$label->set_selectable (1);
$label->signal_connect (populate_popup => sub {
        my (undef, $menu) = @_;
        my $item = Gtk2::MenuItem->new ('Whee');
        $menu->append ($item);
        $item->show;
});

$window->add ($label);
$window->signal_connect (destroy => sub { Gtk2->main_quit });
$window->show_all;
Gtk2->main;



-- 
muppet <scott at asofyet dot org>




[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]