Adjust width of SelectProductDialog's side panel according to its contents.

The width is determined at runtime based on the largest page in the
QTabWidget.  Without this fix, the side panel would annoyingly change
width as you selected the search tab for the first time -- this was
particularly annoying in the de_DE locale.
This commit is contained in:
Jim Evins
2018-05-24 22:05:48 -04:00
parent 5a6cab89b1
commit 42719c03f5
4 changed files with 105 additions and 0 deletions
+1
View File
@@ -24,6 +24,7 @@ set (glabels_sources
MainWindow.cpp
MergeView.cpp
MiniPreviewPixmap.cpp
NotebookUtil.cpp
ObjectEditor.cpp
PreferencesDialog.cpp
PrintView.cpp
+61
View File
@@ -0,0 +1,61 @@
/* NotebookUtil.cpp
*
* Copyright (C) 2015 Jim Evins <evins@snaught.com>
*
* This file is part of gLabels-qt.
*
* gLabels-qt is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* gLabels-qt is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with gLabels-qt. If not, see <http://www.gnu.org/licenses/>.
*/
#include "NotebookUtil.h"
#include <QLayout>
namespace glabels
{
///
/// Establish notebook size based on largest page
///
void NotebookUtil::establishSize( QTabWidget* notebook )
{
// Establish size of notebook size based on its largest page.
// This may not be established until runtime, due to varying
// lengths of translated strings or may even be influenced by
// the current theme and fonts. Without doing this, the
// notebook may change size as tabs are selected for the first
// time, which can be very annoying.
// This hack shows the top-level window containing the notebook,
// then shows each page and invalidates the window's layout.
// Finally it re-hides the window without ever having
// relinquishing control to the Qt event loop.
QWidget* window = notebook->window();
int iTabSaved = notebook->currentIndex();
int nTabs = notebook->count();
window->show();
for ( int iTab = 0; iTab < nTabs; iTab++ )
{
notebook->setCurrentIndex( iTab );
window->layout()->invalidate();
}
window->hide();
notebook->setCurrentIndex( iTabSaved );
}
}
+40
View File
@@ -0,0 +1,40 @@
/* NotebookUtil.h
*
* Copyright (C) 2015 Jim Evins <evins@snaught.com>
*
* This file is part of gLabels-qt.
*
* gLabels-qt is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* gLabels-qt is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with gLabels-qt. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef model_NotebookUtil_h
#define model_NotebookUtil_h
#include <QWidget>
#include <QTabWidget>
namespace glabels
{
namespace NotebookUtil
{
void establishSize( QTabWidget* notebook );
}
}
#endif // model_NotebookUtil_h
+3
View File
@@ -20,6 +20,7 @@
#include "SelectProductDialog.h"
#include "NotebookUtil.h"
#include "TemplatePickerItem.h"
#include "model/Db.h"
@@ -62,6 +63,8 @@ namespace glabels
connect( check, SIGNAL(clicked()), this, SLOT(onCategoryCheckClicked()) );
}
NotebookUtil::establishSize( modeNotebook );
QList<model::Template*> tmplates = model::Db::templates();
templatePicker->setTemplates( tmplates );