Skip to content

Commit

Permalink
Add support for Mutter 45
Browse files Browse the repository at this point in the history
  • Loading branch information
tintou committed Aug 29, 2023
1 parent 2b34d8c commit 8b65beb
Show file tree
Hide file tree
Showing 29 changed files with 1,275 additions and 60 deletions.
11 changes: 11 additions & 0 deletions meson.build
Original file line number Diff line number Diff line change
Expand Up @@ -139,6 +139,17 @@ if mutter44_dep.found()
vala_flags = ['--define', 'HAS_MUTTER43', '--define', 'HAS_MUTTER44']
endif

mutter45_dep = dependency('libmutter-13', version: ['>= 45', '< 46'], required: false)
if mutter45_dep.found()
libmutter_dep = dependency('libmutter-13', version: '>= 45')
mutter_dep = [
libmutter_dep,
dependency('mutter-cogl-13'), dependency('mutter-cogl-pango-13'),
dependency('mutter-clutter-13')
]
vala_flags = ['--define', 'HAS_MUTTER43', '--define', 'HAS_MUTTER44', '--define', 'HAS_MUTTER45']
endif

if mutter_dep.length() == 0
error ('No supported mutter library found!')
endif
Expand Down
26 changes: 19 additions & 7 deletions plugins/pip/PopupWindow.vala
Original file line number Diff line number Diff line change
Expand Up @@ -166,7 +166,11 @@ public class Gala.Plugins.PIP.PopupWindow : Clutter.Actor {
}
}

#if HAS_MUTTER45
public override bool enter_event (Clutter.Event event) {
#else
public override bool enter_event (Clutter.CrossingEvent event) {
#endif
var duration = wm.enable_animations ? 300 : 0;

close_button.save_easing_state ();
Expand All @@ -182,7 +186,11 @@ public class Gala.Plugins.PIP.PopupWindow : Clutter.Actor {
return Clutter.EVENT_PROPAGATE;
}

#if HAS_MUTTER45
public override bool leave_event (Clutter.Event event) {
#else
public override bool leave_event (Clutter.CrossingEvent event) {
#endif
var duration = wm.enable_animations ? 300 : 0;

close_button.save_easing_state ();
Expand Down Expand Up @@ -214,15 +222,18 @@ public class Gala.Plugins.PIP.PopupWindow : Clutter.Actor {
update_screen_position ();
}

#if HAS_MUTTER45
private bool on_resize_button_press (Clutter.Event event) {
#else
private bool on_resize_button_press (Clutter.ButtonEvent event) {
if (resizing || event.button != 1) {
#endif
if (resizing || event.get_button () != Clutter.Button.PRIMARY) {
return Clutter.EVENT_STOP;
}

resizing = true;

resize_start_x = event.x;
resize_start_y = event.y;
event.get_coords (out resize_start_x, out resize_start_y);

begin_resize_width = width;
begin_resize_height = height;
Expand All @@ -240,15 +251,16 @@ public class Gala.Plugins.PIP.PopupWindow : Clutter.Actor {

switch (event.get_type ()) {
case Clutter.EventType.MOTION:
unowned var motion_event = (Clutter.MotionEvent) event;
var mods = event.get_state ();
if (!(Clutter.ModifierType.BUTTON1_MASK in mods)) {
stop_resizing ();
break;
}

float diff_x = motion_event.x - resize_start_x;
float diff_y = motion_event.y - resize_start_y;
float event_x, event_y;
event.get_coords (out event_x, out event_y);
float diff_x = event_x - resize_start_x;
float diff_y = event_y - resize_start_y;

width = begin_resize_width + diff_x;
height = begin_resize_height + diff_y;
Expand All @@ -258,7 +270,7 @@ public class Gala.Plugins.PIP.PopupWindow : Clutter.Actor {

break;
case Clutter.EventType.BUTTON_RELEASE:
if (event.get_button () == 1) {
if (event.get_button () == Clutter.Button.PRIMARY) {
stop_resizing ();
}

Expand Down
36 changes: 28 additions & 8 deletions plugins/pip/SelectionArea.vala
Original file line number Diff line number Diff line change
Expand Up @@ -51,8 +51,12 @@ public class Gala.Plugins.PIP.SelectionArea : Clutter.Actor {
canvas.invalidate ();
}

#if HAS_MUTTER45
public override bool key_press_event (Clutter.Event e) {
#else
public override bool key_press_event (Clutter.KeyEvent e) {
if (e.keyval == Clutter.Key.Escape) {
#endif
if (e.get_key_symbol () == Clutter.Key.Escape) {
close ();
closed ();
return true;
Expand All @@ -61,26 +65,37 @@ public class Gala.Plugins.PIP.SelectionArea : Clutter.Actor {
return false;
}

#if HAS_MUTTER45
public override bool button_press_event (Clutter.Event e) {
#else
public override bool button_press_event (Clutter.ButtonEvent e) {
if (dragging || e.button != 1) {
#endif
if (dragging || e.get_button () != Clutter.Button.PRIMARY) {
return true;
}

clicked = true;

start_point.x = (int) e.x;
start_point.y = (int) e.y;
float press_x, press_y;
e.get_coords (out press_x, out press_y);
start_point = { (int) press_x, (int) press_y};

return true;
}

#if HAS_MUTTER45
public override bool button_release_event (Clutter.Event e) {
#else
public override bool button_release_event (Clutter.ButtonEvent e) {
if (e.button != 1) {
#endif
if (e.get_button () != Clutter.Button.PRIMARY) {
return true;
}

if (!dragging) {
selected ((int) e.x, (int) e.y);
float event_x, event_y;
e.get_coords (out event_x, out event_y);
selected ((int) event_x, (int) event_y);
close ();
return true;
}
Expand All @@ -101,13 +116,18 @@ public class Gala.Plugins.PIP.SelectionArea : Clutter.Actor {
return true;
}

#if HAS_MUTTER45
public override bool motion_event (Clutter.Event e) {
#else
public override bool motion_event (Clutter.MotionEvent e) {
#endif
if (!clicked) {
return true;
}

end_point.x = (int) e.x;
end_point.y = (int) e.y;
float press_x, press_y;
e.get_coords (out press_x, out press_y);
end_point = { (int) press_x, (int) press_y};
content.invalidate ();

if (!dragging) {
Expand Down
4 changes: 4 additions & 0 deletions plugins/template/Main.vala
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,11 @@ namespace Gala.Plugins.Template {
wm.ui_group.add_child (red_box);
}

#if HAS_MUTTER45
private bool turn_green (Clutter.Event event) {
#else
private bool turn_green (Clutter.ButtonEvent event) {
#endif
red_box.background_color = { 0, 255, 0, 255 };
return true;
}
Expand Down
6 changes: 4 additions & 2 deletions src/Background/BackgroundContainer.vala
Original file line number Diff line number Diff line change
Expand Up @@ -32,8 +32,10 @@ namespace Gala {

reactive = true;
button_release_event.connect ((event) => {
if (event.button == Clutter.Button.SECONDARY) {
show_background_menu ((int)event.x, (int)event.y);
float x, y;
event.get_coords (out x, out y);
if (event.get_button () == Clutter.Button.SECONDARY) {
show_background_menu ((int)x, (int)y);
}
});

Expand Down
8 changes: 8 additions & 0 deletions src/Gestures/ScrollBackend.vala
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,11 @@ public class Gala.ScrollBackend : Object {
actor.scroll_event.connect (on_scroll_event);
}

#if HAS_MUTTER45
private bool on_scroll_event (Clutter.Event event) {
#else
private bool on_scroll_event (Clutter.ScrollEvent event) {
#endif
if (!can_handle_event (event)) {
return false;
}
Expand Down Expand Up @@ -100,7 +104,11 @@ public class Gala.ScrollBackend : Object {
return true;
}

#if HAS_MUTTER45
private static bool can_handle_event (Clutter.Event event) {
#else
private static bool can_handle_event (Clutter.ScrollEvent event) {
#endif
return event.get_type () == Clutter.EventType.SCROLL
&& event.get_source_device ().get_device_type () == Clutter.InputDeviceType.TOUCHPAD_DEVICE
&& event.get_scroll_direction () == Clutter.ScrollDirection.SMOOTH;
Expand Down
10 changes: 9 additions & 1 deletion src/Widgets/IconGroup.vala
Original file line number Diff line number Diff line change
Expand Up @@ -113,14 +113,22 @@ namespace Gala {
icon_container.actor_removed.disconnect (redraw);
}

#if HAS_MUTTER45
public override bool enter_event (Clutter.Event event) {
#else
public override bool enter_event (Clutter.CrossingEvent event) {
#endif
toggle_close_button (true);

return Clutter.EVENT_PROPAGATE;
}

#if HAS_MUTTER45
public override bool leave_event (Clutter.Event event) {
#else
public override bool leave_event (Clutter.CrossingEvent event) {
if (!contains (event.related)) {
#endif
if (!contains (event.get_related ())) {
toggle_close_button (false);
}

Expand Down
17 changes: 13 additions & 4 deletions src/Widgets/MultitaskingView.vala
Original file line number Diff line number Diff line change
Expand Up @@ -178,19 +178,24 @@ namespace Gala {
* Scroll through workspaces with the mouse wheel. Smooth scrolling is handled by
* GestureTracker.
*/
#if HAS_MUTTER45
public override bool scroll_event (Clutter.Event scroll_event) {
#else
public override bool scroll_event (Clutter.ScrollEvent scroll_event) {
#endif
if (!opened) {
return true;
}

if (scroll_event.direction == Clutter.ScrollDirection.SMOOTH ||
scroll_event.scroll_source == Clutter.ScrollSource.FINGER ||
Clutter.ScrollDirection scroll_direction = scroll_event.get_scroll_direction ();
if (scroll_direction == Clutter.ScrollDirection.SMOOTH ||
scroll_event.get_scroll_source () == Clutter.ScrollSource.FINGER ||
scroll_event.get_source_device ().get_device_type () == Clutter.InputDeviceType.TOUCHPAD_DEVICE) {
return false;
}

Meta.MotionDirection direction;
switch (scroll_event.direction) {
switch (scroll_direction) {
case Clutter.ScrollDirection.UP:
case Clutter.ScrollDirection.LEFT:
direction = Meta.MotionDirection.LEFT;
Expand Down Expand Up @@ -535,11 +540,15 @@ namespace Gala {
* Collect key events, mainly for redirecting them to the WindowCloneContainers to
* select the active window.
*/
#if HAS_MUTTER45
public override bool key_press_event (Clutter.Event event) {
#else
public override bool key_press_event (Clutter.KeyEvent event) {
#endif
if (!opened)
return true;

switch (event.keyval) {
switch (event.get_key_symbol ()) {
case Clutter.Key.Escape:
toggle ();
break;
Expand Down
16 changes: 13 additions & 3 deletions src/Widgets/PixelPicker.vala
Original file line number Diff line number Diff line change
Expand Up @@ -44,8 +44,12 @@ namespace Gala {
set_content (canvas);
}

#if HAS_MUTTER45
public override bool key_press_event (Clutter.Event e) {
#else
public override bool key_press_event (Clutter.KeyEvent e) {
if (e.keyval == Clutter.Key.Escape) {
#endif
if (e.get_key_symbol () == Clutter.Key.Escape) {
close ();
cancelled = true;
closed ();
Expand All @@ -55,12 +59,18 @@ namespace Gala {
return false;
}

#if HAS_MUTTER45
public override bool button_release_event (Clutter.Event e) {
#else
public override bool button_release_event (Clutter.ButtonEvent e) {
if (e.button != 1) {
#endif
if (e.get_button () != Clutter.Button.PRIMARY) {
return true;
}

point = Graphene.Point () { x = e.x, y = e.y };
float x, y;
e.get_coords (out x, out y);
point = Graphene.Point () { x = x, y = y };

close ();
this.hide ();
Expand Down
30 changes: 25 additions & 5 deletions src/Widgets/SelectionArea.vala
Original file line number Diff line number Diff line change
Expand Up @@ -52,8 +52,12 @@ namespace Gala {
canvas.invalidate ();
}

#if HAS_MUTTER45
public override bool key_press_event (Clutter.Event e) {
#else
public override bool key_press_event (Clutter.KeyEvent e) {
if (e.keyval == Clutter.Key.Escape) {
#endif
if (e.get_key_symbol () == Clutter.Key.Escape) {
close ();
cancelled = true;
closed ();
Expand All @@ -63,20 +67,30 @@ namespace Gala {
return false;
}

#if HAS_MUTTER45
public override bool button_press_event (Clutter.Event e) {
#else
public override bool button_press_event (Clutter.ButtonEvent e) {
if (dragging || e.button != 1) {
#endif
if (dragging || e.get_button () != Clutter.Button.PRIMARY) {
return true;
}

clicked = true;

start_point.init (e.x, e.y);
float x, y;
e.get_coords (out x, out y);
start_point.init (x, y);

return true;
}

#if HAS_MUTTER45
public override bool button_release_event (Clutter.Event e) {
#else
public override bool button_release_event (Clutter.ButtonEvent e) {
if (e.button != 1) {
#endif
if (e.get_button () != Clutter.Button.PRIMARY) {
return true;
}

Expand All @@ -98,12 +112,18 @@ namespace Gala {
return true;
}

#if HAS_MUTTER45
public override bool motion_event (Clutter.Event e) {
#else
public override bool motion_event (Clutter.MotionEvent e) {
#endif
if (!clicked) {
return true;
}

end_point.init (e.x, e.y);
float x, y;
e.get_coords (out x, out y);
end_point.init (x, y);
content.invalidate ();

if (!dragging) {
Expand Down

0 comments on commit 8b65beb

Please sign in to comment.