Mon Jul 10 14:28:28 PDT 2000 Michael Jennings <mej@eterm.org>
Two more patches from Marius Gedminas <mgedmin@takas.lt>. The first one allows for customization of the message displayed when Eterm goes into pause mode. There are actually two; one goes in the titlebar, and the other is displayed in the text window. His second patch makes Eterm's behavior a little smarter when it resizes itself. It tries to figure out which quadrant of the screen it's on and resizes in the most appropriate direction. (For example, Ctrl-GreaterThan on an Eterm in the lower right corner will cause the upper left corner of the Eterm to move; the lower right corner will stay put.) Thanks again to Marius for saving me time by sending patches. :-) SVN revision: 2912
This commit is contained in:
parent
6c2fb97641
commit
7dc3b7cafb
17
ChangeLog
17
ChangeLog
|
@ -3793,3 +3793,20 @@ Fri Jul 7 11:45:49 PDT 2000 Michael Jennings <mej@eterm.org>
|
||||||
Some more bits from last night's work.
|
Some more bits from last night's work.
|
||||||
|
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
|
Mon Jul 10 14:28:28 PDT 2000 Michael Jennings <mej@eterm.org>
|
||||||
|
|
||||||
|
Two more patches from Marius Gedminas <mgedmin@takas.lt>. The first
|
||||||
|
one allows for customization of the message displayed when Eterm goes
|
||||||
|
into pause mode. There are actually two; one goes in the titlebar,
|
||||||
|
and the other is displayed in the text window.
|
||||||
|
|
||||||
|
His second patch makes Eterm's behavior a little smarter when it
|
||||||
|
resizes itself. It tries to figure out which quadrant of the screen
|
||||||
|
it's on and resizes in the most appropriate direction. (For example,
|
||||||
|
Ctrl-GreaterThan on an Eterm in the lower right corner will cause the
|
||||||
|
upper left corner of the Eterm to move; the lower right corner will
|
||||||
|
stay put.)
|
||||||
|
|
||||||
|
Thanks again to Marius for saving me time by sending patches. :-)
|
||||||
|
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
|
|
@ -2437,9 +2437,14 @@ cmd_getc(void)
|
||||||
if (paused == 1 && cmd_fd == -1) {
|
if (paused == 1 && cmd_fd == -1) {
|
||||||
const char *done = " -- Task Finished, ESC to exit";
|
const char *done = " -- Task Finished, ESC to exit";
|
||||||
|
|
||||||
append_to_title(done);
|
append_to_title(rs_finished_title ? rs_finished_title : done);
|
||||||
append_to_icon_name(done);
|
append_to_icon_name(rs_finished_title ? rs_finished_title : done);
|
||||||
|
|
||||||
paused++;
|
paused++;
|
||||||
|
|
||||||
|
if (rs_finished_text) {
|
||||||
|
cmd_write((unsigned char *) rs_finished_text, strlen(rs_finished_text));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef SCROLLBAR_BUTTON_CONTINUAL_SCROLLING
|
#ifdef SCROLLBAR_BUTTON_CONTINUAL_SCROLLING
|
||||||
|
|
|
@ -137,6 +137,8 @@ char *rs_cutchars = NULL;
|
||||||
unsigned short rs_min_anchor_size = 0;
|
unsigned short rs_min_anchor_size = 0;
|
||||||
char *rs_scrollbar_type = NULL;
|
char *rs_scrollbar_type = NULL;
|
||||||
unsigned long rs_scrollbar_width = 0;
|
unsigned long rs_scrollbar_width = 0;
|
||||||
|
char *rs_finished_title = NULL;
|
||||||
|
char *rs_finished_text = NULL;
|
||||||
char *rs_term_name = NULL;
|
char *rs_term_name = NULL;
|
||||||
#ifdef PIXMAP_SUPPORT
|
#ifdef PIXMAP_SUPPORT
|
||||||
char *rs_pixmapScale = NULL;
|
char *rs_pixmapScale = NULL;
|
||||||
|
@ -351,6 +353,8 @@ static const struct {
|
||||||
#ifdef CUTCHAR_OPTION
|
#ifdef CUTCHAR_OPTION
|
||||||
OPT_LONG("cut-chars", "seperators for double-click selection", &rs_cutchars),
|
OPT_LONG("cut-chars", "seperators for double-click selection", &rs_cutchars),
|
||||||
#endif /* CUTCHAR_OPTION */
|
#endif /* CUTCHAR_OPTION */
|
||||||
|
OPT_LONG("finished-title", "text to add to window title after program termination", &rs_finished_title),
|
||||||
|
OPT_LONG("finished-text", "text to output after program termination", &rs_finished_text),
|
||||||
OPT_LONG("term-name", "value to use for setting $TERM", &rs_term_name),
|
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_LONG("pipe-name", "filename of console pipe to emulate -C", &rs_pipe_name),
|
||||||
OPT_BOOL('C', "console", "grab console messages", &Options, Opt_console),
|
OPT_BOOL('C', "console", "grab console messages", &Options, Opt_console),
|
||||||
|
@ -2432,6 +2436,12 @@ parse_misc(char *buff, void *state)
|
||||||
} else if (!BEG_STRCASECMP(buff, "line_space ")) {
|
} else if (!BEG_STRCASECMP(buff, "line_space ")) {
|
||||||
rs_line_space = strtol(PWord(2, buff), (char **) NULL, 0);
|
rs_line_space = strtol(PWord(2, buff), (char **) NULL, 0);
|
||||||
|
|
||||||
|
} else if (!BEG_STRCASECMP(buff, "finished_title ")) {
|
||||||
|
RESET_AND_ASSIGN(rs_finished_title, Word(2, buff));
|
||||||
|
|
||||||
|
} else if (!BEG_STRCASECMP(buff, "finished_text ")) {
|
||||||
|
RESET_AND_ASSIGN(rs_finished_text, Word(2, buff));
|
||||||
|
|
||||||
} else if (!BEG_STRCASECMP(buff, "term_name ")) {
|
} else if (!BEG_STRCASECMP(buff, "term_name ")) {
|
||||||
RESET_AND_ASSIGN(rs_term_name, Word(2, buff));
|
RESET_AND_ASSIGN(rs_term_name, Word(2, buff));
|
||||||
|
|
||||||
|
|
|
@ -207,6 +207,8 @@ extern char *rs_geometry; /* Geometry string */
|
||||||
extern int rs_desktop; /* Startup desktop */
|
extern int rs_desktop; /* Startup desktop */
|
||||||
extern int rs_saveLines; /* Lines in the scrollback buffer */
|
extern int rs_saveLines; /* Lines in the scrollback buffer */
|
||||||
extern unsigned short rs_min_anchor_size; /* Minimum size, in pixels, of the scrollbar anchor */
|
extern unsigned short rs_min_anchor_size; /* Minimum size, in pixels, of the scrollbar anchor */
|
||||||
|
extern char *rs_finished_title; /* Text added to window title (--pause) */
|
||||||
|
extern char *rs_finished_text; /* Text added to scrollback (--pause) */
|
||||||
extern char *rs_term_name;
|
extern char *rs_term_name;
|
||||||
extern char *rs_icon;
|
extern char *rs_icon;
|
||||||
extern char *rs_scrollbar_type;
|
extern char *rs_scrollbar_type;
|
||||||
|
|
|
@ -478,6 +478,37 @@ Create_Windows(int argc, char *argv[])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* resize window keeping one point (determined by window geometry) in place */
|
||||||
|
void
|
||||||
|
resize_parent(unsigned int width, unsigned int height)
|
||||||
|
{
|
||||||
|
XWindowAttributes attr;
|
||||||
|
|
||||||
|
if ((!XGetWindowAttributes(Xdisplay, TermWin.parent, &attr))) {
|
||||||
|
XResizeWindow(Xdisplay, TermWin.parent, width, height);
|
||||||
|
} else {
|
||||||
|
Window junkwin;
|
||||||
|
int x, y, scr_w, scr_h, dx, dy;
|
||||||
|
|
||||||
|
scr_w = WidthOfScreen(attr.screen);
|
||||||
|
scr_h = HeightOfScreen(attr.screen);
|
||||||
|
dx = attr.width - width;
|
||||||
|
dy = attr.height - height;
|
||||||
|
XTranslateCoordinates(Xdisplay, TermWin.parent, attr.root, 0, 0, &x, &y, &junkwin);
|
||||||
|
/* Check position of the center of the window */
|
||||||
|
if (x < (scr_w - attr.width) / 2) /* left half */
|
||||||
|
dx = 0;
|
||||||
|
else if (x == (scr_w - attr.width) / 2 ) /* exact center */
|
||||||
|
dx /= 2;
|
||||||
|
if (y < (scr_h - attr.height) / 2) /* top half */
|
||||||
|
dy = 0;
|
||||||
|
else if (y == (scr_h - attr.height) / 2) /* exact center */
|
||||||
|
dy /= 2;
|
||||||
|
D_X11(("Calling XMoveResizeWindow(Xdisplay, 0x%08x, %d + %d, %d + %d, %d, %d)\n", TermWin.parent, x, dx, y, dy, width, height));
|
||||||
|
XMoveResizeWindow(Xdisplay, TermWin.parent, x + dx, y + dy, width, height);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* good for toggling 80/132 columns */
|
/* good for toggling 80/132 columns */
|
||||||
void
|
void
|
||||||
set_width(unsigned short width)
|
set_width(unsigned short width)
|
||||||
|
@ -488,7 +519,7 @@ set_width(unsigned short width)
|
||||||
width = szHint.base_width + width * TermWin.fwidth;
|
width = szHint.base_width + width * TermWin.fwidth;
|
||||||
height = szHint.base_height + height * TermWin.fheight;
|
height = szHint.base_height + height * TermWin.fheight;
|
||||||
|
|
||||||
XResizeWindow(Xdisplay, TermWin.parent, width, height);
|
resize_parent(width, height);
|
||||||
handle_resize(width, height);
|
handle_resize(width, height);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -548,7 +579,7 @@ parent_resize(void)
|
||||||
{
|
{
|
||||||
D_X11(("Called.\n"));
|
D_X11(("Called.\n"));
|
||||||
update_size_hints();
|
update_size_hints();
|
||||||
XResizeWindow(Xdisplay, TermWin.parent, szHint.width, szHint.height);
|
resize_parent(szHint.width, szHint.height);
|
||||||
D_X11((" -> New parent width/height == %lux%lu\n", szHint.width, szHint.height));
|
D_X11((" -> New parent width/height == %lux%lu\n", szHint.width, szHint.height));
|
||||||
term_resize(szHint.width, szHint.height);
|
term_resize(szHint.width, szHint.height);
|
||||||
scrollbar_resize(szHint.width, szHint.height - bbar_calc_docked_height(BBAR_DOCKED));
|
scrollbar_resize(szHint.width, szHint.height - bbar_calc_docked_height(BBAR_DOCKED));
|
||||||
|
|
|
@ -47,6 +47,7 @@ extern Pixel get_color_by_name(const char *, const char *);
|
||||||
extern Pixel get_color_by_pixel(Pixel, Pixel);
|
extern Pixel get_color_by_pixel(Pixel, Pixel);
|
||||||
extern void process_colors(void);
|
extern void process_colors(void);
|
||||||
extern void Create_Windows(int, char * []);
|
extern void Create_Windows(int, char * []);
|
||||||
|
extern void resize_parent(unsigned int, unsigned int);
|
||||||
extern void set_width(unsigned short);
|
extern void set_width(unsigned short);
|
||||||
extern void update_size_hints(void);
|
extern void update_size_hints(void);
|
||||||
extern void term_resize(int, int);
|
extern void term_resize(int, int);
|
||||||
|
|
Loading…
Reference in New Issue