add the MoveResize context, which is used while doing a move/resize on a window....
authorDana Jansens <danakj@orodu.net>
Wed, 17 Sep 2003 06:44:04 +0000 (06:44 +0000)
committerDana Jansens <danakj@orodu.net>
Wed, 17 Sep 2003 06:44:04 +0000 (06:44 +0000)
data/rc.xml
openbox/frame.c
openbox/frame.h
openbox/mouse.c

index 2d98fc2..5000c59 100644 (file)
   <dragThreshold>3</dragThreshold>
   <doubleClickTime>200</doubleClickTime>
 
-  <context name="frame">
+  <context name="Frame">
     <mousebind button="A-Left" action="Drag">
       <action name="Move"/>
     </mousebind>
       <action name="SendToDesktopPrevious"/>
     </mousebind>
   </context>
-  <context name="titlebar">
+  <context name="Titlebar">
     <mousebind button="Left" action="Drag">
       <action name="Move"/>
     </mousebind>
       <action name="ShowMenu"><menu>client-menu</menu></action>
     </mousebind>
   </context>
-  <context name="handle">
+  <context name="Handle">
     <mousebind button="Left" action="Drag">
       <action name="Move"/>
     </mousebind>
       <action name="Lower"/>
     </mousebind>
   </context>
-  <context name="blcorner">
+  <context name="BLCorner">
     <mousebind button="Left" action="Drag">
       <action name="Resize"/>
     </mousebind>
       <action name="Focus"/>
     </mousebind>
   </context>
-  <context name="brcorner">
+  <context name="BRCorner">
     <mousebind button="Left" action="Drag">
       <action name="Resize"/>
     </mousebind>
       <action name="Focus"/>
     </mousebind>
   </context>
-  <context name="tlcorner">
+  <context name="TLCorner">
     <mousebind button="Left" action="Drag">
       <action name="Resize"/>
     </mousebind>
       <action name="Focus"/>
     </mousebind>
   </context>
-  <context name="trcorner">
+  <context name="TRCorner">
     <mousebind button="Left" action="Drag">
       <action name="Resize"/>
     </mousebind>
       <action name="Focus"/>
     </mousebind>
   </context>
-  <context name="client">
+  <context name="Client">
     <mousebind button="Left" action="Press">
       <action name="Focus"/>
       <action name="Raise"/>
       <action name="Focus"/>
     </mousebind>
   </context>
-  <context name="icon">
+  <context name="Icon">
     <mousebind button="Left" action="Press">
       <action name="Focus"/>
     </mousebind>
       <action name="Close"/>
     </mousebind>
   </context>
-  <context name="alldesktops">
+  <context name="AllDesktops">
     <mousebind button="Left" action="Press">
       <action name="Focus"/>
     </mousebind>
       <action name="ToggleOmnipresent"/>
     </mousebind>
   </context>
-  <context name="shade">
+  <context name="Shade">
     <mousebind button="Left" action="Press">
       <action name="Focus"/>
     </mousebind>
       <action name="ToggleShade"/>
     </mousebind>
   </context>
-  <context name="iconify">
+  <context name="Iconify">
     <mousebind button="Left" action="Press">
       <action name="Focus"/>
     </mousebind>
       <action name="Iconify"/>
     </mousebind>
   </context>
-  <context name="maximize">
+  <context name="Maximize">
     <mousebind button="Left" action="Press">
       <action name="Focus"/>
     </mousebind>
       <action name="ToggleMaximizeHorz"/>
     </mousebind>
   </context>
-  <context name="close">
+  <context name="Close">
     <mousebind button="Left" action="Press">
       <action name="Focus"/>
     </mousebind>
       <action name="Close"/>
     </mousebind>
   </context>
-  <context name="desktop">
-    <mousebind button="Up" action="Click">
+  <context name="Desktop">
+    <mousebind button="Up" action="Press">
       <action name="DesktopNext"/>
     </mousebind>
-    <mousebind button="Down" action="Click">
+    <mousebind button="Down" action="Press">
       <action name="DesktopPrevious"/>
     </mousebind>
-    <mousebind button="A-Up" action="Click">
+    <mousebind button="A-Up" action="Press">
       <action name="DesktopNext"/>
     </mousebind>
-    <mousebind button="A-Down" action="Click">
+    <mousebind button="A-Down" action="Press">
       <action name="DesktopPrevious"/>
     </mousebind>
     <mousebind button="Left" action="Press">
       <action name="ShowMenu"><menu>root-menu</menu></action>
     </mousebind>
   </context>
+  <context name="MoveResize">
+    <mousebind button="Up" action="Press">
+      <action name="DesktopNext"/>
+    </mousebind>
+    <mousebind button="Down" action="Press">
+      <action name="DesktopPrevious"/>
+    </mousebind>
+    <mousebind button="A-Up" action="Press">
+      <action name="DesktopNext"/>
+    </mousebind>
+    <mousebind button="A-Down" action="Press">
+      <action name="DesktopPrevious"/>
+    </mousebind>
+  </context>
 </mouse>
 
 <menu>
index 327507f..8d69c39 100644 (file)
@@ -5,6 +5,7 @@
 #include "config.h"
 #include "framerender.h"
 #include "mainloop.h"
+#include "moveresize.h"
 #include "render/theme.h"
 
 #define PLATE_EVENTMASK (SubstructureRedirectMask | ButtonPressMask)
@@ -629,36 +630,38 @@ static void layout_title(ObFrame *self)
 
 ObFrameContext frame_context_from_string(char *name)
 {
-    if (!g_ascii_strcasecmp("desktop", name))
+    if (!g_ascii_strcasecmp("Desktop", name))
         return OB_FRAME_CONTEXT_DESKTOP;
-    else if (!g_ascii_strcasecmp("client", name))
+    else if (!g_ascii_strcasecmp("Client", name))
         return OB_FRAME_CONTEXT_CLIENT;
-    else if (!g_ascii_strcasecmp("titlebar", name))
+    else if (!g_ascii_strcasecmp("Titlebar", name))
         return OB_FRAME_CONTEXT_TITLEBAR;
-    else if (!g_ascii_strcasecmp("handle", name))
+    else if (!g_ascii_strcasecmp("Handle", name))
         return OB_FRAME_CONTEXT_HANDLE;
-    else if (!g_ascii_strcasecmp("frame", name))
+    else if (!g_ascii_strcasecmp("Frame", name))
         return OB_FRAME_CONTEXT_FRAME;
-    else if (!g_ascii_strcasecmp("tlcorner", name))
+    else if (!g_ascii_strcasecmp("TLCorner", name))
         return OB_FRAME_CONTEXT_TLCORNER;
-    else if (!g_ascii_strcasecmp("trcorner", name))
+    else if (!g_ascii_strcasecmp("TRCorner", name))
         return OB_FRAME_CONTEXT_TRCORNER;
-    else if (!g_ascii_strcasecmp("blcorner", name))
+    else if (!g_ascii_strcasecmp("BLCorner", name))
         return OB_FRAME_CONTEXT_BLCORNER;
-    else if (!g_ascii_strcasecmp("brcorner", name))
+    else if (!g_ascii_strcasecmp("BRCorner", name))
         return OB_FRAME_CONTEXT_BRCORNER;
-    else if (!g_ascii_strcasecmp("maximize", name))
+    else if (!g_ascii_strcasecmp("Maximize", name))
         return OB_FRAME_CONTEXT_MAXIMIZE;
-    else if (!g_ascii_strcasecmp("alldesktops", name))
+    else if (!g_ascii_strcasecmp("AllDesktops", name))
         return OB_FRAME_CONTEXT_ALLDESKTOPS;
-    else if (!g_ascii_strcasecmp("shade", name))
+    else if (!g_ascii_strcasecmp("Shade", name))
         return OB_FRAME_CONTEXT_SHADE;
-    else if (!g_ascii_strcasecmp("iconify", name))
+    else if (!g_ascii_strcasecmp("Iconify", name))
         return OB_FRAME_CONTEXT_ICONIFY;
-    else if (!g_ascii_strcasecmp("icon", name))
+    else if (!g_ascii_strcasecmp("Icon", name))
         return OB_FRAME_CONTEXT_ICON;
-    else if (!g_ascii_strcasecmp("close", name))
+    else if (!g_ascii_strcasecmp("Close", name))
         return OB_FRAME_CONTEXT_CLOSE;
+    else if (!g_ascii_strcasecmp("MoveResize", name))
+        return OB_FRAME_CONTEXT_MOVE_RESIZE;
     return OB_FRAME_CONTEXT_NONE;
 }
 
@@ -666,6 +669,9 @@ ObFrameContext frame_context(ObClient *client, Window win)
 {
     ObFrame *self;
 
+    if (moveresize_in_progress)
+        return OB_FRAME_CONTEXT_MOVE_RESIZE;
+
     if (win == RootWindow(ob_display, ob_screen))
         return OB_FRAME_CONTEXT_DESKTOP;
     if (client == NULL) return OB_FRAME_CONTEXT_NONE;
index 78206c3..9d1cb10 100644 (file)
@@ -25,6 +25,9 @@ typedef enum {
     OB_FRAME_CONTEXT_ICONIFY,
     OB_FRAME_CONTEXT_ICON,
     OB_FRAME_CONTEXT_CLOSE,
+    /*! This is a special context, which occurs while dragging a window in
+      a move/resize */
+    OB_FRAME_CONTEXT_MOVE_RESIZE,
     OB_FRAME_NUM_CONTEXTS
 } ObFrameContext;
 
index 26aa859..27bd658 100644 (file)
@@ -46,6 +46,7 @@ ObFrameContext mouse_button_frame_context(ObFrameContext context,
     case OB_FRAME_CONTEXT_TITLEBAR:
     case OB_FRAME_CONTEXT_HANDLE:
     case OB_FRAME_CONTEXT_FRAME:
+    case OB_FRAME_CONTEXT_MOVE_RESIZE:
         break;
     case OB_FRAME_CONTEXT_BLCORNER:
     case OB_FRAME_CONTEXT_BRCORNER:
@@ -289,14 +290,11 @@ gboolean mouse_bind(char *buttonstr, char *contextstr, ObMouseAction mact,
         return FALSE;
     }
 
-    contextstr = g_ascii_strdown(contextstr, -1);
     context = frame_context_from_string(contextstr);
     if (!context) {
         g_warning("invalid context '%s'", contextstr);
-        g_free(contextstr);
         return FALSE;
     }
-    g_free(contextstr);
 
     for (it = bound_contexts[context]; it != NULL; it = it->next){
        b = it->data;