From ea9797f1105ed972147e3dc81f0b49090d0d88b6 Mon Sep 17 00:00:00 2001 From: gotmor Date: Fri, 6 Jul 2007 06:04:23 +0000 Subject: added actions: togglecollapse togglehide a_collapse: removed unmapping of each subwindow git-svn-id: http://dzen.googlecode.com/svn/trunk@118 f2baff5b-bf2c-0410-a398-912abdc3d8b2 --- action.c | 27 ++++++++++++++++++++++----- action.h | 2 ++ main.c | 14 +++++++++++++- 3 files changed, 37 insertions(+), 6 deletions(-) diff --git a/action.c b/action.c index d5eaa93..7acf87a 100644 --- a/action.c +++ b/action.c @@ -36,11 +36,13 @@ struct action_lookup ac_lookup_table[] = { { "exit", a_exit}, { "collapse", a_collapse}, { "uncollapse", a_uncollapse}, + { "togglecollapse", a_togglecollapse}, { "stick", a_stick}, { "unstick", a_unstick}, { "togglestick", a_togglestick}, { "hide", a_hide}, { "unhide", a_unhide}, + { "togglehide", a_togglehide}, { "scrollup", a_scrollup}, { "scrolldown", a_scrolldown}, { "menuprint", a_menuprint}, @@ -265,8 +267,6 @@ a_collapse(char * opt[]){ if(!dzen.slave_win.ishmenu && dzen.slave_win.max_lines && !dzen.slave_win.issticky) { - for(i=0; i < dzen.slave_win.max_lines; i++) - XUnmapWindow(dzen.dpy, dzen.slave_win.line[i]); XUnmapWindow(dzen.dpy, dzen.slave_win.win); } return 0; @@ -286,13 +286,19 @@ a_uncollapse(char * opt[]){ return 0; } -#if 0 -static int +int a_togglecollapse(char * opt[]){ + XWindowAttributes wa; (void)opt; + + if(dzen.slave_win.max_lines && + (XGetWindowAttributes(dzen.dpy, dzen.slave_win.win, &wa), wa.map_state == IsUnmapped)) + a_uncollapse(NULL); + else + a_collapse(NULL); + return 0; } -#endif int a_stick(char * opt[]) { @@ -392,6 +398,17 @@ a_unhide(char * opt[]) { return 0; } +int +a_togglehide(char * opt[]) { + (void)opt; + + dzen.title_win.ishidden ? + a_unhide(NULL) : + a_hide(NULL); + + return 0; +} + int a_exec(char * opt[]) { int i; diff --git a/action.h b/action.h index 0af044b..4c592d3 100644 --- a/action.h +++ b/action.h @@ -63,6 +63,7 @@ int a_exit(char **); int a_exec(char **); int a_collapse(char **); int a_uncollapse(char **); +int a_togglecollapse(char **); int a_stick(char **); int a_unstick(char **); int a_togglestick(char **); @@ -70,6 +71,7 @@ int a_scrollup(char **); int a_scrolldown(char **); int a_hide(char **); int a_unhide(char **); +int a_togglehide(char **); int a_menuprint(char **); int a_menuexec(char **); int a_raise(char **); diff --git a/main.c b/main.c index 6b7ceff..531b10f 100644 --- a/main.c +++ b/main.c @@ -271,7 +271,8 @@ queryscreeninfo(Display *dpy, XRectangle *rect, int screen) { } #endif -static void set_net_wm_strut_partial_for(Display *dpy, Window w) { +static void +set_net_wm_strut_partial_for(Display *dpy, Window w) { unsigned long strut[12] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; XWindowAttributes wa; @@ -508,6 +509,17 @@ handle_xev(void) { XLookupString(&ev.xkey, buf, sizeof buf, &ksym, 0); do_action(ksym+keymarker); break; + + /* TODO: XRandR rotation and size chnages */ +#if 0 + +#ifdef DZEN_XRANDR + case RRScreenChangeNotify: + handle_xrandr(); +#endif + +#endif + } } -- cgit v1.2.3-54-g00ecf