Hello community,

here is the log from the commit of package oxygen-gtk2 for openSUSE:Factory 
checked in at 2012-05-15 17:42:17
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/oxygen-gtk2 (Old)
 and      /work/SRC/openSUSE:Factory/.oxygen-gtk2.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "oxygen-gtk2", Maintainer is ""

Changes:
--------
--- /work/SRC/openSUSE:Factory/oxygen-gtk2/oxygen-gtk2.changes  2012-04-17 
22:00:32.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.oxygen-gtk2.new/oxygen-gtk2.changes     
2012-05-15 17:42:18.000000000 +0200
@@ -1,0 +2,7 @@
+Tue May 15 03:02:41 UTC 2012 - m...@suse.com
+
+- Update to version 1.2.4
+  * Bugfix release
+  * Disable build oxygen-gtk-deco by default 
+
+-------------------------------------------------------------------

Old:
----
  oxygen-gtk2-1.2.3.tar.bz2

New:
----
  oxygen-gtk2-1.2.4.tar.bz2

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ oxygen-gtk2.spec ++++++
--- /var/tmp/diff_new_pack.OknXt9/_old  2012-05-15 17:42:19.000000000 +0200
+++ /var/tmp/diff_new_pack.OknXt9/_new  2012-05-15 17:42:19.000000000 +0200
@@ -17,13 +17,13 @@
 
 
 Name:           oxygen-gtk2
-Version:        1.2.3
+Version:        1.2.4
 Release:        0
 Summary:        A Port of the default KDE Widget Theme (Oxygen), to GTK 2.x
 License:        LGPL-2.1+
 Group:          System/GUI/KDE
 Url:            
https://projects.kde.org/projects/playground/artwork/oxygen-gtk/
-Source0:        
ftp://ftp.kde.org/pub/kde/stable/oxygen-gtk2/1.2.3/src/%{name}-1.2.3.tar.bz2
+Source0:        
ftp://ftp.kde.org/pub/kde/stable/oxygen-gtk2/%{version}/src/%{name}-%{version}.tar.bz2
 Source100:      baselibs.conf
 BuildRequires:  cmake
 BuildRequires:  gcc-c++
@@ -90,7 +90,7 @@
 This package contains the Oxygen gtk 2.x theme.
 
 %prep
-%setup -q -n %{name}-1.2.3
+%setup -q
 
 %build
 mkdir -p build
@@ -120,7 +120,6 @@
 %files -n gtk2-theme-oxygen
 %defattr(-,root,root,-)
 %doc AUTHORS COPYING README TODO
-%{_bindir}/oxygen-gtk-deco
 %{_bindir}/oxygen-gtk-demo
 %dir %{_datadir}/themes/oxygen-gtk
 %{_datadir}/themes/oxygen-gtk/gtk-2.0/

++++++ oxygen-gtk2-1.2.3.tar.bz2 -> oxygen-gtk2-1.2.4.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/oxygen-gtk2-1.2.3/CMakeLists.txt 
new/oxygen-gtk2-1.2.4/CMakeLists.txt
--- old/oxygen-gtk2-1.2.3/CMakeLists.txt        2012-04-13 14:55:44.000000000 
+0200
+++ new/oxygen-gtk2-1.2.4/CMakeLists.txt        2012-05-14 08:39:08.000000000 
+0200
@@ -13,7 +13,7 @@
 set( CPACK_PACKAGE_VENDOR "h...@oxygen-icons.org" )
 set( CPACK_PACKAGE_VERSION_MAJOR "1" )
 set( CPACK_PACKAGE_VERSION_MINOR "2" )
-set( CPACK_PACKAGE_VERSION_PATCH "3" )
+set( CPACK_PACKAGE_VERSION_PATCH "4" )
 set( CPACK_SOURCE_IGNORE_FILES "build" "^${PROJECT_SOURCE_DIR}.*/.git/" )
 
 ##################################
@@ -46,6 +46,11 @@
     set( OXYGEN_DEBUG_INNERSHADOWS 0 )
 endif( NOT DEFINED OXYGEN_DEBUG_INNERSHADOWS )
 
+# Set to 1 to build windeco test app (normal users rarely need this)
+if( NOT DEFINED BUILD_DECO_TEST )
+    set( BUILD_DECO_TEST 0 )
+endif( NOT DEFINED BUILD_DECO_TEST )
+
 # Set to 1 to replace gtk stock icons
 # with oxygen-icons
 if( NOT DEFINED OXYGEN_ICON_HACK )
@@ -145,6 +150,7 @@
 #########
 message( "Flags: " )
 message( "  OXYGEN_DEBUG ${OXYGEN_DEBUG}" )
+message( "  BUILD_DECO_TEST ${BUILD_DECO_TEST}" )
 message( "  OXYGEN_DEBUG_INNERSHADOWS ${OXYGEN_DEBUG_INNERSHADOWS}" )
 message( "  OXYGEN_ICON_HACK ${OXYGEN_ICON_HACK}" )
 message( "  OXYGEN_FORCE_KDE_ICONS_AND_FONTS 
${OXYGEN_FORCE_KDE_ICONS_AND_FONTS}" )
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/oxygen-gtk2-1.2.3/README new/oxygen-gtk2-1.2.4/README
--- old/oxygen-gtk2-1.2.3/README        2012-04-13 14:55:44.000000000 +0200
+++ new/oxygen-gtk2-1.2.4/README        2012-05-14 08:39:08.000000000 +0200
@@ -81,6 +81,7 @@
 
   OXYGEN_DISABLE_ARGB_HACK - set it to 1 to check if app will crash without 
the hack. Oxygen-GTK will print app name to report.
   OXYGEN_ARGB_DEBUG - set it to 1 to print all debug information concerning 
ARGB hack (mainly to debug blacklist logic).
+  OXYGEN_DISABLE_INNER_SHADOWS_HACK - set it to 1 to disable inner shadows 
hack, which might make some widgets render in a wrong way or not render at all
 
 III.2 DBus support
 ------------------
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/oxygen-gtk2-1.2.3/demo/CMakeLists.txt 
new/oxygen-gtk2-1.2.4/demo/CMakeLists.txt
--- old/oxygen-gtk2-1.2.3/demo/CMakeLists.txt   2012-04-13 14:55:44.000000000 
+0200
+++ new/oxygen-gtk2-1.2.4/demo/CMakeLists.txt   2012-05-14 08:39:08.000000000 
+0200
@@ -21,7 +21,9 @@
 install( TARGETS oxygen-gtk-demo DESTINATION ${CMAKE_INSTALL_PREFIX}/bin )
 
 ########### next target ###############
-set( deco_test_SOURCES oxygengtkdeco_main.cpp )
-add_executable( oxygen-gtk-deco ${deco_test_SOURCES} )
-target_link_libraries( oxygen-gtk-deco ${GTK_LIBRARIES} ${CAIRO_LIBRARIES} 
${X11_X11_LIB} ${CMAKE_DL_LIBS} )
-install( TARGETS oxygen-gtk-deco DESTINATION ${CMAKE_INSTALL_PREFIX}/bin )
+if( BUILD_DECO_TEST )
+    set( deco_test_SOURCES oxygengtkdeco_main.cpp )
+    add_executable( oxygen-gtk-deco ${deco_test_SOURCES} )
+    target_link_libraries( oxygen-gtk-deco ${GTK_LIBRARIES} ${CAIRO_LIBRARIES} 
${X11_X11_LIB} ${CMAKE_DL_LIBS} )
+    install( TARGETS oxygen-gtk-deco DESTINATION ${CMAKE_INSTALL_PREFIX}/bin )
+endif( BUILD_DECO_TEST )
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/oxygen-gtk2-1.2.3/rc/icons4 
new/oxygen-gtk2-1.2.4/rc/icons4
--- old/oxygen-gtk2-1.2.3/rc/icons4     2012-04-13 14:55:44.000000000 +0200
+++ new/oxygen-gtk2-1.2.4/rc/icons4     2012-05-14 08:39:08.000000000 +0200
@@ -101,19 +101,22 @@
 gtk-zoom-out actions/zoom-out.png
 stock_edit-bookmark actions/bookmarks-organize.png
 
+gimp-info status/dialog-information.png
+gimp-warning status/dialog-warning.png
+gimp-reset actions/view-refresh.png
+gimp-images mimetypes/image-x-generic.png
+gimp-tool-options actions/configure.png
+
+gimp-edit NONE
 gimp-anchor NONE
 gimp-duplicate NONE
-gimp-edit actions/edit.png
-gimp-info actions/dialog-information.png
 gimp-linked NONE
 gimp-paste-as-new NONE
 gimp-paste-into NONE
-gimp-reset actions/reload.png
 gimp-selection-stroke NONE
 gimp-to-path NONE
 gimp-to-selection NONE
 gimp-visible NONE
-gimp-warning actions/dialog-warning.png
 gimp-selection-replace NONE
 gimp-selection-add NONE
 gimp-selection-subtract NONE
@@ -134,10 +137,8 @@
 gimp-resize NONE
 gimp-scale NONE
 gimp-selection-to-channel NONE
-gimp-tool-options actions/tool.png
 gimp-device-status NONE
 gimp-layer-to-imagesize NONE
-gimp-images mimetypes/image.png
 gimp-layers NONE
 gimp-channes NONE
 gimp-paths NONE
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/oxygen-gtk2-1.2.3/src/CMakeLists.txt 
new/oxygen-gtk2-1.2.4/src/CMakeLists.txt
--- old/oxygen-gtk2-1.2.3/src/CMakeLists.txt    2012-04-13 14:55:44.000000000 
+0200
+++ new/oxygen-gtk2-1.2.4/src/CMakeLists.txt    2012-05-14 08:39:08.000000000 
+0200
@@ -19,6 +19,7 @@
     animations/oxygenmainwindowdata.cpp
     animations/oxygenmenubarstatedata.cpp
     animations/oxygenmenustatedata.cpp
+    animations/oxygenmenuitemengine.cpp
     animations/oxygenmenuitemdata.cpp
     animations/oxygenpaneddata.cpp
     animations/oxygensignal.cpp
@@ -54,6 +55,7 @@
     oxygenoptionmap.cpp
     oxygenpalette.cpp
     oxygenpathlist.cpp
+    oxygenpropertynames.cpp
     oxygenqtsettings.cpp
     oxygenrcstyle.cpp
     oxygenrgba.cpp
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/oxygen-gtk2-1.2.3/src/animations/oxygenanimations.cpp 
new/oxygen-gtk2-1.2.4/src/animations/oxygenanimations.cpp
--- old/oxygen-gtk2-1.2.3/src/animations/oxygenanimations.cpp   2012-04-13 
14:55:44.000000000 +0200
+++ new/oxygen-gtk2-1.2.4/src/animations/oxygenanimations.cpp   2012-05-14 
08:39:08.000000000 +0200
@@ -147,7 +147,8 @@
 
         // https://bugzilla.gnome.org/show_bug.cgi?id=643416
         #if ENABLE_INNER_SHADOWS_HACK
-        _innerShadowHook.connect( "realize", 
(GSignalEmissionHook)innerShadowHook, this );
+        if(!getenv("OXYGEN_DISABLE_INNER_SHADOWS_HACK"))
+            _innerShadowHook.connect( "realize", 
(GSignalEmissionHook)innerShadowHook, this );
         #endif
 
         _sizeAllocationHook.connect( "size-allocate", 
(GSignalEmissionHook)sizeAllocationHook, this );
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/oxygen-gtk2-1.2.3/src/animations/oxygendialogengine.cpp 
new/oxygen-gtk2-1.2.4/src/animations/oxygendialogengine.cpp
--- old/oxygen-gtk2-1.2.3/src/animations/oxygendialogengine.cpp 2012-04-13 
14:55:44.000000000 +0200
+++ new/oxygen-gtk2-1.2.4/src/animations/oxygendialogengine.cpp 2012-05-14 
08:39:08.000000000 +0200
@@ -73,12 +73,17 @@
 
         #if OXYGEN_DEBUG
         std::cerr << "DialogEngine::registerWidget - numOfResponsesFound: " << 
numOfResponsesFound << std::endl;
-        for(int i=0; i<numOfResponseIDs; i++)
-        {
-            std::cerr << Gtk::TypeNames::response( responses[i] ) << ", ";
-            if(i==numOfResponsesFound-1) std::cerr<<"_END_of_found_,";
-        }
-        std::cerr << "\n\n";
+        std::cerr << "List of responses found: { ";
+
+        for(int i=0; i<numOfResponsesFound; i++)
+        { std::cerr << Gtk::TypeNames::response( responses[i] ) << 
(i==numOfResponsesFound-1 ? " " :", "); }
+
+        std::cerr << "}; remaining in the list: { ";
+
+        for(int i=numOfResponsesFound; i<numOfResponseIDs; i++)
+        { std::cerr << Gtk::TypeNames::response( responses[i] ) << 
(i==numOfResponseIDs-1 ? " " :", "); }
+
+        std::cerr << "}\n";
         #endif
 
         // change order
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/oxygen-gtk2-1.2.3/src/animations/oxygeninnershadowdata.cpp 
new/oxygen-gtk2-1.2.4/src/animations/oxygeninnershadowdata.cpp
--- old/oxygen-gtk2-1.2.3/src/animations/oxygeninnershadowdata.cpp      
2012-04-13 14:55:44.000000000 +0200
+++ new/oxygen-gtk2-1.2.4/src/animations/oxygeninnershadowdata.cpp      
2012-05-14 08:39:08.000000000 +0200
@@ -85,7 +85,7 @@
     void InnerShadowData::registerChild( GtkWidget* widget )
     {
 
-        #if GTK_CHECK_VERSION(2,22,0)
+        #if ENABLE_INNER_SHADOWS_HACK
 
         // make sure widget is not already in map
         if( _childrenData.find( widget ) != _childrenData.end() ) return;
@@ -127,6 +127,7 @@
     
//________________________________________________________________________________
     void InnerShadowData::unregisterChild( GtkWidget* widget )
     {
+        #if ENABLE_INNER_SHADOWS_HACK
 
         ChildDataMap::iterator iter( _childrenData.find( widget ) );
         if( iter == _childrenData.end() ) return;
@@ -141,11 +142,13 @@
         iter->second.disconnect( widget );
         _childrenData.erase( iter );
 
+        #endif
     }
 
     
//________________________________________________________________________________
     void InnerShadowData::ChildData::disconnect( GtkWidget* widget )
     {
+        #if ENABLE_INNER_SHADOWS_HACK
 
         // disconnect signals
         _unrealizeId.disconnect();
@@ -164,6 +167,8 @@
         // restore compositing if different from initial state
         if( GDK_IS_WINDOW( window ) && !gdk_window_is_destroyed(window) && 
gdk_window_get_composited( window ) != _initiallyComposited )
         { gdk_window_set_composited( window, _initiallyComposited ); }
+
+        #endif
     }
 
     
//____________________________________________________________________________________________
@@ -183,7 +188,7 @@
     gboolean InnerShadowData::targetExposeEvent( GtkWidget* widget, 
GdkEventExpose* event, gpointer )
     {
 
-        #if GTK_CHECK_VERSION(2,24,0)
+        #if ENABLE_INNER_SHADOWS_HACK
         GtkWidget* child=gtk_bin_get_child(GTK_BIN(widget));
         GdkWindow* window=gtk_widget_get_window(child);
 
@@ -328,7 +333,7 @@
             allocation.x-offsetX, allocation.y-offsetY, 
allocation.width+offsetX*2, allocation.height+offsetY*2,
             options, data );
 
-        #endif // Gtk version
+        #endif // enable inner shadows hack
 
         // let the event propagate
         return FALSE;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/oxygen-gtk2-1.2.3/src/animations/oxygenmenuitemengine.cpp 
new/oxygen-gtk2-1.2.4/src/animations/oxygenmenuitemengine.cpp
--- old/oxygen-gtk2-1.2.3/src/animations/oxygenmenuitemengine.cpp       
1970-01-01 01:00:00.000000000 +0100
+++ new/oxygen-gtk2-1.2.4/src/animations/oxygenmenuitemengine.cpp       
2012-05-14 08:39:08.000000000 +0200
@@ -0,0 +1,53 @@
+/*
+* this file is part of the oxygen gtk engine
+* Copyright (c) 2010 Hugo Pereira Da Costa <h...@oxygen-icons.org>
+*
+* This  library is free  software; you can  redistribute it and/or
+* modify it  under  the terms  of the  GNU Lesser  General  Public
+* License  as published  by the Free  Software  Foundation; either
+* version 2 of the License, or(at your option ) any later version.
+*
+* This library is distributed  in the hope that it will be useful,
+* but  WITHOUT ANY WARRANTY; without even  the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License  along  with  this library;  if not,  write to  the Free
+* Software Foundation, Inc., 51  Franklin St, Fifth Floor, Boston,
+* MA 02110-1301, USA.
+*/
+
+#include "oxygenmenuitemengine.h"
+#include <iostream>
+
+namespace Oxygen
+{
+
+    //_______________________________________________________________
+    bool MenuItemEngine::registerMenu( GtkWidget* parent )
+    {
+
+        // check widget
+        if( !GTK_IS_MENU( parent ) ) return false;
+
+        // keep track of added children
+        bool found( false );
+
+        // get children
+        GList* children( gtk_container_get_children( GTK_CONTAINER( parent ) ) 
);
+        for( GList *child = g_list_first( children ); child; child = 
g_list_next( child ) )
+        {
+            if( !GTK_IS_MENU_ITEM( child->data ) ) continue;
+            GtkWidget* widget( gtk_bin_get_child( GTK_BIN( child->data ) ) );
+            if( registerWidget( widget ) ) found = true;
+        }
+
+        // free list of children
+        if( children ) g_list_free( children );
+
+        return found;
+
+    }
+
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/oxygen-gtk2-1.2.3/src/animations/oxygenmenuitemengine.h 
new/oxygen-gtk2-1.2.4/src/animations/oxygenmenuitemengine.h
--- old/oxygen-gtk2-1.2.3/src/animations/oxygenmenuitemengine.h 2012-04-13 
14:55:44.000000000 +0200
+++ new/oxygen-gtk2-1.2.4/src/animations/oxygenmenuitemengine.h 2012-05-14 
08:39:08.000000000 +0200
@@ -51,6 +51,9 @@
         virtual ~MenuItemEngine( void )
         {}
 
+        //! register all menuItems children of a menu
+        virtual bool registerMenu( GtkWidget* );
+
     };
 
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/oxygen-gtk2-1.2.3/src/oxygenpropertynames.cpp 
new/oxygen-gtk2-1.2.4/src/oxygenpropertynames.cpp
--- old/oxygen-gtk2-1.2.3/src/oxygenpropertynames.cpp   1970-01-01 
01:00:00.000000000 +0100
+++ new/oxygen-gtk2-1.2.4/src/oxygenpropertynames.cpp   2012-05-14 
08:39:08.000000000 +0200
@@ -0,0 +1,34 @@
+/*
+* oxygenpropertynames.cpp
+* pass some window mouse press/release/move event actions to window manager
+* -------------------
+*
+* Copyright (c) 2012 Hugo Pereira Da Costa <h...@oxygen-icons.org>
+*
+* Largely inspired from Qtcurve style
+* Copyright (C) Craig Drummond, 2003 - 2010 craig.p.drumm...@gmail.com
+*
+* This  library is free  software; you can  redistribute it and/or
+* modify it  under  the terms  of the  GNU Lesser  General  Public
+* License  as published  by the Free  Software  Foundation; either
+* version 2 of the License, or( at your option ) any later version.
+*
+* This library is distributed  in the hope that it will be useful,
+* but  WITHOUT ANY WARRANTY; without even  the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License  along  with  this library;  if not,  write to  the Free
+* Software Foundation, Inc., 51  Franklin St, Fifth Floor, Boston,
+* MA 02110-1301, USA.
+*/
+#include "oxygenpropertynames.h"
+
+namespace Oxygen
+{
+
+    const char* const PropertyNames::noAnimations = "_kde_no_animations";
+    const char* const PropertyNames::noWindowGrab = "_kde_no_window_grab";
+
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/oxygen-gtk2-1.2.3/src/oxygenpropertynames.h 
new/oxygen-gtk2-1.2.4/src/oxygenpropertynames.h
--- old/oxygen-gtk2-1.2.3/src/oxygenpropertynames.h     1970-01-01 
01:00:00.000000000 +0100
+++ new/oxygen-gtk2-1.2.4/src/oxygenpropertynames.h     2012-05-14 
08:39:08.000000000 +0200
@@ -0,0 +1,43 @@
+#ifndef oxygenpropertynames_h
+#define oxygenpropertynames_h
+
+/*
+* oxygenpropertynames.h
+* pass some window mouse press/release/move event actions to window manager
+* -------------------
+*
+* Copyright (c) 2012 Hugo Pereira Da Costa <h...@oxygen-icons.org>
+*
+* Largely inspired from Qtcurve style
+* Copyright (C) Craig Drummond, 2003 - 2010 craig.p.drumm...@gmail.com
+*
+* This  library is free  software; you can  redistribute it and/or
+* modify it  under  the terms  of the  GNU Lesser  General  Public
+* License  as published  by the Free  Software  Foundation; either
+* version 2 of the License, or( at your option ) any later version.
+*
+* This library is distributed  in the hope that it will be useful,
+* but  WITHOUT ANY WARRANTY; without even  the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License  along  with  this library;  if not,  write to  the Free
+* Software Foundation, Inc., 51  Franklin St, Fifth Floor, Boston,
+* MA 02110-1301, USA.
+*/
+
+namespace Oxygen
+{
+
+    struct PropertyNames
+    {
+
+        static const char* const noAnimations;
+        static const char* const noWindowGrab;
+
+    };
+
+}
+
+#endif
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/oxygen-gtk2-1.2.3/src/oxygenstyle.cpp 
new/oxygen-gtk2-1.2.4/src/oxygenstyle.cpp
--- old/oxygen-gtk2-1.2.3/src/oxygenstyle.cpp   2012-04-13 14:55:44.000000000 
+0200
+++ new/oxygen-gtk2-1.2.4/src/oxygenstyle.cpp   2012-05-14 08:39:08.000000000 
+0200
@@ -2605,7 +2605,7 @@
                         pango_font_description_set_family( fdesc, 
font.family().c_str() );
                         pango_font_description_set_weight( fdesc, PangoWeight( 
(font.weight()+2)*10 ) );
                         pango_font_description_set_style( fdesc, font.italic() 
? PANGO_STYLE_ITALIC : PANGO_STYLE_NORMAL );
-                        pango_font_description_set_size( fdesc, 
int(font.size()*PANGO_SCALE) );
+                        pango_font_description_set_absolute_size( fdesc, 
int(font.size()*PANGO_SCALE) );
 
                         PangoLayout* layout( 
pango_cairo_create_layout(context) );
                         pango_layout_set_text( layout,caption, -1 );
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/oxygen-gtk2-1.2.3/src/oxygenstylewrapper.cpp 
new/oxygen-gtk2-1.2.4/src/oxygenstylewrapper.cpp
--- old/oxygen-gtk2-1.2.3/src/oxygenstylewrapper.cpp    2012-04-13 
14:55:44.000000000 +0200
+++ new/oxygen-gtk2-1.2.4/src/oxygenstylewrapper.cpp    2012-05-14 
08:39:08.000000000 +0200
@@ -1198,6 +1198,9 @@
                 // add mask if needed
                 if( GTK_IS_MENU(widget) )
                 {
+
+                    
Style::instance().animations().menuItemEngine().registerMenu( widget );
+
                     
Style::instance().animations().widgetSizeEngine().registerWidget( widget );
                     const bool 
wasAlpha(Style::instance().animations().widgetSizeEngine().wasAlpha(widget));
                     if( !(options&Alpha) )
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/oxygen-gtk2-1.2.3/src/oxygenwindowmanager.cpp 
new/oxygen-gtk2-1.2.4/src/oxygenwindowmanager.cpp
--- old/oxygen-gtk2-1.2.3/src/oxygenwindowmanager.cpp   2012-04-13 
14:55:44.000000000 +0200
+++ new/oxygen-gtk2-1.2.4/src/oxygenwindowmanager.cpp   2012-05-14 
08:39:08.000000000 +0200
@@ -26,6 +26,7 @@
 */
 
 #include "oxygenwindowmanager.h"
+#include "oxygenpropertynames.h"
 #include "oxygenstyle.h"
 #include "config.h"
 
@@ -85,10 +86,28 @@
     bool WindowManager::registerWidget( GtkWidget* widget )
     {
 
-        if( _map.contains( widget ) || widgetIsBlackListed( widget ) ) return 
false;
+        if( _map.contains( widget ) ) return false;
+
+        // check against black listed typenames
+        if( widgetIsBlackListed( widget ) )
+        {
+            registerBlackListWidget( widget );
+            return false;
+        }
+
+        // check blocking property
+        if( g_object_get_data( G_OBJECT( widget ), PropertyNames::noWindowGrab 
) )
+        {
+            registerBlackListWidget( widget );
+            return false;
+        }
 
         // Window with no decorations (set by app), let window manage it self
-        if( GTK_IS_WINDOW( widget ) && !gtk_window_get_decorated( GTK_WINDOW( 
widget ) ) ) return false;
+        if( GTK_IS_WINDOW( widget ) && !gtk_window_get_decorated( GTK_WINDOW( 
widget ) ) )
+        {
+            registerBlackListWidget( widget );
+            return false;
+        }
 
         // widgets used in tabs also must be ignored (happens, unfortunately)
         GtkWidget* parent( gtk_widget_get_parent( widget ) );
@@ -105,6 +124,13 @@
             std::string( G_OBJECT_TYPE_NAME( widget ) ) == "GtkWindow" &&
             (gtk_widget_get_events ( widget ) &
             (GDK_BUTTON_PRESS_MASK|GDK_BUTTON_RELEASE_MASK) ) )
+        {
+            registerBlackListWidget( widget );
+            return false;
+        }
+
+        // check for blacklisted parent
+        if( widgetHasBlackListedParent( widget ) )
         { return false; }
 
         #if OXYGEN_DEBUG
@@ -154,6 +180,41 @@
     }
 
     //_________________________________________________
+    bool WindowManager::registerBlackListWidget( GtkWidget* widget )
+    {
+
+        // make sure that widget is not already connected
+        if( _blackListWidgets.find( widget ) != _blackListWidgets.end() ) 
return false;
+
+        #if OXYGEN_DEBUG
+        std::cerr << "Oxygen::WindowManager::registerBlackListWidget - " << 
widget << " (" << G_OBJECT_TYPE_NAME( widget ) << ")" << std::endl;
+        #endif
+
+      // connect destroy signal and insert in map
+        Signal destroyId;
+        destroyId.connect( G_OBJECT( widget ), "destroy", G_CALLBACK( 
wmBlackListDestroy ), this );
+        _blackListWidgets.insert( std::make_pair( widget, destroyId ) );
+        return true;
+
+    }
+
+    //_________________________________________________
+    void WindowManager::unregisterBlackListWidget( GtkWidget* widget )
+    {
+
+        WidgetMap::iterator iter( _blackListWidgets.find( widget ) );
+        if( iter == _blackListWidgets.end() ) return;
+
+        #if OXYGEN_DEBUG
+        std::cerr << "Oxygen::WindowManager::unregisterBlackListWidget - " << 
widget << " (" << G_OBJECT_TYPE_NAME( widget ) << ")" << std::endl;
+        #endif
+
+        iter->second.disconnect();
+        _blackListWidgets.erase( widget );
+
+    }
+
+    //_________________________________________________
     void WindowManager::setMode( WindowManager::Mode mode )
     {
         if( mode == _mode ) return;
@@ -180,6 +241,13 @@
     }
 
     //_________________________________________________
+    gboolean WindowManager::wmBlackListDestroy( GtkWidget* widget, gpointer 
data )
+    {
+        static_cast<WindowManager*>(data)->unregisterBlackListWidget( widget );
+        return false;
+    }
+
+    //_________________________________________________
     gboolean WindowManager::wmButtonPress(GtkWidget *widget, GdkEventButton* 
event, gpointer data )
     {
 
@@ -572,6 +640,21 @@
     }
 
     //_________________________________________________
+    bool WindowManager::widgetHasBlackListedParent( GtkWidget* widget ) const
+    {
+
+        #if OXYGEN_DEBUG
+        std::cerr << "Oxygen::WindowManager::widgetHasBlackListedParent - " << 
widget << " (" << G_OBJECT_TYPE_NAME( widget ) << ")" << std::endl;
+        #endif
+
+        // loop over widget parent
+        for( GtkWidget* parent = gtk_widget_get_parent( widget ); parent; 
parent = gtk_widget_get_parent( parent ) )
+        { if( _blackListWidgets.find( parent ) != _blackListWidgets.end() ) 
return true; }
+
+        return false;
+    }
+
+    //_________________________________________________
     void WindowManager::initializeBlackList( void )
     {
         // clear list
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/oxygen-gtk2-1.2.3/src/oxygenwindowmanager.h 
new/oxygen-gtk2-1.2.4/src/oxygenwindowmanager.h
--- old/oxygen-gtk2-1.2.3/src/oxygenwindowmanager.h     2012-04-13 
14:55:44.000000000 +0200
+++ new/oxygen-gtk2-1.2.4/src/oxygenwindowmanager.h     2012-05-14 
08:39:08.000000000 +0200
@@ -93,6 +93,9 @@
         //! on window destroy
         static gboolean wmDestroy( GtkWidget*, gpointer );
 
+        //! on window destroy
+        static gboolean wmBlackListDestroy(  GtkWidget*, gpointer );
+
         //! delayed drag
         static gboolean startDelayedDrag( gpointer );
 
@@ -106,10 +109,16 @@
 
         //! register widget
         /*! returns true if widget is effictively registered */
-        virtual bool registerWidget( GtkWidget* );
+        bool registerWidget( GtkWidget* );
 
         //! unregister widget
-        virtual void unregisterWidget( GtkWidget* );
+        void unregisterWidget( GtkWidget* );
+
+        //! register blacklist widget
+        bool registerBlackListWidget( GtkWidget* );
+
+        //! unregister blacklist widget
+        void unregisterBlackListWidget( GtkWidget* );
 
         //! start dragging widget
         bool startDrag( GtkWidget*, GdkEventMotion* );
@@ -166,6 +175,9 @@
         bool widgetIsBlackListed( GtkWidget* widget ) const
         { return std::find_if( _blackList.begin(), _blackList.end(), 
BlackListFTor( G_OBJECT( widget ) ) ) != _blackList.end(); }
 
+        //! return true if widget has a black listed parent
+        bool widgetHasBlackListedParent( GtkWidget* widget ) const;
+
         //! stores connections
         class Data
         {
@@ -237,9 +249,14 @@
         int _x;
         int _y;
 
-        //! widget black list
+        //! widget typenames black-list
         std::vector<std::string> _blackList;
 
+        //! widget black-list
+        typedef std::map< GtkWidget*, Signal > WidgetMap;
+        WidgetMap _blackListWidgets;
+
+
         //! map widgets to data structure
         DataMap<Data> _map;
 

-- 
To unsubscribe, e-mail: opensuse-commit+unsubscr...@opensuse.org
For additional commands, e-mail: opensuse-commit+h...@opensuse.org

Reply via email to