@@ -351,6 +351,16 @@ def __init__(self):
351351 self .allAttrs = []
352352 self .stringAttrs = []
353353
354+ self .thumbnailWidget = None
355+ self .sceneLayout = None
356+ self .selectedIndices = []
357+
358+ #: List of _ImageItems
359+ self .items = []
360+
361+ self ._errcount = 0
362+ self ._successcount = 0
363+
354364 self .info = gui .widgetLabel (
355365 gui .vBox (self .controlArea , "Info" ),
356366 "Waiting for input.\n "
@@ -400,16 +410,6 @@ def __init__(self):
400410 )
401411 self .resize (800 , 600 )
402412
403- self .thumbnailWidget = None
404- self .sceneLayout = None
405- self .selectedIndices = []
406-
407- #: List of _ImageItems
408- self .items = []
409-
410- self ._errcount = 0
411- self ._successcount = 0
412-
413413 self .loader = ImageLoader (self )
414414
415415 def setData (self , data ):
@@ -513,11 +513,7 @@ def set_pixmap(future, thumb=thumbnail):
513513 self .sceneLayout = layout
514514
515515 if self .sceneLayout :
516- width = (self .sceneView .width () -
517- self .sceneView .verticalScrollBar ().width ())
518- self .thumbnailWidget .reflow (width )
519- self .thumbnailWidget .setPreferredWidth (width )
520- self .sceneLayout .activate ()
516+ self ._updateGeometryConstraints ()
521517
522518 def urlFromValue (self , value ):
523519 variable = value .variable
@@ -567,15 +563,7 @@ def updateSize(self):
567563 for item in self .thumbnailItems ():
568564 item .setThumbnailSize (size )
569565
570- if self .thumbnailWidget :
571- width = (self .sceneView .width () -
572- self .sceneView .verticalScrollBar ().width ())
573-
574- self .thumbnailWidget .reflow (width )
575- self .thumbnailWidget .setPreferredWidth (width )
576-
577- if self .sceneLayout :
578- self .sceneLayout .activate ()
566+ self ._updateGeometryConstraints ()
579567
580568 def updateTitles (self ):
581569 titleAttr = self .allAttrs [self .titleAttr ]
@@ -635,25 +623,32 @@ def _updateStatus(self, future):
635623 def _updateSceneRect (self ):
636624 self .scene .setSceneRect (self .scene .itemsBoundingRect ())
637625
626+ def _updateGeometryConstraints (self ):
627+ # Update the thumbnail grid widget's width constraint (derived from
628+ # the viewport's width
629+ if self .thumbnailWidget is not None :
630+ width = (self .sceneView .width () -
631+ self .sceneView .verticalScrollBar ().width ())
632+ width = width - 2
633+ self .thumbnailWidget .reflow (width )
634+ self .thumbnailWidget .setPreferredWidth (width )
635+ self .thumbnailWidget .layout ().activate ()
636+
638637 def onDeleteWidget (self ):
639638 self ._cancelAllFutures ()
640639 self .clear ()
641640
642641 def eventFilter (self , receiver , event ):
643642 if receiver is self .sceneView and event .type () == QEvent .Resize \
644643 and self .thumbnailWidget :
645- width = (self .sceneView .width () -
646- self .sceneView .verticalScrollBar ().width ())
647-
648- self .thumbnailWidget .reflow (width )
649- self .thumbnailWidget .setPreferredWidth (width )
644+ self ._updateGeometryConstraints ()
650645
651646 return super (OWImageViewer , self ).eventFilter (receiver , event )
652647
653648
654649class ImageLoader (QObject ):
655650 #: A weakref to a QNetworkAccessManager used for image retrieval.
656- #: (we can only have only one QNetworkDiskCache opened on the same
651+ #: (we can only have one QNetworkDiskCache opened on the same
657652 #: directory)
658653 _NETMANAGER_REF = None
659654
0 commit comments