Merge branch 'backport' into 3.4
authorMikael Magnusson <mikachu@gmail.com>
Thu, 29 Jan 2009 21:46:04 +0000 (22:46 +0100)
committerMikael Magnusson <mikachu@gmail.com>
Thu, 29 Jan 2009 21:46:04 +0000 (22:46 +0100)
1  2 
openbox/client.h
openbox/frame.c
po/en@boldquot.po
po/en@quot.po

diff --combined openbox/client.h
@@@ -246,6 -246,8 +246,8 @@@ struct _ObClien
  
      /*! The window uses shape extension to be non-rectangular? */
      gboolean shaped;
+     /*! The window uses shape extension to have non-rectangular input? */
+     gboolean shaped_input;
  
      /*! The window is modal, so it must be processed before any windows it is
        related to can be focused */
@@@ -322,14 -324,14 +324,14 @@@ void client_add_destroy_notify(ObClient
  void client_remove_destroy_notify(ObClientCallback func);
  
  /*! Manages all existing windows */
 -void client_manage_all();
 +void client_manage_all(void);
  /*! Manages a given window
    @param prompt This specifies an ObPrompt which is being managed.  It is
                  possible to manage Openbox-owned windows through this.
  */
  void client_manage(Window win, struct _ObPrompt *prompt);
  /*! Unmanages all managed windows */
 -void client_unmanage_all();
 +void client_unmanage_all(void);
  /*! Unmanages a given client */
  void client_unmanage(ObClient *client);
  
@@@ -342,7 -344,7 +344,7 @@@ ObClient *client_fake_manage(Window win
  void client_fake_unmanage(ObClient *self);
  
  /*! Sets the client list on the root window from the client_list */
 -void client_set_list();
 +void client_set_list(void);
  
  /*! Determines if the client should be shown or hidden currently.
    @return TRUE if it should be visible; otherwise, FALSE.
@@@ -723,7 -725,7 +725,7 @@@ void client_set_layer(ObClient *self, g
  
  guint client_monitor(ObClient *self);
  
 -ObClient* client_under_pointer();
 +ObClient* client_under_pointer(void);
  
  gboolean client_has_group_siblings(ObClient *self);
  
diff --combined openbox/frame.c
@@@ -267,25 -267,26 +267,26 @@@ void frame_adjust_theme(ObFrame *self
      set_theme_statics(self);
  }
  
- void frame_adjust_shape(ObFrame *self)
- {
  #ifdef SHAPE
+ void frame_adjust_shape_kind(ObFrame *self, int kind)
+ {
      gint num;
      XRectangle xrect[2];
  
-     if (!self->client->shaped) {
+     if (!((kind == ShapeBounding && self->client->shaped) ||
+           (kind == ShapeInput && self->client->shaped_input))) {
          /* clear the shape on the frame window */
-         XShapeCombineMask(ob_display, self->window, ShapeBounding,
+         XShapeCombineMask(ob_display, self->window, kind,
                            self->size.left,
                            self->size.top,
                            None, ShapeSet);
      } else {
          /* make the frame's shape match the clients */
-         XShapeCombineShape(ob_display, self->window, ShapeBounding,
+         XShapeCombineShape(ob_display, self->window, kind,
                             self->size.left,
                             self->size.top,
                             self->client->window,
-                            ShapeBounding, ShapeSet);
+                            kind, ShapeSet);
  
          num = 0;
          if (self->decorations & OB_FRAME_DECOR_TITLEBAR) {
          }
  
          XShapeCombineRectangles(ob_display, self->window,
-                                 ShapeBounding, 0, 0, xrect, num,
+                                 kind, 0, 0, xrect, num,
                                  ShapeUnion, Unsorted);
      }
+ }
+ #endif
+ void frame_adjust_shape(ObFrame *self)
+ {
+ #ifdef SHAPE
+   frame_adjust_shape_kind(self, ShapeBounding);
+   frame_adjust_shape_kind(self, ShapeInput);
  #endif
  }
  
@@@ -1303,8 -1312,6 +1312,8 @@@ ObFrameContext frame_context_from_strin
          return OB_FRAME_CONTEXT_TOP;
      else if (!g_ascii_strcasecmp("Bottom", name))
          return OB_FRAME_CONTEXT_BOTTOM;
 +    else if (!g_ascii_strcasecmp("Handle", name))
 +        return OB_FRAME_CONTEXT_BOTTOM;
      else if (!g_ascii_strcasecmp("Left", name))
          return OB_FRAME_CONTEXT_LEFT;
      else if (!g_ascii_strcasecmp("Right", name))
diff --combined po/en@boldquot.po
@@@ -1,7 -1,7 +1,7 @@@
  # English translations for openbox package.
- # Copyright (C) 2008 Dana Jansens
+ # Copyright (C) 2009 Dana Jansens
  # This file is distributed under the same license as the openbox package.
- # Automatically generated, 2008.
+ # Automatically generated, 2009.
  #
  # All this catalog "translates" are quotation characters.
  # The msgids must be ASCII and therefore cannot contain real quotation
@@@ -30,7 -30,7 +30,7 @@@
  #
  msgid ""
  msgstr ""
 -"Project-Id-Version: openbox 3.999.0\n"
 +"Project-Id-Version: openbox 3.4.7-pre1\n"
  "Report-Msgid-Bugs-To: http://bugzilla.icculus.org\n"
  "POT-Creation-Date: 2008-11-15 22:28+0100\n"
  "PO-Revision-Date: 2008-11-15 22:28+0100\n"
diff --combined po/en@quot.po
@@@ -1,7 -1,7 +1,7 @@@
  # English translations for openbox package.
- # Copyright (C) 2008 Dana Jansens
+ # Copyright (C) 2009 Dana Jansens
  # This file is distributed under the same license as the openbox package.
- # Automatically generated, 2008.
+ # Automatically generated, 2009.
  #
  # All this catalog "translates" are quotation characters.
  # The msgids must be ASCII and therefore cannot contain real quotation
@@@ -27,7 -27,7 +27,7 @@@
  #
  msgid ""
  msgstr ""
 -"Project-Id-Version: openbox 3.999.0\n"
 +"Project-Id-Version: openbox 3.4.7-pre1\n"
  "Report-Msgid-Bugs-To: http://bugzilla.icculus.org\n"
  "POT-Creation-Date: 2008-11-15 22:28+0100\n"
  "PO-Revision-Date: 2008-11-15 22:28+0100\n"