diff options
author | Camil Staps | 2019-10-27 19:26:47 +0100 |
---|---|---|
committer | Camil Staps | 2019-10-27 19:26:47 +0100 |
commit | b75a27702f72c60337c64ad20bd73b00b2c88396 (patch) | |
tree | 8d9b52acf04e5303696f3185bd44f58dd83ad3d6 | |
parent | Add GtkScrollbarPolicy and instance tune GtkScrolledWindow (GtkScrollbarPolic... (diff) |
Add withShared
-rw-r--r-- | src/Gtk/Shares.dcl | 2 | ||||
-rw-r--r-- | src/Gtk/Shares.icl | 8 |
2 files changed, 10 insertions, 0 deletions
diff --git a/src/Gtk/Shares.dcl b/src/Gtk/Shares.dcl index 3a3891b..81dccdf 100644 --- a/src/Gtk/Shares.dcl +++ b/src/Gtk/Shares.dcl @@ -15,3 +15,5 @@ setShared :: !(Shared a) !a -> GtkM a | shared a updateShared :: !(a -> a) !(Shared a) -> GtkM a | shared a singletonShared :: !String !(GtkM a) -> GtkM a | shared a + +withShared :: a !((Shared a) -> GtkM b) -> GtkM b | shared a diff --git a/src/Gtk/Shares.icl b/src/Gtk/Shares.icl index 4ff107f..d02b1b0 100644 --- a/src/Gtk/Shares.icl +++ b/src/Gtk/Shares.icl @@ -45,3 +45,11 @@ singletonShared name setup = setup >>= \val -> setShared shr (Just val) >>| pure val + +withShared :: a !((Shared a) -> GtkM b) -> GtkM b | shared a +withShared default f = + updateShared inc temp_share_id >>= \id -> + let shared_value = share ("withShared"+++toString id) default in + f shared_value +where + temp_share_id = share "withShared_temp_share_id" 0 |