@@ -53,6 +53,19 @@ def itemChange(self, change, value):
5353 def mouseDoubleClickEvent (self , event ):
5454 item = self .parentItem ()
5555 item .on_sizer_double_clicked ()
56+ super (BackdropSizer , self ).mouseDoubleClickEvent (event )
57+
58+ def mousePressEvent (self , event ):
59+ self .__prev_xy = (self .pos ().x (), self .pos ().y ())
60+ super (BackdropSizer , self ).mousePressEvent (event )
61+
62+ def mouseReleaseEvent (self , event ):
63+ current_xy = (self .pos ().x (), self .pos ().y ())
64+ if current_xy != self .__prev_xy :
65+ item = self .parentItem ()
66+ item .on_sizer_pos_mouse_release ()
67+ del self .__prev_xy
68+ super (BackdropSizer , self ).mouseReleaseEvent (event )
5669
5770 def paint (self , painter , option , widget ):
5871 """
@@ -143,8 +156,18 @@ def on_sizer_pos_changed(self, pos):
143156 self ._width = pos .x () + self ._sizer .size
144157 self ._height = pos .y () + self ._sizer .size
145158
159+ def on_sizer_pos_mouse_release (self ):
160+ size = {
161+ 'pos' : self .xy_pos ,
162+ 'width' : self ._width ,
163+ 'height' : self ._height }
164+ self .viewer ().node_backdrop_updated .emit (
165+ self .id , 'sizer_mouse_release' , size )
166+
146167 def on_sizer_double_clicked (self ):
147- self .auto_resize ()
168+ size = self .calc_backdrop_size ()
169+ self .viewer ().node_backdrop_updated .emit (
170+ self .id , 'sizer_double_clicked' , size )
148171
149172 def paint (self , painter , option , widget ):
150173 """
@@ -217,39 +240,17 @@ def get_nodes(self, inc_intersects=False):
217240 nodes .append (item )
218241 return nodes
219242
220- def auto_resize (self , nodes = None ):
243+ def calc_backdrop_size (self , nodes = None ):
221244 nodes = nodes or self .get_nodes (True )
222- if nodes :
223- padding = 40
224- nodes_rect = self ._combined_rect (nodes )
225- self .xy_pos = [nodes_rect .x () - padding , nodes_rect .y () - padding ]
226- self ._sizer .set_pos (nodes_rect .width () + (padding * 2 ),
227- nodes_rect .height () + (padding * 2 ))
228- return
229-
230- width , height = self ._min_size
231- self ._sizer .set_pos (width , height )
232-
233- def pre_init (self , viewer , pos = None ):
234- """
235- Called before node has been added into the scene.
236-
237- Args:
238- viewer (NodeGraphQt.widgets.viewer.NodeViewer): main viewer.
239- pos (tuple): cursor pos.
240- """
241- nodes = viewer .selected_nodes ()
242- if nodes :
243- padding = 40
244- scene = viewer .scene ()
245- group = scene .createItemGroup (nodes )
246- rect = group .boundingRect ()
247- scene .destroyItemGroup (group )
248- self .xy_pos = [rect .x () - padding , rect .y () - padding ]
249- self ._sizer .set_pos (rect .width () + (padding * 2 ),
250- rect .height () + (padding * 2 ))
251- else :
252- self .xy_pos = pos
245+ padding = 40
246+ nodes_rect = self ._combined_rect (nodes )
247+ return {
248+ 'pos' : [
249+ nodes_rect .x () - padding , nodes_rect .y () - padding
250+ ],
251+ 'width' : nodes_rect .width () + (padding * 2 ),
252+ 'height' : nodes_rect .height () + (padding * 2 )
253+ }
253254
254255 @property
255256 def minimum_size (self ):
0 commit comments