annotate view/PaneStack.cpp @ 13:7a9e35f51c7a

add easaier tab widgets, style and pass the layer characteristics in the main window (remove from panestack)
author lbajardsilogic
date Mon, 14 May 2007 06:59:52 +0000
parents fc9323a41f5a
children 429cfea499ad
rev   line source
lbajardsilogic@0 1
lbajardsilogic@0 2 /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */
lbajardsilogic@0 3
lbajardsilogic@0 4 /*
lbajardsilogic@0 5 Sonic Visualiser
lbajardsilogic@0 6 An audio file viewer and annotation editor.
lbajardsilogic@0 7 Centre for Digital Music, Queen Mary, University of London.
lbajardsilogic@0 8 This file copyright 2006 Chris Cannam and QMUL.
lbajardsilogic@0 9
lbajardsilogic@0 10 This program is free software; you can redistribute it and/or
lbajardsilogic@0 11 modify it under the terms of the GNU General Public License as
lbajardsilogic@0 12 published by the Free Software Foundation; either version 2 of the
lbajardsilogic@0 13 License, or (at your option) any later version. See the file
lbajardsilogic@0 14 COPYING included with this distribution for more information.
lbajardsilogic@0 15 */
lbajardsilogic@0 16
lbajardsilogic@0 17 #include "PaneStack.h"
lbajardsilogic@0 18
lbajardsilogic@0 19 #include "Pane.h"
lbajardsilogic@0 20 #include "widgets/PropertyStack.h"
lbajardsilogic@0 21 #include "layer/Layer.h"
lbajardsilogic@0 22 #include "ViewManager.h"
lbajardsilogic@0 23
lbajardsilogic@0 24 #include <QApplication>
lbajardsilogic@0 25 #include <QHBoxLayout>
lbajardsilogic@0 26 #include <QPainter>
lbajardsilogic@0 27 #include <QPalette>
lbajardsilogic@0 28 #include <QLabel>
lbajardsilogic@0 29 #include <QSplitter>
lbajardsilogic@0 30 #include <QStackedWidget>
lbajardsilogic@0 31
lbajardsilogic@0 32 #include <iostream>
lbajardsilogic@0 33
lbajardsilogic@0 34 //#define DEBUG_PANE_STACK 1
lbajardsilogic@0 35
lbajardsilogic@0 36 PaneStack::PaneStack(QWidget *parent, ViewManager *viewManager) :
lbajardsilogic@0 37 QFrame(parent),
lbajardsilogic@0 38 m_currentPane(0),
lbajardsilogic@0 39 m_splitter(new QSplitter),
lbajardsilogic@0 40 m_propertyStackStack(new QStackedWidget),
lbajardsilogic@0 41 m_viewManager(viewManager),
lbajardsilogic@0 42 m_layoutStyle(PropertyStackPerPaneLayout)
lbajardsilogic@0 43 {
lbajardsilogic@0 44 QHBoxLayout *layout = new QHBoxLayout;
lbajardsilogic@0 45 layout->setMargin(0);
lbajardsilogic@0 46 layout->setSpacing(0);
lbajardsilogic@0 47
lbajardsilogic@0 48 m_splitter->setOrientation(Qt::Vertical);
lbajardsilogic@0 49 m_splitter->setOpaqueResize(false);
lbajardsilogic@0 50
lbajardsilogic@0 51 layout->addWidget(m_splitter);
lbajardsilogic@0 52 layout->setStretchFactor(m_splitter, 1);
lbajardsilogic@0 53 layout->addWidget(m_propertyStackStack);
lbajardsilogic@0 54 m_propertyStackStack->hide();
lbajardsilogic@0 55
lbajardsilogic@0 56 setLayout(layout);
lbajardsilogic@0 57 }
lbajardsilogic@0 58
lbajardsilogic@0 59 Pane *
lbajardsilogic@0 60 PaneStack::addPane(bool suppressPropertyBox)
lbajardsilogic@0 61 {
lbajardsilogic@0 62 QFrame *frame = new QFrame;
lbajardsilogic@0 63 QHBoxLayout *layout = new QHBoxLayout;
lbajardsilogic@0 64 layout->setMargin(0);
lbajardsilogic@0 65 layout->setSpacing(2);
lbajardsilogic@0 66
lbajardsilogic@0 67 QLabel *currentIndicator = new QLabel(frame);
lbajardsilogic@0 68 currentIndicator->setFixedWidth(QPainter(this).fontMetrics().width("x"));
lbajardsilogic@0 69 layout->addWidget(currentIndicator);
lbajardsilogic@0 70 layout->setStretchFactor(currentIndicator, 1);
lbajardsilogic@0 71 currentIndicator->setScaledContents(true);
lbajardsilogic@0 72
lbajardsilogic@0 73 Pane *pane = new Pane(frame);
lbajardsilogic@0 74 pane->setViewManager(m_viewManager);
lbajardsilogic@0 75 layout->addWidget(pane);
lbajardsilogic@0 76 layout->setStretchFactor(pane, 10);
lbajardsilogic@0 77
lbajardsilogic@0 78 PaneRec rec;
lbajardsilogic@0 79 rec.pane = pane;
lbajardsilogic@13 80 rec.propertyStack = 0;
lbajardsilogic@0 81 rec.currentIndicator = currentIndicator;
lbajardsilogic@0 82 rec.frame = frame;
lbajardsilogic@0 83 rec.layout = layout;
lbajardsilogic@0 84 m_panes.push_back(rec);
lbajardsilogic@0 85
lbajardsilogic@0 86 frame->setLayout(layout);
lbajardsilogic@0 87 m_splitter->addWidget(frame);
lbajardsilogic@0 88
lbajardsilogic@0 89 connect(pane, SIGNAL(propertyContainerAdded(PropertyContainer *)),
lbajardsilogic@0 90 this, SLOT(propertyContainerAdded(PropertyContainer *)));
lbajardsilogic@0 91 connect(pane, SIGNAL(propertyContainerRemoved(PropertyContainer *)),
lbajardsilogic@0 92 this, SLOT(propertyContainerRemoved(PropertyContainer *)));
lbajardsilogic@0 93 connect(pane, SIGNAL(paneInteractedWith()),
lbajardsilogic@0 94 this, SLOT(paneInteractedWith()));
lbajardsilogic@0 95 connect(pane, SIGNAL(rightButtonMenuRequested(QPoint)),
lbajardsilogic@0 96 this, SLOT(rightButtonMenuRequested(QPoint)));
lbajardsilogic@0 97
lbajardsilogic@0 98 if (!m_currentPane) {
lbajardsilogic@0 99 setCurrentPane(pane);
lbajardsilogic@0 100 }
lbajardsilogic@0 101
lbajardsilogic@0 102 return pane;
lbajardsilogic@0 103 }
lbajardsilogic@0 104
lbajardsilogic@0 105 void
lbajardsilogic@0 106 PaneStack::setPropertyStackMinWidth(int mw)
lbajardsilogic@0 107 {
lbajardsilogic@0 108 for (std::vector<PaneRec>::iterator i = m_panes.begin();
lbajardsilogic@0 109 i != m_panes.end(); ++i) {
lbajardsilogic@0 110 i->propertyStack->setMinimumWidth(mw);
lbajardsilogic@0 111 }
lbajardsilogic@0 112 m_propertyStackMinWidth = mw;
lbajardsilogic@0 113 }
lbajardsilogic@0 114
lbajardsilogic@0 115 void
lbajardsilogic@0 116 PaneStack::setLayoutStyle(LayoutStyle style)
lbajardsilogic@0 117 {
lbajardsilogic@0 118 if (style == m_layoutStyle) return;
lbajardsilogic@0 119 m_layoutStyle = style;
lbajardsilogic@0 120
lbajardsilogic@0 121 std::vector<PaneRec>::iterator i;
lbajardsilogic@0 122
lbajardsilogic@0 123 switch (style) {
lbajardsilogic@0 124
lbajardsilogic@0 125 case NoPropertyStacks:
lbajardsilogic@0 126 case SinglePropertyStackLayout:
lbajardsilogic@0 127
lbajardsilogic@0 128 for (i = m_panes.begin(); i != m_panes.end(); ++i) {
lbajardsilogic@0 129 i->layout->removeWidget(i->propertyStack);
lbajardsilogic@0 130 i->propertyStack->setParent(m_propertyStackStack);
lbajardsilogic@0 131 m_propertyStackStack->addWidget(i->propertyStack);
lbajardsilogic@0 132 }
lbajardsilogic@0 133 m_propertyStackStack->setVisible(style != NoPropertyStacks);
lbajardsilogic@0 134 break;
lbajardsilogic@0 135
lbajardsilogic@0 136 case PropertyStackPerPaneLayout:
lbajardsilogic@0 137
lbajardsilogic@0 138 for (i = m_panes.begin(); i != m_panes.end(); ++i) {
lbajardsilogic@0 139 m_propertyStackStack->removeWidget(i->propertyStack);
lbajardsilogic@0 140 i->propertyStack->setParent(i->frame);
lbajardsilogic@0 141 i->layout->addWidget(i->propertyStack);
lbajardsilogic@0 142 i->propertyStack->show();
lbajardsilogic@0 143 }
lbajardsilogic@0 144 m_propertyStackStack->hide();
lbajardsilogic@0 145 break;
lbajardsilogic@0 146 }
lbajardsilogic@0 147 }
lbajardsilogic@0 148
lbajardsilogic@0 149 Pane *
lbajardsilogic@0 150 PaneStack::getPane(int n)
lbajardsilogic@0 151 {
lbajardsilogic@0 152 return m_panes[n].pane;
lbajardsilogic@0 153 }
lbajardsilogic@0 154
lbajardsilogic@0 155 Pane *
lbajardsilogic@0 156 PaneStack::getHiddenPane(int n)
lbajardsilogic@0 157 {
lbajardsilogic@0 158 return m_hiddenPanes[n].pane;
lbajardsilogic@0 159 }
lbajardsilogic@0 160
lbajardsilogic@0 161 void
lbajardsilogic@0 162 PaneStack::deletePane(Pane *pane)
lbajardsilogic@0 163 {
lbajardsilogic@0 164 std::vector<PaneRec>::iterator i;
lbajardsilogic@0 165 bool found = false;
lbajardsilogic@0 166
lbajardsilogic@0 167 for (i = m_panes.begin(); i != m_panes.end(); ++i) {
lbajardsilogic@0 168 if (i->pane == pane) {
lbajardsilogic@0 169 m_panes.erase(i);
lbajardsilogic@0 170 found = true;
lbajardsilogic@0 171 break;
lbajardsilogic@0 172 }
lbajardsilogic@0 173 }
lbajardsilogic@0 174
lbajardsilogic@0 175 if (!found) {
lbajardsilogic@0 176
lbajardsilogic@0 177 for (i = m_hiddenPanes.begin(); i != m_hiddenPanes.end(); ++i) {
lbajardsilogic@0 178 if (i->pane == pane) {
lbajardsilogic@0 179 m_hiddenPanes.erase(i);
lbajardsilogic@0 180 found = true;
lbajardsilogic@0 181 break;
lbajardsilogic@0 182 }
lbajardsilogic@0 183 }
lbajardsilogic@0 184
lbajardsilogic@0 185 if (!found) {
lbajardsilogic@0 186 std::cerr << "WARNING: PaneStack::deletePane(" << pane << "): Pane not found in visible or hidden panes, not deleting" << std::endl;
lbajardsilogic@0 187 return;
lbajardsilogic@0 188 }
lbajardsilogic@0 189 }
lbajardsilogic@0 190
lbajardsilogic@0 191 delete pane->parent();
lbajardsilogic@0 192
lbajardsilogic@0 193 if (m_currentPane == pane) {
lbajardsilogic@0 194 if (m_panes.size() > 0) {
lbajardsilogic@0 195 setCurrentPane(m_panes[0].pane);
lbajardsilogic@0 196 } else {
lbajardsilogic@0 197 setCurrentPane(0);
lbajardsilogic@0 198 }
lbajardsilogic@0 199 }
lbajardsilogic@0 200 }
lbajardsilogic@0 201
lbajardsilogic@0 202 int
lbajardsilogic@0 203 PaneStack::getPaneCount() const
lbajardsilogic@0 204 {
lbajardsilogic@0 205 return m_panes.size();
lbajardsilogic@0 206 }
lbajardsilogic@0 207
lbajardsilogic@0 208 int
lbajardsilogic@0 209 PaneStack::getHiddenPaneCount() const
lbajardsilogic@0 210 {
lbajardsilogic@0 211 return m_hiddenPanes.size();
lbajardsilogic@0 212 }
lbajardsilogic@0 213
lbajardsilogic@0 214 void
lbajardsilogic@0 215 PaneStack::hidePane(Pane *pane)
lbajardsilogic@0 216 {
lbajardsilogic@0 217 std::vector<PaneRec>::iterator i = m_panes.begin();
lbajardsilogic@0 218
lbajardsilogic@0 219 while (i != m_panes.end()) {
lbajardsilogic@0 220 if (i->pane == pane) {
lbajardsilogic@0 221
lbajardsilogic@0 222 m_hiddenPanes.push_back(*i);
lbajardsilogic@0 223 m_panes.erase(i);
lbajardsilogic@0 224
lbajardsilogic@0 225 QWidget *pw = dynamic_cast<QWidget *>(pane->parent());
lbajardsilogic@0 226 if (pw) pw->hide();
lbajardsilogic@0 227
lbajardsilogic@0 228 if (m_currentPane == pane) {
lbajardsilogic@0 229 if (m_panes.size() > 0) {
lbajardsilogic@0 230 setCurrentPane(m_panes[0].pane);
lbajardsilogic@0 231 } else {
lbajardsilogic@0 232 setCurrentPane(0);
lbajardsilogic@0 233 }
lbajardsilogic@0 234 }
lbajardsilogic@0 235
lbajardsilogic@0 236 return;
lbajardsilogic@0 237 }
lbajardsilogic@0 238 ++i;
lbajardsilogic@0 239 }
lbajardsilogic@0 240
lbajardsilogic@0 241 std::cerr << "WARNING: PaneStack::hidePane(" << pane << "): Pane not found in visible panes" << std::endl;
lbajardsilogic@0 242 }
lbajardsilogic@0 243
lbajardsilogic@0 244 void
lbajardsilogic@0 245 PaneStack::showPane(Pane *pane)
lbajardsilogic@0 246 {
lbajardsilogic@0 247 std::vector<PaneRec>::iterator i = m_hiddenPanes.begin();
lbajardsilogic@0 248
lbajardsilogic@0 249 while (i != m_hiddenPanes.end()) {
lbajardsilogic@0 250 if (i->pane == pane) {
lbajardsilogic@0 251 m_panes.push_back(*i);
lbajardsilogic@0 252 m_hiddenPanes.erase(i);
lbajardsilogic@0 253 QWidget *pw = dynamic_cast<QWidget *>(pane->parent());
lbajardsilogic@0 254 if (pw) pw->show();
lbajardsilogic@0 255
lbajardsilogic@0 256 //!!! update current pane
lbajardsilogic@0 257
lbajardsilogic@0 258 return;
lbajardsilogic@0 259 }
lbajardsilogic@0 260 ++i;
lbajardsilogic@0 261 }
lbajardsilogic@0 262
lbajardsilogic@0 263 std::cerr << "WARNING: PaneStack::showPane(" << pane << "): Pane not found in hidden panes" << std::endl;
lbajardsilogic@0 264 }
lbajardsilogic@0 265
lbajardsilogic@0 266 void
lbajardsilogic@0 267 PaneStack::setCurrentPane(Pane *pane) // may be null
lbajardsilogic@0 268 {
lbajardsilogic@0 269 if (m_currentPane == pane) return;
lbajardsilogic@0 270
lbajardsilogic@0 271 std::vector<PaneRec>::iterator i = m_panes.begin();
lbajardsilogic@0 272
lbajardsilogic@0 273 // We used to do this by setting the foreground and background
lbajardsilogic@0 274 // role, but it seems the background role is ignored and the
lbajardsilogic@0 275 // background drawn transparent in Qt 4.1 -- I can't quite see why
lbajardsilogic@0 276
lbajardsilogic@0 277 QPixmap selectedMap(1, 1);
lbajardsilogic@0 278 selectedMap.fill(QApplication::palette().color(QPalette::Foreground));
lbajardsilogic@0 279
lbajardsilogic@0 280 QPixmap unselectedMap(1, 1);
lbajardsilogic@0 281 unselectedMap.fill(QApplication::palette().color(QPalette::Background));
lbajardsilogic@0 282
lbajardsilogic@0 283 bool found = false;
lbajardsilogic@0 284
lbajardsilogic@0 285 while (i != m_panes.end()) {
lbajardsilogic@0 286 if (i->pane == pane) {
lbajardsilogic@0 287 i->currentIndicator->setPixmap(selectedMap);
lbajardsilogic@0 288 if (m_layoutStyle != PropertyStackPerPaneLayout) {
lbajardsilogic@0 289 m_propertyStackStack->setCurrentWidget(i->propertyStack);
lbajardsilogic@0 290 }
lbajardsilogic@0 291 found = true;
lbajardsilogic@0 292 } else {
lbajardsilogic@0 293 i->currentIndicator->setPixmap(unselectedMap);
lbajardsilogic@0 294 }
lbajardsilogic@0 295 ++i;
lbajardsilogic@0 296 }
lbajardsilogic@0 297
lbajardsilogic@0 298 if (found || pane == 0) {
lbajardsilogic@0 299 m_currentPane = pane;
lbajardsilogic@0 300 emit currentPaneChanged(m_currentPane);
lbajardsilogic@0 301 } else {
lbajardsilogic@0 302 std::cerr << "WARNING: PaneStack::setCurrentPane(" << pane << "): pane is not a visible pane in this stack" << std::endl;
lbajardsilogic@0 303 }
lbajardsilogic@0 304 }
lbajardsilogic@0 305
lbajardsilogic@0 306 void
lbajardsilogic@0 307 PaneStack::setCurrentLayer(Pane *pane, Layer *layer) // may be null
lbajardsilogic@0 308 {
lbajardsilogic@0 309 setCurrentPane(pane);
lbajardsilogic@0 310
lbajardsilogic@0 311 if (m_currentPane) {
lbajardsilogic@0 312
lbajardsilogic@0 313 std::vector<PaneRec>::iterator i = m_panes.begin();
lbajardsilogic@0 314
lbajardsilogic@0 315 while (i != m_panes.end()) {
lbajardsilogic@0 316
lbajardsilogic@0 317 if (i->pane == pane) {
lbajardsilogic@0 318 PropertyStack *stack = dynamic_cast<PropertyStack *>
lbajardsilogic@0 319 (i->propertyStack);
lbajardsilogic@0 320 if (stack) {
lbajardsilogic@0 321 if (stack->containsContainer(layer)) {
lbajardsilogic@0 322 stack->setCurrentIndex(stack->getContainerIndex(layer));
lbajardsilogic@0 323 emit currentLayerChanged(pane, layer);
lbajardsilogic@0 324 } else {
lbajardsilogic@0 325 stack->setCurrentIndex
lbajardsilogic@0 326 (stack->getContainerIndex
lbajardsilogic@0 327 (pane->getPropertyContainer(0)));
lbajardsilogic@0 328 emit currentLayerChanged(pane, 0);
lbajardsilogic@0 329 }
lbajardsilogic@0 330 }
lbajardsilogic@0 331 break;
lbajardsilogic@0 332 }
lbajardsilogic@0 333 ++i;
lbajardsilogic@0 334 }
lbajardsilogic@0 335 }
lbajardsilogic@0 336 }
lbajardsilogic@0 337
lbajardsilogic@0 338 Pane *
lbajardsilogic@0 339 PaneStack::getCurrentPane()
lbajardsilogic@0 340 {
lbajardsilogic@0 341 return m_currentPane;
lbajardsilogic@0 342 }
lbajardsilogic@0 343
lbajardsilogic@0 344 void
lbajardsilogic@0 345 PaneStack::propertyContainerAdded(PropertyContainer *)
lbajardsilogic@0 346 {
lbajardsilogic@0 347 sizePropertyStacks();
lbajardsilogic@0 348 }
lbajardsilogic@0 349
lbajardsilogic@0 350 void
lbajardsilogic@0 351 PaneStack::propertyContainerRemoved(PropertyContainer *)
lbajardsilogic@0 352 {
lbajardsilogic@0 353 sizePropertyStacks();
lbajardsilogic@0 354 }
lbajardsilogic@0 355
lbajardsilogic@0 356 void
lbajardsilogic@0 357 PaneStack::propertyContainerSelected(View *client, PropertyContainer *pc)
lbajardsilogic@0 358 {
lbajardsilogic@0 359 std::vector<PaneRec>::iterator i = m_panes.begin();
lbajardsilogic@0 360
lbajardsilogic@0 361 while (i != m_panes.end()) {
lbajardsilogic@0 362 PropertyStack *stack = dynamic_cast<PropertyStack *>(i->propertyStack);
lbajardsilogic@0 363 if (stack &&
lbajardsilogic@0 364 stack->getClient() == client &&
lbajardsilogic@0 365 stack->containsContainer(pc)) {
lbajardsilogic@0 366 setCurrentPane(i->pane);
lbajardsilogic@0 367 break;
lbajardsilogic@0 368 }
lbajardsilogic@0 369 ++i;
lbajardsilogic@0 370 }
lbajardsilogic@0 371
lbajardsilogic@0 372 Layer *layer = dynamic_cast<Layer *>(pc);
lbajardsilogic@0 373 if (layer) emit currentLayerChanged(m_currentPane, layer);
lbajardsilogic@0 374 else emit currentLayerChanged(m_currentPane, 0);
lbajardsilogic@0 375 }
lbajardsilogic@0 376
lbajardsilogic@0 377 void
lbajardsilogic@0 378 PaneStack::viewSelected(View *v)
lbajardsilogic@0 379 {
lbajardsilogic@0 380 Pane *p = dynamic_cast<Pane *>(v);
lbajardsilogic@0 381 if (p) setCurrentPane(p);
lbajardsilogic@0 382 }
lbajardsilogic@0 383
lbajardsilogic@0 384 void
lbajardsilogic@0 385 PaneStack::paneInteractedWith()
lbajardsilogic@0 386 {
lbajardsilogic@0 387 Pane *pane = dynamic_cast<Pane *>(sender());
lbajardsilogic@0 388 if (!pane) return;
lbajardsilogic@0 389 setCurrentPane(pane);
lbajardsilogic@0 390 }
lbajardsilogic@0 391
lbajardsilogic@0 392 void
lbajardsilogic@0 393 PaneStack::rightButtonMenuRequested(QPoint position)
lbajardsilogic@0 394 {
lbajardsilogic@0 395 Pane *pane = dynamic_cast<Pane *>(sender());
lbajardsilogic@0 396 if (!pane) return;
lbajardsilogic@0 397 emit rightButtonMenuRequested(pane, position);
lbajardsilogic@0 398 }
lbajardsilogic@0 399
lbajardsilogic@0 400 void
lbajardsilogic@0 401 PaneStack::sizePropertyStacks()
lbajardsilogic@0 402 {
lbajardsilogic@0 403 int maxMinWidth = 0;
lbajardsilogic@0 404
lbajardsilogic@0 405 if (m_propertyStackMinWidth > 0) maxMinWidth = m_propertyStackMinWidth;
lbajardsilogic@0 406
lbajardsilogic@0 407 for (size_t i = 0; i < m_panes.size(); ++i) {
lbajardsilogic@0 408 if (!m_panes[i].propertyStack) continue;
lbajardsilogic@0 409 #ifdef DEBUG_PANE_STACK
lbajardsilogic@0 410 std::cerr << "PaneStack::sizePropertyStacks: " << i << ": min "
lbajardsilogic@0 411 << m_panes[i].propertyStack->minimumSizeHint().width() << ", hint "
lbajardsilogic@0 412 << m_panes[i].propertyStack->sizeHint().width() << ", current "
lbajardsilogic@0 413 << m_panes[i].propertyStack->width() << std::endl;
lbajardsilogic@0 414 #endif
lbajardsilogic@0 415
lbajardsilogic@0 416 if (m_panes[i].propertyStack->sizeHint().width() > maxMinWidth) {
lbajardsilogic@0 417 maxMinWidth = m_panes[i].propertyStack->sizeHint().width();
lbajardsilogic@0 418 }
lbajardsilogic@0 419 }
lbajardsilogic@0 420
lbajardsilogic@0 421 #ifdef DEBUG_PANE_STACK
lbajardsilogic@0 422 std::cerr << "PaneStack::sizePropertyStacks: max min width " << maxMinWidth << std::endl;
lbajardsilogic@0 423 #endif
lbajardsilogic@0 424
lbajardsilogic@0 425 //#ifdef Q_WS_MAC
lbajardsilogic@0 426 // This is necessary to compensate for cb->setMinimumSize(10, 10)
lbajardsilogic@0 427 // in PropertyBox in the Mac version (to avoid a mysterious crash)
lbajardsilogic@0 428 // ... no longer necessary with qt4.2
lbajardsilogic@0 429 // int setWidth = maxMinWidth * 3 / 2;
lbajardsilogic@0 430 //#else
lbajardsilogic@0 431 int setWidth = maxMinWidth;
lbajardsilogic@0 432 //#endif
lbajardsilogic@0 433
lbajardsilogic@0 434 m_propertyStackStack->setMaximumWidth(setWidth + 10);
lbajardsilogic@0 435
lbajardsilogic@0 436 for (size_t i = 0; i < m_panes.size(); ++i) {
lbajardsilogic@0 437 if (!m_panes[i].propertyStack) continue;
lbajardsilogic@0 438 m_panes[i].propertyStack->setMinimumWidth(setWidth);
lbajardsilogic@0 439 }
lbajardsilogic@0 440
lbajardsilogic@0 441 emit propertyStacksResized();
lbajardsilogic@0 442 }
lbajardsilogic@0 443
lbajardsilogic@0 444