mirror of
https://gitlab.gnome.org/GNOME/gtk.git
synced 2024-12-26 13:41:07 +00:00
entry completion: Make final
This commit is contained in:
parent
90aebd4f84
commit
2ef8bd0b95
@ -33,14 +33,9 @@ G_BEGIN_DECLS
|
|||||||
|
|
||||||
#define GTK_TYPE_ENTRY_COMPLETION (gtk_entry_completion_get_type ())
|
#define GTK_TYPE_ENTRY_COMPLETION (gtk_entry_completion_get_type ())
|
||||||
#define GTK_ENTRY_COMPLETION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_ENTRY_COMPLETION, GtkEntryCompletion))
|
#define GTK_ENTRY_COMPLETION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_ENTRY_COMPLETION, GtkEntryCompletion))
|
||||||
#define GTK_ENTRY_COMPLETION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GTK_TYPE_ENTRY_COMPLETION, GtkEntryCompletionClass))
|
|
||||||
#define GTK_IS_ENTRY_COMPLETION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GTK_TYPE_ENTRY_COMPLETION))
|
#define GTK_IS_ENTRY_COMPLETION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GTK_TYPE_ENTRY_COMPLETION))
|
||||||
#define GTK_IS_ENTRY_COMPLETION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GTK_TYPE_ENTRY_COMPLETION))
|
|
||||||
#define GTK_ENTRY_COMPLETION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GTK_TYPE_ENTRY_COMPLETION, GtkEntryCompletionClass))
|
|
||||||
|
|
||||||
typedef struct _GtkEntryCompletion GtkEntryCompletion;
|
typedef struct _GtkEntryCompletion GtkEntryCompletion;
|
||||||
typedef struct _GtkEntryCompletionClass GtkEntryCompletionClass;
|
|
||||||
typedef struct _GtkEntryCompletionPrivate GtkEntryCompletionPrivate;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* GtkEntryCompletionMatchFunc:
|
* GtkEntryCompletionMatchFunc:
|
||||||
@ -65,37 +60,6 @@ typedef gboolean (* GtkEntryCompletionMatchFunc) (GtkEntryCompletion *completion
|
|||||||
gpointer user_data);
|
gpointer user_data);
|
||||||
|
|
||||||
|
|
||||||
struct _GtkEntryCompletion
|
|
||||||
{
|
|
||||||
GObject parent_instance;
|
|
||||||
|
|
||||||
/*< private >*/
|
|
||||||
GtkEntryCompletionPrivate *priv;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct _GtkEntryCompletionClass
|
|
||||||
{
|
|
||||||
GObjectClass parent_class;
|
|
||||||
|
|
||||||
gboolean (* match_selected) (GtkEntryCompletion *completion,
|
|
||||||
GtkTreeModel *model,
|
|
||||||
GtkTreeIter *iter);
|
|
||||||
void (* action_activated) (GtkEntryCompletion *completion,
|
|
||||||
gint index_);
|
|
||||||
gboolean (* insert_prefix) (GtkEntryCompletion *completion,
|
|
||||||
const gchar *prefix);
|
|
||||||
gboolean (* cursor_on_match) (GtkEntryCompletion *completion,
|
|
||||||
GtkTreeModel *model,
|
|
||||||
GtkTreeIter *iter);
|
|
||||||
void (* no_matches) (GtkEntryCompletion *completion);
|
|
||||||
|
|
||||||
/* Padding for future expansion */
|
|
||||||
void (*_gtk_reserved0) (void);
|
|
||||||
void (*_gtk_reserved1) (void);
|
|
||||||
void (*_gtk_reserved2) (void);
|
|
||||||
};
|
|
||||||
|
|
||||||
/* core */
|
|
||||||
GDK_AVAILABLE_IN_ALL
|
GDK_AVAILABLE_IN_ALL
|
||||||
GType gtk_entry_completion_get_type (void) G_GNUC_CONST;
|
GType gtk_entry_completion_get_type (void) G_GNUC_CONST;
|
||||||
GDK_AVAILABLE_IN_ALL
|
GDK_AVAILABLE_IN_ALL
|
||||||
|
@ -30,6 +30,34 @@
|
|||||||
|
|
||||||
G_BEGIN_DECLS
|
G_BEGIN_DECLS
|
||||||
|
|
||||||
|
typedef struct _GtkEntryCompletionClass GtkEntryCompletionClass;
|
||||||
|
typedef struct _GtkEntryCompletionPrivate GtkEntryCompletionPrivate;
|
||||||
|
|
||||||
|
struct _GtkEntryCompletion
|
||||||
|
{
|
||||||
|
GObject parent_instance;
|
||||||
|
|
||||||
|
/*< private >*/
|
||||||
|
GtkEntryCompletionPrivate *priv;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct _GtkEntryCompletionClass
|
||||||
|
{
|
||||||
|
GObjectClass parent_class;
|
||||||
|
|
||||||
|
gboolean (* match_selected) (GtkEntryCompletion *completion,
|
||||||
|
GtkTreeModel *model,
|
||||||
|
GtkTreeIter *iter);
|
||||||
|
void (* action_activated) (GtkEntryCompletion *completion,
|
||||||
|
gint index_);
|
||||||
|
gboolean (* insert_prefix) (GtkEntryCompletion *completion,
|
||||||
|
const gchar *prefix);
|
||||||
|
gboolean (* cursor_on_match) (GtkEntryCompletion *completion,
|
||||||
|
GtkTreeModel *model,
|
||||||
|
GtkTreeIter *iter);
|
||||||
|
void (* no_matches) (GtkEntryCompletion *completion);
|
||||||
|
};
|
||||||
|
|
||||||
struct _GtkEntryCompletionPrivate
|
struct _GtkEntryCompletionPrivate
|
||||||
{
|
{
|
||||||
GtkWidget *entry;
|
GtkWidget *entry;
|
||||||
|
@ -521,116 +521,6 @@ test_completion_object_new (void)
|
|||||||
g_object_unref (c);
|
g_object_unref (c);
|
||||||
}
|
}
|
||||||
|
|
||||||
typedef GtkEntryCompletion MyEntryCompletion;
|
|
||||||
typedef GtkEntryCompletionClass MyEntryCompletionClass;
|
|
||||||
|
|
||||||
GType my_entry_completion_get_type (void);
|
|
||||||
|
|
||||||
G_DEFINE_TYPE (MyEntryCompletion, my_entry_completion, GTK_TYPE_ENTRY_COMPLETION)
|
|
||||||
|
|
||||||
static void
|
|
||||||
my_entry_completion_class_init (MyEntryCompletionClass *klass)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
my_entry_completion_init (MyEntryCompletion *c)
|
|
||||||
{
|
|
||||||
GtkCellArea *area;
|
|
||||||
|
|
||||||
if (subclass_init == 0)
|
|
||||||
{
|
|
||||||
/* do nothing to area */
|
|
||||||
}
|
|
||||||
else if (subclass_init == 1)
|
|
||||||
{
|
|
||||||
area = gtk_cell_layout_get_area (GTK_CELL_LAYOUT (c));
|
|
||||||
g_assert (GTK_IS_CELL_AREA_BOX (area));
|
|
||||||
g_assert (gtk_orientable_get_orientation (GTK_ORIENTABLE (area)) == GTK_ORIENTATION_HORIZONTAL);
|
|
||||||
gtk_orientable_set_orientation (GTK_ORIENTABLE (area), GTK_ORIENTATION_VERTICAL);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* test that a completion subclass has an area */
|
|
||||||
static void
|
|
||||||
test_completion_subclass0 (void)
|
|
||||||
{
|
|
||||||
GtkEntryCompletion *c;
|
|
||||||
GtkCellArea *area;
|
|
||||||
|
|
||||||
subclass_init = 0;
|
|
||||||
|
|
||||||
c = g_object_new (my_entry_completion_get_type (), NULL);
|
|
||||||
area = gtk_cell_layout_get_area (GTK_CELL_LAYOUT (c));
|
|
||||||
g_assert (GTK_IS_CELL_AREA_BOX (area));
|
|
||||||
g_assert (gtk_orientable_get_orientation (GTK_ORIENTABLE (area)) == GTK_ORIENTATION_HORIZONTAL);
|
|
||||||
|
|
||||||
g_object_ref_sink (c);
|
|
||||||
g_object_unref (c);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* test that a completion subclass keeps the provided area */
|
|
||||||
static void
|
|
||||||
test_completion_subclass1 (void)
|
|
||||||
{
|
|
||||||
GtkEntryCompletion *c;
|
|
||||||
GtkCellArea *area;
|
|
||||||
|
|
||||||
subclass_init = 0;
|
|
||||||
|
|
||||||
area = gtk_cell_area_box_new ();
|
|
||||||
c = g_object_new (my_entry_completion_get_type (), "cell-area", area, NULL);
|
|
||||||
g_assert (area == gtk_cell_layout_get_area (GTK_CELL_LAYOUT (c)));
|
|
||||||
g_assert (gtk_orientable_get_orientation (GTK_ORIENTABLE (area)) == GTK_ORIENTATION_HORIZONTAL);
|
|
||||||
|
|
||||||
g_object_ref_sink (c);
|
|
||||||
g_object_unref (c);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* test we can access the area in subclass init */
|
|
||||||
static void
|
|
||||||
test_completion_subclass2 (void)
|
|
||||||
{
|
|
||||||
GtkEntryCompletion *c;
|
|
||||||
GtkCellArea *area;
|
|
||||||
|
|
||||||
subclass_init = 1;
|
|
||||||
|
|
||||||
c = g_object_new (my_entry_completion_get_type (), NULL);
|
|
||||||
area = gtk_cell_layout_get_area (GTK_CELL_LAYOUT (c));
|
|
||||||
g_assert (GTK_IS_CELL_AREA_BOX (area));
|
|
||||||
g_assert (gtk_orientable_get_orientation (GTK_ORIENTABLE (area)) == GTK_ORIENTATION_VERTICAL);
|
|
||||||
|
|
||||||
g_object_ref_sink (c);
|
|
||||||
g_object_unref (c);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
test_completion_subclass3_subprocess (void)
|
|
||||||
{
|
|
||||||
GtkEntryCompletion *c;
|
|
||||||
GtkCellArea *area;
|
|
||||||
|
|
||||||
subclass_init = 1;
|
|
||||||
|
|
||||||
area = gtk_cell_area_box_new ();
|
|
||||||
c = g_object_new (my_entry_completion_get_type (), "cell-area", area, NULL);
|
|
||||||
g_assert (area == gtk_cell_layout_get_area (GTK_CELL_LAYOUT (c)));
|
|
||||||
g_assert (gtk_orientable_get_orientation (GTK_ORIENTABLE (area)) == GTK_ORIENTATION_VERTICAL);
|
|
||||||
|
|
||||||
g_object_ref_sink (c);
|
|
||||||
g_object_unref (c);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* test we get a warning if an area is provided, but ignored */
|
|
||||||
static void
|
|
||||||
test_completion_subclass3 (void)
|
|
||||||
{
|
|
||||||
g_test_trap_subprocess ("/tests/completion-subclass3/subprocess", 0, 0);
|
|
||||||
g_test_trap_assert_failed ();
|
|
||||||
g_test_trap_assert_stderr ("*ignoring construct property*");
|
|
||||||
}
|
|
||||||
|
|
||||||
int
|
int
|
||||||
main (int argc, char *argv[])
|
main (int argc, char *argv[])
|
||||||
{
|
{
|
||||||
@ -666,11 +556,6 @@ main (int argc, char *argv[])
|
|||||||
g_test_add_func ("/tests/completion-new", test_completion_new);
|
g_test_add_func ("/tests/completion-new", test_completion_new);
|
||||||
g_test_add_func ("/tests/completion-new-with-area", test_completion_new_with_area);
|
g_test_add_func ("/tests/completion-new-with-area", test_completion_new_with_area);
|
||||||
g_test_add_func ("/tests/completion-object-new", test_completion_object_new);
|
g_test_add_func ("/tests/completion-object-new", test_completion_object_new);
|
||||||
g_test_add_func ("/tests/completion-subclass0", test_completion_subclass0);
|
|
||||||
g_test_add_func ("/tests/completion-subclass1", test_completion_subclass1);
|
|
||||||
g_test_add_func ("/tests/completion-subclass2", test_completion_subclass2);
|
|
||||||
g_test_add_func ("/tests/completion-subclass3", test_completion_subclass3);
|
|
||||||
g_test_add_func ("/tests/completion-subclass3/subprocess", test_completion_subclass3_subprocess);
|
|
||||||
|
|
||||||
return g_test_run();
|
return g_test_run();
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user