Description: Only register menubar to animation engine if the widget is actually valid. Origin: backport [https://bugs.kde.org/show_bug.cgi?id=331020] Author: Hugo Pereira Da Costa Reviewed-by: Enrique Hernández Bello Last-Update: 2016-04-28 Index: oxygen-gtk3-1.0.2/src/oxygenthemingengine.cpp =================================================================== --- oxygen-gtk3-1.0.2.orig/src/oxygenthemingengine.cpp 2016-04-28 14:00:13.240694400 +0100 +++ oxygen-gtk3-1.0.2/src/oxygenthemingengine.cpp 2016-04-28 14:09:59.178368300 +0100 @@ -937,23 +937,28 @@ if( Gtk::gtk_widget_path_has_type( path, GTK_TYPE_FRAME ) ) { Style::instance().renderGroupBoxBackground( context, widget, x, y, w, h, Blend ); } - MenuBarStateEngine& engine( Style::instance().animations().menuBarStateEngine() ); - engine.registerWidget(widget); + if( widget ) + { - // draw animated or fade-out rect - if( engine.animatedRectangleIsValid( widget ) ) - { + // animation + MenuBarStateEngine& engine( Style::instance().animations().menuBarStateEngine() ); + engine.registerWidget(widget); - const GdkRectangle& rect( engine.animatedRectangle( widget ) ); - Style::instance().renderMenuItemRect( context, 0L, engine.widget( widget, AnimationCurrent ), rect.x, rect.y, rect.width, rect.height, Hover|Blend ); + // draw animated or fade-out rect + if( engine.animatedRectangleIsValid( widget ) ) + { - } else if( engine.isAnimated( widget, AnimationPrevious ) ) { + const GdkRectangle& rect( engine.animatedRectangle( widget ) ); + Style::instance().renderMenuItemRect( context, 0L, engine.widget( widget, AnimationCurrent ), rect.x, rect.y, rect.width, rect.height, Hover|Blend ); - const AnimationData data( engine.animationData( widget, AnimationPrevious ) ); - const GdkRectangle& rect( engine.rectangle( widget, AnimationPrevious ) ); - Style::instance().renderMenuItemRect( context, 0L, engine.widget( widget, AnimationPrevious ), rect.x, rect.y, rect.width, rect.height, Hover|Blend, data ); + } else if( engine.isAnimated( widget, AnimationPrevious ) ) { - } + const AnimationData data( engine.animationData( widget, AnimationPrevious ) ); + const GdkRectangle& rect( engine.rectangle( widget, AnimationPrevious ) ); + Style::instance().renderMenuItemRect( context, 0L, engine.widget( widget, AnimationPrevious ), rect.x, rect.y, rect.width, rect.height, Hover|Blend, data ); + } + + } return; } else if( gtk_widget_path_is_type( path, GTK_TYPE_MENU ) ) {