OSDN Git Service

タブが1つだけになったときは閉じるボタンを表示しないように変更した
authoryuki <kimaira7@gmail.com>
Mon, 9 Sep 2013 08:56:51 +0000 (17:56 +0900)
committeryuki <kimaira7@gmail.com>
Mon, 9 Sep 2013 08:56:51 +0000 (17:56 +0900)
src/cx/fbn/nevernote/NeverNote.java
src/cx/fbn/nevernote/gui/TabBrowserWidget.java

index 549c81d..c2c7466 100644 (file)
@@ -602,11 +602,11 @@ public class NeverNote extends QMainWindow{
                tabBrowser = new TabBrowserWidget(this);
                tabBrowser.setStyleSheet("QTabBar::tab{width:150px;}");
                tabBrowser.setMovable(true);
                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);
                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)");
                
                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);
                }
                
                        fromHistory.remove(i + 1);
                }
                
+               // タブが残り1つになったら、閉じるボタンを消す
+               if (tabBrowser.count() == 1) {
+                       tabBrowser.hideTabCloseButton(0);
+               }
+               
                // タブの閉じるボタンを押すと、tabWindowClosingより先にtabWindowChangedが呼ばれてしまうので、手動で呼びなおす
                tabWindowChanged(tabBrowser.currentIndex());
        }
                // タブの閉じるボタンを押すと、tabWindowClosingより先にtabWindowChangedが呼ばれてしまうので、手動で呼びなおす
                tabWindowChanged(tabBrowser.currentIndex());
        }
index 83debac..4d4535a 100644 (file)
@@ -20,6 +20,8 @@
 // ICHANGED
 package cx.fbn.nevernote.gui;
 
 // 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;
 
 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;
 public class TabBrowserWidget extends QTabWidget {
        private final TabBrowserBar bar;
        private final NeverNote parent;
+       private QSize closeButtonSize;
        
        public TabBrowserWidget(NeverNote parent) {
                super(parent);
        
        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);
                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;
        }
 
                return index;
        }
 
@@ -49,4 +64,20 @@ public class TabBrowserWidget extends QTabWidget {
                this.setTabToolTip(index, title);
        }
        
                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);
+               }
+       }
 }
 }