2323
2424import pyperclip
2525from PySide6 .QtCore import (QByteArray , QEvent , QFile , QFileInfo , QIODevice ,
26- QMimeData , QSettings , QTextStream , QTimer , QUrl )
26+ QMimeData , QSettings , QTextStream , QTimer , QUrl ,
27+ Qt )
2728from PySide6 .QtGui import (QAction , QCloseEvent , QDesktopServices , QIcon ,
2829 QKeySequence , QMouseEvent , QShortcut )
2930from PySide6 .QtWidgets import (QApplication , QMainWindow , QMessageBox , QTabBar ,
@@ -494,11 +495,12 @@ def redo(self, e: QEvent) -> None:
494495 def update_tab_name (self , clean : bool ) -> None :
495496 i = self .tab_widget .currentIndex ()
496497 name = self .tab_widget .tabText (i )
497- if name .endswith ("*" ):
498- name = name [: - 1 ]
498+ if name .startswith ("*" ):
499+ name = name [1 : ]
499500 if not clean :
500- name + = "*"
501+ name = "*" + name
501502 self .tab_widget .setTabText (i , name )
503+ self .tab_widget .setTabToolTip (i , name )
502504
503505 def tab_changed (self , i : int ) -> None :
504506 if isinstance (self .active_panel , ProofPanel ):
@@ -643,6 +645,7 @@ def handle_save_as_action(self) -> bool:
643645 name = QFileInfo (file_path ).baseName ()
644646 i = self .tab_widget .currentIndex ()
645647 self .tab_widget .setTabText (i , name )
648+ self .tab_widget .setTabToolTip (i , name )
646649 return True
647650
648651 def handle_export_tikz_proof_action (self ) -> bool :
@@ -735,7 +738,8 @@ def delete_graph(self) -> None:
735738 self .active_panel .delete_selection ()
736739
737740 def _new_panel (self , panel : BasePanel , name : str ) -> None :
738- self .tab_widget .addTab (panel , name )
741+ idx = self .tab_widget .addTab (panel , name )
742+ self .tab_widget .setTabToolTip (idx , name )
739743 self .tab_widget .setCurrentWidget (panel )
740744
741745 self ._reset_menus (True )
@@ -775,7 +779,7 @@ def open_graph_from_notebook(self, graph: GraphT, name: str) -> None:
775779 # TODO: handle multiple tabs with the same name somehow
776780 for i in range (self .tab_widget .count ()):
777781 tab_text = self .tab_widget .tabText (i )
778- if tab_text == name or tab_text == name + "*" :
782+ if tab_text == name or tab_text == "*" + name :
779783 self .tab_widget .setCurrentIndex (i )
780784 assert self .active_panel is not None
781785 self .active_panel .replace_graph (graph )
@@ -786,7 +790,7 @@ def get_copy_of_graph(self, name: str) -> Optional[GraphT]:
786790 # TODO: handle multiple tabs with the same name somehow
787791 for i in range (self .tab_widget .count ()):
788792 tab_text = self .tab_widget .tabText (i )
789- if tab_text == name or tab_text == name + "*" :
793+ if tab_text == name or tab_text == "*" + name :
790794 panel = cast (BasePanel , self .tab_widget .widget (i ))
791795 return cast (GraphT , copy .deepcopy (panel .graph_scene .g ))
792796 return None
@@ -877,7 +881,7 @@ def update_colors(self) -> None:
877881 padding: 10px 24px;
878882 margin-right: 2px;
879883 min-width: 100px;
880- max-width: 200px ;
884+ max-width: 250px ;
881885 }}
882886
883887 CustomTabBar::tab:selected {{
@@ -999,6 +1003,7 @@ def __init__(self, parent: Optional[QWidget] = None) -> None:
9991003 super ().__init__ (parent )
10001004 self .hovered_tab : int = - 1
10011005 self .setMouseTracking (True )
1006+ self .setElideMode (Qt .TextElideMode .ElideRight )
10021007
10031008 def mouseMoveEvent (self , event : QMouseEvent ) -> None :
10041009 """Track which tab is being hovered."""
0 commit comments