[gtk+] flow box: Warn for nonworking configurations



commit c0998598726040ba496d9f442f7ea6baccdf44cd
Author: Matthias Clasen <mclasen redhat com>
Date:   Tue Aug 25 13:28:49 2015 -0400

    flow box: Warn for nonworking configurations
    
    GtkFlowBox sort and filter functionality does not work with
    models. Issue a warning in this case.

 gtk/gtkflowbox.c |   18 ++++++++++++++++++
 1 files changed, 18 insertions(+), 0 deletions(-)
---
diff --git a/gtk/gtkflowbox.c b/gtk/gtkflowbox.c
index e84b359..6b6611e 100644
--- a/gtk/gtkflowbox.c
+++ b/gtk/gtkflowbox.c
@@ -90,6 +90,8 @@ static void gtk_flow_box_bound_model_changed (GListModel *list,
                                               guint       added,
                                               gpointer    user_data);
 
+static void gtk_flow_box_check_model_compat  (GtkFlowBox *box);
+
 static void
 get_current_selection_modifiers (GtkWidget *widget,
                                  gboolean  *modify,
@@ -4254,6 +4256,16 @@ gtk_flow_box_set_vadjustment (GtkFlowBox    *box,
   gtk_container_set_focus_vadjustment (GTK_CONTAINER (box), adjustment);
 }
 
+static void
+gtk_flow_box_check_model_compat (GtkFlowBox *box)
+{
+  GtkFlowBoxPrivate *priv = BOX_PRIV (box);
+
+  if (priv->bound_model &&
+      (priv->sort_func || priv->filter_func))
+    g_warning ("GtkFlowBox with a model will ignore sort and filter functions");
+}
+
 /**
  * gtk_flow_box_bind_model:
  * @box: a #GtkFlowBox
@@ -4309,6 +4321,8 @@ gtk_flow_box_bind_model (GtkFlowBox                 *box,
   priv->create_widget_func_data = user_data;
   priv->create_widget_func_data_destroy = user_data_free_func;
 
+  gtk_flow_box_check_model_compat (box);
+
   g_signal_connect (priv->bound_model, "items-changed", G_CALLBACK (gtk_flow_box_bound_model_changed), box);
   gtk_flow_box_bound_model_changed (model, 0, 0, g_list_model_get_n_items (model), box);
 }
@@ -4860,6 +4874,8 @@ gtk_flow_box_set_filter_func (GtkFlowBox           *box,
   priv->filter_data = user_data;
   priv->filter_destroy = destroy;
 
+  gtk_flow_box_check_model_compat (box);
+
   gtk_flow_box_apply_filter_all (box);
 }
 
@@ -4940,6 +4956,8 @@ gtk_flow_box_set_sort_func (GtkFlowBox         *box,
   priv->sort_data = user_data;
   priv->sort_destroy = destroy;
 
+  gtk_flow_box_check_model_compat (box);
+
   gtk_flow_box_invalidate_sort (box);
 }
 


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