Remove title squeeze and window highlight options.
1. Always squeeze title and on left. 2. Always highlight windows and their titles.
This commit is contained in:
parent
c042bc37ee
commit
94f29d39ab
@ -243,14 +243,13 @@ different types of windows. For example:
|
|||||||
The default is "black".
|
The default is "black".
|
||||||
.IP "\fBBorderTileBackground\fP \fIstring\fP [{ \fIwincolorlist\fP }]" 8
|
.IP "\fBBorderTileBackground\fP \fIstring\fP [{ \fIwincolorlist\fP }]" 8
|
||||||
This variable specifies the default background color in the gray pattern
|
This variable specifies the default background color in the gray pattern
|
||||||
used in unhighlighted borders (only if \fBNoHighlight\fP hasn't been set),
|
used in unhighlighted borders,
|
||||||
and may only be given within a \fBColor\fP, \fBGrayscale\fP or \fBMonochrome\fP list. The
|
and may only be given within a \fBColor\fP, \fBGrayscale\fP or \fBMonochrome\fP list. The
|
||||||
optional \fIwincolorlist\fP allows per-window colors to be specified.
|
optional \fIwincolorlist\fP allows per-window colors to be specified.
|
||||||
The default is "white".
|
The default is "white".
|
||||||
.IP "\fBBorderTileForeground\fP \fIstring\fP [{ \fIwincolorlist\fP }]" 8
|
.IP "\fBBorderTileForeground\fP \fIstring\fP [{ \fIwincolorlist\fP }]" 8
|
||||||
This variable specifies the default foreground color in the gray pattern
|
This variable specifies the default foreground color in the gray pattern
|
||||||
used in unhighlighted borders (only
|
used in unhighlighted borders, and may only be given within a
|
||||||
if \fBNoHighlight\fP hasn't been set), and may only be given within a
|
|
||||||
\fBColor\fP, \fBGrayscale\fP or \fBMonochrome\fP list. The optional \fIwincolorlist\fP allows
|
\fBColor\fP, \fBGrayscale\fP or \fBMonochrome\fP list. The optional \fIwincolorlist\fP allows
|
||||||
per-window colors to be specified. The default is "black".
|
per-window colors to be specified. The default is "black".
|
||||||
.IP "\fBBorderWidth\fP \fIpixels\fP" 8
|
.IP "\fBBorderWidth\fP \fIpixels\fP" 8
|
||||||
@ -364,11 +363,6 @@ information windows. The default is "black".
|
|||||||
.IP "\fBDontMoveOff\fP" 8
|
.IP "\fBDontMoveOff\fP" 8
|
||||||
This variable indicates that windows should not be allowed to be moved off the
|
This variable indicates that windows should not be allowed to be moved off the
|
||||||
screen. It can be overridden by the \fBf.forcemove\fP function.
|
screen. It can be overridden by the \fBf.forcemove\fP function.
|
||||||
.IP "\fBDontSqueezeTitle\fP [{ \fIwin-list\fP }] " 8
|
|
||||||
This variable indicates that titlebars should not be squeezed to their
|
|
||||||
minimum size as described under \fBSqueezeTitle\fP below.
|
|
||||||
If the optional window list is supplied, only those windows will be
|
|
||||||
prevented from being squeezed.
|
|
||||||
.IP "\fBForceIcons\fP" 8
|
.IP "\fBForceIcons\fP" 8
|
||||||
This variable indicates that icon pixmaps specified in the \fBIcons\fP
|
This variable indicates that icon pixmaps specified in the \fBIcons\fP
|
||||||
variable should override any client-supplied pixmaps.
|
variable should override any client-supplied pixmaps.
|
||||||
@ -515,14 +509,6 @@ file contains a completely new set of bindings and definitions.
|
|||||||
.IP "\fBNoGrabServer\fP" 8
|
.IP "\fBNoGrabServer\fP" 8
|
||||||
This variable indicates that \fItwmruined\fP should not grab the server
|
This variable indicates that \fItwmruined\fP should not grab the server
|
||||||
when popping up menus and moving opaque windows.
|
when popping up menus and moving opaque windows.
|
||||||
.IP "\fBNoHighlight\fP [{ \fIwin-list\fP }]" 8
|
|
||||||
This variable indicates that borders should not be highlighted to track the
|
|
||||||
location of the pointer. If the optional \fIwin-list\fP is given, highlighting
|
|
||||||
will only be disabled for those windows.
|
|
||||||
When the border is highlighted, it will
|
|
||||||
be drawn in the current \fBBorderColor\fP. When the border is not
|
|
||||||
highlighted, it will be stippled with a gray pattern using the
|
|
||||||
current \fBBorderTileForeground\fP and \fBBorderTileBackground\fP colors.
|
|
||||||
.IP "\fBNoMenuShadows\fP" 8
|
.IP "\fBNoMenuShadows\fP" 8
|
||||||
This variable indicates that menus should not have drop shadows drawn behind
|
This variable indicates that menus should not have drop shadows drawn behind
|
||||||
them. This is typically used with slower servers since it speeds up menu
|
them. This is typically used with slower servers since it speeds up menu
|
||||||
@ -564,30 +550,11 @@ the pointer is moved quickly and \fItwmruined\fP is slow to respond, input can b
|
|||||||
directed to the old window instead of the new. This option is typically
|
directed to the old window instead of the new. This option is typically
|
||||||
used to prevent this ``input lag'' and to
|
used to prevent this ``input lag'' and to
|
||||||
work around bugs in older applications that have problems with focus events.
|
work around bugs in older applications that have problems with focus events.
|
||||||
.IP "\fBNoTitleHighlight\fP [{ \fIwin-list\fP }]" 8
|
|
||||||
This variable indicates that the highlight area of the titlebar, which is
|
|
||||||
used to indicate the window that currently has the input focus, should not
|
|
||||||
be displayed. If the optional \fIwin-list\fP is given, only those windows
|
|
||||||
will not have highlight areas. This and the \fBSqueezeTitle\fP options
|
|
||||||
can be set to substantially reduce the amount of screen space required by
|
|
||||||
titlebars.
|
|
||||||
.IP "\fBOpaqueMove\fP" 8
|
.IP "\fBOpaqueMove\fP" 8
|
||||||
This variable indicates that the \fBf.move\fP function should actually move
|
This variable indicates that the \fBf.move\fP function should actually move
|
||||||
the window instead of just an outline so that the user can immediately see
|
the window instead of just an outline so that the user can immediately see
|
||||||
what the window will look like in the new position. This option is typically
|
what the window will look like in the new position. This option is typically
|
||||||
used on fast displays (particularly if \fBNoGrabServer\fP is set).
|
used on fast displays (particularly if \fBNoGrabServer\fP is set).
|
||||||
.IP "\fBPixmaps\fP { \fIpixmaps\fP }" 8
|
|
||||||
This variable specifies a list of pixmaps that define the appearance of various
|
|
||||||
images. Each entry is a keyword indicating the pixmap to set, followed by a
|
|
||||||
string giving the name of the bitmap file. The following pixmaps
|
|
||||||
may be specified:
|
|
||||||
.EX 0
|
|
||||||
\fBPixmaps\fP
|
|
||||||
{
|
|
||||||
TitleHighlight "gray1"
|
|
||||||
}
|
|
||||||
.EE
|
|
||||||
The default for \fITitleHighlight\fP is to use an even stipple pattern.
|
|
||||||
.IP "\fBPriority\fP \fIpriority\fP" 8
|
.IP "\fBPriority\fP \fIpriority\fP" 8
|
||||||
This variable sets \fItwmruined\fP's priority. \fIpriority\fP should be an
|
This variable sets \fItwmruined\fP's priority. \fIpriority\fP should be an
|
||||||
unquoted, signed number (e.g. 999). This variable has an effect only
|
unquoted, signed number (e.g. 999). This variable has an effect only
|
||||||
@ -627,36 +594,6 @@ For example:
|
|||||||
.EE
|
.EE
|
||||||
This would place on the root window 3 pixel values for borders and titlebars,
|
This would place on the root window 3 pixel values for borders and titlebars,
|
||||||
as well as the three color strings, all taken from the default colormap.
|
as well as the three color strings, all taken from the default colormap.
|
||||||
.IP "\fBSqueezeTitle\fP [{ \fIsqueeze-list\fP }] " 8
|
|
||||||
This variable indicates that \fItwmruined\fP should attempt to use the SHAPE
|
|
||||||
extension to make titlebars occupy only as much screen space as they need,
|
|
||||||
rather than extending all the way across the top of the window.
|
|
||||||
The optional \fIsqueeze-list\fP
|
|
||||||
may be used to control the location of the squeezed titlebar along the
|
|
||||||
top of the window. It contains entries of the form:
|
|
||||||
.EX 0
|
|
||||||
"\fIname\fP" \fIjustification\fP \fInum\fP \fIdenom\fP
|
|
||||||
.EE
|
|
||||||
where \fIname\fP is a window name, \fIjustification\fP is either \fBleft\fP,
|
|
||||||
\fBcenter\fP, or \fBright\fP, and \fInum\fP and \fIdenom\fP
|
|
||||||
are numbers specifying a ratio giving the relative position about which
|
|
||||||
the titlebar is justified. The ratio is measured from left to right if
|
|
||||||
the numerator is positive, and right to left if negative. A denominator
|
|
||||||
of 0 indicates that the numerator should be measured in pixels. For
|
|
||||||
convenience, the ratio 0/0 is the same as 1/2 for \fBcenter\fP and -1/1
|
|
||||||
for \fBright\fP. For example:
|
|
||||||
.EX 0
|
|
||||||
\fBSqueezeTitle\fP
|
|
||||||
{
|
|
||||||
"XTerm" left 0 0
|
|
||||||
"xterm1" left 1 3
|
|
||||||
"xterm2" left 2 3
|
|
||||||
"oclock" center 0 0
|
|
||||||
"emacs" right 0 0
|
|
||||||
}
|
|
||||||
.EE
|
|
||||||
The \fBDontSqueezeTitle\fP list can be used to turn off squeezing on
|
|
||||||
certain titles.
|
|
||||||
.IP "\fBStartIconified\fP [{ \fIwin-list\fP }] " 8
|
.IP "\fBStartIconified\fP [{ \fIwin-list\fP }] " 8
|
||||||
This variable indicates that client windows should initially be left as
|
This variable indicates that client windows should initially be left as
|
||||||
icons until explicitly deiconified by the user. If the optional \fIwin-list\fP
|
icons until explicitly deiconified by the user. If the optional \fIwin-list\fP
|
||||||
@ -847,9 +784,6 @@ the \fBSelect\fP cursor and the next window to receive a button press will
|
|||||||
be chosen:
|
be chosen:
|
||||||
.IP "\fB!\fP \fIstring\fP" 8
|
.IP "\fB!\fP \fIstring\fP" 8
|
||||||
This is an abbreviation for \fBf.exec\fP \fIstring\fP.
|
This is an abbreviation for \fBf.exec\fP \fIstring\fP.
|
||||||
.\"OBSOLETE - use a clipboard client
|
|
||||||
.\".IP "\fB^\fP \fIstring\fP" 8
|
|
||||||
.\"This is an abbreviation for \fBf.cut\fP \fIstring\fP.
|
|
||||||
.IP "\fBf.autoraise\fP" 8
|
.IP "\fBf.autoraise\fP" 8
|
||||||
This function toggles whether or not the selected window is raised whenever
|
This function toggles whether or not the selected window is raised whenever
|
||||||
entered by the pointer. See the description of the variable \fBAutoRaise\fP.
|
entered by the pointer. See the description of the variable \fBAutoRaise\fP.
|
||||||
@ -872,13 +806,6 @@ A pointer driven keyboard focus will install a private colormap upon entry
|
|||||||
of the window owning the colormap. Using the click to type model, private
|
of the window owning the colormap. Using the click to type model, private
|
||||||
colormaps will not be installed until the user presses a mouse button on
|
colormaps will not be installed until the user presses a mouse button on
|
||||||
the target window.
|
the target window.
|
||||||
.\"OBSOLETE - should go away and use a clipboard.
|
|
||||||
.\".IP "\fBf.cut\fP \fIstring\fP" 8
|
|
||||||
.\"This function places the specified \fIstring\fP (followed by a newline
|
|
||||||
.\"character) into the root window property CUT_BUFFER0.
|
|
||||||
.\".IP "\fBf.cutfile\fP" 8
|
|
||||||
.\"This function reads the file indicated by the contents of the CUT_BUFFER0
|
|
||||||
.\"window property and replaces the cut buffer.
|
|
||||||
.IP "\fBf.deiconify\fP" 8
|
.IP "\fBf.deiconify\fP" 8
|
||||||
This function deiconifies the selected window. If the window is not an icon,
|
This function deiconifies the selected window. If the window is not an icon,
|
||||||
this function does nothing.
|
this function does nothing.
|
||||||
|
150
src/add_window.c
150
src/add_window.c
@ -272,18 +272,10 @@ AddWindow(Window w)
|
|||||||
tmp_win->full_name = strdup(tmp_win->name);
|
tmp_win->full_name = strdup(tmp_win->name);
|
||||||
namelen = strlen (tmp_win->name);
|
namelen = strlen (tmp_win->name);
|
||||||
|
|
||||||
tmp_win->highlight = Scr->Highlight &&
|
|
||||||
(!(short)(long) LookInList(Scr->NoHighlight, tmp_win->full_name,
|
|
||||||
&tmp_win->class));
|
|
||||||
|
|
||||||
tmp_win->stackmode = Scr->StackMode &&
|
tmp_win->stackmode = Scr->StackMode &&
|
||||||
(!(short)(long) LookInList(Scr->NoStackModeL, tmp_win->full_name,
|
(!(short)(long) LookInList(Scr->NoStackModeL, tmp_win->full_name,
|
||||||
&tmp_win->class));
|
&tmp_win->class));
|
||||||
|
|
||||||
tmp_win->titlehighlight = Scr->TitleHighlight &&
|
|
||||||
(!(short)(long) LookInList(Scr->NoTitleHighlight, tmp_win->full_name,
|
|
||||||
&tmp_win->class));
|
|
||||||
|
|
||||||
tmp_win->auto_raise = (short)(long) LookInList(Scr->AutoRaise,
|
tmp_win->auto_raise = (short)(long) LookInList(Scr->AutoRaise,
|
||||||
tmp_win->full_name,
|
tmp_win->full_name,
|
||||||
&tmp_win->class);
|
&tmp_win->class);
|
||||||
@ -303,25 +295,7 @@ AddWindow(Window w)
|
|||||||
tmp_win->ring.next = tmp_win->ring.prev = NULL;
|
tmp_win->ring.next = tmp_win->ring.prev = NULL;
|
||||||
tmp_win->ring.cursor_valid = False;
|
tmp_win->ring.cursor_valid = False;
|
||||||
|
|
||||||
tmp_win->squeeze_info = NULL;
|
tmp_win->squeeze = HasShape;
|
||||||
/*
|
|
||||||
* get the squeeze information; note that this does not have to be freed
|
|
||||||
* since it is coming from the screen list
|
|
||||||
*/
|
|
||||||
if (HasShape) {
|
|
||||||
if (!LookInList (Scr->DontSqueezeTitleL, tmp_win->full_name,
|
|
||||||
&tmp_win->class)) {
|
|
||||||
tmp_win->squeeze_info = (SqueezeInfo *)
|
|
||||||
LookInList (Scr->SqueezeTitleL, tmp_win->full_name,
|
|
||||||
&tmp_win->class);
|
|
||||||
if (!tmp_win->squeeze_info) {
|
|
||||||
static SqueezeInfo default_squeeze = { J_LEFT, 0, 0 };
|
|
||||||
if (Scr->SqueezeTitle)
|
|
||||||
tmp_win->squeeze_info = &default_squeeze;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
tmp_win->old_bw = tmp_win->attr.border_width;
|
tmp_win->old_bw = tmp_win->attr.border_width;
|
||||||
|
|
||||||
if (Scr->ClientBorderWidth) {
|
if (Scr->ClientBorderWidth) {
|
||||||
@ -820,25 +794,20 @@ AddWindow(Window w)
|
|||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
tmp_win->title_w = 0;
|
tmp_win->title_w = 0;
|
||||||
tmp_win->squeeze_info = NULL;
|
tmp_win->squeeze = False;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (tmp_win->highlight)
|
|
||||||
{
|
|
||||||
tmp_win->gray = XCreatePixmapFromBitmapData(dpy, Scr->Root,
|
tmp_win->gray = XCreatePixmapFromBitmapData(dpy, Scr->Root,
|
||||||
gray_bits, gray_width, gray_height,
|
gray_bits, gray_width, gray_height,
|
||||||
tmp_win->border_tile.fore, tmp_win->border_tile.back,
|
tmp_win->border_tile.fore, tmp_win->border_tile.back,
|
||||||
Scr->d_depth);
|
Scr->d_depth);
|
||||||
|
|
||||||
SetBorder (tmp_win, False);
|
SetBorder (tmp_win, False);
|
||||||
}
|
|
||||||
else
|
|
||||||
tmp_win->gray = None;
|
|
||||||
|
|
||||||
|
|
||||||
if (tmp_win->title_w) {
|
if (tmp_win->title_w) {
|
||||||
CreateWindowTitlebarButtons (tmp_win);
|
CreateWindowTitlebarButtons (tmp_win);
|
||||||
ComputeTitleLocation (tmp_win);
|
ComputeTitleLocation(tmp_win);
|
||||||
XMoveWindow (dpy, tmp_win->title_w,
|
XMoveWindow (dpy, tmp_win->title_w,
|
||||||
tmp_win->title_x, tmp_win->title_y);
|
tmp_win->title_x, tmp_win->title_y);
|
||||||
XDefineCursor(dpy, tmp_win->title_w, Scr->TitleCursor);
|
XDefineCursor(dpy, tmp_win->title_w, Scr->TitleCursor);
|
||||||
@ -863,8 +832,8 @@ AddWindow(Window w)
|
|||||||
unsigned wws, hws, wbs, hbs;
|
unsigned wws, hws, wbs, hbs;
|
||||||
int boundingShaped, clipShaped;
|
int boundingShaped, clipShaped;
|
||||||
|
|
||||||
XShapeSelectInput (dpy, tmp_win->w, ShapeNotifyMask);
|
XShapeSelectInput(dpy, tmp_win->w, ShapeNotifyMask);
|
||||||
XShapeQueryExtents (dpy, tmp_win->w,
|
XShapeQueryExtents(dpy, tmp_win->w,
|
||||||
&boundingShaped, &xws, &yws, &wws, &hws,
|
&boundingShaped, &xws, &yws, &wws, &hws,
|
||||||
&clipShaped, &xbs, &ybs, &wbs, &hbs);
|
&clipShaped, &xbs, &ybs, &wbs, &hbs);
|
||||||
tmp_win->wShaped = boundingShaped;
|
tmp_win->wShaped = boundingShaped;
|
||||||
@ -1059,68 +1028,23 @@ GrabKeys(TwmWindow *tmp_win)
|
|||||||
|
|
||||||
static Window CreateHighlightWindow (TwmWindow *tmp_win)
|
static Window CreateHighlightWindow (TwmWindow *tmp_win)
|
||||||
{
|
{
|
||||||
XSetWindowAttributes attributes; /* attributes for create windows */
|
XSetWindowAttributes attributes;
|
||||||
Pixmap pm = None;
|
|
||||||
GC gc;
|
|
||||||
XGCValues gcv;
|
|
||||||
unsigned long valuemask;
|
|
||||||
int h = (Scr->TitleHeight - 2 * Scr->FramePadding);
|
int h = (Scr->TitleHeight - 2 * Scr->FramePadding);
|
||||||
Window w;
|
Window w;
|
||||||
|
|
||||||
|
/* Use an even gray pattern. */
|
||||||
/*
|
|
||||||
* If a special highlight pixmap was given, use that. Otherwise,
|
|
||||||
* use a nice, even gray pattern. The old horizontal lines look really
|
|
||||||
* awful on interlaced monitors (as well as resembling other looks a
|
|
||||||
* little bit too closely), but can be used by putting
|
|
||||||
*
|
|
||||||
* Pixmaps { TitleHighlight "hline2" }
|
|
||||||
*
|
|
||||||
* (or whatever the horizontal line bitmap is named) in the startup
|
|
||||||
* file. If all else fails, use the foreground color to look like a
|
|
||||||
* solid line.
|
|
||||||
*/
|
|
||||||
if (!Scr->hilitePm) {
|
|
||||||
Scr->hilitePm = XCreateBitmapFromData (dpy, tmp_win->title_w,
|
Scr->hilitePm = XCreateBitmapFromData (dpy, tmp_win->title_w,
|
||||||
gray_bits, gray_width,
|
gray_bits, gray_width,
|
||||||
gray_height);
|
gray_height);
|
||||||
Scr->hilite_pm_width = gray_width;
|
Scr->hilite_pm_width = gray_width;
|
||||||
Scr->hilite_pm_height = gray_height;
|
Scr->hilite_pm_height = gray_height;
|
||||||
}
|
|
||||||
if (Scr->hilitePm) {
|
|
||||||
pm = XCreatePixmap (dpy, tmp_win->title_w,
|
|
||||||
Scr->hilite_pm_width, Scr->hilite_pm_height,
|
|
||||||
Scr->d_depth);
|
|
||||||
gcv.foreground = tmp_win->title.fore;
|
|
||||||
gcv.background = tmp_win->title.back;
|
|
||||||
gcv.graphics_exposures = False;
|
|
||||||
gc = XCreateGC (dpy, pm,
|
|
||||||
(GCForeground|GCBackground|GCGraphicsExposures),
|
|
||||||
&gcv);
|
|
||||||
if (gc) {
|
|
||||||
XCopyPlane (dpy, Scr->hilitePm, pm, gc, 0, 0,
|
|
||||||
Scr->hilite_pm_width, Scr->hilite_pm_height,
|
|
||||||
0, 0, 1);
|
|
||||||
XFreeGC (dpy, gc);
|
|
||||||
} else {
|
|
||||||
XFreePixmap (dpy, pm);
|
|
||||||
pm = None;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (pm) {
|
|
||||||
valuemask = CWBackPixmap;
|
|
||||||
attributes.background_pixmap = pm;
|
|
||||||
} else {
|
|
||||||
valuemask = CWBackPixel;
|
|
||||||
attributes.background_pixel = tmp_win->title.fore;
|
attributes.background_pixel = tmp_win->title.fore;
|
||||||
}
|
|
||||||
|
|
||||||
w = XCreateWindow (dpy, tmp_win->title_w, 0, Scr->FramePadding,
|
w = XCreateWindow (dpy, tmp_win->title_w, 0, Scr->FramePadding,
|
||||||
(unsigned int) Scr->TBInfo.width, (unsigned int) h,
|
(unsigned int) Scr->TBInfo.width, (unsigned int) h,
|
||||||
(unsigned int) 0,
|
(unsigned int) 0,
|
||||||
Scr->d_depth, (unsigned int) CopyFromParent,
|
Scr->d_depth, (unsigned int) CopyFromParent,
|
||||||
Scr->d_visual, valuemask, &attributes);
|
Scr->d_visual, CWBackPixel, &attributes);
|
||||||
if (pm) XFreePixmap (dpy, pm);
|
|
||||||
return w;
|
return w;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1139,7 +1063,6 @@ void ComputeCommonTitleOffsets (void)
|
|||||||
Scr->TBInfo.rightoff += (Scr->ButtonIndent +
|
Scr->TBInfo.rightoff += (Scr->ButtonIndent +
|
||||||
((Scr->TBInfo.nright * buttonwidth) -
|
((Scr->TBInfo.nright * buttonwidth) -
|
||||||
Scr->TBInfo.pad));
|
Scr->TBInfo.pad));
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void ComputeWindowTitleOffsets (TwmWindow *tmp_win, int width, Bool squeeze)
|
void ComputeWindowTitleOffsets (TwmWindow *tmp_win, int width, Bool squeeze)
|
||||||
@ -1148,15 +1071,15 @@ void ComputeWindowTitleOffsets (TwmWindow *tmp_win, int width, Bool squeeze)
|
|||||||
if (tmp_win->hilite_w || Scr->TBInfo.nright > 0)
|
if (tmp_win->hilite_w || Scr->TBInfo.nright > 0)
|
||||||
tmp_win->highlightx += Scr->TitlePadding;
|
tmp_win->highlightx += Scr->TitlePadding;
|
||||||
tmp_win->rightx = width - Scr->TBInfo.rightoff;
|
tmp_win->rightx = width - Scr->TBInfo.rightoff;
|
||||||
if (squeeze && tmp_win->squeeze_info) {
|
if (squeeze && tmp_win->squeeze) {
|
||||||
int rx = (tmp_win->highlightx +
|
int rx = (tmp_win->highlightx +
|
||||||
(tmp_win->hilite_w
|
(tmp_win->hilite_w
|
||||||
? Scr->TBInfo.width * 2 : 0) +
|
? Scr->TBInfo.width * 2 : 0) +
|
||||||
(Scr->TBInfo.nright > 0 ? Scr->TitlePadding : 0) +
|
(Scr->TBInfo.nright > 0 ? Scr->TitlePadding : 0) +
|
||||||
Scr->FramePadding);
|
Scr->FramePadding);
|
||||||
if (rx < tmp_win->rightx) tmp_win->rightx = rx;
|
if (rx < tmp_win->rightx)
|
||||||
|
tmp_win->rightx = rx;
|
||||||
}
|
}
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -1165,57 +1088,14 @@ void ComputeWindowTitleOffsets (TwmWindow *tmp_win, int width, Bool squeeze)
|
|||||||
* into account since we want (0,0) of the title window to line up with (0,0)
|
* into account since we want (0,0) of the title window to line up with (0,0)
|
||||||
* of the frame window.
|
* of the frame window.
|
||||||
*/
|
*/
|
||||||
void ComputeTitleLocation (register TwmWindow *tmp)
|
void ComputeTitleLocation(TwmWindow *tmp)
|
||||||
{
|
{
|
||||||
tmp->title_x = -tmp->frame_bw;
|
tmp->title_x = -tmp->frame_bw;
|
||||||
tmp->title_y = -tmp->frame_bw;
|
tmp->title_y = -tmp->frame_bw;
|
||||||
|
|
||||||
if (tmp->squeeze_info) {
|
|
||||||
register SqueezeInfo *si = tmp->squeeze_info;
|
|
||||||
int basex;
|
|
||||||
int maxwidth = tmp->frame_width;
|
|
||||||
int tw = tmp->title_width;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* figure label base from squeeze info (justification fraction)
|
|
||||||
*/
|
|
||||||
if (si->denom == 0) { /* num is pixel based */
|
|
||||||
if ((basex = si->num) == 0) { /* look for special cases */
|
|
||||||
switch (si->justify) {
|
|
||||||
case J_RIGHT:
|
|
||||||
basex = maxwidth;
|
|
||||||
break;
|
|
||||||
case J_CENTER:
|
|
||||||
basex = maxwidth / 2;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else { /* num/denom is fraction */
|
|
||||||
basex = ((si->num * maxwidth) / si->denom);
|
|
||||||
if (si->num < 0) basex += maxwidth;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* adjust for left (nop), center, right justify and clip
|
|
||||||
*/
|
|
||||||
switch (si->justify) {
|
|
||||||
case J_CENTER:
|
|
||||||
basex -= tw / 2;
|
|
||||||
break;
|
|
||||||
case J_RIGHT:
|
|
||||||
basex -= tw - 1;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
if (basex > maxwidth - tw + 1)
|
|
||||||
basex = maxwidth - tw + 1;
|
|
||||||
if (basex < 0) basex = 0;
|
|
||||||
|
|
||||||
tmp->title_x = basex - tmp->frame_bw;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static void CreateWindowTitlebarButtons (TwmWindow *tmp_win)
|
static void CreateWindowTitlebarButtons(TwmWindow *tmp_win)
|
||||||
{
|
{
|
||||||
unsigned long valuemask; /* mask for create windows */
|
unsigned long valuemask; /* mask for create windows */
|
||||||
XSetWindowAttributes attributes; /* attributes for create windows */
|
XSetWindowAttributes attributes; /* attributes for create windows */
|
||||||
@ -1282,13 +1162,11 @@ static void CreateWindowTitlebarButtons (TwmWindow *tmp_win)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
tmp_win->hilite_w = (tmp_win->titlehighlight
|
tmp_win->hilite_w = CreateHighlightWindow(tmp_win);
|
||||||
? CreateHighlightWindow (tmp_win) : None);
|
|
||||||
|
|
||||||
XMapSubwindows(dpy, tmp_win->title_w);
|
XMapSubwindows(dpy, tmp_win->title_w);
|
||||||
if (tmp_win->hilite_w)
|
if (tmp_win->hilite_w)
|
||||||
XUnmapWindow(dpy, tmp_win->hilite_w);
|
XUnmapWindow(dpy, tmp_win->hilite_w);
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
1171
src/gram.c
1171
src/gram.c
File diff suppressed because it is too large
Load Diff
98
src/gram.h
98
src/gram.h
@ -11,58 +11,52 @@
|
|||||||
#define ALL 267
|
#define ALL 267
|
||||||
#define OR 268
|
#define OR 268
|
||||||
#define CURSORS 269
|
#define CURSORS 269
|
||||||
#define PIXMAPS 270
|
#define ICONS 270
|
||||||
#define ICONS 271
|
#define COLOR 271
|
||||||
#define COLOR 272
|
#define SAVECOLOR 272
|
||||||
#define SAVECOLOR 273
|
#define MONOCHROME 273
|
||||||
#define MONOCHROME 274
|
#define FUNCTION 274
|
||||||
#define FUNCTION 275
|
#define WINDOW_FUNCTION 275
|
||||||
#define WINDOW_FUNCTION 276
|
#define ZOOM 276
|
||||||
#define ZOOM 277
|
#define MAKE_TITLE 277
|
||||||
#define MAKE_TITLE 278
|
#define GRAYSCALE 278
|
||||||
#define GRAYSCALE 279
|
#define NO_TITLE 279
|
||||||
#define NO_TITLE 280
|
#define AUTO_RAISE 280
|
||||||
#define AUTO_RAISE 281
|
#define ICON_REGION 281
|
||||||
#define NO_HILITE 282
|
#define META 282
|
||||||
#define ICON_REGION 283
|
#define SHIFT 283
|
||||||
#define META 284
|
#define LOCK 284
|
||||||
#define SHIFT 285
|
#define CONTROL 285
|
||||||
#define LOCK 286
|
#define WINDOW 286
|
||||||
#define CONTROL 287
|
#define TITLE 287
|
||||||
#define WINDOW 288
|
#define ICON 288
|
||||||
#define TITLE 289
|
#define ROOT 289
|
||||||
#define ICON 290
|
#define FRAME 290
|
||||||
#define ROOT 291
|
#define COLON 291
|
||||||
#define FRAME 292
|
#define EQUALS 292
|
||||||
#define COLON 293
|
#define START_ICONIFIED 293
|
||||||
#define EQUALS 294
|
#define MOVE 294
|
||||||
#define SQUEEZE_TITLE 295
|
#define RESIZE 295
|
||||||
#define DONT_SQUEEZE_TITLE 296
|
#define WAIT 296
|
||||||
#define START_ICONIFIED 297
|
#define SELECT 297
|
||||||
#define NO_TITLE_HILITE 298
|
#define KILL 298
|
||||||
#define TITLE_HILITE 299
|
#define LEFT_TITLEBUTTON 299
|
||||||
#define MOVE 300
|
#define RIGHT_TITLEBUTTON 300
|
||||||
#define RESIZE 301
|
#define NUMBER 301
|
||||||
#define WAIT 302
|
#define KEYWORD 302
|
||||||
#define SELECT 303
|
#define NKEYWORD 303
|
||||||
#define KILL 304
|
#define CKEYWORD 304
|
||||||
#define LEFT_TITLEBUTTON 305
|
#define CLKEYWORD 305
|
||||||
#define RIGHT_TITLEBUTTON 306
|
#define FKEYWORD 306
|
||||||
#define NUMBER 307
|
#define FSKEYWORD 307
|
||||||
#define KEYWORD 308
|
#define SKEYWORD 308
|
||||||
#define NKEYWORD 309
|
#define DKEYWORD 309
|
||||||
#define CKEYWORD 310
|
#define JKEYWORD 310
|
||||||
#define CLKEYWORD 311
|
#define WINDOW_RING 311
|
||||||
#define FKEYWORD 312
|
#define WARP_CURSOR 312
|
||||||
#define FSKEYWORD 313
|
#define ERRORTOKEN 313
|
||||||
#define SKEYWORD 314
|
#define NO_STACKMODE 314
|
||||||
#define DKEYWORD 315
|
#define STRING 315
|
||||||
#define JKEYWORD 316
|
|
||||||
#define WINDOW_RING 317
|
|
||||||
#define WARP_CURSOR 318
|
|
||||||
#define ERRORTOKEN 319
|
|
||||||
#define NO_STACKMODE 320
|
|
||||||
#define STRING 321
|
|
||||||
#ifndef YYSTYPE_DEFINED
|
#ifndef YYSTYPE_DEFINED
|
||||||
#define YYSTYPE_DEFINED
|
#define YYSTYPE_DEFINED
|
||||||
typedef union
|
typedef union
|
||||||
|
56
src/gram.y
56
src/gram.y
@ -110,13 +110,12 @@ static void yyerror ( const char *s );
|
|||||||
};
|
};
|
||||||
|
|
||||||
%token <num> LB RB LP RP MENUS MENU BUTTON DEFAULT_FUNCTION PLUS MINUS
|
%token <num> LB RB LP RP MENUS MENU BUTTON DEFAULT_FUNCTION PLUS MINUS
|
||||||
%token <num> ALL OR CURSORS PIXMAPS ICONS COLOR SAVECOLOR MONOCHROME FUNCTION
|
%token <num> ALL OR CURSORS ICONS COLOR SAVECOLOR MONOCHROME FUNCTION
|
||||||
%token <num> WINDOW_FUNCTION ZOOM
|
%token <num> WINDOW_FUNCTION ZOOM
|
||||||
%token <num> MAKE_TITLE GRAYSCALE
|
%token <num> MAKE_TITLE GRAYSCALE
|
||||||
%token <num> NO_TITLE AUTO_RAISE NO_HILITE ICON_REGION
|
%token <num> NO_TITLE AUTO_RAISE ICON_REGION
|
||||||
%token <num> META SHIFT LOCK CONTROL WINDOW TITLE ICON ROOT FRAME
|
%token <num> META SHIFT LOCK CONTROL WINDOW TITLE ICON ROOT FRAME
|
||||||
%token <num> COLON EQUALS SQUEEZE_TITLE DONT_SQUEEZE_TITLE
|
%token <num> COLON EQUALS START_ICONIFIED
|
||||||
%token <num> START_ICONIFIED NO_TITLE_HILITE TITLE_HILITE
|
|
||||||
%token <num> MOVE RESIZE WAIT SELECT KILL LEFT_TITLEBUTTON RIGHT_TITLEBUTTON
|
%token <num> MOVE RESIZE WAIT SELECT KILL LEFT_TITLEBUTTON RIGHT_TITLEBUTTON
|
||||||
%token <num> NUMBER KEYWORD NKEYWORD CKEYWORD CLKEYWORD FKEYWORD FSKEYWORD
|
%token <num> NUMBER KEYWORD NKEYWORD CKEYWORD CLKEYWORD FKEYWORD FSKEYWORD
|
||||||
%token <num> SKEYWORD DKEYWORD JKEYWORD WINDOW_RING WARP_CURSOR ERRORTOKEN
|
%token <num> SKEYWORD DKEYWORD JKEYWORD WINDOW_RING WARP_CURSOR ERRORTOKEN
|
||||||
@ -124,9 +123,9 @@ static void yyerror ( const char *s );
|
|||||||
%token <ptr> STRING
|
%token <ptr> STRING
|
||||||
|
|
||||||
%type <ptr> string
|
%type <ptr> string
|
||||||
%type <num> pixmap_list cursor_list color_list save_color_list stmt
|
%type <num> cursor_list color_list save_color_list stmt
|
||||||
%type <num> win_color_list win_list function menu
|
%type <num> win_color_list win_list function menu
|
||||||
%type <num> noarg sarg error narg squeeze color_entry
|
%type <num> noarg sarg error narg color_entry
|
||||||
%type <num> action button number signed_number full fullkey
|
%type <num> action button number signed_number full fullkey
|
||||||
|
|
||||||
%start twmrc
|
%start twmrc
|
||||||
@ -143,7 +142,6 @@ stmt : error
|
|||||||
| noarg
|
| noarg
|
||||||
| sarg
|
| sarg
|
||||||
| narg
|
| narg
|
||||||
| squeeze
|
|
||||||
| ICON_REGION string DKEYWORD DKEYWORD number number
|
| ICON_REGION string DKEYWORD DKEYWORD number number
|
||||||
{ AddIconRegion($2, $3, $4, $5, $6); }
|
{ AddIconRegion($2, $3, $4, $5, $6); }
|
||||||
| ZOOM number { if (Scr->FirstTime)
|
| ZOOM number { if (Scr->FirstTime)
|
||||||
@ -154,7 +152,6 @@ stmt : error
|
|||||||
}
|
}
|
||||||
| ZOOM { if (Scr->FirstTime)
|
| ZOOM { if (Scr->FirstTime)
|
||||||
Scr->DoZoom = TRUE; }
|
Scr->DoZoom = TRUE; }
|
||||||
| PIXMAPS pixmap_list {}
|
|
||||||
| CURSORS cursor_list {}
|
| CURSORS cursor_list {}
|
||||||
| LEFT_TITLEBUTTON string EQUALS action {
|
| LEFT_TITLEBUTTON string EQUALS action {
|
||||||
GotTitleButton ($2, $4, False);
|
GotTitleButton ($2, $4, False);
|
||||||
@ -184,14 +181,6 @@ stmt : error
|
|||||||
}
|
}
|
||||||
| string fullkey { GotKey($1, $2); }
|
| string fullkey { GotKey($1, $2); }
|
||||||
| button full { GotButton($1, $2); }
|
| button full { GotButton($1, $2); }
|
||||||
| NO_TITLE_HILITE { list = &Scr->NoTitleHighlight; }
|
|
||||||
win_list
|
|
||||||
| NO_TITLE_HILITE { if (Scr->FirstTime)
|
|
||||||
Scr->TitleHighlight = FALSE; }
|
|
||||||
| NO_HILITE { list = &Scr->NoHighlight; }
|
|
||||||
win_list
|
|
||||||
| NO_HILITE { if (Scr->FirstTime)
|
|
||||||
Scr->Highlight = FALSE; }
|
|
||||||
| NO_STACKMODE { list = &Scr->NoStackModeL; }
|
| NO_STACKMODE { list = &Scr->NoStackModeL; }
|
||||||
win_list
|
win_list
|
||||||
| NO_STACKMODE { if (Scr->FirstTime)
|
| NO_STACKMODE { if (Scr->FirstTime)
|
||||||
@ -342,18 +331,6 @@ contextkey : WINDOW { cont |= C_WINDOW_BIT; }
|
|||||||
| string { Name = $1; cont |= C_NAME_BIT; }
|
| string { Name = $1; cont |= C_NAME_BIT; }
|
||||||
;
|
;
|
||||||
|
|
||||||
|
|
||||||
pixmap_list : LB pixmap_entries RB
|
|
||||||
;
|
|
||||||
|
|
||||||
pixmap_entries : /* Empty */
|
|
||||||
| pixmap_entries pixmap_entry
|
|
||||||
;
|
|
||||||
|
|
||||||
pixmap_entry : TITLE_HILITE string { SetHighlightPixmap ($2); }
|
|
||||||
;
|
|
||||||
|
|
||||||
|
|
||||||
cursor_list : LB cursor_entries RB
|
cursor_list : LB cursor_entries RB
|
||||||
;
|
;
|
||||||
|
|
||||||
@ -420,7 +397,7 @@ color_entry : CLKEYWORD string { if (!do_colorlist_keyword ($1, color,
|
|||||||
ParseError = 1;
|
ParseError = 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
| CLKEYWORD string { list = do_colorlist_keyword($1,color,
|
| CLKEYWORD string { list = do_colorlist_keyword($1, color,
|
||||||
$2);
|
$2);
|
||||||
if (!list) {
|
if (!list) {
|
||||||
twmrc_error_prefix();
|
twmrc_error_prefix();
|
||||||
@ -465,27 +442,6 @@ win_color_entry : string string { if (Scr->FirstTime &&
|
|||||||
AddToList(list, $1, $2); }
|
AddToList(list, $1, $2); }
|
||||||
;
|
;
|
||||||
|
|
||||||
squeeze : SQUEEZE_TITLE {
|
|
||||||
if (HasShape) Scr->SqueezeTitle = TRUE;
|
|
||||||
}
|
|
||||||
| SQUEEZE_TITLE { list = &Scr->SqueezeTitleL;
|
|
||||||
if (HasShape && Scr->SqueezeTitle == -1)
|
|
||||||
Scr->SqueezeTitle = TRUE;
|
|
||||||
}
|
|
||||||
LB win_sqz_entries RB
|
|
||||||
| DONT_SQUEEZE_TITLE { Scr->SqueezeTitle = FALSE; }
|
|
||||||
| DONT_SQUEEZE_TITLE { list = &Scr->DontSqueezeTitleL; }
|
|
||||||
win_list
|
|
||||||
;
|
|
||||||
|
|
||||||
win_sqz_entries : /* Empty */
|
|
||||||
| win_sqz_entries string JKEYWORD signed_number number {
|
|
||||||
if (Scr->FirstTime) {
|
|
||||||
do_squeeze_entry (list, $2, $3, $4, $5);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
;
|
|
||||||
|
|
||||||
win_list : LB win_entries RB
|
win_list : LB win_entries RB
|
||||||
;
|
;
|
||||||
|
|
||||||
|
@ -2651,7 +2651,6 @@ BumpWindowColormap (TwmWindow *tmp, int inc)
|
|||||||
void
|
void
|
||||||
SetBorder (TwmWindow *tmp, Bool onoroff)
|
SetBorder (TwmWindow *tmp, Bool onoroff)
|
||||||
{
|
{
|
||||||
if (tmp->highlight) {
|
|
||||||
if (onoroff) {
|
if (onoroff) {
|
||||||
XSetWindowBorder (dpy, tmp->frame, tmp->border);
|
XSetWindowBorder (dpy, tmp->frame, tmp->border);
|
||||||
if (tmp->title_w)
|
if (tmp->title_w)
|
||||||
@ -2661,7 +2660,6 @@ SetBorder (TwmWindow *tmp, Bool onoroff)
|
|||||||
if (tmp->title_w)
|
if (tmp->title_w)
|
||||||
XSetWindowBorderPixmap (dpy, tmp->title_w, tmp->gray);
|
XSetWindowBorderPixmap (dpy, tmp->title_w, tmp->gray);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
56
src/parse.c
56
src/parse.c
@ -401,7 +401,6 @@ static TwmKeyword keytable[] = {
|
|||||||
{ "defaultfunction", DEFAULT_FUNCTION, 0 },
|
{ "defaultfunction", DEFAULT_FUNCTION, 0 },
|
||||||
{ "destroy", KILL, 0 },
|
{ "destroy", KILL, 0 },
|
||||||
{ "dontmoveoff", KEYWORD, kw0_DontMoveOff },
|
{ "dontmoveoff", KEYWORD, kw0_DontMoveOff },
|
||||||
{ "dontsqueezetitle", DONT_SQUEEZE_TITLE, 0 },
|
|
||||||
{ "east", DKEYWORD, D_EAST },
|
{ "east", DKEYWORD, D_EAST },
|
||||||
{ "f", FRAME, 0 },
|
{ "f", FRAME, 0 },
|
||||||
{ "f.autoraise", FKEYWORD, F_AUTORAISE },
|
{ "f.autoraise", FKEYWORD, F_AUTORAISE },
|
||||||
@ -499,7 +498,6 @@ static TwmKeyword keytable[] = {
|
|||||||
{ "nobackingstore", KEYWORD, kw0_NoBackingStore },
|
{ "nobackingstore", KEYWORD, kw0_NoBackingStore },
|
||||||
{ "nodefaults", KEYWORD, kw0_NoDefaults },
|
{ "nodefaults", KEYWORD, kw0_NoDefaults },
|
||||||
{ "nograbserver", KEYWORD, kw0_NoGrabServer },
|
{ "nograbserver", KEYWORD, kw0_NoGrabServer },
|
||||||
{ "nohighlight", NO_HILITE, 0 },
|
|
||||||
{ "nomenushadows", KEYWORD, kw0_NoMenuShadows },
|
{ "nomenushadows", KEYWORD, kw0_NoMenuShadows },
|
||||||
{ "noraiseondeiconify", KEYWORD, kw0_NoRaiseOnDeiconify },
|
{ "noraiseondeiconify", KEYWORD, kw0_NoRaiseOnDeiconify },
|
||||||
{ "noraiseonmove", KEYWORD, kw0_NoRaiseOnMove },
|
{ "noraiseonmove", KEYWORD, kw0_NoRaiseOnMove },
|
||||||
@ -510,10 +508,8 @@ static TwmKeyword keytable[] = {
|
|||||||
{ "nostackmode", NO_STACKMODE, 0 },
|
{ "nostackmode", NO_STACKMODE, 0 },
|
||||||
{ "notitle", NO_TITLE, 0 },
|
{ "notitle", NO_TITLE, 0 },
|
||||||
{ "notitlefocus", KEYWORD, kw0_NoTitleFocus },
|
{ "notitlefocus", KEYWORD, kw0_NoTitleFocus },
|
||||||
{ "notitlehighlight", NO_TITLE_HILITE, 0 },
|
|
||||||
{ "noversion", KEYWORD, kw0_NoVersion },
|
{ "noversion", KEYWORD, kw0_NoVersion },
|
||||||
{ "opaquemove", KEYWORD, kw0_OpaqueMove },
|
{ "opaquemove", KEYWORD, kw0_OpaqueMove },
|
||||||
{ "pixmaps", PIXMAPS, 0 },
|
|
||||||
{ "pointerbackground", CKEYWORD, kwc_PointerBackground },
|
{ "pointerbackground", CKEYWORD, kwc_PointerBackground },
|
||||||
{ "pointerforeground", CKEYWORD, kwc_PointerForeground },
|
{ "pointerforeground", CKEYWORD, kwc_PointerForeground },
|
||||||
{ "priority", NKEYWORD, kwn_Priority },
|
{ "priority", NKEYWORD, kwn_Priority },
|
||||||
@ -530,7 +526,6 @@ static TwmKeyword keytable[] = {
|
|||||||
{ "select", SELECT, 0 },
|
{ "select", SELECT, 0 },
|
||||||
{ "shift", SHIFT, 0 },
|
{ "shift", SHIFT, 0 },
|
||||||
{ "south", DKEYWORD, D_SOUTH },
|
{ "south", DKEYWORD, D_SOUTH },
|
||||||
{ "squeezetitle", SQUEEZE_TITLE, 0 },
|
|
||||||
{ "starticonified", START_ICONIFIED, 0 },
|
{ "starticonified", START_ICONIFIED, 0 },
|
||||||
{ "t", TITLE, 0 },
|
{ "t", TITLE, 0 },
|
||||||
{ "title", TITLE, 0 },
|
{ "title", TITLE, 0 },
|
||||||
@ -538,7 +533,6 @@ static TwmKeyword keytable[] = {
|
|||||||
{ "titlebuttonborderwidth", NKEYWORD, kwn_TitleButtonBorderWidth },
|
{ "titlebuttonborderwidth", NKEYWORD, kwn_TitleButtonBorderWidth },
|
||||||
{ "titlefont", SKEYWORD, kws_TitleFont },
|
{ "titlefont", SKEYWORD, kws_TitleFont },
|
||||||
{ "titleforeground", CLKEYWORD, kwcl_TitleForeground },
|
{ "titleforeground", CLKEYWORD, kwcl_TitleForeground },
|
||||||
{ "titlehighlight", TITLE_HILITE, 0 },
|
|
||||||
{ "titlepadding", NKEYWORD, kwn_TitlePadding },
|
{ "titlepadding", NKEYWORD, kwn_TitlePadding },
|
||||||
{ "unknownicon", SKEYWORD, kws_UnknownIcon },
|
{ "unknownicon", SKEYWORD, kws_UnknownIcon },
|
||||||
{ "usepposition", SKEYWORD, kws_UsePPosition },
|
{ "usepposition", SKEYWORD, kws_UsePPosition },
|
||||||
@ -994,53 +988,3 @@ ParseUsePPosition (char *s)
|
|||||||
|
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
* \param list squeeze or dont-squeeze list
|
|
||||||
* \param name window name
|
|
||||||
* \param justify left, center, or right
|
|
||||||
* \param num signed num
|
|
||||||
* \param denom 0 or indicates fraction denom
|
|
||||||
*/
|
|
||||||
void
|
|
||||||
do_squeeze_entry (name_list **list, char *name, int justify, int num, int denom)
|
|
||||||
{
|
|
||||||
int absnum = (num < 0 ? -num : num);
|
|
||||||
|
|
||||||
if (denom < 0) {
|
|
||||||
twmrc_error_prefix();
|
|
||||||
fprintf (stderr, "negative SqueezeTitle denominator %d\n", denom);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (absnum > denom && denom != 0) {
|
|
||||||
twmrc_error_prefix();
|
|
||||||
fprintf (stderr, "SqueezeTitle fraction %d/%d outside window\n",
|
|
||||||
num, denom);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (denom == 1) {
|
|
||||||
twmrc_error_prefix();
|
|
||||||
fprintf (stderr, "useless SqueezeTitle faction %d/%d, assuming 0/0\n",
|
|
||||||
num, denom);
|
|
||||||
num = 0;
|
|
||||||
denom = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (HasShape) {
|
|
||||||
SqueezeInfo *sinfo;
|
|
||||||
sinfo = malloc (sizeof(SqueezeInfo));
|
|
||||||
|
|
||||||
if (!sinfo) {
|
|
||||||
twmrc_error_prefix();
|
|
||||||
fprintf (stderr, "unable to allocate %ld bytes for squeeze info\n",
|
|
||||||
(unsigned long)sizeof(SqueezeInfo));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
sinfo->justify = justify;
|
|
||||||
sinfo->num = num;
|
|
||||||
sinfo->denom = denom;
|
|
||||||
AddToList (list, name, (char *) sinfo);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
@ -76,9 +76,6 @@ extern int ParseTwmrc ( char *filename );
|
|||||||
extern int parse_keyword ( char *s, int *nump );
|
extern int parse_keyword ( char *s, int *nump );
|
||||||
extern void TwmOutput ( int c );
|
extern void TwmOutput ( int c );
|
||||||
extern void twmUnput ( int c );
|
extern void twmUnput ( int c );
|
||||||
extern void do_squeeze_entry ( name_list **list, char *name, int justify,
|
|
||||||
int num, int denom );
|
|
||||||
|
|
||||||
|
|
||||||
extern int (*twmInputFunc)(void);
|
extern int (*twmInputFunc)(void);
|
||||||
extern int ConstrainedMoveTime;
|
extern int ConstrainedMoveTime;
|
||||||
|
@ -782,7 +782,7 @@ void SetupFrame (TwmWindow *tmp_win, int x, int y, int w, int h, int bw, Bool se
|
|||||||
ComputeWindowTitleOffsets (tmp_win, xwc.width, True);
|
ComputeWindowTitleOffsets (tmp_win, xwc.width, True);
|
||||||
|
|
||||||
reShape = (tmp_win->wShaped ? TRUE : FALSE);
|
reShape = (tmp_win->wShaped ? TRUE : FALSE);
|
||||||
if (tmp_win->squeeze_info) /* check for title shaping */
|
if (tmp_win->squeeze) /* check for title shaping */
|
||||||
{
|
{
|
||||||
title_width = tmp_win->rightx + Scr->TBInfo.rightoff;
|
title_width = tmp_win->rightx + Scr->TBInfo.rightoff;
|
||||||
if (title_width < xwc.width)
|
if (title_width < xwc.width)
|
||||||
@ -1023,7 +1023,7 @@ SetFrameShape (TwmWindow *tmp)
|
|||||||
/*
|
/*
|
||||||
* can optimize rectangular contents window
|
* can optimize rectangular contents window
|
||||||
*/
|
*/
|
||||||
if (tmp->squeeze_info) {
|
if (tmp->squeeze) {
|
||||||
XRectangle newBounding[2];
|
XRectangle newBounding[2];
|
||||||
XRectangle newClip[2];
|
XRectangle newClip[2];
|
||||||
int fbw2 = 2 * tmp->frame_bw;
|
int fbw2 = 2 * tmp->frame_bw;
|
||||||
|
@ -158,12 +158,8 @@ typedef struct ScreenInfo
|
|||||||
name_list *MakeTitle; /* list of window names with title bar */
|
name_list *MakeTitle; /* list of window names with title bar */
|
||||||
name_list *AutoRaise; /* list of window names to auto-raise */
|
name_list *AutoRaise; /* list of window names to auto-raise */
|
||||||
name_list *IconNames; /* list of window names and icon names */
|
name_list *IconNames; /* list of window names and icon names */
|
||||||
name_list *NoHighlight; /* list of windows to not highlight */
|
|
||||||
name_list *NoStackModeL; /* windows to ignore stack mode requests */
|
name_list *NoStackModeL; /* windows to ignore stack mode requests */
|
||||||
name_list *NoTitleHighlight;/* list of windows to not highlight the TB*/
|
|
||||||
name_list *StartIconified; /* windows to start iconic */
|
name_list *StartIconified; /* windows to start iconic */
|
||||||
name_list *SqueezeTitleL; /* windows of which to squeeze title */
|
|
||||||
name_list *DontSqueezeTitleL; /* windows of which not to squeeze */
|
|
||||||
name_list *WindowRingL; /* windows in ring */
|
name_list *WindowRingL; /* windows in ring */
|
||||||
name_list *WarpCursorL; /* windows to warp cursor to on deiconify */
|
name_list *WarpCursorL; /* windows to warp cursor to on deiconify */
|
||||||
|
|
||||||
@ -216,15 +212,12 @@ typedef struct ScreenInfo
|
|||||||
short SaveUnder; /* use save under's for menus */
|
short SaveUnder; /* use save under's for menus */
|
||||||
short RandomPlacement; /* randomly place windows that no give hints */
|
short RandomPlacement; /* randomly place windows that no give hints */
|
||||||
short OpaqueMove; /* move the window rather than outline */
|
short OpaqueMove; /* move the window rather than outline */
|
||||||
short Highlight; /* should we highlight the window borders */
|
|
||||||
short StackMode; /* should we honor stack mode requests */
|
short StackMode; /* should we honor stack mode requests */
|
||||||
short TitleHighlight; /* should we highlight the titlebar */
|
|
||||||
short MoveDelta; /* number of pixels before f.move starts */
|
short MoveDelta; /* number of pixels before f.move starts */
|
||||||
short ZoomCount; /* zoom outline count */
|
short ZoomCount; /* zoom outline count */
|
||||||
short Shadow; /* show the menu shadow */
|
short Shadow; /* show the menu shadow */
|
||||||
short InterpolateMenuColors;/* make pretty menus */
|
short InterpolateMenuColors;/* make pretty menus */
|
||||||
short ClientBorderWidth; /* respect client window border width */
|
short ClientBorderWidth; /* respect client window border width */
|
||||||
short SqueezeTitle; /* make title as small as possible */
|
|
||||||
short HaveFonts; /* set if fonts have been loaded */
|
short HaveFonts; /* set if fonts have been loaded */
|
||||||
short FirstTime; /* first time we've read .twmrc */
|
short FirstTime; /* first time we've read .twmrc */
|
||||||
short CaseSensitive; /* be case-sensitive when sorting names */
|
short CaseSensitive; /* be case-sensitive when sorting names */
|
||||||
|
15
src/twm.c
15
src/twm.c
@ -345,7 +345,7 @@ main(int argc, char *argv[])
|
|||||||
if (restore_filename)
|
if (restore_filename)
|
||||||
ReadWinConfigFile (restore_filename);
|
ReadWinConfigFile (restore_filename);
|
||||||
|
|
||||||
HasShape = XShapeQueryExtension (dpy, &ShapeEventBase, &ShapeErrorBase);
|
HasShape = XShapeQueryExtension(dpy, &ShapeEventBase, &ShapeErrorBase);
|
||||||
HasSync = XSyncQueryExtension(dpy, &SyncEventBase, &SyncErrorBase);
|
HasSync = XSyncQueryExtension(dpy, &SyncEventBase, &SyncErrorBase);
|
||||||
TwmContext = XUniqueContext();
|
TwmContext = XUniqueContext();
|
||||||
MenuContext = XUniqueContext();
|
MenuContext = XUniqueContext();
|
||||||
@ -444,12 +444,8 @@ main(int argc, char *argv[])
|
|||||||
Scr->MakeTitle = NULL;
|
Scr->MakeTitle = NULL;
|
||||||
Scr->AutoRaise = NULL;
|
Scr->AutoRaise = NULL;
|
||||||
Scr->IconNames = NULL;
|
Scr->IconNames = NULL;
|
||||||
Scr->NoHighlight = NULL;
|
|
||||||
Scr->NoStackModeL = NULL;
|
Scr->NoStackModeL = NULL;
|
||||||
Scr->NoTitleHighlight = NULL;
|
|
||||||
Scr->StartIconified = NULL;
|
Scr->StartIconified = NULL;
|
||||||
Scr->SqueezeTitleL = NULL;
|
|
||||||
Scr->DontSqueezeTitleL = NULL;
|
|
||||||
Scr->WindowRingL = NULL;
|
Scr->WindowRingL = NULL;
|
||||||
Scr->WarpCursorL = NULL;
|
Scr->WarpCursorL = NULL;
|
||||||
/* remember to put an initialization in InitVariables also
|
/* remember to put an initialization in InitVariables also
|
||||||
@ -522,7 +518,6 @@ main(int argc, char *argv[])
|
|||||||
|
|
||||||
Scr->siconifyPm = None;
|
Scr->siconifyPm = None;
|
||||||
Scr->pullPm = None;
|
Scr->pullPm = None;
|
||||||
Scr->hilitePm = None;
|
|
||||||
Scr->tbpm.xlogo = None;
|
Scr->tbpm.xlogo = None;
|
||||||
Scr->tbpm.resize = None;
|
Scr->tbpm.resize = None;
|
||||||
Scr->tbpm.question = None;
|
Scr->tbpm.question = None;
|
||||||
@ -535,7 +530,6 @@ main(int argc, char *argv[])
|
|||||||
/* Parse it once for each screen. */
|
/* Parse it once for each screen. */
|
||||||
ParseTwmrc(InitFile);
|
ParseTwmrc(InitFile);
|
||||||
assign_var_savecolor(); /* storeing pixels for twmrc "entities" */
|
assign_var_savecolor(); /* storeing pixels for twmrc "entities" */
|
||||||
if (Scr->SqueezeTitle == -1) Scr->SqueezeTitle = FALSE;
|
|
||||||
if (!Scr->HaveFonts) CreateFonts();
|
if (!Scr->HaveFonts) CreateFonts();
|
||||||
CreateGCs();
|
CreateGCs();
|
||||||
MakeMenus();
|
MakeMenus();
|
||||||
@ -656,12 +650,8 @@ InitVariables(void)
|
|||||||
FreeList(&Scr->MakeTitle);
|
FreeList(&Scr->MakeTitle);
|
||||||
FreeList(&Scr->AutoRaise);
|
FreeList(&Scr->AutoRaise);
|
||||||
FreeList(&Scr->IconNames);
|
FreeList(&Scr->IconNames);
|
||||||
FreeList(&Scr->NoHighlight);
|
|
||||||
FreeList(&Scr->NoStackModeL);
|
FreeList(&Scr->NoStackModeL);
|
||||||
FreeList(&Scr->NoTitleHighlight);
|
|
||||||
FreeList(&Scr->StartIconified);
|
FreeList(&Scr->StartIconified);
|
||||||
FreeList(&Scr->SqueezeTitleL);
|
|
||||||
FreeList(&Scr->DontSqueezeTitleL);
|
|
||||||
FreeList(&Scr->WindowRingL);
|
FreeList(&Scr->WindowRingL);
|
||||||
FreeList(&Scr->WarpCursorL);
|
FreeList(&Scr->WarpCursorL);
|
||||||
|
|
||||||
@ -732,15 +722,12 @@ InitVariables(void)
|
|||||||
Scr->SaveUnder = TRUE;
|
Scr->SaveUnder = TRUE;
|
||||||
Scr->RandomPlacement = FALSE;
|
Scr->RandomPlacement = FALSE;
|
||||||
Scr->OpaqueMove = FALSE;
|
Scr->OpaqueMove = FALSE;
|
||||||
Scr->Highlight = TRUE;
|
|
||||||
Scr->StackMode = TRUE;
|
Scr->StackMode = TRUE;
|
||||||
Scr->TitleHighlight = TRUE;
|
|
||||||
Scr->MoveDelta = 1; /* so that f.deltastop will work */
|
Scr->MoveDelta = 1; /* so that f.deltastop will work */
|
||||||
Scr->ZoomCount = 8;
|
Scr->ZoomCount = 8;
|
||||||
Scr->Shadow = TRUE;
|
Scr->Shadow = TRUE;
|
||||||
Scr->InterpolateMenuColors = FALSE;
|
Scr->InterpolateMenuColors = FALSE;
|
||||||
Scr->ClientBorderWidth = FALSE;
|
Scr->ClientBorderWidth = FALSE;
|
||||||
Scr->SqueezeTitle = -1;
|
|
||||||
Scr->FirstRegion = NULL;
|
Scr->FirstRegion = NULL;
|
||||||
Scr->LastRegion = NULL;
|
Scr->LastRegion = NULL;
|
||||||
Scr->FirstTime = TRUE;
|
Scr->FirstTime = TRUE;
|
||||||
|
10
src/twm.h
10
src/twm.h
@ -169,12 +169,6 @@ typedef struct _TBWindow {
|
|||||||
TitleButton *info; /* description of this window */
|
TitleButton *info; /* description of this window */
|
||||||
} TBWindow;
|
} TBWindow;
|
||||||
|
|
||||||
typedef struct _SqueezeInfo {
|
|
||||||
int justify; /* left, center, right */
|
|
||||||
int num; /* signed pixel count or numerator */
|
|
||||||
int denom; /* 0 for pix count or denominator */
|
|
||||||
} SqueezeInfo;
|
|
||||||
|
|
||||||
#define J_LEFT 1
|
#define J_LEFT 1
|
||||||
#define J_CENTER 2
|
#define J_CENTER 2
|
||||||
#define J_RIGHT 3
|
#define J_RIGHT 3
|
||||||
@ -270,11 +264,9 @@ typedef struct TwmWindow
|
|||||||
short forced; /* has had an icon forced upon it */
|
short forced; /* has had an icon forced upon it */
|
||||||
short icon_not_ours; /* icon pixmap or window supplied to us */
|
short icon_not_ours; /* icon pixmap or window supplied to us */
|
||||||
short icon_moved; /* user explicitly moved the icon */
|
short icon_moved; /* user explicitly moved the icon */
|
||||||
short highlight; /* should highlight this window */
|
|
||||||
short stackmode; /* honor stackmode requests */
|
short stackmode; /* honor stackmode requests */
|
||||||
short transient; /* this is a transient window */
|
short transient; /* this is a transient window */
|
||||||
Window transientfor; /* window contained in XA_XM_TRANSIENT_FOR */
|
Window transientfor; /* window contained in XA_XM_TRANSIENT_FOR */
|
||||||
short titlehighlight; /* should I highlight the title bar */
|
|
||||||
int save_frame_x; /* x position of frame */
|
int save_frame_x; /* x position of frame */
|
||||||
int save_frame_y; /* y position of frame */
|
int save_frame_y; /* y position of frame */
|
||||||
int save_frame_width; /* width of frame */
|
int save_frame_width; /* width of frame */
|
||||||
@ -284,7 +276,7 @@ typedef struct TwmWindow
|
|||||||
unsigned long protocols; /* which protocols this window handles */
|
unsigned long protocols; /* which protocols this window handles */
|
||||||
Colormaps cmaps; /* colormaps for this application */
|
Colormaps cmaps; /* colormaps for this application */
|
||||||
TBWindow *titlebuttons;
|
TBWindow *titlebuttons;
|
||||||
SqueezeInfo *squeeze_info; /* should the title be squeezed? */
|
Bool squeeze; /* should the title be squeezed? */
|
||||||
struct {
|
struct {
|
||||||
struct TwmWindow *next, *prev;
|
struct TwmWindow *next, *prev;
|
||||||
Bool cursor_valid;
|
Bool cursor_valid;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user