setSectionResizeMode(mathsModule->packagesTW->horizontalHeader(), QHeaderView::Stretch);
map<string, string> const & packages = BufferParams::auto_packages();
mathsModule->packagesTW->setRowCount(packages.size());
- int i = 0;
+ int packnum = 0;
for (map<string, string>::const_iterator it = packages.begin();
it != packages.end(); ++it) {
docstring const package = from_ascii(it->first);
autoRB->setToolTip(autoTooltip);
alwaysRB->setToolTip(alwaysTooltip);
neverRB->setToolTip(neverTooltip);
+
+ // Pack the buttons in a layout in order to get proper alignment
+ QWidget * autoRBWidget = new QWidget();
+ QHBoxLayout * autoRBLayout = new QHBoxLayout(autoRBWidget);
+ autoRBLayout->addWidget(autoRB);
+ autoRBLayout->setAlignment(Qt::AlignCenter);
+ autoRBLayout->setContentsMargins(0, 0, 0, 0);
+ autoRBWidget->setLayout(autoRBLayout);
+
+ QWidget * alwaysRBWidget = new QWidget();
+ QHBoxLayout * alwaysRBLayout = new QHBoxLayout(alwaysRBWidget);
+ alwaysRBLayout->addWidget(alwaysRB);
+ alwaysRBLayout->setAlignment(Qt::AlignCenter);
+ alwaysRBLayout->setContentsMargins(0, 0, 0, 0);
+ alwaysRBWidget->setLayout(alwaysRBLayout);
+
+ QWidget * neverRBWidget = new QWidget();
+ QHBoxLayout * neverRBLayout = new QHBoxLayout(neverRBWidget);
+ neverRBLayout->addWidget(neverRB);
+ neverRBLayout->setAlignment(Qt::AlignCenter);
+ neverRBLayout->setContentsMargins(0, 0, 0, 0);
+ neverRBWidget->setLayout(neverRBLayout);
+
QTableWidgetItem * pack = new QTableWidgetItem(toqstr(package));
- mathsModule->packagesTW->setItem(i, 0, pack);
- mathsModule->packagesTW->setCellWidget(i, 1, autoRB);
- mathsModule->packagesTW->setCellWidget(i, 2, alwaysRB);
- mathsModule->packagesTW->setCellWidget(i, 3, neverRB);
+
+ mathsModule->packagesTW->setItem(packnum, 0, pack);
+ mathsModule->packagesTW->setCellWidget(packnum, 1, autoRBWidget);
+ mathsModule->packagesTW->setCellWidget(packnum, 2, alwaysRBWidget);
+ mathsModule->packagesTW->setCellWidget(packnum, 3, neverRBWidget);
connect(autoRB, SIGNAL(clicked()),
this, SLOT(change_adaptor()));
this, SLOT(change_adaptor()));
connect(neverRB, SIGNAL(clicked()),
this, SLOT(change_adaptor()));
- ++i;
+ ++packnum;
}
connect(mathsModule->allPackagesAutoPB, SIGNAL(clicked()),
this, SLOT(allPackagesAuto()));
if (!item)
continue;
int row = mathsModule->packagesTW->row(item);
- QRadioButton * rb = (QRadioButton*)mathsModule->packagesTW->cellWidget(row, 1);
+
+ QRadioButton * rb =
+ (QRadioButton*)mathsModule->packagesTW->cellWidget(row, 1)->layout()->itemAt(0)->widget();
if (rb->isChecked()) {
bp_.use_package(it->first, BufferParams::package_auto);
continue;
}
- rb = (QRadioButton*)mathsModule->packagesTW->cellWidget(row, 2);
+ rb = (QRadioButton*)mathsModule->packagesTW->cellWidget(row, 2)->layout()->itemAt(0)->widget();
if (rb->isChecked()) {
bp_.use_package(it->first, BufferParams::package_on);
continue;
}
- rb = (QRadioButton*)mathsModule->packagesTW->cellWidget(row, 3);
+ rb = (QRadioButton*)mathsModule->packagesTW->cellWidget(row, 3)->layout()->itemAt(0)->widget();
if (rb->isChecked())
bp_.use_package(it->first, BufferParams::package_off);
}
int row = mathsModule->packagesTW->row(item);
switch (bp_.use_package(it->first)) {
case BufferParams::package_off: {
- QRadioButton * rb = (QRadioButton*)mathsModule->packagesTW->cellWidget(row, 3);
+ QRadioButton * rb =
+ (QRadioButton*)mathsModule->packagesTW->cellWidget(row, 3)->layout()->itemAt(0)->widget();
rb->setChecked(true);
break;
}
case BufferParams::package_on: {
- QRadioButton * rb = (QRadioButton*)mathsModule->packagesTW->cellWidget(row, 2);
+ QRadioButton * rb =
+ (QRadioButton*)mathsModule->packagesTW->cellWidget(row, 2)->layout()->itemAt(0)->widget();
rb->setChecked(true);
break;
}
case BufferParams::package_auto: {
- QRadioButton * rb = (QRadioButton*)mathsModule->packagesTW->cellWidget(row, 1);
+ QRadioButton * rb =
+ (QRadioButton*)mathsModule->packagesTW->cellWidget(row, 1)->layout()->itemAt(0)->widget();
rb->setChecked(true);
break;
}
// We need a non-const buffer object.
Buffer & buf = const_cast<BufferView *>(bufferview())->buffer();
// There may be several undo records; group them (bug #8998)
- buf.undo().beginUndoGroup();
+ // This handles undo groups automagically
+ UndoGroupHelper ugh(&buf);
// This must come first so that a language change is correctly noticed
setLanguage();
// If we used an LFUN, we would not need these two lines:
BufferView * bv = const_cast<BufferView *>(bufferview());
bv->processUpdateFlags(Update::Force | Update::FitCursor);
-
- // Don't forget to close the group. Note that it is important
- // to check that there is no early return in the method.
- buf.undo().endUndoGroup();
}
void GuiDocument::allPackages(int col)
{
for (int row = 0; row < mathsModule->packagesTW->rowCount(); ++row) {
- QRadioButton * rb = (QRadioButton*)mathsModule->packagesTW->cellWidget(row, col);
+ QRadioButton * rb =
+ (QRadioButton*)mathsModule->packagesTW->cellWidget(row, col)->layout()->itemAt(0)->widget();
rb->setChecked(true);
}
}