#include <Imlib2.h>
#include <signal.h>
+#include "version.h"
#include "server.h"
#include "window.h"
#include "config.h"
exit(0);
}
if (!strcmp(argv[i], "-v") || !strcmp(argv[i], "--version")) {
- printf("tint2 version 0.8\n");
+ printf("tint2 version %s\n", VERSION_STRING);
exit(0);
}
if (!strcmp(argv[i], "-c")) {
// Window title changed
if (at == server.atom._NET_WM_VISIBLE_NAME || at == server.atom._NET_WM_NAME || at == server.atom.WM_NAME) {
get_title(tsk);
+ if (g_tooltip.mapped && (g_tooltip.area == (Area*)tsk)) {
+ tooltip_copy_text((Area*)tsk);
+ tooltip_update();
+ }
panel_refresh = 1;
}
// Demand attention
int main (int argc, char *argv[])
{
XEvent e;
+ XClientMessageEvent *ev;
fd_set fdset;
int x11_fd, i;
Panel *panel;
panel_refresh = 0;
// QUESTION: do we need this first refresh_systray, because we check refresh_systray once again later...
+ // ANSWER: yes, panel->temp_pmap is freeded in the loop.
+ // we change background to None to avoid tray icon using freeded pixmap.
if (refresh_systray) {
panel = (Panel*)systray.area.panel;
XSetWindowBackgroundPixmap (server.dsp, panel->main_win, None);
panel = (Panel*)systray.area.panel;
if (refresh_systray && !panel->is_hidden) {
refresh_systray = 0;
- panel = (Panel*)systray.area.panel;
// tint2 doen't draw systray icons. it just redraw background.
XSetWindowBackgroundPixmap (server.dsp, panel->main_win, panel->temp_pmap);
// force icon's refresh
break;
case UnmapNotify:
case DestroyNotify:
+ if (e.xany.window == server.composite_manager) {
+ printf("Stop composite.\n");
+ //signal_pending = SIGUSR2;
+ server_init_visual();
+ break;
+ }
if (e.xany.window == g_tooltip.window || !systray.area.on_screen)
break;
for (it = systray.list_icons; it; it = g_slist_next(it)) {
break;
case ClientMessage:
+ ev = &e;
+ if (ev->data.l[1] == server.atom._NET_WM_CM_S0) {
+ if (ev->data.l[2] == None)
+ printf("Stop composite 2.\n");
+ else
+ printf("Start composite.\n");
+ server_init_visual();
+ //signal_pending = SIGUSR2;
+ }
if (!systray.area.on_screen) break;
if (e.xclient.message_type == server.atom._NET_SYSTEM_TRAY_OPCODE && e.xclient.format == 32 && e.xclient.window == net_sel_win) {
net_message(&e.xclient);