Skip to content

Commit

Permalink
Merge pull request #4063 from themissingcow/indexAtFixes
Browse files Browse the repository at this point in the history
GafferUI : Fix use of Gaffer Widget mouse event positions
  • Loading branch information
johnhaddon authored Dec 15, 2020
2 parents 9488cba + 714c8d8 commit 1c4654e
Show file tree
Hide file tree
Showing 3 changed files with 49 additions and 12 deletions.
24 changes: 19 additions & 5 deletions python/GafferUI/PathListingWidget.py
Original file line number Diff line number Diff line change
Expand Up @@ -172,12 +172,12 @@ def scrollToPath( self, path ) :
# exists at that position.
def pathAt( self, position ) :

position = self._qtWidget().viewport().mapFrom(
point = self._qtWidget().viewport().mapFrom(
self._qtWidget(),
QtCore.QPoint( position.x, position.y )
)

index = self._qtWidget().indexAt( position )
index = self._qtWidget().indexAt( point )
if not index.isValid() :
return None

Expand Down Expand Up @@ -514,7 +514,12 @@ def __buttonPress( self, widget, event ) :
# This is further complicated by the fact that the button presses we simulate for Qt
# will end up back in this function, so we have to be careful to ignore those.

index = self._qtWidget().indexAt( QtCore.QPoint( event.line.p0.x, event.line.p0.y ) )
point = self._qtWidget().viewport().mapFrom(
self._qtWidget(),
QtCore.QPoint( event.line.p0.x, event.line.p0.y )
)
index = self._qtWidget().indexAt( point )

if self._qtWidget().selectionModel().isSelected( index ) :
# case 1 : existing selection.
self.__borrowedButtonPress = event
Expand Down Expand Up @@ -551,7 +556,11 @@ def __dragBegin( self, widget, event ) :
self.__borrowedButtonPress = None

# nothing to drag if there's no valid list entry under the pointer
index = self._qtWidget().indexAt( QtCore.QPoint( event.line.p0.x, event.line.p0.y ) )
point = self._qtWidget().viewport().mapFrom(
self._qtWidget(),
QtCore.QPoint( event.line.p0.x, event.line.p0.y )
)
index = self._qtWidget().indexAt( point )
if not index.isValid() :
return None

Expand All @@ -568,9 +577,14 @@ def __dragEnd( self, widget, event ) :

def __emitButtonPress( self, event ) :

point = self._qtWidget().viewport().mapFrom(
self._qtWidget(),
QtCore.QPoint( event.line.p0.x, event.line.p0.y )
)

qEvent = QtGui.QMouseEvent(
QtCore.QEvent.MouseButtonPress,
QtCore.QPoint( event.line.p0.x, event.line.p0.y ),
point,
QtCore.Qt.LeftButton,
QtCore.Qt.LeftButton,
QtCore.Qt.NoModifier
Expand Down
21 changes: 17 additions & 4 deletions python/GafferUI/SpreadsheetUI/_PlugTableView.py
Original file line number Diff line number Diff line change
Expand Up @@ -146,7 +146,11 @@ def __init__( self, selectionModel, mode, **kw ) :

def plugAt( self, position ) :

index = self._qtWidget().indexAt( QtCore.QPoint( position.x, position.y ) )
point = self._qtWidget().viewport().mapFrom(
self._qtWidget(),
QtCore.QPoint( position.x, position.y )
)
index = self._qtWidget().indexAt( point )
return self._qtWidget().model().plugForIndex( index )

def selectedPlugs( self ) :
Expand Down Expand Up @@ -357,7 +361,11 @@ def __buttonPress( self, widget, event ) :
if event.buttons != event.Buttons.Right :
return False

index = self._qtWidget().indexAt( QtCore.QPoint( event.line.p0.x, event.line.p0.y ) )
point = self._qtWidget().viewport().mapFrom(
self._qtWidget(),
QtCore.QPoint( event.line.p0.x, event.line.p0.y )
)
index = self._qtWidget().indexAt( point )

# Disabled items won't show up in the selection model
if not index.flags() & QtCore.Qt.ItemIsEnabled :
Expand Down Expand Up @@ -417,7 +425,11 @@ def __buttonDoubleClick( self, widget, event ) :
# - Presets: Return/Double click displays the popup menu, requires right-click
# to display the edit window.

index = self._qtWidget().indexAt( QtCore.QPoint( event.line.p0.x, event.line.p0.y ) )
point = self._qtWidget().viewport().mapFrom(
self._qtWidget(),
QtCore.QPoint( event.line.p0.x, event.line.p0.y )
)
index = self._qtWidget().indexAt( point )

if not index.flags() & QtCore.Qt.ItemIsEnabled :
return True
Expand Down Expand Up @@ -504,7 +516,8 @@ def __headerButtonPress( self, header, event ) :
if event.buttons != event.Buttons.Right :
return False

cellPlug = self.plugAt( event.line.p0 )
column = self._qtWidget().columnAt( event.line.p0.x )
cellPlug = self._qtWidget().model().plugForIndex( self._qtWidget().model().index( 0, column ) )
assert( cellPlug.ancestor( Gaffer.Spreadsheet.RowPlug ) == cellPlug.ancestor( Gaffer.Spreadsheet.RowsPlug ).defaultRow() )

menuDefinition = IECore.MenuDefinition()
Expand Down
16 changes: 13 additions & 3 deletions python/GafferUI/VectorDataWidget.py
Original file line number Diff line number Diff line change
Expand Up @@ -367,7 +367,8 @@ def getDragPointer( self ) :
# data returned by getData().
def indexAt( self, position ) :

index = self.__tableView.indexAt( QtCore.QPoint( position[0], position[1] ) )
point = self.__tableView.viewport().mapFrom( self.__tableView, QtCore.QPoint( position[0], position[1] ) )
index = self.__tableView.indexAt( point )
return ( index.column(), index.row() )

## Returns a list of ( columnIndex, rowIndex ) for the currently
Expand Down Expand Up @@ -662,7 +663,11 @@ def __buttonPress( self, widget, event ) :
# This is further complicated by the fact that the button presses we simulate for Qt
# will end up back in this function, so we have to be careful to ignore those.

index = self.__tableView.indexAt( QtCore.QPoint( event.line.p0.x, event.line.p0.y ) )
point = self.__tableView.viewport().mapFrom(
self.__tableView,
QtCore.QPoint( event.line.p0.x, event.line.p0.y )
)
index = self.__tableView.indexAt( point )
if self.__tableView.selectionModel().isSelected( index ) :
# case 1 : existing selection.
self.__borrowedButtonPress = event
Expand Down Expand Up @@ -714,9 +719,14 @@ def __dragEnd( self, widget, event ) :

def __emitButtonPress( self, event ) :

point = self.__tableView.viewport().mapFrom(
self.__tableView,
QtCore.QPoint( event.line.p0.x, event.line.p0.y )
)

qEvent = QtGui.QMouseEvent(
QtCore.QEvent.MouseButtonPress,
QtCore.QPoint( event.line.p0.x, event.line.p0.y ),
point,
QtCore.Qt.LeftButton,
QtCore.Qt.LeftButton,
QtCore.Qt.NoModifier
Expand Down

0 comments on commit 1c4654e

Please sign in to comment.