Lagrange [release]

SidebarWidget: Editing folder names

a50e235a03884ff2aef9d40bd67e2398b65eddf1
diff --git a/src/ui/sidebarwidget.c b/src/ui/sidebarwidget.c
index 72205912..aaa6e9e9 100644
--- a/src/ui/sidebarwidget.c
+++ b/src/ui/sidebarwidget.c
@@ -994,22 +994,24 @@ iBool handleBookmarkEditorCommands_SidebarWidget_(iWidget *editor, const char *c
             iAssert(item); /* hover item cannot have been changed */
             iBookmark *bm = get_Bookmarks(bookmarks_App(), item->id);
             set_String(&bm->title, title);
-            set_String(&bm->url, url);
-            set_String(&bm->tags, tags);
-            if (isEmpty_String(icon)) {
-                removeTag_Bookmark(bm, userIcon_BookmarkTag);
-                bm->icon = 0;
-            }
-            else {
-                addTagIfMissing_Bookmark(bm, userIcon_BookmarkTag);
-                bm->icon = first_String(icon);
-            }
-            addOrRemoveTag_Bookmark(bm, homepage_BookmarkTag,
-                                    isSelected_Widget(findChild_Widget(editor, "bmed.tag.home")));
-            addOrRemoveTag_Bookmark(bm, remoteSource_BookmarkTag,
-                                    isSelected_Widget(findChild_Widget(editor, "bmed.tag.remote")));
-            addOrRemoveTag_Bookmark(bm, linkSplit_BookmarkTag,
-                                    isSelected_Widget(findChild_Widget(editor, "bmed.tag.linksplit")));
+            if (!isFolder_Bookmark(bm)) {
+                set_String(&bm->url, url);
+                set_String(&bm->tags, tags);
+                if (isEmpty_String(icon)) {
+                    removeTag_Bookmark(bm, userIcon_BookmarkTag);
+                    bm->icon = 0;
+                }
+                else {
+                    addTagIfMissing_Bookmark(bm, userIcon_BookmarkTag);
+                    bm->icon = first_String(icon);
+                }
+                addOrRemoveTag_Bookmark(bm, homepage_BookmarkTag,
+                                        isSelected_Widget(findChild_Widget(editor, "bmed.tag.home")));
+                addOrRemoveTag_Bookmark(bm, remoteSource_BookmarkTag,
+                                        isSelected_Widget(findChild_Widget(editor, "bmed.tag.remote")));
+                addOrRemoveTag_Bookmark(bm, linkSplit_BookmarkTag,
+                                        isSelected_Widget(findChild_Widget(editor, "bmed.tag.linksplit")));
+            }            
             postCommand_App("bookmarks.changed");
         }
         setupSheetTransition_Mobile(editor, iFalse);
@@ -1280,18 +1282,32 @@ static iBool processEvent_SidebarWidget_(iSidebarWidget *d, const SDL_Event *ev)
                 setId_Widget(dlg, format_CStr("bmed.%s", cstr_String(id_Widget(w))));
                 iBookmark *bm = get_Bookmarks(bookmarks_App(), item->id);
                 setText_InputWidget(findChild_Widget(dlg, "bmed.title"), &bm->title);
-                setText_InputWidget(findChild_Widget(dlg, "bmed.url"), &bm->url);
-                setText_InputWidget(findChild_Widget(dlg, "bmed.tags"), &bm->tags);
-                if (hasTag_Bookmark(bm, userIcon_BookmarkTag)) {
-                    setText_InputWidget(findChild_Widget(dlg, "bmed.icon"),
-                                        collect_String(newUnicodeN_String(&bm->icon, 1)));
+                iInputWidget *urlInput        = findChild_Widget(dlg, "bmed.url");
+                iInputWidget *tagsInput       = findChild_Widget(dlg, "bmed.tags");
+                iInputWidget *iconInput       = findChild_Widget(dlg, "bmed.icon");
+                iWidget *     homeTag         = findChild_Widget(dlg, "bmed.tag.home");
+                iWidget *     remoteSourceTag = findChild_Widget(dlg, "bmed.tag.remote");
+                iWidget *     linkSplitTag    = findChild_Widget(dlg, "bmed.tag.linksplit");
+                if (!isFolder_Bookmark(bm)) {
+                    setText_InputWidget(urlInput, &bm->url);
+                    setText_InputWidget(tagsInput, &bm->tags);
+                    if (hasTag_Bookmark(bm, userIcon_BookmarkTag)) {
+                        setText_InputWidget(iconInput,
+                                            collect_String(newUnicodeN_String(&bm->icon, 1)));
+                    }
+                    setToggle_Widget(homeTag, hasTag_Bookmark(bm, homepage_BookmarkTag));
+                    setToggle_Widget(remoteSourceTag, hasTag_Bookmark(bm, remoteSource_BookmarkTag));
+                    setToggle_Widget(linkSplitTag, hasTag_Bookmark(bm, linkSplit_BookmarkTag));
+                }
+                else {
+                    setFlags_Widget(findChild_Widget(dlg, "bmed.special"),
+                                    hidden_WidgetFlag | disabled_WidgetFlag,
+                                    iTrue);
+                    iAnyObject *notNeeded[] = { urlInput, tagsInput, iconInput, NULL };
+                    iForIndices(i, notNeeded) {
+                        setFlags_Widget(notNeeded[i], disabled_WidgetFlag, iTrue);
+                    }
                 }
-                setToggle_Widget(findChild_Widget(dlg, "bmed.tag.home"),
-                                 hasTag_Bookmark(bm, homepage_BookmarkTag));
-                setToggle_Widget(findChild_Widget(dlg, "bmed.tag.remote"),
-                                 hasTag_Bookmark(bm, remoteSource_BookmarkTag));
-                setToggle_Widget(findChild_Widget(dlg, "bmed.tag.linksplit"),
-                                 hasTag_Bookmark(bm, linkSplit_BookmarkTag));
                 setCommandHandler_Widget(dlg, handleBookmarkEditorCommands_SidebarWidget_);
                 setFocus_Widget(findChild_Widget(dlg, "bmed.title"));
             }
diff --git a/src/ui/util.c b/src/ui/util.c
index adee2ee5..80bd5d44 100644
--- a/src/ui/util.c
+++ b/src/ui/util.c
@@ -2655,7 +2655,9 @@ iWidget *makeBookmarkEditor_Widget(void) {
     addDialogInputWithHeading_(headings, values, "${dlg.bookmark.icon}",  "bmed.icon",  iClob(inputs[3] = new_InputWidget(1)));
     /* Buttons for special tags. */
     addChild_Widget(dlg, iClob(makePadding_Widget(gap_UI)));
-    addChild_Widget(dlg, iClob(makeTwoColumns_Widget(&headings, &values)));
+    iWidget *special = addChild_Widget(dlg, iClob(makeTwoColumns_Widget(&headings, &values)));
+    setFlags_Widget(special, collapse_WidgetFlag, iTrue);
+    setId_Widget(special, "bmed.special");
     makeTwoColumnHeading_("${heading.bookmark.tags}", headings, values);
     addDialogToggle_(headings, values, "${bookmark.tag.home}", "bmed.tag.home");
     addDialogToggle_(headings, values, "${bookmark.tag.remote}", "bmed.tag.remote");