Updating branch refs/heads/master to 41e54340a3813c31b50f461d9bf4ae380d630a80 (commit) from 74e117e7e4b1c8fda45c77cb7bd310b17cec2b8b (commit)
commit 41e54340a3813c31b50f461d9bf4ae380d630a80 Author: Jannis Pohlmann <jan...@xfce.org> Date: Tue May 31 23:50:49 2011 +0200 Allow action button to be prelighted separately from its row. .../demo-code/custom-view/shortcut-row.vala | 34 +++++++++++++++++--- 1 files changed, 29 insertions(+), 5 deletions(-) diff --git a/thunar/shortcuts-pane/demo-code/custom-view/shortcut-row.vala b/thunar/shortcuts-pane/demo-code/custom-view/shortcut-row.vala index 6826133..ff988bd 100644 --- a/thunar/shortcuts-pane/demo-code/custom-view/shortcut-row.vala +++ b/thunar/shortcuts-pane/demo-code/custom-view/shortcut-row.vala @@ -87,6 +87,22 @@ public class ShortcutRow : EventBox { button.clicked.connect (connect_device); + button.state_changed.connect (() => { + if (button.state == StateType.PRELIGHT) { + if (this.state == StateType.PRELIGHT) { + int x, y; + button.get_pointer (out x, out y); + + int w, h; + button.window.get_geometry (null, null, out w, out h, null); + + if (x < 0 || y < 0 || x >= w || y >= h) { + button.set_state (StateType.NORMAL); + } + } + } + }); + if (connected) { button.show (); } @@ -153,7 +169,7 @@ public class ShortcutRow : EventBox { event.area.width, event.area.height); forall ((child) => { - child.expose_event (event); + propagate_expose (child, event); }); return false; @@ -202,7 +218,7 @@ public class ShortcutRow : EventBox { } public override bool button_press_event (Gdk.EventButton event) { - if (get_state () == StateType.SELECTED) { + if (state == StateType.SELECTED) { if ((event.state & Gdk.ModifierType.CONTROL_MASK) != 0) { set_state (StateType.NORMAL); } @@ -214,15 +230,23 @@ public class ShortcutRow : EventBox { } public override bool enter_notify_event (Gdk.EventCrossing event) { - if (get_state () != StateType.SELECTED) { + if (state != StateType.SELECTED) { set_state (StateType.PRELIGHT); } return true; } public override bool leave_notify_event (Gdk.EventCrossing event) { - if (get_state () == StateType.PRELIGHT) { - set_state (StateType.NORMAL); + if (state == StateType.PRELIGHT) { + int x, y; + button.get_pointer (out x, out y); + + int w, h; + button.window.get_geometry (null, null, out w, out h, null); + + if (x < 0 || y < 0 || x >= w || y >= h) { + set_state (StateType.NORMAL); + } } return true; } _______________________________________________ Xfce4-commits mailing list Xfce4-commits@xfce.org http://foo-projects.org/mailman/listinfo/xfce4-commits