Skip to content

Commit dcc20c6

Browse files
committed
Fix scrolling through tabs on Linux
1 parent 1f46e95 commit dcc20c6

1 file changed

Lines changed: 8 additions & 4 deletions

File tree

ttkwidgets/notebook.py

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
"""
22
Copyright 2018-2019 Juliette Monsel <j_4321 at protonmail dot com>
33
Copyright 2019 Dogeek
4+
Copyright 2020 RedFantom <redfantom at outlook dot com>
45
56
Adapted from PyTkEditor - Python IDE's Notebook widget by
67
Juliette Monsel. Adapted by Dogeek <https://github.com/Dogeek>
@@ -9,6 +10,7 @@
910
1011
Notebook with draggable / scrollable tabs
1112
"""
13+
from functools import partial
1214
import tkinter as tk
1315
from tkinter import ttk
1416
from ttkwidgets.utilities import move_widget, parse_geometry, coords_in_box
@@ -51,11 +53,13 @@ def __init__(self, master=None, tab_nb=0, **kwargs):
5153
self.bind("<ButtonRelease-2>", self._b2_press)
5254
self.bind("<Enter>", self._on_enter_tab)
5355
self.bind("<Leave>", self._on_leave_tab)
54-
self.bind("<MouseWheel>", self._on_mousewheel)
56+
self.bind("<MouseWheel>", partial(self._on_mousewheel, None))
57+
self.bind("<Button-4>", partial(self._on_mousewheel, True)) # Linux mousewheel bind
58+
self.bind("<Button-5>", partial(self._on_mousewheel, False))
5559

56-
def _on_mousewheel(self, event):
60+
def _on_mousewheel(self, updown, event):
5761
if self.hovering_tab:
58-
if event.delta > 0:
62+
if (updown is None and event.delta > 0) or updown is True:
5963
self.master.master.select_prev(True)
6064
else:
6165
self.master.master.select_next(True)
@@ -330,7 +334,7 @@ def setup_style(self, bg="#dddddd", activebg="#efefef", pressedbg="#c1c1c1",
330334
:param bordercolor:
331335
:param focusbordercolor:
332336
:param selectbg:
333-
:param selectfb:
337+
:param selectfg:
334338
:param unselectfg:
335339
:param disabledfg:
336340
:param disabledbg:

0 commit comments

Comments
 (0)