Skip to content

Commit 7be8609

Browse files
committed
Move back during presentation
1 parent 925c9bf commit 7be8609

2 files changed

Lines changed: 24 additions & 13 deletions

File tree

src/Services/SlideManager.vala

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,14 @@ public class Spice.SlideManager : Object {
108108
}
109109
}
110110

111+
public void previous_slide () {
112+
var previous_slide = get_previous_slide (current_slide);
113+
114+
if (previous_slide != null) {
115+
current_slide = previous_slide;
116+
}
117+
}
118+
111119
public void next_slide () {
112120
var next_slide = get_next_slide (current_slide);
113121

@@ -147,13 +155,15 @@ public class Spice.SlideManager : Object {
147155

148156
do {
149157
var previous_index = slides.index_of (current) - n++;
150-
if (previous_index < slides.size) {
158+
if (previous_index >= 0 && previous_index < slides.size) {
151159
var slide = slides.get (previous_index);
152160
if (slide.visible) {
153161
previous_slide = slide;
154162
found = true;
155163
}
156-
} else {
164+
}
165+
166+
if (previous_index < 0) {
157167
found = true;
158168
}
159169
} while (!found);
@@ -174,6 +184,10 @@ public class Spice.SlideManager : Object {
174184
next_slide ();
175185
});
176186

187+
slide.canvas.previous_slide.connect (() => {
188+
previous_slide ();
189+
});
190+
177191
slides.add (slide);
178192
slideshow.add (slide.canvas);
179193
slideshow.show_all ();

src/Widgets/Canvas.vala

Lines changed: 8 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ public class Spice.Canvas : Gtk.Overlay {
2323
public signal void item_clicked (CanvasItem? item);
2424
public signal void ratio_changed (double ratio);
2525
public signal void next_slide ();
26+
public signal void previous_slide ();
2627

2728
public signal void configuration_changed ();
2829
public double current_ratio = 1.0f;
@@ -216,10 +217,15 @@ public class Spice.Canvas : Gtk.Overlay {
216217
}
217218

218219
public override bool button_press_event (Gdk.EventButton event) {
220+
stderr.printf ("Button %u\n", event.button);
219221
if (!editable) return false;
220222

221223
if (window.is_fullscreen) {
222-
next_slide ();
224+
if (event.button == 1) {
225+
next_slide ();
226+
} else if (event.button == 3) {
227+
previous_slide ();
228+
}
223229
} else {
224230
unselect_all ();
225231
item_clicked (null);
@@ -299,16 +305,7 @@ public class Spice.Canvas : Gtk.Overlay {
299305
}
300306

301307
public override bool button_press_event (Gdk.EventButton event) {
302-
if (!canvas.editable) return false;
303-
304-
if (window.is_fullscreen) {
305-
canvas.next_slide ();
306-
} else {
307-
canvas.item_clicked (null);
308-
canvas.unselect_all ();
309-
}
310-
311-
return true;
308+
return canvas.button_press_event (event);
312309
}
313310

314311
public new void style (string pattern) {

0 commit comments

Comments
 (0)