From b2a911c9b1cae912588c7185ba174f0b06db8a4f Mon Sep 17 00:00:00 2001 From: Garux Date: Mon, 14 May 2018 12:54:02 +0300 Subject: [PATCH] * fix: update BrushClipPlane rendering on undo --- radiant/clippertool.cpp | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/radiant/clippertool.cpp b/radiant/clippertool.cpp index a38682d3..31a85e57 100644 --- a/radiant/clippertool.cpp +++ b/radiant/clippertool.cpp @@ -72,9 +72,23 @@ void Clipper_setPlanePoints( const ClipperPoints& points ){ } void Clipper_SelectionChanged( const Selectable& selectable ){ +// globalOutputStream() << " Clipper_SelectionChanged\n"; if ( Clipper_ok() ) Clipper_update(); } +#include "gtkutil/idledraw.h" +void Clipper_BoundsChanged(){ +// globalOutputStream() << " Clipper_BoundsChanged\n"; + if ( Clipper_ok() ) + Clipper_update(); +} + +IdleDraw g_idle_clipper_update = IdleDraw( FreeCaller() ); + +void Clipper_BoundsChanged_Queue(){ + g_idle_clipper_update.queueDraw(); +} + void Clipper_modeChanged( bool isClipper ){ GdkCursor* cursor = isClipper? g_clipper_cursor : 0; @@ -160,6 +174,8 @@ void Clipper_registerCommands(){ GlobalCommands_insert( "ClipperFlip", FreeCaller(), Accelerator( GDK_Return, (GdkModifierType)GDK_CONTROL_MASK ) ); } +SignalHandlerId ClipperTool_boundsChanged; + void Clipper_Construct(){ g_clipper_cursor = gdk_cursor_new( GDK_HAND2 ); @@ -172,8 +188,11 @@ void Clipper_Construct(){ typedef FreeCaller1 ClipperSelectionChangedCaller; GlobalSelectionSystem().addSelectionChangeCallback( ClipperSelectionChangedCaller() ); + + ClipperTool_boundsChanged = GlobalSceneGraph().addBoundsChangedCallback( FreeCaller() ); } void Clipper_Destroy(){ gdk_cursor_unref( g_clipper_cursor ); + GlobalSceneGraph().removeBoundsChangedCallback( ClipperTool_boundsChanged ); }