diff options
| author | Diederik van Lierop <mail@diedenrezi.nl> | 2019-04-30 20:40:33 +0000 |
|---|---|---|
| committer | Diederik van Lierop <mail@diedenrezi.nl> | 2019-04-30 20:40:33 +0000 |
| commit | d137944b06575b9e79d0a3e79a3e5f5b8f6665e2 (patch) | |
| tree | 6017a86cc0040ca9d7615c879036bd320f6e5de7 /src/ui | |
| parent | Fix disappearing and antialiasing of grid lines (diff) | |
| parent | Set spacing in About Dialog (diff) | |
| download | inkscape-d137944b06575b9e79d0a3e79a3e5f5b8f6665e2.tar.gz inkscape-d137944b06575b9e79d0a3e79a3e5f5b8f6665e2.zip | |
Merge branch 'master' of gitlab.com:inkscape/inkscape
Diffstat (limited to 'src/ui')
| -rw-r--r-- | src/ui/dialog/aboutbox.cpp | 3 | ||||
| -rw-r--r-- | src/ui/dialog/layers.cpp | 1 | ||||
| -rw-r--r-- | src/ui/dialog/livepatheffect-add.cpp | 9 | ||||
| -rw-r--r-- | src/ui/dialog/selectordialog.cpp | 84 | ||||
| -rw-r--r-- | src/ui/toolbar/arc-toolbar.cpp | 3 | ||||
| -rw-r--r-- | src/ui/toolbar/rect-toolbar.cpp | 2 | ||||
| -rw-r--r-- | src/ui/toolbar/text-toolbar.cpp | 2 | ||||
| -rw-r--r-- | src/ui/tools/flood-tool.cpp | 9 | ||||
| -rw-r--r-- | src/ui/tools/measure-tool.cpp | 6 | ||||
| -rw-r--r-- | src/ui/widget/color-icc-selector.cpp | 8 | ||||
| -rw-r--r-- | src/ui/widget/color-scales.cpp | 1 | ||||
| -rw-r--r-- | src/ui/widget/color-wheel-selector.cpp | 10 | ||||
| -rw-r--r-- | src/ui/widget/unit-tracker.cpp | 2 |
13 files changed, 89 insertions, 51 deletions
diff --git a/src/ui/dialog/aboutbox.cpp b/src/ui/dialog/aboutbox.cpp index e829091cb..87141c655 100644 --- a/src/ui/dialog/aboutbox.cpp +++ b/src/ui/dialog/aboutbox.cpp @@ -91,6 +91,9 @@ AboutBox::AboutBox() set_comments (_("Open Source Scalable Vector Graphics Editor\n" "Draw Freely.")); // clang-format on + + get_content_area()->set_border_width(3); + get_action_area()->set_border_width(3); } /** diff --git a/src/ui/dialog/layers.cpp b/src/ui/dialog/layers.cpp index 79bf767c7..449d6be1a 100644 --- a/src/ui/dialog/layers.cpp +++ b/src/ui/dialog/layers.cpp @@ -383,6 +383,7 @@ void LayersPanel::_layersChanged() // g_message("_layersChanged()"); if (_desktop) { SPDocument* document = _desktop->doc(); + g_return_if_fail(document != nullptr); // bug #158: Crash on File>Quit SPRoot* root = document->getRoot(); if ( root ) { _selectedConnection.block(); diff --git a/src/ui/dialog/livepatheffect-add.cpp b/src/ui/dialog/livepatheffect-add.cpp index 8e4d7db15..737d1e5ff 100644 --- a/src/ui/dialog/livepatheffect-add.cpp +++ b/src/ui/dialog/livepatheffect-add.cpp @@ -101,11 +101,10 @@ LivePathEffectAdd::LivePathEffectAdd() _LPESelectorFlowBox->signal_child_activated().connect(sigc::mem_fun(*this, &LivePathEffectAdd::on_activate)); _LPEDialogSelector->add_events(Gdk::POINTER_MOTION_MASK | Gdk::BUTTON_PRESS_MASK | Gdk::BUTTON_RELEASE_MASK | Gdk::ENTER_NOTIFY_MASK | Gdk::LEAVE_NOTIFY_MASK); - Glib::ustring effectgladefile = get_filename(Inkscape::IO::Resource::UIS, "dialog-livepatheffect-add-effect.ui"); for (int i = 0; i < static_cast<int>(converter._length); ++i) { Glib::RefPtr<Gtk::Builder> builder_effect; try { - builder_effect = Gtk::Builder::create_from_file(effectgladefile); + builder_effect = Gtk::Builder::create_from_file(gladefile); } catch (const Glib::Error &ex) { g_warning("Glade file loading failed for filter effect dialog"); return; @@ -136,10 +135,10 @@ LivePathEffectAdd::LivePathEffectAdd() Gtk::Label *LPEDescription; builder_effect->get_widget("LPEDescription", LPEDescription); LPEDescription->set_text(converter.get_description(data->id)); - Gtk::ToggleButton *LPEExperimental; - builder_effect->get_widget("LPEExperimental", LPEExperimental); + Gtk::ToggleButton *LPEExperimentalToggle; + builder_effect->get_widget("LPEExperimentalToggle", LPEExperimentalToggle); bool active = converter.get_experimental(data->id) ? true : false; - LPEExperimental->set_active(active); + LPEExperimentalToggle->set_active(active); Gtk::Image *LPEIcon; builder_effect->get_widget("LPEIcon", LPEIcon); LPEIcon->set_from_icon_name(converter.get_icon(data->id), Gtk::BuiltinIconSize(Gtk::ICON_SIZE_DIALOG)); diff --git a/src/ui/dialog/selectordialog.cpp b/src/ui/dialog/selectordialog.cpp index 3db239933..4847facfb 100644 --- a/src/ui/dialog/selectordialog.cpp +++ b/src/ui/dialog/selectordialog.cpp @@ -457,7 +457,8 @@ void SelectorDialog::_readStyleElement() coltype colType = SELECTOR; for (auto tok : tokensplus) { REMOVE_SPACES(tok); - if (tok.find(" ") != -1 || tok.erase(0, 1).find(".") != -1) { + if (SPAttributeRelSVG::isSVGElement(tok) || tok.find(" ") != -1 || tok[0] == '>' || tok[0] == '+' || + tok[0] == '~' || tok[0] == '*' || tok.erase(0, 1).find(".") != -1) { colType = UNHANDLED; } } @@ -485,16 +486,14 @@ void SelectorDialog::_readStyleElement() row[_mColumns._colType] = colType; row[_mColumns._colObj] = objVec; row[_mColumns._colProperties] = properties; - if (colType == SELECTOR) { - // Add as children, objects that match selector. - for (auto &obj : objVec) { - Gtk::TreeModel::Row childrow = *(_store->append(row->children())); - childrow[_mColumns._colSelector] = "#" + Glib::ustring(obj->getId()); - childrow[_mColumns._colExpand] = false; - childrow[_mColumns._colType] = OBJECT; - childrow[_mColumns._colObj] = std::vector<SPObject *>(1, obj); - childrow[_mColumns._colProperties] = ""; // Unused - } + // Add as children, objects that match selector. + for (auto &obj : objVec) { + Gtk::TreeModel::Row childrow = *(_store->append(row->children())); + childrow[_mColumns._colSelector] = "#" + Glib::ustring(obj->getId()); + childrow[_mColumns._colExpand] = false; + childrow[_mColumns._colType] = colType == UNHANDLED ? UNHANDLED : OBJECT; + childrow[_mColumns._colObj] = std::vector<SPObject *>(1, obj); + childrow[_mColumns._colProperties] = ""; // Unused } } _updating = false; @@ -693,6 +692,9 @@ void SelectorDialog::_removeFromSelector(Gtk::TreeModel::Row row) if (*row) { Glib::ustring objectLabel = row[_mColumns._colSelector]; + if (row[_mColumns._colType] == UNHANDLED) { + return; + }; Gtk::TreeModel::iterator iter = row->parent(); if (iter) { Gtk::TreeModel::Row parent = *iter; @@ -788,8 +790,21 @@ Glib::ustring SelectorDialog::_getIdList(std::vector<SPObject*> sel) */ std::vector<SPObject *> SelectorDialog::_getObjVec(Glib::ustring selector) { - std::vector<SPObject *> objVec = SP_ACTIVE_DOCUMENT->getObjectsBySelector( selector ); - + std::vector<SPObject *> objVec; + std::vector<Glib::ustring> tokensplus = Glib::Regex::split_simple("[,]+", selector); + bool unhandled = false; + for (auto tok : tokensplus) { + REMOVE_SPACES(tok); + if (SPAttributeRelSVG::isSVGElement(tok) || tok.find(" ") != -1 || tok[0] == '>' || tok[0] == '+' || + tok[0] == '~' || tok[0] == '*' || tok.erase(0, 1).find(".") != -1) { + unhandled = true; + std::vector<SPObject *> objVecSplited = SP_ACTIVE_DOCUMENT->getObjectsBySelector(tok); + objVec.insert(objVec.end(), objVecSplited.begin(), objVecSplited.end()); + } + } + if (!unhandled) { + objVec = SP_ACTIVE_DOCUMENT->getObjectsBySelector(selector); + } g_debug("SelectorDialog::_getObjVec: | %s |", selector.c_str()); for (auto& obj: objVec) { g_debug(" %s", obj->getId() ? obj->getId() : "null"); @@ -943,17 +958,44 @@ void SelectorDialog::_addSelector() * set to ".Class1" */ selectorValue = textEditPtr->get_text(); - Glib::ustring firstWord = selectorValue.substr(0, selectorValue.find_first_of(" >+~")); - if (firstWord != selectorValue) { - handled = false; - } + del->set_sensitive(true); + std::vector<Glib::ustring> tokensplus = Glib::Regex::split_simple("[,]+", selectorValue); + bool unhandled = false; + bool partialinvalid = false; + for (auto tok : tokensplus) { + REMOVE_SPACES(tok); + if (SPAttributeRelSVG::isSVGElement(tok) || tok.find(" ") != -1 || tok[0] == '>' || tok[0] == '+' || + tok[0] == '~' || tok[0] == '*' || tok.erase(0, 1).find(".") != -1) { + unhandled = true; + Glib::ustring firstWord = tok.substr(0, tok.find_first_of(" >+~")); + if (firstWord != tok) { + handled = false; + } - if (selectorValue[0] == '.' || selectorValue[0] == '#' || selectorValue[0] == '*' || - SPAttributeRelSVG::isSVGElement(selectorValue)) { - invalid = false; - } else { + if (!partialinvalid && + (tok[0] == '.' || tok[0] == '#' || tok[0] == '*' || SPAttributeRelSVG::isSVGElement(tok))) { + partialinvalid = false; + } else { + partialinvalid = true; + } + } + } + if (!unhandled) { + Glib::ustring firstWord = selectorValue.substr(0, selectorValue.find_first_of(" >+~")); + if (firstWord != selectorValue) { + handled = false; + } + if (selectorValue[0] == '.' || selectorValue[0] == '#' || selectorValue[0] == '*' || + SPAttributeRelSVG::isSVGElement(selectorValue)) { + invalid = false; + } else { + textLabelPtr->show(); + } + } else if (partialinvalid) { textLabelPtr->show(); + } else { + invalid = false; } } delete textDialogPtr; diff --git a/src/ui/toolbar/arc-toolbar.cpp b/src/ui/toolbar/arc-toolbar.cpp index e9e25b7df..751efaa80 100644 --- a/src/ui/toolbar/arc-toolbar.cpp +++ b/src/ui/toolbar/arc-toolbar.cpp @@ -39,6 +39,7 @@ #include "verbs.h" #include "object/sp-ellipse.h" +#include "object/sp-namedview.h" #include "ui/icon-names.h" #include "ui/pref-pusher.h" @@ -78,7 +79,7 @@ ArcToolbar::ArcToolbar(SPDesktop *desktop) : _freeze(false), _repr(nullptr) { - _tracker->setActiveUnit(unit_table.getUnit("px")); + _tracker->setActiveUnit(desktop->getNamedView()->display_units); auto prefs = Inkscape::Preferences::get(); { diff --git a/src/ui/toolbar/rect-toolbar.cpp b/src/ui/toolbar/rect-toolbar.cpp index 960ddaac9..a8b49e62d 100644 --- a/src/ui/toolbar/rect-toolbar.cpp +++ b/src/ui/toolbar/rect-toolbar.cpp @@ -84,7 +84,7 @@ RectToolbar::RectToolbar(SPDesktop *desktop) // rx/ry units menu: create //tracker->addUnit( SP_UNIT_PERCENT, 0 ); // fixme: add % meaning per cent of the width/height - _tracker->setActiveUnit(unit_table.getUnit("px")); + _tracker->setActiveUnit(desktop->getNamedView()->display_units); _mode_item->set_use_markup(true); /* W */ diff --git a/src/ui/toolbar/text-toolbar.cpp b/src/ui/toolbar/text-toolbar.cpp index bd73fe584..3b55f8b08 100644 --- a/src/ui/toolbar/text-toolbar.cpp +++ b/src/ui/toolbar/text-toolbar.cpp @@ -265,7 +265,7 @@ TextToolbar::TextToolbar(SPDesktop *desktop) _tracker(new UnitTracker(Inkscape::Util::UNIT_TYPE_LINEAR)) { /* Line height unit tracker */ - _tracker->prependUnit(unit_table.getUnit("")); // No unit + _tracker->prependUnit(unit_table.getUnit("")); // Ratio _tracker->addUnit(unit_table.getUnit("%")); _tracker->addUnit(unit_table.getUnit("em")); _tracker->addUnit(unit_table.getUnit("ex")); diff --git a/src/ui/tools/flood-tool.cpp b/src/ui/tools/flood-tool.cpp index 6db530917..68987dfcc 100644 --- a/src/ui/tools/flood-tool.cpp +++ b/src/ui/tools/flood-tool.cpp @@ -627,7 +627,7 @@ static ScanlineCheckResult perform_bitmap_scanline_check(std::deque<Geom::Point> bool can_paint_top = (top_ty > 0); bool can_paint_bottom = (bottom_ty < bci.height); - Geom::Point t = fill_queue->front(); + Geom::Point front_of_queue = fill_queue->empty() ? Geom::Point() : fill_queue->front(); do { ok = false; @@ -645,8 +645,11 @@ static ScanlineCheckResult perform_bitmap_scanline_check(std::deque<Geom::Point> paint_directions = paint_pixel(px, trace_px, orig_color, bci, current_trace_t); if (bci.radius == 0) { mark_pixel_checked(current_trace_t); - if ((t[Geom::X] == bci.x) && (t[Geom::Y] == bci.y)) { - fill_queue->pop_front(); t = fill_queue->front(); + if ((!fill_queue->empty()) && + (front_of_queue[Geom::X] == bci.x) && + (front_of_queue[Geom::Y] == bci.y)) { + fill_queue->pop_front(); + front_of_queue = fill_queue->empty() ? Geom::Point() : fill_queue->front(); } } diff --git a/src/ui/tools/measure-tool.cpp b/src/ui/tools/measure-tool.cpp index f8c8517c9..64824514e 100644 --- a/src/ui/tools/measure-tool.cpp +++ b/src/ui/tools/measure-tool.cpp @@ -810,7 +810,7 @@ void MeasureTool::toMarkDimension() setLine(start, end, true, color); Glib::ustring unit_name = prefs->getString("/tools/measure/unit"); if (!unit_name.compare("")) { - unit_name = "px"; + unit_name = DEFAULT_UNIT_NAME; } double fontsize = prefs->getDouble("/tools/measure/fontsize", 10.0); int precision = prefs->getInt("/tools/measure/precision", 2); @@ -1162,7 +1162,7 @@ void MeasureTool::showInfoBox(Geom::Point cursor, bool into_groups) Glib::ustring unit_name = prefs->getString("/tools/measure/unit"); bool only_selected = prefs->getBool("/tools/measure/only_selected", false); if (!unit_name.compare("")) { - unit_name = "px"; + unit_name = DEFAULT_UNIT_NAME; } Geom::Scale zoom = Geom::Scale(Inkscape::Util::Quantity::convert(desktop->current_zoom(), "px", unit->abbr)).inverse(); if(newover != over){ @@ -1324,7 +1324,7 @@ void MeasureTool::showCanvasItems(bool to_guides, bool to_item, bool to_phantom, } Glib::ustring unit_name = prefs->getString("/tools/measure/unit"); if (!unit_name.compare("")) { - unit_name = "px"; + unit_name = DEFAULT_UNIT_NAME; } double scale = prefs->getDouble("/tools/measure/scale", 100.0) / 100.0; double fontsize = prefs->getDouble("/tools/measure/fontsize", 10.0); diff --git a/src/ui/widget/color-icc-selector.cpp b/src/ui/widget/color-icc-selector.cpp index 0970c779c..a8e1d255f 100644 --- a/src/ui/widget/color-icc-selector.cpp +++ b/src/ui/widget/color-icc-selector.cpp @@ -486,7 +486,7 @@ void ColorICCSelector::init() attachToGridOrTable(t, _impl->_label, 0, row, 1, 1); // Adjustment - _impl->_adj = GTK_ADJUSTMENT(gtk_adjustment_new(0.0, 0.0, 255.0, 1.0, 10.0, 10.0)); + _impl->_adj = GTK_ADJUSTMENT(gtk_adjustment_new(0.0, 0.0, 100.0, 1.0, 10.0, 10.0)); // Slider _impl->_slider = Gtk::manage(new Inkscape::UI::Widget::ColorSlider(Glib::wrap(_impl->_adj, true))); @@ -941,12 +941,6 @@ void ColorICCSelectorImpl::_updateSliders(gint ignore) void ColorICCSelectorImpl::_adjustmentChanged(GtkAdjustment *adjustment, ColorICCSelectorImpl *cs) { -// // TODO check this. It looks questionable: -// // if a value is entered between 0 and 1 exclusive, normalize it to (int) 0..255 or 0..100 -// if (adjustment->value > 0.0 && adjustment->value < 1.0) { -// gtk_adjustment_set_value( adjustment, floor ((adjustment->value) * adjustment->upper + 0.5) ); -// } - #ifdef DEBUG_LCMS g_message("/^^^^^^^^^ %p::_adjustmentChanged()", cs); #endif // DEBUG_LCMS diff --git a/src/ui/widget/color-scales.cpp b/src/ui/widget/color-scales.cpp index 588e9a84d..d68d19aec 100644 --- a/src/ui/widget/color-scales.cpp +++ b/src/ui/widget/color-scales.cpp @@ -376,6 +376,7 @@ void ColorScales::setMode(SPColorScalesMode mode) switch (mode) { case SP_COLOR_SCALES_MODE_RGB: _setRangeLimit(255.0); + gtk_adjustment_set_upper(_a[3], 100.0); gtk_label_set_markup_with_mnemonic(GTK_LABEL(_l[0]), _("_R:")); _s[0]->set_tooltip_text(_("Red")); gtk_widget_set_tooltip_text(_b[0], _("Red")); diff --git a/src/ui/widget/color-wheel-selector.cpp b/src/ui/widget/color-wheel-selector.cpp index 1c2660876..969530302 100644 --- a/src/ui/widget/color-wheel-selector.cpp +++ b/src/ui/widget/color-wheel-selector.cpp @@ -78,7 +78,7 @@ void ColorWheelSelector::_initUI() attach(*label, 0, row, 1, 1); /* Adjustment */ - _alpha_adjustment = Gtk::Adjustment::create(0.0, 0.0, 255.0, 1.0, 10.0, 10.0); + _alpha_adjustment = Gtk::Adjustment::create(0.0, 0.0, 100.0, 1.0, 10.0, 10.0); /* Slider */ _slider = Gtk::manage(new Inkscape::UI::Widget::ColorSlider(_alpha_adjustment)); @@ -137,14 +137,6 @@ void ColorWheelSelector::_adjustmentChanged() return; } - // TODO check this. It looks questionable: - // if a value is entered between 0 and 1 exclusive, normalize it to (int) 0..255 or 0..100 - gdouble value = _alpha_adjustment->get_value(); - gdouble upper = _alpha_adjustment->get_upper(); - if (value > 0.0 && value < 1.0) { - _alpha_adjustment->set_value(floor(value * upper + 0.5)); - } - _color.preserveICC(); _color.setAlpha(ColorScales::getScaled(_alpha_adjustment->gobj())); } diff --git a/src/ui/widget/unit-tracker.cpp b/src/ui/widget/unit-tracker.cpp index 665bb7497..4abfaa9c8 100644 --- a/src/ui/widget/unit-tracker.cpp +++ b/src/ui/widget/unit-tracker.cpp @@ -180,7 +180,9 @@ UnitTracker::create_tool_item(Glib::ustring const &label, Glib::ustring const &tooltip) { auto combo = ComboToolItem::create(label, tooltip, "NotUsed", _store); + combo->set_active(_active); combo->signal_changed().connect(sigc::mem_fun(*this, &UnitTracker::_unitChangedCB)); + combo->set_data("unit-tracker", this); _combo_list.push_back(combo); return combo; } |
