[sawfish] edge-flip now works after resolution-change



commit 0cfc6d22f4a1ae378098fb17adfceff281a83dc5
Author: Christopher Roy Bratusek <zanghar freenet de>
Date:   Fri Aug 13 19:44:46 2010 +0200

    edge-flip now works after resolution-change

 ChangeLog                        |    5 +++++
 lisp/sawfish/wm/ext/edge-flip.jl |   11 ++++++++++-
 man/news.texi                    |    2 ++
 src/flippers.c                   |   31 +++++++++++++++++++++++--------
 4 files changed, 40 insertions(+), 9 deletions(-)
---
diff --git a/ChangeLog b/ChangeLog
index 4b97525..5aaedde 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2010-08-13  Christopher Bratusek <zanghar freenet de>
+	* src/flippers.c
+	* lisp/sawfish/wm/ext/edge-flip.jl: make edge-flipping work after
+	resolution-change
+
 2010-08-13  Jeremy Hankins <nowan nowan org>
 	* lisp/sawfish/wm/viewport.jl: Fixed viewport init bug.
 
diff --git a/lisp/sawfish/wm/ext/edge-flip.jl b/lisp/sawfish/wm/ext/edge-flip.jl
index e4a66e5..4fa6a45 100644
--- a/lisp/sawfish/wm/ext/edge-flip.jl
+++ b/lisp/sawfish/wm/ext/edge-flip.jl
@@ -21,6 +21,7 @@
 (define-structure sawfish.wm.ext.edge-flip
 
     (export edge-flip-enable
+	    restart-flippers
 	    ;; These three functions are not for API, but let's keep 'em.
 	    edge-flip-for-edge
 	    edge-flip-synthesize
@@ -82,11 +83,19 @@
   (defvar after-edge-flip-hook '()
     "Hook called immediately after edge-flipping.")
 
+  (define (restart-flippers)
+    (if edge-flip-enabled
+      (progn
+        (disable-flippers)
+        (create-flippers)
+        (enable-flippers))))
+
   (define (edge-flip-enable)
     (if (and edge-flip-enabled (not edge-flip-only-when-moving))
 	(progn
 	  (require 'sawfish.wm.util.flippers)
-	  (enable-flippers))
+	  (enable-flippers)
+	  (add-hook 'randr-change-notify-hook restart-flippers))
       (when (featurep 'sawfish.wm.util.flippers)
 	(disable-flippers))))
 
diff --git a/man/news.texi b/man/news.texi
index 3c2258a..b7d430e 100644
--- a/man/news.texi
+++ b/man/news.texi
@@ -66,6 +66,8 @@ Function @code{x-atom-name} now accepts all 32 bits. Previously only
 
 @item Two variables are restored from obsoleteness declaration  *
 They're @code{workspace-boundary-mode} and @code{workspace-send-boundary-mode}.
+
+ item Edge-Flip now works after resolution-change. [Christopher Bratusek]
 @end itemize
 
 @item New Features
diff --git a/src/flippers.c b/src/flippers.c
index 9c5f9be..bdbbe65 100644
--- a/src/flippers.c
+++ b/src/flippers.c
@@ -96,7 +96,7 @@ event_handler (XEvent *ev)
     }
 }
 
-DEFUN("flippers-after-restacking", Fflippers_after_restacking, 
+DEFUN("flippers-after-restacking", Fflippers_after_restacking,
       Sflippers_after_restacking, (void), rep_Subr0)
 {
     /* Must keep edge windows raised so they always get the pointer */
@@ -126,6 +126,22 @@ create_flipper (Window parent, int x, int y, int width, int height)
     return w;
 }
 
+DEFUN("create-flippers", Fcreate_flippers,
+      Screate_flippers, (void), rep_Subr0)
+{
+
+	edge_left = create_flipper (root_window, 0, 0, 1, screen_height);
+	edge_right = create_flipper (root_window, screen_width - 1, 0,
+				     1, screen_height);
+
+	edge_top = create_flipper (root_window, 0, 0, screen_width, 1);
+	edge_bottom = create_flipper (root_window, 0, screen_height - 1,
+				      screen_width, 1);
+
+	return Qt;
+
+}
+
 repv
 rep_dl_init (void)
 {
@@ -134,6 +150,7 @@ rep_dl_init (void)
     rep_ADD_SUBR(Senable_flippers);
     rep_ADD_SUBR(Sdisable_flippers);
     rep_ADD_SUBR(Sflippers_after_restacking);
+    rep_ADD_SUBR(Screate_flippers);
 
     rep_INTERN (left);
     rep_INTERN (right);
@@ -144,15 +161,13 @@ rep_dl_init (void)
 
     if (!batch_mode_p ())
     {
-	edge_left = create_flipper (root_window, 0, 0, 1, screen_height);
-	edge_right = create_flipper (root_window, screen_width - 1, 0,
-				     1, screen_height);
-	edge_top = create_flipper (root_window, 0, 0, screen_width, 1);
-	edge_bottom = create_flipper (root_window, 0, screen_height - 1,
-				      screen_width, 1);
+
+	Fcreate_flippers();
 
 	add_hook (Qafter_restacking_hook, rep_VAL(&Sflippers_after_restacking));
-	Fenable_flippers ();
+
+	Fenable_flippers();
+
     }
 
     return rep_pop_structure (tem);



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]