allow a user to set "undecorated" on a window without decorations
authorDana Jansens <danakj@orodu.net>
Wed, 9 Jun 2010 13:31:06 +0000 (09:31 -0400)
committerDana Jansens <danakj@orodu.net>
Mon, 14 Jun 2010 16:19:01 +0000 (12:19 -0400)
if not based on window type, the app may decide to have decorations again
sometime.  this was not always legal but chromium has made it so.

openbox/client.c

index a714137..4cba7f1 100644 (file)
@@ -1723,6 +1723,13 @@ void client_setup_decor_and_functions(ObClient *self, gboolean reconfig)
         break;
     }
 
+    /* If the client has no decor from its type (which never changes) then
+       don't allow the user to "undecorate" the window.  Otherwise, allow them
+       to, even if there are motif hints removing the decor, because those
+       may change these days (e.g. chromium) */
+    if (self->decorations == 0)
+        self->functions &= ~OB_CLIENT_FUNC_UNDECORATE;
+
     /* Mwm Hints are applied subtractively to what has already been chosen for
        decor and functionality */
     if (self->mwmhints.flags & OB_MWM_FLAG_DECORATIONS) {
@@ -1782,11 +1789,6 @@ void client_setup_decor_and_functions(ObClient *self, gboolean reconfig)
         self->decorations &= ~(OB_FRAME_DECOR_HANDLE | OB_FRAME_DECOR_GRIPS);
     }
 
-    /* If there are no decorations to remove, don't allow the user to try
-       toggle the state */
-    if (self->decorations == 0)
-        self->functions &= ~OB_CLIENT_FUNC_UNDECORATE;
-
     /* finally, the user can have requested no decorations, which overrides
        everything (but doesnt give it a border if it doesnt have one) */
     if (self->undecorated)