add check whether changed or not.
@@ -217,6 +217,7 @@ | ||
217 | 217 | LINK *lnk; |
218 | 218 | W rectype; |
219 | 219 | UH subtype; |
220 | + Bool changed; | |
220 | 221 | }; |
221 | 222 | |
222 | 223 | LOCAL extbbslist_item_t* extbbslist_sentinelnode(extbbslist_t *list) |
@@ -297,6 +298,7 @@ | ||
297 | 298 | senti = extbbslist_sentinelnode(list); |
298 | 299 | extbbslist_item_QueInsert(item, senti); |
299 | 300 | list->num++; |
301 | + list->changed = True; | |
300 | 302 | |
301 | 303 | return 0; |
302 | 304 | } |
@@ -316,6 +318,7 @@ | ||
316 | 318 | |
317 | 319 | extbbslist_item_delete(item); |
318 | 320 | list->num--; |
321 | + list->changed = True; | |
319 | 322 | |
320 | 323 | return 0; /* TODO */ |
321 | 324 | } |
@@ -333,6 +336,7 @@ | ||
333 | 336 | item = (extbbslist_item_t*)list->sentinel.prev; |
334 | 337 | extbbslist_item_delete(item); |
335 | 338 | } |
339 | + list->changed = True; | |
336 | 340 | } |
337 | 341 | |
338 | 342 | EXPORT W extbbslist_number(extbbslist_t *list) |
@@ -356,6 +360,7 @@ | ||
356 | 360 | extbbslist_item_t *item; |
357 | 361 | W index; |
358 | 362 | } selected; |
363 | + Bool changed; | |
359 | 364 | }; |
360 | 365 | |
361 | 366 | #define EXTBBSLIST_ENTRY_HEIGHT 20 |
@@ -409,6 +414,7 @@ | ||
409 | 414 | senti = extbbslist_editcontext_sentinelnode(ctx); |
410 | 415 | extbbslist_item_QueInsert(item, senti); |
411 | 416 | ctx->num++; |
417 | + ctx->changed = True; | |
412 | 418 | |
413 | 419 | return 0; |
414 | 420 | } |
@@ -423,6 +429,8 @@ | ||
423 | 429 | return -1; /* TODO */ |
424 | 430 | } |
425 | 431 | |
432 | + ctx->changed = True; | |
433 | + | |
426 | 434 | err = extbbslist_item_assigntitle(item, title, title_len); |
427 | 435 | if (err < 0) { |
428 | 436 | return err; |
@@ -577,6 +585,7 @@ | ||
577 | 585 | } else if (ctx->selected.index == i1) { |
578 | 586 | ctx->selected.index = i0; |
579 | 587 | } |
588 | + ctx->changed = True; | |
580 | 589 | |
581 | 590 | if (i0 + 1 == i1) { |
582 | 591 | extbbslist_item_QueRemove(item1); |
@@ -602,6 +611,7 @@ | ||
602 | 611 | } |
603 | 612 | extbbslist_item_delete(item); |
604 | 613 | ctx->num--; |
614 | + ctx->changed = True; | |
605 | 615 | if (ctx->selected.index == i) { |
606 | 616 | ctx->selected.item = NULL; |
607 | 617 | ctx->selected.index = -1; |
@@ -679,6 +689,7 @@ | ||
679 | 689 | ctx->num = 0; |
680 | 690 | ctx->selected.item = NULL; |
681 | 691 | ctx->selected.index = -1; |
692 | + ctx->changed = False; | |
682 | 693 | |
683 | 694 | return ctx; |
684 | 695 | } |
@@ -738,7 +749,7 @@ | ||
738 | 749 | extbbslist_item_t *sentinel, *next; |
739 | 750 | Bool empty; |
740 | 751 | |
741 | - if (update != False) { | |
752 | + if ((update != False)&&(ctx->changed != False)) { | |
742 | 753 | extbbslist_clear(list); |
743 | 754 | |
744 | 755 | sentinel = extbbslist_editcontext_sentinelnode(ctx); |
@@ -755,6 +766,7 @@ | ||
755 | 766 | } else { |
756 | 767 | list->num = 0; |
757 | 768 | } |
769 | + list->changed = True; | |
758 | 770 | } |
759 | 771 | |
760 | 772 | list->edit = NULL; |
@@ -828,6 +840,7 @@ | ||
828 | 840 | list->lnk = db_link; |
829 | 841 | list->rectype = rectype; |
830 | 842 | list->subtype = subtype; |
843 | + list->changed = False; | |
831 | 844 | } |
832 | 845 | |
833 | 846 | LOCAL VOID extbbslist_finalize(extbbslist_t *list) |