Skip to content

Commit

Permalink
GafferUI : Fix use of Gaffer Widget mouse event positions
Browse files Browse the repository at this point in the history
Fixes some cursor offsets introduced since we fixed the coordinates
reported in `GafferUI.ButtonEvent` in #4053.
  • Loading branch information
tomc-cinesite committed Dec 10, 2020
1 parent ff763fd commit 714c8d8
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 714c8d8

Please sign in to comment.