diff --git a/colorbleed/plugins/fusion/inventory/set_tool_color.py b/colorbleed/plugins/fusion/inventory/set_tool_color.py index 3ebc07aebc..7f57a1420b 100644 --- a/colorbleed/plugins/fusion/inventory/set_tool_color.py +++ b/colorbleed/plugins/fusion/inventory/set_tool_color.py @@ -21,9 +21,9 @@ class FusionSetToolColor(api.InventoryAction): # Launch pick color first = containers[0] color = QtGui.QColor(first.get("color", self._fallback_color)) - picked_color = QtWidgets.QColorDialog().getColor(color) - if not picked_color.isValid(): - return result + picked_color = self.get_color_picker(color) + if not picked_color: + return with avalon.fusion.comp_lock_and_undo_chunk(comp): for container in containers: @@ -38,3 +38,22 @@ class FusionSetToolColor(api.InventoryAction): result.append(container) return result + + def get_color_picker(self, color): + """Launch color picker and return chosen color + + Args: + color(QtGui.QColor): Start color to display + """ + + app = QtWidgets.QApplication.instance() + widgets = dict((w.objectName(), w) for w in app.allWidgets()) + widget = widgets.get("SceneInventory") + + color_dialog = QtWidgets.QColorDialog(color) + color_dialog.setStyleSheet(widget.styleSheet()) + + accepted = color_dialog.exec_() + picked_color = color_dialog.selectedColor() if accepted else False + + return picked_color