mirror of
https://github.com/Llewellynvdm/conky.git
synced 2024-12-25 20:11:11 +00:00
conky back under WM control for own_window yes
git-svn-id: https://conky.svn.sourceforge.net/svnroot/conky/trunk/conky@541 7f574dfc-610e-0410-a909-a81674777703
This commit is contained in:
parent
838da14952
commit
d265a2d05a
@ -3,6 +3,8 @@
|
|||||||
2006-03-05
|
2006-03-05
|
||||||
* Added patch to make $cpu stuff work on alpha (thanks Thomas Cort)
|
* Added patch to make $cpu stuff work on alpha (thanks Thomas Cort)
|
||||||
http://bugs.gentoo.org/show_bug.cgi?id=122637#c3
|
http://bugs.gentoo.org/show_bug.cgi?id=122637#c3
|
||||||
|
* Stop using override_redirect true -- conky back under WM control
|
||||||
|
when using 'own_window yes'.
|
||||||
|
|
||||||
2006-02-14
|
2006-02-14
|
||||||
* Drastically simplified own_window=yes window creation code.
|
* Drastically simplified own_window=yes window creation code.
|
||||||
|
12
src/conky.c
12
src/conky.c
@ -4550,6 +4550,16 @@ static void main_loop()
|
|||||||
set_font();
|
set_font();
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case ButtonPress:
|
||||||
|
if (own_window)
|
||||||
|
{
|
||||||
|
/* forward the click to the root window */
|
||||||
|
XUngrabPointer(display, ev.xbutton.time);
|
||||||
|
ev.xbutton.window = window.root;
|
||||||
|
XSendEvent(display, ev.xbutton.window, False, ButtonPressMask, &ev);
|
||||||
|
}
|
||||||
|
break;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
default:
|
default:
|
||||||
@ -5587,7 +5597,7 @@ int main(int argc, char **argv)
|
|||||||
(own_window,
|
(own_window,
|
||||||
text_width + border_margin * 2 + 1,
|
text_width + border_margin * 2 + 1,
|
||||||
text_height + border_margin * 2 + 1,
|
text_height + border_margin * 2 + 1,
|
||||||
set_transparent, background_colour, info.uname_s.nodename);
|
set_transparent, background_colour, info.uname_s.nodename, argv, argc);
|
||||||
|
|
||||||
update_text_area(); /* to position text/window on screen */
|
update_text_area(); /* to position text/window on screen */
|
||||||
#endif /* X11 */
|
#endif /* X11 */
|
||||||
|
@ -337,7 +337,8 @@ extern int workarea[4];
|
|||||||
extern struct conky_window window;
|
extern struct conky_window window;
|
||||||
|
|
||||||
void init_X11();
|
void init_X11();
|
||||||
void init_window(int use_own_window, int width, int height, int set_trans, int back_colour, char * nodename);
|
void init_window(int use_own_window, int width, int height, int set_trans, int back_colour, char * nodename,
|
||||||
|
char **argv, int argc);
|
||||||
void create_gc();
|
void create_gc();
|
||||||
void set_transparent_background(Window win);
|
void set_transparent_background(Window win);
|
||||||
long get_x11_color(const char *);
|
long get_x11_color(const char *);
|
||||||
|
40
src/x11.c
40
src/x11.c
@ -173,7 +173,8 @@ inline void set_transparent_background(Window win)
|
|||||||
//XClearWindow(display, win); not sure why this was here
|
//XClearWindow(display, win); not sure why this was here
|
||||||
}
|
}
|
||||||
|
|
||||||
void init_window(int own_window, int w, int h, int set_trans, int back_colour, char * nodename)
|
void init_window(int own_window, int w, int h, int set_trans, int back_colour, char * nodename,
|
||||||
|
char **argv, int argc)
|
||||||
{
|
{
|
||||||
/* There seems to be some problems with setting transparent background (on
|
/* There seems to be some problems with setting transparent background (on
|
||||||
* fluxbox this time). It doesn't happen always and I don't know why it
|
* fluxbox this time). It doesn't happen always and I don't know why it
|
||||||
@ -186,15 +187,19 @@ void init_window(int own_window, int w, int h, int set_trans, int back_colour, c
|
|||||||
#ifdef OWN_WINDOW
|
#ifdef OWN_WINDOW
|
||||||
if (own_window) {
|
if (own_window) {
|
||||||
{
|
{
|
||||||
/* DRASTICALLY SIMPLIFIED -
|
/* Allow WM control of conky again. Shielding conky from the WM
|
||||||
* override_redirect=True impedes the WM from manipulating
|
* via override redirect creates more problems than it's worth and
|
||||||
* the window, adding decorations, etc. we do not register
|
* makes it impossible to use tools like devilspie to manage the
|
||||||
* for button events so you should have menu clicking over
|
* conky windows beyond the parametsrs we offer. Also, button
|
||||||
* the conky window now too. PHK. */
|
* press events are now explicitly forwarded to the root window. */
|
||||||
XSetWindowAttributes attrs = {
|
XSetWindowAttributes attrs = {
|
||||||
ParentRelative,0L,0,0L,0,0,Always,0L,0L,False,
|
ParentRelative,0L,0,0L,0,0,Always,0L,0L,False,
|
||||||
StructureNotifyMask|ExposureMask,
|
StructureNotifyMask|ExposureMask|ButtonPressMask,
|
||||||
0L,True,0,0 };
|
0L,False,0,0 };
|
||||||
|
|
||||||
|
XClassHint classHint;
|
||||||
|
XWMHints wmHint;
|
||||||
|
char window_title[256];
|
||||||
|
|
||||||
window.root = find_desktop_window();
|
window.root = find_desktop_window();
|
||||||
|
|
||||||
@ -207,8 +212,23 @@ void init_window(int own_window, int w, int h, int set_trans, int back_colour, c
|
|||||||
|
|
||||||
fprintf(stderr, "Conky: drawing to created window (%lx)\n", window.window);
|
fprintf(stderr, "Conky: drawing to created window (%lx)\n", window.window);
|
||||||
|
|
||||||
XLowerWindow(display, window.window);
|
classHint.res_name = "conky";
|
||||||
|
classHint.res_class = classHint.res_name;
|
||||||
|
|
||||||
|
wmHint.flags = InputHint | StateHint;
|
||||||
|
wmHint.input = False;
|
||||||
|
wmHint.initial_state = NormalState;
|
||||||
|
|
||||||
|
sprintf(window_title,WINDOW_NAME_FMT,nodename);
|
||||||
|
|
||||||
|
XmbSetWMProperties (display, window.window, window_title, NULL,
|
||||||
|
argv, argc,
|
||||||
|
NULL, &wmHint, &classHint);
|
||||||
|
|
||||||
|
/* Sets an empty WM_PROTOCOLS property */
|
||||||
|
XSetWMProtocols(display,window.window,NULL,0);
|
||||||
|
|
||||||
|
XLowerWindow(display, window.window);
|
||||||
XMapWindow(display, window.window);
|
XMapWindow(display, window.window);
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -269,7 +289,7 @@ void init_window(int own_window, int w, int h, int set_trans, int back_colour, c
|
|||||||
XSelectInput(display, window.window, ExposureMask
|
XSelectInput(display, window.window, ExposureMask
|
||||||
#ifdef OWN_WINDOW
|
#ifdef OWN_WINDOW
|
||||||
| (own_window
|
| (own_window
|
||||||
? (StructureNotifyMask | PropertyChangeMask) : 0)
|
? (StructureNotifyMask | PropertyChangeMask | ButtonPressMask) : 0)
|
||||||
#endif
|
#endif
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user