[gtk+] clipboard: Make a bunch of functions vfuncs
- From: Benjamin Otte <otte src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+] clipboard: Make a bunch of functions vfuncs
- Date: Tue, 20 Aug 2013 14:38:54 +0000 (UTC)
commit aee5bcf9e2dabc1eb21280be2c42a1ac9b5ac39d
Author: Benjamin Otte <otte redhat com>
Date: Tue Aug 20 14:44:14 2013 +0200
clipboard: Make a bunch of functions vfuncs
gtk/gtkclipboard.c | 94 +++++++++++++++++++++++++++++++++++++-------
gtk/gtkclipboardprivate.h | 23 ++++++++++-
2 files changed, 100 insertions(+), 17 deletions(-)
---
diff --git a/gtk/gtkclipboard.c b/gtk/gtkclipboard.c
index 6ef8d7d..2407352 100644
--- a/gtk/gtkclipboard.c
+++ b/gtk/gtkclipboard.c
@@ -163,6 +163,23 @@ static void gtk_clipboard_class_init (GtkClipboardClass *class);
static void gtk_clipboard_finalize (GObject *object);
static void gtk_clipboard_owner_change (GtkClipboard *clipboard,
GdkEventOwnerChange *event);
+static gboolean gtk_clipboard_set_contents (GtkClipboard *clipboard,
+ const GtkTargetEntry *targets,
+ guint n_targets,
+ GtkClipboardGetFunc get_func,
+ GtkClipboardClearFunc clear_func,
+ gpointer user_data,
+ gboolean have_owner);
+static void gtk_clipboard_real_clear (GtkClipboard *clipboard);
+static void gtk_clipboard_real_request_contents (GtkClipboard *clipboard,
+ GdkAtom target,
+ GtkClipboardReceivedFunc callback,
+ gpointer user_data);
+static void gtk_clipboard_real_set_can_store (GtkClipboard *clipboard,
+ const GtkTargetEntry *targets,
+ gint n_targets);
+static void gtk_clipboard_real_store (GtkClipboard *clipboard);
+
static void clipboard_unset (GtkClipboard *clipboard);
static void selection_received (GtkWidget *widget,
@@ -204,6 +221,11 @@ gtk_clipboard_class_init (GtkClipboardClass *class)
gobject_class->finalize = gtk_clipboard_finalize;
+ class->set_contents = gtk_clipboard_set_contents;
+ class->clear = gtk_clipboard_real_clear;
+ class->request_contents = gtk_clipboard_real_request_contents;
+ class->set_can_store = gtk_clipboard_real_set_can_store;
+ class->store = gtk_clipboard_real_store;
class->owner_change = gtk_clipboard_owner_change;
/**
@@ -629,9 +651,13 @@ gtk_clipboard_set_with_data (GtkClipboard *clipboard,
g_return_val_if_fail (targets != NULL, FALSE);
g_return_val_if_fail (get_func != NULL, FALSE);
- return gtk_clipboard_set_contents (clipboard, targets, n_targets,
- get_func, clear_func, user_data,
- FALSE);
+ return GTK_CLIPBOARD_GET_CLASS (clipboard)->set_contents (clipboard,
+ targets,
+ n_targets,
+ get_func,
+ clear_func,
+ user_data,
+ FALSE);
}
/**
@@ -672,9 +698,13 @@ gtk_clipboard_set_with_owner (GtkClipboard *clipboard,
g_return_val_if_fail (get_func != NULL, FALSE);
g_return_val_if_fail (G_IS_OBJECT (owner), FALSE);
- return gtk_clipboard_set_contents (clipboard, targets, n_targets,
- get_func, clear_func, owner,
- TRUE);
+ return GTK_CLIPBOARD_GET_CLASS (clipboard)->set_contents (clipboard,
+ targets,
+ n_targets,
+ get_func,
+ clear_func,
+ owner,
+ TRUE);
}
/**
@@ -753,6 +783,12 @@ gtk_clipboard_clear (GtkClipboard *clipboard)
{
g_return_if_fail (clipboard != NULL);
+ GTK_CLIPBOARD_GET_CLASS (clipboard)->clear (clipboard);
+}
+
+static void
+gtk_clipboard_real_clear (GtkClipboard *clipboard)
+{
if (clipboard->have_selection)
gtk_selection_owner_set_for_display (clipboard->display,
NULL,
@@ -930,14 +966,26 @@ gtk_clipboard_request_contents (GtkClipboard *clipboard,
GtkClipboardReceivedFunc callback,
gpointer user_data)
{
+ g_return_if_fail (clipboard != NULL);
+ g_return_if_fail (target != GDK_NONE);
+ g_return_if_fail (callback != NULL);
+
+ GTK_CLIPBOARD_GET_CLASS (clipboard)->request_contents (clipboard,
+ target,
+ callback,
+ user_data);
+}
+
+static void
+gtk_clipboard_real_request_contents (GtkClipboard *clipboard,
+ GdkAtom target,
+ GtkClipboardReceivedFunc callback,
+ gpointer user_data)
+{
RequestContentsInfo *info;
GtkWidget *widget;
GtkWidget *clipboard_widget;
- g_return_if_fail (clipboard != NULL);
- g_return_if_fail (target != GDK_NONE);
- g_return_if_fail (callback != NULL);
-
clipboard_widget = get_clipboard_widget (clipboard->display);
if (get_request_contents_info (clipboard_widget))
@@ -1986,15 +2034,25 @@ gtk_clipboard_set_can_store (GtkClipboard *clipboard,
const GtkTargetEntry *targets,
gint n_targets)
{
+ g_return_if_fail (GTK_IS_CLIPBOARD (clipboard));
+ g_return_if_fail (n_targets >= 0);
+
+ GTK_CLIPBOARD_GET_CLASS (clipboard)->set_can_store (clipboard,
+ targets,
+ n_targets);
+}
+
+static void
+gtk_clipboard_real_set_can_store (GtkClipboard *clipboard,
+ const GtkTargetEntry *targets,
+ gint n_targets)
+{
GtkWidget *clipboard_widget;
int i;
static const GtkTargetEntry save_targets[] = {
{ "SAVE_TARGETS", 0, TARGET_SAVE_TARGETS }
};
- g_return_if_fail (GTK_IS_CLIPBOARD (clipboard));
- g_return_if_fail (n_targets >= 0);
-
if (clipboard->selection != GDK_SELECTION_CLIPBOARD)
return;
@@ -2047,10 +2105,16 @@ gtk_clipboard_selection_notify (GtkWidget *widget,
void
gtk_clipboard_store (GtkClipboard *clipboard)
{
- GtkWidget *clipboard_widget;
-
g_return_if_fail (GTK_IS_CLIPBOARD (clipboard));
+ GTK_CLIPBOARD_GET_CLASS (clipboard)->store (clipboard);
+}
+
+static void
+gtk_clipboard_real_store (GtkClipboard *clipboard)
+{
+ GtkWidget *clipboard_widget;
+
if (clipboard->n_storable_targets < 0)
return;
diff --git a/gtk/gtkclipboardprivate.h b/gtk/gtkclipboardprivate.h
index 788bf75..48e1b05 100644
--- a/gtk/gtkclipboardprivate.h
+++ b/gtk/gtkclipboardprivate.h
@@ -59,8 +59,27 @@ struct _GtkClipboardClass
{
GObjectClass parent_class;
- void (*owner_change) (GtkClipboard *clipboard,
- GdkEventOwnerChange *event);
+ /* vfuncs */
+ gboolean (* set_contents) (GtkClipboard *clipboard,
+ const GtkTargetEntry *targets,
+ guint n_targets,
+ GtkClipboardGetFunc get_func,
+ GtkClipboardClearFunc clear_func,
+ gpointer user_data,
+ gboolean have_owner);
+ void (* clear) (GtkClipboard *clipboard);
+ void (* request_contents) (GtkClipboard *clipboard,
+ GdkAtom target,
+ GtkClipboardReceivedFunc callback,
+ gpointer user_data);
+ void (* set_can_store) (GtkClipboard *clipboard,
+ const GtkTargetEntry *targets,
+ gint n_targets);
+ void (* store) (GtkClipboard *clipboard);
+
+ /* signals */
+ void (* owner_change) (GtkClipboard *clipboard,
+ GdkEventOwnerChange *event);
};
#endif /* __GTK_CLIPBOARD_PRIVATE_H__ */
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]