diff --git a/libs/pyTermTk/TermTk/TTkWidgets/tabwidget.py b/libs/pyTermTk/TermTk/TTkWidgets/tabwidget.py index 08cc1acb..e696a937 100644 --- a/libs/pyTermTk/TermTk/TTkWidgets/tabwidget.py +++ b/libs/pyTermTk/TermTk/TTkWidgets/tabwidget.py @@ -172,6 +172,10 @@ _tabStyle:Dict[str,Any] = { 'default': {'color': TTkColor.fgbg("#dddd88","#000044"), 'bgColor': TTkColor.fgbg("#000000","#8888aa"), 'borderColor': TTkColor.RST, + 'closeColor': { + 'default' : TTkColor.CYAN, + 'hovered' : TTkColor.YELLOW + }, 'borderHighlightColors': { 'main' : TTkColor.fg('#00FFFF'), 'fade' : TTkColor.fg('#88FF88'), @@ -280,15 +284,29 @@ class TTkTabButton(_TTkTabColorButton): classStyle = ( _TTkTabColorButton.classStyle | { 'default': _TTkTabColorButton.classStyle['default'] | - {'closeGlyph':' □ '} , + { + 'closeGlyph': { + 'default':' ○ ', + 'hovered':' ○ ' + } + } , 'hover': _TTkTabColorButton.classStyle['hover'] | - {'closeGlyph':' x '} } ) + { + 'closeGlyph':{ + 'default':' □ ', + 'hovered':' ▣ ' + } + } + } + ) '''TTkTabButton''' __slots__ = ( - '_data','_sideEnd', '_buttonStatus', '_closable', + '_data','_sideEnd', '_buttonStatus', '_closable', '_closeHovered', 'closeClicked', '_closeButtonPressed', '_text') + _closeHovered:bool + def __init__(self, *, text:TTkString='', data:object=None, @@ -299,6 +317,7 @@ class TTkTabButton(_TTkTabColorButton): self._buttonStatus = TTkK.Unchecked self._data = data self._closable = closable + self._closeHovered = False self.closeClicked = pyTTkSignal() super().__init__(**kwargs) self._closeButtonPressed = False @@ -308,7 +327,7 @@ class TTkTabButton(_TTkTabColorButton): style = self.currentStyle() size = self.text().termWidth() + 2 if self._closable: - size += len(style['closeGlyph']) + size += len(style['closeGlyph']['default']) self.resize(size, self._tabStatus.barType.vSize()) self.setMinimumSize(size, self._tabStatus.barType.vSize()) self.setMaximumSize(size, self._tabStatus.barType.vSize()) @@ -344,26 +363,40 @@ class TTkTabButton(_TTkTabColorButton): x,y = evt.x,evt.y w,h = self.size() self._closeButtonPressed = False - if self._closable and evt.key == TTkK.MidButton: - self.closeClicked.emit() - return True offY = self._tabStatus.barType.offY() if self._closable and y == offY and w-4<=x bool: x,y = evt.x,evt.y w,h = self.size() offY = self._tabStatus.barType.offY() - if self._closable and y == offY and w-4<=x bool: drag = TTkDrag() self._closeButtonPressed = False @@ -390,7 +423,7 @@ class TTkTabButton(_TTkTabColorButton): borderColor:TTkColor = style['borderColor'] textColor:TTkColor = style['color'] - borderHighlightColors:TTkColor = style['borderHighlightColors'] + borderHighlightColors:Dict[str:TTkColor] = style['borderHighlightColors'] w,h = self.size() offY = self._tabStatus.barType.offY() @@ -543,9 +576,14 @@ class TTkTabButton(_TTkTabColorButton): canvas.drawText(pos=(1,offY), text=self.text(), color=textColor) if self._closable: - closeGlyph = style['closeGlyph'] + if self._closeHovered: + colorCloseHovered = textColor+style['closeColor']['hovered'] + closeGlyph = style['closeGlyph']['hovered'] + else: + colorCloseHovered = textColor+style['closeColor']['default'] + closeGlyph = style['closeGlyph']['default'] closeOff = len(closeGlyph) - canvas.drawText(pos=(w-closeOff-1,offY), text=closeGlyph, color=textColor) + canvas.drawText(pos=(w-closeOff-1,offY), text=closeGlyph, color=colorCloseHovered) class _TTkTabMenuButton(TTkMenuBarButton): def paintEvent(self, canvas: TTkCanvas) -> None: