From: Abdelrazak Younes Date: Sat, 18 Nov 2006 16:19:18 +0000 (+0000) Subject: Bug fixes from Ugras Baran: X-Git-Tag: 1.6.10~11839 X-Git-Url: https://git.lyx.org/gitweb/?a=commitdiff_plain;h=eea50a75422701b88d1d194debc502b7934b1e48;p=lyx.git Bug fixes from Ugras Baran: when iconpalette detached from the math dialog, the iconpalette widget width may become too large to fit to the screen. when detached resized to a too small size, icons overlap. git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@15966 a592a061-630c-0410-9148-cb99ea01b6c8 --- diff --git a/src/frontends/qt4/QMathDialog.C b/src/frontends/qt4/QMathDialog.C index bad3fffb95..3ae10fdd80 100644 --- a/src/frontends/qt4/QMathDialog.C +++ b/src/frontends/qt4/QMathDialog.C @@ -224,12 +224,15 @@ void QMathDialog::expandClicked() { int const id = symbolsCO->currentIndex(); IconPalette * p = makePanel(0, panels[id]); + p->setFixedWidth(40 * 15 + 20); string s = "LyX: "; s += fromqstr(symbolsCO->currentText()); p->setWindowTitle(toqstr(s)); p->resize(40 * 5, p->height()); - p->show(); - p->setMaximumSize(p->width(), p->height()); + p->show(); + p->resize(40 * 5 + 20, 40 * p->numRows() + 20); + p->setMinimumSize(40 * 5 + 20, 40 * 1 + 20); + p->setMaximumWidth (40 * p->numButtons() + 20); } diff --git a/src/frontends/qt4/iconpalette.C b/src/frontends/qt4/iconpalette.C index 6d9fd53306..f18a909645 100644 --- a/src/frontends/qt4/iconpalette.C +++ b/src/frontends/qt4/iconpalette.C @@ -89,7 +89,7 @@ void IconPalette::resizeEvent(QResizeEvent * e) int cols = max(width() / button_size, 1); int rows = max(int(buttons_.size() / cols), 1); - if (buttons_.size() % cols) + if (buttons_.size() % cols ) ++rows; lyxerr[Debug::GUI] << "Laying out " << buttons_.size() << " widgets in a " @@ -121,7 +121,13 @@ void IconPalette::resizeEvent(QResizeEvent * e) out: - resize(cols * button_size, rows * button_size); + int maxrow_ = int(buttons_.size() / cols); + if (!maxrow_ || buttons_.size() % cols ) + ++maxrow_; + if(!parent()) + setMinimumHeight(button_size * maxrow_ + 20); //prevents the detached panel becomes unreadable + else + resize(cols * button_size, rows * button_size); maxcol_ = cols; @@ -129,6 +135,18 @@ out: update(); } +int IconPalette::numRows() +{ + return maxrow_; +} + + +int IconPalette::numButtons() +{ + return buttons_.size(); +} + + } // namespace lyx diff --git a/src/frontends/qt4/iconpalette.h b/src/frontends/qt4/iconpalette.h index 0b4892d3d6..b4d247d85d 100644 --- a/src/frontends/qt4/iconpalette.h +++ b/src/frontends/qt4/iconpalette.h @@ -36,6 +36,11 @@ public: /// add a button void add(QPixmap const & pixmap, std::string name, std::string tooltip); + /// get required number of rows. + int numRows(); + /// get number of Buttons + int numButtons(); + Q_SIGNALS: void button_clicked(const std::string &); protected: @@ -45,6 +50,8 @@ protected Q_SLOTS: private: int maxcol_; + int maxrow_; + QGridLayout * layout_; typedef std::pair Button;