diff --git a/browser/common.py b/browser/common.py index 40291d7..a476e5a 100644 --- a/browser/common.py +++ b/browser/common.py @@ -46,9 +46,10 @@ class BaseView(object): # TODO: get rid of removeSecurityProxy() call self.context = removeSecurityProxy(context) self.request = request + self.setSkin(self.loopsRoot.skinName) + + def setSkin(self, skinName): skin = None - # TODO: get ISkinController adapter instead - skinName = self.loopsRoot.skinName if skinName and IView.providedBy(self.context): skin = zapi.queryUtility(ISkin, skinName) if skin is not None: @@ -59,6 +60,8 @@ class BaseView(object): def setController(self, controller): self._controller = controller # this is also the place to register special macros with the controller + if getattr(controller, 'skinName', None): + self.setSkin(controller.skinName.value) controller.skin = self.skin def getController(self): return self._controller controller = property(getController, setController) diff --git a/browser/node.css b/browser/node.css index 4c80e42..925ea0a 100644 --- a/browser/node.css +++ b/browser/node.css @@ -50,6 +50,10 @@ float: left; } +.flow-right { + float: right; +} + div.image { margin-top: 10px; margin-right: 5px; diff --git a/browser/node.py b/browser/node.py index 54ee818..4b00e4f 100644 --- a/browser/node.py +++ b/browser/node.py @@ -168,11 +168,16 @@ class NodeView(BaseView): @Lazy def nearestMenuItem(self): - if self.context.isMenuItem(): - return self.context - for p in self.parents: - if p.isMenuItem(): - return p + menu = self.menuObject + menuItem = None + for p in [self.context] + self.parents: + if not p.isMenuItem(): + menuItem = None + elif menuItem is None: + menuItem = p + if p == menu: + return menuItem + return None def selected(self, item): return item.context == self.nearestMenuItem