added support for XEMBED into other windows (ie tabbed) with -w
This commit is contained in:
parent
878d97068c
commit
0b758e08f2
11
options.c
11
options.c
@ -33,7 +33,7 @@ const options_t *options = (const options_t*) &_options;
|
||||
void print_usage(void)
|
||||
{
|
||||
printf("usage: sxiv [-abcfhioqrtvZ] [-G GAMMA] [-g GEOMETRY] [-n NUM] "
|
||||
"[-N NAME] [-S DELAY] [-s MODE] [-z ZOOM] FILES...\n");
|
||||
"[-N NAME] [-S DELAY] [-s MODE] [-z ZOOM] [-w WID] FILES...\n");
|
||||
}
|
||||
|
||||
void print_version(void)
|
||||
@ -62,6 +62,7 @@ void parse_options(int argc, char **argv)
|
||||
_options.slideshow = 0;
|
||||
|
||||
_options.fullscreen = false;
|
||||
_options.embed = 0;
|
||||
_options.hide_bar = false;
|
||||
_options.geometry = NULL;
|
||||
_options.res_name = NULL;
|
||||
@ -70,7 +71,7 @@ void parse_options(int argc, char **argv)
|
||||
_options.thumb_mode = false;
|
||||
_options.clean_cache = false;
|
||||
|
||||
while ((opt = getopt(argc, argv, "abcfG:g:hin:N:oqrS:s:tvZz:")) != -1) {
|
||||
while ((opt = getopt(argc, argv, "abcfG:g:hin:N:oqrS:s:tvw:Zz:")) != -1) {
|
||||
switch (opt) {
|
||||
case '?':
|
||||
print_usage();
|
||||
@ -138,6 +139,12 @@ void parse_options(int argc, char **argv)
|
||||
case 'v':
|
||||
print_version();
|
||||
exit(EXIT_SUCCESS);
|
||||
case 'w':
|
||||
n = strtol(optarg, &end, 0);
|
||||
if (*end != '\0')
|
||||
error(EXIT_FAILURE, 0, "Invalid argument for option -w: %s", optarg);
|
||||
_options.embed = n;
|
||||
break;
|
||||
case 'Z':
|
||||
_options.scalemode = SCALE_ZOOM;
|
||||
_options.zoom = 1.0;
|
||||
|
@ -41,6 +41,7 @@ typedef struct {
|
||||
/* window: */
|
||||
bool fullscreen;
|
||||
bool hide_bar;
|
||||
long embed;
|
||||
char *geometry;
|
||||
char *res_name;
|
||||
|
||||
|
6
window.c
6
window.c
@ -133,6 +133,7 @@ void win_init(win_t *win)
|
||||
win->bar.l.buf = emalloc(win->bar.l.size);
|
||||
win->bar.r.buf = emalloc(win->bar.r.size);
|
||||
win->bar.h = options->hide_bar ? 0 : barheight;
|
||||
win->embed = options->embed;
|
||||
|
||||
INIT_ATOM_(WM_DELETE_WINDOW);
|
||||
INIT_ATOM_(_NET_WM_NAME);
|
||||
@ -197,7 +198,10 @@ void win_open(win_t *win)
|
||||
win->y = 0;
|
||||
}
|
||||
|
||||
win->xwin = XCreateWindow(e->dpy, RootWindow(e->dpy, e->scr),
|
||||
if (!(win->embed)) {
|
||||
win->embed = RootWindow(e->dpy, e->scr);
|
||||
}
|
||||
win->xwin = XCreateWindow(e->dpy, win->embed,
|
||||
win->x, win->y, win->w, win->h, 0,
|
||||
e->depth, InputOutput, e->vis, 0, NULL);
|
||||
if (win->xwin == None)
|
||||
|
Loading…
Reference in New Issue
Block a user