From 1d63334edafb6f0b6f4ae19e29d3330cccde5e2e Mon Sep 17 00:00:00 2001 From: root Date: Mon, 24 Dec 2007 08:21:38 +0000 Subject: [PATCH] *** empty log message *** --- Changes | 1 + src/perl/urxvt-popup | 2 ++ src/rxvttoolkit.C | 6 ++++-- src/urxvt.pm | 23 +++++++++++++++-------- 4 files changed, 22 insertions(+), 10 deletions(-) diff --git a/Changes b/Changes index 233f3098..bb07eb17 100644 --- a/Changes +++ b/Changes @@ -28,6 +28,7 @@ DUMB: support tex fonts - fix redraw bug in xterm scrollbar with -sr (reported by Mikachu). - correctly provide dependencies for libev (µikachu). - minor code reorganisations and cleanups. + - be more robust in case the urxvt-popup extension cannot be loaded. 8.8 Sat Dec 15 19:40:39 CET 2007 - option -C was aliased to all unsupported options, activating diff --git a/src/perl/urxvt-popup b/src/perl/urxvt-popup index a1f0c627..4b01c18a 100644 --- a/src/perl/urxvt-popup +++ b/src/perl/urxvt-popup @@ -108,6 +108,8 @@ sub on_init { $self->resource (geometry => "${width}x${height}$pos"); + $self->{term}{urxvt_popup_init_done} = 1; + () } diff --git a/src/rxvttoolkit.C b/src/rxvttoolkit.C index bc85594a..a1f8bd39 100644 --- a/src/rxvttoolkit.C +++ b/src/rxvttoolkit.C @@ -602,8 +602,10 @@ void rxvt_display::set_selection_owner (rxvt_term *owner) { if (selection_owner && selection_owner != owner) { - selection_owner->selection_clear (); - flush (); + rxvt_term *owner = selection_owner; + + owner->selection_clear (); + owner->flush (); } selection_owner = owner; diff --git a/src/urxvt.pm b/src/urxvt.pm index fe1570a1..610328c1 100644 --- a/src/urxvt.pm +++ b/src/urxvt.pm @@ -1956,14 +1956,21 @@ sub show { delete $env->{LC_ALL}; $env->{LC_CTYPE} = $self->{term}->locale; - urxvt::term->new ($env, "popup", - "--perl-lib" => "", "--perl-ext-common" => "", - "-pty-fd" => -1, "-sl" => 0, - "-b" => 1, "-bd" => "grey80", "-bl", "-override-redirect", - "--transient-for" => $self->{term}->parent, - "-display" => $self->{term}->display_id, - "-pe" => "urxvt-popup") - or die "unable to create popup window\n"; + my $term = urxvt::term->new ( + $env, "popup", + "--perl-lib" => "", "--perl-ext-common" => "", + "-pty-fd" => -1, "-sl" => 0, + "-b" => 1, "-bd" => "grey80", "-bl", "-override-redirect", + "--transient-for" => $self->{term}->parent, + "-display" => $self->{term}->display_id, + "-pe" => "urxvt-popup", + ) or die "unable to create popup window\n"; + + unless (delete $term->{urxvt_popup_init_done}) { + $term->ungrab; + $term->destroy; + die "unable to initialise popup window\n"; + } } sub DESTROY { -- 2.34.1