tDon't add a listbox row if we're changing existing - vaccinewars - be a doctor and try to vaccinate the world
 (HTM) git clone git://src.adamsgaard.dk/vaccinewars
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
 (DIR) commit 3de454d0ab7052f5dbbb98742b61f7f23bfce7f7
 (DIR) parent f5de7c748d56a88c479065b9434a2d406d67c452
 (HTM) Author: Ben Webb <ben@salilab.org>
       Date:   Sat, 28 Nov 2020 21:45:41 -0800
       
       Don't add a listbox row if we're changing existing
       
       Only add a new row to the underlying Win32 listbox
       if we're adding a new row to the GtkTreeView, not
       just changing an existing row.
       
       Diffstat:
         M src/gtkport/treeview.c              |      10 +++++++++-
       
       1 file changed, 9 insertions(+), 1 deletion(-)
       ---
 (DIR) diff --git a/src/gtkport/treeview.c b/src/gtkport/treeview.c
       t@@ -360,6 +360,7 @@ void gtk_list_store_set(GtkListStore *list_store, GtkTreeIter *iter, ...)
        {
          va_list ap;
          int colind;
       +  gboolean new_row = TRUE;
          GtkListStoreRow *row = &g_array_index(list_store->rows, GtkListStoreRow,
                                                *iter);
          list_store->need_sort = TRUE;
       t@@ -369,6 +370,9 @@ void gtk_list_store_set(GtkListStore *list_store, GtkTreeIter *iter, ...)
            switch(list_store->coltype[colind]) {
            case G_TYPE_STRING:
              g_free(row->data[colind]);  /* Free any existing string */
       +      if (row->data[colind]) {
       +        new_row = FALSE;
       +      }
              row->data[colind] = g_strdup(va_arg(ap, const char*));
              break;
            case G_TYPE_UINT:
       t@@ -392,7 +396,11 @@ void gtk_list_store_set(GtkListStore *list_store, GtkTreeIter *iter, ...)
        
            if (GTK_WIDGET_REALIZED(widget)) {
              HWND hWnd = widget->hWnd;
       -      mySendMessage(hWnd, LB_INSERTSTRING, (WPARAM)*iter, 1);
       +      if (new_row) {
       +        mySendMessage(hWnd, LB_INSERTSTRING, (WPARAM)*iter, 1);
       +      } else {
       +        InvalidateRect(hWnd, NULL, FALSE);
       +      }
            }
          }
        }