diff --git a/draw.js b/draw.js
index 99f0178..0837846 100644
--- a/draw.js
+++ b/draw.js
@@ -138,14 +138,22 @@ var DrawingArea = new Lang.Class({
let cr = area.get_context();
for (let i = 0; i < this.elements.length; i++) {
- this.elements[i].buildCairo(cr, false);
-
let isStraightLine = this.elements[i].shape == Shapes.LINE &&
(this.elements[i].points.length < 3 || this.elements[i].points[2] == this.elements[i].points[1] || this.elements[i].points[2] == this.elements[i].points[0]);
- if (this.elements[i].fill && !isStraightLine)
- cr.fill();
- else
+
+ if (this.elements[i].fill && !isStraightLine) {
+ // first paint stroke
+ this.elements[i].buildCairo(cr, false);
+ if (this.elements[i].shape == Shapes.NONE || this.elements[i].shape == Shapes.LINE)
+ cr.closePath();
cr.stroke();
+ // secondly paint fill
+ this.elements[i].buildCairo(cr, false);
+ cr.fill();
+ } else {
+ this.elements[i].buildCairo(cr, false);
+ cr.stroke();
+ }
}
if (this.currentElement) {
@@ -731,8 +739,8 @@ var DrawingElement = new Lang.Class({
let isStraightLine = this.shape == Shapes.LINE && (points.length < 3 || points[2] == points[1] || points[2] == points[0]);
let fill = this.fill && !isStraightLine;
let attributes = `fill="${fill ? color : 'transparent'}" ` +
- `stroke="${fill ? 'transparent' : color}" ` +
- `${fill ? 'stroke-opacity="0"' : 'fill-opacity="0"'} ` +
+ `stroke="${color}" ` +
+ `${fill ? '' : 'fill-opacity="0"'} ` +
`stroke-width="${this.line.lineWidth}" ` +
`stroke-linecap="${LineCapNames[this.line.lineCap].toLowerCase()}" ` +
`stroke-linejoin="${LineJoinNames[this.line.lineJoin].toLowerCase()}"`;
@@ -1067,7 +1075,7 @@ var DrawingMenu = new Lang.Class({
this._addSubMenuItem(this.menu, null, ShapeNames, this.area, 'currentShape', this.updateSectionVisibility.bind(this));
this._addColorSubMenuItem(this.menu);
- this.fillItem = this._addSwitchItem(this.menu, _("Fill"), this.strokeIcon, this.fillIcon, this.area, 'fill', this.updateSectionVisibility.bind(this));
+ this.fillItem = this._addSwitchItem(this.menu, _("Fill"), this.strokeIcon, this.fillIcon, this.area, 'fill');
this._addSeparator(this.menu);
let lineSection = new PopupMenu.PopupMenuSection();
@@ -1104,21 +1112,18 @@ var DrawingMenu = new Lang.Class({
},
updateSectionVisibility: function() {
- if (this.area.fill || this.area.currentShape == Shapes.TEXT)
- this.lineSection.actor.hide();
- else
- this.lineSection.actor.show();
-
if (this.area.currentShape != Shapes.TEXT) {
+ this.lineSection.actor.show();
this.fontSection.actor.hide();
this.fillItem.setSensitive(true);
} else {
+ this.lineSection.actor.hide();
this.fontSection.actor.show();
this.fillItem.setSensitive(false);
}
},
- _addSwitchItem: function(menu, label, iconFalse, iconTrue, target, targetProperty, callback) {
+ _addSwitchItem: function(menu, label, iconFalse, iconTrue, target, targetProperty) {
let item = new PopupMenu.PopupSwitchMenuItem(label, target[targetProperty]);
item.icon = new St.Icon({ style_class: 'popup-menu-icon blabla' });
@@ -1128,8 +1133,6 @@ var DrawingMenu = new Lang.Class({
item.connect('toggled', (item, state) => {
target[targetProperty] = state;
item.icon.set_gicon(target[targetProperty] ? iconTrue : iconFalse);
- if (callback)
- callback();
});
menu.addMenuItem(item);
return item;
@@ -1170,12 +1173,24 @@ var DrawingMenu = new Lang.Class({
Mainloop.timeout_add(0, () => {
for (let i in obj) {
- item.menu.addAction(_(obj[i]), () => {
+ let text;
+ if (targetProperty == 'currentFontFamilyId')
+ text = `${_(obj[i])}`;
+ else if (targetProperty == 'currentFontWeight')
+ text = `${_(obj[i])}`;
+ else if (targetProperty == 'currentFontStyle')
+ text = `${_(obj[i])}`;
+ else
+ text = _(obj[i]);
+
+ let subItem = item.menu.addAction(text, () => {
item.label.set_text(_(obj[i]));
target[targetProperty] = i;
if (callback)
callback();
});
+
+ subItem.label.get_clutter_text().set_use_markup(true);
}
return GLib.SOURCE_REMOVE;
});