{"action":"created","issue":{"url":"https://api.github.com/repos/mypaint/mypaint/issues/354","labels_url":"https://api.github.com/repos/mypaint/mypaint/issues/354/labels{/name}","comments_url":"https://api.github.com/repos/mypaint/mypaint/issues/354/comments","events_url":"https://api.github.com/repos/mypaint/mypaint/issues/354/events","html_url":"https://github.com/mypaint/mypaint/issues/354","id":91612661,"number":354,"title":"Sometimes, After Selecting a Brush from a Brushes Set,  MyPaint Crashes.","user":{"login":"Ico-dY","id":10749813,"avatar_url":"https://avatars.githubusercontent.com/u/10749813?v=3","gravatar_id":"","url":"https://api.github.com/users/Ico-dY","html_url":"https://github.com/Ico-dY","followers_url":"https://api.github.com/users/Ico-dY/followers","following_url":"https://api.github.com/users/Ico-dY/following{/other_user}","gists_url":"https://api.github.com/users/Ico-dY/gists{/gist_id}","starred_url":"https://api.github.com/users/Ico-dY/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Ico-dY/subscriptions","organizations_url":"https://api.github.com/users/Ico-dY/orgs","repos_url":"https://api.github.com/users/Ico-dY/repos","events_url":"https://api.github.com/users/Ico-dY/events{/privacy}","received_events_url":"https://api.github.com/users/Ico-dY/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/mypaint/mypaint/labels/bug","name":"bug","color":"fc2929"}],"state":"open","locked":false,"assignee":null,"milestone":{"url":"https://api.github.com/repos/mypaint/mypaint/milestones/4","html_url":"https://github.com/mypaint/mypaint/milestones/MyPaint%201.2.0-beta.%3C1st%3E","labels_url":"https://api.github.com/repos/mypaint/mypaint/milestones/4/labels","id":1075743,"number":4,"title":"MyPaint 1.2.0-beta.<1st>","description":"Milestone for the first of possibly many betas before the final 1.2 release. Only bugfixes should be accepted during the beta cycle, ideally: that means no new features or string changes without a very good reason, please! This is the phase where we start asking translators to work on their bit, so the strings need to be as static as possible at this point.\r\n\r\nThis milestone should be associated with a formal release via github, and a formal tarball when it's done.\r\n\r\nIt should also be announced on the mailing list, Twitter etc., with **at least a month's notice**, and a date chosen.","creator":{"login":"achadwick","id":61299,"avatar_url":"https://avatars.githubusercontent.com/u/61299?v=3","gravatar_id":"","url":"https://api.github.com/users/achadwick","html_url":"https://github.com/achadwick","followers_url":"https://api.github.com/users/achadwick/followers","following_url":"https://api.github.com/users/achadwick/following{/other_user}","gists_url":"https://api.github.com/users/achadwick/gists{/gist_id}","starred_url":"https://api.github.com/users/achadwick/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/achadwick/subscriptions","organizations_url":"https://api.github.com/users/achadwick/orgs","repos_url":"https://api.github.com/users/achadwick/repos","events_url":"https://api.github.com/users/achadwick/events{/privacy}","received_events_url":"https://api.github.com/users/achadwick/received_events","type":"User","site_admin":false},"open_issues":22,"closed_issues":10,"state":"open","created_at":"2015-04-20T18:01:09Z","updated_at":"2015-06-28T16:17:30Z","due_on":null,"closed_at":null},"comments":2,"created_at":"2015-06-28T16:11:48Z","updated_at":"2015-06-28T18:43:59Z","closed_at":null,"body":"Sometimes, after selecting a brush from a brushes set, MyPaint crashes.\r\n\r\n```python\r\nMypaint version: 1.2.0-alpha.20150627+git.bfc9831\r\nSystem information: Linux-3.13.0-55-generic-x86_64-with-Ubuntu-14.04-trusty\r\nTraceback (most recent call last):\r\n  File \"/usr/local/share/mypaint/gui/brushselectionwindow.py\", line 130, button_press_cb(self=<BrushList object at 0x7fba35c76a50 (gui+brushselectionwindow+BrushList at 0x2d45660)>, widget=<BrushList object at 0x7fba35c76a50 (gui+brushselectionwindow+BrushList at 0x2d45660)>, event=<void>)\r\n            self.app.device_monitor.device_used(device)\r\n            return pixbuflist.PixbufList.button_press_cb(self, widget, event)\r\n  variables: {'widget': ('local', <BrushList object at 0x7fba35c76a50 (gui+brushselectionwindow+BrushList at 0x2d45660)>), 'self': ('local', <BrushList object at 0x7fba35c76a50 (gui+brushselectionwindow+BrushList at 0x2d45660)>), 'pixbuflist.PixbufList.button_press_cb': ('global', <unbound method PixbufList.button_press_cb>), 'event': ('local', <void at 0x46ed1d0>)}\r\n  File \"/usr/local/share/mypaint/gui/pixbuflist.py\", line 309, button_press_cb(self=<BrushList object at 0x7fba35c76a50 (gui+brushselectionwindow+BrushList at 0x2d45660)>, widget=<BrushList object at 0x7fba35c76a50 (gui+brushselectionwindow+BrushList at 0x2d45660)>, event=<void>)\r\n                self.set_selected(item)\r\n                self.item_selected(item)\r\n                if self.selected is not None:\r\n  variables: {'item': ('local', <ManagedBrush u'shalpin/brushy_variance' p=None>), 'self.item_selected': ('local', <MethodWithObservers gui.brushselectionwindow.BrushList.item_selected>)}\r\n  File \"/usr/local/share/mypaint/lib/observable.py\", line 284, __call__(self=<MethodWithObservers gui.brushselectionwindow.BrushList.item_selected>, *args=(<ManagedBrush u'shalpin/brushy_variance' p=None>,), **kwargs={})\r\n                try:\r\n                    observer(observed, *args, **kwargs)\r\n                except BoundObserverMethod._ReferenceError:\r\n  variables: {'observed': ('local', <BrushList object at 0x7fba35c76a50 (gui+brushselectionwindow+BrushList at 0x2d45660)>), 'args': ('local', (<ManagedBrush u'shalpin/brushy_variance' p=None>,)), 'observer': ('local', <BoundObserverMethod gui.brushselectionwindow.BrushList._item_selected_cb>), 'kwargs': ('local', {})}\r\n  File \"/usr/local/share/mypaint/lib/observable.py\", line 467, __call__(self=<BoundObserverMethod gui.brushselectionwindow.BrushList._item_selected_cb>, observed=<BrushList object at 0x7fba35c76a50 (gui+brushselectionwindow+BrushList at 0x2d45660)>, *args=(<ManagedBrush u'shalpin/brushy_variance' p=None>,), **kwargs={})\r\n                raise self._ReferenceError\r\n            self._observer_func(observer, observed, *args, **kwargs)\r\n            del observer\r\n  variables: {'observed': ('local', <BrushList object at 0x7fba35c76a50 (gui+brushselectionwindow+BrushList at 0x2d45660)>), 'args': ('local', (<ManagedBrush u'shalpin/brushy_variance' p=None>,)), 'self._observer_func': ('local', <function _item_selected_cb at 0x7fba5503c8c0>), 'observer': ('local', <BrushList object at 0x7fba35c76a50 (gui+brushselectionwindow+BrushList at 0x2d45660)>), 'kwargs': ('local', {})}\r\n  File \"/usr/local/share/mypaint/gui/brushselectionwindow.py\", line 169, _item_selected_cb(self=<BrushList object at 0x7fba35c76a50 (gui+brushselectionwindow+BrushList at 0x2d45660)>, self_=<BrushList object at 0x7fba35c76a50 (gui+brushselectionwindow+BrushList at 0x2d45660)>, brush=<ManagedBrush u'shalpin/brushy_variance' p=None>)\r\n                    self.bm.brushes_changed(brushes)\r\n            self.bm.select_brush(brush)\r\n  variables: {'self.bm.select_brush': ('local', <bound method BrushManager.select_brush of <gui.brushmanager.BrushManager object at 0x7fba55022b90>>), 'brush': ('local', <ManagedBrush u'shalpin/brushy_variance' p=None>)}\r\n  File \"/usr/local/share/mypaint/gui/brushmanager.py\", line 701, select_brush(self=<gui.brushmanager.BrushManager object>, brush=<ManagedBrush u'shalpin/brushy_variance' p=None>)\r\n            # brush, amongst other things\r\n            self.brush_selected(brush, brushinfo)\r\n  variables: {'self.brush_selected': ('local', <MethodWithObservers gui.brushmanager.BrushManager.brush_selected>), 'brush': ('local', <ManagedBrush u'shalpin/brushy_variance' p=None>), 'brushinfo': ('local', <lib.brush.BrushInfo object at 0x7fba3c4211d0>)}\r\n  File \"/usr/local/share/mypaint/lib/observable.py\", line 284, __call__(self=<MethodWithObservers gui.brushmanager.BrushManager.brush_selected>, *args=(<ManagedBrush u'shalpin/brushy_variance' p=None>, <lib.brush.BrushInfo object>), **kwargs={})\r\n                try:\r\n                    observer(observed, *args, **kwargs)\r\n                except BoundObserverMethod._ReferenceError:\r\n  variables: {'observed': ('local', <gui.brushmanager.BrushManager object at 0x7fba55022b90>), 'args': ('local', (<ManagedBrush u'shalpin/brushy_variance' p=None>, <lib.brush.BrushInfo object at 0x7fba3c4211d0>)), 'observer': ('local', <BoundObserverMethod gui.brushmodifier.BrushModifier.brush_selected_cb>), 'kwargs': ('local', {})}\r\n  File \"/usr/local/share/mypaint/lib/observable.py\", line 467, __call__(self=<BoundObserverMethod gui.brushmodifier.BrushModifier.brush_selected_cb>, observed=<gui.brushmanager.BrushManager object>, *args=(<ManagedBrush u'shalpin/brushy_variance' p=None>, <lib.brush.BrushInfo object>), **kwargs={})\r\n                raise self._ReferenceError\r\n            self._observer_func(observer, observed, *args, **kwargs)\r\n            del observer\r\n  variables: {'observed': ('local', <gui.brushmanager.BrushManager object at 0x7fba55022b90>), 'args': ('local', (<ManagedBrush u'shalpin/brushy_variance' p=None>, <lib.brush.BrushInfo object at 0x7fba3c4211d0>)), 'self._observer_func': ('local', <function brush_selected_cb at 0x7fba55290668>), 'observer': ('local', <gui.brushmodifier.BrushModifier object at 0x7fba3cf4f690>), 'kwargs': ('local', {})}\r\n  File \"/usr/local/share/mypaint/gui/brushmodifier.py\", line 215, brush_selected_cb(self=<gui.brushmodifier.BrushModifier object>, bm=<gui.brushmanager.BrushManager object>, managed_brush=<ManagedBrush u'shalpin/brushy_variance' p=None>, brushinfo=<lib.brush.BrushInfo object>)\r\n            b.set_color_hsv(color)\r\n            b.set_string_property(\"parent_brush_name\", managed_brush.name)\r\n  variables: {'color': ('local', None), 'b.set_color_hsv': ('local', <bound method BrushInfo.set_color_hsv of <lib.brush.BrushInfo object at 0x7fba552b0890>>)}\r\n  File \"/usr/local/share/mypaint/lib/brush.py\", line 449, set_color_hsv(self=<lib.brush.BrushInfo object>, hsv=None)\r\n            try:\r\n                h, s, v = hsv\r\n                self.set_base_value('color_h', h)\r\n  variables: {'h': (None, []), 's': ('global', <libmypaint.brushsettings.BrushSetting instance at 0x7fba55d56098>), 'hsv': ('local', None), 'v': (None, [])}\r\nTypeError: 'NoneType' object is not iterable\r\n```\r\n\r\n![mypaint_bug](https://cloud.githubusercontent.com/assets/10749813/8397094/1fe8acae-1dc0-11e5-992d-88df59af48f7.png)"},"comment":{"url":"https://api.github.com/repos/mypaint/mypaint/issues/comments/116312631","html_url":"https://github.com/mypaint/mypaint/issues/354#issuecomment-116312631","issue_url":"https://api.github.com/repos/mypaint/mypaint/issues/354","id":116312631,"user":{"login":"Ico-dY","id":10749813,"avatar_url":"https://avatars.githubusercontent.com/u/10749813?v=3","gravatar_id":"","url":"https://api.github.com/users/Ico-dY","html_url":"https://github.com/Ico-dY","followers_url":"https://api.github.com/users/Ico-dY/followers","following_url":"https://api.github.com/users/Ico-dY/following{/other_user}","gists_url":"https://api.github.com/users/Ico-dY/gists{/gist_id}","starred_url":"https://api.github.com/users/Ico-dY/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Ico-dY/subscriptions","organizations_url":"https://api.github.com/users/Ico-dY/orgs","repos_url":"https://api.github.com/users/Ico-dY/repos","events_url":"https://api.github.com/users/Ico-dY/events{/privacy}","received_events_url":"https://api.github.com/users/Ico-dY/received_events","type":"User","site_admin":false},"created_at":"2015-06-28T18:43:59Z","updated_at":"2015-06-28T18:43:59Z","body":"It happens immediately after choosing any brush from any group, old or new, and the triggering is completely random: it doesn't happen every time with the same brush.\r\n\r\nThis problem appeared after the latest git updates.\r\nI never experienced something like this before.\r\n"}}