[shotwell] Add signals for transparent color change



commit e3f1b4360a2085559b4479f02068ce95aed1fe6c
Author: Jens Georg <mail jensge org>
Date:   Fri Apr 21 23:42:31 2017 +0200

    Add signals for transparent color change
    
    Signed-off-by: Jens Georg <mail jensge org>
    
    https://bugzilla.gnome.org/show_bug.cgi?id=716708

 src/Page.vala                           |   11 ++++++++++-
 src/config/Config.vala                  |    2 ++
 src/config/ConfigurationInterfaces.vala |   10 ++++++++++
 src/util/image.vala                     |    4 ++++
 4 files changed, 26 insertions(+), 1 deletions(-)
---
diff --git a/src/Page.vala b/src/Page.vala
index 3a74451..ee2dc41 100644
--- a/src/Page.vala
+++ b/src/Page.vala
@@ -1998,6 +1998,11 @@ public abstract class SinglePhotoPage : Page {
         canvas.draw.connect(on_canvas_exposed);
         
         set_event_source(canvas);
+        Config.Facade.get_instance().colors_changed.connect(on_colors_changed);
+    }
+
+    ~SinglePhotoPage() {
+        Config.Facade.get_instance().colors_changed.disconnect(on_colors_changed);
     }
     
     public bool is_transition_in_progress() {
@@ -2449,6 +2454,11 @@ public abstract class SinglePhotoPage : Page {
         
         return (base.key_press_event != null) ? base.key_press_event(event) : true;
     }
+
+    private void on_colors_changed() {
+        invalidate_transparent_background();
+        repaint();
+    }
 }
 
 //
@@ -2631,5 +2641,4 @@ public class DragAndDropHandler {
         exporter = null;
     }
 
-
 }
diff --git a/src/config/Config.vala b/src/config/Config.vala
index 64530fd..f80bfce 100644
--- a/src/config/Config.vala
+++ b/src/config/Config.vala
@@ -47,6 +47,8 @@ public class Facade : ConfigurationFacade {
         base(new GSettingsConfigurationEngine());
 
         bg_color_name_changed.connect(on_color_name_changed);
+        transparent_background_type_changed.connect(on_color_name_changed);
+        transparent_background_color_changed.connect(on_color_name_changed);
     }
     
     public static Facade get_instance() {
diff --git a/src/config/ConfigurationInterfaces.vala b/src/config/ConfigurationInterfaces.vala
index bde99ce..c785144 100644
--- a/src/config/ConfigurationInterfaces.vala
+++ b/src/config/ConfigurationInterfaces.vala
@@ -355,6 +355,8 @@ public abstract class ConfigurationFacade : Object {
 
     public signal void auto_import_from_library_changed();
     public signal void bg_color_name_changed();
+    public signal void transparent_background_type_changed();
+    public signal void transparent_background_color_changed();
     public signal void commit_metadata_to_masters_changed();
     public signal void events_sort_ascending_changed();
     public signal void external_app_changed();
@@ -377,6 +379,14 @@ public abstract class ConfigurationFacade : Object {
             case ConfigurableProperty.BG_COLOR_NAME:
                 bg_color_name_changed();
             break;
+
+            case ConfigurableProperty.TRANSPARENT_BACKGROUND_TYPE:
+                transparent_background_type_changed();
+            break;
+
+            case ConfigurableProperty.TRANSPARENT_BACKGROUND_COLOR:
+                transparent_background_color_changed();
+            break;
             
             case ConfigurableProperty.COMMIT_METADATA_TO_MASTERS:
                 commit_metadata_to_masters_changed();
diff --git a/src/util/image.vala b/src/util/image.vala
index 86dad11..f8646e2 100644
--- a/src/util/image.vala
+++ b/src/util/image.vala
@@ -484,6 +484,10 @@ private Cairo.Surface get_background_surface() {
     return background_surface;
 }
 
+public void invalidate_transparent_background() {
+    background_surface = null;
+}
+
 public void paint_pixmap_with_background (Cairo.Context ctx, Gdk.Pixbuf pixbuf, int x, int y) {
     if (pixbuf.get_has_alpha()) {
         ctx.set_source_surface(get_background_surface(), 0, 0);


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]