Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAleksey Lim <alsroot@member.fsf.org>2009-07-11 14:22:05 (GMT)
committer Aleksey Lim <alsroot@member.fsf.org>2009-07-11 14:22:05 (GMT)
commitf9de29f53906b7851fef37f11425649aca323d7d (patch)
tree70b4ee1c2f59d7b14a6b393d5d6f14d53d195074
parent4c8c845e6c8b9b54a4661e3323f9a79808795fcb (diff)
Delete sub-widgets clearly
-rw-r--r--examples/toolbar.py12
-rw-r--r--src/sugar/graphics/toolbar.py9
2 files changed, 16 insertions, 5 deletions
diff --git a/examples/toolbar.py b/examples/toolbar.py
index e4d24df..36624c0 100644
--- a/examples/toolbar.py
+++ b/examples/toolbar.py
@@ -9,23 +9,27 @@ window.add(box)
toolbar = Toolbar()
box.pack_start(toolbar, False)
-tollbarbutton_1 = ToolbarButton(toolbar, gtk.Button('1'),
+tollbarbutton_1 = ToolbarButton(toolbar, gtk.Button('sub-widget #1'),
icon_name='computer-xo',
tooltip='foo')
toolbar.top.insert(tollbarbutton_1, -1)
toolbar.top.insert(gtk.SeparatorToolItem(), -1)
-tollbarbutton_2 = ToolbarButton(toolbar, gtk.Button('1'),
+tollbarbutton_2 = ToolbarButton(toolbar, gtk.Button('sub-widget #2'),
icon_name='button_cancel',
tooltip='foo')
toolbar.top.insert(tollbarbutton_2, -1)
toolbar.top.insert(gtk.SeparatorToolItem(), -1)
-tollbarbutton_3 = ToolbarButton(toolbar, gtk.Button('3'),
+def del_cb(widget):
+ toolbar.top.remove(tollbarbutton_3)
+del_b = gtk.Button('delete sub-widget #3')
+del_b.connect('clicked', del_cb)
+tollbarbutton_3 = ToolbarButton(toolbar, del_b,
icon_name='activity-journal',
- tooltip='foo')
+ tooltip='del')
toolbar.top.insert(tollbarbutton_3, -1)
window.show_all()
diff --git a/src/sugar/graphics/toolbar.py b/src/sugar/graphics/toolbar.py
index eb26726..6423fa1 100644
--- a/src/sugar/graphics/toolbar.py
+++ b/src/sugar/graphics/toolbar.py
@@ -50,7 +50,7 @@ class ToolbarButton(ToolButton):
return
if value:
expanded = self._bar._expanded_page()
- if expanded:
+ if expanded and expanded._toolitem.window:
expanded._toolitem.window.invalidate_rect(None, True)
self._page._toolitem_alloc = self.allocation
self._bar._expand_page(self._page)
@@ -104,8 +104,15 @@ class Toolbar(gtk.VBox):
self._notebook.connect('notify::page', lambda notebook, pspec:
self.emit('current-toolbar-changed', notebook.props.page))
+ self._bar.connect('remove', self._remove_cb)
+
top = property(lambda self: self._bar)
+ def _remove_cb(self, sender, widget):
+ if not isinstance(widget, ToolbarButton):
+ return
+ widget.expanded = False
+
def _remove_page(self, page):
page = self._notebook.page_num(page)
self._notebook.remove_page(page)