<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.inkscape.org/wiki/index.php?action=history&amp;feed=atom&amp;title=SelectionModifiedSignal</id>
	<title>SelectionModifiedSignal - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.inkscape.org/wiki/index.php?action=history&amp;feed=atom&amp;title=SelectionModifiedSignal"/>
	<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=SelectionModifiedSignal&amp;action=history"/>
	<updated>2026-04-10T10:49:02Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.36.1</generator>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=SelectionModifiedSignal&amp;diff=78686&amp;oldid=prev</id>
		<title>Kris: linkfix</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=SelectionModifiedSignal&amp;diff=78686&amp;oldid=prev"/>
		<updated>2012-03-01T16:40:52Z</updated>

		<summary type="html">&lt;p&gt;linkfix&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 16:40, 1 March 2012&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l108&quot;&gt;Line 108:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 108:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[bb] More concerns: Even if I fix selection_modified, this will not fix node editor, because when you're dragging a node, this signal is fired on each smallest mouse move. So if we update node display on each such signal, this will slow down dragging dramatically and even deselect the node being dragged (unless special action to restore selection is taken). So dragging a knot in the node editor itself must be somehow prevented from issuing this signal, or issue it within a block/unblock pair that will block the node editor's own handler (again, the feedback problem as recently discussed for the color picker).&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[bb] More concerns: Even if I fix selection_modified, this will not fix node editor, because when you're dragging a node, this signal is fired on each smallest mouse move. So if we update node display on each such signal, this will slow down dragging dramatically and even deselect the node being dragged (unless special action to restore selection is taken). So dragging a knot in the node editor itself must be somehow prevented from issuing this signal, or issue it within a block/unblock pair that will block the node editor's own handler (again, the feedback problem as recently discussed for the color picker).&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[JonCruz]] adds:&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;User:JonCruz|&lt;/ins&gt;JonCruz]] adds:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Actually, the problem with color picker events are not quite the same (as detailed under bug 859973). However, in working in this area a problem was noticed that might have some bearing on the edit problem. When a color was changed, it was being set twice, once by the color selector, and then again by a consuming widget. It turned out that the color selector would generate a change event that would be picked up by the paint selector. That would modify the style on the current element. In turn, that style modification would generate change events itself which would be detected by the paint selector. That, in turn, would the set the color in the color selector to a new value. Since all RGB components are float, but the style is only three 8-bit integer values, non-visible changes would propogate and double the events being generated.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Actually, the problem with color picker events are not quite the same (as detailed under bug 859973). However, in working in this area a problem was noticed that might have some bearing on the edit problem. When a color was changed, it was being set twice, once by the color selector, and then again by a consuming widget. It turned out that the color selector would generate a change event that would be picked up by the paint selector. That would modify the style on the current element. In turn, that style modification would generate change events itself which would be detected by the paint selector. That, in turn, would the set the color in the color selector to a new value. Since all RGB components are float, but the style is only three 8-bit integer values, non-visible changes would propogate and double the events being generated.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Kris</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=SelectionModifiedSignal&amp;diff=14329&amp;oldid=prev</id>
		<title>Colin Marquardt: Reverted edits by Ix7Gbb (Talk); changed back to last version by GigaClon</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=SelectionModifiedSignal&amp;diff=14329&amp;oldid=prev"/>
		<updated>2007-04-20T15:47:45Z</updated>

		<summary type="html">&lt;p&gt;Reverted edits by &lt;a href=&quot;/wiki/Special:Contributions/Ix7Gbb&quot; title=&quot;Special:Contributions/Ix7Gbb&quot;&gt;Ix7Gbb&lt;/a&gt; (&lt;a href=&quot;/wiki/index.php?title=User_talk:Ix7Gbb&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;User talk:Ix7Gbb (page does not exist)&quot;&gt;Talk&lt;/a&gt;); changed back to last version by &lt;a href=&quot;/wiki/User:GigaClon&quot; title=&quot;User:GigaClon&quot;&gt;GigaClon&lt;/a&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 15:47, 20 April 2007&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l94&quot;&gt;Line 94:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 94:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Try adding an assert to sp_selection_idle_handler -- selection-&amp;gt;idle&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Try adding an assert to sp_selection_idle_handler -- selection-&amp;gt;idle&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;should never equal 0 when the function is first entered (if it is, then&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;should never equal 0 when the function is first entered (if it is, then&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;there's a bug in your installed libgtk ).&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;there's a bug in your installed libgtk&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;+&lt;/ins&gt;).&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Another possibility is that one of the handlers for either the &amp;quot;modifed&amp;quot;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Another possibility is that one of the handlers for either the &amp;quot;modifed&amp;quot;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Colin Marquardt</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=SelectionModifiedSignal&amp;diff=14124&amp;oldid=prev</id>
		<title>Ix7Gbb at 17:59, 11 April 2007</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=SelectionModifiedSignal&amp;diff=14124&amp;oldid=prev"/>
		<updated>2007-04-11T17:59:50Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 17:59, 11 April 2007&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l94&quot;&gt;Line 94:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 94:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Try adding an assert to sp_selection_idle_handler -- selection-&amp;gt;idle&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Try adding an assert to sp_selection_idle_handler -- selection-&amp;gt;idle&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;should never equal 0 when the function is first entered (if it is, then&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;should never equal 0 when the function is first entered (if it is, then&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;there's a bug in your installed libgtk&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;+&lt;/del&gt;).&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;there's a bug in your installed libgtk ).&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Another possibility is that one of the handlers for either the &amp;quot;modifed&amp;quot;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Another possibility is that one of the handlers for either the &amp;quot;modifed&amp;quot;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Ix7Gbb</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=SelectionModifiedSignal&amp;diff=7006&amp;oldid=prev</id>
		<title>GigaClon at 17:56, 20 June 2006</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=SelectionModifiedSignal&amp;diff=7006&amp;oldid=prev"/>
		<updated>2006-06-20T17:56:16Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 17:56, 20 June 2006&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l108&quot;&gt;Line 108:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 108:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[bb] More concerns: Even if I fix selection_modified, this will not fix node editor, because when you're dragging a node, this signal is fired on each smallest mouse move. So if we update node display on each such signal, this will slow down dragging dramatically and even deselect the node being dragged (unless special action to restore selection is taken). So dragging a knot in the node editor itself must be somehow prevented from issuing this signal, or issue it within a block/unblock pair that will block the node editor's own handler (again, the feedback problem as recently discussed for the color picker).&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[bb] More concerns: Even if I fix selection_modified, this will not fix node editor, because when you're dragging a node, this signal is fired on each smallest mouse move. So if we update node display on each such signal, this will slow down dragging dramatically and even deselect the node being dragged (unless special action to restore selection is taken). So dragging a knot in the node editor itself must be somehow prevented from issuing this signal, or issue it within a block/unblock pair that will block the node editor's own handler (again, the feedback problem as recently discussed for the color picker).&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[&lt;/del&gt;[[JonCruz]&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;] Jon C&lt;/del&gt;] adds:&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[JonCruz]] adds:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Actually, the problem with color picker events are not quite the same (as detailed under bug 859973). However, in working in this area a problem was noticed that might have some bearing on the edit problem. When a color was changed, it was being set twice, once by the color selector, and then again by a consuming widget. It turned out that the color selector would generate a change event that would be picked up by the paint selector. That would modify the style on the current element. In turn, that style modification would generate change events itself which would be detected by the paint selector. That, in turn, would the set the color in the color selector to a new value. Since all RGB components are float, but the style is only three 8-bit integer values, non-visible changes would propogate and double the events being generated.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Actually, the problem with color picker events are not quite the same (as detailed under bug 859973). However, in working in this area a problem was noticed that might have some bearing on the edit problem. When a color was changed, it was being set twice, once by the color selector, and then again by a consuming widget. It turned out that the color selector would generate a change event that would be picked up by the paint selector. That would modify the style on the current element. In turn, that style modification would generate change events itself which would be detected by the paint selector. That, in turn, would the set the color in the color selector to a new value. Since all RGB components are float, but the style is only three 8-bit integer values, non-visible changes would propogate and double the events being generated.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>GigaClon</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=SelectionModifiedSignal&amp;diff=7004&amp;oldid=prev</id>
		<title>GigaClon: Categorization</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=SelectionModifiedSignal&amp;diff=7004&amp;oldid=prev"/>
		<updated>2006-06-20T17:54:35Z</updated>

		<summary type="html">&lt;p&gt;Categorization&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 17:54, 20 June 2006&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l23&quot;&gt;Line 23:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 23:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;SPRepr itself doesn't use GObject signals at present -- SPReprs maintain&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;SPRepr itself doesn't use GObject signals at present -- SPReprs maintain&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;lists of &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[&lt;/del&gt;SPReprEventVectors&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;]] &lt;/del&gt;(added via sp_repr_add_listener), which are&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;lists of SPReprEventVectors (added via sp_repr_add_listener), which are&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;used to specify callbacks when something changes.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;used to specify callbacks when something changes.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l113&quot;&gt;Line 113:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 113:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;In the case of the color selector, a simple fix was to ignore change events on the styles that did not actually result in any meaningful changes (ignore the event if the new RGBA 8-bit-each value would be the same as the old). This might be applied to other areas of the program as a general review of signal propogation and reducing unwanted 'noise' events.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;In the case of the color selector, a simple fix was to ignore change events on the styles that did not actually result in any meaningful changes (ignore the event if the new RGBA 8-bit-each value would be the same as the old). This might be applied to other areas of the program as a general review of signal propogation and reducing unwanted 'noise' events.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[Category:Wiki Attic]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>GigaClon</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=SelectionModifiedSignal&amp;diff=4872&amp;oldid=prev</id>
		<title>Conversion script: link fix</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=SelectionModifiedSignal&amp;diff=4872&amp;oldid=prev"/>
		<updated>2006-01-22T02:33:46Z</updated>

		<summary type="html">&lt;p&gt;link fix&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 02:33, 22 January 2006&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l23&quot;&gt;Line 23:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 23:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;SPRepr itself doesn't use GObject signals at present -- SPReprs maintain&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;SPRepr itself doesn't use GObject signals at present -- SPReprs maintain&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;lists of SPReprEventVectors (added via sp_repr_add_listener), which are&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;lists of &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[&lt;/ins&gt;SPReprEventVectors&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;]] &lt;/ins&gt;(added via sp_repr_add_listener), which are&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;used to specify callbacks when something changes.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;used to specify callbacks when something changes.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l108&quot;&gt;Line 108:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 108:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[bb] More concerns: Even if I fix selection_modified, this will not fix node editor, because when you're dragging a node, this signal is fired on each smallest mouse move. So if we update node display on each such signal, this will slow down dragging dramatically and even deselect the node being dragged (unless special action to restore selection is taken). So dragging a knot in the node editor itself must be somehow prevented from issuing this signal, or issue it within a block/unblock pair that will block the node editor's own handler (again, the feedback problem as recently discussed for the color picker).&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[bb] More concerns: Even if I fix selection_modified, this will not fix node editor, because when you're dragging a node, this signal is fired on each smallest mouse move. So if we update node display on each such signal, this will slow down dragging dramatically and even deselect the node being dragged (unless special action to restore selection is taken). So dragging a knot in the node editor itself must be somehow prevented from issuing this signal, or issue it within a block/unblock pair that will block the node editor's own handler (again, the feedback problem as recently discussed for the color picker).&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[JonCruz Jon C] adds:&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[&lt;/ins&gt;[JonCruz&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;]] &lt;/ins&gt;Jon C] adds:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Actually, the problem with color picker events are not quite the same (as detailed under bug 859973). However, in working in this area a problem was noticed that might have some bearing on the edit problem. When a color was changed, it was being set twice, once by the color selector, and then again by a consuming widget. It turned out that the color selector would generate a change event that would be picked up by the paint selector. That would modify the style on the current element. In turn, that style modification would generate change events itself which would be detected by the paint selector. That, in turn, would the set the color in the color selector to a new value. Since all RGB components are float, but the style is only three 8-bit integer values, non-visible changes would propogate and double the events being generated.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Actually, the problem with color picker events are not quite the same (as detailed under bug 859973). However, in working in this area a problem was noticed that might have some bearing on the edit problem. When a color was changed, it was being set twice, once by the color selector, and then again by a consuming widget. It turned out that the color selector would generate a change event that would be picked up by the paint selector. That would modify the style on the current element. In turn, that style modification would generate change events itself which would be detected by the paint selector. That, in turn, would the set the color in the color selector to a new value. Since all RGB components are float, but the style is only three 8-bit integer values, non-visible changes would propogate and double the events being generated.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;In the case of the color selector, a simple fix was to ignore change events on the styles that did not actually result in any meaningful changes (ignore the event if the new RGBA 8-bit-each value would be the same as the old). This might be applied to other areas of the program as a general review of signal propogation and reducing unwanted 'noise' events.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;In the case of the color selector, a simple fix was to ignore change events on the styles that did not actually result in any meaningful changes (ignore the event if the new RGBA 8-bit-each value would be the same as the old). This might be applied to other areas of the program as a general review of signal propogation and reducing unwanted 'noise' events.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Conversion script</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=SelectionModifiedSignal&amp;diff=4871&amp;oldid=prev</id>
		<title>Simarilius: removing spam</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=SelectionModifiedSignal&amp;diff=4871&amp;oldid=prev"/>
		<updated>2004-08-16T20:32:11Z</updated>

		<summary type="html">&lt;p&gt;removing spam&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;There's a bunch of related bugs (852973, 857997, 865627) that are caused by the fact that the node editor does not respond by updating its own nodepath data and display when the object is modified outside of the node editor. There is simply no handler for the selection_modified signal in the node editor. When trying to add such a handler, bb ran into problems:&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
Does anyone have an idea why sp_selection_idle_handler in selection.c is constantly emitting the &amp;quot;selection modified&amp;quot; signal - even two signals, one on the selection and the other on the inkscape object???&lt;br /&gt;
&lt;br /&gt;
There is indeed a constant flood of these signals even when absolutely nothing is happening, not even a mouse move.&lt;br /&gt;
&lt;br /&gt;
Is this by design? I'm sure there must be a better way. I was investigating why undo and XML-editor changes in node edit do not work, and found that nodepath context lacks any callback that would update the path when its repr has changed. I tried to hook it up to the &amp;quot;modified&amp;quot; signal but that rendered the program unusable because that signal is &amp;quot;always on&amp;quot; like white noise.&lt;br /&gt;
&lt;br /&gt;
Can someone share any insights? It seems to me that something is seriously broken here. I think that it's the repr subsystem that must issue a signal when the document is changed, but that subsystem apparently emits no signals whatsoever.&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
Mental writes:&lt;br /&gt;
&lt;br /&gt;
Though SPRepr provides &amp;quot;signals&amp;quot; for notification when individual nodes&lt;br /&gt;
change, there is no mechanism to recieve notification for overall&lt;br /&gt;
document changes.&lt;br /&gt;
&lt;br /&gt;
However, with the addition of the transactions code, it would not be&lt;br /&gt;
very hard to implement if you wanted it.&lt;br /&gt;
&lt;br /&gt;
SPRepr itself doesn't use GObject signals at present -- SPReprs maintain&lt;br /&gt;
lists of SPReprEventVectors (added via sp_repr_add_listener), which are&lt;br /&gt;
used to specify callbacks when something changes.&lt;br /&gt;
&lt;br /&gt;
Here are the current callbacks in an event vector (they may be NULL):&lt;br /&gt;
&lt;br /&gt;
        void (* destroy) (SPRepr *repr, void * data);&lt;br /&gt;
&lt;br /&gt;
Called when the repr is destroyed.&lt;br /&gt;
&lt;br /&gt;
        unsigned int (* add_child) (SPRepr *repr, SPRepr *child, SPRepr *ref, void * data);&lt;br /&gt;
&lt;br /&gt;
Called before a child is added; the handler can return FALSE to veto the&lt;br /&gt;
addition.  ref is the child after which the new child is to be added.&lt;br /&gt;
&lt;br /&gt;
        void (* child_added) (SPRepr *repr, SPRepr *child, SPRepr *ref, void * data);&lt;br /&gt;
&lt;br /&gt;
Called once a child has been added.&lt;br /&gt;
&lt;br /&gt;
        unsigned int (* remove_child) (SPRepr *repr, SPRepr *child, SPRepr *ref, void * data);&lt;br /&gt;
&lt;br /&gt;
Called before a child is to be removed; it may veto the removal by&lt;br /&gt;
returning FALSE.  ref is the child before the child to be removed.&lt;br /&gt;
&lt;br /&gt;
        void (* child_removed) (SPRepr *repr, SPRepr *child, SPRepr *ref, void * data);&lt;br /&gt;
&lt;br /&gt;
Called after a child is removed; ref is the child that used to precede&lt;br /&gt;
the removed child.&lt;br /&gt;
&lt;br /&gt;
        unsigned int (* change_attr) (SPRepr *repr, const gchar *key, const gchar *oldval, const gchar *newval, void * data);&lt;br /&gt;
&lt;br /&gt;
For Element nodes.  Called before an attribute is changed; can veto by&lt;br /&gt;
returning FALSE.&lt;br /&gt;
&lt;br /&gt;
        void (* attr_changed) (SPRepr *repr, const gchar *key, const gchar *oldval, const gchar *newval, void * data);&lt;br /&gt;
&lt;br /&gt;
Called after an attribute has been changed.&lt;br /&gt;
&lt;br /&gt;
        unsigned int (* change_content) (SPRepr *repr, const gchar *oldcontent, const gchar *newcontent, void * data);&lt;br /&gt;
&lt;br /&gt;
For Text nodes.  Called before an element's content is changed; can veto&lt;br /&gt;
by returning FALSE.&lt;br /&gt;
&lt;br /&gt;
        void (* content_changed) (SPRepr *repr, const gchar *oldcontent, const gchar *newcontent, void * data);&lt;br /&gt;
&lt;br /&gt;
Called after an element's content has been changed.&lt;br /&gt;
&lt;br /&gt;
        unsigned int (* change_order) (SPRepr *repr, SPRepr *child, SPRepr *oldref, SPRepr *newref, void * data);&lt;br /&gt;
&lt;br /&gt;
Called before a child of repr is rearranged in its list of children. &lt;br /&gt;
oldref is the child currently preceding the child; the child will be&lt;br /&gt;
moved to the position after newref.  Can veto by returning FALSE.&lt;br /&gt;
&lt;br /&gt;
        void (* order_changed) (SPRepr *repr, SPRepr *child, SPRepr *oldref, SPRepr *newref, void * data);&lt;br /&gt;
&lt;br /&gt;
Called once the child has been moved to its new position in the child&lt;br /&gt;
order.&lt;br /&gt;
&lt;br /&gt;
NOTE!!!!! the veto callbacks are currently not useful because some&lt;br /&gt;
functions SPObjects register for callbacks have side-effects -- by the&lt;br /&gt;
time the veto was made, other callbacks might already have modified&lt;br /&gt;
things...&lt;br /&gt;
&lt;br /&gt;
(Although it wasn't seen as a problem in Sodipodi, this is on my&lt;br /&gt;
personal list of things to fix...)&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
Mental adds:&lt;br /&gt;
&lt;br /&gt;
Try adding an assert to sp_selection_idle_handler -- selection-&amp;gt;idle&lt;br /&gt;
should never equal 0 when the function is first entered (if it is, then&lt;br /&gt;
there's a bug in your installed libgtk+).&lt;br /&gt;
&lt;br /&gt;
Another possibility is that one of the handlers for either the &amp;quot;modifed&amp;quot;&lt;br /&gt;
signal of the SPSelection, or the &amp;quot;selection_modified&amp;quot; signal is&lt;br /&gt;
actually modifying one of the selected objects.&lt;br /&gt;
&lt;br /&gt;
Try moving the assignment selection-&amp;gt;idle = 0 until after both signals&lt;br /&gt;
have been sent.  If that prevents the idle handler from being run&lt;br /&gt;
constantly, that is your problem...&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
[bb] More concerns: Even if I fix selection_modified, this will not fix node editor, because when you're dragging a node, this signal is fired on each smallest mouse move. So if we update node display on each such signal, this will slow down dragging dramatically and even deselect the node being dragged (unless special action to restore selection is taken). So dragging a knot in the node editor itself must be somehow prevented from issuing this signal, or issue it within a block/unblock pair that will block the node editor's own handler (again, the feedback problem as recently discussed for the color picker).&lt;br /&gt;
&lt;br /&gt;
[JonCruz Jon C] adds:&lt;br /&gt;
&lt;br /&gt;
Actually, the problem with color picker events are not quite the same (as detailed under bug 859973). However, in working in this area a problem was noticed that might have some bearing on the edit problem. When a color was changed, it was being set twice, once by the color selector, and then again by a consuming widget. It turned out that the color selector would generate a change event that would be picked up by the paint selector. That would modify the style on the current element. In turn, that style modification would generate change events itself which would be detected by the paint selector. That, in turn, would the set the color in the color selector to a new value. Since all RGB components are float, but the style is only three 8-bit integer values, non-visible changes would propogate and double the events being generated.&lt;br /&gt;
&lt;br /&gt;
In the case of the color selector, a simple fix was to ignore change events on the styles that did not actually result in any meaningful changes (ignore the event if the new RGBA 8-bit-each value would be the same as the old). This might be applied to other areas of the program as a general review of signal propogation and reducing unwanted 'noise' events.&lt;/div&gt;</summary>
		<author><name>Simarilius</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=SelectionModifiedSignal&amp;diff=4879&amp;oldid=prev</id>
		<title>Matiphas: Removal of &quot;online casino&quot; spam</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=SelectionModifiedSignal&amp;diff=4879&amp;oldid=prev"/>
		<updated>2004-07-07T13:34:24Z</updated>

		<summary type="html">&lt;p&gt;Removal of &amp;quot;online casino&amp;quot; spam&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;There's a bunch of related bugs (852973, 857997, 865627) that are caused by the fact that the node editor does not respond by updating its own nodepath data and display when the object is modified outside of the node editor. There is simply no handler for the selection_modified signal in the node editor. When trying to add such a handler, bb ran into problems:&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
Does anyone have an idea why sp_selection_idle_handler in selection.c is constantly emitting the &amp;quot;selection modified&amp;quot; signal - even two signals, one on the selection and the other on the inkscape object???&lt;br /&gt;
&lt;br /&gt;
There is indeed a constant flood of these signals even when absolutely nothing is happening, not even a mouse move.&lt;br /&gt;
&lt;br /&gt;
Is this by design? I'm sure there must be a better way. I was investigating why undo and XML-editor changes in node edit do not work, and found that nodepath context lacks any callback that would update the path when its repr has changed. I tried to hook it up to the &amp;quot;modified&amp;quot; signal but that rendered the program unusable because that signal is &amp;quot;always on&amp;quot; like white noise.&lt;br /&gt;
&lt;br /&gt;
Can someone share any insights? It seems to me that something is seriously broken here. I think that it's the repr subsystem that must issue a signal when the document is changed, but that subsystem apparently emits no signals whatsoever.&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
Mental writes:&lt;br /&gt;
&lt;br /&gt;
Though SPRepr provides &amp;quot;signals&amp;quot; for notification when individual nodes&lt;br /&gt;
change, there is no mechanism to recieve notification for overall&lt;br /&gt;
document changes.&lt;br /&gt;
&lt;br /&gt;
However, with the addition of the transactions code, it would not be&lt;br /&gt;
very hard to implement if you wanted it.&lt;br /&gt;
&lt;br /&gt;
SPRepr itself doesn't use GObject signals at present -- SPReprs maintain&lt;br /&gt;
lists of SPReprEventVectors (added via sp_repr_add_listener), which are&lt;br /&gt;
used to specify callbacks when something changes.&lt;br /&gt;
&lt;br /&gt;
Here are the current callbacks in an event vector (they may be NULL):&lt;br /&gt;
&lt;br /&gt;
        void (* destroy) (SPRepr *repr, void * data);&lt;br /&gt;
&lt;br /&gt;
Called when the repr is destroyed.&lt;br /&gt;
&lt;br /&gt;
        unsigned int (* add_child) (SPRepr *repr, SPRepr *child, SPRepr *ref, void * data);&lt;br /&gt;
&lt;br /&gt;
Called before a child is added; the handler can return FALSE to veto the&lt;br /&gt;
addition.  ref is the child after which the new child is to be added.&lt;br /&gt;
&lt;br /&gt;
        void (* child_added) (SPRepr *repr, SPRepr *child, SPRepr *ref, void * data);&lt;br /&gt;
&lt;br /&gt;
Called once a child has been added.&lt;br /&gt;
&lt;br /&gt;
        unsigned int (* remove_child) (SPRepr *repr, SPRepr *child, SPRepr *ref, void * data);&lt;br /&gt;
&lt;br /&gt;
Called before a child is to be removed; it may veto the removal by&lt;br /&gt;
returning FALSE.  ref is the child before the child to be removed.&lt;br /&gt;
&lt;br /&gt;
        void (* child_removed) (SPRepr *repr, SPRepr *child, SPRepr *ref, void * data);&lt;br /&gt;
&lt;br /&gt;
Called after a child is removed; ref is the child that used to precede&lt;br /&gt;
the removed child.&lt;br /&gt;
&lt;br /&gt;
        unsigned int (* change_attr) (SPRepr *repr, const gchar *key, const gchar *oldval, const gchar *newval, void * data);&lt;br /&gt;
&lt;br /&gt;
For Element nodes.  Called before an attribute is changed; can veto by&lt;br /&gt;
returning FALSE.&lt;br /&gt;
&lt;br /&gt;
        void (* attr_changed) (SPRepr *repr, const gchar *key, const gchar *oldval, const gchar *newval, void * data);&lt;br /&gt;
&lt;br /&gt;
Called after an attribute has been changed.&lt;br /&gt;
&lt;br /&gt;
        unsigned int (* change_content) (SPRepr *repr, const gchar *oldcontent, const gchar *newcontent, void * data);&lt;br /&gt;
&lt;br /&gt;
For Text nodes.  Called before an element's content is changed; can veto&lt;br /&gt;
by returning FALSE.&lt;br /&gt;
&lt;br /&gt;
        void (* content_changed) (SPRepr *repr, const gchar *oldcontent, const gchar *newcontent, void * data);&lt;br /&gt;
&lt;br /&gt;
Called after an element's content has been changed.&lt;br /&gt;
&lt;br /&gt;
        unsigned int (* change_order) (SPRepr *repr, SPRepr *child, SPRepr *oldref, SPRepr *newref, void * data);&lt;br /&gt;
&lt;br /&gt;
Called before a child of repr is rearranged in its list of children. &lt;br /&gt;
oldref is the child currently preceding the child; the child will be&lt;br /&gt;
moved to the position after newref.  Can veto by returning FALSE.&lt;br /&gt;
&lt;br /&gt;
        void (* order_changed) (SPRepr *repr, SPRepr *child, SPRepr *oldref, SPRepr *newref, void * data);&lt;br /&gt;
&lt;br /&gt;
Called once the child has been moved to its new position in the child&lt;br /&gt;
order.&lt;br /&gt;
&lt;br /&gt;
NOTE!!!!! the veto callbacks are currently not useful because some&lt;br /&gt;
functions SPObjects register for callbacks have side-effects -- by the&lt;br /&gt;
time the veto was made, other callbacks might already have modified&lt;br /&gt;
things...&lt;br /&gt;
&lt;br /&gt;
(Although it wasn't seen as a problem in Sodipodi, this is on my&lt;br /&gt;
personal list of things to fix...)&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
Mental adds:&lt;br /&gt;
&lt;br /&gt;
Try adding an assert to sp_selection_idle_handler -- selection-&amp;gt;idle&lt;br /&gt;
should never equal 0 when the function is first entered (if it is, then&lt;br /&gt;
there's a bug in your installed libgtk+).&lt;br /&gt;
&lt;br /&gt;
Another possibility is that one of the handlers for either the &amp;quot;modifed&amp;quot;&lt;br /&gt;
signal of the SPSelection, or the &amp;quot;selection_modified&amp;quot; signal is&lt;br /&gt;
actually modifying one of the selected objects.&lt;br /&gt;
&lt;br /&gt;
Try moving the assignment selection-&amp;gt;idle = 0 until after both signals&lt;br /&gt;
have been sent.  If that prevents the idle handler from being run&lt;br /&gt;
constantly, that is your problem...&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
[bb] More concerns: Even if I fix selection_modified, this will not fix node editor, because when you're dragging a node, this signal is fired on each smallest mouse move. So if we update node display on each such signal, this will slow down dragging dramatically and even deselect the node being dragged (unless special action to restore selection is taken). So dragging a knot in the node editor itself must be somehow prevented from issuing this signal, or issue it within a block/unblock pair that will block the node editor's own handler (again, the feedback problem as recently discussed for the color picker).&lt;br /&gt;
&lt;br /&gt;
[JonCruz Jon C] adds:&lt;br /&gt;
&lt;br /&gt;
Actually, the problem with color picker events are not quite the same (as detailed under bug 859973). However, in working in this area a problem was noticed that might have some bearing on the edit problem. When a color was changed, it was being set twice, once by the color selector, and then again by a consuming widget. It turned out that the color selector would generate a change event that would be picked up by the paint selector. That would modify the style on the current element. In turn, that style modification would generate change events itself which would be detected by the paint selector. That, in turn, would the set the color in the color selector to a new value. Since all RGB components are float, but the style is only three 8-bit integer values, non-visible changes would propogate and double the events being generated.&lt;br /&gt;
&lt;br /&gt;
In the case of the color selector, a simple fix was to ignore change events on the styles that did not actually result in any meaningful changes (ignore the event if the new RGBA 8-bit-each value would be the same as the old). This might be applied to other areas of the program as a general review of signal propogation and reducing unwanted 'noise' events.&lt;/div&gt;</summary>
		<author><name>Matiphas</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=SelectionModifiedSignal&amp;diff=4874&amp;oldid=prev</id>
		<title>Buliabyak: *</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=SelectionModifiedSignal&amp;diff=4874&amp;oldid=prev"/>
		<updated>2003-12-25T09:48:01Z</updated>

		<summary type="html">&lt;p&gt;*&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 09:48, 25 December 2003&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;There's a bunch of related bugs (852973, 857997) that are caused by the fact that the node editor does not respond by updating its own nodepath data and display when the object is modified outside of the node editor. There is simply no handler for the selection_modified signal in the node editor. When trying to add such a handler, bb ran into problems:&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;There's a bunch of related bugs (852973, 857997&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;, 865627&lt;/ins&gt;) that are caused by the fact that the node editor does not respond by updating its own nodepath data and display when the object is modified outside of the node editor. There is simply no handler for the selection_modified signal in the node editor. When trying to add such a handler, bb ran into problems:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;-----&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;-----&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Buliabyak</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=SelectionModifiedSignal&amp;diff=4873&amp;oldid=prev</id>
		<title>Buliabyak: *</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=SelectionModifiedSignal&amp;diff=4873&amp;oldid=prev"/>
		<updated>2003-12-11T23:00:30Z</updated>

		<summary type="html">&lt;p&gt;*&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;There's a bunch of related bugs (852973, 857997) that are caused by the fact that the node editor does not respond by updating its own nodepath data and display when the object is modified outside of the node editor. There is simply no handler for the selection_modified signal in the node editor. When trying to add such a handler, bb ran into problems:&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
Does anyone have an idea why sp_selection_idle_handler in selection.c is constantly emitting the &amp;quot;selection modified&amp;quot; signal - even two signals, one on the selection and the other on the inkscape object???&lt;br /&gt;
&lt;br /&gt;
There is indeed a constant flood of these signals even when absolutely nothing is happening, not even a mouse move.&lt;br /&gt;
&lt;br /&gt;
Is this by design? I'm sure there must be a better way. I was investigating why undo and XML-editor changes in node edit do not work, and found that nodepath context lacks any callback that would update the path when its repr has changed. I tried to hook it up to the &amp;quot;modified&amp;quot; signal but that rendered the program unusable because that signal is &amp;quot;always on&amp;quot; like white noise.&lt;br /&gt;
&lt;br /&gt;
Can someone share any insights? It seems to me that something is seriously broken here. I think that it's the repr subsystem that must issue a signal when the document is changed, but that subsystem apparently emits no signals whatsoever.&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
Mental writes:&lt;br /&gt;
&lt;br /&gt;
Though SPRepr provides &amp;quot;signals&amp;quot; for notification when individual nodes&lt;br /&gt;
change, there is no mechanism to recieve notification for overall&lt;br /&gt;
document changes.&lt;br /&gt;
&lt;br /&gt;
However, with the addition of the transactions code, it would not be&lt;br /&gt;
very hard to implement if you wanted it.&lt;br /&gt;
&lt;br /&gt;
SPRepr itself doesn't use GObject signals at present -- SPReprs maintain&lt;br /&gt;
lists of SPReprEventVectors (added via sp_repr_add_listener), which are&lt;br /&gt;
used to specify callbacks when something changes.&lt;br /&gt;
&lt;br /&gt;
Here are the current callbacks in an event vector (they may be NULL):&lt;br /&gt;
&lt;br /&gt;
        void (* destroy) (SPRepr *repr, void * data);&lt;br /&gt;
&lt;br /&gt;
Called when the repr is destroyed.&lt;br /&gt;
&lt;br /&gt;
        unsigned int (* add_child) (SPRepr *repr, SPRepr *child, SPRepr *ref, void * data);&lt;br /&gt;
&lt;br /&gt;
Called before a child is added; the handler can return FALSE to veto the&lt;br /&gt;
addition.  ref is the child after which the new child is to be added.&lt;br /&gt;
&lt;br /&gt;
        void (* child_added) (SPRepr *repr, SPRepr *child, SPRepr *ref, void * data);&lt;br /&gt;
&lt;br /&gt;
Called once a child has been added.&lt;br /&gt;
&lt;br /&gt;
        unsigned int (* remove_child) (SPRepr *repr, SPRepr *child, SPRepr *ref, void * data);&lt;br /&gt;
&lt;br /&gt;
Called before a child is to be removed; it may veto the removal by&lt;br /&gt;
returning FALSE.  ref is the child before the child to be removed.&lt;br /&gt;
&lt;br /&gt;
        void (* child_removed) (SPRepr *repr, SPRepr *child, SPRepr *ref, void * data);&lt;br /&gt;
&lt;br /&gt;
Called after a child is removed; ref is the child that used to precede&lt;br /&gt;
the removed child.&lt;br /&gt;
&lt;br /&gt;
        unsigned int (* change_attr) (SPRepr *repr, const gchar *key, const gchar *oldval, const gchar *newval, void * data);&lt;br /&gt;
&lt;br /&gt;
For Element nodes.  Called before an attribute is changed; can veto by&lt;br /&gt;
returning FALSE.&lt;br /&gt;
&lt;br /&gt;
        void (* attr_changed) (SPRepr *repr, const gchar *key, const gchar *oldval, const gchar *newval, void * data);&lt;br /&gt;
&lt;br /&gt;
Called after an attribute has been changed.&lt;br /&gt;
&lt;br /&gt;
        unsigned int (* change_content) (SPRepr *repr, const gchar *oldcontent, const gchar *newcontent, void * data);&lt;br /&gt;
&lt;br /&gt;
For Text nodes.  Called before an element's content is changed; can veto&lt;br /&gt;
by returning FALSE.&lt;br /&gt;
&lt;br /&gt;
        void (* content_changed) (SPRepr *repr, const gchar *oldcontent, const gchar *newcontent, void * data);&lt;br /&gt;
&lt;br /&gt;
Called after an element's content has been changed.&lt;br /&gt;
&lt;br /&gt;
        unsigned int (* change_order) (SPRepr *repr, SPRepr *child, SPRepr *oldref, SPRepr *newref, void * data);&lt;br /&gt;
&lt;br /&gt;
Called before a child of repr is rearranged in its list of children. &lt;br /&gt;
oldref is the child currently preceding the child; the child will be&lt;br /&gt;
moved to the position after newref.  Can veto by returning FALSE.&lt;br /&gt;
&lt;br /&gt;
        void (* order_changed) (SPRepr *repr, SPRepr *child, SPRepr *oldref, SPRepr *newref, void * data);&lt;br /&gt;
&lt;br /&gt;
Called once the child has been moved to its new position in the child&lt;br /&gt;
order.&lt;br /&gt;
&lt;br /&gt;
NOTE!!!!! the veto callbacks are currently not useful because some&lt;br /&gt;
functions SPObjects register for callbacks have side-effects -- by the&lt;br /&gt;
time the veto was made, other callbacks might already have modified&lt;br /&gt;
things...&lt;br /&gt;
&lt;br /&gt;
(Although it wasn't seen as a problem in Sodipodi, this is on my&lt;br /&gt;
personal list of things to fix...)&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
Mental adds:&lt;br /&gt;
&lt;br /&gt;
Try adding an assert to sp_selection_idle_handler -- selection-&amp;gt;idle&lt;br /&gt;
should never equal 0 when the function is first entered (if it is, then&lt;br /&gt;
there's a bug in your installed libgtk+).&lt;br /&gt;
&lt;br /&gt;
Another possibility is that one of the handlers for either the &amp;quot;modifed&amp;quot;&lt;br /&gt;
signal of the SPSelection, or the &amp;quot;selection_modified&amp;quot; signal is&lt;br /&gt;
actually modifying one of the selected objects.&lt;br /&gt;
&lt;br /&gt;
Try moving the assignment selection-&amp;gt;idle = 0 until after both signals&lt;br /&gt;
have been sent.  If that prevents the idle handler from being run&lt;br /&gt;
constantly, that is your problem...&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
[bb] More concerns: Even if I fix selection_modified, this will not fix node editor, because when you're dragging a node, this signal is fired on each smallest mouse move. So if we update node display on each such signal, this will slow down dragging dramatically and even deselect the node being dragged (unless special action to restore selection is taken). So dragging a knot in the node editor itself must be somehow prevented from issuing this signal, or issue it within a block/unblock pair that will block the node editor's own handler (again, the feedback problem as recently discussed for the color picker).&lt;/div&gt;</summary>
		<author><name>Buliabyak</name></author>
	</entry>
</feed>