+2009-08-09
+- add mouse action : maximize_restore
+- fixed issue 125
+
2009-07-28
- some tint2conf code
*action = SHADE;
else if (strcmp (event, "toggle_iconify") == 0)
*action = TOGGLE_ICONIFY;
+ else if (strcmp (event, "maximize_restore") == 0)
+ *action = MAXIMIZE_RESTORE;
}
void config_finish ()
{
if (panel_config->monitor > (server.nb_monitor-1)) {
- fprintf(stderr, "tint2 exit : monitor %d not found.\n", panel_config->monitor+1);
- exit(0);
+ // server.nb_monitor minimum value is 1 (see get_monitors_and_desktops())
+ // and panel_config->monitor is higher
+ fprintf(stderr, "warning : monitor not found. tint2 default to monitor 1.\n");
+ panel_config->monitor = 0;
}
// alloc panels
server.atom._NET_WM_DESKTOP = XInternAtom (server.dsp, "_NET_WM_DESKTOP", False);
server.atom.WM_STATE = XInternAtom (server.dsp, "WM_STATE", False);
server.atom._NET_WM_STATE = XInternAtom (server.dsp, "_NET_WM_STATE", False);
+ server.atom._NET_WM_STATE_MAXIMIZED_VERT = XInternAtom (server.dsp, "_NET_WM_STATE_MAXIMIZED_VERT", False);
+ server.atom._NET_WM_STATE_MAXIMIZED_HORZ = XInternAtom (server.dsp, "_NET_WM_STATE_MAXIMIZED_HORZ", False);
server.atom._NET_WM_STATE_SHADED = XInternAtom (server.dsp, "_NET_WM_STATE_SHADED", False);
server.atom._NET_WM_STATE_BELOW = XInternAtom (server.dsp, "_NET_WM_STATE_BELOW", False);
server.atom._NET_WM_STATE_MODAL = XInternAtom (server.dsp, "_NET_WM_STATE_MODAL", False);
Atom _NET_WM_DESKTOP;
Atom WM_STATE;
Atom _NET_WM_STATE;
+ Atom _NET_WM_STATE_MAXIMIZED_VERT;
+ Atom _NET_WM_STATE_MAXIMIZED_HORZ;
Atom _NET_WM_STATE_SHADED;
Atom _NET_WM_STATE_BELOW;
Atom _NET_WM_STATE_MODAL;
signal(SIGINT, signal_handler);
signal(SIGTERM, signal_handler);
signal(SIGHUP, signal_handler);
- signal(SIGCLD, SIG_IGN); // don't have to wait() after fork()
+ signal(SIGCHLD, SIG_IGN); // don't have to wait() after fork()
// set global data
memset(&server, 0, sizeof(Server_global));
void window_action (Task *tsk, int action)
{
- switch (action) {
- case CLOSE:
- set_close (tsk->win);
- break;
- case TOGGLE:
- set_active(tsk->win);
- break;
- case ICONIFY:
- XIconifyWindow (server.dsp, tsk->win, server.screen);
- break;
- case TOGGLE_ICONIFY:
- if (tsk == task_active) XIconifyWindow (server.dsp, tsk->win, server.screen);
- else set_active (tsk->win);
- break;
- case SHADE:
- window_toggle_shade (tsk->win);
- break;
- }
+ switch (action) {
+ case CLOSE:
+ set_close (tsk->win);
+ break;
+ case TOGGLE:
+ set_active(tsk->win);
+ break;
+ case ICONIFY:
+ XIconifyWindow (server.dsp, tsk->win, server.screen);
+ break;
+ case TOGGLE_ICONIFY:
+ if (tsk == task_active) XIconifyWindow (server.dsp, tsk->win, server.screen);
+ else set_active (tsk->win);
+ break;
+ case SHADE:
+ window_toggle_shade (tsk->win);
+ break;
+ case MAXIMIZE_RESTORE:
+ window_maximize_restore (tsk->win);
+ break;
+ case MAXIMIZE:
+ window_maximize_restore (tsk->win);
+ break;
+ case RESTORE:
+ window_maximize_restore (tsk->win);
+ break;
+ }
}
init_precision();
task_urgent = 0;
}
+ // put active state on all task (multi_desktop)
if (t) {
for (i=0 ; i < nb_panel ; i++) {
for (j=0 ; j < panel1[i].nb_desktop ; j++) {
*/
// mouse actions
-enum { NONE=0, CLOSE, TOGGLE, ICONIFY, SHADE, TOGGLE_ICONIFY };
+enum { NONE=0, CLOSE, TOGGLE, ICONIFY, SHADE, TOGGLE_ICONIFY, MAXIMIZE_RESTORE, MAXIMIZE, RESTORE };
#define ALLDESKTOP 0xFFFFFFFF
send_event32 (win, server.atom._NET_WM_STATE, 2, server.atom._NET_WM_STATE_SHADED, 0);
}
-/*
-int x11_send_expose(Display *dpy, Window dst, int x, int y, int width, int height)
+
+void window_maximize_restore (Window win)
{
- XEvent xe;
- int rc;
- xe.type = Expose;
- xe.xexpose.window = dst;
- xe.xexpose.x = x;
- xe.xexpose.y = y;
- xe.xexpose.width = width;
- xe.xexpose.height = height;
- xe.xexpose.count = 0;
- rc = XSendEvent(tray_data.dpy, dst, True, NoEventMask, &xe);
- return x11_ok() && rc != 0;
+ send_event32 (win, server.atom._NET_WM_STATE, 2, server.atom._NET_WM_STATE_MAXIMIZED_VERT, 0);
+ send_event32 (win, server.atom._NET_WM_STATE, 2, server.atom._NET_WM_STATE_MAXIMIZED_HORZ, 0);
}
-*/
+
int window_is_hidden (Window win)
{
int window_is_active (Window win);
int get_icon_count (long *data, int num);
long *get_best_icon (long *data, int icon_count, int num, int *iw, int *ih, int best_icon_size);
+void window_maximize_restore (Window win);
void window_toggle_shade (Window win);
int window_get_desktop (Window win);
void windows_set_desktop (Window win, int desktop);