http://qs321.pair.com?node_id=205382


in reply to stay-on-top property for Toplevel for Perl-Tk GUI

Playing with groups.google.com I understand that <<Unix window managers do not have such a "Always on top" feature. To be more precise, most Unix window managers can do something like "Always on top", but there's no X11 standard.>> (from Slaven Rezic) From Slaven, the (untested) trick is:
$top->bind("<Visibility>" => sub { $top->raise });

For win32, with a trick by Toby Everett, for me works this:
use strict; use Tk; use Win32::API; my $mw = new MainWindow; use vars qw/$Button/; $mw->Frame(-width=>200, height =>25); $mw->update; Win32::API->new("user32","SetWindowPos",[qw(N N N N N N N)],'N')->Call(hex($mw->frame()),-1,0,0,0,0,3); $Button=$mw->Button(-text => "Button", -command => sub { &do_something; }) ->pack(); MainLoop; sub do_something { #sleep(10); }

UPDATE:
Always from Slaven Rezic, there is a trick for KDE2:

If you're using KDE2 the you can write following ($w is your toplevel widget):
my($wrapper) = $w->toplevel->wrapper; $w->property('set', '_NET_WM_STATE', "ATOM", 32, ["_NET_WM_STATE_STAYS_ON_TOP"], $wrapper);
I think the _NET_WM_* stuff is also GNOME-compliant.

Replies are listed 'Best First'.
Re: Re: stay-on-top property for Toplevel for Perl-Tk GUI
by Courage (Parson) on Oct 15, 2002 at 14:25 UTC
    Exactly what I needed!

    Thanks a lot for your kind help!
    Courage, the Cowardly Dog