Fixed problems with tab completion after moving tabs (#2141)
This commit is contained in:
parent
59d16efbef
commit
e613d01263
@ -1028,17 +1028,13 @@ class CommandDispatcher:
|
||||
raise cmdexc.CommandError("Can't move tab to position {}!".format(
|
||||
new_idx + 1))
|
||||
|
||||
tab = self._current_widget()
|
||||
cur_idx = self._current_index()
|
||||
icon = self._tabbed_browser.tabIcon(cur_idx)
|
||||
label = self._tabbed_browser.page_title(cur_idx)
|
||||
cmdutils.check_overflow(cur_idx, 'int')
|
||||
cmdutils.check_overflow(new_idx, 'int')
|
||||
self._tabbed_browser.setUpdatesEnabled(False)
|
||||
try:
|
||||
color = self._tabbed_browser.tab_indicator_color(cur_idx)
|
||||
self._tabbed_browser.removeTab(cur_idx)
|
||||
self._tabbed_browser.insertTab(new_idx, tab, icon, label)
|
||||
self._tabbed_browser.tabBar().moveTab(cur_idx, new_idx)
|
||||
self._set_current_index(new_idx)
|
||||
self._tabbed_browser.set_tab_indicator_color(new_idx, color)
|
||||
finally:
|
||||
|
@ -160,6 +160,7 @@ class TabCompletionModel(base.BaseCompletionModel):
|
||||
tab.title_changed.connect(self.rebuild)
|
||||
tab.shutting_down.connect(self.delayed_rebuild)
|
||||
tabbed_browser.new_tab.connect(self.on_new_tab)
|
||||
tabbed_browser.tabBar().tabMoved.connect(self.rebuild)
|
||||
objreg.get("app").new_window.connect(self.on_new_window)
|
||||
self.rebuild()
|
||||
|
||||
|
@ -102,3 +102,15 @@ Feature: Using completion
|
||||
And I run :completion-item-del
|
||||
Then the following tabs should be open:
|
||||
- data/hello.txt (active)
|
||||
|
||||
Scenario: Go to tab after moving a tab
|
||||
Given I have a fresh instance
|
||||
When I open data/hello.txt
|
||||
And I open data/hello2.txt in a new tab
|
||||
# Tricking completer into not updating tabs
|
||||
And I run :set-cmd-text -s :buffer
|
||||
And I run :tab-move 1
|
||||
And I run :buffer hello2.txt
|
||||
Then the following tabs should be open:
|
||||
- data/hello2.txt (active)
|
||||
- data/hello.txt
|
||||
|
@ -27,7 +27,7 @@ from unittest import mock
|
||||
from PyQt5.QtCore import pyqtSignal, QPoint, QProcess, QObject
|
||||
from PyQt5.QtNetwork import (QNetworkRequest, QAbstractNetworkCache,
|
||||
QNetworkCacheMetaData)
|
||||
from PyQt5.QtWidgets import QCommonStyle, QLineEdit, QWidget
|
||||
from PyQt5.QtWidgets import QCommonStyle, QLineEdit, QWidget, QTabBar
|
||||
|
||||
from qutebrowser.browser import browsertab, history
|
||||
from qutebrowser.config import configexc
|
||||
@ -571,6 +571,7 @@ class TabbedBrowserStub(QObject):
|
||||
super().__init__(parent)
|
||||
self.tabs = []
|
||||
self.shutting_down = False
|
||||
self._qtabbar = QTabBar()
|
||||
|
||||
def count(self):
|
||||
return len(self.tabs)
|
||||
@ -584,6 +585,9 @@ class TabbedBrowserStub(QObject):
|
||||
def on_tab_close_requested(self, idx):
|
||||
del self.tabs[idx]
|
||||
|
||||
def tabBar(self):
|
||||
return QTabBar(self._qtabbar)
|
||||
|
||||
|
||||
class ApplicationStub(QObject):
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user