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
{
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);
}
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 "
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;
update();
}
+int IconPalette::numRows()
+{
+ return maxrow_;
+}
+
+
+int IconPalette::numButtons()
+{
+ return buttons_.size();
+}
+
+
} // namespace lyx
/// 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:
private:
int maxcol_;
+ int maxrow_;
+
QGridLayout * layout_;
typedef std::pair<QPushButton *, std::string> Button;