[gnome-screenshot] Add a back button to take another screenshot
- From: Cosimo Cecchi <cosimoc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-screenshot] Add a back button to take another screenshot
- Date: Mon, 31 Jul 2017 10:14:51 +0000 (UTC)
commit 84be0c3aba941b527be86b17c48c6295f4479489
Author: Daniel Byrne <byrnedj12 gmail com>
Date: Sun Jul 30 19:50:00 2017 -0700
Add a back button to take another screenshot
This commit adds a back button so users can take another screenshot when
launched in interactive mode.
https://bugzilla.gnome.org/show_bug.cgi?id=765941
src/screenshot-application.c | 25 ++++++++++++++++++++-----
src/screenshot-dialog.c | 10 ++++++++--
src/screenshot-dialog.h | 5 ++++-
src/screenshot-dialog.ui | 21 +++++++++++++++++++++
4 files changed, 53 insertions(+), 8 deletions(-)
---
diff --git a/src/screenshot-application.c b/src/screenshot-application.c
index 6d6d6d5..672c9ce 100644
--- a/src/screenshot-application.c
+++ b/src/screenshot-application.c
@@ -108,17 +108,22 @@ set_recent_entry (ScreenshotApplication *self)
}
static void
+screenshot_close_interactive_dialog (ScreenshotApplication *self)
+{
+ ScreenshotDialog *dialog = self->priv->dialog;
+ save_folder_to_settings (self);
+ gtk_widget_destroy (dialog->dialog);
+ g_free (dialog);
+}
+
+static void
save_pixbuf_handle_success (ScreenshotApplication *self)
{
set_recent_entry (self);
if (screenshot_config->interactive)
{
- ScreenshotDialog *dialog = self->priv->dialog;
-
- save_folder_to_settings (self);
- gtk_widget_destroy (dialog->dialog);
- g_free (dialog);
+ screenshot_close_interactive_dialog (self);
}
else
{
@@ -382,6 +387,13 @@ screenshot_save_to_file (ScreenshotApplication *self)
}
static void
+screenshot_back (ScreenshotApplication *self)
+{
+ screenshot_close_interactive_dialog (self);
+ screenshot_show_interactive_dialog (self);
+}
+
+static void
screenshot_save_to_clipboard (ScreenshotApplication *self)
{
GtkClipboard *clipboard;
@@ -406,6 +418,9 @@ screenshot_dialog_response_cb (ScreenshotResponse response,
case SCREENSHOT_RESPONSE_COPY:
screenshot_save_to_clipboard (self);
break;
+ case SCREENSHOT_RESPONSE_BACK:
+ screenshot_back (self);
+ break;
default:
g_assert_not_reached ();
break;
diff --git a/src/screenshot-dialog.c b/src/screenshot-dialog.c
index b7046ed..d5befdc 100644
--- a/src/screenshot-dialog.c
+++ b/src/screenshot-dialog.c
@@ -143,8 +143,12 @@ button_clicked (GtkWidget *button, ScreenshotDialog *dialog)
{
ScreenshotResponse res;
- res = (button == dialog->save_button) ? SCREENSHOT_RESPONSE_SAVE
- : SCREENSHOT_RESPONSE_COPY;
+ if (button == dialog->save_button)
+ res = SCREENSHOT_RESPONSE_SAVE;
+ else if (button == dialog->copy_button)
+ res = SCREENSHOT_RESPONSE_COPY;
+ else
+ res = SCREENSHOT_RESPONSE_BACK;
dialog->callback (res, dialog->user_data);
}
@@ -241,6 +245,8 @@ screenshot_dialog_new (GdkPixbuf *screenshot,
g_signal_connect (dialog->save_button, "clicked", G_CALLBACK (button_clicked), dialog);
dialog->copy_button = GTK_WIDGET (gtk_builder_get_object (ui, "copy_button"));
g_signal_connect (dialog->copy_button, "clicked", G_CALLBACK (button_clicked), dialog);
+ dialog->back_button = GTK_WIDGET (gtk_builder_get_object (ui, "back_button"));
+ g_signal_connect (dialog->back_button, "clicked", G_CALLBACK (button_clicked), dialog);
setup_drawing_area (dialog, ui);
diff --git a/src/screenshot-dialog.h b/src/screenshot-dialog.h
index 45b0641..67bfbd5 100644
--- a/src/screenshot-dialog.h
+++ b/src/screenshot-dialog.h
@@ -24,7 +24,9 @@
typedef enum {
SCREENSHOT_RESPONSE_SAVE,
- SCREENSHOT_RESPONSE_COPY
+ SCREENSHOT_RESPONSE_COPY,
+ SCREENSHOT_RESPONSE_BACK
+
} ScreenshotResponse;
typedef void (*SaveScreenshotCallback) (ScreenshotResponse response, gpointer *user_data);
@@ -38,6 +40,7 @@ typedef struct {
GtkWidget *filename_entry;
GtkWidget *save_button;
GtkWidget *copy_button;
+ GtkWidget *back_button;
gint drag_x;
gint drag_y;
diff --git a/src/screenshot-dialog.ui b/src/screenshot-dialog.ui
index 01461d7..ed2d620 100644
--- a/src/screenshot-dialog.ui
+++ b/src/screenshot-dialog.ui
@@ -13,6 +13,27 @@
<property name="can_focus">False</property>
<property name="show_close_button">True</property>
<child>
+ <object class="GtkButton" id="back_button">
+ <property name="tooltip_text" translatable="yes">Back</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="use_underline">True</property>
+ <style>
+ <class name="image-button"/>
+ </style>
+ <child>
+ <object class="GtkImage">
+ <property name="visible">True</property>
+ <property name="icon_name">go-previous-symbolic</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="pack-type">start</property>
+ </packing>
+ </child>
+ <child>
<object class="GtkButton" id="copy_button">
<property name="label" translatable="yes">C_opy to Clipboard</property>
<property name="visible">True</property>
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]