diff options
author | Daniel Friesel <derf@finalrewind.org> | 2021-01-09 12:34:26 +0100 |
---|---|---|
committer | Daniel Friesel <derf@finalrewind.org> | 2021-01-09 12:34:26 +0100 |
commit | 4956bba42e65739a28e14d25cd05ee4601f67ca1 (patch) | |
tree | 90613df283e3b486351d0d8ba47728f46d3edbc1 /src/winwidget.c | |
parent | 0c7a0b5379d6cfbd48df3ee568b79c6b988eec27 (diff) | |
parent | e68884314c563cd156d22c6cd1161e3c14ed8783 (diff) |
Merge branch 'add-windowid-option' of https://github.com/codehearts/feh into codehearts-add-windowid-option
Diffstat (limited to 'src/winwidget.c')
-rw-r--r-- | src/winwidget.c | 31 |
1 files changed, 26 insertions, 5 deletions
diff --git a/src/winwidget.c b/src/winwidget.c index 119c3af..37031ec 100644 --- a/src/winwidget.c +++ b/src/winwidget.c @@ -144,6 +144,7 @@ winwidget winwidget_create_from_file(gib_list * list, char type) void winwidget_create_window(winwidget ret, int w, int h) { + XWindowAttributes window_attr; XSetWindowAttributes attr; XEvent ev; XClassHint *xch; @@ -250,11 +251,31 @@ void winwidget_create_window(winwidget ret, int w, int h) } } - ret->win = - XCreateWindow(disp, DefaultRootWindow(disp), x, y, w, h, 0, - depth, InputOutput, vis, - CWOverrideRedirect | CWSaveUnder | CWBackingStore - | CWColormap | CWBackPixel | CWBorderPixel | CWEventMask, &attr); + if (opt.x11_windowid == 0) { + ret->win = + XCreateWindow(disp, DefaultRootWindow(disp), x, y, w, h, 0, + depth, InputOutput, vis, + CWOverrideRedirect | CWSaveUnder | CWBackingStore + | CWColormap | CWBackPixel | CWBorderPixel | CWEventMask, + &attr); + } else { + /* x11_windowid is a pointer to the window */ + ret->win = (Window) opt.x11_windowid; + + /* set our attributes on the window */ + XChangeWindowAttributes(disp, ret->win, + CWOverrideRedirect | CWSaveUnder | CWBackingStore + | CWColormap | CWBackPixel | CWBorderPixel + | CWEventMask, &attr); + + /* determine the size and visibility of the window */ + XGetWindowAttributes(disp, ret->win, &window_attr); + ret->visible = (window_attr.map_state == IsViewable); + ret->x = window_attr.x; + ret->y = window_attr.y; + ret->w = window_attr.width; + ret->h = window_attr.height; + } if (mwmhints.flags) { XChangeProperty(disp, ret->win, prop, prop, 32, |