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)");
fromHistory.remove(i + 1);
}
+ // タブが残り1つになったら、閉じるボタンを消す
+ if (tabBrowser.count() == 1) {
+ tabBrowser.hideTabCloseButton(0);
+ }
+
// タブの閉じるボタンを押すと、tabWindowClosingより先にtabWindowChangedが呼ばれてしまうので、手動で呼びなおす
tabWindowChanged(tabBrowser.currentIndex());
}
// 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;
public class TabBrowserWidget extends QTabWidget {
private final TabBrowserBar bar;
private final NeverNote parent;
+ private QSize closeButtonSize;
public TabBrowserWidget(NeverNote parent) {
super(parent);
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;
}
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);
+ }
+ }
}