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
This commit is contained in:
Abdelrazak Younes 2006-11-18 16:19:18 +00:00
parent 34a773b8cf
commit eea50a7542
3 changed files with 32 additions and 4 deletions

View 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);
}

View 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

View 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;