=== modified file 'src/ui/dialog/grid-arrange-tab.cpp' --- src/ui/dialog/grid-arrange-tab.cpp 2014-05-11 14:04:42 +0000 +++ src/ui/dialog/grid-arrange-tab.cpp 2014-10-02 06:15:48 +0000 @@ -207,7 +207,6 @@ // Calculate individual Row and Column sizes if necessary - cnt=0; const GSList *sizes = sorted; for (; sizes != NULL; sizes = sizes->next) { @@ -227,13 +226,22 @@ cnt++; } + const bool ignoreBoxSize = SpaceManualRadioButton.get_active() && IgnoreBoxSizeCheckButton.get_active(); /// Make sure the top and left of the grid dont move by compensating for align values. - if (RowHeightButton.get_active()){ - grid_top = grid_top - (((row_height - row_heights[0]) / 2)*(VertAlign)); + if ( RowHeightButton.get_active() ){ + if ( ignoreBoxSize ) { + grid_top = grid_top - (((paddingy - row_heights[0]) / 2)*(VertAlign)); + } else { + grid_top = grid_top - (((row_height - row_heights[0]) / 2)*(VertAlign)); + } } - if (ColumnWidthButton.get_active()){ - grid_left = grid_left - (((col_width - col_widths[0]) /2)*(HorizAlign)); + if ( ColumnWidthButton.get_active() ){ + if ( ignoreBoxSize ) { + grid_left = grid_left - (((paddingx - col_widths[0]) /2)*(HorizAlign)); + } else { + grid_left = grid_left - (((col_width - col_widths[0]) /2)*(HorizAlign)); + } } #ifdef DEBUG_GRID_ARRANGE @@ -308,6 +316,7 @@ } cnt=0; + for (row_cnt=0; ((sorted != NULL) && (row_cntsetDouble("/dialogs/gridtiler/YPad", YPadding.getValue("px")); } +/** + * changed value in ignore box size checkbutton. + */ +void GridArrangeTab::on_ignore_box_checkbutton_changed() +{ + Inkscape::Preferences *prefs = Inkscape::Preferences::get(); + prefs->setBool("/dialogs/gridtiler/IgnoreBox", IgnoreBoxSizeCheckButton.get_active()); +} + /** * checked/unchecked autosize Rows button. @@ -509,6 +532,7 @@ XPadding.set_sensitive ( SpaceManualRadioButton.get_active()); YPadding.set_sensitive ( SpaceManualRadioButton.get_active()); + IgnoreBoxSizeCheckButton.set_sensitive ( SpaceManualRadioButton.get_active()); } /** @@ -754,6 +778,13 @@ XPadding.signal_value_changed().connect(sigc::mem_fun(*this, &GridArrangeTab::on_xpad_spinbutton_changed)); } + { + /*#### Ignore box size ####*/ + IgnoreBoxSizeCheckButton.set_label(_("_Ignore Box Size")); + IgnoreBoxSizeCheckButton.set_use_underline(true); + IgnoreBoxSizeCheckButton.signal_clicked().connect(sigc::mem_fun(*this, &GridArrangeTab::on_ignore_box_checkbutton_changed)); + } + PaddingTable->set_border_width(MARGIN); #if WITH_GTKMM_3_0 @@ -762,12 +793,14 @@ PaddingTable->attach(XPadding, 0, 0, 1, 1); PaddingTable->attach(PaddingUnitMenu, 1, 0, 1, 1); PaddingTable->attach(YPadding, 0, 1, 1, 1); + PaddingTable->attach(IgnoreBoxSizeCheckButton, 0, 2, 1, 1); #else PaddingTable->set_row_spacings(MARGIN); PaddingTable->set_col_spacings(MARGIN); PaddingTable->attach(XPadding, 0, 1, 0, 1, Gtk::SHRINK, Gtk::SHRINK); PaddingTable->attach(PaddingUnitMenu, 1, 2, 0, 1, Gtk::SHRINK, Gtk::SHRINK); PaddingTable->attach(YPadding, 0, 1, 1, 2, Gtk::SHRINK, Gtk::SHRINK); + PaddingTable->attach(IgnoreBoxSizeCheckButton, 0, 1, 2, 3, Gtk::SHRINK, Gtk::SHRINK); #endif TileBox.pack_start(*PaddingTable, false, false, MARGIN); @@ -784,6 +817,7 @@ SpaceByBBoxRadioButton.set_active(!ManualSpacing); XPadding.set_sensitive (ManualSpacing); YPadding.set_sensitive (ManualSpacing); + IgnoreBoxSizeCheckButton.set_sensitive(ManualSpacing); //## The OK button FIXME /*TileOkButton = addResponseButton(C_("Rows and columns dialog","_Arrange"), GTK_RESPONSE_APPLY); === modified file 'src/ui/dialog/grid-arrange-tab.h' --- src/ui/dialog/grid-arrange-tab.h 2014-03-27 01:33:44 +0000 +++ src/ui/dialog/grid-arrange-tab.h 2014-10-02 04:33:57 +0000 @@ -58,6 +58,7 @@ void on_ColSize_checkbutton_changed(); void on_rowSize_spinbutton_changed(); void on_colSize_spinbutton_changed(); + void on_ignore_box_checkbutton_changed(); void Spacing_button_changed(); void Align_changed(); @@ -121,6 +122,7 @@ Gtk::RadioButtonGroup SpacingGroup; Gtk::RadioButton SpaceByBBoxRadioButton; Gtk::RadioButton SpaceManualRadioButton; + Gtk::CheckButton IgnoreBoxSizeCheckButton; bool ManualSpacing; // Row height