diff options
author | Cyrille Bagard <nocbos@gmail.com> | 2018-06-04 00:27:13 (GMT) |
---|---|---|
committer | Cyrille Bagard <nocbos@gmail.com> | 2018-06-04 00:27:13 (GMT) |
commit | a7f73441a0d466824798a421f369628db0184030 (patch) | |
tree | 762b100af90b94f71597436fbd6d2349dcde7b42 /src/gtkext/gtkdockable.c | |
parent | 0d10ebabd650128271650ca03d6e0b0ac9facc5c (diff) |
Loaded the biggest panel contents using threads.
Diffstat (limited to 'src/gtkext/gtkdockable.c')
-rw-r--r-- | src/gtkext/gtkdockable.c | 65 |
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); |