@@ -1974,7 +1958,6 @@ Set XTerm Parameters. 8-bit ST: 0x9c, 7-bit ST sequence: ESC \ (0x1b,
Ps = 50 | Set fontset to Pt, with the following special values of Pt (rxvt) #+n change up n #-n change down n if n is missing of 0, a value of 1 is used empty change to font0 n change to font n |
Ps = 55 | Log all scrollback buffer and all of screen to Pt |
Ps = 701 | Change current locale to Pt, or, if Pt is ?, return the current locale (Compile frills). |
-Ps = 703 | Menubar command Pt (Compile menubar). |
Ps = 704 | Change colour of italic characters to Pt |
Ps = 705 | Change background pixmap tint colour to Pt (Compile transparency). |
Ps = 706 | Change colour of bold characters to Pt |
@@ -1991,583 +1974,6 @@ Set XTerm Parameters. 8-bit ST: 0x9c, 7-bit ST sequence: ESC \ (0x1b,
-
-The exact syntax used is almost solidified. >
-In the menus, DON'T try to use menuBar commands that add or remove a
-menuBar.
-Note that in all of the commands, the /path/ > cannot be
-omitted: use ./ to specify a menu relative to the current menu.
-
-
-
-For the menuBar XTerm escape sequence ESC ] 703 ; Pt ST
, the syntax
-of Pt
can be used for a variety of tasks:
-At the top level is the current menuBar which is a member of a circular
-linked-list of other such menuBars.
-The menuBar acts as a parent for the various drop-down menus, which in
-turn, may have labels, separator lines, menuItems and subMenus.
-The menuItems are the useful bits: you can use them to mimic keyboard
-input or even to send text or escape sequences back to rxvt.
-The menuBar syntax is intended to provide a simple yet robust method of
-constructing and manipulating menus and navigating through the
-menuBars.
-The first step is to use the tag [menu:name] > which creates
-the menuBar called name and allows access. You may now or menus,
-subMenus, and menuItems. Finally, use the tag [done] to set the
-menuBar access as readonly to prevent accidental corruption of the
-menus. To re-access the current menuBar for alterations, use the tag
-[menu], make the alterations and then use [done]
-
-
-
-
-
-- [menu:+name] >
-
--
-access the named menuBar for creation or alteration. If a new menuBar
-is created, it is called name (max of 15 chars) and the current
-menuBar is pushed onto the stack
-
-
-- [menu]
-
--
-access the current menuBar for alteration
-
-
-- [title:+string] >
-
--
-set the current menuBar's title to string, which may contain the
-following format specifiers:
-
--
-
- B<%n> rxvt name (as per the B<-name> command-line option)
- B<%v> rxvt version
- B<%%> literal B<%> character
-
-
-- [done]
-
--
-set menuBar access as readonly.
-End-of-file tag for [read:+file] > operations.
-
-
-- [read:+file] >
-
--
-read menu commands directly from file (extension ``.menu'' will be
-appended if required.) Start reading at a line with [menu] or <
-[menu:+name > and continuing until [done] is encountered.
-
--
-
Blank and comment lines (starting with #) are ignored. Actually,
-since any invalid menu commands are also ignored, almost anything could
-be construed as a comment line, but this may be tightened up in the
-future ... so don't count on it!.
-
-
-- [read:+file;+name] >
-
--
-The same as [read:+file] >, but start reading at a line with
-[menu:+name] > and continuing until [done:+name] > or
-[done] is encountered.
-
-
-- [dump]
-
--
-dump all menuBars to the file /tmp/rxvt-PID in a format suitable for
-later rereading.
-
-
-- [rm:name]
-
--
-remove the named menuBar
-
-
-- [rm] [rm:]
-
--
-remove the current menuBar
-
-
-- [rm*] [rm:*]
-
--
-remove all menuBars
-
-
-- [swap]
-
--
-swap the top two menuBars
-
-
-- [prev]
-
--
-access the previous menuBar
-
-
-- [next]
-
--
-access the next menuBar
-
-
-- [show]
-
--
-Enable display of the menuBar
-
-
-- [hide]
-
--
-Disable display of the menuBar
-
-
-- [pixmap:+name] >
-
-- [pixmap:+name;scaling] >
-
--
-(set the background pixmap globally
-
--
-
A Future implementation may make this local to the menubar >)
-
-
-- [:+command:] >
-
--
-ignore the menu readonly status and issue a command to or a menu or
-menuitem or change the ; a useful shortcut for setting the quick arrows
-from a menuBar.
-
-
-
-
-
-
-The following commands may also be + prefixed.
-
-- /+
-
--
-access menuBar top level
-
-
-- ./+
-
--
-access current menu level
-
-
-- ../+
-
--
-access parent menu (1 level up)
-
-
-- ../../
-
--
-access parent menu (multiple levels up)
-
-
-- /path/menu >
-
--
-add/access menu
-
-
-- /path/menu/* >
-
--
-add/access menu and clear it if it exists
-
-
-- /path/{-} >
-
--
-add separator
-
-
-- /path/{item} >
-
--
-add item as a label
-
-
-- /path/{item} action >
-
--
-add/alter menuitem with an associated action
-
-
-- /path/{item}{right-text} >
-
--
-add/alter menuitem with right-text as the right-justified text
-and as the associated action
-
-
-- /path/{item}{rtext} action >
-
--
-add/alter menuitem with an associated action and with rtext as
-the right-justified text.
-
-
-
-- Special characters in action must be backslash-escaped:
-
--
-\a \b \E \e \n \r \t \octal
-
-
-- or in control-character notation:
-
--
-^@, ^A .. ^Z .. ^_, ^?
-
-
-To send a string starting with a NUL (^@) character to the
-program, start action with a pair of NUL characters (^@^@),
-the first of which will be stripped off and the balance directed to the
-program. Otherwise if action begins with NUL followed by
-non-+NUL characters, the leading NUL is stripped off and the
-balance is sent back to rxvt.
-As a convenience for the many Emacs-type editors, action may start
-with M- (eg, M-$ is equivalent to \E$) and a CR will be
-appended if missed from M-x commands.
-As a convenience for issuing XTerm ESC ] sequences from a menubar (or
-quick arrow), a BEL (^G) will be appended if needed.
-
-- For example,
-
--
-M-xapropos is equivalent to \Exapropos\r
-
-
-- and
-
--
-\E]703;mona;100 is equivalent to \E]703;mona;100\a
-
-
-The option {right-rtext} > will be right-justified. In the
-absence of a specified action, this text will be used as the action
-as well.
-
-- For example,
-
--
-/File/{Open}{^X^F} is equivalent to /File/{Open}{^X^F} ^X^F
-
-
-The left label is necessary, since it's used for matching, but
-implicitly hiding the left label (by using same name for both left and
-right labels), or explicitly hiding the left label (by preceeding it
-with a dot), makes it possible to have right-justified text only.
-
-- For example,
-
--
-/File/{Open}{Open} Open-File-Action
-
-
-- or hiding it
-
--
-/File/{.anylabel}{Open} Open-File-Action
-
-
-
-
-
-
-
-- -/*+ >
-
--
-remove all menus from the menuBar, the same as [clear]
-
-
-- -+/pathmenu+ >
-
--
-remove menu
-
-
-- -+/path{item}+ >
-
--
-remove item
-
-
-- -+/path{-} >
-
--
-remove separator)
-
-
-- -/path/menu/*
-
--
-remove all items, separators and submenus from menu
-
-
-
-
-
-
-The menus also provide a hook for quick arrows to provide easier
-user access. If nothing has been explicitly set, the default is to
-emulate the curror keys. The syntax permits each arrow to be altered
-individually or all four at once without re-entering their common
-beginning/end text. For example, to explicitly associate cursor actions
-with the arrows, any of the following forms could be used:
-
-- <r+Right >>
-
-- <l+Left >>
-
-- <u+Up >>
-
-- <d+Down >>
-
--
-Define actions for the respective arrow buttons
-
-
-- <b+Begin >>
-
-- <e+End >>
-
--
-Define common beginning/end parts for quick arrows which used in
-conjunction with the above <r> <l> <u> <d> constructs
-
-
-
-- For example, define arrows individually,
-
--
-
- <u>\E[A
-
--
-
- <d>\E[B
-
--
-
- <r>\E[C
-
--
-
- <l>\E[D
-
-- or all at once
-
--
-
- <u>\E[AZ<><d>\E[BZ<><r>\E[CZ<><l>\E[D
-
-- or more compactly (factoring out common parts)
-
--
-
- <b>\E[<u>AZ<><d>BZ<><r>CZ<><l>D
-
-
-
-
-
-
-A short summary of the most common commands:
-
-- [menu:name]
-
--
-use an existing named menuBar or start a new one
-
-
-- [menu]
-
--
-use the current menuBar
-
-
-- [title:string]
-
--
-set menuBar title
-
-
-- [done]
-
--
-set menu access to readonly and, if reading from a file, signal EOF
-
-
-- [done:name]
-
--
-if reading from a file using [read:file;name] signal EOF
-
-
-- [rm:name]
-
--
-remove named
menuBar(s)
-
-
-- [rm] [rm:]
-
--
-remove current menuBar
-
-
-- [rm*] [rm:*]
-
--
-remove all
menuBar(s)
-
-
-- [swap]
-
--
-swap top two menuBars
-
-
-- [prev]
-
--
-access the previous menuBar
-
-
-- [next]
-
--
-access the next menuBar
-
-
-- [show]
-
--
-map menuBar
-
-
-- [hide]
-
--
-unmap menuBar
-
-
-- [pixmap;file]
-
-- [pixmap;file;scaling]
-
--
-set a background pixmap
-
-
-- [read:file]
-
-- [read:file;name]
-
--
-read in a menu from a file
-
-
-- [dump]
-
--
-dump out all menuBars to /tmp/rxvt-PID
-
-
-- /
-
--
-access menuBar top level
-
-
-- ./
-
-- ../
-
-- ../../
-
--
-access current or parent menu level
-
-
-- /path/menu
-
--
-add/access menu
-
-
-- /path/{-}
-
--
-add separator
-
-
-- /path/{item}{rtext} action
-
--
-add/alter menu item
-
-
-- -/*
-
--
-remove all menus from the menuBar
-
-
-- -/path/menu
-
--
-remove menu items, separators and submenus from menu
-
-
-- -/path/menu
-
--
-remove menu
-
-
-- -/path/{item}
-
--
-remove item
-
-
-- -/path/{-}
-
--
-remove separator
-
-
-- <b>Begin<r>Right<l>Left<u>Up<d>Down<e>End
-
--
-menu quick arrows
-
-
-
-
-
For the XPM XTerm escape sequence ESC ] 20 ; Pt ST
> then value
of Pt
> can be the name of the background pixmap followed by a
@@ -2930,14 +2336,6 @@ Add support for fading the text when focus is lost (requires --enable-tran
Add support for tinting of transparent backgrounds (requires --enable-transparency
).
---enable-menubar (default: off) [DEPRECATED]
-
-
-Add support for our menu bar system (this interacts badly with dynamic
-locale switching currently). This option is DEPRECATED and will be removed
-in the future.
-
-
--enable-rxvt-scroll (default: on)
@@ -2997,16 +2395,6 @@ do it.
Removes any support for resource checking.
---enable-strings (default: off)
-
-
-Add support for our possibly faster memset()
function and other
-various routines, overriding your system's versions which may
-have been hand-crafted in assembly or may require extra libraries
-to link in. (this breaks ANSI-C rules and has problems on many
-GNU/Linux systems).
-
-
--disable-swapscreen
@@ -3048,7 +2436,7 @@ in combination with other switches) is:
--enable-iso14755 (default: on)
-Enable extended ISO 14755 support (see urxvt(1), or
+Enable extended ISO 14755 support (see rxvt(1), or
doc/rxvt.1.txt). Basic support (section 5.1) is enabled by
--enable-frills
, while support for 5.2, 5.3 and 5.4 is enabled with
this switch.
@@ -3118,7 +2506,7 @@ Add support to have the pointer disappear when typing or inactive.
--enable-perl (default: off)
-Enable an embedded perl interpreter. See the urxvtperl(3)
+Enable an embedded perl interpreter. See the rxvtperl(3)
manpage (doc/rxvtperl.txt) for more info on this feature, or the files
in src/perl-ext/ for the extensions that are installed by default. The
perl interpreter that is used can be specified via the PERL
environment
diff --git a/doc/rxvt.7.man.in b/doc/rxvt.7.man.in
index 3f666b16..778ac620 100644
--- a/doc/rxvt.7.man.in
+++ b/doc/rxvt.7.man.in
@@ -129,7 +129,7 @@
.\" ========================================================================
.\"
.IX Title "rxvt 7"
-.TH rxvt 7 "2006-01-13" "7.0" "RXVT-UNICODE"
+.TH rxvt 7 "2006-01-16" "7.0" "RXVT-UNICODE"
.SH "NAME"
RXVT REFERENCE \- FAQ, command sequences and other background information
.SH "SYNOPSIS"
@@ -1618,15 +1618,6 @@ h Send Mouse X & Y on button press.
l No mouse reporting.
.TE
-.ie n .IP "\fB\fB""Ps = 10""\fB\fR (\fBrxvt\fR)" 4
-.el .IP "\fB\f(CBPs = 10\fB\fR (\fBrxvt\fR)" 4
-.IX Item "Ps = 10 (rxvt)"
-.TS
-l l .
-h menuBar visible
-l menuBar invisible
-.TE
-
.ie n .IP "\fB\fB""Ps = 25""\fB\fR" 4
.el .IP "\fB\f(CBPs = 25\fB\fR" 4
.IX Item "Ps = 25"
@@ -1829,7 +1820,6 @@ Ps = 49 Change default background colour to Pt.
Ps = 50 Set fontset to Pt, with the following special values of Pt (rxvt) #+n change up n #-n change down n if n is missing of 0, a value of 1 is used empty change to font0 n change to font n
Ps = 55 Log all scrollback buffer and all of screen to Pt
Ps = 701 Change current locale to Pt, or, if Pt is ?, return the current locale (Compile frills).
-Ps = 703 Menubar command Pt (Compile menubar).
Ps = 704 Change colour of italic characters to Pt
Ps = 705 Change background pixmap tint colour to Pt (Compile transparency).
Ps = 706 Change colour of bold characters to Pt
@@ -1845,380 +1835,7 @@ Ps = 777 Call the perl extension with the given string, which should be of the f
.PP
-.IX Xref "menuBar"
-.SH "menuBar"
-.IX Header "menuBar"
-\&\fBThe exact syntax used is \f(BIalmost\fB solidified.\fR
-In the menus, \fB\s-1DON\s0'T\fR try to use menuBar commands that add or remove a
-menuBar.
-.PP
-Note that in all of the commands, the \fB\f(BI/path/\fB\fR \fIcannot\fR be
-omitted: use \fB./\fR to specify a menu relative to the current menu.
-.Sh "Overview of menuBar operation"
-.IX Subsection "Overview of menuBar operation"
-For the menuBar XTerm escape sequence \f(CW\*(C`ESC ] 703 ; Pt ST\*(C'\fR, the syntax
-of \f(CW\*(C`Pt\*(C'\fR can be used for a variety of tasks:
-.PP
-At the top level is the current menuBar which is a member of a circular
-linked-list of other such menuBars.
-.PP
-The menuBar acts as a parent for the various drop-down menus, which in
-turn, may have labels, separator lines, menuItems and subMenus.
-.PP
-The menuItems are the useful bits: you can use them to mimic keyboard
-input or even to send text or escape sequences back to rxvt.
-.PP
-The menuBar syntax is intended to provide a simple yet robust method of
-constructing and manipulating menus and navigating through the
-menuBars.
-.PP
-The first step is to use the tag \fB[menu:\f(BIname\fB]\fR which creates
-the menuBar called \fIname\fR and allows access. You may now or menus,
-subMenus, and menuItems. Finally, use the tag \fB[done]\fR to set the
-menuBar access as \fBreadonly\fR to prevent accidental corruption of the
-menus. To re-access the current menuBar for alterations, use the tag
-\&\fB[menu]\fR, make the alterations and then use \fB[done]\fR
-.PP
-
-.IX Xref "menuBarCommands"
-.Sh "Commands"
-.IX Subsection "Commands"
-.IP "\fB[menu:+\f(BIname\fB]\fR" 4
-.IX Item "[menu:+name]"
-access the named menuBar for creation or alteration. If a new menuBar
-is created, it is called \fIname\fR (max of 15 chars) and the current
-menuBar is pushed onto the stack
-.IP "\fB[menu]\fR" 4
-.IX Item "[menu]"
-access the current menuBar for alteration
-.IP "\fB[title:+\f(BIstring\fB]\fR" 4
-.IX Item "[title:+string]"
-set the current menuBar's title to \fIstring\fR, which may contain the
-following format specifiers:
-.Sp
-.Vb 3
-\& B<%n> rxvt name (as per the B<-name> command-line option)
-\& B<%v> rxvt version
-\& B<%%> literal B<%> character
-.Ve
-.IP "\fB[done]\fR" 4
-.IX Item "[done]"
-set menuBar access as \fBreadonly\fR.
-End-of-file tag for \fB[read:+\f(BIfile\fB]\fR operations.
-.IP "\fB[read:+\f(BIfile\fB]\fR" 4
-.IX Item "[read:+file]"
-read menu commands directly from \fIfile\fR (extension \*(L".menu\*(R" will be
-appended if required.) Start reading at a line with \fB[menu]\fR or \fB[menu:+\f(BIname\fB\fR and continuing until \fB[done]\fR is encountered.
-.Sp
-Blank and comment lines (starting with \fB#\fR) are ignored. Actually,
-since any invalid menu commands are also ignored, almost anything could
-be construed as a comment line, but this may be tightened up in the
-future ... so don't count on it!.
-.IP "\fB[read:+\f(BIfile\fB;+\f(BIname\fB]\fR" 4
-.IX Item "[read:+file;+name]"
-The same as \fB[read:+\f(BIfile\fB]\fR, but start reading at a line with
-\&\fB[menu:+\f(BIname\fB]\fR and continuing until \fB[done:+\f(BIname\fB]\fR or
-\&\fB[done]\fR is encountered.
-.IP "\fB[dump]\fR" 4
-.IX Item "[dump]"
-dump all menuBars to the file \fB/tmp/rxvt\-PID\fR in a format suitable for
-later rereading.
-.IP "\fB[rm:name]\fR" 4
-.IX Item "[rm:name]"
-remove the named menuBar
-.IP "\fB[rm] [rm:]\fR" 4
-.IX Item "[rm] [rm:]"
-remove the current menuBar
-.IP "\fB[rm*] [rm:*]\fR" 4
-.IX Item "[rm*] [rm:*]"
-remove all menuBars
-.IP "\fB[swap]\fR" 4
-.IX Item "[swap]"
-swap the top two menuBars
-.IP "\fB[prev]\fR" 4
-.IX Item "[prev]"
-access the previous menuBar
-.IP "\fB[next]\fR" 4
-.IX Item "[next]"
-access the next menuBar
-.IP "\fB[show]\fR" 4
-.IX Item "[show]"
-Enable display of the menuBar
-.IP "\fB[hide]\fR" 4
-.IX Item "[hide]"
-Disable display of the menuBar
-.IP "\fB[pixmap:+\f(BIname\fB]\fR" 4
-.IX Item "[pixmap:+name]"
-.PD 0
-.IP "\fB[pixmap:+\f(BIname\fB;\f(BIscaling\fB]\fR" 4
-.IX Item "[pixmap:+name;scaling]"
-.PD
-(set the background pixmap globally
-.Sp
-\&\fBA Future implementation \f(BImay\fB make this local to the menubar\fR)
-.IP "\fB[:+\f(BIcommand\fB:]\fR" 4
-.IX Item "[:+command:]"
-ignore the menu readonly status and issue a \fIcommand\fR to or a menu or
-menuitem or change the ; a useful shortcut for setting the quick arrows
-from a menuBar.
-.PP
-
-.IX Xref "menuBarAdd"
-.Sh "Adding and accessing menus"
-.IX Subsection "Adding and accessing menus"
-The following commands may also be \fB+\fR prefixed.
-.IP "\fB/+\fR" 4
-.IX Item "/+"
-access menuBar top level
-.IP "\fB./+\fR" 4
-.IX Item "./+"
-access current menu level
-.IP "\fB../+\fR" 4
-.IX Item "../+"
-access parent menu (1 level up)
-.IP "\fB../../\fR" 4
-.IX Item "../../"
-access parent menu (multiple levels up)
-.IP "\fB\f(BI/path/\fBmenu\fR" 4
-.IX Item "/path/menu"
-add/access menu
-.IP "\fB\f(BI/path/\fBmenu/*\fR" 4
-.IX Item "/path/menu/*"
-add/access menu and clear it if it exists
-.IP "\fB\f(BI/path/\fB{\-}\fR" 4
-.IX Item "/path/{-}"
-add separator
-.IP "\fB\f(BI/path/\fB{item}\fR" 4
-.IX Item "/path/{item}"
-add \fBitem\fR as a label
-.IP "\fB\f(BI/path/\fB{item} action\fR" 4
-.IX Item "/path/{item} action"
-add/alter \fImenuitem\fR with an associated \fIaction\fR
-.IP "\fB\f(BI/path/\fB{item}{right\-text}\fR" 4
-.IX Item "/path/{item}{right-text}"
-add/alter \fImenuitem\fR with \fBright-text\fR as the right-justified text
-and as the associated \fIaction\fR
-.IP "\fB\f(BI/path/\fB{item}{rtext} action\fR" 4
-.IX Item "/path/{item}{rtext} action"
-add/alter \fImenuitem\fR with an associated \fIaction\fR and with \fBrtext\fR as
-the right-justified text.
-.IP "Special characters in \fIaction\fR must be backslash\-escaped:" 4
-.IX Item "Special characters in action must be backslash-escaped:"
-\&\fB\ea \eb \eE \ee \en \er \et \eoctal\fR
-.IP "or in control-character notation:" 4
-.IX Item "or in control-character notation:"
-\&\fB^@, ^A .. ^Z .. ^_, ^?\fR
-.PP
-To send a string starting with a \fB\s-1NUL\s0\fR (\fB^@\fR) character to the
-program, start \fIaction\fR with a pair of \fB\s-1NUL\s0\fR characters (\fB^@^@\fR),
-the first of which will be stripped off and the balance directed to the
-program. Otherwise if \fIaction\fR begins with \fB\s-1NUL\s0\fR followed by
-non\-+\fB\s-1NUL\s0\fR characters, the leading \fB\s-1NUL\s0\fR is stripped off and the
-balance is sent back to rxvt.
-.PP
-As a convenience for the many Emacs-type editors, \fIaction\fR may start
-with \fBM\-\fR (eg, \fBM\-$\fR is equivalent to \fB\eE$\fR) and a \fB\s-1CR\s0\fR will be
-appended if missed from \fBM\-x\fR commands.
-.PP
-As a convenience for issuing XTerm \fB\s-1ESC\s0 ]\fR sequences from a menubar (or
-quick arrow), a \fB\s-1BEL\s0\fR (\fB^G\fR) will be appended if needed.
-.IP "For example," 4
-.IX Item "For example,"
-\&\fBM\-xapropos\fR is equivalent to \fB\eExapropos\er\fR
-.IP "and" 4
-.IX Item "and"
-\&\fB\eE]703;mona;100\fR is equivalent to \fB\eE]703;mona;100\ea\fR
-.PP
-The option \fB{\f(BIright-rtext\fB}\fR will be right\-justified. In the
-absence of a specified action, this text will be used as the \fIaction\fR
-as well.
-.IP "For example," 4
-.IX Item "For example,"
-\&\fB/File/{Open}{^X^F}\fR is equivalent to \fB/File/{Open}{^X^F} ^X^F\fR
-.PP
-The left label \fIis\fR necessary, since it's used for matching, but
-implicitly hiding the left label (by using same name for both left and
-right labels), or explicitly hiding the left label (by preceeding it
-with a dot), makes it possible to have right-justified text only.
-.IP "For example," 4
-.IX Item "For example,"
-\&\fB/File/{Open}{Open} Open-File-Action\fR
-.IP "or hiding it" 4
-.IX Item "or hiding it"
-\&\fB/File/{.anylabel}{Open} Open-File-Action\fR
-.PP
-
-.IX Xref "menuBarRemove"
-.Sh "Removing menus"
-.IX Subsection "Removing menus"
-.IP "\fB\-/*+\fR" 4
-.IX Item "-/*+"
-remove all menus from the menuBar, the same as \fB[clear]\fR
-.IP "\fB\-+\f(BI/path\fBmenu+\fR" 4
-.IX Item "-+/pathmenu+"
-remove menu
-.IP "\fB\-+\f(BI/path\fB{item}+\fR" 4
-.IX Item "-+/path{item}+"
-remove item
-.IP "\fB\-+\f(BI/path\fB{\-}\fR" 4
-.IX Item "-+/path{-}"
-remove separator)
-.IP "\fB\-/path/menu/*\fR" 4
-.IX Item "-/path/menu/*"
-remove all items, separators and submenus from menu
-.PP
-
-.IX Xref "menuBarArrows"
-.Sh "Quick Arrows"
-.IX Subsection "Quick Arrows"
-The menus also provide a hook for \fIquick arrows\fR to provide easier
-user access. If nothing has been explicitly set, the default is to
-emulate the curror keys. The syntax permits each arrow to be altered
-individually or all four at once without re-entering their common
-beginning/end text. For example, to explicitly associate cursor actions
-with the arrows, any of the following forms could be used:
-.IP "\fB+\f(BIRight\fB\fR" 4
-.IX Item "+Right"
-.PD 0
-.IP "\fB+\f(BILeft\fB\fR" 4
-.IX Item "+Left"
-.IP "\fB+\f(BIUp\fB\fR" 4
-.IX Item "+Up"
-.IP "\fB+\f(BIDown\fB\fR" 4
-.IX Item "+Down"
-.PD
-Define actions for the respective arrow buttons
-.IP "\fB+\f(BIBegin\fB\fR" 4
-.IX Item "+Begin"
-.PD 0
-.IP "\fB+\f(BIEnd\fB\fR" 4
-.IX Item "+End"
-.PD
-Define common beginning/end parts for \fIquick arrows\fR which used in
-conjunction with the above constructs
-.IP "For example, define arrows individually," 4
-.IX Item "For example, define arrows individually,"
-.Vb 1
-\& \eE[A
-.Ve
-.Sp
-.Vb 1
-\& \eE[B
-.Ve
-.Sp
-.Vb 1
-\& \eE[C
-.Ve
-.Sp
-.Vb 1
-\& \eE[D
-.Ve
-.IP "or all at once" 4
-.IX Item "or all at once"
-.Vb 1
-\& \eE[AZ<>\eE[BZ<>\eE[CZ<>\eE[D
-.Ve
-.IP "or more compactly (factoring out common parts)" 4
-.IX Item "or more compactly (factoring out common parts)"
-.Vb 1
-\& \eE[AZ<>BZ<>CZ<>D
-.Ve
-.PP
-
-.IX Xref "menuBarSummary"
-.Sh "Command Summary"
-.IX Subsection "Command Summary"
-A short summary of the most \fIcommon\fR commands:
-.IP "[menu:name]" 4
-.IX Item "[menu:name]"
-use an existing named menuBar or start a new one
-.IP "[menu]" 4
-.IX Item "[menu]"
-use the current menuBar
-.IP "[title:string]" 4
-.IX Item "[title:string]"
-set menuBar title
-.IP "[done]" 4
-.IX Item "[done]"
-set menu access to readonly and, if reading from a file, signal \s-1EOF\s0
-.IP "[done:name]" 4
-.IX Item "[done:name]"
-if reading from a file using [read:file;name] signal \s-1EOF\s0
-.IP "[rm:name]" 4
-.IX Item "[rm:name]"
-remove named menuBar(s)
-.IP "[rm] [rm:]" 4
-.IX Item "[rm] [rm:]"
-remove current menuBar
-.IP "[rm*] [rm:*]" 4
-.IX Item "[rm*] [rm:*]"
-remove all menuBar(s)
-.IP "[swap]" 4
-.IX Item "[swap]"
-swap top two menuBars
-.IP "[prev]" 4
-.IX Item "[prev]"
-access the previous menuBar
-.IP "[next]" 4
-.IX Item "[next]"
-access the next menuBar
-.IP "[show]" 4
-.IX Item "[show]"
-map menuBar
-.IP "[hide]" 4
-.IX Item "[hide]"
-unmap menuBar
-.IP "[pixmap;file]" 4
-.IX Item "[pixmap;file]"
-.PD 0
-.IP "[pixmap;file;scaling]" 4
-.IX Item "[pixmap;file;scaling]"
-.PD
-set a background pixmap
-.IP "[read:file]" 4
-.IX Item "[read:file]"
-.PD 0
-.IP "[read:file;name]" 4
-.IX Item "[read:file;name]"
-.PD
-read in a menu from a file
-.IP "[dump]" 4
-.IX Item "[dump]"
-dump out all menuBars to /tmp/rxvt\-PID
-.IP "/" 4
-access menuBar top level
-.IP "./" 4
-.PD 0
-.IP "../" 4
-.IP "../../" 4
-.PD
-access current or parent menu level
-.IP "/path/menu" 4
-.IX Item "/path/menu"
-add/access menu
-.IP "/path/{\-}" 4
-.IX Item "/path/{-}"
-add separator
-.IP "/path/{item}{rtext} action" 4
-.IX Item "/path/{item}{rtext} action"
-add/alter menu item
-.IP "\-/*" 4
-remove all menus from the menuBar
-.IP "\-/path/menu" 4
-.IX Item "-/path/menu"
-remove menu items, separators and submenus from menu
-.IP "\-/path/menu" 4
-.IX Item "-/path/menu"
-remove menu
-.IP "\-/path/{item}" 4
-.IX Item "-/path/{item}"
-remove item
-.IP "\-/path/{\-}" 4
-.IX Item "-/path/{-}"
-remove separator
-.IP "BeginRightLeftUpDownEnd" 4
-.IX Item "BeginRightLeftUpDownEnd"
-menu quick arrows
+.IX Xref "XPM"
.SH "XPM"
.IX Header "XPM"
For the \s-1XPM\s0 XTerm escape sequence \fB\f(CB\*(C`ESC ] 20 ; Pt ST\*(C'\fB\fR then value
@@ -2498,11 +2115,6 @@ Add support for fading the text when focus is lost (requires \f(CW\*(C`\-\-enabl
.IP "\-\-enable\-tinting (default: on)" 4
.IX Item "--enable-tinting (default: on)"
Add support for tinting of transparent backgrounds (requires \f(CW\*(C`\-\-enable\-transparency\*(C'\fR).
-.IP "\-\-enable\-menubar (default: off) [\s-1DEPRECATED\s0]" 4
-.IX Item "--enable-menubar (default: off) [DEPRECATED]"
-Add support for our menu bar system (this interacts badly with dynamic
-locale switching currently). This option is \s-1DEPRECATED\s0 and will be removed
-in the future.
.IP "\-\-enable\-rxvt\-scroll (default: on)" 4
.IX Item "--enable-rxvt-scroll (default: on)"
Add support for the original rxvt scrollbar.
@@ -2535,13 +2147,6 @@ do it.
.IP "\-\-disable\-resources" 4
.IX Item "--disable-resources"
Removes any support for resource checking.
-.IP "\-\-enable\-strings (default: off)" 4
-.IX Item "--enable-strings (default: off)"
-Add support for our possibly faster \fImemset()\fR function and other
-various routines, overriding your system's versions which may
-have been hand-crafted in assembly or may require extra libraries
-to link in. (this breaks ANSI-C rules and has problems on many
-GNU/Linux systems).
.IP "\-\-disable\-swapscreen" 4
.IX Item "--disable-swapscreen"
Remove support for secondary/swap screen.
diff --git a/doc/rxvt.7.pod b/doc/rxvt.7.pod
index ce7b1ef0..a1cb4e24 100644
--- a/doc/rxvt.7.pod
+++ b/doc/rxvt.7.pod
@@ -1480,15 +1480,6 @@ Toggle DEC Private Mode Values (rxvt extension). I
=end table
-=item B<< C >> (B)
-
-=begin table
-
- B<< C >> menuBar visible
- B<< C >> menuBar invisible
-
-=end table
-
=item B<< C >>
=begin table
@@ -1687,7 +1678,6 @@ B can be escaped by prefixing it with SYN (0x16, ^V).
B<< C >> Set fontset to B<< C >>, with the following special values of B<< C >> (B) B<< C<#+n> >> change up B<< C >> B<< C<#-n> >> change down B<< C >> if B<< C >> is missing of 0, a value of 1 is used I change to font0 B<< C >> change to font B<< C >>
B<< C >> Log all scrollback buffer and all of screen to B<< C >>
B<< C >> Change current locale to B<< C >>, or, if B<< C >> is B<< C> >>, return the current locale (Compile frills).
- B<< C >> Menubar command B<< C >> (Compile menubar).
B<< C >> Change colour of italic characters to B<< C >>
B<< C >> Change background pixmap tint colour to B<< C >> (Compile transparency).
B<< C >> Change colour of bold characters to B<< C >>
@@ -1704,472 +1694,6 @@ B can be escaped by prefixing it with SYN (0x16, ^V).
=back
-X
-
-=head1 menuBar
-
-B<< The exact syntax used is I solidified. >>
-In the menus, B try to use menuBar commands that add or remove a
-menuBar.
-
-Note that in all of the commands, the B<< I >> I be
-omitted: use B<./> to specify a menu relative to the current menu.
-
-=head2 Overview of menuBar operation
-
-For the menuBar XTerm escape sequence C, the syntax
-of C can be used for a variety of tasks:
-
-At the top level is the current menuBar which is a member of a circular
-linked-list of other such menuBars.
-
-The menuBar acts as a parent for the various drop-down menus, which in
-turn, may have labels, separator lines, menuItems and subMenus.
-
-The menuItems are the useful bits: you can use them to mimic keyboard
-input or even to send text or escape sequences back to rxvt.
-
-The menuBar syntax is intended to provide a simple yet robust method of
-constructing and manipulating menus and navigating through the
-menuBars.
-
-The first step is to use the tag B<< [menu:I] >> which creates
-the menuBar called I and allows access. You may now or menus,
-subMenus, and menuItems. Finally, use the tag B<[done]> to set the
-menuBar access as B to prevent accidental corruption of the
-menus. To re-access the current menuBar for alterations, use the tag
-B<[menu]>, make the alterations and then use B<[done]>
-
-X
-
-=head2 Commands
-
-=over 4
-
-=item B<< [menu:+I] >>
-
-access the named menuBar for creation or alteration. If a new menuBar
-is created, it is called I (max of 15 chars) and the current
-menuBar is pushed onto the stack
-
-=item B<[menu]>
-
-access the current menuBar for alteration
-
-=item B<< [title:+I] >>
-
-set the current menuBar's title to I, which may contain the
-following format specifiers:
-
- B<%n> rxvt name (as per the B<-name> command-line option)
- B<%v> rxvt version
- B<%%> literal B<%> character
-
-=item B<[done]>
-
-set menuBar access as B.
-End-of-file tag for B<< [read:+I] >> operations.
-
-=item B<< [read:+I] >>
-
-read menu commands directly from I (extension ".menu" will be
-appended if required.) Start reading at a line with B<[menu]> or B<<
-[menu:+I >> and continuing until B<[done]> is encountered.
-
-Blank and comment lines (starting with B<#>) are ignored. Actually,
-since any invalid menu commands are also ignored, almost anything could
-be construed as a comment line, but this may be tightened up in the
-future ... so don't count on it!.
-
-=item B<< [read:+I;+I] >>
-
-The same as B<< [read:+I] >>, but start reading at a line with
-B<< [menu:+I] >> and continuing until B<< [done:+I] >> or
-B<[done]> is encountered.
-
-=item B<[dump]>
-
-dump all menuBars to the file B in a format suitable for
-later rereading.
-
-=item B<[rm:name]>
-
-remove the named menuBar
-
-=item B<[rm] [rm:]>
-
-remove the current menuBar
-
-=item B<[rm*] [rm:*]>
-
-remove all menuBars
-
-=item B<[swap]>
-
-swap the top two menuBars
-
-=item B<[prev]>
-
-access the previous menuBar
-
-=item B<[next]>
-
-access the next menuBar
-
-=item B<[show]>
-
-Enable display of the menuBar
-
-=item B<[hide]>
-
-Disable display of the menuBar
-
-=item B<< [pixmap:+I] >>
-
-=item B<< [pixmap:+I;I] >>
-
-(set the background pixmap globally
-
-B<< A Future implementation I make this local to the menubar >>)
-
-=item B<< [:+I:] >>
-
-ignore the menu readonly status and issue a I to or a menu or
-menuitem or change the ; a useful shortcut for setting the quick arrows
-from a menuBar.
-
-=back
-
-X
-
-=head2 Adding and accessing menus
-
-The following commands may also be B<+> prefixed.
-
-=over 4
-
-=item B+>
-
-access menuBar top level
-
-=item B<./+>
-
-access current menu level
-
-=item B<../+>
-
-access parent menu (1 level up)
-
-=item B<../../>
-
-access parent menu (multiple levels up)
-
-=item B<< Imenu >>
-
-add/access menu
-
-=item B<< Imenu/* >>
-
-add/access menu and clear it if it exists
-
-=item B<< I{-} >>
-
-add separator
-
-=item B<< I{item} >>
-
-add B- as a label
-
-=item B<< I{item} action >>
-
-add/alter I
is equivalent to B
-
-=back
-
-The left label I necessary, since it's used for matching, but
-implicitly hiding the left label (by using same name for both left and
-right labels), or explicitly hiding the left label (by preceeding it
-with a dot), makes it possible to have right-justified text only.
-
-=over 4
-
-=item For example,
-
-B
-
-=item or hiding it
-
-B
-
-=back
-
-X
-
-=head2 Removing menus
-
-=over 4
-
-=item B<< -/*+ >>
-
-remove all menus from the menuBar, the same as B<[clear]>
-
-=item B<< -+Imenu+ >>
-
-remove menu
-
-=item B<< -+I{item}+ >>
-
-remove item
-
-=item B<< -+I{-} >>
-
-remove separator)
-
-=item B<-/path/menu/*>
-
-remove all items, separators and submenus from menu
-
-=back
-
-X
-
-=head2 Quick Arrows
-
-The menus also provide a hook for I to provide easier
-user access. If nothing has been explicitly set, the default is to
-emulate the curror keys. The syntax permits each arrow to be altered
-individually or all four at once without re-entering their common
-beginning/end text. For example, to explicitly associate cursor actions
-with the arrows, any of the following forms could be used:
-
-=over 4
-
-=item B<< +I >>
-
-=item B<< +I >>
-
-=item B<< +I >>
-
-=item B<< +I >>
-
-Define actions for the respective arrow buttons
-
-=item B<< +I >>
-
-=item B<< +I >>
-
-Define common beginning/end parts for I which used in
-conjunction with the above constructs
-
-=back
-
-=over 4
-
-=item For example, define arrows individually,
-
- \E[A
-
- \E[B
-
- \E[C
-
- \E[D
-
-=item or all at once
-
- \E[AZ<>\E[BZ<>\E[CZ<>\E[D
-
-=item or more compactly (factoring out common parts)
-
- \E[AZ<>BZ<>CZ<>D
-
-=back
-
-X
-
-=head2 Command Summary
-
-A short summary of the most I commands:
-
-=over 4
-
-=item [menu:name]
-
-use an existing named menuBar or start a new one
-
-=item [menu]
-
-use the current menuBar
-
-=item [title:string]
-
-set menuBar title
-
-=item [done]
-
-set menu access to readonly and, if reading from a file, signal EOF
-
-=item [done:name]
-
-if reading from a file using [read:file;name] signal EOF
-
-=item [rm:name]
-
-remove named menuBar(s)
-
-=item [rm] [rm:]
-
-remove current menuBar
-
-=item [rm*] [rm:*]
-
-remove all menuBar(s)
-
-=item [swap]
-
-swap top two menuBars
-
-=item [prev]
-
-access the previous menuBar
-
-=item [next]
-
-access the next menuBar
-
-=item [show]
-
-map menuBar
-
-=item [hide]
-
-unmap menuBar
-
-=item [pixmap;file]
-
-=item [pixmap;file;scaling]
-
-set a background pixmap
-
-=item [read:file]
-
-=item [read:file;name]
-
-read in a menu from a file
-
-=item [dump]
-
-dump out all menuBars to /tmp/rxvt-PID
-
-=item /
-
-access menuBar top level
-
-=item ./
-
-=item ../
-
-=item ../../
-
-access current or parent menu level
-
-=item /path/menu
-
-add/access menu
-
-=item /path/{-}
-
-add separator
-
-=item /path/{item}{rtext} action
-
-add/alter menu item
-
-=item -/*
-
-remove all menus from the menuBar
-
-=item -/path/menu
-
-remove menu items, separators and submenus from menu
-
-=item -/path/menu
-
-remove menu
-
-=item -/path/{item}
-
-remove item
-
-=item -/path/{-}
-
-remove separator
-
-=item BeginRightLeftUpDownEnd
-
-menu quick arrows
-
-=back
X
=head1 XPM
@@ -2506,12 +2030,6 @@ Add support for fading the text when focus is lost (requires C<--enable-transpar
Add support for tinting of transparent backgrounds (requires C<--enable-transparency>).
-=item --enable-menubar (default: off) [DEPRECATED]
-
-Add support for our menu bar system (this interacts badly with dynamic
-locale switching currently). This option is DEPRECATED and will be removed
-in the future.
-
=item --enable-rxvt-scroll (default: on)
Add support for the original rxvt scrollbar.
diff --git a/doc/rxvt.7.txt b/doc/rxvt.7.txt
index 8cbd8e12..32c0363b 100644
--- a/doc/rxvt.7.txt
+++ b/doc/rxvt.7.txt
@@ -46,7 +46,7 @@ FREQUENTLY ASKED QUESTIONS
If you only want to disable specific features, you first have to
identify which perl extension is responsible. For this, read the
- section PREPACKAGED EXTENSIONS in the urxvtperl(3) manpage. For
+ section PREPACKAGED EXTENSIONS in the rxvtperl(3) manpage. For
example, to disable the selection-popup and option-popup, specify
this perl-ext-common resource:
@@ -146,7 +146,7 @@ FREQUENTLY ASKED QUESTIONS
How do I know which rxvt-unicode version I'm using?
The version number is displayed with the usage (-h). Also the escape
sequence "ESC [ 8 n" sets the window title to the version number.
- When using the urxvtc client, the version displayed is that of the
+ When using the rxvtc client, the version displayed is that of the
daemon.
I am using Debian GNU/Linux and have a problem...
@@ -240,7 +240,7 @@ FREQUENTLY ASKED QUESTIONS
Most likely it's the empty definition for "enacs=". Just replace it
by "enacs=\E[0@" and try again.
- "bash"'s readline does not work correctly under urxvt.
+ "bash"'s readline does not work correctly under rxvt.
I need a termcap file entry.
One reason you might want this is that some distributions or
operating systems still compile some programs using the
@@ -361,7 +361,7 @@ FREQUENTLY ASKED QUESTIONS
In that case, select a font of your taste and add it to the font
list, e.g.:
- urxvt -fn basefont,font2,font3...
+ rxvt -fn basefont,font2,font3...
When rxvt-unicode sees a character, it will first look at the base
font. If the base font does not contain the character, it will go to
@@ -721,9 +721,9 @@ FREQUENTLY ASKED QUESTIONS
URxvt.color7: #e1dddd
URxvt.color15: #e1dddd
- How can I start urxvtd in a race-free way?
- Try "urxvtd -f -o", which tells urxvtd to open the display, create
- the listening socket and then fork.
+ How can I start rxvtd in a race-free way?
+ Try "rxvtd -f -o", which tells rxvtd to open the display, create the
+ listening socket and then fork.
What's with the strange Backspace/Delete key behaviour?
Assuming that the physical Backspace key corresponds to the
@@ -746,11 +746,11 @@ FREQUENTLY ASKED QUESTIONS
# use Backspace = ^H
$ stty erase ^H
- $ urxvt
+ $ rxvt
# use Backspace = ^?
$ stty erase ^?
- $ urxvt
+ $ rxvt
Toggle with "ESC [ 36 h" / "ESC [ 36 l".
@@ -788,7 +788,7 @@ FREQUENTLY ASKED QUESTIONS
option you can use the `keysym' resource to alter the keystrings
associated with keysyms.
- Here's an example for a URxvt session started using "urxvt -name
+ Here's an example for a URxvt session started using "rxvt -name
URxvt"
URxvt.keysym.Home: \033[1~
@@ -1254,10 +1254,6 @@ DEC Private Modes
h Send Mouse X & Y on button press.
l No mouse reporting.
- "Ps = 10" (rxvt)
- h menuBar visible
- l menuBar invisible
-
"Ps = 25"
h Visible cursor {cnorm/cvvis}
l Invisible cursor {civis}
@@ -1360,7 +1356,6 @@ XTerm Operating System Commands
Ps = 50 Set fontset to Pt, with the following special values of Pt (rxvt) #+n change up n #-n change down n if n is missing of 0, a value of 1 is used empty change to font0 n change to font n
Ps = 55 Log all scrollback buffer and all of screen to Pt
Ps = 701 Change current locale to Pt, or, if Pt is ?, return the current locale (Compile frills).
- Ps = 703 Menubar command Pt (Compile menubar).
Ps = 704 Change colour of italic characters to Pt
Ps = 705 Change background pixmap tint colour to Pt (Compile transparency).
Ps = 706 Change colour of bold characters to Pt
@@ -1375,334 +1370,6 @@ XTerm Operating System Commands
-menuBar
- The exact syntax used is *almost* solidified. In the menus, DON'T try to
- use menuBar commands that add or remove a menuBar.
-
- Note that in all of the commands, the */path/* *cannot* be omitted: use
- ./ to specify a menu relative to the current menu.
-
- Overview of menuBar operation
- For the menuBar XTerm escape sequence "ESC ] 703 ; Pt ST", the syntax of
- "Pt" can be used for a variety of tasks:
-
- At the top level is the current menuBar which is a member of a circular
- linked-list of other such menuBars.
-
- The menuBar acts as a parent for the various drop-down menus, which in
- turn, may have labels, separator lines, menuItems and subMenus.
-
- The menuItems are the useful bits: you can use them to mimic keyboard
- input or even to send text or escape sequences back to rxvt.
-
- The menuBar syntax is intended to provide a simple yet robust method of
- constructing and manipulating menus and navigating through the menuBars.
-
- The first step is to use the tag [menu:*name*] which creates the menuBar
- called *name* and allows access. You may now or menus, subMenus, and
- menuItems. Finally, use the tag [done] to set the menuBar access as
- readonly to prevent accidental corruption of the menus. To re-access the
- current menuBar for alterations, use the tag [menu], make the
- alterations and then use [done]
-
-
-
- Commands
- [menu:+*name*]
- access the named menuBar for creation or alteration. If a new
- menuBar is created, it is called *name* (max of 15 chars) and the
- current menuBar is pushed onto the stack
-
- [menu]
- access the current menuBar for alteration
-
- [title:+*string*]
- set the current menuBar's title to *string*, which may contain the
- following format specifiers:
-
- B<%n> rxvt name (as per the B<-name> command-line option)
- B<%v> rxvt version
- B<%%> literal B<%> character
-
- [done]
- set menuBar access as readonly. End-of-file tag for [read:+*file*]
- operations.
-
- [read:+*file*]
- read menu commands directly from *file* (extension ".menu" will be
- appended if required.) Start reading at a line with [menu] or
- [menu:+*name* and continuing until [done] is encountered.
-
- Blank and comment lines (starting with #) are ignored. Actually,
- since any invalid menu commands are also ignored, almost anything
- could be construed as a comment line, but this may be tightened up
- in the future ... so don't count on it!.
-
- [read:+*file*;+*name*]
- The same as [read:+*file*], but start reading at a line with
- [menu:+*name*] and continuing until [done:+*name*] or [done] is
- encountered.
-
- [dump]
- dump all menuBars to the file /tmp/rxvt-PID in a format suitable for
- later rereading.
-
- [rm:name]
- remove the named menuBar
-
- [rm] [rm:]
- remove the current menuBar
-
- [rm*] [rm:*]
- remove all menuBars
-
- [swap]
- swap the top two menuBars
-
- [prev]
- access the previous menuBar
-
- [next]
- access the next menuBar
-
- [show]
- Enable display of the menuBar
-
- [hide]
- Disable display of the menuBar
-
- [pixmap:+*name*]
- [pixmap:+*name*;*scaling*]
- (set the background pixmap globally
-
- A Future implementation *may* make this local to the menubar)
-
- [:+*command*:]
- ignore the menu readonly status and issue a *command* to or a menu
- or menuitem or change the ; a useful shortcut for setting the quick
- arrows from a menuBar.
-
-
-
- Adding and accessing menus
- The following commands may also be + prefixed.
-
- /+ access menuBar top level
-
- ./+ access current menu level
-
- ../+
- access parent menu (1 level up)
-
- ../../
- access parent menu (multiple levels up)
-
- */path/*menu
- add/access menu
-
- */path/*menu/*
- add/access menu and clear it if it exists
-
- */path/*{-}
- add separator
-
- */path/*{item}
- add item as a label
-
- */path/*{item} action
- add/alter *menuitem* with an associated *action*
-
- */path/*{item}{right-text}
- add/alter *menuitem* with right-text as the right-justified text and
- as the associated *action*
-
- */path/*{item}{rtext} action
- add/alter *menuitem* with an associated *action* and with rtext as
- the right-justified text.
-
- Special characters in *action* must be backslash-escaped:
- \a \b \E \e \n \r \t \octal
-
- or in control-character notation:
- ^@, ^A .. ^Z .. ^_, ^?
-
- To send a string starting with a NUL (^@) character to the program,
- start *action* with a pair of NUL characters (^@^@), the first of which
- will be stripped off and the balance directed to the program. Otherwise
- if *action* begins with NUL followed by non-+NUL characters, the leading
- NUL is stripped off and the balance is sent back to rxvt.
-
- As a convenience for the many Emacs-type editors, *action* may start
- with M- (eg, M-$ is equivalent to \E$) and a CR will be appended if
- missed from M-x commands.
-
- As a convenience for issuing XTerm ESC ] sequences from a menubar (or
- quick arrow), a BEL (^G) will be appended if needed.
-
- For example,
- M-xapropos is equivalent to \Exapropos\r
-
- and \E]703;mona;100 is equivalent to \E]703;mona;100\a
-
- The option {*right-rtext*} will be right-justified. In the absence of a
- specified action, this text will be used as the *action* as well.
-
- For example,
- /File/{Open}{^X^F} is equivalent to /File/{Open}{^X^F} ^X^F
-
- The left label *is* necessary, since it's used for matching, but
- implicitly hiding the left label (by using same name for both left and
- right labels), or explicitly hiding the left label (by preceeding it
- with a dot), makes it possible to have right-justified text only.
-
- For example,
- /File/{Open}{Open} Open-File-Action
-
- or hiding it
- /File/{.anylabel}{Open} Open-File-Action
-
-
-
- Removing menus
- -/*+
- remove all menus from the menuBar, the same as [clear]
-
- -+*/path*menu+
- remove menu
-
- -+*/path*{item}+
- remove item
-
- -+*/path*{-}
- remove separator)
-
- -/path/menu/*
- remove all items, separators and submenus from menu
-
-
-
- Quick Arrows
- The menus also provide a hook for *quick arrows* to provide easier user
- access. If nothing has been explicitly set, the default is to emulate
- the curror keys. The syntax permits each arrow to be altered
- individually or all four at once without re-entering their common
- beginning/end text. For example, to explicitly associate cursor actions
- with the arrows, any of the following forms could be used:
-
- +*Right*
- +*Left*
- +*Up*
- +*Down*
- Define actions for the respective arrow buttons
-
- +*Begin*
- +*End*
- Define common beginning/end parts for *quick arrows* which used in
- conjunction with the above constructs
-
- For example, define arrows individually,
- \E[A
-
- \E[B
-
- \E[C
-
- \E[D
-
- or all at once
- \E[AZ<>\E[BZ<>\E[CZ<>\E[D
-
- or more compactly (factoring out common parts)
- \E[AZ<>BZ<>CZ<>D
-
-
-
- Command Summary
- A short summary of the most *common* commands:
-
- [menu:name]
- use an existing named menuBar or start a new one
-
- [menu]
- use the current menuBar
-
- [title:string]
- set menuBar title
-
- [done]
- set menu access to readonly and, if reading from a file, signal EOF
-
- [done:name]
- if reading from a file using [read:file;name] signal EOF
-
- [rm:name]
- remove named menuBar(s)
-
- [rm] [rm:]
- remove current menuBar
-
- [rm*] [rm:*]
- remove all menuBar(s)
-
- [swap]
- swap top two menuBars
-
- [prev]
- access the previous menuBar
-
- [next]
- access the next menuBar
-
- [show]
- map menuBar
-
- [hide]
- unmap menuBar
-
- [pixmap;file]
- [pixmap;file;scaling]
- set a background pixmap
-
- [read:file]
- [read:file;name]
- read in a menu from a file
-
- [dump]
- dump out all menuBars to /tmp/rxvt-PID
-
- / access menuBar top level
-
- ./
- ../
- ../../
- access current or parent menu level
-
- /path/menu
- add/access menu
-
- /path/{-}
- add separator
-
- /path/{item}{rtext} action
- add/alter menu item
-
- -/* remove all menus from the menuBar
-
- -/path/menu
- remove menu items, separators and submenus from menu
-
- -/path/menu
- remove menu
-
- -/path/{item}
- remove item
-
- -/path/{-}
- remove separator
-
- BeginRightLeftUpDownEnd
- menu quick arrows
-
XPM
For the XPM XTerm escape sequence "ESC ] 20 ; Pt ST" then value of "Pt"
can be the name of the background pixmap followed by a sequence of
@@ -1967,11 +1634,6 @@ CONFIGURE OPTIONS
Add support for tinting of transparent backgrounds (requires
"--enable-transparency").
- --enable-menubar (default: off) [DEPRECATED]
- Add support for our menu bar system (this interacts badly with
- dynamic locale switching currently). This option is DEPRECATED and
- will be removed in the future.
-
--enable-rxvt-scroll (default: on)
Add support for the original rxvt scrollbar.
@@ -2005,13 +1667,6 @@ CONFIGURE OPTIONS
--disable-resources
Removes any support for resource checking.
- --enable-strings (default: off)
- Add support for our possibly faster memset() function and other
- various routines, overriding your system's versions which may have
- been hand-crafted in assembly or may require extra libraries to link
- in. (this breaks ANSI-C rules and has problems on many GNU/Linux
- systems).
-
--disable-swapscreen
Remove support for secondary/swap screen.
@@ -2042,7 +1697,7 @@ CONFIGURE OPTIONS
sgr modes 90..97 and 100..107
--enable-iso14755 (default: on)
- Enable extended ISO 14755 support (see urxvt(1), or doc/rxvt.1.txt).
+ Enable extended ISO 14755 support (see rxvt(1), or doc/rxvt.1.txt).
Basic support (section 5.1) is enabled by "--enable-frills", while
support for 5.2, 5.3 and 5.4 is enabled with this switch.
@@ -2083,7 +1738,7 @@ CONFIGURE OPTIONS
Add support to have the pointer disappear when typing or inactive.
--enable-perl (default: off)
- Enable an embedded perl interpreter. See the urxvtperl(3) manpage
+ Enable an embedded perl interpreter. See the rxvtperl(3) manpage
(doc/rxvtperl.txt) for more info on this feature, or the files in
src/perl-ext/ for the extensions that are installed by default. The
perl interpreter that is used can be specified via the "PERL"
diff --git a/src/Makefile.in b/src/Makefile.in
index d26f13f3..5a5f563f 100644
--- a/src/Makefile.in
+++ b/src/Makefile.in
@@ -21,10 +21,10 @@ first_rule: all
dummy:
COMMON = \
- command.o rxvtfont.o init.o logging.o @PERL_O@ \
- main.o menubar.o misc.o netdisp.o ptytty.o screen.o \
- scrollbar.o scrollbar-next.o scrollbar-rxvt.o scrollbar-xterm.o scrollbar-plain.o \
- xdefaults.o xpm.o encoding.o rxvttoolkit.o rxvtutil.o iom.o keyboard.o
+ command.o rxvtfont.o init.o logging.o main.o misc.o netdisp.o \
+ ptytty.o screen.o \ scrollbar.o scrollbar-next.o scrollbar-rxvt.o \
+ scrollbar-xterm.o scrollbar-plain.o xdefaults.o xpm.o encoding.o \
+ rxvttoolkit.o rxvtutil.o iom.o keyboard.o @PERL_O@
COMMON_DAEMON = rxvtdaemon.o fdpass.o
@@ -124,8 +124,8 @@ depend:
command.o: ../config.h rxvt.h rxvtlib.h ptytty.h feature.h optinc.h
command.o: encoding.h rxvtfont.h rxvtutil.h rxvttoolkit.h iom.h iom_conf.h
-command.o: callback.h salloc.h rxvtperl.h hookinc.h rsinc.h menubar.h
-command.o: version.h command.h keyboard.h
+command.o: callback.h salloc.h rxvtperl.h hookinc.h rsinc.h version.h
+command.o: command.h keyboard.h
encoding.o: ../config.h encoding.h table/iso8859_1.h table/iso8859_15.h
encoding.o: table/iso8859_2.h table/iso8859_3.h table/iso8859_4.h
encoding.o: table/iso8859_5.h table/iso8859_6.h table/iso8859_7.h
@@ -143,95 +143,84 @@ encoding.o: table/jis0212_1990_0.h table/jis0213_1.h table/jis0213_2.h
encoding.o: table/compose.h table/category.h
fdpass.o: ../config.h rxvt.h rxvtlib.h ptytty.h feature.h optinc.h encoding.h
fdpass.o: rxvtfont.h rxvtutil.h rxvttoolkit.h iom.h iom_conf.h callback.h
-fdpass.o: salloc.h rxvtperl.h hookinc.h rsinc.h menubar.h fdpass.h
+fdpass.o: salloc.h rxvtperl.h hookinc.h rsinc.h fdpass.h
init.o: ../config.h rxvt.h rxvtlib.h ptytty.h feature.h optinc.h encoding.h
init.o: rxvtfont.h rxvtutil.h rxvttoolkit.h iom.h iom_conf.h callback.h
-init.o: salloc.h rxvtperl.h hookinc.h rsinc.h menubar.h init.h
+init.o: salloc.h rxvtperl.h hookinc.h rsinc.h init.h
iom.o: iom.h iom_conf.h rxvtutil.h callback.h
keyboard.o: ../config.h rxvt.h rxvtlib.h ptytty.h feature.h optinc.h
keyboard.o: encoding.h rxvtfont.h rxvtutil.h rxvttoolkit.h iom.h iom_conf.h
-keyboard.o: callback.h salloc.h rxvtperl.h hookinc.h rsinc.h menubar.h
-keyboard.o: keyboard.h command.h
+keyboard.o: callback.h salloc.h rxvtperl.h hookinc.h rsinc.h keyboard.h
+keyboard.o: command.h
logging.o: ../config.h rxvt.h rxvtlib.h ptytty.h feature.h optinc.h
logging.o: encoding.h rxvtfont.h rxvtutil.h rxvttoolkit.h iom.h iom_conf.h
-logging.o: callback.h salloc.h rxvtperl.h hookinc.h rsinc.h menubar.h
-logging.o: logging.h
+logging.o: callback.h salloc.h rxvtperl.h hookinc.h rsinc.h logging.h
main.o: ../config.h rxvt.h rxvtlib.h ptytty.h feature.h optinc.h encoding.h
main.o: rxvtfont.h rxvtutil.h rxvttoolkit.h iom.h iom_conf.h callback.h
-main.o: salloc.h rxvtperl.h hookinc.h rsinc.h menubar.h keyboard.h
-menubar.o: ../config.h rxvt.h rxvtlib.h ptytty.h feature.h optinc.h
-menubar.o: encoding.h rxvtfont.h rxvtutil.h rxvttoolkit.h iom.h iom_conf.h
-menubar.o: callback.h salloc.h rxvtperl.h hookinc.h rsinc.h menubar.h
-menubar.o: version.h
+main.o: salloc.h rxvtperl.h hookinc.h rsinc.h keyboard.h
misc.o: ../config.h rxvt.h rxvtlib.h ptytty.h feature.h optinc.h encoding.h
misc.o: rxvtfont.h rxvtutil.h rxvttoolkit.h iom.h iom_conf.h callback.h
-misc.o: salloc.h rxvtperl.h hookinc.h rsinc.h menubar.h
+misc.o: salloc.h rxvtperl.h hookinc.h rsinc.h
netdisp.o: ../config.h rxvt.h rxvtlib.h ptytty.h feature.h optinc.h
netdisp.o: encoding.h rxvtfont.h rxvtutil.h rxvttoolkit.h iom.h iom_conf.h
-netdisp.o: callback.h salloc.h rxvtperl.h hookinc.h rsinc.h menubar.h
+netdisp.o: callback.h salloc.h rxvtperl.h hookinc.h rsinc.h
ptytty.o: ../config.h rxvt.h rxvtlib.h ptytty.h feature.h optinc.h encoding.h
ptytty.o: rxvtfont.h rxvtutil.h rxvttoolkit.h iom.h iom_conf.h callback.h
-ptytty.o: salloc.h rxvtperl.h hookinc.h rsinc.h menubar.h
+ptytty.o: salloc.h rxvtperl.h hookinc.h rsinc.h
rxvt.o: ../config.h rxvt.h rxvtlib.h ptytty.h feature.h optinc.h encoding.h
rxvt.o: rxvtfont.h rxvtutil.h rxvttoolkit.h iom.h iom_conf.h callback.h
-rxvt.o: salloc.h rxvtperl.h hookinc.h rsinc.h menubar.h
+rxvt.o: salloc.h rxvtperl.h hookinc.h rsinc.h
rxvtc.o: ../config.h rxvtdaemon.h rxvtutil.h fdpass.h rxvt.h rxvtlib.h
rxvtc.o: ptytty.h feature.h optinc.h encoding.h rxvtfont.h rxvttoolkit.h
rxvtc.o: iom.h iom_conf.h callback.h salloc.h rxvtperl.h hookinc.h rsinc.h
-rxvtc.o: menubar.h
rxvtd.o: ../config.h rxvt.h rxvtlib.h ptytty.h feature.h optinc.h encoding.h
rxvtd.o: rxvtfont.h rxvtutil.h rxvttoolkit.h iom.h iom_conf.h callback.h
-rxvtd.o: salloc.h rxvtperl.h hookinc.h rsinc.h menubar.h rxvtdaemon.h
-rxvtd.o: fdpass.h
+rxvtd.o: salloc.h rxvtperl.h hookinc.h rsinc.h rxvtdaemon.h fdpass.h
rxvtdaemon.o: rxvtdaemon.h rxvtutil.h
rxvtfont.o: ../config.h rxvt.h rxvtlib.h ptytty.h feature.h optinc.h
rxvtfont.o: encoding.h rxvtfont.h rxvtutil.h rxvttoolkit.h iom.h iom_conf.h
-rxvtfont.o: callback.h salloc.h rxvtperl.h hookinc.h rsinc.h menubar.h
-rxvtfont.o: table/linedraw.h
+rxvtfont.o: callback.h salloc.h rxvtperl.h hookinc.h rsinc.h table/linedraw.h
rxvtperl.o: ../config.h iom.h iom_conf.h rxvtutil.h callback.h rxvt.h
rxvtperl.o: rxvtlib.h ptytty.h feature.h optinc.h encoding.h rxvtfont.h
-rxvtperl.o: rxvttoolkit.h salloc.h rxvtperl.h hookinc.h rsinc.h menubar.h
-rxvtperl.o: keyboard.h perlxsi.c
+rxvtperl.o: rxvttoolkit.h salloc.h rxvtperl.h hookinc.h rsinc.h keyboard.h
+rxvtperl.o: perlxsi.c
rxvttoolkit.o: ../config.h rxvt.h rxvtlib.h ptytty.h feature.h optinc.h
rxvttoolkit.o: encoding.h rxvtfont.h rxvtutil.h rxvttoolkit.h iom.h
rxvttoolkit.o: iom_conf.h callback.h salloc.h rxvtperl.h hookinc.h rsinc.h
-rxvttoolkit.o: menubar.h
rxvtutil.o: rxvtutil.h
salloc.o: salloc.h
screen.o: ../config.h rxvt.h rxvtlib.h ptytty.h feature.h optinc.h encoding.h
screen.o: rxvtfont.h rxvtutil.h rxvttoolkit.h iom.h iom_conf.h callback.h
-screen.o: salloc.h rxvtperl.h hookinc.h rsinc.h menubar.h salloc.C
+screen.o: salloc.h rxvtperl.h hookinc.h rsinc.h salloc.C
scrollbar-next.o: ../config.h rxvt.h rxvtlib.h ptytty.h feature.h optinc.h
scrollbar-next.o: encoding.h rxvtfont.h rxvtutil.h rxvttoolkit.h iom.h
scrollbar-next.o: iom_conf.h callback.h salloc.h rxvtperl.h hookinc.h rsinc.h
-scrollbar-next.o: menubar.h
scrollbar-plain.o: ../config.h rxvt.h rxvtlib.h ptytty.h feature.h optinc.h
scrollbar-plain.o: encoding.h rxvtfont.h rxvtutil.h rxvttoolkit.h iom.h
scrollbar-plain.o: iom_conf.h callback.h salloc.h rxvtperl.h hookinc.h
-scrollbar-plain.o: rsinc.h menubar.h
+scrollbar-plain.o: rsinc.h
scrollbar-rxvt.o: ../config.h rxvt.h rxvtlib.h ptytty.h feature.h optinc.h
scrollbar-rxvt.o: encoding.h rxvtfont.h rxvtutil.h rxvttoolkit.h iom.h
scrollbar-rxvt.o: iom_conf.h callback.h salloc.h rxvtperl.h hookinc.h rsinc.h
-scrollbar-rxvt.o: menubar.h
scrollbar-xterm.o: ../config.h rxvt.h rxvtlib.h ptytty.h feature.h optinc.h
scrollbar-xterm.o: encoding.h rxvtfont.h rxvtutil.h rxvttoolkit.h iom.h
scrollbar-xterm.o: iom_conf.h callback.h salloc.h rxvtperl.h hookinc.h
-scrollbar-xterm.o: rsinc.h menubar.h
+scrollbar-xterm.o: rsinc.h
scrollbar.o: ../config.h rxvt.h rxvtlib.h ptytty.h feature.h optinc.h
scrollbar.o: encoding.h rxvtfont.h rxvtutil.h rxvttoolkit.h iom.h iom_conf.h
-scrollbar.o: callback.h salloc.h rxvtperl.h hookinc.h rsinc.h menubar.h
+scrollbar.o: callback.h salloc.h rxvtperl.h hookinc.h rsinc.h
xdefaults.o: ../config.h rxvt.h rxvtlib.h ptytty.h feature.h optinc.h
xdefaults.o: encoding.h rxvtfont.h rxvtutil.h rxvttoolkit.h iom.h iom_conf.h
-xdefaults.o: callback.h salloc.h rxvtperl.h hookinc.h rsinc.h menubar.h
-xdefaults.o: version.h keyboard.h
+xdefaults.o: callback.h salloc.h rxvtperl.h hookinc.h rsinc.h version.h
+xdefaults.o: keyboard.h
xpm.o: ../config.h rxvt.h rxvtlib.h ptytty.h feature.h optinc.h encoding.h
xpm.o: rxvtfont.h rxvtutil.h rxvttoolkit.h iom.h iom_conf.h callback.h
-xpm.o: salloc.h rxvtperl.h hookinc.h rsinc.h menubar.h
+xpm.o: salloc.h rxvtperl.h hookinc.h rsinc.h
command.lo: ../config.h rxvt.h rxvtlib.h ptytty.h feature.h optinc.h
command.lo: encoding.h rxvtfont.h rxvtutil.h rxvttoolkit.h iom.h iom_conf.h
-command.lo: callback.h salloc.h rxvtperl.h hookinc.h rsinc.h menubar.h
-command.lo: version.h command.h keyboard.h
+command.lo: callback.h salloc.h rxvtperl.h hookinc.h rsinc.h version.h
+command.lo: command.h keyboard.h
encoding.lo: ../config.h encoding.h table/iso8859_1.h table/iso8859_15.h
encoding.lo: table/iso8859_2.h table/iso8859_3.h table/iso8859_4.h
encoding.lo: table/iso8859_5.h table/iso8859_6.h table/iso8859_7.h
@@ -249,89 +238,79 @@ encoding.lo: table/jis0212_1990_0.h table/jis0213_1.h table/jis0213_2.h
encoding.lo: table/compose.h table/category.h
fdpass.lo: ../config.h rxvt.h rxvtlib.h ptytty.h feature.h optinc.h
fdpass.lo: encoding.h rxvtfont.h rxvtutil.h rxvttoolkit.h iom.h iom_conf.h
-fdpass.lo: callback.h salloc.h rxvtperl.h hookinc.h rsinc.h menubar.h
-fdpass.lo: fdpass.h
+fdpass.lo: callback.h salloc.h rxvtperl.h hookinc.h rsinc.h fdpass.h
init.lo: ../config.h rxvt.h rxvtlib.h ptytty.h feature.h optinc.h encoding.h
init.lo: rxvtfont.h rxvtutil.h rxvttoolkit.h iom.h iom_conf.h callback.h
-init.lo: salloc.h rxvtperl.h hookinc.h rsinc.h menubar.h init.h
+init.lo: salloc.h rxvtperl.h hookinc.h rsinc.h init.h
iom.lo: iom.h iom_conf.h rxvtutil.h callback.h
keyboard.lo: ../config.h rxvt.h rxvtlib.h ptytty.h feature.h optinc.h
keyboard.lo: encoding.h rxvtfont.h rxvtutil.h rxvttoolkit.h iom.h iom_conf.h
-keyboard.lo: callback.h salloc.h rxvtperl.h hookinc.h rsinc.h menubar.h
-keyboard.lo: keyboard.h command.h
+keyboard.lo: callback.h salloc.h rxvtperl.h hookinc.h rsinc.h keyboard.h
+keyboard.lo: command.h
logging.lo: ../config.h rxvt.h rxvtlib.h ptytty.h feature.h optinc.h
logging.lo: encoding.h rxvtfont.h rxvtutil.h rxvttoolkit.h iom.h iom_conf.h
-logging.lo: callback.h salloc.h rxvtperl.h hookinc.h rsinc.h menubar.h
-logging.lo: logging.h
+logging.lo: callback.h salloc.h rxvtperl.h hookinc.h rsinc.h logging.h
main.lo: ../config.h rxvt.h rxvtlib.h ptytty.h feature.h optinc.h encoding.h
main.lo: rxvtfont.h rxvtutil.h rxvttoolkit.h iom.h iom_conf.h callback.h
-main.lo: salloc.h rxvtperl.h hookinc.h rsinc.h menubar.h keyboard.h
-menubar.lo: ../config.h rxvt.h rxvtlib.h ptytty.h feature.h optinc.h
-menubar.lo: encoding.h rxvtfont.h rxvtutil.h rxvttoolkit.h iom.h iom_conf.h
-menubar.lo: callback.h salloc.h rxvtperl.h hookinc.h rsinc.h menubar.h
-menubar.lo: version.h
+main.lo: salloc.h rxvtperl.h hookinc.h rsinc.h keyboard.h
misc.lo: ../config.h rxvt.h rxvtlib.h ptytty.h feature.h optinc.h encoding.h
misc.lo: rxvtfont.h rxvtutil.h rxvttoolkit.h iom.h iom_conf.h callback.h
-misc.lo: salloc.h rxvtperl.h hookinc.h rsinc.h menubar.h
+misc.lo: salloc.h rxvtperl.h hookinc.h rsinc.h
netdisp.lo: ../config.h rxvt.h rxvtlib.h ptytty.h feature.h optinc.h
netdisp.lo: encoding.h rxvtfont.h rxvtutil.h rxvttoolkit.h iom.h iom_conf.h
-netdisp.lo: callback.h salloc.h rxvtperl.h hookinc.h rsinc.h menubar.h
+netdisp.lo: callback.h salloc.h rxvtperl.h hookinc.h rsinc.h
ptytty.lo: ../config.h rxvt.h rxvtlib.h ptytty.h feature.h optinc.h
ptytty.lo: encoding.h rxvtfont.h rxvtutil.h rxvttoolkit.h iom.h iom_conf.h
-ptytty.lo: callback.h salloc.h rxvtperl.h hookinc.h rsinc.h menubar.h
+ptytty.lo: callback.h salloc.h rxvtperl.h hookinc.h rsinc.h
rxvt.lo: ../config.h rxvt.h rxvtlib.h ptytty.h feature.h optinc.h encoding.h
rxvt.lo: rxvtfont.h rxvtutil.h rxvttoolkit.h iom.h iom_conf.h callback.h
-rxvt.lo: salloc.h rxvtperl.h hookinc.h rsinc.h menubar.h
+rxvt.lo: salloc.h rxvtperl.h hookinc.h rsinc.h
rxvtc.lo: ../config.h rxvtdaemon.h rxvtutil.h fdpass.h rxvt.h rxvtlib.h
rxvtc.lo: ptytty.h feature.h optinc.h encoding.h rxvtfont.h rxvttoolkit.h
rxvtc.lo: iom.h iom_conf.h callback.h salloc.h rxvtperl.h hookinc.h rsinc.h
-rxvtc.lo: menubar.h
rxvtd.lo: ../config.h rxvt.h rxvtlib.h ptytty.h feature.h optinc.h encoding.h
rxvtd.lo: rxvtfont.h rxvtutil.h rxvttoolkit.h iom.h iom_conf.h callback.h
-rxvtd.lo: salloc.h rxvtperl.h hookinc.h rsinc.h menubar.h rxvtdaemon.h
-rxvtd.lo: fdpass.h
+rxvtd.lo: salloc.h rxvtperl.h hookinc.h rsinc.h rxvtdaemon.h fdpass.h
rxvtdaemon.lo: rxvtdaemon.h rxvtutil.h
rxvtfont.lo: ../config.h rxvt.h rxvtlib.h ptytty.h feature.h optinc.h
rxvtfont.lo: encoding.h rxvtfont.h rxvtutil.h rxvttoolkit.h iom.h iom_conf.h
-rxvtfont.lo: callback.h salloc.h rxvtperl.h hookinc.h rsinc.h menubar.h
+rxvtfont.lo: callback.h salloc.h rxvtperl.h hookinc.h rsinc.h
rxvtfont.lo: table/linedraw.h
rxvtperl.lo: ../config.h iom.h iom_conf.h rxvtutil.h callback.h rxvt.h
rxvtperl.lo: rxvtlib.h ptytty.h feature.h optinc.h encoding.h rxvtfont.h
-rxvtperl.lo: rxvttoolkit.h salloc.h rxvtperl.h hookinc.h rsinc.h menubar.h
-rxvtperl.lo: keyboard.h perlxsi.c
+rxvtperl.lo: rxvttoolkit.h salloc.h rxvtperl.h hookinc.h rsinc.h keyboard.h
+rxvtperl.lo: perlxsi.c
rxvttoolkit.lo: ../config.h rxvt.h rxvtlib.h ptytty.h feature.h optinc.h
rxvttoolkit.lo: encoding.h rxvtfont.h rxvtutil.h rxvttoolkit.h iom.h
rxvttoolkit.lo: iom_conf.h callback.h salloc.h rxvtperl.h hookinc.h rsinc.h
-rxvttoolkit.lo: menubar.h
rxvtutil.lo: rxvtutil.h
salloc.lo: salloc.h
screen.lo: ../config.h rxvt.h rxvtlib.h ptytty.h feature.h optinc.h
screen.lo: encoding.h rxvtfont.h rxvtutil.h rxvttoolkit.h iom.h iom_conf.h
-screen.lo: callback.h salloc.h rxvtperl.h hookinc.h rsinc.h menubar.h
-screen.lo: salloc.C
+screen.lo: callback.h salloc.h rxvtperl.h hookinc.h rsinc.h salloc.C
scrollbar-next.lo: ../config.h rxvt.h rxvtlib.h ptytty.h feature.h optinc.h
scrollbar-next.lo: encoding.h rxvtfont.h rxvtutil.h rxvttoolkit.h iom.h
scrollbar-next.lo: iom_conf.h callback.h salloc.h rxvtperl.h hookinc.h
-scrollbar-next.lo: rsinc.h menubar.h
+scrollbar-next.lo: rsinc.h
scrollbar-plain.lo: ../config.h rxvt.h rxvtlib.h ptytty.h feature.h optinc.h
scrollbar-plain.lo: encoding.h rxvtfont.h rxvtutil.h rxvttoolkit.h iom.h
scrollbar-plain.lo: iom_conf.h callback.h salloc.h rxvtperl.h hookinc.h
-scrollbar-plain.lo: rsinc.h menubar.h
+scrollbar-plain.lo: rsinc.h
scrollbar-rxvt.lo: ../config.h rxvt.h rxvtlib.h ptytty.h feature.h optinc.h
scrollbar-rxvt.lo: encoding.h rxvtfont.h rxvtutil.h rxvttoolkit.h iom.h
scrollbar-rxvt.lo: iom_conf.h callback.h salloc.h rxvtperl.h hookinc.h
-scrollbar-rxvt.lo: rsinc.h menubar.h
+scrollbar-rxvt.lo: rsinc.h
scrollbar-xterm.lo: ../config.h rxvt.h rxvtlib.h ptytty.h feature.h optinc.h
scrollbar-xterm.lo: encoding.h rxvtfont.h rxvtutil.h rxvttoolkit.h iom.h
scrollbar-xterm.lo: iom_conf.h callback.h salloc.h rxvtperl.h hookinc.h
-scrollbar-xterm.lo: rsinc.h menubar.h
+scrollbar-xterm.lo: rsinc.h
scrollbar.lo: ../config.h rxvt.h rxvtlib.h ptytty.h feature.h optinc.h
scrollbar.lo: encoding.h rxvtfont.h rxvtutil.h rxvttoolkit.h iom.h iom_conf.h
-scrollbar.lo: callback.h salloc.h rxvtperl.h hookinc.h rsinc.h menubar.h
+scrollbar.lo: callback.h salloc.h rxvtperl.h hookinc.h rsinc.h
xdefaults.lo: ../config.h rxvt.h rxvtlib.h ptytty.h feature.h optinc.h
xdefaults.lo: encoding.h rxvtfont.h rxvtutil.h rxvttoolkit.h iom.h iom_conf.h
-xdefaults.lo: callback.h salloc.h rxvtperl.h hookinc.h rsinc.h menubar.h
-xdefaults.lo: version.h keyboard.h
+xdefaults.lo: callback.h salloc.h rxvtperl.h hookinc.h rsinc.h version.h
+xdefaults.lo: keyboard.h
xpm.lo: ../config.h rxvt.h rxvtlib.h ptytty.h feature.h optinc.h encoding.h
xpm.lo: rxvtfont.h rxvtutil.h rxvttoolkit.h iom.h iom_conf.h callback.h
-xpm.lo: salloc.h rxvtperl.h hookinc.h rsinc.h menubar.h
+xpm.lo: salloc.h rxvtperl.h hookinc.h rsinc.h
diff --git a/src/menubar.C b/src/menubar.C
deleted file mode 100644
index f4621b94..00000000
--- a/src/menubar.C
+++ /dev/null
@@ -1,2439 +0,0 @@
-/*--------------------------------*-C-*---------------------------------*
- * File: menubar.C
- *----------------------------------------------------------------------*
- *
- * Copyright (c) 1997,1998 mj olesen
- * Copyright (c) 2004 Marc Lehmann
- *
- * 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.
- *----------------------------------------------------------------------*
- * refer.html (or refer.txt) contains up-to-date documentation. The
- * summary that appears at the end of this file was taken from there.
- *----------------------------------------------------------------------*/
-
-#include "../config.h" /* NECESSARY */
-
-#include
-
-#include "rxvt.h" /* NECESSARY */
-#ifdef MENUBAR
-#include "version.h"
-#include "menubar.h"
-
-#define Menu_PixelWidth(menu) \
- (2 * MENU_SHADOW + Width2Pixel ((menu)->width + 3 * HSPACE))
-
-static const struct
- {
- const char name; /* (l)eft, (u)p, (d)own, (r)ight */
- const char str[5]; /* str[0] = strlen (str+1) */
- }
-Arrows[NARROWS] = {
- { 'l', "\003\033[D" },
- { 'u', "\003\033[A" },
- { 'd', "\003\033[B" },
- { 'r', "\003\033[C" }
- };
-
-/*}}} */
-
-static void
-draw_string (rxvt_drawable &d, GC gc, rxvt_fontset *fs, int x, int y, char *str, int len)
-{
- mbstate mbs;
-
- while (len)
- {
- wchar_t w;
- int l = mbrtowc (&w, str, len, mbs);
-
- if (l <= 0)
- break;
-
- len -= l;
- str += l;
-
- rxvt_font *font = (*fs)[fs->find_font (w)];
- text_t ch = w;
- font->draw (d, x, y, &ch, 1, Color_bg, Color_scroll);
-
- x += font->width * wcwidth (w);
- }
-}
-
-/*
- * find an item called NAME in MENU
- */
-menuitem_t *
-rxvt_menuitem_find (const menu_t *menu, const char *name)
-{
- menuitem_t *item;
-
-#ifdef DEBUG_STRICT
- assert (name != NULL);
- assert (menu != NULL);
-#endif
-
- /* find the last item in the menu, this is good for separators */
- for (item = menu->tail; item != NULL; item = item->prev)
- {
- if (item->entry.type == MenuSubMenu)
- {
- if (!strcmp (name, (item->entry.submenu.menu)->name))
- break;
- }
- else if ((isSeparator (name) && isSeparator (item->name))
- || !strcmp (name, item->name))
- break;
- }
- return item;
-}
-
-/*
- * unlink ITEM from its MENU and free its memory
- */
-void
-rxvt_term::menuitem_free (menu_t *menu, menuitem_t *item)
-{
- /* disconnect */
- menuitem_t *prev, *next;
-
-#ifdef DEBUG_STRICT
- assert (menu != NULL);
-#endif
-
- prev = item->prev;
- next = item->next;
- if (prev != NULL)
- prev->next = next;
- if (next != NULL)
- next->prev = prev;
-
- /* new head, tail */
- if (menu->tail == item)
- menu->tail = prev;
- if (menu->head == item)
- menu->head = next;
-
- switch (item->entry.type)
- {
- case MenuAction:
- case MenuTerminalAction:
- free (item->entry.action.str);
- break;
- case MenuSubMenu:
- menu_delete (item->entry.submenu.menu);
- break;
- }
- if (item->name != NULL)
- free (item->name);
- if (item->name2 != NULL)
- free (item->name2);
- free (item);
-}
-
-/*
- * sort command vs. terminal actions and
- * remove the first character of STR if it's '\0'
- */
-int
-rxvt_action_type (action_t *action, char *str)
-{
- unsigned int len;
-
-#if defined (DEBUG_MENU) || defined (DEBUG_MENUARROWS)
- len = strlen (str);
- fprintf (stderr, " (len %d) = %s\n", len, str);
-#else
- len = rxvt_Str_escaped ((char *)str);
-#endif
-
- if (!len)
- return -1;
-
- /* sort command vs. terminal actions */
- action->type = MenuAction;
- if (str[0] == '\0')
- {
- /* the functional equivalent: memmove (str, str+1, len); */
- char *dst = (str);
- char *src = (str + 1);
- char *end = (str + len);
-
- while (src <= end)
- *dst++ = *src++;
-
- len--; /* decrement length */
- if (str[0] != '\0')
- action->type = MenuTerminalAction;
- }
-
- action->str = str;
- action->len = len;
-
- return 0;
-}
-
-int
-rxvt_term::action_dispatch (action_t *action)
-{
- switch (action->type)
- {
- case MenuTerminalAction:
- cmd_write (action->str, action->len);
- break;
-
- case MenuAction:
- tt_write (action->str, action->len);
- break;
-
- default:
- return -1;
- break;
- }
- return 0;
-}
-
-/* return the arrow index corresponding to NAME */
-int
-rxvt_menuarrow_find (char name)
-{
- int i;
-
- for (i = 0; i < NARROWS; i++)
- if (name == Arrows[i].name)
- return i;
- return -1;
-}
-
-/* free the memory associated with arrow NAME of the current menubar */
-void
-rxvt_term::menuarrow_free (char name)
-{
- int i;
-
- if (name)
- {
- i = rxvt_menuarrow_find (name);
- if (i >= 0)
- {
- action_t *act = & (CurrentBar->arrows[i]);
-
- switch (act->type)
- {
- case MenuAction:
- case MenuTerminalAction:
- free (act->str);
- act->str = NULL;
- act->len = 0;
- break;
- }
- act->type = MenuLabel;
- }
- }
- else
- {
- for (i = 0; i < NARROWS; i++)
- menuarrow_free (Arrows[i].name);
- }
-}
-
-void
-rxvt_term::menuarrow_add (char *string)
-{
- int i;
- unsigned xtra_len;
- char *p;
- struct
- {
- char *str;
- int len;
- }
- beg = { NULL, 0 },
- end = { NULL, 0 },
- *cur,
- parse[NARROWS];
-
- memset (parse, 0, sizeof (parse));
-
- /* fprintf (stderr, "add arrows = `%s'\n", string); */
- for (p = string; p != NULL && *p; string = p)
- {
- p = (string + 3);
- /* fprintf (stderr, "parsing at %s\n", string); */
- switch (string[1])
- {
- case 'b':
- cur = &beg;
- break;
- case 'e':
- cur = &end;
- break;
-
- default:
- i = rxvt_menuarrow_find (string[1]);
- if (i >= 0)
- cur = & (parse[i]);
- else
- continue; /* not found */
- break;
- }
-
- string = p;
- cur->str = string;
- cur->len = 0;
-
- if (cur == &end)
- {
- p = strchr (string, '\0');
- }
- else
- {
- char *next = string;
-
- while (1)
- {
- p = strchr (next, '<');
- if (p != NULL)
- {
- if (p[1] && p[2] == '>')
- break;
- /* parsed */
- }
- else
- {
- if (beg.str == NULL) /* no end needed */
- p = strchr (next, '\0');
- break;
- }
- next = (p + 1);
- }
- }
-
- if (p == NULL)
- return;
- cur->len = (p - string);
- }
-
-#ifdef DEBUG_MENUARROWS
- cur = &beg;
- fprintf (stderr, " (len %d) = %.*s\n",
- cur->len, cur->len, (cur->str ? cur->str : ""));
- for (i = 0; i < NARROWS; i++)
- {
- cur = & (parse[i]);
- fprintf (stderr, "<%c> (len %d) = %.*s\n",
- Arrows[i].name,
- cur->len, cur->len, (cur->str ? cur->str : ""));
- }
- cur = &end;
- fprintf (stderr, " (len %d) = %.*s\n",
- cur->len, cur->len, (cur->str ? cur->str : ""));
-#endif
-
- xtra_len = (beg.len + end.len);
- for (i = 0; i < NARROWS; i++)
- {
- if (xtra_len || parse[i].len)
- menuarrow_free (Arrows[i].name);
- }
-
- for (i = 0; i < NARROWS; i++)
- {
- char *str;
- unsigned int len;
-
- if (!parse[i].len)
- continue;
-
- str = (char *)rxvt_malloc (parse[i].len + xtra_len + 1);
-
- len = 0;
- if (beg.len)
- {
- strncpy (str + len, beg.str, beg.len);
- len += beg.len;
- }
- strncpy (str + len, parse[i].str, parse[i].len);
- len += parse[i].len;
-
- if (end.len)
- {
- strncpy (str + len, end.str, end.len);
- len += end.len;
- }
- str[len] = '\0';
-
-#ifdef DEBUG_MENUARROWS
- fprintf (stderr, "<%c> (len %d) = %s\n", Arrows[i].name, len, str);
-#endif
- if (rxvt_action_type (& (CurrentBar->arrows[i]), str) < 0)
- free (str);
- }
-}
-
-menuitem_t *
-rxvt_menuitem_add (menu_t *menu, const char *name, const char *name2, const char *action)
-{
- menuitem_t *item;
- unsigned int len;
-
-#ifdef DEBUG_STRICT
- assert (name != NULL);
- assert (action != NULL);
-#endif
-
- if (menu == NULL)
- return NULL;
-
- if (isSeparator (name))
- {
- /* add separator, no action */
- name = "";
- action = "";
- }
- else
- {
- /*
- * add/replace existing menu item
- */
- item = rxvt_menuitem_find (menu, name);
- if (item != NULL)
- {
- if (item->name2 != NULL && name2 != NULL)
- {
- free (item->name2);
- item->len2 = 0;
- item->name2 = NULL;
- }
- switch (item->entry.type)
- {
- case MenuAction:
- case MenuTerminalAction:
- free (item->entry.action.str);
- item->entry.action.str = NULL;
- break;
- }
- goto Item_Found;
- }
- }
- /* allocate a new itemect */
- item = (menuitem_t *) rxvt_malloc (sizeof (menuitem_t));
-
- item->len2 = 0;
- item->name2 = NULL;
-
- len = strlen (name);
- item->name = (char *)rxvt_malloc (len + 1);
- strcpy (item->name, name);
- if (name[0] == '.' && name[1] != '.')
- len = 0; /* hidden menu name */
- item->len = len;
-
- /* add to tail of list */
- item->prev = menu->tail;
- item->next = NULL;
-
- if (menu->tail != NULL)
- (menu->tail)->next = item;
- menu->tail = item;
- /* fix head */
- if (menu->head == NULL)
- menu->head = item;
-
- /*
- * add action
- */
-Item_Found:
- if (name2 != NULL && item->name2 == NULL)
- {
- len = strlen (name2);
- if (len == 0)
- item->name2 = NULL;
- else
- {
- item->name2 = (char *)rxvt_malloc (len + 1);
- strcpy (item->name2, name2);
- }
- item->len2 = len;
- }
- item->entry.type = MenuLabel;
- len = strlen (action);
-
- if (len == 0 && item->name2 != NULL)
- {
- action = item->name2;
- len = item->len2;
- }
- if (len)
- {
- char *str = (char *)rxvt_malloc (len + 1);
-
- strcpy (str, action);
-
- if (rxvt_action_type (& (item->entry.action), str) < 0)
- free (str);
- }
- /* new item and a possible increase in width */
- if (menu->width < (item->len + item->len2))
- menu->width = (item->len + item->len2);
-
- return item;
-}
-
-/*
- * search for the base starting menu for NAME.
- * return a pointer to the portion of NAME that remains
- */
-char *
-rxvt_term::menu_find_base (menu_t **menu, char *path)
-{
- menu_t *m = NULL;
- menuitem_t *item;
-
-#ifdef DEBUG_STRICT
- assert (menu != NULL);
- assert (CurrentBar != NULL);
-#endif
-
- if (path[0] == '\0')
- return path;
-
- if (strchr (path, '/') != NULL)
- {
- char *p = path;
-
- while ((p = strchr (p, '/')) != NULL)
- {
- p++;
- if (*p == '/')
- path = p;
- }
-
- if (path[0] == '/')
- {
- path++;
- *menu = NULL;
- }
-
- while ((p = strchr (path, '/')) != NULL)
- {
- p[0] = '\0';
- if (path[0] == '\0')
- return NULL;
-
- if (!strcmp (path, DOT))
- {
- /* nothing to do */
- }
- else if (!strcmp (path, DOTS))
- {
- if (*menu != NULL)
- *menu = (*menu)->parent;
- }
- else
- {
- path = menu_find_base (menu, path);
- if (path[0] != '\0')
- { /* not found */
- p[0] = '/'; /* fix-up name again */
- return path;
- }
- }
-
- path = (p + 1);
- }
- }
-
- if (!strcmp (path, DOTS))
- {
- path += strlen (DOTS);
- if (*menu != NULL)
- *menu = (*menu)->parent;
- return path;
- }
-
- /* find this menu */
- if (*menu == NULL)
- {
- for (m = CurrentBar->tail; m != NULL; m = m->prev)
- if (!strcmp (path, m->name))
- break;
- }
- else
- {
- /* find this menu */
- for (item = (*menu)->tail; item != NULL; item = item->prev)
- {
- if (item->entry.type == MenuSubMenu
- && !strcmp (path, (item->entry.submenu.menu)->name))
- {
- m = (item->entry.submenu.menu);
- break;
- }
- }
- }
-
- if (m != NULL)
- {
- *menu = m;
- path += strlen (path);
- }
-
- return path;
-}
-
-/*
- * delete this entire menu
- */
-menu_t *
-rxvt_term::menu_delete (menu_t *menu)
-{
- menu_t *parent = NULL, *prev, *next;
- menuitem_t *item;
-
-#ifdef DEBUG_STRICT
- assert (CurrentBar != NULL);
-#endif
-
- /* delete the entire menu */
- if (menu == NULL)
- return NULL;
-
- parent = menu->parent;
-
- /* unlink MENU */
- prev = menu->prev;
- next = menu->next;
- if (prev != NULL)
- prev->next = next;
- if (next != NULL)
- next->prev = prev;
-
- /* fix the index */
- if (parent == NULL)
- {
- const int len = (menu->len + HSPACE);
-
- if (CurrentBar->tail == menu)
- CurrentBar->tail = prev;
- if (CurrentBar->head == menu)
- CurrentBar->head = next;
-
- for (next = menu->next; next != NULL; next = next->next)
- next->x -= len;
- }
- else
- {
- for (item = parent->tail; item != NULL; item = item->prev)
- {
- if (item->entry.type == MenuSubMenu
- && item->entry.submenu.menu == menu)
- {
- item->entry.submenu.menu = NULL;
- menuitem_free (menu->parent, item);
- break;
- }
- }
- }
-
- item = menu->tail;
- while (item != NULL)
- {
- menuitem_t *p = item->prev;
-
- menuitem_free (menu, item);
- item = p;
- }
-
- free (menu->name);
- free (menu);
-
- return parent;
-}
-
-menu_t *
-rxvt_term::menu_add (menu_t *parent, char *path)
-{
- menu_t *menu;
-
-#ifdef DEBUG_STRICT
- assert (CurrentBar != NULL);
-#endif
-
- if (strchr (path, '/') != NULL)
- {
- char *p;
-
- if (path[0] == '/')
- {
- /* shouldn't happen */
- path++;
- parent = NULL;
- }
- while ((p = strchr (path, '/')) != NULL)
- {
- p[0] = '\0';
- if (path[0] == '\0')
- return NULL;
-
- parent = menu_add (parent, path);
- path = (p + 1);
- }
- }
- if (!strcmp (path, DOTS))
- return (parent != NULL ? parent->parent : parent);
-
- if (!strcmp (path, DOT) || path[0] == '\0')
- return parent;
-
- /* allocate a new menu */
- menu = (menu_t *) rxvt_malloc (sizeof (menu_t));
-
- menu->width = 0;
- menu->parent = parent;
- menu->len = strlen (path);
- menu->name = (char *)rxvt_malloc ((menu->len + 1));
- strcpy (menu->name, path);
-
- /* initialize head/tail */
- menu->head = menu->tail = NULL;
- menu->prev = menu->next = NULL;
-
- menu->win = None;
- menu->drawable = 0;
- menu->x = menu->y = menu->w = menu->h = 0;
- menu->item = NULL;
-
- /* add to tail of list */
- if (parent == NULL)
- {
- menu->prev = CurrentBar->tail;
- if (CurrentBar->tail != NULL)
- CurrentBar->tail->next = menu;
- CurrentBar->tail = menu;
- if (CurrentBar->head == NULL)
- CurrentBar->head = menu; /* fix head */
- if (menu->prev)
- menu->x = (menu->prev->x + menu->prev->len + HSPACE);
- }
- else
- {
- menuitem_t *item;
-
- item = rxvt_menuitem_add (parent, path, "", "");
- if (item == NULL)
- {
- free (menu);
- return parent;
- }
-#ifdef DEBUG_STRICT
- assert (item->entry.type == MenuLabel);
-#endif
- item->entry.type = MenuSubMenu;
- item->entry.submenu.menu = menu;
- }
-
- return menu;
-}
-
-void
-rxvt_term::drawbox_menubar (int x, int len, int state)
-{
- GC top, bot;
-
- x = Width2Pixel (x);
- len = Width2Pixel (len + HSPACE);
- if (x >= width)
- return;
- else if (x + len >= width)
- len = (this->width - x);
-
-#ifdef MENUBAR_SHADOW_IN
- state = -state;
-#endif
- switch (state)
- {
- case +1:
- top = topShadowGC;
- bot = botShadowGC;
- break; /* SHADOW_OUT */
- case -1:
- top = botShadowGC;
- bot = topShadowGC;
- break; /* SHADOW_IN */
- default:
- top = bot = scrollbarGC;
- break; /* neutral */
- }
-
- rxvt_Draw_Shadow (display->display, menuBar.win, top, bot,
- x, 0, len, menuBar_TotalHeight ());
-}
-
-void
-rxvt_term::drawtriangle (int x, int y, int state)
-{
- GC top, bot;
- int w;
-
-#ifdef MENU_SHADOW_IN
- state = -state;
-#endif
- switch (state)
- {
- case +1:
- top = topShadowGC;
- bot = botShadowGC;
- break; /* SHADOW_OUT */
- case -1:
- top = botShadowGC;
- bot = topShadowGC;
- break; /* SHADOW_IN */
- default:
- top = bot = scrollbarGC;
- break; /* neutral */
- }
-
- w = Height2Pixel (1) - 2 * MENU_SHADOW;
-
- x -= MENU_SHADOW + (3 * w / 2);
- y += MENU_SHADOW * 3;
-
- rxvt_Draw_Triangle (display->display, ActiveMenu->win, top, bot, x, y, w, 'r');
-}
-
-void
-rxvt_term::drawbox_menuitem (int y, int state)
-{
- GC top, bot;
-
-#ifdef MENU_SHADOW_IN
- state = -state;
-#endif
- switch (state)
- {
- case +1:
- top = topShadowGC;
- bot = botShadowGC;
- break; /* SHADOW_OUT */
- case -1:
- top = botShadowGC;
- bot = topShadowGC;
- break; /* SHADOW_IN */
- default:
- top = bot = scrollbarGC;
- break; /* neutral */
- }
-
- rxvt_Draw_Shadow (display->display, ActiveMenu->win, top, bot,
- MENU_SHADOW + 0, MENU_SHADOW + y,
- ActiveMenu->w - 2 * (MENU_SHADOW),
- HEIGHT_TEXT + 2 * MENU_SHADOW);
- XFlush (display->display);
-}
-
-#ifdef DEBUG_MENU_LAYOUT
-void
-rxvt_print_menu_ancestors (menu_t *menu)
-{
- if (menu == NULL)
- {
- fprintf (stderr, "Top Level menu\n");
- return;
- }
-
- fprintf (stderr, "menu %s ", menu->name);
- if (menu->parent != NULL)
- {
- menuitem_t *item;
-
- for (item = menu->parent->head; item != NULL; item = item->next)
- {
- if (item->entry.type == MenuSubMenu
- && item->entry.submenu.menu == menu)
- {
- break;
- }
- }
-
- if (item == NULL)
- {
- fprintf (stderr, "is an orphan!\n");
- return;
- }
- }
-
- fprintf (stderr, "\n");
- rxvt_print_menu_ancestors (menu->parent);
-}
-
-void
-rxvt_print_menu_descendants (menu_t *menu)
-{
- menuitem_t *item;
- menu_t *parent;
- int i, level = 0;
-
- parent = menu;
- do
- {
- level++;
- parent = parent->parent;
- }
- while (parent != NULL);
-
- for (i = 0; i < level; i++)
- fprintf (stderr, ">");
- fprintf (stderr, "%s\n", menu->name);
-
- for (item = menu->head; item != NULL; item = item->next)
- {
- if (item->entry.type == MenuSubMenu)
- {
- if (item->entry.submenu.menu == NULL)
- fprintf (stderr, "> %s == NULL\n", item->name);
- else
- rxvt_print_menu_descendants (item->entry.submenu.menu);
- }
- else
- {
- for (i = 0; i < level; i++)
- fprintf (stderr, "+");
- if (item->entry.type == MenuLabel)
- fprintf (stderr, "label: ");
- fprintf (stderr, "%s\n", item->name);
- }
- }
-
- for (i = 0; i < level; i++)
- fprintf (stderr, "<");
- fprintf (stderr, "\n");
-}
-#endif
-
-/* pop up/down the current menu and redraw the menuBar button */
-void
-rxvt_term::menu_show ()
-{
- int x, y, xright;
- menuitem_t *item;
-
- if (ActiveMenu == NULL)
- return;
-
- x = ActiveMenu->x;
- if (ActiveMenu->parent == NULL)
- {
- register int h;
-
- drawbox_menubar (x, ActiveMenu->len, -1);
- x = Width2Pixel (x);
-
- ActiveMenu->y = 1;
- ActiveMenu->w = Menu_PixelWidth (ActiveMenu);
-
- if ((x + ActiveMenu->w) >= width)
- x = (this->width - ActiveMenu->w);
-
- /* find the height */
- for (h = 0, item = ActiveMenu->head; item != NULL; item = item->next)
- h += isSeparator (item->name) ? HEIGHT_SEPARATOR
- : HEIGHT_TEXT + 2 * MENU_SHADOW;
- ActiveMenu->h = h + 2 * MENU_SHADOW;
- }
-
- if (ActiveMenu->win == None)
- {
- ActiveMenu->win = XCreateSimpleWindow (display->display, vt,
- x, ActiveMenu->y,
- ActiveMenu->w, ActiveMenu->h,
- 0,
- pix_colors[Color_fg],
- pix_colors[Color_scroll]);
- ActiveMenu->drawable = new rxvt_drawable (display, ActiveMenu->win);
- XMapWindow (display->display, ActiveMenu->win);
- }
-
- rxvt_Draw_Shadow (display->display, ActiveMenu->win,
- topShadowGC, botShadowGC,
- 0, 0, ActiveMenu->w, ActiveMenu->h);
-
- /* determine the correct right-alignment */
- for (xright = 0, item = ActiveMenu->head; item != NULL; item = item->next)
- if (item->len2 > xright)
- xright = item->len2;
-
- for (y = 0, item = ActiveMenu->head; item != NULL; item = item->next)
- {
- const int xoff = (MENU_SHADOW + Width2Pixel (HSPACE) / 2);
- register int h;
- GC gc = menubarGC;
-
- if (isSeparator (item->name))
- {
- rxvt_Draw_Shadow (display->display, ActiveMenu->win,
- topShadowGC, botShadowGC,
- MENU_SHADOW, y + MENU_SHADOW + 1,
- ActiveMenu->w - 2 * MENU_SHADOW, 0);
- h = HEIGHT_SEPARATOR;
- }
- else
- {
- char *name = item->name;
- int len = item->len;
-
- if (item->entry.type == MenuLabel)
- gc = botShadowGC;
- else if (item->entry.type == MenuSubMenu)
- {
- int x1, y1;
- menuitem_t *it;
- menu_t *menu = item->entry.submenu.menu;
-
- drawtriangle (ActiveMenu->w, y, +1);
-
- name = menu->name;
- len = menu->len;
-
- y1 = ActiveMenu->y + y;
-
- menu->w = Menu_PixelWidth (menu);
-
- /* place sub-menu at midpoint of parent menu */
- x1 = ActiveMenu->w / 2;
- if (x1 > menu->w) /* right-flush menu if too small */
- x1 += (x1 - menu->w);
- x1 += x;
-
- /* find the height of this submenu */
- for (h = 0, it = menu->head; it != NULL; it = it->next)
- h += isSeparator (it->name) ? HEIGHT_SEPARATOR
- : HEIGHT_TEXT + 2 * MENU_SHADOW;
- menu->h = h + 2 * MENU_SHADOW;
-
- /* ensure menu is in window limits */
- if ((x1 + menu->w) >= width)
- x1 = (this->width - menu->w);
-
- if ((y1 + menu->h) >= height)
- y1 = (this->height - menu->h);
-
- menu->x = (x1 < 0 ? 0 : x1);
- menu->y = (y1 < 0 ? 0 : y1);
- }
- else if (item->name2 && !strcmp (name, item->name2))
- name = NULL;
-
- if (len && name)
- draw_string (*ActiveMenu->drawable, gc, fontset[0],
- xoff, 2 * MENU_SHADOW + y, name, len);
-
- len = item->len2;
- name = item->name2;
-
- if (len && name)
- draw_string (*ActiveMenu->drawable, gc, fontset[0],
- ActiveMenu->w - (xoff + Width2Pixel (xright)), 2 * MENU_SHADOW + y, name, len);
-
- h = HEIGHT_TEXT + 2 * MENU_SHADOW;
- }
- y += h;
- }
-}
-
-void
-rxvt_term::menu_display (void (rxvt_term::*update) ())
-{
- if (ActiveMenu == NULL)
- return;
-
- delete ActiveMenu->drawable;
- if (ActiveMenu->win != None)
- XDestroyWindow (display->display, ActiveMenu->win);
- ActiveMenu->win = None;
- ActiveMenu->item = NULL;
-
- if (ActiveMenu->parent == NULL)
- drawbox_menubar (ActiveMenu->x, ActiveMenu->len, +1);
-
- ActiveMenu = ActiveMenu->parent;
- (this->*update) ();
-}
-
-void
-rxvt_term::menu_hide_all ()
-{
- menu_display (&rxvt_term::menu_hide_all);
-}
-
-void
-rxvt_term::menu_hide ()
-{
- menu_display (&rxvt_term::menu_show);
-}
-
-void
-rxvt_term::menu_clear (menu_t *menu)
-{
- if (menu != NULL)
- {
- menuitem_t *item = menu->tail;
-
- while (item != NULL)
- {
- menuitem_free (menu, item);
- /* it didn't get freed ... why? */
- if (item == menu->tail)
- return;
- item = menu->tail;
- }
- menu->width = 0;
- }
-}
-
-void
-rxvt_term::menubar_clear ()
-{
- if (CurrentBar != NULL)
- {
- menu_t *menu = CurrentBar->tail;
-
- while (menu != NULL)
- {
- menu_t *prev = menu->prev;
-
- menu_delete (menu);
- menu = prev;
- }
- CurrentBar->head = CurrentBar->tail = NULL;
-
- if (CurrentBar->title)
- {
- free (CurrentBar->title);
- CurrentBar->title = NULL;
- }
-
- menuarrow_free (0); /* remove all arrow functions */
- }
-
- ActiveMenu = NULL;
-}
-
-#if (MENUBAR_MAX > 1)
-/* find if menu already exists */
-bar_t *
-rxvt_term::menubar_find (const char *name)
-{
- bar_t *bar = CurrentBar;
-
-#ifdef DEBUG_MENUBAR_STACKING
- fprintf (stderr, "looking for [menu:%s] ...", name ? name : " (nil)");
-#endif
- if (bar == NULL || name == NULL)
- return NULL;
-
- if (strlen (name) && strcmp (name, "*"))
- {
- do
- {
- if (!strcmp (bar->name, name))
- {
-#ifdef DEBUG_MENUBAR_STACKING
- fprintf (stderr, " found!\n");
-#endif
- return bar;
- }
- bar = bar->next;
- }
- while (bar != CurrentBar);
- bar = NULL;
- }
-#ifdef DEBUG_MENUBAR_STACKING
- fprintf (stderr, "%s found!\n", (bar ? "" : " NOT"));
-#endif
-
- return bar;
-}
-
-int
-rxvt_term::menubar_push (const char *name)
-{
- int ret = 1;
- bar_t *bar;
-
- if (CurrentBar == NULL)
- {
- /* allocate first one */
- bar = (bar_t *) rxvt_malloc (sizeof (bar_t));
-
- memset (bar, 0, sizeof (bar_t));
- /* circular linked-list */
- bar->next = bar->prev = bar;
- bar->head = bar->tail = NULL;
- bar->title = NULL;
- CurrentBar = bar;
- Nbars++;
-
- menubar_clear ();
- }
- else
- {
- /* find if menu already exists */
- bar = menubar_find (name);
- if (bar != NULL)
- {
- /* found it, use it */
- CurrentBar = bar;
- }
- else
- {
- /* create if needed, or reuse the existing empty menubar */
- if (CurrentBar->head != NULL)
- {
- /* need to malloc another one */
- if (Nbars < MENUBAR_MAX)
- bar = (bar_t *) rxvt_malloc (sizeof (bar_t));
- else
- bar = NULL;
-
- /* malloc failed or too many menubars, reuse another */
- if (bar == NULL)
- {
- bar = CurrentBar->next;
- ret = -1;
- }
- else
- {
- bar->head = bar->tail = NULL;
- bar->title = NULL;
-
- bar->next = CurrentBar->next;
- CurrentBar->next = bar;
- bar->prev = CurrentBar;
- bar->next->prev = bar;
-
- Nbars++;
- }
- CurrentBar = bar;
-
- }
-
- menubar_clear ();
- }
- }
-
- /* give menubar this name */
- strncpy (CurrentBar->name, name, MAXNAME);
- CurrentBar->name[MAXNAME - 1] = '\0';
-
- return ret;
-}
-
-/* switch to a menu called NAME and remove it */
-void
-rxvt_term::menubar_remove (const char *name)
-{
- bar_t *bar;
-
- if ((bar = menubar_find (name)) == NULL)
- return;
- CurrentBar = bar;
-
- do
- {
- menubar_clear ();
- /*
- * pop a menubar, clean it up first
- */
- if (CurrentBar != NULL)
- {
- bar_t *prev = CurrentBar->prev;
- bar_t *next = CurrentBar->next;
-
- if (prev == next && prev == CurrentBar)
- { /* only 1 left */
- prev = NULL;
- Nbars = 0; /* safety */
- }
- else
- {
- next->prev = prev;
- prev->next = next;
- Nbars--;
- }
-
- free (CurrentBar);
- CurrentBar = prev;
- }
- }
- while (CurrentBar && !strcmp (name, "*"));
-}
-
-void
-rxvt_action_decode (FILE *fp, action_t *act)
-{
- char *str;
- short len;
-
- if (act == NULL || (len = act->len) == 0 || (str = act->str) == NULL)
- return;
-
- if (act->type == MenuTerminalAction)
- {
- fprintf (fp, "^@");
- /* can strip trailing ^G from XTerm sequence */
- if (str[0] == C0_ESC && str[1] == ']' && str[len - 1] == C0_BEL)
- len--;
- }
- else if (str[0] == C0_ESC)
- {
- switch (str[1])
- {
- case '[':
- case ']':
- break;
-
- case 'x':
- /* can strip trailing '\r' from M-x sequence */
- if (str[len - 1] == '\r')
- len--;
- /* FALLTHROUGH */
-
- default:
- fprintf (fp, "M-"); /* meta prefix */
- str++;
- len--;
- break;
- }
- }
-
- /*
- * control character form is preferred, since backslash-escaping
- * can be really ugly looking when the backslashes themselves also
- * have to be escaped to avoid Shell (or whatever scripting
- * language) interpretation
- */
- while (len > 0)
- {
- char ch = *str++;
-
- switch (ch)
- {
- case C0_ESC:
- fprintf (fp, "\\E");
- break; /* escape */
- case '\r':
- fprintf (fp, "\\r");
- break; /* carriage-return */
- case '\\':
- fprintf (fp, "\\\\");
- break; /* backslash */
- case '^':
- fprintf (fp, "\\^");
- break; /* caret */
- case 127:
- fprintf (fp, "^?");
- default:
- if (ch <= 31)
- fprintf (fp, "^%c", ('@' + ch));
- else if ((unsigned char)ch > 127)
- fprintf (fp, "\\%o", ch);
- else
- fprintf (fp, "%c", ch);
- break;
- }
-
- len--;
- }
-
- fprintf (fp, "\n");
-}
-
-void
-rxvt_menu_dump (FILE *fp, menu_t *menu)
-{
- menuitem_t *item;
-
- /* create a new menu and clear it */
- fprintf (fp, (menu->parent ? "./%s/*\n" : "/%s/*\n"), menu->name);
-
- for (item = menu->head; item != NULL; item = item->next)
- {
- switch (item->entry.type)
- {
- case MenuSubMenu:
- if (item->entry.submenu.menu == NULL)
- fprintf (fp, "> %s == NULL\n", item->name);
- else
- rxvt_menu_dump (fp, item->entry.submenu.menu);
- break;
-
- case MenuLabel:
- fprintf (fp, "{%s}\n", (strlen (item->name) ? item->name : "-"));
- break;
-
- case MenuTerminalAction:
- case MenuAction:
- fprintf (fp, "{%s}", item->name);
- if (item->name2 != NULL && strlen (item->name2))
- fprintf (fp, "{%s}", item->name2);
- fprintf (fp, "\t");
- rxvt_action_decode (fp, & (item->entry.action));
- break;
- }
- }
-
- fprintf (fp, (menu->parent ? "../\n" : "/\n\n"));
-}
-
-void
-rxvt_term::menubar_dump (FILE *fp)
-{
- bar_t *bar = CurrentBar;
- time_t t;
-
- if (bar == NULL || fp == NULL)
- return;
- time (&t);
-
- fprintf (fp,
- "# " RESCLASS " (%s) Pid: %u\n# Date: %s\n\n",
- rs[Rs_name], (unsigned int)getpid (), ctime (&t));
-
- /* dump in reverse order */
- bar = CurrentBar->prev;
- do
- {
- menu_t *menu;
- int i;
-
- fprintf (fp, "[menu:%s]\n", bar->name);
-
- if (bar->title != NULL)
- fprintf (fp, "[title:%s]\n", bar->title);
-
- for (i = 0; i < NARROWS; i++)
- {
- switch (bar->arrows[i].type)
- {
- case MenuTerminalAction:
- case MenuAction:
- fprintf (fp, "<%c>", Arrows[i].name);
- rxvt_action_decode (fp, & (bar->arrows[i]));
- break;
- }
- }
- fprintf (fp, "\n");
-
- for (menu = bar->head; menu != NULL; menu = menu->next)
- rxvt_menu_dump (fp, menu);
-
- fprintf (fp, "\n[done:%s]\n\n", bar->name);
- bar = bar->prev;
- }
- while (bar != CurrentBar->prev);
-}
-#endif /* (MENUBAR_MAX > 1) */
-
-/*
- * read in menubar commands from FILENAME
- * ignore all input before the tag line [menu] or [menu:???]
- *
- * Note that since File_find () is used, FILENAME can be semi-colon
- * delimited such that the second part can refer to a tag
- * so that a large `database' of menus can be collected together
- *
- * FILENAME = "file"
- * FILENAME = "file;"
- * read `file' starting with first [menu] or [menu:???] line
- *
- * FILENAME = "file;tag"
- * read `file' starting with [menu:tag]
- */
-void
-rxvt_term::menubar_read (const char *filename)
-{
- /* read in a menu from a file */
- FILE *fp;
- char buffer[256];
- char *p, *file, *tag = NULL;
-
- file = (char *)rxvt_File_find (filename, ".menu", rs[Rs_path]);
- if (file == NULL)
- return;
-
- fp = fopen (file, "rb");
- free (file);
- if (fp == NULL)
- return;
-
-#if (MENUBAR_MAX > 1)
- /* semi-colon delimited */
- if ((tag = strchr (filename, ';')) != NULL)
- {
- tag++;
- if (*tag == '\0')
- tag = NULL;
- }
-#endif /* (MENUBAR_MAX > 1) */
-#ifdef DEBUG_MENU
- fprintf (stderr, "[read:%s]\n", p);
- if (tag)
- fprintf (stderr, "looking for [menu:%s]\n", tag);
-#endif
-
- while ((p = fgets (buffer, sizeof (buffer), fp)) != NULL)
- {
- int n;
-
- if ((n = rxvt_Str_match (p, "[menu")) != 0)
- {
- if (tag)
- {
- /* looking for [menu:tag] */
- if (p[n] == ':' && p[n + 1] != ']')
- {
- n++;
- n += rxvt_Str_match (p + n, tag);
- if (p[n] == ']')
- {
-#ifdef DEBUG_MENU
- fprintf (stderr, "[menu:%s]\n", tag);
-#endif
- break;
- }
- }
- }
- else if (p[n] == ':' || p[n] == ']')
- break;
- }
- }
-
- /* found [menu], [menu:???] tag */
- while (p != NULL)
- {
- int n;
-
-#ifdef DEBUG_MENU
- fprintf (stderr, "read line = %s\n", p);
-#endif
-
- /* looking for [done:tag] or [done:] */
- if ((n = rxvt_Str_match (p, "[done")) != 0)
- {
- if (p[n] == ']')
- {
- menu_readonly = 1;
- break;
- }
- else if (p[n] == ':')
- {
- n++;
- if (p[n] == ']')
- {
- menu_readonly = 1;
- break;
- }
- else if (tag)
- {
- n += rxvt_Str_match (p + n, tag);
- if (p[n] == ']')
- {
-#ifdef DEBUG_MENU
- fprintf (stderr, "[done:%s]\n", tag);
-#endif
- menu_readonly = 1;
- break;
- }
- }
- else
- {
- /* what? ... skip this line */
- p[0] = COMMENT_CHAR;
- }
- }
- }
-
- /*
- * remove leading/trailing space
- * skip blank or comment lines
- */
- rxvt_Str_trim (p);
- if (*p && *p != '#')
- {
- menu_readonly = 0; /* if case we read another file */
- menubar_dispatch (p);
- }
- /* get another line */
- p = fgets (buffer, sizeof (buffer), fp);
- }
-
- fclose (fp);
-}
-
-/*
- * user interface for building/deleting and otherwise managing menus
- */
-void
-rxvt_term::menubar_dispatch (char *str)
-{
- int n, cmd;
- char *path, *name, *name2;
-
- if (menubar_visible () && ActiveMenu != NULL)
- menubar_expose ();
- else
- ActiveMenu = NULL;
-
- cmd = *str;
- switch (cmd)
- {
- case '.':
- case '/': /* absolute & relative path */
- case MENUITEM_BEG: /* menuitem */
- /* add `+' prefix for these cases */
- cmd = '+';
- break;
-
- case '+':
- case '-':
- str++; /* skip cmd character */
- break;
-
- case '<':
-#if (MENUBAR_MAX > 1)
- if (CurrentBar == NULL)
- break;
-#endif /* (MENUBAR_MAX > 1) */
- if (str[1] && str[2] == '>') /* arrow commands */
- menuarrow_add (str);
- break;
-
- case '[': /* extended command */
- while (str[0] == '[')
- {
- char *next = (++str); /* skip leading '[' */
-
- if (str[0] == ':')
- { /* [:command:] */
- do
- {
- next++;
- if ((next = strchr (next, ':')) == NULL)
- return; /* parse error */
- }
- while (next[1] != ']');
- /* remove and skip ':]' */
- *next = '\0';
- next += 2;
- }
- else
- {
- if ((next = strchr (next, ']')) == NULL)
- return; /* parse error */
- /* remove and skip ']' */
- *next = '\0';
- next++;
- }
-
- if (str[0] == ':')
- {
- int saved;
-
- /* try and dispatch it, regardless of read/write status */
- saved = menu_readonly;
- menu_readonly = 0;
- menubar_dispatch (str + 1);
- menu_readonly = saved;
- }
- /* these ones don't require menu stacking */
- else if (!strcmp (str, "clear"))
- {
- menubar_clear ();
- }
- else if (!strcmp (str, "done") || rxvt_Str_match (str, "done:"))
- {
- menu_readonly = 1;
- }
- else if (!strcmp (str, "show"))
- {
- map_menuBar (1);
- menu_readonly = 1;
- }
- else if (!strcmp (str, "hide"))
- {
- map_menuBar (0);
- menu_readonly = 1;
- }
- else if ((n = rxvt_Str_match (str, "read:")) != 0)
- {
- /* read in a menu from a file */
- str += n;
- menubar_read (str);
- }
- else if ((n = rxvt_Str_match (str, "title:")) != 0)
- {
- str += n;
- if (CurrentBar != NULL && !menu_readonly)
- {
- if (*str)
- {
- name = (char *)rxvt_realloc (CurrentBar->title, strlen (str) + 1);
- if (name != NULL)
- {
- strcpy (name, str);
- CurrentBar->title = name;
- }
- menubar_expose ();
- }
- else
- {
- free (CurrentBar->title);
- CurrentBar->title = NULL;
- }
- }
- }
- else if ((n = rxvt_Str_match (str, "pixmap:")) != 0)
- {
- str += n;
- process_xterm_seq (Rxvt_Pixmap, str, CHAR_ST);
- }
-#if (MENUBAR_MAX > 1)
- else if ((n = rxvt_Str_match (str, "rm")) != 0)
- {
- str += n;
- switch (str[0])
- {
- case ':':
- str++;
- /* FALLTHROUGH */
- case '\0':
- /* FALLTHROUGH */
- case '*':
- menubar_remove (str);
- break;
- }
- menu_readonly = 1;
- }
- else if ((n = rxvt_Str_match (str, "menu")) != 0)
- {
- str += n;
- switch (str[0])
- {
- case ':':
- str++;
- /* add/access menuBar */
- if (*str != '\0' && *str != '*')
- menubar_push (str);
- break;
- default:
- if (CurrentBar == NULL)
- {
- menubar_push ("default");
- }
- }
-
- if (CurrentBar != NULL)
- menu_readonly = 0; /* allow menu build commands */
- }
- else if (!strcmp (str, "dump"))
- {
- /* dump current menubars to a file */
- FILE *fp;
-
- /* enough space to hold the results */
- char buffer[32];
-
- sprintf (buffer, "/tmp/" RESCLASS "-%u",
- (unsigned int)getpid ());
-
- if ((fp = fopen (buffer, "wb")) != NULL)
- {
- process_xterm_seq (XTerm_title, buffer, CHAR_ST);
- menubar_dump (fp);
- fclose (fp);
- }
- }
- else if (!strcmp (str, "next"))
- {
- if (CurrentBar)
- {
- CurrentBar = CurrentBar->next;
- menu_readonly = 1;
- }
- }
- else if (!strcmp (str, "prev"))
- {
- if (CurrentBar)
- {
- CurrentBar = CurrentBar->prev;
- menu_readonly = 1;
- }
- }
- else if (!strcmp (str, "swap"))
- {
- /* swap the top 2 menus */
- if (CurrentBar)
- {
- bar_t *cbprev = CurrentBar->prev;
- bar_t *cbnext = CurrentBar->next;
-
- cbprev->next = cbnext;
- cbnext->prev = cbprev;
-
- CurrentBar->next = cbprev;
- CurrentBar->prev = cbprev->prev;
-
- cbprev->prev->next = CurrentBar;
- cbprev->prev = CurrentBar;
-
- CurrentBar = cbprev;
- menu_readonly = 1;
- }
- }
-#endif /* (MENUBAR_MAX > 1) */
- str = next;
-
- BuildMenu = ActiveMenu = NULL;
- menubar_expose ();
-#ifdef DEBUG_MENUBAR_STACKING
- fprintf (stderr, "menus are read%s\n",
- menu_readonly ? "only" : "/write");
-#endif
-
- }
- return;
- break;
- }
-
-#if (MENUBAR_MAX > 1)
- if (CurrentBar == NULL)
- return;
- if (menu_readonly)
- {
-#ifdef DEBUG_MENUBAR_STACKING
- fprintf (stderr, "menus are read%s\n",
- menu_readonly ? "only" : "/write");
-#endif
- return;
- }
-#endif /* (MENUBAR_MAX > 1) */
-
- switch (cmd)
- {
- case '+':
- case '-':
- path = name = str;
-
- name2 = NULL;
- /* parse STR, allow spaces inside (name) */
- if (path[0] != '\0')
- {
- name = strchr (path, MENUITEM_BEG);
- str = strchr (path, MENUITEM_END);
- if (name != NULL || str != NULL)
- {
- if (name == NULL || str == NULL || str <= (name + 1)
- || (name > path && name[-1] != '/'))
- {
- rxvt_warn ("menu error A<%s>, continuing.\n", path);
- break;
- }
- if (str[1] == MENUITEM_BEG)
- {
- name2 = (str + 2);
- str = strchr (name2, MENUITEM_END);
-
- if (str == NULL)
- {
- rxvt_warn ("menu error B<%s>, continuing.\n", path);
- break;
- }
- name2[-2] = '\0'; /* remove prev MENUITEM_END */
- }
- if (name > path && name[-1] == '/')
- name[-1] = '\0';
-
- *name++ = '\0'; /* delimit */
- *str++ = '\0'; /* delimit */
-
- while (isspace (*str))
- str++; /* skip space */
- }
-#ifdef DEBUG_MENU
- fprintf (stderr,
- "`%c' path = <%s>, name = <%s>, name2 = <%s>, action = <%s>\n",
- cmd, (path ? path : " (nil)"), (name ? name : " (nil)"),
- (name2 ? name2 : " (nil)"), (str ? str : " (nil)")
- );
-#endif
-
- }
- /* process the different commands */
- switch (cmd)
- {
- case '+': /* add/replace existing menu or menuitem */
- if (path[0] != '\0')
- {
- int len;
-
- path = menu_find_base (& (BuildMenu), path);
- len = strlen (path);
-
- /* don't allow menus called `*' */
- if (path[0] == '*')
- {
- menu_clear (BuildMenu);
- break;
- }
- else if (len >= 2 && !strcmp ((path + len - 2), "/*"))
- {
- path[len - 2] = '\0';
- }
- if (path[0] != '\0')
- BuildMenu = menu_add (BuildMenu, path);
- }
- if (name != NULL && name[0] != '\0')
- rxvt_menuitem_add (BuildMenu,
- (strcmp (name, SEPARATOR_NAME) ? name : ""),
- name2, str);
- break;
-
- case '-': /* delete menu entry */
- if (!strcmp (path, "/*") && (name == NULL || name[0] == '\0'))
- {
- menubar_clear ();
- BuildMenu = NULL;
- menubar_expose ();
- break;
- }
- else if (path[0] != '\0')
- {
- int len;
- menu_t *menu = BuildMenu;
-
- path = menu_find_base (&menu, path);
- len = strlen (path);
-
- /* submenu called `*' clears all menu items */
- if (path[0] == '*')
- {
- menu_clear (menu);
- break; /* done */
- }
- else if (len >= 2 && !strcmp (&path[len - 2], "/*"))
- {
- /* done */
- break;
- }
- else if (path[0] != '\0')
- {
- BuildMenu = NULL;
- break;
- }
- else
- BuildMenu = menu;
- }
-
- if (BuildMenu != NULL)
- {
- if (name == NULL || name[0] == '\0')
- BuildMenu = menu_delete (BuildMenu);
- else
- {
- const char *n1;
- menuitem_t *item;
-
- n1 = strcmp (name, SEPARATOR_NAME) ? name : "";
- item = rxvt_menuitem_find (BuildMenu, n1);
- if (item != NULL && item->entry.type != MenuSubMenu)
- {
- menuitem_free (BuildMenu, item);
-
- /* fix up the width */
- BuildMenu->width = 0;
- for (item = BuildMenu->head; item != NULL;
- item = item->next)
- {
- short l = item->len + item->len2;
-
- max_it (BuildMenu->width, l);
- }
- }
- }
-
- menubar_expose ();
- }
- break;
- }
- break;
- }
-}
-
-void
-rxvt_term::draw_Arrows (int name, int state)
-{
- GC top, bot;
-
- int i;
-
-#ifdef MENU_SHADOW_IN
- state = -state;
-#endif
- switch (state)
- {
- case +1:
- top = topShadowGC;
- bot = botShadowGC;
- break; /* SHADOW_OUT */
- case -1:
- top = botShadowGC;
- bot = topShadowGC;
- break; /* SHADOW_IN */
- default:
- top = bot = scrollbarGC;
- break; /* neutral */
- }
-
- if (!Arrows_x)
- return;
-
- for (i = 0; i < NARROWS; i++)
- {
- const int w = Width2Pixel (1);
- const int y = (menuBar_TotalHeight () - w) / 2;
- int x = Arrows_x + (5 * Width2Pixel (i)) / 4;
-
- if (!name || name == Arrows[i].name)
- rxvt_Draw_Triangle (display->display, menuBar.win, top, bot, x, y, w,
- Arrows[i].name);
- }
- XFlush (display->display);
-}
-
-void
-rxvt_term::menubar_expose ()
-{
- menu_t *menu;
- int x;
-
- if (!menubar_visible () || menuBar.win == 0)
- return;
-
- if (menubarGC == None)
- {
- /* Create the graphics context */
- XGCValues gcvalue;
-
- gcvalue.foreground = (display->depth <= 2 ? pix_colors[Color_fg]
- : pix_colors[Color_Black]);
- menubarGC = XCreateGC (display->display, menuBar.win,
- GCForeground, &gcvalue);
-
- }
- /* make sure the font is correct */
- XClearWindow (display->display, menuBar.win);
-
- menu_hide_all ();
-
- x = 0;
- if (CurrentBar != NULL)
- {
- for (menu = CurrentBar->head; menu != NULL; menu = menu->next)
- {
- int len = menu->len;
-
- x = (menu->x + menu->len + HSPACE);
-
-#ifdef DEBUG_MENU_LAYOUT
- rxvt_print_menu_descendants (menu);
-#endif
-
- if (x >= ncol)
- len = (ncol - (menu->x + HSPACE));
-
- drawbox_menubar (menu->x, len, +1);
- draw_string (*menuBar.drawable, menubarGC, fontset[0],
- (Width2Pixel (menu->x) + Width2Pixel (HSPACE) / 2),
- MENU_SHADOW, menu->name, len);
-
- if (x >= ncol)
- break;
- }
- }
- drawbox_menubar (x, ncol, (CurrentBar ? +1 : -1));
-
- /* add the menuBar title, if it exists and there's plenty of room */
- Arrows_x = 0;
- if (x < ncol)
- {
- const char *str;
- unsigned int len;
- char title[256];
-
- if (x < (ncol - (NARROWS + 1)))
- {
- ncol -= (NARROWS + 1);
- Arrows_x = Width2Pixel (ncol);
- }
-
- draw_Arrows (0, +1);
-
- str = (CurrentBar
- && CurrentBar->title) ? CurrentBar->title : "%n-%v";
- for (len = 0; str[0] && len < sizeof (title) - 1; str++)
- {
- const char *s = NULL;
-
- switch (str[0])
- {
- case '%':
- str++;
- switch (str[0])
- {
- case 'n':
- s = rs[Rs_name];
- break; /* resource name */
- case 'v':
- s = VERSION;
- break; /* version number */
- case '%':
- s = "%";
- break; /* literal '%' */
- }
- if (s != NULL)
- while (*s && len < sizeof (title) - 1)
- title[len++] = *s++;
- break;
-
- default:
- title[len++] = str[0];
- break;
- }
- }
- title[len] = '\0';
-
- ncol -= (x + len + HSPACE);
- if (len > 0 && ncol >= 0)
- draw_string (*menuBar.drawable, menubarGC, fontset[0],
- Width2Pixel (x) + Width2Pixel (ncol + HSPACE) / 2,
- MENU_SHADOW, title, len);
- }
-}
-
-int
-rxvt_term::menubar_mapping (int map)
-{
- int change = 0;
-
- if (map && !menubar_visible ())
- {
- menuBar.state = 1;
- if (menuBar.win == 0)
- return 0;
- XMapWindow (display->display, menuBar.win);
- change = 1;
- }
- else if (!map && menubar_visible ())
- {
- menubar_expose ();
- menuBar.state = 0;
- XUnmapWindow (display->display, menuBar.win);
- change = 1;
- }
- else
- menubar_expose ();
-
- return change;
-}
-
-int
-rxvt_term::menu_select (XButtonEvent &ev)
-{
- menuitem_t *thisitem, *item = NULL;
- int this_y, y;
-
- Window unused_root, unused_child;
- int unused_root_x, unused_root_y;
- unsigned int unused_mask;
-
- if (ActiveMenu == NULL)
- return 0;
-
- XQueryPointer (display->display, ActiveMenu->win,
- &unused_root, &unused_child,
- &unused_root_x, &unused_root_y,
- &ev.x, &ev.y, &unused_mask);
-
- if (ActiveMenu->parent != NULL && (ev.x < 0 || ev.y < 0))
- {
- menu_hide ();
- return 1;
- }
-
- /* determine the menu item corresponding to the Y index */
- y = MENU_SHADOW;
- if (ev.x >= 0 && ev.x <= (ActiveMenu->w - MENU_SHADOW))
- {
- for (item = ActiveMenu->head; item != NULL; item = item->next)
- {
- int h = HEIGHT_TEXT + 2 * MENU_SHADOW;
-
- if (isSeparator (item->name))
- h = HEIGHT_SEPARATOR;
- else if (ev.y >= y && ev.y < (y + h))
- break;
-
- y += h;
- }
- }
-
- if (item == NULL && ev.type == ButtonRelease)
- {
- menu_hide_all ();
- return 0;
- }
-
- thisitem = item;
- this_y = y - MENU_SHADOW;
-
- /* erase the last item */
- if (ActiveMenu->item != NULL)
- {
- if (ActiveMenu->item != thisitem)
- {
- for (y = 0, item = ActiveMenu->head; item != NULL; item = item->next)
- {
- int h;
-
- if (isSeparator (item->name))
- h = HEIGHT_SEPARATOR;
- else if (item == ActiveMenu->item)
- {
- /* erase old menuitem */
- drawbox_menuitem (y, 0); /* No Shadow */
- if (item->entry.type == MenuSubMenu)
- drawtriangle (ActiveMenu->w, y, +1);
-
- break;
- }
- else
- h = HEIGHT_TEXT + 2 * MENU_SHADOW;
-
- y += h;
- }
- }
- else
- {
- switch (ev.type)
- {
- case ButtonRelease:
- switch (item->entry.type)
- {
- case MenuLabel:
- case MenuSubMenu:
- menu_hide_all ();
- break;
-
- case MenuAction:
- case MenuTerminalAction:
- drawbox_menuitem (this_y, -1);
- rxvt_usleep (MENU_DELAY_USEC);
- /* remove menu before sending keys to the application */
- menu_hide_all ();
-#ifndef DEBUG_MENU
- action_dispatch (& (item->entry.action));
-#else /* DEBUG_MENU */
- fprintf (stderr, "%s: %s\n", item->name,
- item->entry.action.str);
-#endif /* DEBUG_MENU */
- break;
- }
- break;
-
- default:
- if (item->entry.type == MenuSubMenu)
- goto DoMenu;
- break;
- }
- return 0;
- }
- }
-
-DoMenu:
- ActiveMenu->item = thisitem;
- y = this_y;
-
- if (thisitem != NULL)
- {
- item = ActiveMenu->item;
- if (item->entry.type != MenuLabel)
- drawbox_menuitem (y, +1);
-
- if (item->entry.type == MenuSubMenu)
- {
- int x;
-
- drawtriangle (ActiveMenu->w, y, -1);
-
- x = ev.x + (ActiveMenu->parent
- ? ActiveMenu->x
- : Width2Pixel (ActiveMenu->x));
-
- if (x >= item->entry.submenu.menu->x)
- {
- ActiveMenu = item->entry.submenu.menu;
- menu_show ();
- return 1;
- }
- }
- }
- return 0;
-}
-
-void
-rxvt_term::menubar_select (XButtonEvent &ev)
-{
- menu_t *menu = NULL;
-
- /* determine the pulldown menu corresponding to the X index */
- if (ev.y >= 0 && ev.y <= menuBar_height () && CurrentBar != NULL)
- {
- for (menu = CurrentBar->head; menu != NULL; menu = menu->next)
- {
- int x = Width2Pixel (menu->x);
- int w = Width2Pixel (menu->len + HSPACE);
-
- if ((ev.x >= x && ev.x < x + w))
- break;
- }
- }
- switch (ev.type)
- {
- case ButtonRelease:
- menu_hide_all ();
- break;
-
- case ButtonPress:
- if (menu == NULL && Arrows_x && ev.x >= Arrows_x)
- {
- int i;
-
- for (i = 0; i < NARROWS; i++)
- {
- if (ev.x >= (Arrows_x + (Width2Pixel (4 * i + i)) / 4)
- && ev.x < (Arrows_x
- + (Width2Pixel (4 * i + i + 4)) / 4))
- {
- draw_Arrows (Arrows[i].name, -1);
- rxvt_usleep (MENU_DELAY_USEC);
- draw_Arrows (Arrows[i].name, +1);
-#ifdef DEBUG_MENUARROWS
- fprintf (stderr, "'%c': ", Arrows[i].name);
-
- if (CurrentBar == NULL
- || (CurrentBar->arrows[i].type != MenuAction
- && CurrentBar->arrows[i].type !=
- MenuTerminalAction))
- {
- if (Arrows[i].str != NULL && Arrows[i].str[0])
- fprintf (stderr, " (default) \\033%s\n",
- & (Arrows[i].str[2]));
- }
- else
- {
- fprintf (stderr, "%s\n",
- CurrentBar->arrows[i].str);
- }
-#else /* DEBUG_MENUARROWS */
- if (CurrentBar == NULL || action_dispatch (&CurrentBar->arrows[i]))
- {
- if (Arrows[i].str != NULL && Arrows[i].str[0] != 0)
- tt_write ((Arrows[i].str + 1),
- Arrows[i].str[0]);
- }
-#endif /* DEBUG_MENUARROWS */
- return;
- }
- }
- }
- /* FALLTHROUGH */
-
- default:
- /*
- * press menubar or move to a new entry
- */
- if (menu != NULL && menu != ActiveMenu)
- {
- menu_hide_all (); /* pop down old menu */
- ActiveMenu = menu;
- menu_show (); /* pop up new menu */
- }
- break;
- }
-}
-
-/*
- * general dispatch routine,
- * it would be nice to have `sticky' menus
- */
-void
-rxvt_term::menubar_control (XButtonEvent &ev)
-{
- switch (ev.type)
- {
- case ButtonPress:
- if (ev.button == Button1)
- menubar_select (ev);
- break;
-
- case ButtonRelease:
- if (ev.button == Button1)
- menu_select (ev);
- break;
-
- case MotionNotify:
- while (XCheckTypedWindowEvent (display->display, parent[0],
- MotionNotify, (XEvent *)&ev));
-
- if (ActiveMenu)
- while (menu_select (ev)) ;
- else
- ev.y = -1;
- if (ev.y < 0)
- {
- Window unused_root, unused_child;
- int unused_root_x, unused_root_y;
- unsigned int unused_mask;
-
- XQueryPointer (display->display, menuBar.win,
- &unused_root, &unused_child,
- &unused_root_x, &unused_root_y,
- &ev.x, &ev.y, &unused_mask);
- menubar_select (ev);
- }
- break;
- }
-}
-
-void
-rxvt_term::map_menuBar (int map)
-{
- if (menubar_mapping (map))
- resize_all_windows (0, 0, 0);
-}
-#endif
-/*----------------------- end-of-file (C source) -----------------------*/
diff --git a/src/menubar.h b/src/menubar.h
deleted file mode 100644
index bb6c774c..00000000
--- a/src/menubar.h
+++ /dev/null
@@ -1,84 +0,0 @@
-#ifndef MENUBAR_H_
-#define MENUBAR_H_
-
-typedef struct {
- int type; /* must not be changed; first element */
- int len; /* strlen (str) */
- char *str; /* action to take */
-} action_t;
-
-typedef struct {
- int type; /* must not be changed; first element */
- struct menu_t *menu; /* sub-menu */
-} submenu_t;
-
-typedef struct menuitem_t {
- struct menuitem_t *prev; /* prev menu-item */
- struct menuitem_t *next; /* next menu-item */
- char *name; /* character string displayed */
- char *name2; /* character string displayed (right) */
- short len; /* strlen (name) */
- short len2; /* strlen (name) */
- union {
- short type; /* must not be changed; first element */
- action_t action;
- submenu_t submenu;
- } entry;
-} menuitem_t;
-
-enum menuitem_t_action {
- MenuLabel,
- MenuAction,
- MenuTerminalAction,
- MenuSubMenu
-};
-
-typedef struct menu_t {
- struct menu_t *parent; /* parent menu */
- struct menu_t *prev; /* prev menu */
- struct menu_t *next; /* next menu */
- menuitem_t *head; /* double-linked list */
- menuitem_t *tail; /* double-linked list */
- menuitem_t *item; /* current item */
- char *name; /* menu name */
- short len; /* strlen (name) */
- short width; /* maximum menu width [chars] */
- Window win; /* window of the menu */
- struct rxvt_drawable *drawable;
- short x; /* x location [pixels] (chars if parent == NULL) */
- short y; /* y location [pixels] */
- short w, h; /* window width, height [pixels] */
-} menu_t;
-
-typedef struct bar_t {
- menu_t *head, *tail; /* double-linked list of menus */
- char *title; /* title to put in the empty menuBar */
-#if (MENUBAR_MAX > 1)
-# define MAXNAME 16
- char name[MAXNAME]; /* name to use to refer to menubar */
- struct bar_t *next, *prev; /* circular linked-list */
-#endif /* (MENUBAR_MAX > 1) */
-#define NARROWS 4
- action_t arrows[NARROWS];
-} bar_t;
-
-/* #define DEBUG_MENU */
-/* #define DEBUG_MENU_LAYOUT */
-/* #define DEBUG_MENUBAR_STACKING */
-
-#define HSPACE 1 /* one space */
-#define isSeparator(name) ((name)[0] == '\0')
-#define HEIGHT_SEPARATOR (MENU_SHADOW + 1)
-#define HEIGHT_TEXT (Height2Pixel(1) + 2)
-
-#define MENU_DELAY_USEC 0 /* no delay */
-
-#define SEPARATOR_NAME "-"
-#define MENUITEM_BEG '{'
-#define MENUITEM_END '}'
-#define COMMENT_CHAR '#'
-
-#define DOT "."
-#define DOTS ".."
-
-#endif /* _MENUBAR_H_ */
--
2.34.1