From ba812064f45a96df365a8dd420b0bd45c8c9e49d Mon Sep 17 00:00:00 2001 From: root Date: Sun, 8 Jan 2006 01:16:09 +0000 Subject: [PATCH] *** empty log message *** --- src/perl/option-popup | 3 +++ src/perl/urxvt-popup | 6 +++--- src/urxvt.pm | 33 ++++++++++++++++++++++++++++++--- 3 files changed, 36 insertions(+), 6 deletions(-) diff --git a/src/perl/option-popup b/src/perl/option-popup index 45e33015..5ac60266 100644 --- a/src/perl/option-popup +++ b/src/perl/option-popup @@ -12,6 +12,9 @@ sub on_button_press { if ($event->{button} == 3 && $event->{state} & urxvt::ControlMask) { my $popup = $self->popup ($event); + $popup->add_title ("Options"); + $popup->add_separator; + my %unsafe = map +($_ => 1), qw(borderLess console iconic loginShell reverseVideo scrollBar scrollBar_floating scrollBar_right diff --git a/src/perl/urxvt-popup b/src/perl/urxvt-popup index ed343f98..b1f3cbdf 100644 --- a/src/perl/urxvt-popup +++ b/src/perl/urxvt-popup @@ -10,13 +10,13 @@ sub refresh { my $row = 1; for my $item (@{ $self->{data}{item} }) { - my $rend = "\x1b[30;47m"; + my $rend = "normal"; if ($row == $self->{hover}) { - $rend = $self->{press} ? "\x1b[m" : "\x1b[30;46m"; + $rend = $self->{press} ? "active" : "hover"; } - $cmd .= "$rend\x1b[K"; + $cmd .= "$item->{rend}{$rend}\x1b[K"; $cmd .= $self->locale_encode ($item->{render}->($item)); $cmd .= "\015\012"; diff --git a/src/urxvt.pm b/src/urxvt.pm index 58e1d116..f11ee1df 100644 --- a/src/urxvt.pm +++ b/src/urxvt.pm @@ -1027,15 +1027,42 @@ package urxvt::popup; sub add_item { my ($self, $item) = @_; + $item->{rend}{normal} = "\x1b[0;30;47m" unless exists $item->{rend}{normal}; + $item->{rend}{hover} = "\x1b[0;30;46m" unless exists $item->{rend}{hover}; + $item->{rend}{active} = "\x1b[m" unless exists $item->{rend}{active}; + + $item->{render} ||= sub { $_[0]{text} }; + push @{ $self->{item} }, $item; } +sub add_separator { + my ($self, $sep) = @_; + + $sep ||= "═"; + + $self->add_item ({ + rend => { normal => "\x1b[0;30;47m", hover => "\x1b[0;30;47m", active => "\x1b[0;30;47m" }, + text => "", + render => sub { $sep x $urxvt::TERM->ncol }, + activate => sub { }, + }); +} + +sub add_title { + my ($self, $title) = @_; + + $self->add_item ({ + rend => { normal => "\x1b[38;5;11;44m", hover => "\x1b[38;5;11;44m", active => "\x1b[38;5;11;44m" }, + text => $title, + activate => sub { }, + }); +} + sub add_button { my ($self, $text, $cb) = @_; - $self->add_item ({ type => "button", text => "[ $text ]", activate => $cb, - render => sub { $_[0]{text} }, - }); + $self->add_item ({ type => "button", text => "[ $text ]", activate => $cb}); } sub add_toggle { -- 2.34.1