Fix extremely obnoxious bug related to differences in QTabWidget between PyQt5 and PySlide2

This commit is contained in:
Micah Lee 2020-10-14 19:22:39 -07:00
parent ceb705d20f
commit bd305ac3be
No known key found for this signature in database
GPG Key ID: 403C2657CD994F73
5 changed files with 13 additions and 18 deletions

View File

@ -41,7 +41,7 @@ pip install briefcase
Run OnionShare from the source tree like this: Run OnionShare from the source tree like this:
``` ```
briefcase dev briefcase dev -d
``` ```
## Running tests ## Running tests

View File

@ -22,7 +22,7 @@ requires = [
"psutil", "psutil",
"pycryptodome", "pycryptodome",
"PySocks", "PySocks",
"pyside2", "pyside2==5.15.1",
"qrcode", "qrcode",
"requests", "requests",
"stem", "stem",

Binary file not shown.

Before

Width:  |  Height:  |  Size: 688 B

View File

@ -107,6 +107,10 @@ class Tab(QtWidgets.QWidget):
# Start the OnionShare app # Start the OnionShare app
self.app = OnionShare(common, self.common.gui.onion, self.common.gui.local_only) self.app = OnionShare(common, self.common.gui.onion, self.common.gui.local_only)
# An invisible widget, used for hiding the persistent tab icon
self.invisible_widget = QtWidgets.QWidget()
self.invisible_widget.setFixedSize(0, 0)
# Onionshare logo # Onionshare logo
self.image_label = QtWidgets.QLabel() self.image_label = QtWidgets.QLabel()
self.image_label.setPixmap( self.image_label.setPixmap(

View File

@ -144,6 +144,7 @@ class TabWidget(QtWidgets.QTabWidget):
self.add_tab(mode_settings) self.add_tab(mode_settings)
def add_tab(self, mode_settings=None): def add_tab(self, mode_settings=None):
self.common.log("TabWidget", "add_tab", f"mode_settings: {mode_settings}")
tab = Tab(self.common, self.current_tab_id, self.system_tray, self.status_bar) tab = Tab(self.common, self.current_tab_id, self.system_tray, self.status_bar)
tab.change_title.connect(self.change_title) tab.change_title.connect(self.change_title)
tab.change_icon.connect(self.change_icon) tab.change_icon.connect(self.change_icon)
@ -155,19 +156,6 @@ class TabWidget(QtWidgets.QTabWidget):
index = self.addTab(tab, strings._("gui_new_tab")) index = self.addTab(tab, strings._("gui_new_tab"))
self.setCurrentIndex(index) self.setCurrentIndex(index)
# Create a close button
def close_tab():
self.tabBar().tabCloseRequested.emit(self.indexOf(tab))
close_button = QtWidgets.QPushButton()
close_button.setFlat(True)
close_button.setFixedWidth(40)
close_button.setIcon(
QtGui.QIcon(GuiCommon.get_resource_path("images/close_tab.png"))
)
close_button.clicked.connect(close_tab)
self.tabBar().setTabButton(index, QtWidgets.QTabBar.RightSide, close_button)
tab.init(mode_settings) tab.init(mode_settings)
# If it's persistent, set the persistent image in the tab # If it's persistent, set the persistent image in the tab
self.change_persistent(tab.tab_id, tab.settings.get("persistent", "enabled")) self.change_persistent(tab.tab_id, tab.settings.get("persistent", "enabled"))
@ -184,6 +172,11 @@ class TabWidget(QtWidgets.QTabWidget):
self.setTabIcon(index, QtGui.QIcon(GuiCommon.get_resource_path(icon_path))) self.setTabIcon(index, QtGui.QIcon(GuiCommon.get_resource_path(icon_path)))
def change_persistent(self, tab_id, is_persistent): def change_persistent(self, tab_id, is_persistent):
self.common.log(
"TabWidget",
"change_persistent",
f"tab_id: {tab_id}, is_persistent: {is_persistent}",
)
index = self.indexOf(self.tabs[tab_id]) index = self.indexOf(self.tabs[tab_id])
if is_persistent: if is_persistent:
self.tabBar().setTabButton( self.tabBar().setTabButton(
@ -192,10 +185,8 @@ class TabWidget(QtWidgets.QTabWidget):
self.tabs[tab_id].persistent_image_label, self.tabs[tab_id].persistent_image_label,
) )
else: else:
invisible_widget = QtWidgets.QWidget()
invisible_widget.setFixedSize(0, 0)
self.tabBar().setTabButton( self.tabBar().setTabButton(
index, QtWidgets.QTabBar.LeftSide, invisible_widget index, QtWidgets.QTabBar.LeftSide, self.tabs[tab_id].invisible_widget
) )
self.save_persistent_tabs() self.save_persistent_tabs()