Sophie

Sophie

distrib > Mandriva > 2006.0 > x86_64 > by-pkgid > cc8f970be8f3f9d917634bf75d52343e > files > 7

qt3-3.3.4-23mdk.src.rpm

qt-bugs@ issue : N26525
applied: no
author: Thomas Zander <zander@kde.org>

it is possible to remove all tabs from a QTabWidget in the 'object explorer'.

After inserting a new tabWidget I normally get 2 tabs. Using
the popup menu on the widget itself a delete is not present when there
is just one tab left. In other words; I can't delete all tabs.

The popup menu presented on the 'object explorer' toolbar does not do any
checking on the amount of tabs present; it is possible to delete all tabs
from there.

To reproduce;
    - Open new document.
    - Insert QTabWidget.
    - Press with RMB on the just inserted tabWidget and press 'delete page'
    - Open the same popup again; notice the missing 'delete page' entry.

    - go to the 'object explorer' toolbar and make sure it is on the
      'objects' tab.
    - Press with the RMB on the QTabWidget name.
    - Press 'delete page' and the last page is deleted.

Solution; on every show of the popup check if delete is possible and enable
correctly.

Index: tools/designer/designer/hierarchyview.cpp
===================================================================
RCS file: /home/kde/qt-copy/tools/tools/designer/designer/hierarchyview.cpp,v
retrieving revision 1.20
diff -u -3 -p -b -r1.20 hierarchyview.cpp
--- tools/designer/designer/hierarchyview.cpp	23 Jun 2003 11:49:05 -0000	1.20
+++ tools/designer/designer/hierarchyview.cpp	12 Jul 2003 17:09:29 -0000
@@ -599,6 +599,7 @@ void HierarchyList::showRMBMenu( QListVi
 		    formWindow->mainWindow()->setupTabWidgetHierarchyMenu(
 				  this, SLOT( addTabPage() ),
 				  SLOT( removeTabPage() ) );
+	    tabWidgetMenu->setItemEnabled(MainWindow::POPUP_REMOVE_PAGE_ID, ((QDesignerTabWidget*)w )->count() > 1);
 	    tabWidgetMenu->popup( p );
 	}
     }
Index: tools/designer/designer/mainwindow.cpp
===================================================================
RCS file: /home/kde/qt-copy/tools/tools/designer/designer/mainwindow.cpp,v
retrieving revision 1.33
diff -u -3 -p -b -r1.33 mainwindow.cpp
--- tools/designer/designer/mainwindow.cpp	23 Jun 2003 11:49:06 -0000	1.33
+++ tools/designer/designer/mainwindow.cpp	12 Jul 2003 17:09:31 -0000
@@ -2419,8 +2419,8 @@ QPopupMenu *MainWindow::setupTabWidgetHi
 {
     QPopupMenu *menu = new QPopupMenu( parent );
 
-    menu->insertItem( tr( "Add Page" ), parent, addSlot );
-    menu->insertItem( tr( "Delete Page" ), parent, removeSlot );
+    menu->insertItem( tr( "Add Page" ), parent, addSlot, 0, POPUP_REMOVE_PAGE_ID+1 );
+    menu->insertItem( tr( "Delete Page" ), parent, removeSlot, 0, POPUP_REMOVE_PAGE_ID );
     menu->insertSeparator();
     actionEditCut->addTo( menu );
     actionEditCopy->addTo( menu );
Index: tools/designer/designer/mainwindow.h
===================================================================
RCS file: /home/kde/qt-copy/tools/tools/designer/designer/mainwindow.h,v
retrieving revision 1.15
diff -u -3 -p -b -r1.15 mainwindow.h
--- tools/designer/designer/mainwindow.h	16 May 2003 13:03:27 -0000	1.15
+++ tools/designer/designer/mainwindow.h	12 Jul 2003 17:09:31 -0000
@@ -107,6 +107,7 @@ public:
 
     QPopupMenu *setupNormalHierarchyMenu( QWidget *parent );
     QPopupMenu *setupTabWidgetHierarchyMenu( QWidget *parent, const char *addSlot, const char *removeSlot );
+    static const int POPUP_REMOVE_PAGE_ID = 1;
 
     FormWindow *openFormWindow( const QString &fn, bool validFileName = TRUE, FormFile *ff = 0 );
     bool isCustomWidgetUsed( MetaDataBase::CustomWidget *w );