]> Dogcows Code - chaz/openbox/blobdiff - scripts/builtins.py
add comment, and reformat
[chaz/openbox] / scripts / builtins.py
index 729f3a6b34494beea24915cf9d0c59ab71ce7c77..4ae4587b8e0bf71f9ebc149f54d362f725314d62 100644 (file)
@@ -141,19 +141,26 @@ def prev_desktop(data, no_wrap=0):
         d = n - 1
     change_desktop(data, d)
 
-def send_to_all_desktops(data):
-    """Sends a client to all desktops"""
-    if not data.client: return
-    send_client_msg(display.screenInfo(data.screen).rootWindow(),
-                    Property_atoms().net_wm_desktop, data.client.window(),
-                    0xffffffff)
-    
 def send_to_desktop(data, num):
     """Sends a client to a specified desktop"""
     if not data.client: return
     send_client_msg(display.screenInfo(data.screen).rootWindow(),
                     Property_atoms().net_wm_desktop, data.client.window(), num)
 
+def toggle_all_desktops(data):
+    """Toggles between sending a client to all desktops and to the current
+       desktop."""
+    if not data.client: return
+    if not data.client.desktop() == 0xffffffff:
+        send_to_desktop(data, 0xffffffff)
+    else:
+        send_to_desktop(data, openbox.screen(data.screen).desktop())
+    
+def send_to_all_desktops(data):
+    """Sends a client to all desktops"""
+    if not data.client: return
+    send_to_desktop(data, 0xffffffff)
+    
 def send_to_next_desktop(data, no_wrap=0, follow=1):
     """Sends a window to the next desktop, optionally (by default) cycling
        around to the first when going past the last. Also optionally moving to
@@ -255,6 +262,7 @@ def setup_window_clicks():
 
 def setup_window_buttons():
     """Sets up the default behaviors for the buttons in the window titlebar."""
+    mbind("Left", MC_AllDesktopsButton, MouseClick, toggle_all_desktops)
     mbind("Left", MC_CloseButton, MouseClick, close)
 
 def setup_scroll():
@@ -279,34 +287,8 @@ def setup_scroll():
 def setup_fallback_focus():
     """Sets up a focus fallback routine so that when no windows are focused,
        the last window to have focus on the desktop will be focused."""
-    focus_stack = []
-    def focused(data):
-        #global focus_stack
-        if data.client:
-            window = data.client.window()
-            # add to front the stack
-            if window in focus_stack:
-                focus_stack.remove(window)
-            focus_stack.insert(0, window)
-        else:
-            # pass around focus
-            desktop = openbox.screen(data.screen).desktop()
-            l = len(focus_stack)
-            i = 0
-            while i < l:
-                w = focus_stack[i]
-                client = openbox.findClient(w)
-                if not client: # window is gone, remove it
-                    focus_stack.pop(i)
-                    l = l - 1
-                elif client.desktop() == desktop and \
-                         client.normal() and client.focus():
-                    break
-                else:
-                    i = i + 1
-
-    ebind(EventFocus, focused)
-
+    global ob_focus_fallback # see focus.py
+    ob_focus_fallback = 1
     
 ############################################################################
 ### Window placement algorithms, choose one of these and ebind it to the ###
@@ -317,12 +299,13 @@ ob_rand = None
 import random
 def placewindows_random(data):
     if not data.client: return
-    frame_area = data.client.frame.area()
-    print "AAAAAAAAASA " + str(frame_area.width())
+    client_area = data.client.area()
+    frame_size = data.client.frame.size()
     screen = display.screenInfo(data.screen)
-    # XXX - USE THE FRAME'S SIZE!!
-    width = screen.width() - frame_area.width()
-    height = screen.height() - frame_area.height()
+    width = screen.width() - (client_area.width() +
+                              frame_size.left + frame_size.right)
+    height = screen.height() - (client_area.height() + 
+                                frame_size.top + frame_size.bottom)
     global ob_rand
     if not ob_rand: ob_rand = random.Random()
     x = ob_rand.randrange(0, width-1)
This page took 0.023994 seconds and 4 git commands to generate.