From: root Date: Thu, 7 Dec 2006 20:59:59 +0000 (+0000) Subject: *** empty log message *** X-Git-Url: http://git.openbox.org/?a=commitdiff_plain;h=b49e61cbba08b6dffbf57f7dd91ee8f29e67c1fd;p=dana%2Furxvt.git *** empty log message *** --- diff --git a/Changes b/Changes index 3012d896..1e90e985 100644 --- a/Changes +++ b/Changes @@ -22,18 +22,6 @@ DUMB: support tex fonts TODO: http://www.cl.cam.ac.uk/~mgk25/ucs/scw-proposal.html -TODO: 0:52 I think, that urxvt has the same bug as rxvt: FocusIn detail=NotifyPointer -TODO: (and I care only on case mode=NotifyGrab) is interpreted as FocusIn, so -TODO: the cursor is filled (while the input focus is actually elsewhere). -TODO: 0:57 how to reproduce? -TODO: 0:59 * MinceR snickers -TODO: 1:00 reproduce: place pointer above the rxvt window. Then grab the keyboard -TODO: somehow (I do it by invoking prompt of my window manager). -TODO: -TODO: 9:55 not much to document, it needs -TODO: 9:55 URxvt.keysym.M-c: perl:clipboard:copy -TODO: 9:55 URxvt.keysym.M-v: perl:clipboard:paste -TODO: http://triplefusion.net/system/macosx-clipboard 8. - fix the assumption that chars < 256 are single-width. Now only assume this for codepoints 32 to 126 (reported by Dai.H.). @@ -43,6 +31,8 @@ TODO: http://triplefusion.net/system/macosx-clipboard - secondaryScroll is now enabled by default (as per the manpage), reported by exg. - correct the description of [percent]color rgba format in the manpage. + - incorporated macosx-clipboard extension by Samuel Ljungkvist. + - ignore (some) useless focus events. (reported by mmc) 8.0 Thu Nov 2 18:35:19 CET 2006 - combining characters cleared the area instead of creating an overlay, diff --git a/MANIFEST b/MANIFEST index 912d45d7..34a5f131 100644 --- a/MANIFEST +++ b/MANIFEST @@ -175,4 +175,5 @@ src/perl/kuake src/perl/example-refresh-hooks src/perl/block-graphics-to-ascii src/perl/digital-clock +src/perl/macosx-clipboard diff --git a/src/command.C b/src/command.C index 22950635..384d3e72 100644 --- a/src/command.C +++ b/src/command.C @@ -1460,11 +1460,13 @@ rxvt_term::x_cb (XEvent &ev) break; case FocusIn: - focus_in (); + if (ev.xfocus.detail != NotifyInferior && ev.xfocus.detail != NotifyPointer) + focus_in (); break; case FocusOut: - focus_out (); + if (ev.xfocus.detail != NotifyInferior && ev.xfocus.detail != NotifyPointer) + focus_out (); break; case ConfigureNotify: diff --git a/src/perl/macosx-clipboard b/src/perl/macosx-clipboard new file mode 100644 index 00000000..b4e7ae46 --- /dev/null +++ b/src/perl/macosx-clipboard @@ -0,0 +1,93 @@ +#! perl -w + +# http://triplefusion.net/system/macosx-clipboard + +# ---------------------------------------------------------------------- +# File: macosx-clipboard +# ---------------------------------------------------------------------- +# +# All portions of code are copyright by their respective author/s. +# Copyright (c) 2006 Samuel Ljungkvist +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +# ---------------------------------------------------------------------- + +# Usage: + +# URxvt.perl-ext-common: macosx-clipboard +# URxvt.keysym.M-c: perl:macosx-clipboard:copy +# URxvt.keysym.M-v: perl:macosx-clipboard:paste + +use Fcntl (); +use Foundation; +use locale; +use utf8; + +our($appkit, $pasteboard); + +sub copy { + my ($self) = @_; + + $pasteboard->declareTypes_owner_(NSArray->arrayWithObject_('NSStringPboardType'), undef); + $pasteboard->setString_forType_($self->selection, 'NSStringPboardType'); + () +} + +sub paste { + my ($self) = @_; + my ($type, $str); + + $type = $pasteboard->availableTypeFromArray_(NSArray->arrayWithObject_('NSStringPboardType')); + if ($type->isEqual_('NSStringPboardType')){ + $str = $pasteboard->stringForType_($type)->UTF8String; + $str =~ tr/\n/\r/; + utf8::decode($str); + $self->tt_write($self->locale_encode($str)); + } + () +} + +sub on_start { + my ($self) = @_; + + $appkit = NSBundle->alloc->init->initWithPath_('/System/Library/Frameworks/AppKit.framework'); + $appkit->load if $appkit; + + if ($appkit->isLoaded) { + no strict 'refs'; + for my $class (qw(NSPasteboard)) { + @{$class . '::ISA'} = 'PerlObjCBridge'; + } + } else { + undef $appkit; + } + + $pasteboard = NSPasteboard->generalPasteboard; + () +} + +sub on_user_command { + my ($self, $cmd) = @_; + + if ($cmd eq "macosx-clipboard:copy") { + $self->copy; + } + + if ($cmd eq "macosx-clipboard:paste") { + $self->paste; + } + () +} +