From: Mikael Magnusson Date: Thu, 29 Jan 2009 21:45:47 +0000 (+0100) Subject: Merge branch 'backport' into work X-Git-Url: https://git.dogcows.com/gitweb?a=commitdiff_plain;h=4145468a1984e1055a947ad957075ae51f70ca9c;hp=90cecafa3de2f118e550622932d1d30266c71226;p=chaz%2Fopenbox Merge branch 'backport' into work Conflicts: openbox/event.c openbox/frame.c --- diff --git a/install-sh b/install-sh old mode 100644 new mode 100755 diff --git a/openbox/client.h b/openbox/client.h index 5e26ef30..6d018bc6 100644 --- a/openbox/client.h +++ b/openbox/client.h @@ -246,6 +246,8 @@ struct _ObClient /*! 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 */ diff --git a/openbox/event.c b/openbox/event.c index 30bc656f..f69267db 100644 --- a/openbox/event.c +++ b/openbox/event.c @@ -1576,11 +1576,24 @@ static void event_handle_client(ObClient *client, XEvent *e) default: ; #ifdef SHAPE - if (obt_display_extension_shape && - e->type == obt_display_extension_shape_basep) { - client->shaped = ((XShapeEvent*)e)->shaped; - frame_adjust_shape(client->frame); + int kind; + if (obt_display_extension_shape && + e->type == obt_display_extension_shape_basep) + { + switch (((XShapeEvent*)e)->kind) { + case ShapeBounding: + case ShapeClip: + client->shaped = ((XShapeEvent*)e)->shaped; + kind = ShapeBounding; + break; + case ShapeInput: + client->shaped_input = ((XShapeEvent*)e)->shaped; + kind = ShapeInput; + break; + } + frame_adjust_shape_kind(client->frame, kind); + } } #endif } diff --git a/openbox/frame.c b/openbox/frame.c index 30630fbb..c633fa6d 100644 --- a/openbox/frame.c +++ b/openbox/frame.c @@ -265,25 +265,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(obt_display, self->window, ShapeBounding, + XShapeCombineMask(obt_display, self->window, kind, self->size.left, self->size.top, None, ShapeSet); } else { /* make the frame's shape match the clients */ - XShapeCombineShape(obt_display, self->window, ShapeBounding, + XShapeCombineShape(obt_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) { @@ -309,6 +310,14 @@ void frame_adjust_shape(ObFrame *self) ShapeBounding, 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 } diff --git a/openbox/frame.h b/openbox/frame.h index fd5adf74..8687381d 100644 --- a/openbox/frame.h +++ b/openbox/frame.h @@ -205,6 +205,9 @@ void frame_free(ObFrame *self); void frame_show(ObFrame *self); void frame_hide(ObFrame *self); void frame_adjust_theme(ObFrame *self); +#ifdef SHAPE +void frame_adjust_shape_kind(ObFrame *self, int kind); +#endif void frame_adjust_shape(ObFrame *self); void frame_adjust_area(ObFrame *self, gboolean moved, gboolean resized, gboolean fake); diff --git a/po/ca.po b/po/ca.po index 6baab061..50d5a240 100644 --- a/po/ca.po +++ b/po/ca.po @@ -14,6 +14,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" #: openbox/actions.c:149 #, c-format @@ -435,8 +436,8 @@ msgid_plural "" "Openbox is configured for %d desktops, but the current session has %d. " "Overriding the Openbox configuration." msgstr[0] "" -"El Openbox està configurat per a %d escriptori, però la sessió actual en te " -"%d. S'està modificant la configuració del Openbox." +"El Openbox està configurat per a %d escriptori, però la sessió actual en te %" +"d. S'està modificant la configuració del Openbox." msgstr[1] "" "El Openbox està configurat per a %d escriptoris, però la sessió actual en te " "%d. S'està modificant la configuració del Openbox." diff --git a/po/da.po b/po/da.po index 046a55a3..351e1c4f 100644 --- a/po/da.po +++ b/po/da.po @@ -14,6 +14,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" #: openbox/actions.c:149 #, c-format diff --git a/po/de.po b/po/de.po index 880027bf..758a06c1 100644 --- a/po/de.po +++ b/po/de.po @@ -18,6 +18,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" #: openbox/actions.c:149 #, c-format @@ -430,8 +431,8 @@ msgid_plural "" "Openbox is configured for %d desktops, but the current session has %d. " "Overriding the Openbox configuration." msgstr[0] "" -"Openbox wurde für %d Desktop konfiguriert, aber die aktuelle Sitzung hat %" -"d. Überschreibe die Openbox-Konfiguration." +"Openbox wurde für %d Desktop konfiguriert, aber die aktuelle Sitzung hat %d. " +"Überschreibe die Openbox-Konfiguration." msgstr[1] "" "Openbox wurde für %d Desktops konfiguriert, aber die aktuelle Sitzung hat %" "d. Überschreibe die Openbox-Konfiguration." diff --git a/po/en@boldquot.po b/po/en@boldquot.po index 27d3ab16..33856fdb 100644 --- a/po/en@boldquot.po +++ b/po/en@boldquot.po @@ -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 diff --git a/po/en@quot.po b/po/en@quot.po index 4a8ed324..adfbd9e6 100644 --- a/po/en@quot.po +++ b/po/en@quot.po @@ -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 diff --git a/po/fr.po b/po/fr.po index 031227ec..a32e61cd 100644 --- a/po/fr.po +++ b/po/fr.po @@ -18,6 +18,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ISO-8859-1\n" "Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" #: openbox/actions.c:149 #, c-format diff --git a/po/it.po b/po/it.po index f2a7e5a3..263e6ae0 100644 --- a/po/it.po +++ b/po/it.po @@ -17,6 +17,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" #: openbox/actions.c:149 #, c-format diff --git a/po/pt.po b/po/pt.po index 414b56fb..0a98580f 100644 --- a/po/pt.po +++ b/po/pt.po @@ -15,6 +15,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ISO-8859-1\n" "Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" #: openbox/actions.c:149 #, c-format diff --git a/po/sv.po b/po/sv.po index 46e5c444..5040d2f2 100644 --- a/po/sv.po +++ b/po/sv.po @@ -14,6 +14,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=iso-8859-1\n" "Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" #: openbox/actions.c:149 #, c-format diff --git a/tools/gdm-control/gdm-control.c b/tools/gdm-control/gdm-control.c index b3178e51..db28841d 100644 --- a/tools/gdm-control/gdm-control.c +++ b/tools/gdm-control/gdm-control.c @@ -259,7 +259,7 @@ int main(int argc, char **argv) d = XDisplayName(NULL); if (!d) { fprintf(stderr, - "Unable to fina an X display specified by the DISPLAY " + "Unable to find the X display specified by the DISPLAY " "environment variable. Ensure that it is set correctly."); return 1; }