Sun Jun 2 20:23:07 2002 Michael Jennings (mej)

Latest Escreen patch along with twin support from Azundris.


SVN revision: 6297
This commit is contained in:
Michael Jennings 2002-06-03 00:24:22 +00:00
parent 6df3396a5d
commit 981b29c895
33 changed files with 1844 additions and 1453 deletions

View File

@ -4679,3 +4679,7 @@ Thu May 23 14:12:28 2002 Michael Jennings (mej)
More cleanups and warning removals.
----------------------------------------------------------------------
Sun Jun 2 20:23:07 2002 Michael Jennings (mej)
Latest Escreen patch along with twin support from Azundris.
----------------------------------------------------------------------

View File

@ -618,9 +618,14 @@ rather than a shell. Forces Eterm mode.
.BI \-U " URL" ", \-\-url " URL
Pick up a "screen" session at
.I URL
rather than a local one. URLs look like so (screen://user@host.dom/options),
with all parts optional, defaulting to current user at localhost,
respectively. Forces Escreen mode, overrides \-\-exec.
rather than a local (-U "") one. URLs look like so
(screen://user@host.dom:port/screen_options), with all parts optional,
defaulting to "screen://current_user@localhost:22/-xRR". Forces Escreen mode,
overrides \-\-exec. Note that only screen-options (see "man screen") are
allowed; do not pass a command (with or without arguments) here: to pass
a command to the screen-session, use
.I screen [<options>] <command> [<args>]
instead.
.TP
.BI \-Z " lclport:fw:fwport,delay" ", \-\-fw " lclport:fw:fwport,delay
The URL given to \-U is in an intranet behind firewall

View File

@ -1,9 +1,16 @@
#!/bin/sh
TYPENAMES=""
for i in button_t buttonbar_t menu_t menuitem_t ; do
TYPENAMES="$TYPENAMES -T $i"
done
for i in *.c src/*.c utils/*.c ; do
if test -f $i; then
echo Reformatting $i
indent -bap -br -ce -ci4 -cli2 -cs -di1 -i4 -l140 -lp -lps -nbc -npcs -nss -nsob -psl $i
indent -bad -bap -bbo -br -brs -cdw -ce -ci4 -cli2 -cs -di1 -i4 -l180 \
-lp -lps -nbc -nbfda -npcs -nprs -nsob -nss -nut -psl -saf -sai -saw $TYPENAMES $i
fi
done

View File

@ -42,6 +42,9 @@ static const char cvs_ident[] = "$Id$";
#include "scrollbar.h"
#include "term.h"
#include "windows.h"
#ifdef ESCREEN
# include "screamcfg.h"
#endif
action_t *action_list = NULL;
@ -60,9 +63,12 @@ action_handle_echo(event_t *ev, action_t *action)
USE_VAR(ev);
REQUIRE_RVAL(action->param.string != NULL, 0);
#ifdef ESCREEN
if (TermWin.screen_mode && TermWin.screen) /* translate escapes */
if (TermWin.screen && TermWin.screen->backend) {
# ifdef NS_HAVE_SCREEN
/* translate escapes */
ns_parse_screen_interactive(TermWin.screen, action->param.string);
else
# endif
} else
#endif
tt_write((unsigned char *) action->param.string, strlen(action->param.string));
return 1;
@ -140,8 +146,7 @@ action_check_modifiers(unsigned short mod, int x_mod)
/* When we do have to check the modifiers, we do so in this order to eliminate the
most popular choices first. If any test fails, we return FALSE. */
D_ACTIONS(("Checking modifier set 0x%08x (" MOD_FMT ") vs. X modifier set 0x%08x (" MOD_FMT ")\n",
mod, SHOW_MODS(mod), x_mod, SHOW_X_MODS(x_mod)));
D_ACTIONS(("Checking modifier set 0x%08x (" MOD_FMT ") vs. X modifier set 0x%08x (" MOD_FMT ")\n", mod, SHOW_MODS(mod), x_mod, SHOW_X_MODS(x_mod)));
if (mod != MOD_ANY) {
/* LOGICAL_XOR() returns true if either the first parameter or the second parameter
is true, but not both...just like XOR. If the mask we're looking for is set in
@ -197,8 +202,7 @@ action_dispatch(event_t *ev, KeySym keysym)
ASSERT_RVAL(ev != NULL, 0);
ASSERT_RVAL(ev->xany.type == ButtonPress || ev->xany.type == KeyPress, 0);
D_ACTIONS(("Event %8p: Button %d, Keysym 0x%08x, Key State 0x%08x (modifiers " MOD_FMT ")\n",
ev, ev->xbutton.button, keysym, ev->xkey.state, SHOW_X_MODS(ev->xkey.state)));
D_ACTIONS(("Event %8p: Button %d, Keysym 0x%08x, Key State 0x%08x (modifiers " MOD_FMT ")\n", ev, ev->xbutton.button, keysym, ev->xkey.state, SHOW_X_MODS(ev->xkey.state)));
for (action = action_list; action; action = action->next) {
/* The very first thing we do is match the event type to the type
of the current action. This means that we'll only run through

View File

@ -50,6 +50,10 @@ static const char cvs_ident[] = "$Id$";
static inline void draw_string(buttonbar_t *, Drawable, GC, int, int, char *, size_t);
buttonbar_t *buttonbar = NULL;
#ifdef ESCREEN
button_t *drag = NULL;
#endif
long bbar_total_h = -1;
static inline void
@ -70,8 +74,7 @@ draw_string(buttonbar_t *bbar, Drawable d, GC gc, int x, int y, char *str, size_
return;
}
buttonbar_t *
bbar_create(void)
buttonbar_t *bbar_create(void)
{
buttonbar_t *bbar;
Cursor cursor;
@ -188,8 +191,7 @@ bbar_handle_enter_notify(event_t *ev)
return 0;
}
bbar_draw(bbar, IMAGE_STATE_SELECTED, 0);
XQueryPointer(Xdisplay, bbar->win, &unused_root, &unused_child, &unused_root_x, &unused_root_y, &(ev->xbutton.x), &(ev->xbutton.y),
&unused_mask);
XQueryPointer(Xdisplay, bbar->win, &unused_root, &unused_child, &unused_root_x, &unused_root_y, &(ev->xbutton.x), &(ev->xbutton.y), &unused_mask);
b = find_button_by_coords(bbar, ev->xbutton.x, ev->xbutton.y);
if (b) {
bbar_select_button(bbar, b);
@ -231,6 +233,9 @@ bbar_handle_button_press(event_t *ev)
if (bbar->current) {
bbar_click_button(bbar, bbar->current);
button_check_action(bbar, bbar->current, ev->xbutton.button, ev->xbutton.time);
#ifdef ESCREEN
drag = bbar->current;
#endif
}
return 1;
}
@ -244,6 +249,10 @@ bbar_handle_button_release(event_t *ev)
int unused_root_x, unused_root_y;
unsigned int unused_mask;
#ifdef ESCREEN
drag = NULL;
#endif
D_EVENTS(("bbar_handle_button_release(ev [%8p] on window 0x%08x)\n", ev, ev->xany.window));
REQUIRE_RVAL(XEVENT_IS_MYWIN(ev, &buttonbar->event_data), 0);
@ -252,8 +261,7 @@ bbar_handle_button_release(event_t *ev)
return 0;
}
XQueryPointer(Xdisplay, bbar->win, &unused_root, &unused_child, &unused_root_x, &unused_root_y, &(ev->xbutton.x), &(ev->xbutton.y),
&unused_mask);
XQueryPointer(Xdisplay, bbar->win, &unused_root, &unused_child, &unused_root_x, &unused_root_y, &(ev->xbutton.x), &(ev->xbutton.y), &unused_mask);
b = find_button_by_coords(bbar, ev->xbutton.x, ev->xbutton.y);
if (b) {
@ -285,8 +293,7 @@ bbar_handle_motion_notify(event_t *ev)
return 0;
}
while (XCheckTypedWindowEvent(Xdisplay, ev->xany.window, MotionNotify, ev));
XQueryPointer(Xdisplay, bbar->win, &unused_root, &unused_child, &unused_root_x, &unused_root_y, &(ev->xbutton.x), &(ev->xbutton.y),
&mask);
XQueryPointer(Xdisplay, bbar->win, &unused_root, &unused_child, &unused_root_x, &unused_root_y, &(ev->xbutton.x), &(ev->xbutton.y), &mask);
D_BBAR((" -> Pointer is at %d, %d with mask 0x%08x\n", ev->xbutton.x, ev->xbutton.y, mask));
b = find_button_by_coords(bbar, ev->xbutton.x, ev->xbutton.y);
@ -315,8 +322,7 @@ bbar_dispatch_event(event_t *ev)
return (0);
}
buttonbar_t *
find_bbar_by_window(Window win)
buttonbar_t *find_bbar_by_window(Window win)
{
buttonbar_t *bbar;
@ -500,8 +506,7 @@ button_calc_size(buttonbar_t *bbar, button_t *button)
D_BBAR((" -> Final icon dimensions are %hux%hu\n", button->icon_w, button->icon_h));
}
#endif
D_BBAR((" -> Set button to %dx%d at %d, %d and icon to %dx%d\n", button->w, button->h, button->x, button->y, button->icon_w,
button->icon_h));
D_BBAR((" -> Set button to %dx%d at %d, %d and icon to %dx%d\n", button->w, button->h, button->x, button->y, button->icon_w, button->icon_h));
}
void
@ -577,8 +582,7 @@ bbar_set_font(buttonbar_t *bbar, const char *fontname)
ASSERT_RVAL(fontname != NULL, 0);
D_BBAR(("bbar_set_font(%8p, \"%s\"): Current font is %8p, dimensions %d/%d/%d\n", bbar, fontname, bbar->font, bbar->fwidth,
bbar->fheight, bbar->h));
D_BBAR(("bbar_set_font(%8p, \"%s\"): Current font is %8p, dimensions %d/%d/%d\n", bbar, fontname, bbar->font, bbar->fwidth, bbar->fheight, bbar->h));
if (bbar->font) {
free_font(bbar->font);
}
@ -603,8 +607,7 @@ bbar_set_font(buttonbar_t *bbar, const char *fontname)
return 1;
}
button_t *
find_button_by_text(buttonbar_t *bbar, char *text)
button_t *find_button_by_text(buttonbar_t *bbar, char *text)
{
register button_t *b;
@ -623,8 +626,7 @@ find_button_by_text(buttonbar_t *bbar, char *text)
return NULL;
}
button_t *
find_button_by_index(buttonbar_t *bbar, long idx)
button_t *find_button_by_index(buttonbar_t *bbar, long idx)
{
register button_t *b;
long i;
@ -639,8 +641,7 @@ find_button_by_index(buttonbar_t *bbar, long idx)
return ((i == idx) ? (b) : (NULL));
}
button_t *
find_button_by_coords(buttonbar_t *bbar, int x, int y)
button_t *find_button_by_coords(buttonbar_t *bbar, int x, int y)
{
register button_t *b;
@ -659,8 +660,7 @@ find_button_by_coords(buttonbar_t *bbar, int x, int y)
return NULL;
}
button_t *
button_create(char *text)
button_t *button_create(char *text)
{
button_t *button;
@ -791,8 +791,7 @@ bbar_click_button(buttonbar_t *bbar, button_t *button)
if (image_mode_is(image_button, MODE_MASK)) {
paste_simage(images[image_button].clicked, image_button, bbar->win, bbar->win, button->x, button->y, button->w, button->h);
} else {
draw_shadow_from_colors(bbar->win, PixColors[menuBottomShadowColor], PixColors[menuTopShadowColor], button->x, button->y, button->w,
button->h, 2);
draw_shadow_from_colors(bbar->win, PixColors[menuBottomShadowColor], PixColors[menuTopShadowColor], button->x, button->y, button->w, button->h, 2);
}
if (image_mode_is(image_button, MODE_AUTO)) {
enl_ipc_sync();
@ -826,38 +825,48 @@ button_check_action(buttonbar_t *bbar, button_t *button, unsigned char press, Ti
case ACTION_ECHO:
if (!press) {
#ifdef ESCREEN
if (TermWin.screen_mode && TermWin.screen) { /* translate escapes */
if (prvs != 1) {
if (TermWin.screen && TermWin.screen->backend) { /* translate escapes */
button_t *b = bbar->buttons;
_ns_disp *d2 = TermWin.screen->dsps;
int n = (button->action.string)[1] - '0';
while (b && !(b->flags & NS_SCREAM_CURR)) /* find active disp */
b = b->next; /* when trying to change name of non- */
if (b && b != button) { /* active display, make that disp active */
if (prvs != 1) {
/* find active disp */
for (; b && !(b->flags & NS_SCREAM_CURR); b = b->next);
if (b && b != button) {
/* when trying to change name of non- */
/* active display, make that disp active */
button->flags |= NS_SCREAM_CURR;
b->flags &= ~NS_SCREAM_CURR;
bbar_draw(bbar, IMAGE_STATE_CURRENT, MODE_MASK);
button->flags &= ~NS_SCREAM_CURR;
b->flags |= NS_SCREAM_CURR;
while (d2 && d2->index != n)
d2 = d2->next;
if (d2)
TermWin.screen->curr = d2; /* pre-adjust curr ptr */
else
for (; d2 && d2->index != n; d2 = d2->next);
if (d2) {
/* pre-adjust curr ptr */
TermWin.screen->curr = d2;
} else {
D_ESCREEN(("no display %d in this session : (\n", n));
(void) ns_screen_command(TermWin.screen, button->action.string);
}
ns_go2_disp(TermWin.screen, n);
}
if (prvs == 2) /* middle button -- kill */
(void) ns_parse_screen_key(TermWin.screen, NS_SCREEN_KILL);
else /* right button -- rename */
(void) ns_parse_screen_key(TermWin.screen, NS_SCREEN_RENAME);
} else /* left button -- select */
(void) ns_screen_command(TermWin.screen, button->action.string);
} else /* not in screen-mode, use normal facilities */
if (prvs == 2) {
/* middle button -- kill */
(void) ns_rem_disp(TermWin.screen, n);
} else {
/* right button -- rename */
(void) ns_ren_disp(TermWin.screen, n, NULL);
}
} else {
/* left button -- select */
ns_go2_disp(TermWin.screen, n);
}
} else
#endif
/* not in screen-mode, use normal facilities */
tt_write((unsigned char *) button->action.string, strlen(button->action.string));
}
break;
@ -1138,6 +1147,7 @@ buttonbar_t *bbar_insert_button(buttonbar_t *bbar, button_t *button, int after,
} else {
int c = 0;
button_t *b = bbar->rbuttons;
do {
c++;
} while ((b = b->next));
@ -1159,6 +1169,7 @@ buttonbar_t *bbar_insert_button(buttonbar_t *bbar, button_t *button, int after,
bbar->buttons = button;
} else {
button_t *b = bbar->buttons;
while (after-- > 0 && b->next)
b = b->next;
button->next = b->next;
@ -1173,6 +1184,7 @@ buttonbar_t *bbar_insert_button(buttonbar_t *bbar, button_t *button, int after,
if (!state) {
if (buttonbar) {
buttonbar_t *bar = buttonbar;
while (bar->next)
bar = bar->next;
bar->next = bbar;

View File

@ -96,6 +96,9 @@ typedef struct buttonbar_struct {
/************ Variables ************/
extern buttonbar_t *buttonbar;
extern long bbar_total_h;
#ifdef ESCREEN
extern button_t *drag;
#endif
/************ Function Prototypes ************/
_XFUNCPROTOBEGIN

View File

@ -150,6 +150,7 @@ unsigned int num_fds = 0; /* number of file descriptors being used */
struct stat ttyfd_stat; /* original status of the tty we will use */
int refresh_count = 0, refresh_limit = 1, refresh_type = FAST_REFRESH;
unsigned char cmdbuf_base[CMD_BUF_SIZE], *cmdbuf_ptr, *cmdbuf_endp;
/* Addresses pasting large amounts of data
* code pinched from xterm
*/
@ -157,10 +158,12 @@ static char *v_buffer; /* pointer to physical buffer */
static char *v_bufstr = NULL; /* beginning of area to write */
static char *v_bufptr; /* end of area to write */
static char *v_bufend; /* end of physical buffer */
#ifdef USE_XIM
XIM xim_input_method = NULL;
XIC xim_input_context = NULL; /* input context */
static XIMStyle xim_input_style = 0;
# ifndef XSetIMValues
extern char *XSetIMValues(XIM im, ...);
# endif
@ -1760,6 +1763,7 @@ create_fontset(const char *font1, const char *font2)
#ifdef USE_XIM
static int xim_real_init(void);
# ifdef USE_X11R6_XIM
static void xim_destroy_cb(XIM xim, XPointer client_data, XPointer call_data);
static void xim_instantiate_cb(Display * display, XPointer client_data, XPointer call_data);
@ -1843,8 +1847,7 @@ xim_get_area(XRectangle * preedit_rect, XRectangle * status_rect, XRectangle * n
preedit_rect->x = needed_rect->width + (scrollbar_is_visible() && !(Options & Opt_scrollbar_right) ? (scrollbar_trough_width()) : 0);
preedit_rect->y = Height2Pixel(TermWin.nrow - 1);
preedit_rect->width =
Width2Pixel(TermWin.ncol + 1) - needed_rect->width + (!(Options & Opt_scrollbar_right) ? (scrollbar_trough_width()) : 0);
preedit_rect->width = Width2Pixel(TermWin.ncol + 1) - needed_rect->width + (!(Options & Opt_scrollbar_right) ? (scrollbar_trough_width()) : 0);
preedit_rect->height = Height2Pixel(1);
status_rect->x = (scrollbar_is_visible() && !(Options & Opt_scrollbar_right)) ? (scrollbar_trough_width()) : 0;
@ -1995,9 +1998,7 @@ xim_real_init(void)
xim_set_size(&rect);
xim_get_position(&spot);
xim_set_color(&fg, &bg);
preedit_attr =
XVaCreateNestedList(0, XNArea, &rect, XNSpotLocation, &spot, XNForeground, fg, XNBackground, bg, XNFontSet, TermWin.fontset,
NULL);
preedit_attr = XVaCreateNestedList(0, XNArea, &rect, XNSpotLocation, &spot, XNForeground, fg, XNBackground, bg, XNFontSet, TermWin.fontset, NULL);
} else if (xim_input_style & XIMPreeditArea) {
xim_set_color(&fg, &bg);
/* The necessary width of preedit area is unknown until create input context. */
@ -2270,12 +2271,14 @@ run_command(char **argv)
return (ptyfd);
}
#ifdef ESCREEN
/***************************************************************************/
/* Escreen: callbacks */
/***********************/
#ifdef ESCREEN
int
static int
set_scroll_x(void *xd, int x)
{
USE_VAR(xd);
@ -2283,7 +2286,7 @@ set_scroll_x(void *xd, int x)
return NS_FAIL;
}
int
static int
set_scroll_y(void *xd, int y)
{
USE_VAR(xd);
@ -2291,7 +2294,7 @@ set_scroll_y(void *xd, int y)
return NS_FAIL;
}
int
static int
set_scroll_w(void *xd, int w)
{
USE_VAR(xd);
@ -2299,7 +2302,7 @@ set_scroll_w(void *xd, int w)
return NS_FAIL;
}
int
static int
set_scroll_h(void *xd, int h)
{
USE_VAR(xd);
@ -2307,7 +2310,7 @@ set_scroll_h(void *xd, int h)
return NS_FAIL;
}
int
static int
redraw(void *xd)
{
USE_VAR(xd);
@ -2315,7 +2318,7 @@ redraw(void *xd)
return NS_FAIL;
}
int
static int
redraw_xywh(void *xd, int x, int y, int w, int h)
{
USE_VAR(xd);
@ -2323,8 +2326,7 @@ redraw_xywh(void *xd, int x, int y, int w, int h)
return NS_FAIL;
}
static button_t *
screen_button_create(char *text, char code)
static button_t *screen_button_create(char *text, char code)
{
button_t *b;
char p[3];
@ -2344,9 +2346,12 @@ screen_button_create(char *text, char code)
/* add a new screen display to button bar.
if our user's configured a bbar, we'll add to that,
otherwise, we'll create one. */
int
ins_disp(void *xd, int after, char *name)
otherwise, we'll create one.
xd address of the pointer to the buttonbar in question
after insert after which display?
name the display's name */
static int
ins_disp(void *xd, int after, int as, char *name)
{
buttonbar_t *bbar;
button_t *button;
@ -2357,12 +2362,10 @@ ins_disp(void *xd, int after, char *name)
bbar = *((buttonbar_t **) xd);
if (!(button = screen_button_create(name, '0' + after + 1))) {
if (!(button = screen_button_create(name, '0' + as))) {
return NS_FAIL;
}
D_ESCREEN(("%s after %d...\n", name, after));
if ((bbar = bbar_insert_button(bbar, button, after, FALSE))) {
*((buttonbar_t **) xd) = bbar;
return NS_SUCC;
@ -2373,6 +2376,7 @@ ins_disp(void *xd, int after, char *name)
}
#if 0
/* add supa-dupa right buttons for screen-features.
if our user's configured a bbar, we'll add to that,
otherwise, we'll create one. */
@ -2388,9 +2392,9 @@ add_screen_ctl_button(buttonbar_t **xd, char *name, char key)
bbar = *xd;
if (!(button = screen_button_create(name, key))) {
if (!(button = screen_button_create(name, key)))
return NS_FAIL;
}
if ((bbar = bbar_insert_button(bbar, button, -1, TRUE))) {
*xd = bbar;
return NS_SUCC;
@ -2402,8 +2406,9 @@ add_screen_ctl_button(buttonbar_t **xd, char *name, char key)
#endif
/* delete n'th button
xd address of the pointer to the buttonbar in question
n index of the button (not screen, not data -- the button) */
int
static int
del_disp(void *xd, int n)
{
buttonbar_t *bbar = *((buttonbar_t **) xd);
@ -2413,16 +2418,6 @@ del_disp(void *xd, int n)
REQUIRE_RVAL(bbar, NS_FAIL);
REQUIRE_RVAL(bbar->buttons, NS_FAIL);
#if DEBUG >= DEBUG_ESCREEN
if (DEBUG_LEVEL >= DEBUG_ESCREEN) {
int c;
for (c = 0, b2 = bbar->buttons; b2; c++, b2 = b2->next) {
D_ESCREEN(("%02d: \"%s\"\n", c, b2->text));
}
}
#endif
b2 = button = bbar->buttons;
if (n == 0) {
bbar->buttons = bbar->buttons->next;
@ -2443,8 +2438,6 @@ del_disp(void *xd, int n)
}
}
D_ESCREEN(("deleting button %d (%s)...\n", bi, button->text));
button->next = NULL;
button_free(button);
@ -2454,12 +2447,12 @@ del_disp(void *xd, int n)
}
/* update the button-representation of a screen-display.
xd
xd address of the pointer to the buttonbar in question
n the button's index (in the list of buttons)
flags the new flags for the display (or -1 to ignore)
name the new name for the display (or NULL)
<- error code */
int
static int
upd_disp(void *xd, int n, int flags, char *name)
{
buttonbar_t *bbar = *((buttonbar_t **) xd);
@ -2484,20 +2477,49 @@ upd_disp(void *xd, int n, int flags, char *name)
return NS_SUCC;
}
/* expire all buttons
xd address of the pointer to the buttonbar in question
n how many buttons do we want to throw out (normally all of them)?
<- error code */
static int
expire_buttons(void *xd, int n)
{
buttonbar_t *bbar = *((buttonbar_t **) xd);
button_t *b, *p;
REQUIRE_RVAL(bbar, NS_FAIL);
if (n < 1) {
return NS_FAIL;
}
if ((b = bbar->buttons)) {
for (; n; n--) {
p = b;
b = b->next;
}
p->next = NULL;
button_free(bbar->buttons);
bbar->buttons = b;
}
return NS_SUCC;
}
/* display a status line the screen program sent us */
int
static int
err_msg(void *xd, int err, char *msg)
{
char *sc[] = { "Copy mode", "Bell in" };
char *sc[] = { "Copy mode", "Bell in", "Wuff, Wuff!!" };
int n, nsc = sizeof(sc) / sizeof(char *);
USE_VAR(xd);
USE_VAR(err);
/* there are certain things that would make sense if we were displaying
a status-line; they do not, however, warrant an alert-box, so we drop
them here. */
if (msg && *msg) {
USE_VAR(xd);
USE_VAR(err);
if (strlen(msg)) {
for (n = 0; n < nsc; n++) {
if (!strncmp(msg, sc[n], strlen(sc[n]))) {
break;
@ -2511,7 +2533,7 @@ err_msg(void *xd, int err, char *msg)
}
/* send text to the application (normally "screen") in the terminal */
int
static int
inp_text(void *xd, int id, char *txt)
{
USE_VAR(xd);
@ -2522,7 +2544,7 @@ inp_text(void *xd, int id, char *txt)
}
/* open a dialog */
int
static int
input_dialog(void *xd, char *prompt, int maxlen, char **retstr, int (*inp_tab) (void *, char *, size_t, size_t))
{
switch (menu_dialog(xd, prompt, maxlen, retstr, inp_tab)) {
@ -2536,19 +2558,21 @@ input_dialog(void *xd, char *prompt, int maxlen, char **retstr, int (*inp_tab) (
}
/* run a program (normally "screen") inside the terminal */
int
static int
exe_prg(void *xd, char **argv)
{
USE_VAR(xd);
return run_command(argv);
}
/********************* Azundris' toys ***************************/
/****** Azundris' playthings :-) ******/
#define DIRECT_MASK (~(RS_Cursor|RS_Select|RS_fontMask))
#define COLOUR_MASK (RS_fgMask|RS_bgMask)
#define DIRECT_SET_SCREEN(x,y,fg,bg) (screen.text[ys+y])[x]=fg; (screen.rend[ys+y])[x]=bg&DIRECT_MASK;
#define CLEAR (1<<16)
static void
direct_write_screen(int x, int y, char *fg, rend_t bg)
{
@ -2569,10 +2593,12 @@ bosconian(int n)
{
int x, y;
int ys = TermWin.saveLines - TermWin.view_start;
for (; n != 0; n--) {
for (y = 0; y < TermWin.nrow; y++) {
text_t *t = screen.text[ys + y];
rend_t *r = screen.rend[ys + y];
for (x = 0; x < TermWin.ncol; x++) {
t[x] = random() & 0xff;
r[x] = random() & COLOUR_MASK;
@ -2588,10 +2614,12 @@ unbosconian(void)
int x, y;
int ys = TermWin.saveLines - TermWin.view_start;
rend_t bg;
do {
bg = CLEAR;
for (y = 0; (bg == CLEAR) && y < TermWin.nrow; y++) {
rend_t *r = screen.rend[ys + y];
for (x = 0; (bg == CLEAR) && x < TermWin.ncol; x++) {
if (r[x] != CLEAR) {
bg = r[x];
@ -2602,6 +2630,7 @@ unbosconian(void)
for (y = 0; y < TermWin.nrow; y++) {
text_t *t = screen.text[ys + y];
rend_t *r = screen.rend[ys + y];
for (x = 0; x < TermWin.ncol; x++) {
if (r[x] == bg) {
r[x] = CLEAR;
@ -2613,12 +2642,11 @@ unbosconian(void)
}
} while (bg != CLEAR);
}
#undef DIRECT_MASK
#undef COLOUR_MASK
#undef DIRECT_SET_SCREEN
#define MATRIX_HI CLEAR
#define MATRIX_LO ((4<<8)|CLEAR)
static void
matrix(int n)
{
@ -2634,8 +2662,10 @@ matrix(int n)
}
MEMSET(s, 0, TermWin.ncol);
#define MATRIX_HI CLEAR
#define MATRIX_LO ((4<<8)|CLEAR)
for (; n != 0; n--) {
while (n--) {
for (x = 0; x < TermWin.ncol; x++) {
if (!(random() & 3)) {
if ((y = s[x])) {
@ -2684,7 +2714,8 @@ matrix(int n)
}
break;
default: t[x] = random() & 0xff; /* hold */
default:
t[x] = random() & 0xff; /* hold */
}
}
}
@ -2692,6 +2723,7 @@ matrix(int n)
}
FREE(s);
}
#undef MATRIX_HI
#undef MATRIX_LO
@ -2701,11 +2733,9 @@ waitstate(void *xd, int ms)
{
int y = 1;
time_t dur = (time_t) (ms / 1000);
#if 0
time_t fin = dur + time(NULL);
#endif
USE_VAR(xd);
if (!(random() & 7)) {
if (!(random() & 3)) {
matrix(31);
@ -2725,8 +2755,10 @@ waitstate(void *xd, int ms)
scr_refresh(FAST_REFRESH);
sleep(dur);
return 0;
}
#undef CLEAR
/* Set everything up for escreen mode */
@ -2745,6 +2777,7 @@ escreen_init(char **argv)
ns_register_red(efuns, redraw);
ns_register_rda(efuns, redraw_xywh);
ns_register_exb(efuns, expire_buttons);
ns_register_ins(efuns, ins_disp);
ns_register_del(efuns, del_disp);
@ -2795,9 +2828,6 @@ escreen_init(char **argv)
if (menu_list) {
for (n = 0; n < menu_list->nummenus; n++) { /* blend in w/ l&f */
if (menu_list->menus[n]->font) {
#ifdef NS_DEBUG
D_ESCREEN(("%d: %p\n", n, menu_list->menus[n]->font));
#endif
m->font = menu_list->menus[n]->font;
m->fwidth = menu_list->menus[n]->fwidth;
m->fheight = menu_list->menus[n]->fheight;
@ -2810,22 +2840,16 @@ escreen_init(char **argv)
}
for (n = 0; n < (nsc - 1); n += 2) {
if (!strcmp(sc[n], "-")) { /* separator */
if (!strcmp(sc[n], "-")) {
/* separator */
if ((i = menuitem_create(NULL))) {
menu_add_item(m, i);
menuitem_set_action(i, MENUITEM_SEP, NULL);
}
} /* menu entry */
else if ((i = menuitem_create(sc[n]))) {
} else if ((i = menuitem_create(sc[n]))) {
/* menu entry */
menuitem_set_action(i, n && strcmp(sc[n + 1], NS_SCREEN_INIT)
&& strcmp(sc[n + 1], NS_SCREEN_PRVS_REG) ? MENUITEM_ECHO : MENUITEM_LITERAL, sc[n + 1]);
# ifdef NS_DEBUG
{
char buf[64];
sprintf(buf, NS_PREFIX "escreen_menu: registered %s as", sc[n]);
ns_desc_string(i->action.string, buf);
}
# endif
menu_add_item(m, i);
}
}
@ -2846,9 +2870,11 @@ escreen_init(char **argv)
button_free(button);
} else {
int j, k = menu_list ? menu_list->nummenus : 0;
menu_list = menulist_add_menu(menu_list, m);
for (j = k; j < menu_list->nummenus; j++)
for (j = k; j < menu_list->nummenus; j++) {
event_data_add_mywin(&menu_event_data, menu_list->menus[j]->win);
}
if (!k)
menu_init();
button_set_action(button, ACTION_MENU, NS_MENU_TITLE);
@ -2856,17 +2882,14 @@ escreen_init(char **argv)
}
}
/* add_screen_ctl_button(&buttonbar,"New",'c'); */
cmd_fd = TermWin.screen->fd;
} else {
return TermWin.screen->fd;
}
return -1;
}
# undef ETERM_PREFIX
# undef ESCREEN_PREFIX
return cmd_fd;
}
#endif
/* init_command() */
void
init_command(char **argv)
@ -3064,8 +3087,26 @@ cmd_getc(void)
#endif
}
#ifdef ESCREEN
if (TermWin.screen_mode)
if (TermWin.screen) {
switch (TermWin.screen->backend) {
case NS_MODE_NONE:
break;
case NS_MODE_NEGOTIATE:
# ifdef NS_HAVE_SCREEN
case NS_MODE_SCREEN:
parse_screen_status_if_necessary();
break;
# endif
# ifdef NS_HAVE_SCREAM
case NS_MODE_SCREAM:
break;
# endif
default:
D_ESCREEN(("mode %d not supported...\n", TermWin.screen->backend));
TermWin.screen->backend = NS_MODE_NONE;
TermWin.screen_mode = NS_MODE_NONE;
}
}
#endif
/* characters already read in */
@ -3321,8 +3362,7 @@ main_loop(void)
break;
}
}
D_SCREEN(("Adding %d lines (%d chars); str == %8p, cmdbuf_ptr == %8p, cmdbuf_endp == %8p\n",
nlines, cmdbuf_ptr - str, str, cmdbuf_ptr, cmdbuf_endp));
D_SCREEN(("Adding %d lines (%d chars); str == %8p, cmdbuf_ptr == %8p, cmdbuf_endp == %8p\n", nlines, cmdbuf_ptr - str, str, cmdbuf_ptr, cmdbuf_endp));
scr_add_lines(str, nlines, (cmdbuf_ptr - str));
} else {
switch (ch) {

View File

@ -238,6 +238,7 @@ if (test) PrivateModes |= (bit); else PrivateModes &= ~(bit);} while (0)
#endif
#define VT100_ANS "\033[?1;2c" /* vt100 answerback */
#define LINUX_ANS "\033[?6;5c" /* linux answerback */
#ifndef ESCZ_ANSWER
# define ESCZ_ANSWER VT100_ANS /* obsolete ANSI ESC[c */
#endif
@ -359,6 +360,7 @@ extern void init_locale(void);
#else
# define init_locale() ((void)0)
#endif
extern int escreen_init(char **);
extern int run_command(char **);
extern void init_command(char **);
extern void tt_winsize(int);

View File

@ -46,6 +46,9 @@ static const char cvs_ident[] = "$Id$";
#include "scrollbar.h"
#include "term.h"
#include "windows.h"
#ifdef ESCREEN
# include "screamcfg.h"
#endif
unsigned char paused = 0;
event_master_t event_master;
@ -70,8 +73,7 @@ event_register_dispatcher(event_dispatcher_t func, event_dispatcher_init_t init)
/* Add a secondary event dispatcher */
event_master.num_dispatchers++;
event_master.dispatchers =
(event_dispatcher_t *) REALLOC(event_master.dispatchers, sizeof(event_dispatcher_t) * event_master.num_dispatchers);
event_master.dispatchers = (event_dispatcher_t *) REALLOC(event_master.dispatchers, sizeof(event_dispatcher_t) * event_master.num_dispatchers);
event_master.dispatchers[event_master.num_dispatchers - 1] = (event_dispatcher_t) func;
(init) (); /* Initialize the dispatcher's data */
}
@ -226,8 +228,7 @@ handle_property_notify(event_t *ev)
if ((ev->xany.window == TermWin.parent) || (ev->xany.window == Xroot)) {
D_EVENTS(("On %s. prop (_WIN_WORKSPACE) == 0x%08x, ev->xproperty.atom == 0x%08x\n",
((ev->xany.window == Xroot) ? "the root window" : "TermWin.parent"),
(int) props[PROP_DESKTOP], (int) ev->xproperty.atom));
((ev->xany.window == Xroot) ? "the root window" : "TermWin.parent"), (int) props[PROP_DESKTOP], (int) ev->xproperty.atom));
if (ev->xproperty.atom == props[PROP_DESKTOP]) {
win = get_desktop_window();
if (win == (Window) 1) {
@ -267,8 +268,7 @@ handle_property_notify(event_t *ev)
}
#endif
if ((ev->xany.window == Xroot) && (image_mode_any(MODE_AUTO))) {
D_EVENTS(("On the root window. prop (ENLIGHTENMENT_COMMS) == %d, ev->xproperty.atom == %d\n", (int) props[PROP_ENL_COMMS],
(int) ev->xproperty.atom));
D_EVENTS(("On the root window. prop (ENLIGHTENMENT_COMMS) == %d, ev->xproperty.atom == %d\n", (int) props[PROP_ENL_COMMS], (int) ev->xproperty.atom));
if ((props[PROP_ENL_COMMS] != None) && (ev->xproperty.atom == props[PROP_ENL_COMMS])) {
if ((enl_ipc_get_win()) != None) {
#ifdef PIXMAP_SUPPORT
@ -333,8 +333,7 @@ handle_client_message(event_t *ev)
unsigned char *data;
unsigned long Size, RemainingBytes;
XGetWindowProperty(Xdisplay, Xroot, props[PROP_DND_SELECTION], 0L, 1000000L, False, AnyPropertyType, &ActualType, &ActualFormat,
&Size, &RemainingBytes, &data);
XGetWindowProperty(Xdisplay, Xroot, props[PROP_DND_SELECTION], 0L, 1000000L, False, AnyPropertyType, &ActualType, &ActualFormat, &Size, &RemainingBytes, &data);
if (data != NULL) {
XChangeProperty(Xdisplay, Xroot, XA_CUT_BUFFER0, XA_STRING, 8, PropModeReplace, data, strlen(data));
selection_paste(Xroot, XA_CUT_BUFFER0, True);
@ -453,8 +452,7 @@ handle_focus_in(event_t *ev)
unsigned int unused_mask;
TermWin.focus = 1;
XQueryPointer(Xdisplay, TermWin.parent, &unused_root, &child, &unused_root_x, &unused_root_y, &(ev->xbutton.x), &(ev->xbutton.y),
&unused_mask);
XQueryPointer(Xdisplay, TermWin.parent, &unused_root, &child, &unused_root_x, &unused_root_y, &(ev->xbutton.x), &(ev->xbutton.y), &unused_mask);
if (child == TermWin.vt) {
if (images[image_bg].current != images[image_bg].selected) {
images[image_bg].current = images[image_bg].selected;
@ -517,8 +515,7 @@ handle_configure_notify(event_t *ev)
REQUIRE_RVAL(XEVENT_IS_MYWIN(ev, &primary_data), 0);
while (XCheckTypedWindowEvent(Xdisplay, ev->xany.window, ConfigureNotify, ev)) {
D_EVENTS(("New event: Window 0x%08x, %dx%d at %d, %d\n", ev->xany.window, ev->xconfigure.width,
ev->xconfigure.height, ev->xconfigure.x, ev->xconfigure.y));
D_EVENTS(("New event: Window 0x%08x, %dx%d at %d, %d\n", ev->xany.window, ev->xconfigure.width, ev->xconfigure.height, ev->xconfigure.x, ev->xconfigure.y));
}
if (ev->xany.window == TermWin.parent) {
int x = ev->xconfigure.x, y = ev->xconfigure.y;
@ -740,6 +737,62 @@ handle_button_release(event_t *ev)
D_EVENTS(("handle_button_release(ev [%8p] on window 0x%08x)\n", ev, ev->xany.window));
#ifdef ESCREEN
if (!XEVENT_IS_MYWIN(ev, &primary_data) && drag && TermWin.screen && TermWin.screen->backend && TermWin.screen->userdef) {
buttonbar_t *bbar = *((buttonbar_t **) (TermWin.screen->userdef));
button_t *b;
int fm = 0, to = 0;
if (!bbar || !(b = bbar->buttons)) {
return 0;
}
while (b && (b != drag)) {
b = b->next;
fm++;
}
if (!b) {
/* dragged button is not on the bar with our displays on */
return 0;
}
if (bbar->current) {
b = bbar->buttons;
while (b && (b != bbar->current)) {
b = b->next;
to++;
}
if (!b) {
/* dragged-to button is not on the bar with our displays */
return 0;
}
}
if (!bbar->current) {
/* tab torn off */
char *u = ns_get_url(TermWin.screen, fm);
if (u) {
char *c;
size_t l = strlen(orig_argv0) + strlen(u) + 7;
if ((c = MALLOC(l))) {
snprintf(c, l, "%s%s -U %s", ((orig_argv0[0] == '/') || ((orig_argv0[0] == '.') && (orig_argv0[1] == '/'))) ? "" : "./", orig_argv0, u);
D_ESCREEN(("(experimental) creating other frame using \"%s\"\n", c));
(void) ns_run(TermWin.screen->efuns, c);
FREE(c);
}
FREE(u);
}
return 1;
} else if (buttonbar->current != drag) {
/* tab "moved" */
ns_mov_disp(TermWin.screen, fm, to);
return 1;
}
}
#endif
if (button_state.ignore_release == 1) {
button_state.ignore_release = 0;
return 0;
@ -802,8 +855,11 @@ handle_motion_notify(event_t *ev)
COUNT_EVENT(motion_cnt);
REQUIRE_RVAL(XEVENT_IS_MYWIN(ev, &primary_data), 0);
if ((PrivateModes & PrivMode_mouse_report) && !(button_state.bypass_keystate))
if ((PrivateModes & PrivMode_mouse_report) && !(button_state.bypass_keystate)) {
mouse_drag_report(&(ev->xbutton));
return 1;
}
if (ev->xany.window == TermWin.vt) {
if (ev->xbutton.state & (Button1Mask | Button3Mask)) {
@ -812,8 +868,7 @@ handle_motion_notify(event_t *ev)
unsigned int unused_mask;
while (XCheckTypedWindowEvent(Xdisplay, TermWin.vt, MotionNotify, ev));
XQueryPointer(Xdisplay, TermWin.vt, &unused_root, &unused_child, &unused_root_x, &unused_root_y, &(ev->xbutton.x),
&(ev->xbutton.y), &unused_mask);
XQueryPointer(Xdisplay, TermWin.vt, &unused_root, &unused_child, &unused_root_x, &unused_root_y, &(ev->xbutton.x), &(ev->xbutton.y), &unused_mask);
#ifdef MOUSE_THRESHOLD
/* deal with a `jumpy' mouse */
if ((ev->xmotion.time - button_state.button_press) > MOUSE_THRESHOLD)

View File

@ -44,6 +44,7 @@ char **etfonts = NULL;
unsigned char font_idx = DEF_FONT_IDX, font_cnt = 0;
int def_font_idx = DEF_FONT_IDX;
char *rs_font[NFONTS];
#ifdef MULTI_CHARSET
char *rs_mfont[NFONTS];
char **etmfonts = NULL;
@ -229,8 +230,7 @@ font_cache_del(const void *info)
update the "next" pointer of the font prior to the one we're actually deleting. */
for (current = font_cache; current->next; current = current->next) {
if (((current->next->type == FONT_TYPE_X) && (current->next->fontinfo.xfontinfo == (XFontStruct *) info))) {
D_FONT((" -> Match found at current->next (%8p, current == %8p). Font name is \"%s\"\n", current->next, current,
NONULL(current->next->name)));
D_FONT((" -> Match found at current->next (%8p, current == %8p). Font name is \"%s\"\n", current->next, current, NONULL(current->next->name)));
if (--(current->next->ref_cnt) == 0) {
D_FONT((" -> Reference count is now 0. Deleting from cache.\n"));
tmp = current->next;
@ -455,8 +455,7 @@ change_font(int init, const char *fontname)
short idx = 0, old_idx = font_idx;
int fh, fw = 0;
D_FONT(("change_font(%d, \"%s\"): def_font_idx == %u, font_idx == %u\n", init, NONULL(fontname), (unsigned int) def_font_idx,
(unsigned int) font_idx));
D_FONT(("change_font(%d, \"%s\"): def_font_idx == %u, font_idx == %u\n", init, NONULL(fontname), (unsigned int) def_font_idx, (unsigned int) font_idx));
if (init) {
font_idx = def_font_idx;
@ -585,8 +584,7 @@ change_font(int init, const char *fontname)
TermWin.fprop = 1; /* Proportional font */
/* For proportional fonts with large size variations, do some math-fu to try and help the appearance */
if (TermWin.fprop && (Options & Opt_proportional) && TermWin.font->per_char
&& (TermWin.font->max_bounds.width - TermWin.font->min_bounds.width >= 3)) {
if (TermWin.fprop && (Options & Opt_proportional) && TermWin.font->per_char && (TermWin.font->max_bounds.width - TermWin.font->min_bounds.width >= 3)) {
int cw, n = 0, sum = 0, sumsq = 0, min_w, max_w;
unsigned int i;
double dev;
@ -651,8 +649,7 @@ change_font(int init, const char *fontname)
TermWin.width = TermWin.ncol * TermWin.fwidth;
TermWin.height = TermWin.nrow * TermWin.fheight;
D_FONT((" -> New font width/height = %ldx%ld, making the terminal size %ldx%ld\n", TermWin.fwidth, TermWin.fheight, TermWin.width,
TermWin.height));
D_FONT((" -> New font width/height = %ldx%ld, making the terminal size %ldx%ld\n", TermWin.fwidth, TermWin.fheight, TermWin.width, TermWin.height));
/* If we're initializing, *we* do the size hints. If not, resize the parent window. */
if (init) {

View File

@ -109,8 +109,7 @@ static char elot_xlat_plain[] =
"65-122:193,194,216,196,197,214,195,199,201,206,202,203,204,205,207,208,81,209,211,212,200,217,87,215,213,198,91,92,93,94,95,96,225,226,248,228,229,246,227,231,233,238,234,235,236,237,239,240,113,241,243,244,232,249,242,247,245,230";
/* c and s give copyright and section sign */
static char elot_xlat_acc[] =
"65-122:182,194,216,196,184,214,195,185,186,206,202,203,204,205,188,208,81,209,211,212,200,191,87,215,190,198,91,92,93,94,95,96,220,226,"
static char elot_xlat_acc[] = "65-122:182,194,216,196,184,214,195,185,186,206,202,203,204,205,188,208,81,209,211,212,200,191,87,215,190,198,91,92,93,94,95,96,220,226,"
/*248 */ "169,228,221,246,227,222,223,238,234,235,236,237,252,240,113,241," /*243 */ "167,244,232,254,242,247,253,230";
static char elot_xlat_acc_xtra[] = "46-62:183,47,48,49,50,51,52,53,54,55,56,57,58,59,171,61,187"; /* anw teleia, quotes */
static char elot_xlat_uml[] =

File diff suppressed because it is too large Load Diff

View File

@ -47,18 +47,16 @@ static const char cvs_ident[] = "$Id$";
# include "screamcfg.h"
#endif
menulist_t *menu_list = NULL;
#ifndef ESCREEN
static
#endif
event_dispatcher_data_t menu_event_data;
static GC topShadowGC, botShadowGC;
static Time button_press_time;
static int button_press_x = 0, button_press_y = 0;
#ifndef ESCREEN
static
#endif
menu_t *current_menu;
menulist_t *menu_list = NULL;
event_dispatcher_data_t menu_event_data;
static inline void grab_pointer(Window win);
static inline void ungrab_pointer(void);
@ -74,8 +72,7 @@ grab_pointer(Window win)
D_EVENTS(("Grabbing control of pointer for window 0x%08x.\n", win));
success = XGrabPointer(Xdisplay, win, False,
EnterWindowMask | LeaveWindowMask | PointerMotionMask | ButtonMotionMask | ButtonPressMask | ButtonReleaseMask
| Button1MotionMask | Button2MotionMask | Button3MotionMask,
GrabModeAsync, GrabModeAsync, None, None, CurrentTime);
| Button1MotionMask | Button2MotionMask | Button3MotionMask, GrabModeAsync, GrabModeAsync, None, None, CurrentTime);
if (success != GrabSuccess) {
switch (success) {
case GrabNotViewable:
@ -262,12 +259,10 @@ menu_handle_button_press(event_t *ev)
ungrab_pointer();
menu_reset_all(menu_list);
current_menu = NULL;
XTranslateCoordinates(Xdisplay, ev->xany.window, Xroot, ev->xbutton.x, ev->xbutton.y, &(ev->xbutton.x), &(ev->xbutton.y),
&unused_win);
XTranslateCoordinates(Xdisplay, ev->xany.window, Xroot, ev->xbutton.x, ev->xbutton.y, &(ev->xbutton.x), &(ev->xbutton.y), &unused_win);
child_win = find_window_by_coords(Xroot, 0, 0, ev->xbutton.x, ev->xbutton.y);
if (child_win != None) {
XTranslateCoordinates(Xdisplay, Xroot, child_win, ev->xbutton.x, ev->xbutton.y, &(ev->xbutton.x), &(ev->xbutton.y),
&unused_win);
XTranslateCoordinates(Xdisplay, Xroot, child_win, ev->xbutton.x, ev->xbutton.y, &(ev->xbutton.x), &(ev->xbutton.y), &unused_win);
ev->xany.window = child_win;
D_EVENTS(("Sending synthetic event on to window 0x%08x at %d, %d\n", child_win, ev->xbutton.x, ev->xbutton.y));
XSendEvent(Xdisplay, child_win, False, 0, ev);
@ -297,8 +292,7 @@ menu_handle_button_release(event_t *ev)
if (current_menu && (current_menu->state & MENU_STATE_IS_DRAGGING)) {
/* Dragging-and-release mode */
D_MENU(("Drag-and-release mode, detected release. Button press time is %lu, release time is %lu\n", button_press_time,
ev->xbutton.time));
D_MENU(("Drag-and-release mode, detected release. Button press time is %lu, release time is %lu\n", button_press_time, ev->xbutton.time));
ungrab_pointer();
if (button_press_time && (ev->xbutton.time - button_press_time > MENU_CLICK_TIME)) {
@ -321,8 +315,7 @@ menu_handle_button_release(event_t *ev)
} else {
/* Single-click mode */
D_MENU(("Single click mode, detected click. Button press time is %lu, release time is %lu\n", button_press_time,
ev->xbutton.time));
D_MENU(("Single click mode, detected click. Button press time is %lu, release time is %lu\n", button_press_time, ev->xbutton.time));
if (current_menu && (ev->xbutton.x >= 0) && (ev->xbutton.y >= 0) && (ev->xbutton.x < current_menu->w)
&& (ev->xbutton.y < current_menu->h)) {
/* Click inside the menu window. Activate the current item. */
@ -463,22 +456,18 @@ menu_t *menu_create(char *title)
xattr.colormap = cmap;
cursor = XCreateFontCursor(Xdisplay, XC_left_ptr);
mask =
PointerMotionMask | ButtonMotionMask | ButtonPressMask | ButtonReleaseMask | Button1MotionMask | Button2MotionMask |
Button3MotionMask;
mask = PointerMotionMask | ButtonMotionMask | ButtonPressMask | ButtonReleaseMask | Button1MotionMask | Button2MotionMask | Button3MotionMask;
}
menu = (menu_t *) MALLOC(sizeof(menu_t));
MEMSET(menu, 0, sizeof(menu_t));
menu->title = STRDUP(title ? title : "");
menu->win = XCreateWindow(Xdisplay, Xroot, 0, 0, 1, 1, 0, Xdepth, InputOutput, CopyFromParent,
CWOverrideRedirect | CWSaveUnder | CWBorderPixel | CWColormap, &xattr);
menu->win = XCreateWindow(Xdisplay, Xroot, 0, 0, 1, 1, 0, Xdepth, InputOutput, CopyFromParent, CWOverrideRedirect | CWSaveUnder | CWBorderPixel | CWColormap, &xattr);
XDefineCursor(Xdisplay, menu->win, cursor);
XSelectInput(Xdisplay, menu->win, mask);
XStoreName(Xdisplay, menu->win, menu->title);
menu->swin = XCreateWindow(Xdisplay, menu->win, 0, 0, 1, 1, 0, Xdepth, InputOutput, CopyFromParent,
CWOverrideRedirect | CWSaveUnder | CWBorderPixel | CWColormap, &xattr);
menu->swin = XCreateWindow(Xdisplay, menu->win, 0, 0, 1, 1, 0, Xdepth, InputOutput, CopyFromParent, CWOverrideRedirect | CWSaveUnder | CWBorderPixel | CWColormap, &xattr);
menu->gc = LIBAST_X_CREATE_GC(0, NULL);
menuitem_clear_current(menu);
@ -674,16 +663,14 @@ menuitem_change_current(menuitem_t *item)
current = menuitem_get_current(current_menu);
if (current != item) {
D_MENU(("Changing current item in menu \"%s\" from \"%s\" to \"%s\"\n", current_menu->title, (current ? current->text : "(NULL)"),
(item ? item->text : "(NULL)")));
D_MENU(("Changing current item in menu \"%s\" from \"%s\" to \"%s\"\n", current_menu->title, (current ? current->text : "(NULL)"), (item ? item->text : "(NULL)")));
if (current) {
/* Reset the current item */
menuitem_deselect(current_menu);
/* If we're changing from one submenu to another and neither is a child of the other, or if we're changing from a submenu to
no current item at all, reset the tree for the current submenu */
if (current->type == MENUITEM_SUBMENU && current->action.submenu != NULL) {
if ((item && item->type == MENUITEM_SUBMENU && item->action.submenu != NULL
&& !menu_is_child(current->action.submenu, item->action.submenu)
if ((item && item->type == MENUITEM_SUBMENU && item->action.submenu != NULL && !menu_is_child(current->action.submenu, item->action.submenu)
&& !menu_is_child(item->action.submenu, current->action.submenu))
|| (!item)) {
menu_reset_tree(current->action.submenu);
@ -896,8 +883,7 @@ menuitem_select(menu_t *menu)
item = menuitem_get_current(menu);
REQUIRE(item != NULL);
D_MENU(("Selecting new current item \"%s\" within menu \"%s\" (window 0x%08x, selection window 0x%08x)\n", item->text, menu->title,
menu->win, menu->swin));
D_MENU(("Selecting new current item \"%s\" within menu \"%s\" (window 0x%08x, selection window 0x%08x)\n", item->text, menu->title, menu->win, menu->swin));
item->state |= MENU_STATE_IS_CURRENT;
XMoveWindow(Xdisplay, menu->swin, item->x, item->y);
XMapWindow(Xdisplay, menu->swin);
@ -907,8 +893,7 @@ menuitem_select(menu_t *menu)
enl_ipc_sync();
} else if (!image_mode_is(image_submenu, MODE_MASK)) {
draw_shadow_from_colors(menu->swin, top, bottom, 0, 0, item->w - MENU_VGAP, item->h, 2);
draw_arrow_from_colors(menu->swin, top, bottom, item->w - 3 * MENU_HGAP, (item->h - MENU_VGAP) / 2, MENU_VGAP, 2,
DRAW_ARROW_RIGHT);
draw_arrow_from_colors(menu->swin, top, bottom, item->w - 3 * MENU_HGAP, (item->h - MENU_VGAP) / 2, MENU_VGAP, 2, DRAW_ARROW_RIGHT);
}
} else {
if (image_mode_is(image_menu, MODE_MASK)) {
@ -923,8 +908,7 @@ menuitem_select(menu_t *menu)
XSetForeground(Xdisplay, menu->gc, images[image_menu].selected->fg);
draw_string(menu->swin, menu->gc, MENU_HGAP, item->h - MENU_VGAP, item->text, item->len);
if (item->rtext) {
draw_string(menu->swin, menu->gc, item->w - XTextWidth(menu->font, item->rtext, item->rlen) - 2 * MENU_HGAP, item->h - MENU_VGAP,
item->rtext, item->rlen);
draw_string(menu->swin, menu->gc, item->w - XTextWidth(menu->font, item->rtext, item->rlen) - 2 * MENU_HGAP, item->h - MENU_VGAP, item->rtext, item->rlen);
}
XSetForeground(Xdisplay, menu->gc, images[image_menu].norm->fg);
}
@ -953,8 +937,7 @@ menu_display_submenu(menu_t *menu, menuitem_t *item)
REQUIRE(item->action.submenu != NULL);
submenu = item->action.submenu;
D_MENU(("Displaying submenu \"%s\" (window 0x%08x) of menu \"%s\" (window 0x%08x)\n", submenu->title, submenu->win, menu->title,
menu->win));
D_MENU(("Displaying submenu \"%s\" (window 0x%08x) of menu \"%s\" (window 0x%08x)\n", submenu->title, submenu->win, menu->title, menu->win));
menu_invoke(item->x + item->w, item->y, menu->win, submenu, CurrentTime);
/* Invoking the submenu makes it current. Undo that behavior. */
@ -985,6 +968,7 @@ menu_draw(menu_t *menu)
{
register unsigned short i, len;
unsigned long width, height;
#if 0
char *safeaction;
#endif
@ -1113,10 +1097,8 @@ menu_draw(menu_t *menu)
str_y = menu->fheight + MENU_VGAP;
len = strlen(menu->title);
XTextExtents(menu->font, menu->title, len, &direction, &ascent, &descent, &chars);
draw_string(menu->bg, menu->gc, center_coords(2 * MENU_HGAP, menu->w - 2 * MENU_HGAP) - (chars.width >> 1),
str_y - chars.descent - MENU_VGAP / 2, menu->title, len);
draw_shadow(menu->bg, topShadowGC, botShadowGC, str_x, str_y - chars.descent - MENU_VGAP / 2 + 1, menu->w - (4 * MENU_HGAP), MENU_VGAP,
2);
draw_string(menu->bg, menu->gc, center_coords(2 * MENU_HGAP, menu->w - 2 * MENU_HGAP) - (chars.width >> 1), str_y - chars.descent - MENU_VGAP / 2, menu->title, len);
draw_shadow(menu->bg, topShadowGC, botShadowGC, str_x, str_y - chars.descent - MENU_VGAP / 2 + 1, menu->w - (4 * MENU_HGAP), MENU_VGAP, 2);
str_y += MENU_VGAP;
for (i = 0; i < menu->numitems; i++) {
@ -1130,11 +1112,9 @@ menu_draw(menu_t *menu)
item->y = str_y - 2 * MENU_VGAP;
item->w = menu->w - MENU_HGAP;
item->h = 2 * MENU_VGAP;
D_MENU(("Hot Area at %hu, %hu to %hu, %hu (width %hu, height %hu)\n", item->x, item->y, item->x + item->w,
item->y + item->h, item->w, item->h));
D_MENU(("Hot Area at %hu, %hu to %hu, %hu (width %hu, height %hu)\n", item->x, item->y, item->x + item->w, item->y + item->h, item->w, item->h));
}
draw_shadow(menu->bg, botShadowGC, topShadowGC, str_x, str_y - MENU_VGAP - MENU_VGAP / 2, menu->w - 4 * MENU_HGAP, MENU_VGAP,
2);
draw_shadow(menu->bg, botShadowGC, topShadowGC, str_x, str_y - MENU_VGAP - MENU_VGAP / 2, menu->w - 4 * MENU_HGAP, MENU_VGAP, 2);
} else {
str_y += menu->fheight + MENU_VGAP;
@ -1143,18 +1123,15 @@ menu_draw(menu_t *menu)
item->y = str_y - menu->fheight - MENU_VGAP / 2;
item->w = menu->w - MENU_HGAP;
item->h = menu->fheight + MENU_VGAP;
D_MENU(("Hot Area at %hu, %hu to %hu, %hu (width %hu, height %hu)\n", item->x, item->y, item->x + item->w,
item->y + item->h, item->w, item->h));
D_MENU(("Hot Area at %hu, %hu to %hu, %hu (width %hu, height %hu)\n", item->x, item->y, item->x + item->w, item->y + item->h, item->w, item->h));
}
switch (item->type) {
case MENUITEM_SUBMENU:
if (image_mode_is(image_submenu, MODE_MASK)) {
paste_simage(images[image_submenu].norm, image_submenu, menu->win, menu->bg, item->x, item->y, item->w - MENU_VGAP,
item->h);
paste_simage(images[image_submenu].norm, image_submenu, menu->win, menu->bg, item->x, item->y, item->w - MENU_VGAP, item->h);
} else {
draw_arrow_from_colors(menu->bg, PixColors[menuTopShadowColor], PixColors[menuBottomShadowColor],
item->x + item->w - 3 * MENU_HGAP, item->y + (item->h - MENU_VGAP) / 2, MENU_VGAP, 2,
DRAW_ARROW_RIGHT);
item->x + item->w - 3 * MENU_HGAP, item->y + (item->h - MENU_VGAP) / 2, MENU_VGAP, 2, DRAW_ARROW_RIGHT);
}
break;
#if 0
@ -1179,8 +1156,7 @@ menu_draw(menu_t *menu)
}
draw_string(menu->bg, menu->gc, str_x, str_y - MENU_VGAP / 2, item->text, item->len);
if (item->rtext) {
draw_string(menu->bg, menu->gc, str_x + item->w - XTextWidth(menu->font, item->rtext, item->rlen) - 3 * MENU_HGAP,
str_y - MENU_VGAP / 2, item->rtext, item->rlen);
draw_string(menu->bg, menu->gc, str_x + item->w - XTextWidth(menu->font, item->rtext, item->rlen) - 3 * MENU_HGAP, str_y - MENU_VGAP / 2, item->rtext, item->rlen);
}
}
}
@ -1226,16 +1202,34 @@ menu_action(menuitem_t *item)
break;
case MENUITEM_ECHO:
#ifdef ESCREEN
if (TermWin.screen_mode && TermWin.screen) { /* translate escapes */
if (TermWin.screen && TermWin.screen->backend) {
/* translate escapes */
switch (TermWin.screen->backend) {
# ifdef NS_HAVE_SCREEN
case NS_MODE_SCREEN:
ns_parse_screen_interactive(TermWin.screen, item->action.string);
break;
# endif
default:
tt_write((unsigned char *) item->action.string, strlen(item->action.string));
}
} else
#endif
tt_write((unsigned char *) item->action.string, strlen(item->action.string));
break;
case MENUITEM_LITERAL:
#ifdef ESCREEN
if (TermWin.screen_mode && TermWin.screen) { /* translate escapes */
if (TermWin.screen) {
/* translate escapes */
switch (TermWin.screen->backend) {
# ifdef NS_HAVE_SCREEN
case NS_MODE_SCREEN:
(void) ns_screen_command(TermWin.screen, item->action.string);
break;
# endif
default:
tt_write((unsigned char *) item->action.string, strlen(item->action.string));
}
} else
#endif
tt_write((unsigned char *) item->action.string, strlen(item->action.string));
@ -1385,17 +1379,21 @@ menu_dialog(void *xd, char *prompt, int maxlen, char **retstr, int (*inp_tab) (v
if (m->font) { /* pre-calc width so we can center the dialog */
l = strlen(prompt);
if (i->len > l)
if (i->len > l) {
l = XTextWidth(m->font, i->text, i->len);
else
} else {
l = XTextWidth(m->font, prompt, l);
} else
}
} else {
l = 200;
}
menuitem_set_action(i, MENUITEM_STRING, "error");
menu_add_item(m, i);
menu_invoke((int) ((TermWin_TotalWidth() - l) / 2), (int) (TermWin_TotalHeight() / 2) - 20, TermWin.parent, m, CurrentTime);
ungrab_pointer();
do {
do {
while (!XPending(Xdisplay));
@ -1413,18 +1411,26 @@ menu_dialog(void *xd, char *prompt, int maxlen, char **retstr, int (*inp_tab) (v
if (l < maxlen) {
b[l + 1] = '\0';
b[l] = ch;
}
} else if ((ch == '\n') || (ch == '\r'))
if (!l && (maxlen == 1)) {
/* special case: one char */
/* answer auto-returns */
f = 1;
else if (ch == '\x08') {
if (maxlen && l)
}
}
} else if ((ch == '\n') || (ch == '\r')) {
f = 1;
} else if (ch == '\x08') {
if (maxlen && l) {
b[--l] = '\0';
}
} else if ((ch == '\t') && inp_tab) {
if (!tab)
if (!tab) {
tab = l;
}
inp_tab(xd, b, tab, maxlen);
} else if (ch == '\x1b')
} else if (ch == '\x1b') {
f = 2;
}
i->len = strlen(b);
menu_draw(m);
} while (!f);
@ -1433,8 +1439,9 @@ menu_dialog(void *xd, char *prompt, int maxlen, char **retstr, int (*inp_tab) (v
i->len = strlen(old);
/* we could just return b, but it might be longer than we need */
if (retstr)
if (retstr) {
*retstr = (!maxlen || (f == 2)) ? NULL : strdup(b);
}
ret = (f == 2) ? -2 : 0;
}
m->font = NULL;

View File

@ -111,9 +111,7 @@ network_display(const char *display)
if (colon == NULL)
colon = ":0.0";
sprintf(ipaddress, "%d.%d.%d.%d%s",
(int) ((addr >> 030) & 0xFF),
(int) ((addr >> 020) & 0xFF), (int) ((addr >> 010) & 0xFF), (int) (addr & 0xFF), colon);
sprintf(ipaddress, "%d.%d.%d.%d%s", (int) ((addr >> 030) & 0xFF), (int) ((addr >> 020) & 0xFF), (int) ((addr >> 010) & 0xFF), (int) (addr & 0xFF), colon);
rval = ipaddress;
break;

View File

@ -75,12 +75,14 @@ static void *parse_xim(char *, void *);
static void *parse_multichar(char *, void *);
static char *rs_pipe_name = NULL;
#ifdef PIXMAP_SUPPORT
static int rs_shade = 0;
static char *rs_tint = NULL;
#endif
static unsigned long rs_buttonbars = 1;
static char *rs_font_effects = NULL;
#if defined (HOTKEY_CTRL) || defined (HOTKEY_META)
static char *rs_bigfont_key = NULL;
static char *rs_smallfont_key = NULL;
@ -101,11 +103,13 @@ char *rs_geometry = NULL; /* Geometry string */
int rs_desktop = -1;
char *rs_path = NULL;
int rs_saveLines = SAVELINES; /* Lines in the scrollback buffer */
#ifdef USE_XIM
char *rs_input_method = NULL;
char *rs_preedit_type = NULL;
#endif
char *rs_name = NULL;
#ifndef NO_BOLDFONT
char *rs_boldFont = NULL;
#endif
@ -119,6 +123,7 @@ unsigned long rs_scrollbar_width = 0;
char *rs_finished_title = NULL;
char *rs_finished_text = NULL;
char *rs_term_name = NULL;
#ifdef PIXMAP_SUPPORT
char *rs_pixmapScale = NULL;
char *rs_icon = NULL;
@ -127,6 +132,7 @@ char *rs_cmod_red = NULL;
char *rs_cmod_green = NULL;
char *rs_cmod_blue = NULL;
unsigned long rs_cache_size = (unsigned long) -1;
# ifdef BACKGROUND_CYCLING_SUPPORT
char *rs_anim_pixmap_list = NULL;
char **rs_anim_pixmaps = NULL;
@ -136,6 +142,7 @@ static char *rs_pixmaps[image_max];
#endif
char *rs_theme = NULL;
char *rs_config_file = NULL;
#ifdef ESCREEN
char *rs_url = NULL;
char *rs_hop = NULL;
@ -143,6 +150,7 @@ int rs_delay = -1;
#endif
unsigned int rs_line_space = 0;
unsigned int rs_meta_mod = 0, rs_alt_mod = 0, rs_numlock_mod = 0;
#ifdef KEYSYM_ATTRIBUTE
unsigned char *KeySym_map[256]; /* probably mostly empty */
#endif
@ -164,8 +172,7 @@ static const struct {
} optList[] = {
OPT_STR('t', "theme", "select a theme", &rs_theme),
OPT_STR('X', "config-file", "choose an alternate config file", &rs_config_file),
OPT_STR('d', "display", "X server to connect to", &display_name),
OPT_STR('X', "config-file", "choose an alternate config file", &rs_config_file), OPT_STR('d', "display", "X server to connect to", &display_name),
#ifdef ESCREEN
OPT_STR('U', "URL", "an URL pointing at a screen-session to pick up", &rs_url),
OPT_STR('Z', "[lclport:]fw[:fwport]", "the destination machine -U can only be seen by the firewall fw. tunnel.", &rs_hop),
@ -185,8 +192,7 @@ static const struct {
OPT_ILONG("debug", "level of debugging information to show (0-5)", &DEBUG_LEVEL),
#endif
OPT_BLONG("install", "install a private colormap", &Options, Opt_install),
OPT_BOOL('h', "help", "display usage information", NULL, 0),
OPT_BLONG("version", "display version and configuration information", NULL, 0),
OPT_BOOL('h', "help", "display usage information", NULL, 0), OPT_BLONG("version", "display version and configuration information", NULL, 0),
/* =======[ Color options ]======= */
OPT_BOOL('r', "reverse-video", "reverse video", &Options, Opt_reverse_video),
OPT_STR('b', "background-color", "background color", &rs_color[bgColor]),
@ -196,8 +202,7 @@ static const struct {
OPT_LONG("color2", "color 2", &rs_color[minColor + 2]),
OPT_LONG("color3", "color 3", &rs_color[minColor + 3]),
OPT_LONG("color4", "color 4", &rs_color[minColor + 4]),
OPT_LONG("color5", "color 5", &rs_color[minColor + 5]),
OPT_LONG("color6", "color 6", &rs_color[minColor + 6]), OPT_LONG("color7", "color 7", &rs_color[minColor + 7]),
OPT_LONG("color5", "color 5", &rs_color[minColor + 5]), OPT_LONG("color6", "color 6", &rs_color[minColor + 6]), OPT_LONG("color7", "color 7", &rs_color[minColor + 7]),
#ifndef NO_BRIGHTCOLOR
OPT_LONG("color8", "color 8", &rs_color[minBright]),
OPT_LONG("color9", "color 9", &rs_color[minBright + 1]),
@ -212,8 +217,7 @@ static const struct {
#endif /* NO_BOLDUNDERLINE */
OPT_LONG("pointer-color", "mouse pointer color", &rs_color[pointerColor]),
#ifndef NO_CURSORCOLOR
OPT_STR('c', "cursor-color", "cursor color", &rs_color[cursorColor]),
OPT_LONG("cursor-text-color", "cursor text color", &rs_color[cursorColor2]),
OPT_STR('c', "cursor-color", "cursor color", &rs_color[cursorColor]), OPT_LONG("cursor-text-color", "cursor text color", &rs_color[cursorColor2]),
#endif /* NO_CURSORCOLOR */
/* =======[ X11 options ]======= */
OPT_STR('g', "geometry", "WxH+X+Y = size and position", &rs_geometry),
@ -265,8 +269,7 @@ static const struct {
OPT_LONG("mfont1", "multichar font 1", &rs_mfont[1]),
OPT_LONG("mfont2", "multichar font 2", &rs_mfont[2]),
OPT_LONG("mfont3", "multichar font 3", &rs_mfont[3]),
OPT_LONG("mfont4", "multichar font 4", &rs_mfont[4]),
OPT_LONG("mencoding", "multichar encoding mode (eucj/sjis/euckr/big5/gb)", &rs_multichar_encoding),
OPT_LONG("mfont4", "multichar font 4", &rs_mfont[4]), OPT_LONG("mencoding", "multichar encoding mode (eucj/sjis/euckr/big5/gb)", &rs_multichar_encoding),
#endif /* MULTI_CHARSET */
#ifdef USE_XIM
OPT_LONG("input-method", "XIM input method", &rs_input_method), OPT_LONG("preedit-type", "XIM preedit type", &rs_preedit_type),
@ -302,20 +305,16 @@ static const struct {
OPT_BLONG("resize-gravity", "toggle gravitation to nearest corner on resize", &Options, Opt_resize_gravity),
/* =======[ Keyboard options ]======= */
#if defined (HOTKEY_CTRL) || defined (HOTKEY_META)
OPT_LONG("big-font-key", "keysym for font size increase", &rs_bigfont_key),
OPT_LONG("small-font-key", "keysym for font size decrease", &rs_smallfont_key),
OPT_LONG("big-font-key", "keysym for font size increase", &rs_bigfont_key), OPT_LONG("small-font-key", "keysym for font size decrease", &rs_smallfont_key),
#endif
OPT_ILONG("meta-mod", "modifier to interpret as the Meta key", &rs_meta_mod),
OPT_ILONG("alt-mod", "modifier to interpret as the Alt key", &rs_alt_mod),
OPT_ILONG("numlock-mod", "modifier to interpret as the NumLock key", &rs_numlock_mod),
OPT_ILONG("alt-mod", "modifier to interpret as the Alt key", &rs_alt_mod), OPT_ILONG("numlock-mod", "modifier to interpret as the NumLock key", &rs_numlock_mod),
#ifdef GREEK_SUPPORT
OPT_LONG("greek-keyboard", "greek keyboard mapping (iso or ibm)", &rs_greek_keyboard),
#endif
OPT_BLONG("app-keypad", "application keypad mode", &PrivateModes, PrivMode_aplKP),
OPT_BLONG("app-cursor", "application cursor key mode", &PrivateModes, PrivMode_aplCUR),
OPT_BLONG("app-keypad", "application keypad mode", &PrivateModes, PrivMode_aplKP), OPT_BLONG("app-cursor", "application cursor key mode", &PrivateModes, PrivMode_aplCUR),
/* =======[ Misc options ]======= */
OPT_INT('L', "save-lines", "lines to save in scrollback buffer", &rs_saveLines),
OPT_ILONG("min-anchor-size", "minimum size of the scrollbar anchor", &rs_min_anchor_size),
OPT_INT('L', "save-lines", "lines to save in scrollback buffer", &rs_saveLines), OPT_ILONG("min-anchor-size", "minimum size of the scrollbar anchor", &rs_min_anchor_size),
#ifdef BORDER_WIDTH_OPTION
OPT_INT('w', "border-width", "term window border width", &(TermWin.internalBorder)),
#endif
@ -330,8 +329,7 @@ static const struct {
OPT_LONG("term-name", "value to use for setting $TERM", &rs_term_name),
OPT_LONG("pipe-name", "filename of console pipe to emulate -C", &rs_pipe_name),
OPT_STR('a', "attribute", "parse an attribute in the specified context", NULL),
OPT_BOOL('C', "console", "grab console messages", &Options, Opt_console),
OPT_ARGS('e', "exec", "execute a command rather than a shell", &rs_exec_args)
OPT_BOOL('C', "console", "grab console messages", &Options, Opt_console), OPT_ARGS('e', "exec", "execute a command rather than a shell", &rs_exec_args)
};
/* Print usage information */
@ -402,8 +400,7 @@ version(void)
" " PIXMAP_IDENT "\n"
" " SCREEN_IDENT "\n"
" " SCROLLBAR_IDENT "\n"
" " STARTUP_IDENT "\n"
" " SYSTEM_IDENT "\n" " " TERM_IDENT "\n" " " TIMER_IDENT "\n" " " UTMP_IDENT "\n" " " WINDOWS_IDENT "\n" "\n");
" " STARTUP_IDENT "\n" " " SYSTEM_IDENT "\n" " " TERM_IDENT "\n" " " TIMER_IDENT "\n" " " UTMP_IDENT "\n" " " WINDOWS_IDENT "\n" "\n");
printf("Debugging configuration: ");
#ifdef DEBUG
@ -1191,8 +1188,7 @@ parse_color(char *buff, void *state)
if (!BEG_STRCASECMP(tmp, "reverse")) {
Options |= Opt_reverse_video;
} else if (BEG_STRCASECMP(tmp, "normal")) {
print_error("Parse error in file %s, line %lu: Invalid value \"%s\" for attribute video\n",
file_peek_path(), file_peek_line(), tmp);
print_error("Parse error in file %s, line %lu: Invalid value \"%s\" for attribute video\n", file_peek_path(), file_peek_line(), tmp);
}
} else if (!BEG_STRCASECMP(buff, "color ")) {
@ -1201,8 +1197,7 @@ parse_color(char *buff, void *state)
n = num_words(buff);
if (n < 3) {
print_error("Parse error in file %s, line %lu: Invalid parameter list \"%s\" for \n"
"attribute color", file_peek_path(), file_peek_line(), NONULL(tmp));
print_error("Parse error in file %s, line %lu: Invalid parameter list \"%s\" for \n" "attribute color", file_peek_path(), file_peek_line(), NONULL(tmp));
return NULL;
}
tmp = get_pword(2, buff);
@ -1234,15 +1229,13 @@ parse_color(char *buff, void *state)
return NULL;
} else {
tmp = get_word(1, tmp);
print_error("Parse error in file %s, line %lu: Invalid color index \"%s\"\n",
file_peek_path(), file_peek_line(), NONULL(tmp));
print_error("Parse error in file %s, line %lu: Invalid color index \"%s\"\n", file_peek_path(), file_peek_line(), NONULL(tmp));
FREE(tmp);
}
}
}
if (n != 5) {
print_error("Parse error in file %s, line %lu: Invalid parameter list \"%s\" for \n"
"attribute color", file_peek_path(), file_peek_line(), NONULL(tmp));
print_error("Parse error in file %s, line %lu: Invalid parameter list \"%s\" for \n" "attribute color", file_peek_path(), file_peek_line(), NONULL(tmp));
return NULL;
}
g1 = get_pword(4, buff);
@ -1292,8 +1285,7 @@ parse_color(char *buff, void *state)
FREE(tmp);
}
} else {
print_error("Parse error in file %s, line %lu: Attribute \"%s\" is not valid within context color\n",
file_peek_path(), file_peek_line(), buff);
print_error("Parse error in file %s, line %lu: Attribute \"%s\" is not valid within context color\n", file_peek_path(), file_peek_line(), buff);
}
return state;
}
@ -1332,8 +1324,7 @@ parse_attributes(char *buff, void *state)
if (!BEG_STRCASECMP(tmp, "fx ") || !BEG_STRCASECMP(tmp, "effect")) {
if (parse_font_fx(get_pword(2, tmp)) != 1) {
print_error("Parse error in file %s, line %lu: Syntax error in font effects specification\n",
file_peek_path(), file_peek_line());
print_error("Parse error in file %s, line %lu: Syntax error in font effects specification\n", file_peek_path(), file_peek_line());
}
} else if (!BEG_STRCASECMP(tmp, "prop")) {
tmp = get_pword(2, tmp);
@ -1342,8 +1333,7 @@ parse_attributes(char *buff, void *state)
} else if (BOOL_OPT_ISFALSE(tmp)) {
Options &= ~(Opt_proportional);
} else {
print_error("Parse error in file %s, line %lu: Invalid/missing boolean value for attribute proportional\n",
file_peek_path(), file_peek_line());
print_error("Parse error in file %s, line %lu: Invalid/missing boolean value for attribute proportional\n", file_peek_path(), file_peek_line());
}
} else if (isdigit(*tmp)) {
n = (unsigned char) strtoul(tmp, (char **) NULL, 0);
@ -1369,8 +1359,7 @@ parse_attributes(char *buff, void *state)
}
} else {
print_error("Parse error in file %s, line %lu: Attribute \"%s\" is not valid within context attributes\n",
file_peek_path(), file_peek_line(), (buff ? buff : ""));
print_error("Parse error in file %s, line %lu: Attribute \"%s\" is not valid within context attributes\n", file_peek_path(), file_peek_line(), (buff ? buff : ""));
}
return state;
}
@ -1393,8 +1382,7 @@ parse_toggles(char *buff, void *state)
} else if (BOOL_OPT_ISFALSE(tmp)) {
bool_val = 0;
} else {
print_error("Parse error in file %s, line %lu: Invalid boolean value \"%s\" in context toggles\n",
file_peek_path(), file_peek_line(), tmp);
print_error("Parse error in file %s, line %lu: Invalid boolean value \"%s\" in context toggles\n", file_peek_path(), file_peek_line(), tmp);
return NULL;
}
@ -1584,8 +1572,7 @@ parse_toggles(char *buff, void *state)
Options &= ~(Opt_resize_gravity);
}
} else {
print_error("Parse error in file %s, line %lu: Attribute \"%s\" is not valid within context toggles\n", file_peek_path(),
file_peek_line(), buff);
print_error("Parse error in file %s, line %lu: Attribute \"%s\" is not valid within context toggles\n", file_peek_path(), file_peek_line(), buff);
}
return state;
}
@ -1624,8 +1611,7 @@ parse_keyboard(char *buff, void *state)
if (sym >= 0xff00)
sym -= 0xff00;
if (sym < 0 || sym > 0xff) {
print_error("Parse error in file %s, line %lu: Keysym 0x%x out of range 0xff00-0xffff\n",
file_peek_path(), file_peek_line(), sym + 0xff00);
print_error("Parse error in file %s, line %lu: Keysym 0x%x out of range 0xff00-0xffff\n", file_peek_path(), file_peek_line(), sym + 0xff00);
return NULL;
}
s = get_word(3, buff);
@ -1653,8 +1639,7 @@ parse_keyboard(char *buff, void *state)
char *tmp = get_pword(2, buff);
if (!tmp) {
print_error("Parse error in file %s, line %lu: Missing modifier value for attribute meta_mod\n",
file_peek_path(), file_peek_line());
print_error("Parse error in file %s, line %lu: Missing modifier value for attribute meta_mod\n", file_peek_path(), file_peek_line());
return NULL;
}
rs_meta_mod = (unsigned int) strtoul(tmp, (char **) NULL, 0);
@ -1663,8 +1648,7 @@ parse_keyboard(char *buff, void *state)
char *tmp = get_pword(2, buff);
if (!tmp) {
print_error("Parse error in file %s, line %lu: Missing modifier value for attribute alt_mod\n",
file_peek_path(), file_peek_line());
print_error("Parse error in file %s, line %lu: Missing modifier value for attribute alt_mod\n", file_peek_path(), file_peek_line());
return NULL;
}
rs_alt_mod = (unsigned int) strtoul(tmp, (char **) NULL, 0);
@ -1673,8 +1657,7 @@ parse_keyboard(char *buff, void *state)
char *tmp = get_pword(2, buff);
if (!tmp) {
print_error("Parse error in file %s, line %lu: Missing modifier value for attribute numlock_mod\n",
file_peek_path(), file_peek_line());
print_error("Parse error in file %s, line %lu: Missing modifier value for attribute numlock_mod\n", file_peek_path(), file_peek_line());
return NULL;
}
rs_numlock_mod = (unsigned int) strtoul(tmp, (char **) NULL, 0);
@ -1685,8 +1668,7 @@ parse_keyboard(char *buff, void *state)
char *tmp = get_pword(2, buff);
if (!tmp) {
print_error("Parse error in file %s, line %lu: Missing boolean value for attribute greek\n",
file_peek_path(), file_peek_line());
print_error("Parse error in file %s, line %lu: Missing boolean value for attribute greek\n", file_peek_path(), file_peek_line());
return NULL;
}
if (BOOL_OPT_ISTRUE(tmp)) {
@ -1702,8 +1684,7 @@ parse_keyboard(char *buff, void *state)
} else if (BOOL_OPT_ISFALSE(tmp)) {
/* This space intentionally left no longer blank =^) */
} else {
print_error("Parse error in file %s, line %lu: Invalid boolean value \"%s\" for attribute %s\n",
file_peek_path(), file_peek_line(), tmp, buff);
print_error("Parse error in file %s, line %lu: Invalid boolean value \"%s\" for attribute %s\n", file_peek_path(), file_peek_line(), tmp, buff);
return NULL;
}
#else
@ -1715,8 +1696,7 @@ parse_keyboard(char *buff, void *state)
char *tmp = get_pword(2, buff);
if (!tmp) {
print_error("Parse error in file %s, line %lu: Missing boolean value for attribute app_keypad\n",
file_peek_path(), file_peek_line());
print_error("Parse error in file %s, line %lu: Missing boolean value for attribute app_keypad\n", file_peek_path(), file_peek_line());
return NULL;
}
if (BOOL_OPT_ISTRUE(tmp)) {
@ -1724,8 +1704,7 @@ parse_keyboard(char *buff, void *state)
} else if (BOOL_OPT_ISFALSE(tmp)) {
PrivateModes &= ~(PrivMode_aplKP);
} else {
print_error("Parse error in file %s, line %lu: Invalid boolean value \"%s\" for attribute app_keypad\n",
file_peek_path(), file_peek_line(), tmp);
print_error("Parse error in file %s, line %lu: Invalid boolean value \"%s\" for attribute app_keypad\n", file_peek_path(), file_peek_line(), tmp);
return NULL;
}
@ -1734,8 +1713,7 @@ parse_keyboard(char *buff, void *state)
char *tmp = get_pword(2, buff);
if (!tmp) {
print_error("Parse error in file %s, line %lu: Missing boolean value for attribute app_cursor\n",
file_peek_path(), file_peek_line());
print_error("Parse error in file %s, line %lu: Missing boolean value for attribute app_cursor\n", file_peek_path(), file_peek_line());
return NULL;
}
if (BOOL_OPT_ISTRUE(tmp)) {
@ -1743,14 +1721,12 @@ parse_keyboard(char *buff, void *state)
} else if (BOOL_OPT_ISFALSE(tmp)) {
PrivateModes &= ~(PrivMode_aplCUR);
} else {
print_error("Parse error in file %s, line %lu: Invalid boolean value \"%s\" for attribute app_cursor\n",
file_peek_path(), file_peek_line(), tmp);
print_error("Parse error in file %s, line %lu: Invalid boolean value \"%s\" for attribute app_cursor\n", file_peek_path(), file_peek_line(), tmp);
return NULL;
}
} else {
print_error("Parse error in file %s, line %lu: Attribute \"%s\" is not valid within context keyboard\n",
file_peek_path(), file_peek_line(), buff);
print_error("Parse error in file %s, line %lu: Attribute \"%s\" is not valid within context keyboard\n", file_peek_path(), file_peek_line(), buff);
}
return state;
}
@ -1818,8 +1794,7 @@ parse_misc(char *buff, void *state)
#endif
} else {
print_error("Parse error in file %s, line %lu: Attribute \"%s\" is not valid within context misc\n",
file_peek_path(), file_peek_line(), buff);
print_error("Parse error in file %s, line %lu: Attribute \"%s\" is not valid within context misc\n", file_peek_path(), file_peek_line(), buff);
}
return state;
}
@ -1855,16 +1830,14 @@ parse_imageclasses(char *buff, void *state)
if (tmp) {
rs_anim_pixmap_list = STRDUP(tmp);
} else {
print_error("Parse error in file %s, line %lu: Invalid parameter list \"\" for attribute anim\n", file_peek_path(),
file_peek_line());
print_error("Parse error in file %s, line %lu: Invalid parameter list \"\" for attribute anim\n", file_peek_path(), file_peek_line());
}
#else
print_warning("Support for the anim attribute was not compiled in, ignoring\n");
#endif
} else {
print_error("Parse error in file %s, line %lu: Attribute \"%s\" is not valid within context imageclasses\n",
file_peek_path(), file_peek_line(), buff);
print_error("Parse error in file %s, line %lu: Attribute \"%s\" is not valid within context imageclasses\n", file_peek_path(), file_peek_line(), buff);
}
return state;
}
@ -1938,8 +1911,7 @@ parse_image(char *buff, void *state)
char *allow_list = get_pword(4, buff);
if (!CHECK_VALID_INDEX(idx)) {
print_error("Parse error in file %s, line %lu: Encountered \"mode\" with no image type defined\n", file_peek_path(),
file_peek_line());
print_error("Parse error in file %s, line %lu: Encountered \"mode\" with no image type defined\n", file_peek_path(), file_peek_line());
return NULL;
}
if (!mode) {
@ -1985,8 +1957,7 @@ parse_image(char *buff, void *state)
return NULL;
}
if (!CHECK_VALID_INDEX(idx)) {
print_error("Parse error in file %s, line %lu: Encountered \"state\" with no image type defined\n", file_peek_path(),
file_peek_line());
print_error("Parse error in file %s, line %lu: Encountered \"state\" with no image type defined\n", file_peek_path(), file_peek_line());
return NULL;
}
if (!strcasecmp(state, "normal")) {
@ -2028,18 +1999,15 @@ parse_image(char *buff, void *state)
char *fg = get_word(2, buff), *bg = get_word(3, buff);
if (!CHECK_VALID_INDEX(idx)) {
print_error("Parse error in file %s, line %lu: Encountered \"color\" with no image type defined\n", file_peek_path(),
file_peek_line());
print_error("Parse error in file %s, line %lu: Encountered \"color\" with no image type defined\n", file_peek_path(), file_peek_line());
return NULL;
}
if (images[idx].current == NULL) {
print_error("Parse error in file %s, line %lu: Encountered \"color\" with no image state defined\n", file_peek_path(),
file_peek_line());
print_error("Parse error in file %s, line %lu: Encountered \"color\" with no image state defined\n", file_peek_path(), file_peek_line());
return NULL;
}
if (!fg || !bg) {
print_error("Parse error in file %s, line %lu: Foreground and background colors must be specified with \"color\"\n",
file_peek_path(), file_peek_line());
print_error("Parse error in file %s, line %lu: Foreground and background colors must be specified with \"color\"\n", file_peek_path(), file_peek_line());
return NULL;
}
if (!BEG_STRCASECMP(fg, "0x")) {
@ -2060,13 +2028,11 @@ parse_image(char *buff, void *state)
char *filename = get_pword(2, buff);
if (!CHECK_VALID_INDEX(idx)) {
print_error("Parse error in file %s, line %lu: Encountered \"file\" with no image type defined\n", file_peek_path(),
file_peek_line());
print_error("Parse error in file %s, line %lu: Encountered \"file\" with no image type defined\n", file_peek_path(), file_peek_line());
return NULL;
}
if (images[idx].current == NULL) {
print_error("Parse error in file %s, line %lu: Encountered \"file\" with no image state defined\n", file_peek_path(),
file_peek_line());
print_error("Parse error in file %s, line %lu: Encountered \"file\" with no image state defined\n", file_peek_path(), file_peek_line());
return NULL;
}
if (!filename) {
@ -2082,13 +2048,11 @@ parse_image(char *buff, void *state)
char *geom = get_pword(2, buff);
if (!CHECK_VALID_INDEX(idx)) {
print_error("Parse error in file %s, line %lu: Encountered \"geom\" with no image type defined\n", file_peek_path(),
file_peek_line());
print_error("Parse error in file %s, line %lu: Encountered \"geom\" with no image type defined\n", file_peek_path(), file_peek_line());
return NULL;
}
if (images[idx].current == NULL) {
print_error("Parse error in file %s, line %lu: Encountered \"geom\" with no image state defined\n", file_peek_path(),
file_peek_line());
print_error("Parse error in file %s, line %lu: Encountered \"geom\" with no image state defined\n", file_peek_path(), file_peek_line());
return NULL;
}
if (!geom) {
@ -2104,13 +2068,11 @@ parse_image(char *buff, void *state)
imlib_t *iml = images[idx].current->iml;
if (!CHECK_VALID_INDEX(idx)) {
print_error("Parse error in file %s, line %lu: Encountered color modifier with no image type defined\n", file_peek_path(),
file_peek_line());
print_error("Parse error in file %s, line %lu: Encountered color modifier with no image type defined\n", file_peek_path(), file_peek_line());
return NULL;
}
if (images[idx].current == NULL) {
print_error("Parse error in file %s, line %lu: Encountered color modifier with no image state defined\n", file_peek_path(),
file_peek_line());
print_error("Parse error in file %s, line %lu: Encountered color modifier with no image state defined\n", file_peek_path(), file_peek_line());
return NULL;
}
if (!color) {
@ -2176,21 +2138,18 @@ parse_image(char *buff, void *state)
}
update_cmod(iml->bmod);
} else {
print_error("Parse error in file %s, line %lu: Color must be either \"image\", \"red\", \"green\", or \"blue\"\n",
file_peek_path(), file_peek_line());
print_error("Parse error in file %s, line %lu: Color must be either \"image\", \"red\", \"green\", or \"blue\"\n", file_peek_path(), file_peek_line());
return NULL;
}
#endif
} else if (!BEG_STRCASECMP(buff, "border ")) {
if (!CHECK_VALID_INDEX(idx)) {
print_error("Parse error in file %s, line %lu: Encountered \"border\" with no image type defined\n", file_peek_path(),
file_peek_line());
print_error("Parse error in file %s, line %lu: Encountered \"border\" with no image type defined\n", file_peek_path(), file_peek_line());
return NULL;
}
if (num_words(buff + 7) < 4) {
print_error("Parse error in file %s, line %lu: Invalid parameter list for attribute \"border\"\n", file_peek_path(),
file_peek_line());
print_error("Parse error in file %s, line %lu: Invalid parameter list for attribute \"border\"\n", file_peek_path(), file_peek_line());
return NULL;
}
RESET_AND_ASSIGN(images[idx].current->iml->border, (Imlib_Border *) MALLOC(sizeof(Imlib_Border)));
@ -2207,18 +2166,15 @@ parse_image(char *buff, void *state)
}
} else if (!BEG_STRCASECMP(buff, "bevel ")) {
if (!CHECK_VALID_INDEX(idx)) {
print_error("Parse error in file %s, line %lu: Encountered \"bevel\" with no image type defined\n", file_peek_path(),
file_peek_line());
print_error("Parse error in file %s, line %lu: Encountered \"bevel\" with no image type defined\n", file_peek_path(), file_peek_line());
return NULL;
}
if (images[idx].current == NULL) {
print_error("Parse error in file %s, line %lu: Encountered \"bevel\" with no image state defined\n", file_peek_path(),
file_peek_line());
print_error("Parse error in file %s, line %lu: Encountered \"bevel\" with no image state defined\n", file_peek_path(), file_peek_line());
return NULL;
}
if (num_words(buff + 6) < 5) {
print_error("Parse error in file %s, line %lu: Invalid parameter list for attribute \"bevel\"\n", file_peek_path(),
file_peek_line());
print_error("Parse error in file %s, line %lu: Invalid parameter list for attribute \"bevel\"\n", file_peek_path(), file_peek_line());
return NULL;
}
if (images[idx].current->iml->bevel != NULL) {
@ -2247,18 +2203,15 @@ parse_image(char *buff, void *state)
}
} else if (!BEG_STRCASECMP(buff, "padding ")) {
if (!CHECK_VALID_INDEX(idx)) {
print_error("Parse error in file %s, line %lu: Encountered \"padding\" with no image type defined\n", file_peek_path(),
file_peek_line());
print_error("Parse error in file %s, line %lu: Encountered \"padding\" with no image type defined\n", file_peek_path(), file_peek_line());
return NULL;
}
if (images[idx].current == NULL) {
print_error("Parse error in file %s, line %lu: Encountered \"padding\" with no image state defined\n", file_peek_path(),
file_peek_line());
print_error("Parse error in file %s, line %lu: Encountered \"padding\" with no image state defined\n", file_peek_path(), file_peek_line());
return NULL;
}
if (num_words(buff + 8) < 4) {
print_error("Parse error in file %s, line %lu: Invalid parameter list for attribute \"padding\"\n", file_peek_path(),
file_peek_line());
print_error("Parse error in file %s, line %lu: Invalid parameter list for attribute \"padding\"\n", file_peek_path(), file_peek_line());
return NULL;
}
RESET_AND_ASSIGN(images[idx].current->iml->pad, (Imlib_Border *) MALLOC(sizeof(Imlib_Border)));
@ -2274,8 +2227,7 @@ parse_image(char *buff, void *state)
images[idx].current->iml->pad = (Imlib_Border *) NULL;
}
} else {
print_error("Parse error in file %s, line %lu: Attribute \"%s\" is not valid within context image\n",
file_peek_path(), file_peek_line(), buff);
print_error("Parse error in file %s, line %lu: Attribute \"%s\" is not valid within context image\n", file_peek_path(), file_peek_line(), buff);
}
return ((void *) state);
}
@ -2364,8 +2316,7 @@ parse_actions(char *buff, void *state)
}
} else {
print_error("Parse error in file %s, line %lu: Attribute \"%s\" is not valid within context action\n",
file_peek_path(), file_peek_line(), buff);
print_error("Parse error in file %s, line %lu: Attribute \"%s\" is not valid within context action\n", file_peek_path(), file_peek_line(), buff);
}
return state;
}
@ -2389,8 +2340,7 @@ parse_menu(char *buff, void *state)
sprintf(tmp, "Eterm_Menu_%u", menu_list->nummenus);
menu_set_title(menu, tmp);
print_error("Parse error in file %s, line %lu: Menu context ended without giving a title. Defaulted to \"%s\".\n",
file_peek_path(), file_peek_line(), tmp);
print_error("Parse error in file %s, line %lu: Menu context ended without giving a title. Defaulted to \"%s\".\n", file_peek_path(), file_peek_line(), tmp);
}
menu_list = menulist_add_menu(menu_list, menu);
return NULL;
@ -2419,8 +2369,7 @@ parse_menu(char *buff, void *state)
menuitem_set_action(item, MENUITEM_SEP, (char *) NULL);
} else {
print_error("Parse error in file %s, line %lu: Attribute \"%s\" is not valid within context menu\n", file_peek_path(),
file_peek_line(), buff);
print_error("Parse error in file %s, line %lu: Attribute \"%s\" is not valid within context menu\n", file_peek_path(), file_peek_line(), buff);
}
return ((void *) menu);
}
@ -2441,8 +2390,7 @@ parse_menuitem(char *buff, void *state)
ASSERT_RVAL(menu != NULL, state);
if (*buff == CONF_END_CHAR) {
if (!(curitem->text)) {
print_error("Parse error in file %s, line %lu: Menuitem context ended with no text given. Discarding this entry.\n",
file_peek_path(), file_peek_line());
print_error("Parse error in file %s, line %lu: Menuitem context ended with no text given. Discarding this entry.\n", file_peek_path(), file_peek_line());
FREE(curitem);
} else {
menu_add_item(menu, curitem);
@ -2491,14 +2439,12 @@ parse_menuitem(char *buff, void *state)
menuitem_set_action(curitem, MENUITEM_SEP, action);
} else {
print_error("Parse error in file %s, line %lu: Invalid menu item action \"%s\"\n", file_peek_path(), file_peek_line(),
NONULL(type));
print_error("Parse error in file %s, line %lu: Invalid menu item action \"%s\"\n", file_peek_path(), file_peek_line(), NONULL(type));
}
FREE(action);
} else {
print_error("Parse error in file %s, line %lu: Attribute \"%s\" is not valid within context menu\n", file_peek_path(),
file_peek_line(), buff);
print_error("Parse error in file %s, line %lu: Attribute \"%s\" is not valid within context menu\n", file_peek_path(), file_peek_line(), buff);
}
return ((void *) curitem);
}
@ -2536,8 +2482,7 @@ parse_bbar(char *buff, void *state)
} else if (!BEG_STRCASECMP(where, "no")) { /* "no" or "none" */
bbar_set_docked(bbar, BBAR_UNDOCKED);
} else {
print_error("Parse error in file %s, line %lu: Invalid parameter \"%s\" to attribute dock\n", file_peek_path(),
file_peek_line(), where);
print_error("Parse error in file %s, line %lu: Invalid parameter \"%s\" to attribute dock\n", file_peek_path(), file_peek_line(), where);
}
} else if (!BEG_STRCASECMP(buff, "visible ")) {
@ -2548,8 +2493,7 @@ parse_bbar(char *buff, void *state)
} else if (BOOL_OPT_ISFALSE(tmp)) {
bbar_set_visible(bbar, 0);
} else {
print_error("Parse error in file %s, line %lu: Invalid boolean value \"%s\" in context button_bar\n", file_peek_path(),
file_peek_line(), tmp);
print_error("Parse error in file %s, line %lu: Invalid boolean value \"%s\" in context button_bar\n", file_peek_path(), file_peek_line(), tmp);
}
} else if (!BEG_STRCASECMP(buff, "button ") || !BEG_STRCASECMP(buff, "rbutton ")) {
@ -2611,8 +2555,7 @@ parse_bbar(char *buff, void *state)
bbar_add_button(bbar, button);
}
} else {
print_error("Parse error in file %s, line %lu: Attribute \"%s\" is not valid within context menu\n",
file_peek_path(), file_peek_line(), buff);
print_error("Parse error in file %s, line %lu: Attribute \"%s\" is not valid within context menu\n", file_peek_path(), file_peek_line(), buff);
}
return ((void *) bbar);
}
@ -2629,8 +2572,7 @@ parse_xim(char *buff, void *state)
} else if (!BEG_STRCASECMP(buff, "preedit_type ")) {
RESET_AND_ASSIGN(rs_preedit_type, get_word(2, buff));
} else {
print_error("Parse error in file %s, line %lu: Attribute \"%s\" is not valid within context xim\n",
file_peek_path(), file_peek_line(), buff);
print_error("Parse error in file %s, line %lu: Attribute \"%s\" is not valid within context xim\n", file_peek_path(), file_peek_line(), buff);
}
#else
print_warning("XIM support was not compiled in, ignoring entire context\n");
@ -2657,14 +2599,12 @@ parse_multichar(char *buff, void *state)
&& BEG_STRCASECMP(rs_multichar_encoding, "gb")
&& BEG_STRCASECMP(rs_multichar_encoding, "iso-10646")
&& BEG_STRCASECMP(rs_multichar_encoding, "none")) {
print_error("Parse error in file %s, line %lu: Invalid multichar encoding mode \"%s\"\n",
file_peek_path(), file_peek_line(), rs_multichar_encoding);
print_error("Parse error in file %s, line %lu: Invalid multichar encoding mode \"%s\"\n", file_peek_path(), file_peek_line(), rs_multichar_encoding);
FREE(rs_multichar_encoding);
return NULL;
}
} else {
print_error("Parse error in file %s, line %lu: Invalid parameter list \"\" for attribute encoding\n",
file_peek_path(), file_peek_line());
print_error("Parse error in file %s, line %lu: Invalid parameter list \"\" for attribute encoding\n", file_peek_path(), file_peek_line());
}
} else if (!BEG_STRCASECMP(buff, "font ")) {
@ -2672,8 +2612,7 @@ parse_multichar(char *buff, void *state)
unsigned char n;
if (num_words(buff) != 3) {
print_error("Parse error in file %s, line %lu: Invalid parameter list \"%s\" for attribute font\n",
file_peek_path(), file_peek_line(), NONULL(tmp));
print_error("Parse error in file %s, line %lu: Invalid parameter list \"%s\" for attribute font\n", file_peek_path(), file_peek_line(), NONULL(tmp));
return NULL;
}
if (isdigit(*tmp)) {
@ -2690,8 +2629,7 @@ parse_multichar(char *buff, void *state)
}
} else {
print_error("Parse error in file %s, line %lu: Attribute \"%s\" is not valid within context multichar\n",
file_peek_path(), file_peek_line(), buff);
print_error("Parse error in file %s, line %lu: Attribute \"%s\" is not valid within context multichar\n", file_peek_path(), file_peek_line(), buff);
}
#else
if (*buff == CONF_BEGIN_CHAR) {
@ -3123,8 +3061,7 @@ post_parse(void)
if (n > 2) {
iml->mod->gamma = (int) strtol(get_pword(3, rs_cmod_image), (char **) NULL, 0);
}
D_PIXMAP(("From image cmod string %s to brightness %d, contrast %d, and gamma %d\n", rs_cmod_image,
iml->mod->brightness, iml->mod->contrast, iml->mod->gamma));
D_PIXMAP(("From image cmod string %s to brightness %d, contrast %d, and gamma %d\n", rs_cmod_image, iml->mod->brightness, iml->mod->contrast, iml->mod->gamma));
FREE(rs_cmod_image);
}
if (rs_cmod_red) {
@ -3142,8 +3079,7 @@ post_parse(void)
if (n > 2) {
iml->rmod->gamma = (int) strtol(get_pword(3, rs_cmod_red), (char **) NULL, 0);
}
D_PIXMAP(("From red cmod string %s to brightness %d, contrast %d, and gamma %d\n", rs_cmod_red,
iml->rmod->brightness, iml->rmod->contrast, iml->rmod->gamma));
D_PIXMAP(("From red cmod string %s to brightness %d, contrast %d, and gamma %d\n", rs_cmod_red, iml->rmod->brightness, iml->rmod->contrast, iml->rmod->gamma));
FREE(rs_cmod_red);
update_cmod(iml->rmod);
}
@ -3162,8 +3098,7 @@ post_parse(void)
if (n > 2) {
iml->gmod->gamma = (int) strtol(get_pword(3, rs_cmod_green), (char **) NULL, 0);
}
D_PIXMAP(("From green cmod string %s to brightness %d, contrast %d, and gamma %d\n", rs_cmod_green,
iml->gmod->brightness, iml->gmod->contrast, iml->gmod->gamma));
D_PIXMAP(("From green cmod string %s to brightness %d, contrast %d, and gamma %d\n", rs_cmod_green, iml->gmod->brightness, iml->gmod->contrast, iml->gmod->gamma));
FREE(rs_cmod_green);
update_cmod(iml->gmod);
}
@ -3182,8 +3117,7 @@ post_parse(void)
if (n > 2) {
iml->bmod->gamma = (int) strtol(get_pword(3, rs_cmod_blue), (char **) NULL, 0);
}
D_PIXMAP(("From blue cmod string %s to brightness %d, contrast %d, and gamma %d\n", rs_cmod_blue,
iml->bmod->brightness, iml->bmod->contrast, iml->bmod->gamma));
D_PIXMAP(("From blue cmod string %s to brightness %d, contrast %d, and gamma %d\n", rs_cmod_blue, iml->bmod->brightness, iml->bmod->contrast, iml->bmod->gamma));
FREE(rs_cmod_blue);
update_cmod(iml->bmod);
}
@ -3326,8 +3260,7 @@ save_config(char *path, unsigned char save_theme)
*(--tmp) = '/';
}
if (!mkdirhier(path) || (stat(path, &fst) && !CAN_WRITE(fst))) {
print_error("I couldn't write to \"%s\" or \"%s\". I give up.", (theme_dir ? theme_dir : PKGDATADIR "/themes/Eterm\n"),
path);
print_error("I couldn't write to \"%s\" or \"%s\". I give up.", (theme_dir ? theme_dir : PKGDATADIR "/themes/Eterm\n"), path);
return errno;
}
}
@ -3356,8 +3289,7 @@ save_config(char *path, unsigned char save_theme)
*(--tmp) = '/';
}
if (!mkdirhier(path) || (stat(path, &fst) && !CAN_WRITE(fst))) {
print_error("I couldn't write to \"%s\" or \"%s\". I give up.", (user_dir ? user_dir : PKGDATADIR "/themes/Eterm\n"),
path);
print_error("I couldn't write to \"%s\" or \"%s\". I give up.", (user_dir ? user_dir : PKGDATADIR "/themes/Eterm\n"), path);
return errno;
}
}
@ -3418,8 +3350,7 @@ save_config(char *path, unsigned char save_theme)
fprintf(fp, " desktop %d\n", rs_desktop);
}
}
fprintf(fp, " scrollbar_type %s\n",
(scrollbar_get_type() == SCROLLBAR_XTERM ? "xterm" : (scrollbar_get_type() == SCROLLBAR_MOTIF ? "motif" : "next")));
fprintf(fp, " scrollbar_type %s\n", (scrollbar_get_type() == SCROLLBAR_XTERM ? "xterm" : (scrollbar_get_type() == SCROLLBAR_MOTIF ? "motif" : "next")));
fprintf(fp, " scrollbar_width %d\n", scrollbar_anchor_width());
fprintf(fp, " font default %u\n", (unsigned int) font_idx);
fprintf(fp, " font proportional %d\n", ((Options & Opt_proportional) ? 1 : 0));
@ -3561,33 +3492,27 @@ save_config(char *path, unsigned char save_theme)
}
fprintf(fp, "\n");
if (simg->iml->mod) {
fprintf(fp, " colormod image 0x%02x 0x%02x 0x%02x\n", simg->iml->mod->brightness, simg->iml->mod->contrast,
simg->iml->mod->gamma);
fprintf(fp, " colormod image 0x%02x 0x%02x 0x%02x\n", simg->iml->mod->brightness, simg->iml->mod->contrast, simg->iml->mod->gamma);
}
if (simg->iml->rmod) {
fprintf(fp, " colormod red 0x%02x 0x%02x 0x%02x\n", simg->iml->rmod->brightness, simg->iml->rmod->contrast,
simg->iml->rmod->gamma);
fprintf(fp, " colormod red 0x%02x 0x%02x 0x%02x\n", simg->iml->rmod->brightness, simg->iml->rmod->contrast, simg->iml->rmod->gamma);
}
if (simg->iml->gmod) {
fprintf(fp, " colormod green 0x%02x 0x%02x 0x%02x\n", simg->iml->gmod->brightness, simg->iml->gmod->contrast,
simg->iml->gmod->gamma);
fprintf(fp, " colormod green 0x%02x 0x%02x 0x%02x\n", simg->iml->gmod->brightness, simg->iml->gmod->contrast, simg->iml->gmod->gamma);
}
if (simg->iml->bmod) {
fprintf(fp, " colormod blue 0x%02x 0x%02x 0x%02x\n", simg->iml->bmod->brightness, simg->iml->bmod->contrast,
simg->iml->bmod->gamma);
fprintf(fp, " colormod blue 0x%02x 0x%02x 0x%02x\n", simg->iml->bmod->brightness, simg->iml->bmod->contrast, simg->iml->bmod->gamma);
}
#endif
if (simg->iml->border) {
fprintf(fp, " border %hu %hu %hu %hu\n", simg->iml->border->left, simg->iml->border->right, simg->iml->border->top,
simg->iml->border->bottom);
fprintf(fp, " border %hu %hu %hu %hu\n", simg->iml->border->left, simg->iml->border->right, simg->iml->border->top, simg->iml->border->bottom);
}
if (simg->iml->bevel) {
fprintf(fp, " bevel %s %hu %hu %hu %hu\n", ((simg->iml->bevel->up) ? "up" : "down"), simg->iml->bevel->edges->left,
simg->iml->bevel->edges->right, simg->iml->bevel->edges->top, simg->iml->bevel->edges->bottom);
}
if (simg->iml->pad) {
fprintf(fp, " padding %hu %hu %hu %hu\n", simg->iml->pad->left, simg->iml->pad->right, simg->iml->pad->top,
simg->iml->pad->bottom);
fprintf(fp, " padding %hu %hu %hu %hu\n", simg->iml->pad->left, simg->iml->pad->right, simg->iml->pad->top, simg->iml->pad->bottom);
}
/* Selected state */
@ -3622,33 +3547,27 @@ save_config(char *path, unsigned char save_theme)
}
fprintf(fp, "\n");
if (simg->iml->mod) {
fprintf(fp, " colormod image 0x%02x 0x%02x 0x%02x\n", simg->iml->mod->brightness, simg->iml->mod->contrast,
simg->iml->mod->gamma);
fprintf(fp, " colormod image 0x%02x 0x%02x 0x%02x\n", simg->iml->mod->brightness, simg->iml->mod->contrast, simg->iml->mod->gamma);
}
if (simg->iml->rmod) {
fprintf(fp, " colormod red 0x%02x 0x%02x 0x%02x\n", simg->iml->rmod->brightness, simg->iml->rmod->contrast,
simg->iml->rmod->gamma);
fprintf(fp, " colormod red 0x%02x 0x%02x 0x%02x\n", simg->iml->rmod->brightness, simg->iml->rmod->contrast, simg->iml->rmod->gamma);
}
if (simg->iml->gmod) {
fprintf(fp, " colormod green 0x%02x 0x%02x 0x%02x\n", simg->iml->gmod->brightness, simg->iml->gmod->contrast,
simg->iml->gmod->gamma);
fprintf(fp, " colormod green 0x%02x 0x%02x 0x%02x\n", simg->iml->gmod->brightness, simg->iml->gmod->contrast, simg->iml->gmod->gamma);
}
if (simg->iml->bmod) {
fprintf(fp, " colormod blue 0x%02x 0x%02x 0x%02x\n", simg->iml->bmod->brightness, simg->iml->bmod->contrast,
simg->iml->bmod->gamma);
fprintf(fp, " colormod blue 0x%02x 0x%02x 0x%02x\n", simg->iml->bmod->brightness, simg->iml->bmod->contrast, simg->iml->bmod->gamma);
}
#endif
if (simg->iml->border) {
fprintf(fp, " border %hu %hu %hu %hu\n", simg->iml->border->left, simg->iml->border->right, simg->iml->border->top,
simg->iml->border->bottom);
fprintf(fp, " border %hu %hu %hu %hu\n", simg->iml->border->left, simg->iml->border->right, simg->iml->border->top, simg->iml->border->bottom);
}
if (simg->iml->bevel) {
fprintf(fp, " bevel %s %hu %hu %hu %hu\n", ((simg->iml->bevel->up) ? "up" : "down"), simg->iml->bevel->edges->left,
simg->iml->bevel->edges->right, simg->iml->bevel->edges->top, simg->iml->bevel->edges->bottom);
}
if (simg->iml->pad) {
fprintf(fp, " padding %hu %hu %hu %hu\n", simg->iml->pad->left, simg->iml->pad->right, simg->iml->pad->top,
simg->iml->pad->bottom);
fprintf(fp, " padding %hu %hu %hu %hu\n", simg->iml->pad->left, simg->iml->pad->right, simg->iml->pad->top, simg->iml->pad->bottom);
}
}
@ -3684,33 +3603,27 @@ save_config(char *path, unsigned char save_theme)
}
fprintf(fp, "\n");
if (simg->iml->mod) {
fprintf(fp, " colormod image 0x%02x 0x%02x 0x%02x\n", simg->iml->mod->brightness, simg->iml->mod->contrast,
simg->iml->mod->gamma);
fprintf(fp, " colormod image 0x%02x 0x%02x 0x%02x\n", simg->iml->mod->brightness, simg->iml->mod->contrast, simg->iml->mod->gamma);
}
if (simg->iml->rmod) {
fprintf(fp, " colormod red 0x%02x 0x%02x 0x%02x\n", simg->iml->rmod->brightness, simg->iml->rmod->contrast,
simg->iml->rmod->gamma);
fprintf(fp, " colormod red 0x%02x 0x%02x 0x%02x\n", simg->iml->rmod->brightness, simg->iml->rmod->contrast, simg->iml->rmod->gamma);
}
if (simg->iml->gmod) {
fprintf(fp, " colormod green 0x%02x 0x%02x 0x%02x\n", simg->iml->gmod->brightness, simg->iml->gmod->contrast,
simg->iml->gmod->gamma);
fprintf(fp, " colormod green 0x%02x 0x%02x 0x%02x\n", simg->iml->gmod->brightness, simg->iml->gmod->contrast, simg->iml->gmod->gamma);
}
if (simg->iml->bmod) {
fprintf(fp, " colormod blue 0x%02x 0x%02x 0x%02x\n", simg->iml->bmod->brightness, simg->iml->bmod->contrast,
simg->iml->bmod->gamma);
fprintf(fp, " colormod blue 0x%02x 0x%02x 0x%02x\n", simg->iml->bmod->brightness, simg->iml->bmod->contrast, simg->iml->bmod->gamma);
}
#endif
if (simg->iml->border) {
fprintf(fp, " border %hu %hu %hu %hu\n", simg->iml->border->left, simg->iml->border->right, simg->iml->border->top,
simg->iml->border->bottom);
fprintf(fp, " border %hu %hu %hu %hu\n", simg->iml->border->left, simg->iml->border->right, simg->iml->border->top, simg->iml->border->bottom);
}
if (simg->iml->bevel) {
fprintf(fp, " bevel %s %hu %hu %hu %hu\n", ((simg->iml->bevel->up) ? "up" : "down"), simg->iml->bevel->edges->left,
simg->iml->bevel->edges->right, simg->iml->bevel->edges->top, simg->iml->bevel->edges->bottom);
}
if (simg->iml->pad) {
fprintf(fp, " padding %hu %hu %hu %hu\n", simg->iml->pad->left, simg->iml->pad->right, simg->iml->pad->top,
simg->iml->pad->bottom);
fprintf(fp, " padding %hu %hu %hu %hu\n", simg->iml->pad->left, simg->iml->pad->right, simg->iml->pad->top, simg->iml->pad->bottom);
}
}
@ -3746,33 +3659,27 @@ save_config(char *path, unsigned char save_theme)
}
fprintf(fp, "\n");
if (simg->iml->mod) {
fprintf(fp, " colormod image 0x%02x 0x%02x 0x%02x\n", simg->iml->mod->brightness, simg->iml->mod->contrast,
simg->iml->mod->gamma);
fprintf(fp, " colormod image 0x%02x 0x%02x 0x%02x\n", simg->iml->mod->brightness, simg->iml->mod->contrast, simg->iml->mod->gamma);
}
if (simg->iml->rmod) {
fprintf(fp, " colormod red 0x%02x 0x%02x 0x%02x\n", simg->iml->rmod->brightness, simg->iml->rmod->contrast,
simg->iml->rmod->gamma);
fprintf(fp, " colormod red 0x%02x 0x%02x 0x%02x\n", simg->iml->rmod->brightness, simg->iml->rmod->contrast, simg->iml->rmod->gamma);
}
if (simg->iml->gmod) {
fprintf(fp, " colormod green 0x%02x 0x%02x 0x%02x\n", simg->iml->gmod->brightness, simg->iml->gmod->contrast,
simg->iml->gmod->gamma);
fprintf(fp, " colormod green 0x%02x 0x%02x 0x%02x\n", simg->iml->gmod->brightness, simg->iml->gmod->contrast, simg->iml->gmod->gamma);
}
if (simg->iml->bmod) {
fprintf(fp, " colormod blue 0x%02x 0x%02x 0x%02x\n", simg->iml->bmod->brightness, simg->iml->bmod->contrast,
simg->iml->bmod->gamma);
fprintf(fp, " colormod blue 0x%02x 0x%02x 0x%02x\n", simg->iml->bmod->brightness, simg->iml->bmod->contrast, simg->iml->bmod->gamma);
}
#endif
if (simg->iml->border) {
fprintf(fp, " border %hu %hu %hu %hu\n", simg->iml->border->left, simg->iml->border->right, simg->iml->border->top,
simg->iml->border->bottom);
fprintf(fp, " border %hu %hu %hu %hu\n", simg->iml->border->left, simg->iml->border->right, simg->iml->border->top, simg->iml->border->bottom);
}
if (simg->iml->bevel) {
fprintf(fp, " bevel %s %hu %hu %hu %hu\n", ((simg->iml->bevel->up) ? "up" : "down"), simg->iml->bevel->edges->left,
simg->iml->bevel->edges->right, simg->iml->bevel->edges->top, simg->iml->bevel->edges->bottom);
}
if (simg->iml->pad) {
fprintf(fp, " padding %hu %hu %hu %hu\n", simg->iml->pad->left, simg->iml->pad->right, simg->iml->pad->top,
simg->iml->pad->bottom);
fprintf(fp, " padding %hu %hu %hu %hu\n", simg->iml->pad->left, simg->iml->pad->right, simg->iml->pad->top, simg->iml->pad->bottom);
}
}
fprintf(fp, " end image\n");
@ -4008,8 +3915,7 @@ save_config(char *path, unsigned char save_theme)
}
for (i = 0; i < 256; i++) {
if (KeySym_map[i]) {
fprintf(fp, " keysym 0xff%02x \'%s\'\n", i,
safe_print_string((char *) (KeySym_map[i] + 1), (unsigned long) KeySym_map[i][0]));
fprintf(fp, " keysym 0xff%02x \'%s\'\n", i, safe_print_string((char *) (KeySym_map[i] + 1), (unsigned long) KeySym_map[i][0]));
}
}
#ifdef GREEK_SUPPORT

View File

@ -62,6 +62,7 @@ static Imlib_Border bord_none = { 0, 0, 0, 0 };
#endif
Pixmap buffer_pixmap = None;
#ifdef PIXMAP_OFFSET
Pixmap desktop_pixmap = None, viewport_pixmap = None;
Window desktop_window = None;
@ -333,8 +334,7 @@ set_pixmap_scale(const char *geom, pixmap_t *pmap)
pmap->op = op;
changed++;
}
D_PIXMAP(("Returning %hu, *pmap == { op [%hu], w [%hd], h [%hd], x [%hd], y [%hd] }\n", changed, pmap->op, pmap->w, pmap->h, pmap->x,
pmap->y));
D_PIXMAP(("Returning %hu, *pmap == { op [%hu], w [%hd], h [%hd], x [%hd], y [%hd] }\n", changed, pmap->op, pmap->w, pmap->h, pmap->x, pmap->y));
return changed;
}
@ -628,8 +628,7 @@ check_image_ipc(unsigned char reset)
}
);
/* *INDENT-ON* */
print_error("Looks like this version of Enlightenment doesn't support the IPC "
"commands I need. Disallowing \"auto\" mode for all images.\n");
print_error("Looks like this version of Enlightenment doesn't support the IPC " "commands I need. Disallowing \"auto\" mode for all images.\n");
FREE(reply);
checked = 2;
return 0;
@ -678,8 +677,7 @@ create_trans_pixmap(simage_t *simg, unsigned char which, Drawable d, int x, int
XSetFillStyle(Xdisplay, gc, FillTiled);
XFillRectangle(Xdisplay, p, gc, 0, 0, width, height);
} else {
D_PIXMAP(("Copying %hux%hu rectangle at %d, %d from %ux%u desktop pixmap 0x%08x onto p.\n", width, height, x, y, pw,
ph, desktop_pixmap));
D_PIXMAP(("Copying %hux%hu rectangle at %d, %d from %ux%u desktop pixmap 0x%08x onto p.\n", width, height, x, y, pw, ph, desktop_pixmap));
XCopyArea(Xdisplay, desktop_pixmap, p, gc, x, y, width, height, 0, 0);
}
if ((which != image_bg || (image_toggles & IMOPT_ITRANS) || images[image_bg].current != images[image_bg].norm)
@ -706,6 +704,7 @@ create_viewport_pixmap(simage_t *simg, Drawable d, int x, int y, unsigned short
Pixmap p = None, mask = None;
GC gc;
Screen *scr;
D_PIXMAP(("create_viewport_pixmap(%8p, 0x%08x, %d, %d, %hu, %hu) called.\n", simg, d, x, y, width, height));
scr = ScreenOfDisplay(Xdisplay, Xscreen);
if (!scr)
@ -719,6 +718,7 @@ create_viewport_pixmap(simage_t *simg, Drawable d, int x, int y, unsigned short
}
if (viewport_pixmap == None) {
imlib_t *tmp_iml = images[image_bg].current->iml;
imlib_context_set_image(tmp_iml->im);
imlib_context_set_drawable(d);
imlib_image_set_has_alpha(0);
@ -782,19 +782,19 @@ create_viewport_pixmap(simage_t *simg, Drawable d, int x, int y, unsigned short
}
void
paste_simage(simage_t *simg, unsigned char which, Window win, Drawable d, unsigned short x, unsigned short y,
unsigned short w, unsigned short h)
paste_simage(simage_t *simg, unsigned char which, Window win, Drawable d, unsigned short x, unsigned short y, unsigned short w, unsigned short h)
{
Pixmap pmap = None, mask = None;
GC gc;
ASSERT(simg != NULL);
REQUIRE(d != None);
D_PIXMAP(("paste_simage(%8p, %s, 0x%08x, 0x%08x, %hd, %hd, %hd, %hd) called.\n", simg, get_image_type(which),
(int) win, (int) d, x, y, w, h));
D_PIXMAP(("paste_simage(%8p, %s, 0x%08x, 0x%08x, %hd, %hd, %hd, %hd) called.\n", simg, get_image_type(which), (int) win, (int) d, x, y, w, h));
if (which != image_max) {
if (image_mode_is(which, MODE_AUTO) && image_mode_is(which, ALLOW_AUTO)) {
char buff[255], *reply;
const char *iclass, *state;
check_image_ipc(0);
if (image_mode_is(which, MODE_AUTO)) {
iclass = get_iclass_name(which);
@ -810,8 +810,7 @@ paste_simage(simage_t *simg, unsigned char which, Window win, Drawable d, unsign
snprintf(buff, sizeof(buff), "imageclass %s apply_copy 0x%x %s %hd %hd", iclass, (int) d, state, w, h);
reply = enl_send_and_wait(buff);
if (strstr(reply, "Error")) {
print_error
("Enlightenment didn't seem to like something about my syntax. Disallowing \"auto\" mode for this image.\n");
print_error("Enlightenment didn't seem to like something about my syntax. Disallowing \"auto\" mode for this image.\n");
image_mode_fallback(which);
FREE(reply);
} else {
@ -829,8 +828,7 @@ paste_simage(simage_t *simg, unsigned char which, Window win, Drawable d, unsign
LIBAST_X_FREE_GC(gc);
return;
} else {
print_error
("Enlightenment returned a null pixmap, which I can't use. Disallowing \"auto\" mode for this image.\n");
print_error("Enlightenment returned a null pixmap, which I can't use. Disallowing \"auto\" mode for this image.\n");
FREE(reply);
image_mode_fallback(which);
}
@ -839,6 +837,7 @@ paste_simage(simage_t *simg, unsigned char which, Window win, Drawable d, unsign
}
} else if (image_mode_is(which, MODE_TRANS) && image_mode_is(which, ALLOW_TRANS)) {
Pixmap p;
gc = LIBAST_X_CREATE_GC(0, NULL);
p = create_trans_pixmap(simg, which, win, x, y, w, h);
if (p != None) {
@ -850,6 +849,7 @@ paste_simage(simage_t *simg, unsigned char which, Window win, Drawable d, unsign
LIBAST_X_FREE_GC(gc);
} else if (image_mode_is(which, MODE_VIEWPORT) && image_mode_is(which, ALLOW_VIEWPORT)) {
Pixmap p;
gc = LIBAST_X_CREATE_GC(0, NULL);
p = create_viewport_pixmap(simg, win, x, y, w, h);
if (simg->iml->bevel != NULL) {
@ -950,6 +950,7 @@ copy_buffer_pixmap(unsigned char mode, unsigned long fill, unsigned short width,
{
GC gc;
XGCValues gcvalue;
ASSERT(buffer_pixmap == None);
buffer_pixmap = LIBAST_X_CREATE_PIXMAP(width, height);
gcvalue.foreground = (Pixel) fill;
@ -957,6 +958,7 @@ copy_buffer_pixmap(unsigned char mode, unsigned long fill, unsigned short width,
XSetGraphicsExposures(Xdisplay, gc, False);
if (mode == MODE_SOLID) {
simage_t *simg;
simg = images[image_bg].current;
if (simg->pmap->pixmap) {
LIBAST_X_FREE_PIXMAP(simg->pmap->pixmap);
@ -977,6 +979,7 @@ render_simage(simage_t *simg, Window win, unsigned short width, unsigned short h
GC gc;
Pixmap pixmap = None;
Screen *scr;
#ifdef PIXMAP_SUPPORT
short xsize, ysize;
short xpos = 0, ypos = 0;
@ -990,8 +993,7 @@ render_simage(simage_t *simg, Window win, unsigned short width, unsigned short h
ASSERT(simg->iml != NULL);
ASSERT(simg->pmap != NULL);
REQUIRE(win != None);
D_PIXMAP(("Rendering simg->iml->im %8p (%s) at %hux%hu onto window 0x%08x\n", simg->iml->im, get_image_type(which),
width, height, win));
D_PIXMAP(("Rendering simg->iml->im %8p (%s) at %hux%hu onto window 0x%08x\n", simg->iml->im, get_image_type(which), width, height, win));
D_PIXMAP(("Image mode is 0x%02x\n", images[which].mode));
#ifdef PIXMAP_SUPPORT
if ((which == image_bg) && image_mode_is(image_bg, MODE_VIEWPORT)) {
@ -1012,6 +1014,7 @@ render_simage(simage_t *simg, Window win, unsigned short width, unsigned short h
if ((images[which].mode & MODE_AUTO) && (images[which].mode & ALLOW_AUTO)) {
char buff[255];
const char *iclass, *state;
check_image_ipc(0);
if (image_mode_is(which, MODE_AUTO)) {
iclass = get_iclass_name(which);
@ -1025,15 +1028,16 @@ render_simage(simage_t *simg, Window win, unsigned short width, unsigned short h
if (iclass) {
if (renderop & RENDER_FORCE_PIXMAP) {
char *reply;
snprintf(buff, sizeof(buff), "imageclass %s apply_copy 0x%x %s %hd %hd", iclass, (int) win, state, width, height);
reply = enl_send_and_wait(buff);
if (strstr(reply, "Error")) {
print_error
("Enlightenment didn't seem to like something about my syntax. Disallowing \"auto\" mode for this image.\n");
print_error("Enlightenment didn't seem to like something about my syntax. Disallowing \"auto\" mode for this image.\n");
image_mode_fallback(which);
FREE(reply);
} else {
Pixmap pmap, mask;
pmap = (Pixmap) strtoul(reply, (char **) NULL, 0);
mask = (Pixmap) strtoul(get_pword(2, reply), (char **) NULL, 0);
FREE(reply);
@ -1057,8 +1061,7 @@ render_simage(simage_t *simg, Window win, unsigned short width, unsigned short h
snprintf(buff, sizeof(buff), "imageclass %s free_pixmap 0x%08x", iclass, (int) pmap);
enl_ipc_send(buff);
} else {
print_error
("Enlightenment returned a null pixmap, which I can't use. Disallowing \"auto\" mode for this image.\n");
print_error("Enlightenment returned a null pixmap, which I can't use. Disallowing \"auto\" mode for this image.\n");
FREE(reply);
image_mode_fallback(which);
}
@ -1094,8 +1097,8 @@ render_simage(simage_t *simg, Window win, unsigned short width, unsigned short h
}
} else if (image_mode_is(which, MODE_VIEWPORT) && image_mode_is(which, ALLOW_VIEWPORT)) {
Pixmap p;
D_PIXMAP(("Viewport mode enabled. viewport_pixmap == 0x%08x and simg->pmap->pixmap == 0x%08x\n", viewport_pixmap,
simg->pmap->pixmap));
D_PIXMAP(("Viewport mode enabled. viewport_pixmap == 0x%08x and simg->pmap->pixmap == 0x%08x\n", viewport_pixmap, simg->pmap->pixmap));
p = create_viewport_pixmap(simg, win, 0, 0, width, height);
if (p && (p != simg->pmap->pixmap)) {
if (simg->pmap->pixmap != None) {
@ -1126,6 +1129,7 @@ render_simage(simage_t *simg, Window win, unsigned short width, unsigned short h
int h = simg->pmap->h;
int x = simg->pmap->x;
int y = simg->pmap->y;
imlib_context_set_image(simg->iml->im);
imlib_context_set_drawable(win);
imlib_context_set_anti_alias(1);
@ -1136,6 +1140,7 @@ render_simage(simage_t *simg, Window win, unsigned short width, unsigned short h
D_PIXMAP(("w == %d, h == %d, x == %d, y == %d, xsize == %d, ysize == %d\n", w, h, x, y, xsize, ysize));
if ((simg->pmap->op & OP_PROPSCALE) && w && h) {
double x_ratio, y_ratio;
x_ratio = ((double) width) / ((double) xsize);
y_ratio = ((double) height) / ((double) ysize);
if (x_ratio > 1) {
@ -1185,6 +1190,7 @@ render_simage(simage_t *simg, Window win, unsigned short width, unsigned short h
}
if (xscaled != width || yscaled != height || xpos != 0 || ypos != 0) {
unsigned char single;
/* This tells us if we have a single, non-tiled image which does not entirely fill the window */
single = ((xscaled < width || yscaled < height) && !(simg->pmap->op & OP_TILE)) ? 1 : 0;
pixmap = simg->pmap->pixmap;
@ -1275,6 +1281,7 @@ search_path(const char *pathlist, const char *file)
const char *path;
int maxpath, len;
struct stat fst;
if (!pathlist || !file) { /* If either one is NULL, there really isn't much point in going on.... */
return ((const char *) NULL);
}
@ -1328,6 +1335,7 @@ search_path(const char *pathlist, const char *file)
}
for (path = pathlist; path != NULL && *path != '\0'; path = p) {
int n;
/* colon delimited */
if ((p = strchr(path, ':')) == NULL)
p = strchr(path, '\0');
@ -1339,6 +1347,7 @@ search_path(const char *pathlist, const char *file)
if (*path == '~') {
unsigned int l;
char *home_dir = getenv("HOME");
if (home_dir && *home_dir) {
l = strlen(home_dir);
if (l + n < (unsigned) maxpath) {
@ -1382,6 +1391,7 @@ load_image(const char *file, simage_t *simg)
Imlib_Image *im;
Imlib_Load_Error im_err;
char *geom;
ASSERT_RVAL(file != NULL, 0);
ASSERT_RVAL(simg != NULL, 0);
D_PIXMAP(("load_image(%s, %8p)\n", file, simg));
@ -1447,6 +1457,7 @@ update_cmod_tables(imlib_t *iml)
{
colormod_t *mod = iml->mod, *rmod = iml->rmod, *gmod = iml->gmod, *bmod = iml->bmod;
DATA8 rt[256], gt[256], bt[256];
REQUIRE(mod || rmod || gmod || bmod);
/* When any changes is made to any individual color modifier for an image,
this function must be called to update the overall Imlib2 color modifier. */
@ -1510,12 +1521,14 @@ shade_ximage_15(void *data, int bpl, int w, int h, int rm, int gm, int bm)
{
unsigned char *ptr;
int x, y;
ptr = (unsigned char *) data + (w * sizeof(DATA16));
if ((rm <= 256) && (gm <= 256) && (bm <= 256)) {
/* No saturation */
for (y = h; --y >= 0;) {
for (x = -w; x < 0; x++) {
int r, g, b;
b = ((DATA16 *) ptr)[x];
r = (b & 0x7c00) * rm;
g = (b & 0x3e0) * gm;
@ -1530,6 +1543,7 @@ shade_ximage_15(void *data, int bpl, int w, int h, int rm, int gm, int bm)
for (y = h; --y >= 0;) {
for (x = -w; x < 0; x++) {
int r, g, b;
b = ((DATA16 *) ptr)[x];
r = (b & 0x7c00) * rm;
g = (b & 0x3e0) * gm;
@ -1552,12 +1566,14 @@ shade_ximage_16(void *data, int bpl, int w, int h, int rm, int gm, int bm)
{
unsigned char *ptr;
int x, y;
ptr = (unsigned char *) data + (w * sizeof(DATA16));
if ((rm <= 256) && (gm <= 256) && (bm <= 256)) {
/* No saturation */
for (y = h; --y >= 0;) {
for (x = -w; x < 0; x++) {
int r, g, b;
b = ((DATA16 *) ptr)[x];
r = (b & 0xf800) * rm;
g = (b & 0x7e0) * gm;
@ -1572,6 +1588,7 @@ shade_ximage_16(void *data, int bpl, int w, int h, int rm, int gm, int bm)
for (y = h; --y >= 0;) {
for (x = -w; x < 0; x++) {
int r, g, b;
b = ((DATA16 *) ptr)[x];
r = (b & 0xf800) * rm;
g = (b & 0x7e0) * gm;
@ -1594,12 +1611,14 @@ shade_ximage_32(void *data, int bpl, int w, int h, int rm, int gm, int bm)
{
unsigned char *ptr;
int x, y;
ptr = (unsigned char *) data + (w * 4);
if ((rm <= 256) && (gm <= 256) && (bm <= 256)) {
/* No saturation */
for (y = h; --y >= 0;) {
for (x = -(w * 4); x < 0; x += 4) {
int r, g, b;
# ifdef WORDS_BIGENDIAN
r = (ptr[x + 1] * rm) >> 8;
g = (ptr[x + 2] * gm) >> 8;
@ -1622,6 +1641,7 @@ shade_ximage_32(void *data, int bpl, int w, int h, int rm, int gm, int bm)
for (y = h; --y >= 0;) {
for (x = -(w * 4); x < 0; x += 4) {
int r, g, b;
# ifdef WORDS_BIGENDIAN
r = (ptr[x + 1] * rm) >> 8;
g = (ptr[x + 2] * gm) >> 8;
@ -1656,12 +1676,14 @@ shade_ximage_24(void *data, int bpl, int w, int h, int rm, int gm, int bm)
{
unsigned char *ptr;
int x, y;
ptr = (unsigned char *) data + (w * 3);
if ((rm <= 256) && (gm <= 256) && (bm <= 256)) {
/* No saturation */
for (y = h; --y >= 0;) {
for (x = -(w * 3); x < 0; x += 3) {
int r, g, b;
# ifdef WORDS_BIGENDIAN
r = (ptr[x + 0] * rm) >> 8;
g = (ptr[x + 1] * gm) >> 8;
@ -1684,6 +1706,7 @@ shade_ximage_24(void *data, int bpl, int w, int h, int rm, int gm, int bm)
for (y = h; --y >= 0;) {
for (x = -(w * 3); x < 0; x += 3) {
int r, g, b;
# ifdef WORDS_BIGENDIAN
r = (ptr[x + 0] * rm) >> 8;
g = (ptr[x + 1] * gm) >> 8;
@ -1718,6 +1741,7 @@ colormod_trans(Pixmap p, imlib_t *iml, GC gc, unsigned short w, unsigned short h
XImage *ximg;
register unsigned long i;
#if 0
register unsigned long v;
unsigned long x, y;
@ -1728,6 +1752,7 @@ colormod_trans(Pixmap p, imlib_t *iml, GC gc, unsigned short w, unsigned short h
unsigned short rm, gm, bm, shade;
Imlib_Color ctab[256];
int real_depth = 0;
D_PIXMAP(("colormod_trans(p == 0x%08x, gc, w == %hu, h == %hu) called.\n", p, w, h));
REQUIRE(p != None);
if (iml->mod) {
@ -1758,6 +1783,7 @@ colormod_trans(Pixmap p, imlib_t *iml, GC gc, unsigned short w, unsigned short h
if (Xdepth <= 8) {
XColor cols[256];
for (i = 0; i < (unsigned long) (1 << Xdepth); i++) {
cols[i].pixel = i;
cols[i].flags = DoRed | DoGreen | DoBlue;
@ -1771,6 +1797,7 @@ colormod_trans(Pixmap p, imlib_t *iml, GC gc, unsigned short w, unsigned short h
} else if (Xdepth == 16) {
XWindowAttributes xattr;
XGetWindowAttributes(Xdisplay, desktop_window, &xattr);
if ((xattr.visual->green_mask == 0x3e0)) {
real_depth = 15;
@ -1804,9 +1831,11 @@ colormod_trans(Pixmap p, imlib_t *iml, GC gc, unsigned short w, unsigned short h
/* Swap rm and bm for bgr */
{
XWindowAttributes xattr;
XGetWindowAttributes(Xdisplay, desktop_window, &xattr);
if (xattr.visual->blue_mask > xattr.visual->red_mask) {
unsigned short tmp;
tmp = rm;
rm = bm;
bm = tmp;
@ -1855,6 +1884,7 @@ update_desktop_info(int *w, int *h)
unsigned int pw, ph, pb, pd;
int px, py;
Window dummy;
if (w) {
*w = 0;
}
@ -1883,8 +1913,7 @@ update_desktop_info(int *w, int *h)
XGetGeometry(Xdisplay, desktop_pixmap, &dummy, &px, &py, &pw, &ph, &pb, &pd);
}
if ((pw <= 0) || (ph <= 0)) {
print_error("Value of desktop pixmap property is invalid. Please restart your \n"
"window manager or use Esetroot to set a new one.");
print_error("Value of desktop pixmap property is invalid. Please restart your \n" "window manager or use Esetroot to set a new one.");
desktop_pixmap = None;
return 0;
}
@ -1907,6 +1936,7 @@ get_desktop_window(void)
unsigned char *data;
unsigned int nchildren;
Window w, root, *children, parent;
D_PIXMAP(("Current desktop window is 0x%08x\n", (unsigned int) desktop_window));
if ((desktop_window != None) && (desktop_window != Xroot)) {
XSelectInput(Xdisplay, desktop_window, None);
@ -1925,11 +1955,8 @@ get_desktop_window(void)
}
if ((XGetWindowProperty
(Xdisplay, w, props[PROP_TRANS_PIXMAP], 0L, 1L, False, AnyPropertyType, &type, &format, &length, &after, &data)) != Success) {
if ((XGetWindowProperty
(Xdisplay, w, props[PROP_TRANS_COLOR], 0L, 1L, False, AnyPropertyType, &type, &format, &length, &after,
&data)) != Success) {
if ((XGetWindowProperty(Xdisplay, w, props[PROP_TRANS_PIXMAP], 0L, 1L, False, AnyPropertyType, &type, &format, &length, &after, &data)) != Success) {
if ((XGetWindowProperty(Xdisplay, w, props[PROP_TRANS_COLOR], 0L, 1L, False, AnyPropertyType, &type, &format, &length, &after, &data)) != Success) {
continue;
}
}
@ -1962,6 +1989,7 @@ get_desktop_pixmap(void)
static Pixmap color_pixmap = None, orig_desktop_pixmap;
unsigned long length, after;
unsigned char *data;
D_PIXMAP(("Current desktop pixmap is 0x%08x\n", (unsigned int) desktop_pixmap));
if (desktop_pixmap == None) {
orig_desktop_pixmap = None; /* Forced re-read. */
@ -1977,8 +2005,7 @@ get_desktop_pixmap(void)
LIBAST_X_FREE_PIXMAP(color_pixmap);
color_pixmap = None;
}
XGetWindowProperty(Xdisplay, desktop_window, props[PROP_TRANS_PIXMAP], 0L, 1L, False, AnyPropertyType, &type,
&format, &length, &after, &data);
XGetWindowProperty(Xdisplay, desktop_window, props[PROP_TRANS_PIXMAP], 0L, 1L, False, AnyPropertyType, &type, &format, &length, &after, &data);
if (type == XA_PIXMAP) {
p = *((Pixmap *) data);
XFree(data);
@ -1998,6 +2025,7 @@ get_desktop_pixmap(void)
GC gc;
XGCValues gcvalue;
Screen *scr = ScreenOfDisplay(Xdisplay, Xscreen);
gcvalue.foreground = gcvalue.background = PixColors[bgColor];
gc = LIBAST_X_CREATE_GC(GCForeground | GCBackground, &gcvalue);
XGetGeometry(Xdisplay, p, &w, &px, &py, &pw, &ph, &pb, &pd);
@ -2025,12 +2053,12 @@ get_desktop_pixmap(void)
} else {
XFree(data);
}
XGetWindowProperty(Xdisplay, desktop_window, props[PROP_TRANS_COLOR], 0L, 1L, False, AnyPropertyType, &type,
&format, &length, &after, &data);
XGetWindowProperty(Xdisplay, desktop_window, props[PROP_TRANS_COLOR], 0L, 1L, False, AnyPropertyType, &type, &format, &length, &after, &data);
if (type == XA_CARDINAL) {
XGCValues gcvalue;
GC gc;
Pixel pix;
free_desktop_pixmap();
pix = *((Pixel *) data);
XFree(data);
@ -2068,12 +2096,14 @@ shaped_window_apply_mask(Drawable d, Pixmap mask)
{
static signed char have_shape = -1;
REQUIRE(d != None);
REQUIRE(mask != None);
D_PIXMAP(("shaped_window_apply_mask(d [0x%08x], mask [0x%08x]) called.\n", d, mask));
# ifdef HAVE_X_SHAPE_EXT
if (have_shape == -1) { /* Don't know yet. */
int unused;
D_PIXMAP(("Looking for shape extension.\n"));
if (XQueryExtension(Xdisplay, "SHAPE", &unused, &unused, &unused)) {
have_shape = 1;
@ -2102,6 +2132,7 @@ set_icon_pixmap(char *filename, XWMHints * pwm_hints)
Imlib_Color_Modifier tmp_cmod;
XWMHints *wm_hints;
int w = 8, h = 8;
if (pwm_hints) {
wm_hints = pwm_hints;
} else {
@ -2118,6 +2149,7 @@ set_icon_pixmap(char *filename, XWMHints * pwm_hints)
if (icon_path != NULL) {
XIconSize *icon_sizes;
int count, i;
temp_im = imlib_load_image_with_error_return(filename, &im_err);
if (temp_im == NULL) {
print_error("Unable to load icon file \"%s\" -- %s\n", filename, imlib_strerror(im_err));
@ -2126,8 +2158,7 @@ set_icon_pixmap(char *filename, XWMHints * pwm_hints)
if (XGetIconSizes(Xdisplay, Xroot, &icon_sizes, &count)) {
for (i = 0; i < count; i++) {
D_PIXMAP(("Got icon sizes: Width %d to %d +/- %d, Height %d to %d +/- %d\n", icon_sizes[i].min_width,
icon_sizes[i].max_width, icon_sizes[i].width_inc, icon_sizes[i].min_height, icon_sizes[i].max_height,
icon_sizes[i].height_inc));
icon_sizes[i].max_width, icon_sizes[i].width_inc, icon_sizes[i].min_height, icon_sizes[i].max_height, icon_sizes[i].height_inc));
if (icon_sizes[i].max_width > 64 || icon_sizes[i].max_height > 64) {
continue;
}

View File

@ -90,6 +90,7 @@ typedef struct __ns_sess { /* a whole screen-session with many clients */
char *home; /* user's home dir. so we can find .screenrc */
char *sysrc; /* global screen config */
void *userdef; /* the term-app can store a pointer here */
char *name; /* session name */
int fd; /* fd for communication */
char escape,literal; /* talking to screen: defaults to ^A, a */
int escdef; /* where was the escape sequence defined? */
@ -131,13 +132,14 @@ typedef struct __ns_efuns { /* callbacks into the terminal program */
int (*set_scroll_h)(void *,int);
int (*redraw)(void *);
int (*redraw_xywh)(void *,int,int,int,int);
int (*ins_disp)(void *,int,char *);
int (*expire_buttons)(void *,int);
int (*ins_disp)(void *,int,int,char *);
int (*del_disp)(void *,int);
int (*upd_disp)(void *,int,int,char *);
int (*err_msg)(void *,int,char *);
int (*execute)(void *,char **);
int (*inp_text)(void *,int,char *);
int (*input_dialog)(void *,char *,int,char **,int (*)(void *,char *,size_t,size_t));
int (*inp_dial)(void *,char *,int,char **,int (*)(void *,char *,size_t,size_t));
int (*inp_tab)(void *,char *[],int,char *,size_t,size_t);
int (*waitstate)(void *,int);
} _ns_efuns;
@ -162,18 +164,16 @@ _ns_efuns *ns_new_efuns(void);
_ns_efuns *ns_dst_efuns(_ns_efuns **);
_ns_efuns *ns_get_efuns(_ns_sess *,_ns_disp *);
/* debug */
void ns_desc_string(char *,char *);
void ns_desc_hop(_ns_hop *,char *);
void ns_desc_sess(_ns_sess *,char *);
/* convenience */
_ns_disp *disp_fetch_or_make(_ns_sess *,int);
/* transparent attach/detach */
_ns_sess *ns_attach_by_sess(_ns_sess **,int *);
_ns_sess *ns_attach_by_URL(char *,char *,_ns_efuns **,int *,void *);
int ns_detach(_ns_sess **);
/* convenience */
int ns_run(_ns_efuns *, char *);
int ns_get_ssh_port(void);
int disp_get_real_by_screen(_ns_sess *,int);
int disp_get_screen_by_real(_ns_sess *,int);
/* send command to screen */
int ns_screen_command(_ns_sess *, char *);
@ -202,21 +202,25 @@ int ns_parse_screen(_ns_sess *,int,int,char *);
/* backend abstraction */
/* things the term might ask screen/scream to do ***************************/
int ns_scroll2x(_ns_sess *,int);
int ns_scroll2y(_ns_sess *,int);
int ns_go2_disp(_ns_sess *,int);
int ns_add_disp(_ns_sess *,int,char *);
int ns_mov_disp(_ns_sess * s,int,int);
int ns_rsz_disp(_ns_sess *,int,int,int);
int ns_rem_disp(_ns_sess *,int);
int ns_ren_disp(_ns_sess *,int,char *);
int ns_log_disp(_ns_sess *,int,char *);
int ns_upd_stat(_ns_sess *);
int ns_input_dialog(_ns_sess *,char *,int,char **,int (*)(void *,char *,size_t,size_t));
int ns_inp_dial(_ns_sess *,char *,int,char **,int (*)(void *,char *,size_t,size_t));
char *ns_get_url(_ns_sess *,int);
/* register efuns (callbacks) **********************************************/
/* frontend abstraction */
/* things we might ask the terminal to do (register efuns (callbacks)) *****/
void ns_register_ssx(_ns_efuns *,int (*set_scroll_x)(void *,int));
void ns_register_ssy(_ns_efuns *,int (*set_scroll_y)(void *,int));
void ns_register_ssw(_ns_efuns *,int (*set_scroll_w)(void *,int));
@ -224,8 +228,9 @@ void ns_register_ssh(_ns_efuns *,int (*set_scroll_h)(void *,int));
void ns_register_red(_ns_efuns *,int (*redraw)(void *));
void ns_register_rda(_ns_efuns *,int (*redraw_xywh)(void *,int,int,int,int));
void ns_register_exb(_ns_efuns *,int (*expire_buttons)(void *,int));
void ns_register_ins(_ns_efuns *,int (*ins_disp)(void *,int,char *));
void ns_register_ins(_ns_efuns *,int (*ins_disp)(void *,int,int,char *));
void ns_register_del(_ns_efuns *,int (*del_disp)(void *,int));
void ns_register_upd(_ns_efuns *,int (*upd_disp)(void *,int,int,char *));
@ -238,20 +243,6 @@ void ns_register_inp(_ns_efuns *,int (*)(void *,char *,int,char **,int (*)(void
void ns_register_tab(_ns_efuns *,int (*)(void *,char *[],int,char *,size_t,size_t));
void ns_register_fun(_ns_efuns *,int (*)(void *,int));
/* from command.c */
extern int set_scroll_x(void *, int);
extern int set_scroll_y(void *, int);
extern int set_scroll_w(void *, int);
extern int set_scroll_h(void *, int);
extern int redraw(void *);
extern int redraw_xywh(void *, int, int, int, int);
extern int ins_disp(void *, int, char *);
extern int del_disp(void *, int);
extern int upd_disp(void *, int, int, char *);
extern int err_msg(void *, int, char *);
extern int inp_text(void *, int, char *);
extern int input_dialog(void *, char *, int, char **, int (*) (void *, char *, size_t, size_t));
extern int exe_prg(void *, char **);
extern int escreen_init(char **);
/***************************************************************************/

View File

@ -15,11 +15,8 @@
undef it, you're on your own. */
#define NS_PARANOID
/* define NS_DEBUG to get debug-info. no support for those who undef this. */
#undef NS_DEBUG
/* debug memory stuff. never actually used this. */
#undef NS_DEBUG_MEM
/* compile in support for the GNU "screen" program as a backend */
#define NS_HAVE_SCREEN 1
#define NS_MAXCMD 512
@ -32,7 +29,7 @@
#define NS_SCREEN_OPTS "-xRR"
#define NS_SCREEN_GREP "grep escape \"$SCREENRC\" 2>/dev/null || grep escape ~/.screenrc 2>/dev/null || grep escape \"$SYSSCREENRC\" 2>/dev/null || grep escape /etc/screenrc 2>/dev/null || grep escape /usr/local/etc/screenrc 2>/dev/null || echo \"escape ^Aa\"\n"
#define NS_SCREEM_CALL "%s 2>/dev/null || %s"
#define NS_WRAP_CALL "export TERM=vt100; %s"
#define NS_WRAP_CALL "export TERM=vt100; screen -wipe; %s"
#define NS_SCREEN_RC ".screenrc"
/* this should never change. the escape-char for an out-of-the-box "screen".
@ -48,7 +45,9 @@
else is used in the session, libscream will convert it on the fly. */
/* DO NOT use \005Lw for your status, it breaks older screens!! */
#define NS_SCREEN_UPDATE "\x01w"
#define NS_SCREEN_INIT "\x0c\x01Z\x01:hardstatus lastline\r\x01:defhstatus \"\\005w\"\r\x01:hstatus \"\\005w\"\r\x01:msgminwait 0\r\x01:msgwait 1\r\x01:nethack off\r" NS_SCREEN_UPDATE
#define NS_SCREEN_VERSION "\x01v"
#define NS_SCREEN_SESSION "\x01:sessionname\r"
#define NS_SCREEN_INIT "\x01:msgminwait 0\r\x01:msgwait 1\r\x01:hardstatus lastline\r\x01:defhstatus \"\\005w\"\r\x01:hstatus \"\\005w\"\r\x01:nethack off\r\x0c" NS_SCREEN_UPDATE NS_SCREEN_VERSION NS_SCREEN_SESSION
#define NS_SCREEN_PRVS_REG "\x01:focus up\r"
#define NS_DFLT_SSH_PORT 22
@ -59,14 +58,11 @@
#define NS_SCREEN_FLAGS "*-$!@L&Z"
#define NS_SCREEN_DK_CMD "unknown command '"
#define NS_SCREEN_VERSION "scre%s %d.%d.%d %s %s"
#define NS_SCREEN_DK_CMD_T "unknown command '"
#define NS_SCREEN_SESS_T "This session is named '"
#define NS_SCREEN_VERSION_T "scre%2s %d.%d.%d %16s %32s"
#define NS_SCREEN_NO_DEBUG "Sorry, screen was compiled without -DDEBUG option."
/* if >0, force an update every NS_SCREEN_UPD_FREQ seconds.
a bit of a last resort. */
#define NS_SCREEN_UPD_FREQ 0
/* should be 1s */
#define NS_INIT_DELAY 1
@ -79,7 +75,7 @@
#define NS_MENU_TITLE "Escreen"
/* prefix for debug info */
#define NS_PREFIX "libscream::"
#define NS_PREFIX "screamClient::"

View File

@ -41,6 +41,12 @@ static const char cvs_ident[] = "$Id$";
#include "profile.h"
#include "term.h"
#ifdef ESCREEN
# include "screamcfg.h"
#endif
static int pb = 0;
/* These arrays store the text and rendering info that were last drawn to the screen. */
static text_t **drawn_text = NULL;
static rend_t **drawn_rend = NULL;
@ -177,8 +183,7 @@ scr_reset(void)
buf_rend = CALLOC(rend_t *, total_rows);
drawn_rend = CALLOC(rend_t *, TermWin.nrow);
swap.rend = CALLOC(rend_t *, TermWin.nrow);
D_SCREEN(("screen.text == %8p, screen.rend == %8p, swap.text == %8p, swap.rend == %8p\n", screen.text, screen.rend, swap.text,
swap.rend));
D_SCREEN(("screen.text == %8p, screen.rend == %8p, swap.text == %8p, swap.rend == %8p\n", screen.text, screen.rend, swap.text, swap.rend));
for (i = 0; i < TermWin.nrow; i++) {
j = i + TermWin.saveLines;
@ -221,8 +226,7 @@ scr_reset(void)
buf_rend = REALLOC(buf_rend, total_rows * sizeof(rend_t *));
drawn_rend = REALLOC(drawn_rend, TermWin.nrow * sizeof(rend_t *));
swap.rend = REALLOC(swap.rend, TermWin.nrow * sizeof(rend_t *));
D_SCREEN(("screen.text == %8p, screen.rend == %8p, swap.text == %8p, swap.rend == %8p\n", screen.text, screen.rend, swap.text,
swap.rend));
D_SCREEN(("screen.text == %8p, screen.rend == %8p, swap.text == %8p, swap.rend == %8p\n", screen.text, screen.rend, swap.text, swap.rend));
/* we have fewer rows so fix up number of scrolled lines */
UPPER_BOUND(screen.row, TermWin.nrow - 1);
@ -238,8 +242,7 @@ scr_reset(void)
buf_rend = REALLOC(buf_rend, total_rows * sizeof(rend_t *));
drawn_rend = REALLOC(drawn_rend, TermWin.nrow * sizeof(rend_t *));
swap.rend = REALLOC(swap.rend, TermWin.nrow * sizeof(rend_t *));
D_SCREEN(("screen.text == %8p, screen.rend == %8p, swap.text == %8p, swap.rend == %8p\n", screen.text, screen.rend, swap.text,
swap.rend));
D_SCREEN(("screen.text == %8p, screen.rend == %8p, swap.text == %8p, swap.rend == %8p\n", screen.text, screen.rend, swap.text, swap.rend));
k = MIN(TermWin.nscrolled, TermWin.nrow - prev_nrow);
for (i = prev_total_rows; i < total_rows - k; i++) {
@ -1477,8 +1480,7 @@ scr_expose(int x, int y, int width, int height)
rect_end.row = Pixel2Row(y + height + TermWin.fheight - 1);
BOUND(rect_end.row, 0, nr);
D_SCREEN(("scr_expose(x:%d, y:%d, w:%d, h:%d) area (c:%d,r:%d)-(c:%d,r:%d)\n", x, y, width, height, rect_beg.col, rect_beg.row,
rect_end.col, rect_end.row));
D_SCREEN(("scr_expose(x:%d, y:%d, w:%d, h:%d) area (c:%d,r:%d)-(c:%d,r:%d)\n", x, y, width, height, rect_beg.col, rect_beg.row, rect_end.col, rect_end.row));
for (i = rect_beg.row; i <= rect_end.row; i++) {
MEMSET(&(drawn_text[i][rect_beg.col]), 0, rect_end.col - rect_beg.col + 1);
@ -1624,6 +1626,7 @@ scr_refresh(int type)
int (*draw_string) (), (*draw_image_string) ();
register int low_x = 99999, low_y = 99999, high_x = 0, high_y = 0;
Drawable draw_buffer;
#ifndef NO_BOLDFONT
int bfont = 0; /* we've changed font to bold font */
#endif
@ -2028,12 +2031,10 @@ scr_refresh(int type)
gcmask |= (GCForeground | GCBackground);
XChangeGC(Xdisplay, TermWin.gc, gcmask, &gcvalue);
if (font->ascent < ascent) {
XFillRectangle(Xdisplay, draw_buffer, TermWin.gc, xpixel,
Row2Pixel(row), Width2Pixel(len), ascent - font->ascent);
XFillRectangle(Xdisplay, draw_buffer, TermWin.gc, xpixel, Row2Pixel(row), Width2Pixel(len), ascent - font->ascent);
}
if (font->descent < descent) {
XFillRectangle(Xdisplay, draw_buffer, TermWin.gc, xpixel,
Row2Pixel(row) + ascent + font->descent, Width2Pixel(len), descent - font->descent);
XFillRectangle(Xdisplay, draw_buffer, TermWin.gc, xpixel, Row2Pixel(row) + ascent + font->descent, Width2Pixel(len), descent - font->descent);
}
SWAP_IT(gcvalue.foreground, gcvalue.background, ltmp);
XChangeGC(Xdisplay, TermWin.gc, gcmask, &gcvalue);
@ -2099,22 +2100,18 @@ scr_refresh(int type)
#endif
}
if (buffer_pixmap) {
D_SCREEN(("Update box dimensions: from (%d, %d) to (%d, %d). Dimensions %dx%d\n", low_x, low_y, high_x, high_y,
high_x - low_x + 1, high_y - low_y + 1));
D_SCREEN(("Update box dimensions: from (%d, %d) to (%d, %d). Dimensions %dx%d\n", low_x, low_y, high_x, high_y, high_x - low_x + 1, high_y - low_y + 1));
XClearArea(Xdisplay, TermWin.vt, low_x, low_y, high_x - low_x + 1, high_y - low_y + 1, False);
if (fshadow.shadow[SHADOW_TOP_LEFT] || fshadow.shadow[SHADOW_BOTTOM_LEFT]) {
XCopyArea(Xdisplay, pmap, buffer_pixmap, TermWin.gc, TermWin.internalBorder - 1, 0,
1, TermWin_TotalHeight() - 1, TermWin.internalBorder - 1, 0);
XCopyArea(Xdisplay, pmap, buffer_pixmap, TermWin.gc, TermWin.internalBorder - 1, 0, 1, TermWin_TotalHeight() - 1, TermWin.internalBorder - 1, 0);
XClearArea(Xdisplay, TermWin.vt, TermWin.internalBorder - 1, 0, 1, TermWin_TotalHeight() - 1, False);
}
if (fshadow.shadow[SHADOW_TOP_RIGHT] || fshadow.shadow[SHADOW_BOTTOM_RIGHT] || boldlast) {
XCopyArea(Xdisplay, pmap, buffer_pixmap, TermWin.gc, TermWin_TotalWidth() - 2, 0,
1, TermWin_TotalHeight() - 1, TermWin_TotalWidth() - 2, 0);
XCopyArea(Xdisplay, pmap, buffer_pixmap, TermWin.gc, TermWin_TotalWidth() - 2, 0, 1, TermWin_TotalHeight() - 1, TermWin_TotalWidth() - 2, 0);
XClearArea(Xdisplay, TermWin.vt, TermWin_TotalWidth() - 2, 0, 1, TermWin_TotalHeight() - 1, False);
}
if (fshadow.shadow[SHADOW_TOP_LEFT] || fshadow.shadow[SHADOW_TOP_RIGHT]) {
XCopyArea(Xdisplay, pmap, buffer_pixmap, TermWin.gc, 0, TermWin.internalBorder - 1,
TermWin_TotalWidth() - 1, 1, 0, TermWin.internalBorder - 1);
XCopyArea(Xdisplay, pmap, buffer_pixmap, TermWin.gc, 0, TermWin.internalBorder - 1, TermWin_TotalWidth() - 1, 1, 0, TermWin.internalBorder - 1);
XClearArea(Xdisplay, TermWin.vt, 0, TermWin.internalBorder - 1, TermWin_TotalWidth() - 1, 1, False);
}
if (fshadow.shadow[SHADOW_BOTTOM_LEFT] || fshadow.shadow[SHADOW_BOTTOM_RIGHT]) {
@ -2409,9 +2406,7 @@ selection_fetch(Window win, unsigned prop, int delete)
return;
}
for (nread = 0, bytes_after = 1; bytes_after > 0;) {
if ((XGetWindowProperty
(Xdisplay, win, prop, (nread / 4), PROP_SIZE, delete, AnyPropertyType, &actual_type, &actual_fmt, &nitems, &bytes_after,
&data) != Success)
if ((XGetWindowProperty(Xdisplay, win, prop, (nread / 4), PROP_SIZE, delete, AnyPropertyType, &actual_type, &actual_fmt, &nitems, &bytes_after, &data) != Success)
|| (actual_type == None) || (data == NULL)) {
D_SELECT(("Unable to fetch the value of property %d from window 0x%08x\n", (int) prop, (int) win));
if (data != NULL) {
@ -2420,8 +2415,7 @@ selection_fetch(Window win, unsigned prop, int delete)
return;
}
nread += nitems;
D_SELECT(("Got selection info: Actual type %d (format %d), %lu items at 0x%08x, %lu bytes left over.\n",
(int) actual_type, actual_fmt, nitems, data, bytes_after));
D_SELECT(("Got selection info: Actual type %d (format %d), %lu items at 0x%08x, %lu bytes left over.\n", (int) actual_type, actual_fmt, nitems, data, bytes_after));
if (nitems == 0) {
D_SELECT(("Retrieval of incremental selection complete.\n"));
@ -3258,8 +3252,7 @@ selection_send(XSelectionRequestEvent * rq)
target_list[0] = (Atom32) props[PROP_SELECTION_TARGETS];
target_list[1] = (Atom32) XA_STRING;
XChangeProperty(Xdisplay, rq->requestor, rq->property, rq->target,
(8 * sizeof(target_list[0])), PropModeReplace,
(unsigned char *) target_list, (sizeof(target_list) / sizeof(target_list[0])));
(8 * sizeof(target_list[0])), PropModeReplace, (unsigned char *) target_list, (sizeof(target_list) / sizeof(target_list[0])));
ev.xselection.property = rq->property;
#if defined(MULTI_CHARSET) && defined(HAVE_X11_XMU_ATOMS_H)
} else if (rq->target == XA_TEXT(Xdisplay) || rq->target == XA_COMPOUND_TEXT(Xdisplay)) {
@ -3271,8 +3264,7 @@ selection_send(XSelectionRequestEvent * rq)
xtextp.nitems = 0;
if (XmbTextListToTextProperty(Xdisplay, l, 1, XCompoundTextStyle, &xtextp) == Success) {
if (xtextp.nitems > 0 && xtextp.value != NULL) {
XChangeProperty(Xdisplay, rq->requestor, rq->property, XA_COMPOUND_TEXT(Xdisplay), 8, PropModeReplace, xtextp.value,
xtextp.nitems);
XChangeProperty(Xdisplay, rq->requestor, rq->property, XA_COMPOUND_TEXT(Xdisplay), 8, PropModeReplace, xtextp.value, xtextp.nitems);
ev.xselection.property = rq->property;
}
}
@ -3284,6 +3276,30 @@ selection_send(XSelectionRequestEvent * rq)
XSendEvent(Xdisplay, rq->requestor, False, 0, &ev);
}
void /* drag report as used by the "twin" program */
mouse_drag_report(XButtonEvent * ev)
{
int button_number, key_state, x = Pixel2Col(ev->x), y = Pixel2Row(ev->y);
switch (ev->button) {
case AnyButton: /* Button release */
button_number = pb + Button1; /* yeah, yeah */
break;
case Button1: /* Button press */
case Button2:
case Button3:
pb = button_number = ev->button - Button1;
break;
default: /* Wheel mouse */
button_number = 64 + ev->button - Button3 - 1;
break;
}
key_state = ((ev->state & (ShiftMask | ControlMask))
+ ((ev->state & Mod1Mask) ? 2 : 0));
tt_printf((unsigned char *) "\033[5M%c%c%c%c%c",
(32 + button_number + (key_state << 2)), (32 + (x & 0x7f) + 1), (32 + ((x >> 7) & 0x7f) + 1), (32 + (y & 0x7f) + 1), (32 + ((y >> 7) & 0x7f) + 1));
}
void
mouse_report(XButtonEvent * ev)
{
@ -3296,7 +3312,7 @@ mouse_report(XButtonEvent * ev)
case Button1: /* Button press */
case Button2:
case Button3:
button_number = ev->button - Button1;
pb = button_number = ev->button - Button1;
break;
default: /* Wheel mouse */
button_number = 64 + ev->button - Button3 - 1;
@ -3304,8 +3320,7 @@ mouse_report(XButtonEvent * ev)
}
key_state = ((ev->state & (ShiftMask | ControlMask))
+ ((ev->state & Mod1Mask) ? 2 : 0));
tt_printf((unsigned char *) "\033[M%c%c%c",
(32 + button_number + (key_state << 2)), (32 + Pixel2Col(ev->x) + 1), (32 + Pixel2Row(ev->y) + 1));
tt_printf((unsigned char *) "\033[M%c%c%c", (32 + button_number + (key_state << 2)), (32 + Pixel2Col(ev->x) + 1), (32 + Pixel2Row(ev->y) + 1));
}
void
@ -3366,27 +3381,13 @@ xim_get_position(XPoint * pos)
#endif
#ifdef ESCREEN
# ifdef NS_HAVE_SCREEN
void
parse_screen_status_if_necessary(void)
{
#if 0
static int hc = 0;
#endif
ns_parse_screen(TermWin.screen, (TermWin.screen_pending > 1), TermWin.ncol, screen.text[TermWin.nrow + TermWin.saveLines - 1]);
if (TermWin.screen_pending > 1)
TermWin.screen_pending = 0;
#if 0
{
FILE *fh;
int c;
if ((fh = fopen("Escreen.log", "a"))) {
for (c = 0; c < 8; c++)
if (strcmp(drawn_text[c], drawn_text[c + 1]))
fprintf(fh, "%2d \"%s\"\n", c, drawn_text[c]);
fclose(fh);
}
}
# endif
}
#endif

View File

@ -302,6 +302,7 @@ extern void selection_extend_colrow(int, int, int, int);
extern void selection_rotate(int, int);
extern void selection_send(XSelectionRequestEvent *);
extern void mouse_report(XButtonEvent *);
extern void mouse_drag_report(XButtonEvent *);
extern void mouse_tracking(int, int, int, int, int);
extern void debug_colors(void);
#ifdef MULTI_CHARSET

View File

@ -54,11 +54,13 @@ scrollbar_t scrollbar = {
0, 0,
0, 0
};
#ifdef SCROLLBAR_BUTTON_CONTINUAL_SCROLLING
short scroll_arrow_delay;
#endif
static GC gc_scrollbar;
static short last_top = 0, last_bot = 0;
#ifdef XTERM_SCROLLBAR
static GC gc_stipple, gc_border;
static unsigned char xterm_sb_bits[] = { 0xaa, 0x0a, 0x55, 0x05 }; /* 12x2 bitmap */
@ -216,8 +218,7 @@ sb_handle_button_press(event_t *ev)
#endif /* NO_SCROLLBAR_REPORT */
{
D_EVENTS(("ButtonPress event for window 0x%08x at %d, %d\n", ev->xany.window, ev->xbutton.x, ev->xbutton.y));
D_EVENTS((" up [0x%08x], down [0x%08x], anchor [0x%08x], trough [0x%08x]\n", scrollbar.up_win, scrollbar.dn_win, scrollbar.sa_win,
scrollbar.win));
D_EVENTS((" up [0x%08x], down [0x%08x], anchor [0x%08x], trough [0x%08x]\n", scrollbar.up_win, scrollbar.dn_win, scrollbar.sa_win, scrollbar.win));
if (scrollbar_win_is_uparrow(ev->xany.window)) {
scrollbar_draw_uparrow(IMAGE_STATE_CLICKED, 0);
@ -332,8 +333,7 @@ sb_handle_motion_notify(event_t *ev)
return 1;
D_EVENTS(("MotionNotify event for window 0x%08x\n", ev->xany.window));
D_EVENTS((" up [0x%08x], down [0x%08x], anchor [0x%08x], trough [0x%08x]\n", scrollbar.up_win, scrollbar.dn_win, scrollbar.sa_win,
scrollbar.win));
D_EVENTS((" up [0x%08x], down [0x%08x], anchor [0x%08x], trough [0x%08x]\n", scrollbar.up_win, scrollbar.dn_win, scrollbar.sa_win, scrollbar.win));
if ((scrollbar_win_is_trough(ev->xany.window) || scrollbar_win_is_anchor(ev->xany.window)) && scrollbar_is_moving()) {
Window unused_root, unused_child;
@ -341,8 +341,7 @@ sb_handle_motion_notify(event_t *ev)
unsigned int unused_mask;
while (XCheckTypedWindowEvent(Xdisplay, scrollbar.win, MotionNotify, ev));
XQueryPointer(Xdisplay, scrollbar.win, &unused_root, &unused_child, &unused_root_x, &unused_root_y, &(ev->xbutton.x),
&(ev->xbutton.y), &unused_mask);
XQueryPointer(Xdisplay, scrollbar.win, &unused_root, &unused_child, &unused_root_x, &unused_root_y, &(ev->xbutton.x), &(ev->xbutton.y), &unused_mask);
scr_move_to(scrollbar_position(ev->xbutton.y) - button_state.mouse_offset, scrollbar_scrollarea_height());
refresh_count = refresh_limit = 0;
scr_refresh(refresh_type);
@ -558,11 +557,9 @@ scrollbar_draw_anchor(unsigned char image_state, unsigned char force_modes)
XSetForeground(Xdisplay, gc_top, get_top_shadow_color(images[image_sa].current->bg, ""));
XSetForeground(Xdisplay, gc_bottom, get_bottom_shadow_color(images[image_sa].current->bg, ""));
if (scrollbar_anchor_is_pressed()) {
draw_shadow(scrollbar.sa_win, gc_bottom, gc_top, 0, 0, scrollbar_anchor_width(), scrollbar_anchor_height(),
scrollbar_get_shadow());
draw_shadow(scrollbar.sa_win, gc_bottom, gc_top, 0, 0, scrollbar_anchor_width(), scrollbar_anchor_height(), scrollbar_get_shadow());
} else {
draw_shadow(scrollbar.sa_win, gc_top, gc_bottom, 0, 0, scrollbar_anchor_width(), scrollbar_anchor_height(),
scrollbar_get_shadow());
draw_shadow(scrollbar.sa_win, gc_top, gc_bottom, 0, 0, scrollbar_anchor_width(), scrollbar_anchor_height(), scrollbar_get_shadow());
}
}
#endif
@ -603,8 +600,7 @@ scrollbar_draw_anchor(unsigned char image_state, unsigned char force_modes)
UPPER_BOUND(th, scrollbar_anchor_height() >> 1);
D_SCROLLBAR(("Thumb width/height has been calculated at %hux%hu.\n", tw, th));
if ((tw > 0) && (th > 0)) {
paste_simage(images[image_st].current, image_st, scrollbar.sa_win, pmap,
(scrollbar_anchor_width() - tw) >> 1, (scrollbar_anchor_height() - th) >> 1, tw, th);
paste_simage(images[image_st].current, image_st, scrollbar.sa_win, pmap, (scrollbar_anchor_width() - tw) >> 1, (scrollbar_anchor_height() - th) >> 1, tw, th);
XSetWindowBackgroundPixmap(Xdisplay, scrollbar.sa_win, pmap);
XClearWindow(Xdisplay, scrollbar.sa_win);
IMLIB_FREE_PIXMAP(pmap);
@ -668,8 +664,7 @@ scrollbar_draw_trough(unsigned char image_state, unsigned char force_modes)
XFillRectangle(Xdisplay, scrollbar.win, gc_scrollbar, 0, 0, scrollbar_trough_width(), scrollbar_trough_height());
XSetForeground(Xdisplay, gc_top, get_top_shadow_color(images[image_sb].current->bg, ""));
XSetForeground(Xdisplay, gc_bottom, get_bottom_shadow_color(images[image_sb].current->bg, ""));
draw_shadow(scrollbar.win, gc_bottom, gc_top, 0, 0, scrollbar_trough_width(), scrollbar_trough_height(),
scrollbar_get_shadow());
draw_shadow(scrollbar.win, gc_bottom, gc_top, 0, 0, scrollbar_trough_width(), scrollbar_trough_height(), scrollbar_get_shadow());
}
return;
}
@ -693,8 +688,7 @@ scrollbar_init(int width, int height)
Attributes.override_redirect = TRUE;
Attributes.save_under = TRUE;
cursor = XCreateFontCursor(Xdisplay, XC_left_ptr);
mask = ExposureMask | EnterWindowMask | LeaveWindowMask | ButtonPressMask | ButtonReleaseMask
| Button1MotionMask | Button2MotionMask | Button3MotionMask;
mask = ExposureMask | EnterWindowMask | LeaveWindowMask | ButtonPressMask | ButtonReleaseMask | Button1MotionMask | Button2MotionMask | Button3MotionMask;
scrollbar_calc_size(width, height);
scrollbar.anchor_top = scrollbar.scrollarea_start;
scrollbar.anchor_bottom = scrollbar.scrollarea_end;
@ -725,8 +719,7 @@ scrollbar_init(int width, int height)
/* The anchor window */
scrollbar.sa_win =
XCreateWindow(Xdisplay, scrollbar.win, scrollbar_get_shadow(), scrollbar.anchor_top, scrollbar_anchor_width(),
scrollbar_anchor_height(), 0, Xdepth, InputOutput, CopyFromParent, CWOverrideRedirect | CWSaveUnder | CWColormap,
&Attributes);
scrollbar_anchor_height(), 0, Xdepth, InputOutput, CopyFromParent, CWOverrideRedirect | CWSaveUnder | CWColormap, &Attributes);
XSelectInput(Xdisplay, scrollbar.sa_win, mask);
XMapWindow(Xdisplay, scrollbar.sa_win);
D_SCROLLBAR(("Created scrollbar anchor window 0x%08x\n", scrollbar.sa_win));
@ -776,6 +769,11 @@ void
scrollbar_calc_size(int width, int height)
{
D_SCROLLBAR(("scrollbar_calc_size(%d, %d), type == %u\n", width, height, scrollbar_get_type()));
#ifdef ESCREEN
if (TermWin.screen && TermWin.screen->backend != NS_MODE_NONE) {
UPPER_BOUND(height, Height2Pixel(TermWin.nrow));
}
#endif
scrollbar.scrollarea_start = 0;
scrollbar.scrollarea_end = height;
scrollbar.up_arrow_loc = 0;
@ -800,8 +798,7 @@ scrollbar_calc_size(int width, int height)
scrollbar.height = height - (2 * scrollbar_get_shadow());
scrollbar.win_width = scrollbar.width + (2 * scrollbar_get_shadow());
scrollbar.win_height = height;
D_X11((" -> New scrollbar width/height == %hux%hu, win_width/height == %hux%hu\n", scrollbar.width, scrollbar.height,
scrollbar.win_width, scrollbar.win_height));
D_X11((" -> New scrollbar width/height == %hux%hu, win_width/height == %hux%hu\n", scrollbar.width, scrollbar.height, scrollbar.win_width, scrollbar.win_height));
D_X11((" -> New scroll area start/end == %hu - %hu, up_arrow_loc == %hu, down_arrow_loc == %hu\n", scrollbar.scrollarea_start,
scrollbar.scrollarea_end, scrollbar.up_arrow_loc, scrollbar.down_arrow_loc));
}
@ -816,8 +813,7 @@ scrollbar_resize(int width, int height)
D_SCROLLBAR(("scrollbar_resize(%d, %d)\n", width, height));
scrollbar_calc_size(width, height);
D_SCROLLBAR((" -> XMoveResizeWindow(Xdisplay, 0x%08x, %d, y, %d, %d)\n", scrollbar.win,
((Options & Opt_scrollbar_right) ? (width - scrollbar_trough_width()) : (0)), scrollbar_trough_width(),
scrollbar.win_height));
((Options & Opt_scrollbar_right) ? (width - scrollbar_trough_width()) : (0)), scrollbar_trough_width(), scrollbar.win_height));
XMoveResizeWindow(Xdisplay, scrollbar.win, ((Options & Opt_scrollbar_right) ? (width - scrollbar_trough_width()) : (0)),
bbar_calc_docked_height(BBAR_DOCKED_TOP), scrollbar_trough_width(), scrollbar.win_height);
scrollbar_draw_trough(IMAGE_STATE_CURRENT, MODE_MASK);

View File

@ -77,6 +77,7 @@ eterm_bootstrap(int argc, char *argv[])
int i;
char *val;
static char windowid_string[20], *display_string, *term_string; /* "WINDOWID=\0" = 10 chars, UINT_MAX = 10 chars */
orig_argv0 = argv[0];
/* Security enhancements -- mej */
@ -156,8 +157,7 @@ eterm_bootstrap(int argc, char *argv[])
sprintf(tmp, "ETERM_THEME_ROOT=%s", theme_dir);
putenv(tmp);
}
if ((user_dir = conf_parse_theme(&rs_theme, (rs_config_file ? rs_config_file : USER_CFG),
(PARSE_TRY_USER_THEME | PARSE_TRY_NO_THEME))) != NULL) {
if ((user_dir = conf_parse_theme(&rs_theme, (rs_config_file ? rs_config_file : USER_CFG), (PARSE_TRY_USER_THEME | PARSE_TRY_NO_THEME))) != NULL) {
char *tmp;
D_OPTIONS(("conf_parse_theme() returned \"%s\"\n", user_dir));
@ -204,15 +204,6 @@ eterm_bootstrap(int argc, char *argv[])
p = p ? (p + 1) : orig_argv0;
if (rs_url || !strncasecmp(ESCREEN_PREFIX, p, strlen(ESCREEN_PREFIX)))
TermWin.screen_mode = NS_MODE_SCREEN;
# ifdef NS_DEBUG
if (!strncasecmp(ESCREEN_PREFIX, p, strlen(ESCREEN_PREFIX)))
fputs("You called me \"Escreen\"!\n", stderr);
else if (!strncasecmp(ETERM_PREFIX, p, strlen(ETERM_PREFIX)))
fputs("You called me \"Eterm\"!\n", stderr);
else
fputs("Stop calling me funky names!\n", stderr);
fprintf(stderr, "Escreen mode is %d (%d rows, URL is \"%s\")\n", TermWin.screen_mode, TermWin.nrow, rs_url);
# endif
}
#endif

View File

@ -200,6 +200,7 @@ lookup_key(XEvent * ev)
static int numlock_state = 0;
int ctrl, meta, shft, len;
KeySym keysym;
#ifdef USE_XIM
int valid_keysym = 0;
static unsigned char short_buf[256];
@ -244,15 +245,13 @@ lookup_key(XEvent * ev)
} else {
/* No XIM input context. Do it the normal way. */
len = XLookupString(&ev->xkey, (char *) kbuf, sizeof(short_buf), &keysym, NULL);
D_TTY(("XLookupString() gave us len %d, keysym \"%s\" (0x%04x), and buffer \"%s\"\n",
len, XKeysymToString(keysym), keysym, safe_print_string(kbuf, len)));
D_TTY(("XLookupString() gave us len %d, keysym \"%s\" (0x%04x), and buffer \"%s\"\n", len, XKeysymToString(keysym), keysym, safe_print_string(kbuf, len)));
valid_keysym = 1;
}
#else /* USE_XIM */
/* Translate the key event into its corresponding string according to X. This also gets us a keysym. */
len = XLookupString(&ev->xkey, (char *) kbuf, sizeof(kbuf), &keysym, NULL);
D_TTY(("XLookupString() gave us len %d, keysym \"%s\" (0x%04x), and buffer \"%s\"\n",
len, XKeysymToString(keysym), keysym, safe_print_string(kbuf, len)));
D_TTY(("XLookupString() gave us len %d, keysym \"%s\" (0x%04x), and buffer \"%s\"\n", len, XKeysymToString(keysym), keysym, safe_print_string(kbuf, len)));
/* If there is no string and it's a Latin2-7 character, replace it with the Latin1 character instead. */
if (!len && (keysym >= 0x0100) && (keysym < 0x0900)) {
@ -262,6 +261,7 @@ lookup_key(XEvent * ev)
#endif /* USE_XIM */
#ifdef ESCREEN
# ifdef NS_HAVE_SCREEN
if (escreen_escape) {
if (kbuf[0]) {
escreen_escape = 0;
@ -274,6 +274,7 @@ lookup_key(XEvent * ev)
LK_RET();
}
# endif
#endif
#ifdef USE_XIM
/* Don't do anything without a valid keysym. */
@ -811,8 +812,7 @@ sprintf((char *) kbuf,"\033[%02d~", (int)((n) + (keysym - fkey))); \
tt_write(&ch, 1);
}
D_TTY(("After handling: len %d, keysym \"%s\" (0x%04x), and buffer \"%s\"\n",
len, XKeysymToString(keysym), keysym, safe_print_string(kbuf, len)));
D_TTY(("After handling: len %d, keysym \"%s\" (0x%04x), and buffer \"%s\"\n", len, XKeysymToString(keysym), keysym, safe_print_string(kbuf, len)));
tt_write(kbuf, len); /* Send the resulting string to the child process */
LK_RET();
@ -1093,7 +1093,7 @@ process_csi_seq(void)
/* TODO: A different response should be sent depending on the value of
priv and of arg[0], but what should those reponses be? */
#ifndef NO_VT100_ANS
tt_printf(VT100_ANS);
tt_printf((unsigned char *) VT100_ANS);
#endif
break;
case 'd': /* Cursor to row n "\e[<n>d" */
@ -1373,8 +1373,7 @@ process_window_mode(unsigned int nargs, int args[])
BOUND(y, 1, scr->height / TermWin.fheight);
BOUND(x, 1, scr->width / TermWin.fwidth);
XResizeWindow(Xdisplay, TermWin.parent,
Width2Pixel(x) + 2 * TermWin.internalBorder + (scrollbar_is_visible()? scrollbar_trough_width() : 0),
Height2Pixel(y) + 2 * TermWin.internalBorder);
Width2Pixel(x) + 2 * TermWin.internalBorder + (scrollbar_is_visible()? scrollbar_trough_width() : 0), Height2Pixel(y) + 2 * TermWin.internalBorder);
break;
case 11:
break;
@ -1385,8 +1384,7 @@ process_window_mode(unsigned int nargs, int args[])
break;
case 14:
/* Store current width and height in x and y */
XGetGeometry(Xdisplay, TermWin.parent, &dummy_child, &dummy_x, &dummy_y, (unsigned int *) (&x), (unsigned int *) (&y),
&dummy_border, &dummy_depth);
XGetGeometry(Xdisplay, TermWin.parent, &dummy_child, &dummy_x, &dummy_y, (unsigned int *) (&x), (unsigned int *) (&y), &dummy_border, &dummy_depth);
snprintf(buff, sizeof(buff), "\033[4;%d;%dt", y, x);
tt_write((unsigned char *) buff, strlen(buff));
break;
@ -1536,6 +1534,7 @@ process_terminal_mode(int mode, int priv, unsigned int nargs, int arg[])
case 1001:
break; /* X11 mouse highlighting */
#endif
case 1010: /* Scroll to bottom on TTY output */
if (Options & Opt_home_on_output)
Options &= ~Opt_home_on_output;
@ -1803,6 +1802,7 @@ xterm_seq(int op, const char *str)
char *nstr, *tnstr, *valptr;
unsigned char eterm_seq_op;
XWMHints *wm_hints;
#ifdef PIXMAP_SUPPORT
unsigned char changed = 0, scaled = 0, which = 0;
char *color, *mod, *orig_tnstr;
@ -1958,8 +1958,7 @@ xterm_seq(int op, const char *str)
if ((valptr = (char *) strsep(&tnstr, ";")) == NULL) {
break;
}
D_CMD(("Modifying the %s attribute of the %s color modifier of the %s image to be %s\n", mod, color,
get_image_type(which), valptr));
D_CMD(("Modifying the %s attribute of the %s color modifier of the %s image to be %s\n", mod, color, get_image_type(which), valptr));
changed = 1;
# ifdef PIXMAP_OFFSET
if (image_mode_is(which, MODE_TRANS) && (desktop_pixmap != None)) {
@ -2307,8 +2306,7 @@ xterm_seq(int op, const char *str)
xev.message_type = props[PROP_DESKTOP];
xev.format = 32;
xev.data.l[0] = rs_desktop;
XChangeProperty(Xdisplay, TermWin.parent, xev.message_type, XA_CARDINAL, 32, PropModeReplace,
(unsigned char *) &rs_desktop, 1);
XChangeProperty(Xdisplay, TermWin.parent, xev.message_type, XA_CARDINAL, 32, PropModeReplace, (unsigned char *) &rs_desktop, 1);
XSendEvent(Xdisplay, Xroot, False, SubstructureNotifyMask, (XEvent *) & xev);
}
break;

View File

@ -62,8 +62,7 @@ timer_add(unsigned long msec, timer_handler_t handler, void *data)
timer->handler = handler;
timer->data = data;
timer->next = NULL;
D_TIMER(("Added timer. Timer set to %lu/%lu with handler %8p and data %8p\n", timer->time.tv_sec, timer->time.tv_usec, timer->handler,
timer->data));
D_TIMER(("Added timer. Timer set to %lu/%lu with handler %8p and data %8p\n", timer->time.tv_sec, timer->time.tv_usec, timer->handler, timer->data));
return ((timerhdl_t) timer);
}

View File

@ -93,6 +93,7 @@ void
add_utmp_entry(const char *pty, const char *hostname, int fd)
{
struct passwd *pwent = getpwuid(my_ruid);
# ifdef HAVE_UTMPX_H
struct utmpx utmp;
struct utmp utmp2;

View File

@ -144,8 +144,7 @@ get_bottom_shadow_color(Pixel norm_color, const char *type)
xcol.blue /= 2;
if (!XAllocColor(Xdisplay, cmap, &xcol)) {
print_error("Unable to allocate \"%s\" (0x%08x: 0x%04x, 0x%04x, 0x%04x) in the color map.\n", type, xcol.pixel, xcol.red,
xcol.green, xcol.blue);
print_error("Unable to allocate \"%s\" (0x%08x: 0x%04x, 0x%04x, 0x%04x) in the color map.\n", type, xcol.pixel, xcol.red, xcol.green, xcol.blue);
xcol.pixel = PixColors[minColor];
}
return (xcol.pixel);
@ -177,8 +176,7 @@ get_top_shadow_color(Pixel norm_color, const char *type)
xcol.blue = MIN(white.blue, (xcol.blue * 7) / 5);
if (!XAllocColor(Xdisplay, cmap, &xcol)) {
print_error("Unable to allocate \"%s\" (0x%08x: 0x%04x, 0x%04x, 0x%04x) in the color map.\n", type, xcol.pixel, xcol.red,
xcol.green, xcol.blue);
print_error("Unable to allocate \"%s\" (0x%08x: 0x%04x, 0x%04x, 0x%04x) in the color map.\n", type, xcol.pixel, xcol.red, xcol.green, xcol.blue);
xcol.pixel = PixColors[WhiteColor];
}
return (xcol.pixel);
@ -208,9 +206,7 @@ get_color_by_name(const char *name, const char *fallback)
name = fallback;
if (name) {
if (!XParseColor(Xdisplay, cmap, name, &xcol)) {
print_warning
("Unable to resolve \"%s\" as a color name. This should never fail. Please repair/restore your RGB database.\n",
name);
print_warning("Unable to resolve \"%s\" as a color name. This should never fail. Please repair/restore your RGB database.\n", name);
return ((Pixel) - 1);
}
} else {
@ -223,8 +219,7 @@ get_color_by_name(const char *name, const char *fallback)
name = fallback;
if (name) {
if (!XAllocColor(Xdisplay, cmap, &xcol)) {
print_warning("Unable to allocate \"%s\" (0x%08x: 0x%04x, 0x%04x, 0x%04x) in the color map.\n", name, xcol.pixel, xcol.red,
xcol.green, xcol.blue);
print_warning("Unable to allocate \"%s\" (0x%08x: 0x%04x, 0x%04x, 0x%04x) in the color map.\n", name, xcol.pixel, xcol.red, xcol.green, xcol.blue);
return ((Pixel) - 1);
}
} else {
@ -249,12 +244,10 @@ get_color_by_pixel(Pixel pixel, Pixel fallback)
}
}
if (!XAllocColor(Xdisplay, cmap, &xcol)) {
print_warning("Unable to allocate 0x%08x (0x%04x, 0x%04x, 0x%04x) in the color map. Falling back on 0x%08x.\n", xcol.pixel,
xcol.red, xcol.green, xcol.blue, fallback);
print_warning("Unable to allocate 0x%08x (0x%04x, 0x%04x, 0x%04x) in the color map. Falling back on 0x%08x.\n", xcol.pixel, xcol.red, xcol.green, xcol.blue, fallback);
xcol.pixel = fallback;
if (!XAllocColor(Xdisplay, cmap, &xcol)) {
print_warning("Unable to allocate 0x%08x (0x%04x, 0x%04x, 0x%04x) in the color map.\n", xcol.pixel, xcol.red, xcol.green,
xcol.blue);
print_warning("Unable to allocate 0x%08x (0x%04x, 0x%04x, 0x%04x) in the color map.\n", xcol.pixel, xcol.red, xcol.green, xcol.blue);
return ((Pixel) 0);
}
}
@ -323,8 +316,7 @@ process_colors(void)
PixColors[unfocusedTopShadowColor] = get_top_shadow_color(images[image_sb].disabled->bg, "unfocusedTopShadowColor");
PixColors[menuBottomShadowColor] = get_bottom_shadow_color(images[image_menu].norm->bg, "menuBottomShadowColor");
PixColors[unfocusedMenuBottomShadowColor] =
get_bottom_shadow_color(images[image_menu].disabled->bg, "unfocusedMenuBottomShadowColor");
PixColors[unfocusedMenuBottomShadowColor] = get_bottom_shadow_color(images[image_menu].disabled->bg, "unfocusedMenuBottomShadowColor");
PixColors[menuTopShadowColor] = get_top_shadow_color(images[image_menu].norm->bg, "menuTopShadowColor");
PixColors[unfocusedMenuTopShadowColor] = get_top_shadow_color(images[image_menu].disabled->bg, "unfocusedMenuTopShadowColor");
}
@ -360,8 +352,7 @@ Create_Windows(int argc, char *argv[])
}
Attributes.colormap = cmap;
szHint.base_width =
(2 * TermWin.internalBorder + ((Options & Opt_scrollbar) ? (scrollbar_get_width() + (2 * scrollbar_get_shadow())) : 0));
szHint.base_width = (2 * TermWin.internalBorder + ((Options & Opt_scrollbar) ? (scrollbar_get_width() + (2 * scrollbar_get_shadow())) : 0));
szHint.base_height = (2 * TermWin.internalBorder) + bbar_calc_docked_height(BBAR_DOCKED);
flags = (rs_geometry ? XParseGeometry(rs_geometry, &x, &y, &width, &height) : 0);
@ -401,8 +392,7 @@ Create_Windows(int argc, char *argv[])
Attributes.background_pixel = PixColors[bgColor];
Attributes.border_pixel = PixColors[bgColor];
D_X11(("Size Hints: x %d, y %d. Width/Height: Base %dx%d, Minimum %dx%d, Current %dx%d, Increment %dx%d\n",
szHint.x, szHint.y, szHint.base_width, szHint.base_height, szHint.min_width, szHint.min_height,
szHint.width, szHint.height, szHint.width_inc, szHint.height_inc));
szHint.x, szHint.y, szHint.base_width, szHint.base_height, szHint.min_width, szHint.min_height, szHint.width, szHint.height, szHint.width_inc, szHint.height_inc));
TermWin.parent = XCreateWindow(Xdisplay, Xroot, szHint.x, szHint.y, szHint.width, szHint.height, 0, Xdepth, InputOutput,
#ifdef PREFER_24BIT
Xvisual,
@ -426,8 +416,7 @@ Create_Windows(int argc, char *argv[])
XSetWMProperties(Xdisplay, TermWin.parent, NULL, NULL, argv, argc, &szHint, &wmHint, &classHint);
XSelectInput(Xdisplay, Xroot, PropertyChangeMask);
XSelectInput(Xdisplay, TermWin.parent,
(KeyPressMask | FocusChangeMask | StructureNotifyMask | VisibilityChangeMask | PropertyChangeMask));
XSelectInput(Xdisplay, TermWin.parent, (KeyPressMask | FocusChangeMask | StructureNotifyMask | VisibilityChangeMask | PropertyChangeMask));
if (mwmhints.flags) {
prop = XInternAtom(Xdisplay, "_MOTIF_WM_HINTS", False);
XChangeProperty(Xdisplay, TermWin.parent, prop, prop, 32, PropModeReplace, (unsigned char *) &mwmhints, PROP_MWM_HINTS_ELEMENTS);
@ -449,11 +438,9 @@ Create_Windows(int argc, char *argv[])
cursor = XCreateFontCursor(Xdisplay, XC_left_ptr);
/* the vt window */
TermWin.x =
(((Options & Opt_scrollbar) && !(Options & Opt_scrollbar_right)) ? (scrollbar_get_width() + (2 * scrollbar_get_shadow())) : 0);
TermWin.x = (((Options & Opt_scrollbar) && !(Options & Opt_scrollbar_right)) ? (scrollbar_get_width() + (2 * scrollbar_get_shadow())) : 0);
TermWin.y = bbar_calc_docked_height(BBAR_DOCKED_TOP);
TermWin.vt =
XCreateWindow(Xdisplay, TermWin.parent, TermWin.x, TermWin.y, szHint.width, szHint.height, 0, Xdepth, InputOutput, CopyFromParent,
TermWin.vt = XCreateWindow(Xdisplay, TermWin.parent, TermWin.x, TermWin.y, szHint.width, szHint.height, 0, Xdepth, InputOutput, CopyFromParent,
CWBackPixel | CWBorderPixel | CWOverrideRedirect | CWColormap, &Attributes);
D_X11(("Created terminal window 0x%08x at %dx%d\n", TermWin.vt, TermWin.x, TermWin.y));
if (!(background_is_pixmap()) && !(Options & Opt_borderless)) {
@ -461,8 +448,7 @@ Create_Windows(int argc, char *argv[])
XClearWindow(Xdisplay, TermWin.vt);
}
XDefineCursor(Xdisplay, TermWin.vt, TermWin_cursor);
TermWin.mask =
(EnterWindowMask | LeaveWindowMask | ExposureMask | ButtonPressMask | ButtonReleaseMask | Button1MotionMask | Button3MotionMask);
TermWin.mask = (EnterWindowMask | LeaveWindowMask | ExposureMask | ButtonPressMask | ButtonReleaseMask | Button1MotionMask | Button2MotionMask | Button3MotionMask);
XSelectInput(Xdisplay, TermWin.vt, TermWin.mask);
/* If the user wants a specific desktop, tell the WM that */
@ -562,15 +548,13 @@ update_size_hints(void)
szHint.width_inc = TermWin.fwidth;
szHint.height_inc = TermWin.fheight;
D_X11(("Size Hints: base width/height == %lux%lu, width/height increment == %lux%lu\n", szHint.base_width, szHint.base_height,
szHint.width_inc, szHint.height_inc));
D_X11(("Size Hints: base width/height == %lux%lu, width/height increment == %lux%lu\n", szHint.base_width, szHint.base_height, szHint.width_inc, szHint.height_inc));
szHint.min_width = szHint.base_width + szHint.width_inc;
szHint.min_height = szHint.base_height + szHint.height_inc;
szHint.width = szHint.base_width + TermWin.width;
szHint.height = szHint.base_height + TermWin.height;
D_X11((" Minimum width/height == %lux%lu, width/height == %lux%lu\n",
szHint.min_width, szHint.min_height, szHint.width, szHint.height));
D_X11((" Minimum width/height == %lux%lu, width/height == %lux%lu\n", szHint.min_width, szHint.min_height, szHint.width, szHint.height));
szHint.flags = PMinSize | PResizeInc | PBaseSize;
XSetWMNormalHints(Xdisplay, TermWin.parent, &szHint);

View File

@ -55,8 +55,7 @@ set_pixmap_property(Pixmap p)
if (prop_root != None && prop_esetroot != None) {
XGetWindowProperty(Xdisplay, Xroot, prop_root, 0L, 1L, False, AnyPropertyType, &type, &format, &length, &after, &data_root);
if (type == XA_PIXMAP) {
XGetWindowProperty(Xdisplay, Xroot, prop_esetroot, 0L, 1L, False, AnyPropertyType,
&type, &format, &length, &after, &data_esetroot);
XGetWindowProperty(Xdisplay, Xroot, prop_esetroot, 0L, 1L, False, AnyPropertyType, &type, &format, &length, &after, &data_esetroot);
if (data_root && data_esetroot) {
if (debug) {
fprintf(stderr, "%s:%d: set_pixmap_property(0x%08x): data_root == 0x%08x, data_esetroot == 0x%08x\n", __FILE__,
@ -64,8 +63,7 @@ set_pixmap_property(Pixmap p)
}
if (type == XA_PIXMAP && *((Pixmap *) data_root) == *((Pixmap *) data_esetroot)) {
if (debug) {
fprintf(stderr, "%s:%d: set_pixmap_property(0x%08x): XKillClient() is being called.\n", __FILE__, __LINE__,
(unsigned int) p);
fprintf(stderr, "%s:%d: set_pixmap_property(0x%08x): XKillClient() is being called.\n", __FILE__, __LINE__, (unsigned int) p);
}
XKillClient(Xdisplay, *((Pixmap *) data_root));
}
@ -84,8 +82,7 @@ set_pixmap_property(Pixmap p)
XChangeProperty(Xdisplay, Xroot, prop_root, XA_PIXMAP, 32, PropModeReplace, (unsigned char *) &p, 1);
XChangeProperty(Xdisplay, Xroot, prop_esetroot, XA_PIXMAP, 32, PropModeReplace, (unsigned char *) &p, 1);
if (debug) {
fprintf(stderr, "%s:%d: set_pixmap_property(0x%08x): _XROOTPMAP_ID and ESETROOT_PMAP_ID set to 0x%08x.\n", __FILE__, __LINE__,
(unsigned int) p, (unsigned int) p);
fprintf(stderr, "%s:%d: set_pixmap_property(0x%08x): _XROOTPMAP_ID and ESETROOT_PMAP_ID set to 0x%08x.\n", __FILE__, __LINE__, (unsigned int) p, (unsigned int) p);
}
XSetCloseDownMode(Xdisplay, RetainPermanent);
XFlush(Xdisplay);
@ -147,15 +144,13 @@ main(int argc, char *argv[])
if (debug) {
fprintf(stderr, "%s:%d: Display name is \"%s\"\n", __FILE__, __LINE__, displayname ? displayname : "(nil)");
fprintf(stderr, "%s:%d: Background color name is \"%s\"\n", __FILE__, __LINE__, bgcolor ? bgcolor : "(nil)");
fprintf(stderr, "%s:%d: Image will be %s\n", __FILE__, __LINE__,
scale ? "scaled" : (center ? "centered" : (fit ? "fit" : "tiled")));
fprintf(stderr, "%s:%d: Image will be %s\n", __FILE__, __LINE__, scale ? "scaled" : (center ? "centered" : (fit ? "fit" : "tiled")));
fprintf(stderr, "%s:%d: Image file is %s\n", __FILE__, __LINE__, fname ? fname : "(nil)");
}
if (!displayname) {
displayname = getenv("DISPLAY");
if (debug) {
fprintf(stderr, "%s:%d: Display name set to %s via getenv(\"DISPLAY\")\n", __FILE__, __LINE__,
displayname ? displayname : "(nil)");
fprintf(stderr, "%s:%d: Display name set to %s via getenv(\"DISPLAY\")\n", __FILE__, __LINE__, displayname ? displayname : "(nil)");
}
}
if (!displayname) {