summaryrefslogtreecommitdiff
path: root/src/gtkext/gtkdockable.c
diff options
context:
space:
mode:
authorCyrille Bagard <nocbos@gmail.com>2018-06-04 00:27:13 (GMT)
committerCyrille Bagard <nocbos@gmail.com>2018-06-04 00:27:13 (GMT)
commita7f73441a0d466824798a421f369628db0184030 (patch)
tree762b100af90b94f71597436fbd6d2349dcde7b42 /src/gtkext/gtkdockable.c
parent0d10ebabd650128271650ca03d6e0b0ac9facc5c (diff)
Loaded the biggest panel contents using threads.
Diffstat (limited to 'src/gtkext/gtkdockable.c')
-rw-r--r--src/gtkext/gtkdockable.c65
1 files changed, 14 insertions, 51 deletions
diff --git a/src/gtkext/gtkdockable.c b/src/gtkext/gtkdockable.c
index cad9b43..3056402 100644
--- a/src/gtkext/gtkdockable.c
+++ b/src/gtkext/gtkdockable.c
@@ -33,6 +33,7 @@
#include "easygtk.h"
#include "gtkdockable-int.h"
+#include "tmgt.h"
@@ -197,11 +198,14 @@ const char *gtk_dockable_get_desc(const GtkDockable *dockable)
bool gtk_dockable_can_search(const GtkDockable *dockable)
{
+ bool result; /* Indication à retourner */
GtkDockableIface *iface; /* Interface utilisée */
iface = GTK_DOCKABLE_GET_IFACE(dockable);
- return iface->can_search;
+ result = iface->can_search(dockable);
+
+ return result;
}
@@ -220,11 +224,14 @@ bool gtk_dockable_can_search(const GtkDockable *dockable)
bool gtk_dockable_can_be_closed(const GtkDockable *dockable)
{
+ bool result; /* Indication à retourner */
GtkDockableIface *iface; /* Interface utilisée */
iface = GTK_DOCKABLE_GET_IFACE(dockable);
- return iface->can_be_closed;
+ result = iface->can_be_closed(dockable);
+
+ return result;
}
@@ -256,7 +263,7 @@ GtkWidget *gtk_dockable_build_widget(GtkDockable *dockable)
/* Encapsulation avec un panneau coulissant ? */
- if (iface->can_search)
+ if (gtk_dockable_can_search(dockable))
{
revealer = gtk_revealer_new();
gtk_widget_show(revealer);
@@ -305,7 +312,7 @@ GtkWidget *gtk_dockable_decompose(GtkDockable *dockable, GtkWidget **support)
result = iface->get_widget(dockable);
- if (iface->can_search)
+ if (gtk_dockable_can_search(dockable))
result = gtk_widget_get_parent(result); /* GtkBox */
if (support != NULL)
@@ -407,56 +414,12 @@ static GtkWidget *build_search_area(GtkDockable *dockable, GtkWidget **search)
static void on_dockable_search_changed(GtkSearchEntry *entry, GtkDockable *dockable)
{
- regex_t *filter; /* Expression régulière */
- const gchar *text; /* Texte de l'utilisateur */
- GtkStyleContext *context; /* Contexte du thème actuel */
- int ret; /* Bilan de mise en place */
+ char *filter; /* Nouveau filtre à considérer */
GtkDockableIface *iface; /* Interface utilisée */
- filter = g_object_get_data(G_OBJECT(entry), "preg_filter");
-
- text = gtk_entry_get_text(GTK_ENTRY(entry));
-
- context = gtk_widget_get_style_context(GTK_WIDGET(entry));
-
- /* Mise en place d'une nouvelle règle */
- if (strlen(text) > 0)
- {
- if (filter == NULL)
- {
- void destroy_filter(regex_t *preg)
- {
- regfree(preg);
- free(preg);
- }
-
- filter = (regex_t *)calloc(1, sizeof(regex_t));
- g_object_set_data_full(G_OBJECT(entry), "preg_filter", filter, (GDestroyNotify)destroy_filter);
-
- }
- else
- regfree(filter);
-
- ret = regcomp(filter, text, REG_EXTENDED);
-
- if (ret != 0)
- {
- gtk_style_context_add_class(context, "filter-error");
- return;
- }
-
- }
-
- /* Suppresion de toute règle existante */
- else if (filter != NULL)
- {
- g_object_set_data(G_OBJECT(entry), "preg_filter", NULL);
- filter = NULL;
- }
-
- /* Mises à jour */
+ filter = NULL;
- gtk_style_context_remove_class(context, "filter-error");
+ update_regex_on_search_entry_changed(entry, &filter);
iface = GTK_DOCKABLE_GET_IFACE(dockable);