]> git.lyx.org Git - lyx.git/commitdiff
Bug fixes from Ugras Baran:
authorAbdelrazak Younes <younes@lyx.org>
Sat, 18 Nov 2006 16:19:18 +0000 (16:19 +0000)
committerAbdelrazak Younes <younes@lyx.org>
Sat, 18 Nov 2006 16:19:18 +0000 (16:19 +0000)
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

src/frontends/qt4/QMathDialog.C
src/frontends/qt4/iconpalette.C
src/frontends/qt4/iconpalette.h

index bad3fffb9533bd445412e458abf0c896c3444a39..3ae10fdd809c4c6dc48039bbac1227ad7c2d8ca2 100644 (file)
@@ -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);
 }
 
 
index 6d9fd5330682189beab974b082713cd81b75a5f4..f18a90964508f8bbd5d17219bd503667f3a78e24 100644 (file)
@@ -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
 
index 0b4892d3d65d99f1f48c395ffd9239313202571c..b4d247d85db4a6b0a63296a8d18323e5e1c4d05e 100644 (file)
@@ -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<QPushButton *, std::string> Button;