[mutter/wip/carlosg/clipboard-manager: 10/10] Make MetaSelection, MetaSelectionSource and MetaMemorySelectionSource public



commit 77cebd8f799e59c413ff46b98e4dc931f3aac1d3
Author: Carlos Garnacho <carlosg gnome org>
Date:   Fri Nov 23 11:48:53 2018 +0100

    Make MetaSelection, MetaSelectionSource and MetaMemorySelectionSource public
    
    This exposes the base so that we can reimplement StClipboard on top. Some
    gtk-docs have been added for documentation and introspection purposes.

 src/core/display-private.h                         |  4 +-
 src/core/display.c                                 |  6 +++
 src/core/meta-clipboard-manager.c                  |  2 +-
 src/core/meta-selection-source-memory.c            |  2 +-
 src/core/meta-selection-source.c                   | 33 +++++++++++++-
 src/core/meta-selection.c                          | 53 +++++++++++++++++++++-
 src/meson.build                                    |  3 --
 src/meta/display.h                                 |  3 ++
 src/meta/meson.build                               |  3 ++
 src/{core => meta}/meta-selection-source-memory.h  |  5 +-
 src/{core => meta}/meta-selection-source.h         |  7 +++
 src/{core => meta}/meta-selection.h                | 12 ++++-
 src/meta/types.h                                   |  1 +
 .../meta-selection-source-wayland-private.h        |  2 +-
 src/wayland/meta-wayland-data-device.h             |  2 +-
 src/x11/meta-selection-source-x11-private.h        |  2 +-
 src/x11/meta-x11-display-private.h                 |  2 +-
 src/x11/meta-x11-selection-private.h               |  2 +-
 18 files changed, 125 insertions(+), 19 deletions(-)
---
diff --git a/src/core/display-private.h b/src/core/display-private.h
index 1055ca48b..13b125648 100644
--- a/src/core/display-private.h
+++ b/src/core/display-private.h
@@ -38,12 +38,12 @@
 #include "clutter/clutter.h"
 #include "core/keybindings-private.h"
 #include "core/meta-gesture-tracker-private.h"
-#include "core/meta-selection.h"
 #include "core/stack-tracker.h"
 #include "core/startup-notification-private.h"
 #include "meta/barrier.h"
 #include "meta/boxes.h"
 #include "meta/common.h"
+#include "meta/meta-selection.h"
 #include "meta/prefs.h"
 
 typedef struct _MetaBell       MetaBell;
@@ -443,6 +443,4 @@ MetaWindow *meta_display_get_window_from_id (MetaDisplay *display,
                                              uint64_t     window_id);
 uint64_t    meta_display_generate_window_id (MetaDisplay *display);
 
-MetaSelection * meta_display_get_selection (MetaDisplay *display);
-
 #endif
diff --git a/src/core/display.c b/src/core/display.c
index 5cdee1368..070653044 100644
--- a/src/core/display.c
+++ b/src/core/display.c
@@ -3654,6 +3654,12 @@ meta_display_get_sound_player (MetaDisplay *display)
   return display->sound_player;
 }
 
+/**
+ * meta_display_get_selection:
+ * @display: a #MetaDisplay
+ *
+ * Returns: (transfer none): The selection manager of the display
+ */
 MetaSelection *
 meta_display_get_selection (MetaDisplay *display)
 {
diff --git a/src/core/meta-clipboard-manager.c b/src/core/meta-clipboard-manager.c
index 594e7f1a8..b693b411e 100644
--- a/src/core/meta-clipboard-manager.c
+++ b/src/core/meta-clipboard-manager.c
@@ -21,7 +21,7 @@
 #include "config.h"
 
 #include "core/meta-clipboard-manager.h"
-#include "core/meta-selection-source-memory.h"
+#include "meta/meta-selection-source-memory.h"
 
 #define MAX_TEXT_SIZE (4 * 1024 * 1024) /* 4MB */
 #define MAX_IMAGE_SIZE (200 * 1024 * 1024) /* 200MB */
diff --git a/src/core/meta-selection-source-memory.c b/src/core/meta-selection-source-memory.c
index 1a6e73ac5..9b7198220 100644
--- a/src/core/meta-selection-source-memory.c
+++ b/src/core/meta-selection-source-memory.c
@@ -21,7 +21,7 @@
 
 #include "config.h"
 
-#include "core/meta-selection-source-memory.h"
+#include "meta/meta-selection-source-memory.h"
 
 struct _MetaSelectionSourceMemory
 {
diff --git a/src/core/meta-selection-source.c b/src/core/meta-selection-source.c
index 5d85ac171..a3d893ec8 100644
--- a/src/core/meta-selection-source.c
+++ b/src/core/meta-selection-source.c
@@ -20,8 +20,8 @@
  */
 #include "config.h"
 
-#include "core/meta-selection.h"
-#include "core/meta-selection-source.h"
+#include "meta/meta-selection.h"
+#include "meta/meta-selection-source.h"
 
 typedef struct MetaSelectionSourcePrivate MetaSelectionSourcePrivate;
 
@@ -112,6 +112,16 @@ meta_selection_source_read_async (MetaSelectionSource *source,
                                                         user_data);
 }
 
+/**
+ * meta_selection_source_read_finish:
+ * @source: The selection source
+ * @result: The async result
+ * @error: Location for returned error
+ *
+ * Finishes a read from the selection source.
+ *
+ * Returns: (transfer full): The resulting #GInputStream
+ */
 GInputStream *
 meta_selection_source_read_finish (MetaSelectionSource  *source,
                                    GAsyncResult         *result,
@@ -122,12 +132,31 @@ meta_selection_source_read_finish (MetaSelectionSource  *source,
                                                                 error);
 }
 
+/**
+ * meta_selection_source_get_mimetypes:
+ * @source: The selection source
+ *
+ * Returns the list of supported mimetypes.
+ *
+ * Returns: (element-type utf8) (transfer full): The supported mimetypes
+ */
 GList *
 meta_selection_source_get_mimetypes (MetaSelectionSource  *source)
 {
   return META_SELECTION_SOURCE_GET_CLASS (source)->get_mimetypes (source);
 }
 
+/**
+ * meta_selection_source_get_selection_type:
+ * @source: the selection source
+ * @selection: (out): return location for the current selection type
+ *
+ * If the source is currently the owner of a selection, returns #TRUE
+ * and fills in @selection with the currently owned selection. Otherwise
+ * returns #FALSE.
+ *
+ * Returns: #TRUE if the source owns a selection.
+ **/
 gboolean
 meta_selection_source_get_selection_type (MetaSelectionSource *source,
                                           MetaSelectionType   *selection_type)
diff --git a/src/core/meta-selection.c b/src/core/meta-selection.c
index 87ac677f7..d9b67f398 100644
--- a/src/core/meta-selection.c
+++ b/src/core/meta-selection.c
@@ -21,7 +21,7 @@
 
 #include "config.h"
 
-#include "core/meta-selection.h"
+#include "meta/meta-selection.h"
 
 typedef struct TransferRequest TransferRequest;
 
@@ -76,6 +76,15 @@ meta_selection_new (MetaDisplay *display)
                        NULL);
 }
 
+/**
+ * meta_selection_set_owner:
+ * @selection: The selection manager
+ * @selection_type: Selection type
+ * @owner: New selection owner
+ *
+ * Sets @owner as the owner of the selection given by @selection_type,
+ * unsets any previous owner there was.
+ **/
 void
 meta_selection_set_owner (MetaSelection       *selection,
                           MetaSelectionType    selection_type,
@@ -95,6 +104,15 @@ meta_selection_set_owner (MetaSelection       *selection,
   g_signal_emit (selection, signals[OWNER_CHANGED], 0, selection_type, owner);
 }
 
+/**
+ * meta_selection_unset_owner:
+ * @selection: The selection manager
+ * @selection_type: Selection type
+ * @owner: Owner to unset
+ *
+ * Unsets @owner as the owner the selection given by @selection_type. If
+ * @owner does not own the selection, nothing is done.
+ **/
 void
 meta_selection_unset_owner (MetaSelection       *selection,
                             MetaSelectionType    selection_type,
@@ -112,6 +130,15 @@ meta_selection_unset_owner (MetaSelection       *selection,
     }
 }
 
+/**
+ * meta_selection_get_mimetypes:
+ * @selection: The selection manager
+ * @selection_type: Selection to query
+ *
+ * Returns the list of supported mimetypes for the given selection type.
+ *
+ * Returns: (element-type utf8) (transfer full): The supported mimetypes
+ */
 GList *
 meta_selection_get_mimetypes (MetaSelection     *selection,
                               MetaSelectionType  selection_type)
@@ -253,6 +280,20 @@ source_read_cb (MetaSelectionSource *source,
     }
 }
 
+/**
+ * meta_selection_transfer_async:
+ * @selection: The selection manager
+ * @selection_type: Selection type
+ * @mimetype: Mimetype to transfer
+ * @size: Maximum size to transfer, -1 for unlimited
+ * @output: Output stream to write contents to
+ * @cancellable: Cancellable
+ * @callback: User callback
+ * @user_data: User data
+ *
+ * Requests a transfer of @mimetype on the selection given by
+ * @selection_type.
+ **/
 void
 meta_selection_transfer_async (MetaSelection        *selection,
                                MetaSelectionType     selection_type,
@@ -283,6 +324,16 @@ meta_selection_transfer_async (MetaSelection        *selection,
                                     task);
 }
 
+/**
+ * meta_selection_transfer_finish:
+ * @selection: The selection manager
+ * @result: The async result
+ * @error: Location for returned error, or %NULL
+ *
+ * Finishes the transfer of a queried mimetype.
+ *
+ * Returns: #TRUE if the transfer was successful.
+ **/
 gboolean
 meta_selection_transfer_finish (MetaSelection  *selection,
                                 GAsyncResult   *result,
diff --git a/src/meson.build b/src/meson.build
index a211b84b0..e2e1309b8 100644
--- a/src/meson.build
+++ b/src/meson.build
@@ -344,11 +344,8 @@ mutter_sources = [
   'core/meta-inhibit-shortcuts-dialog-default-private.h',
   'core/meta-launch-context.c',
   'core/meta-selection.c',
-  'core/meta-selection.h',
   'core/meta-selection-source.c',
-  'core/meta-selection-source.h',
   'core/meta-selection-source-memory.c',
-  'core/meta-selection-source-memory.h',
   'core/meta-sound-player.c',
   'core/meta-workspace-manager.c',
   'core/meta-workspace-manager-private.h',
diff --git a/src/meta/display.h b/src/meta/display.h
index bb4831fba..2a61c314e 100644
--- a/src/meta/display.h
+++ b/src/meta/display.h
@@ -289,4 +289,7 @@ MetaStartupNotification * meta_display_get_startup_notification (MetaDisplay *di
 META_EXPORT
 MetaSoundPlayer * meta_display_get_sound_player (MetaDisplay *display);
 
+META_EXPORT
+MetaSelection * meta_display_get_selection (MetaDisplay *display);
+
 #endif
diff --git a/src/meta/meson.build b/src/meta/meson.build
index 53c4723a2..8be4e944f 100644
--- a/src/meta/meson.build
+++ b/src/meta/meson.build
@@ -22,6 +22,9 @@ mutter_public_headers = [
   'meta-monitor-manager.h',
   'meta-plugin.h',
   'meta-remote-access-controller.h',
+  'meta-selection.h',
+  'meta-selection-source.h',
+  'meta-selection-source-memory.h',
   'meta-settings.h',
   'meta-shadow-factory.h',
   'meta-shaped-texture.h',
diff --git a/src/core/meta-selection-source-memory.h b/src/meta/meta-selection-source-memory.h
similarity index 95%
rename from src/core/meta-selection-source-memory.h
rename to src/meta/meta-selection-source-memory.h
index efe55c9ba..6a8524dac 100644
--- a/src/core/meta-selection-source-memory.h
+++ b/src/meta/meta-selection-source-memory.h
@@ -22,14 +22,17 @@
 #ifndef META_MEMORY_SELECTION_SOURCE_H
 #define META_MEMORY_SELECTION_SOURCE_H
 
-#include "core/meta-selection-source.h"
+#include "meta/meta-selection-source.h"
 
 #define META_TYPE_SELECTION_SOURCE_MEMORY (meta_selection_source_memory_get_type ())
+
+META_EXPORT
 G_DECLARE_FINAL_TYPE (MetaSelectionSourceMemory,
                       meta_selection_source_memory,
                       META, SELECTION_SOURCE_MEMORY,
                       MetaSelectionSource)
 
+META_EXPORT
 MetaSelectionSource * meta_selection_source_memory_new (const gchar *mimetype,
                                                         GBytes      *content);
 
diff --git a/src/core/meta-selection-source.h b/src/meta/meta-selection-source.h
similarity index 97%
rename from src/core/meta-selection-source.h
rename to src/meta/meta-selection-source.h
index 86c115130..ff1a82bfa 100644
--- a/src/core/meta-selection-source.h
+++ b/src/meta/meta-selection-source.h
@@ -23,6 +23,8 @@
 
 #include <gio/gio.h>
 
+#include <meta/common.h>
+
 typedef enum
 {
   META_SELECTION_PRIMARY,
@@ -36,6 +38,7 @@ typedef struct _MetaSelectionSource MetaSelectionSource;
 
 #define META_TYPE_SELECTION_SOURCE (meta_selection_source_get_type ())
 
+META_EXPORT
 G_DECLARE_DERIVABLE_TYPE (MetaSelectionSource,
                           meta_selection_source,
                           META, SELECTION_SOURCE,
@@ -61,18 +64,22 @@ struct _MetaSelectionSourceClass
                                     GError              **error);
 };
 
+META_EXPORT
 void           meta_selection_source_read_async  (MetaSelectionSource  *source,
                                                   const gchar          *mimetype,
                                                   GCancellable         *cancellable,
                                                   GAsyncReadyCallback   callback,
                                                   gpointer              user_data);
 
+META_EXPORT
 GInputStream * meta_selection_source_read_finish (MetaSelectionSource  *source,
                                                   GAsyncResult         *result,
                                                   GError              **error);
 
+META_EXPORT
 GList *  meta_selection_source_get_mimetypes     (MetaSelectionSource  *source);
 
+META_EXPORT
 gboolean meta_selection_source_get_selection_type (MetaSelectionSource  *source,
                                                    MetaSelectionType    *selection);
 
diff --git a/src/core/meta-selection.h b/src/meta/meta-selection.h
similarity index 93%
rename from src/core/meta-selection.h
rename to src/meta/meta-selection.h
index 275ca544d..ef86dce1d 100644
--- a/src/core/meta-selection.h
+++ b/src/meta/meta-selection.h
@@ -24,29 +24,36 @@
 
 #include <gio/gio.h>
 
-#include "core/meta-selection-source.h"
-#include "meta/display.h"
+#include <meta/common.h>
+#include <meta/display.h>
+#include <meta/meta-selection-source.h>
 
 #define META_TYPE_SELECTION (meta_selection_get_type ())
 
+META_EXPORT
 G_DECLARE_FINAL_TYPE (MetaSelection,
                       meta_selection,
                       META, SELECTION,
                       GObject)
 
+META_EXPORT
 MetaSelection *
          meta_selection_new                  (MetaDisplay *display);
 
+META_EXPORT
 void     meta_selection_set_owner            (MetaSelection        *selection,
                                               MetaSelectionType     selection_type,
                                               MetaSelectionSource  *owner);
+META_EXPORT
 void     meta_selection_unset_owner          (MetaSelection        *selection,
                                               MetaSelectionType     selection_type,
                                               MetaSelectionSource  *owner);
 
+META_EXPORT
 GList *  meta_selection_get_mimetypes        (MetaSelection        *selection,
                                               MetaSelectionType     selection_type);
 
+META_EXPORT
 void     meta_selection_transfer_async       (MetaSelection        *selection,
                                               MetaSelectionType     selection_type,
                                               const gchar          *mimetype,
@@ -55,6 +62,7 @@ void     meta_selection_transfer_async       (MetaSelection        *selection,
                                               GCancellable         *cancellable,
                                               GAsyncReadyCallback   callback,
                                               gpointer              user_data);
+META_EXPORT
 gboolean meta_selection_transfer_finish      (MetaSelection        *selection,
                                               GAsyncResult         *result,
                                               GError              **error);
diff --git a/src/meta/types.h b/src/meta/types.h
index f9ff90b9b..49fb56816 100644
--- a/src/meta/types.h
+++ b/src/meta/types.h
@@ -43,5 +43,6 @@ typedef struct _MetaDnd         MetaDnd;
 typedef struct _MetaSettings    MetaSettings;
 
 typedef struct _MetaWorkspaceManager MetaWorkspaceManager;
+typedef struct _MetaSelection   MetaSelection;
 
 #endif
diff --git a/src/wayland/meta-selection-source-wayland-private.h 
b/src/wayland/meta-selection-source-wayland-private.h
index 5976271cf..6affc77a8 100644
--- a/src/wayland/meta-selection-source-wayland-private.h
+++ b/src/wayland/meta-selection-source-wayland-private.h
@@ -24,7 +24,7 @@
 
 #include <wayland-server.h>
 
-#include "core/meta-selection-source.h"
+#include "meta/meta-selection-source.h"
 
 #define META_TYPE_SELECTION_SOURCE_WAYLAND (meta_selection_source_wayland_get_type ())
 
diff --git a/src/wayland/meta-wayland-data-device.h b/src/wayland/meta-wayland-data-device.h
index 58b72ecf1..729baacd9 100644
--- a/src/wayland/meta-wayland-data-device.h
+++ b/src/wayland/meta-wayland-data-device.h
@@ -27,7 +27,7 @@
 #include <wayland-server.h>
 
 #include "clutter/clutter.h"
-#include "core/meta-selection-source.h"
+#include "meta/meta-selection-source.h"
 #include "wayland/meta-wayland-types.h"
 
 typedef struct _MetaWaylandDragGrab MetaWaylandDragGrab;
diff --git a/src/x11/meta-selection-source-x11-private.h b/src/x11/meta-selection-source-x11-private.h
index a03d64b95..bcd21a356 100644
--- a/src/x11/meta-selection-source-x11-private.h
+++ b/src/x11/meta-selection-source-x11-private.h
@@ -22,7 +22,7 @@
 #ifndef META_SELECTION_SOURCE_X11_H
 #define META_SELECTION_SOURCE_X11_H
 
-#include "core/meta-selection-source.h"
+#include "meta/meta-selection-source.h"
 #include "x11/meta-x11-display-private.h"
 
 #define META_TYPE_SELECTION_SOURCE_X11 (meta_selection_source_x11_get_type ())
diff --git a/src/x11/meta-x11-display-private.h b/src/x11/meta-x11-display-private.h
index 9e085ed8e..6020d3767 100644
--- a/src/x11/meta-x11-display-private.h
+++ b/src/x11/meta-x11-display-private.h
@@ -30,8 +30,8 @@
 
 #include "backends/meta-monitor-manager-private.h"
 #include "core/display-private.h"
-#include "core/meta-selection-source.h"
 #include "meta/common.h"
+#include "meta/meta-selection-source.h"
 #include "meta/types.h"
 #include "meta/meta-x11-display.h"
 #include "meta-startup-notification-x11.h"
diff --git a/src/x11/meta-x11-selection-private.h b/src/x11/meta-x11-selection-private.h
index 9e42751bb..b551ef602 100644
--- a/src/x11/meta-x11-selection-private.h
+++ b/src/x11/meta-x11-selection-private.h
@@ -22,7 +22,7 @@
 #ifndef META_X11_SELECTION_H
 #define META_X11_SELECTION_H
 
-#include "core/meta-selection.h"
+#include "meta/meta-selection.h"
 #include "x11/meta-x11-display-private.h"
 
 gboolean meta_x11_selection_handle_event (MetaX11Display *display,


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