From 2efe4c6046b6e730a8684f40adbe746a12cce061 Mon Sep 17 00:00:00 2001 From: yuki Date: Mon, 9 Sep 2013 17:56:51 +0900 Subject: [PATCH 1/1] =?utf8?q?=E3=82=BF=E3=83=96=E3=81=8C1=E3=81=A4?= =?utf8?q?=E3=81=A0=E3=81=91=E3=81=AB=E3=81=AA=E3=81=A3=E3=81=9F=E3=81=A8?= =?utf8?q?=E3=81=8D=E3=81=AF=E9=96=89=E3=81=98=E3=82=8B=E3=83=9C=E3=82=BF?= =?utf8?q?=E3=83=B3=E3=82=92=E8=A1=A8=E7=A4=BA=E3=81=97=E3=81=AA=E3=81=84?= =?utf8?q?=E3=82=88=E3=81=86=E3=81=AB=E5=A4=89=E6=9B=B4=E3=81=97=E3=81=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- src/cx/fbn/nevernote/NeverNote.java | 7 +++++- src/cx/fbn/nevernote/gui/TabBrowserWidget.java | 31 ++++++++++++++++++++++++++ 2 files changed, 37 insertions(+), 1 deletion(-) diff --git a/src/cx/fbn/nevernote/NeverNote.java b/src/cx/fbn/nevernote/NeverNote.java index 549c81d..c2c7466 100644 --- a/src/cx/fbn/nevernote/NeverNote.java +++ b/src/cx/fbn/nevernote/NeverNote.java @@ -602,11 +602,11 @@ public class NeverNote extends QMainWindow{ tabBrowser = new TabBrowserWidget(this); tabBrowser.setStyleSheet("QTabBar::tab{width:150px;}"); tabBrowser.setMovable(true); + tabBrowser.setTabsClosable(true); TabBrowse tab = new TabBrowse(conn, tabBrowser, cbObserver); browserWindow = tab.getBrowserWindow(); int index = tabBrowser.addNewTab(tab, ""); tabWindows.put(index, tab); - tabBrowser.setTabsClosable(true); tabBrowser.currentChanged.connect(this, "tabWindowChanged(int)"); tabBrowser.tabCloseRequested.connect(this, "tabWindowClosing(int)"); @@ -4906,6 +4906,11 @@ public class NeverNote extends QMainWindow{ fromHistory.remove(i + 1); } + // タブが残り1つになったら、閉じるボタンを消す + if (tabBrowser.count() == 1) { + tabBrowser.hideTabCloseButton(0); + } + // タブの閉じるボタンを押すと、tabWindowClosingより先にtabWindowChangedが呼ばれてしまうので、手動で呼びなおす tabWindowChanged(tabBrowser.currentIndex()); } diff --git a/src/cx/fbn/nevernote/gui/TabBrowserWidget.java b/src/cx/fbn/nevernote/gui/TabBrowserWidget.java index 83debac..4d4535a 100644 --- a/src/cx/fbn/nevernote/gui/TabBrowserWidget.java +++ b/src/cx/fbn/nevernote/gui/TabBrowserWidget.java @@ -20,6 +20,8 @@ // ICHANGED package cx.fbn.nevernote.gui; +import com.trolltech.qt.core.QSize; +import com.trolltech.qt.gui.QTabBar; import com.trolltech.qt.gui.QTabWidget; import com.trolltech.qt.gui.QWidget; @@ -28,6 +30,7 @@ import cx.fbn.nevernote.NeverNote; public class TabBrowserWidget extends QTabWidget { private final TabBrowserBar bar; private final NeverNote parent; + private QSize closeButtonSize; public TabBrowserWidget(NeverNote parent) { super(parent); @@ -41,6 +44,18 @@ public class TabBrowserWidget extends QTabWidget { int index = this.addTab(widget, new String()); bar.addNewTab(index, title); this.setTabToolTip(index, title); + + // タブが1個(多分これが発生するのはアプリ起動時だけ)なら閉じるボタンを隠す + // タブが2個以上あったら、一番左のタブの閉じるボタンを復元する + int tabCnt = this.count(); + if (tabCnt == 1) { + hideTabCloseButton(0); + } else if (tabCnt >= 2) { + if (closeButtonSize != null && !bar.tabButton(0, QTabBar.ButtonPosition.RightSide).size().equals(closeButtonSize)) { + showTabCloseButton(0); + } + } + return index; } @@ -49,4 +64,20 @@ public class TabBrowserWidget extends QTabWidget { this.setTabToolTip(index, title); } + // タブを閉じるボタンを隠す + public void hideTabCloseButton(int index) { + if (closeButtonSize == null) { + closeButtonSize = bar.tabButton(index, QTabBar.ButtonPosition.RightSide).size(); + } + bar.tabButton(index, QTabBar.ButtonPosition.RightSide).resize(0, 0); + } + + // タブを閉じるボタンを復元する + public void showTabCloseButton(int index) { + if (closeButtonSize != null) { + bar.tabButton(index, QTabBar.ButtonPosition.RightSide).resize(closeButtonSize); + } else { + bar.tabButton(index, QTabBar.ButtonPosition.RightSide).resize(16, 16); + } + } } -- 2.11.0