add mouse action : maximize_restore, fixed issue 125
git-svn-id: http://tint2.googlecode.com/svn/trunk@156 121b4492-b84c-0410-8b4c-0d4edfb3f3cc
This commit is contained in:
parent
027411ca16
commit
fe2111c8fd
8 changed files with 50 additions and 36 deletions
|
@ -1,3 +1,7 @@
|
|||
2009-08-09
|
||||
- add mouse action : maximize_restore
|
||||
- fixed issue 125
|
||||
|
||||
2009-07-28
|
||||
- some tint2conf code
|
||||
|
||||
|
|
|
@ -226,6 +226,8 @@ void get_action (char *event, int *action)
|
|||
*action = SHADE;
|
||||
else if (strcmp (event, "toggle_iconify") == 0)
|
||||
*action = TOGGLE_ICONIFY;
|
||||
else if (strcmp (event, "maximize_restore") == 0)
|
||||
*action = MAXIMIZE_RESTORE;
|
||||
}
|
||||
|
||||
|
||||
|
@ -664,8 +666,10 @@ int parse_line (const char *line)
|
|||
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
|
||||
|
|
|
@ -54,6 +54,8 @@ void server_init_atoms ()
|
|||
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);
|
||||
|
|
|
@ -37,6 +37,8 @@ typedef struct Global_atom
|
|||
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;
|
||||
|
|
12
src/tint.c
12
src/tint.c
|
@ -53,7 +53,7 @@ void init ()
|
|||
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));
|
||||
|
@ -131,6 +131,15 @@ void window_action (Task *tsk, int action)
|
|||
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;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -382,6 +391,7 @@ void event_property_notify (XEvent *e)
|
|||
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++) {
|
||||
|
|
|
@ -28,7 +28,7 @@ FXint fxmalloc(void** ptr,unsigned long size){
|
|||
*/
|
||||
|
||||
// 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
|
||||
|
||||
|
|
|
@ -65,22 +65,13 @@ void window_toggle_shade (Window win)
|
|||
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)
|
||||
{
|
||||
|
|
|
@ -23,6 +23,7 @@ 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);
|
||||
|
|
Loading…
Reference in a new issue