Merge lp:~victored/granite/lp-1062967 into lp:~elementary-pantheon/granite/granite

Proposed by Victor Martinez
Status: Merged
Merged at revision: 424
Proposed branch: lp:~victored/granite/lp-1062967
Merge into: lp:~elementary-pantheon/granite/granite
Diff against target: 40 lines (+12/-10)
1 file modified
lib/Widgets/DecoratedWindow.vala (+12/-10)
To merge this branch: bzr merge lp:~victored/granite/lp-1062967
Reviewer Review Type Date Requested Status
Tom Beckmann (community) Approve
Review via email: mp+130868@code.launchpad.net

Commit message

[Widgets.DecoratedWindow] When the close button (X) is clicked, don't propagate the button-release event to prevent the widgets underneath the window from receiving it. This revision also fixes a small memory leak when calling the delete-event. Fixes lp:1062967

Description of the change

Avoid propagating DecoratedWindow's button-release events to the widgets underneath. Fixes bug #1062967

Thanks in advance for the review :)

To post a comment you must log in.
lp:~victored/granite/lp-1062967 updated
420. By Victor Martinez

Fix crash. GtkWindow doesn't implement button_release_event

Revision history for this message
Tom Beckmann (tombeckmann) :
review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'lib/Widgets/DecoratedWindow.vala'
2--- lib/Widgets/DecoratedWindow.vala 2012-09-12 03:23:30 +0000
3+++ lib/Widgets/DecoratedWindow.vala 2012-10-23 02:55:23 +0000
4@@ -121,7 +121,6 @@
5
6 this.add_events (Gdk.EventMask.BUTTON_PRESS_MASK | Gdk.EventMask.POINTER_MOTION_MASK);
7 this.motion_notify_event.connect (on_motion_notify);
8- this.button_press_event.connect (on_button_press);
9 this.delete_event.connect_after (on_delete_event);
10 this.size_allocate.connect (on_size_allocate);
11 this.draw.connect (draw_widget);
12@@ -188,16 +187,19 @@
13 return true;
14 }
15
16- private bool on_button_press (Gdk.EventButton e) {
17- if (coords_over_close_button (e.x, e.y)) {
18- var event = (Gdk.Event*)(&e);
19- this.delete_event (event->copy ().any);
20- }
21- else {
22- this.begin_move_drag ((int)e.button, (int)e.x_root, (int)e.y_root, e.time);
23- }
24-
25+ public override bool button_press_event (Gdk.EventButton e) {
26+ if (coords_over_close_button (e.x, e.y)) {
27+ var event = (Gdk.Event*) (&e);
28+ this.delete_event (event->any);
29 return true;
30+ }
31+
32+ this.begin_move_drag ((int) e.button, (int) e.x_root, (int) e.y_root, e.time);
33+ return base.button_press_event (e);
34+ }
35+
36+ public override bool button_release_event (Gdk.EventButton e) {
37+ return coords_over_close_button (e.x, e.y);
38 }
39
40 private bool coords_over_close_button (double x, double y) {

Subscribers

People subscribed via source and target branches