diff --git a/src/ui/sidebarwidget.c b/src/ui/sidebarwidget.c index 4c7435c5..ad23da3e 100644 --- a/src/ui/sidebarwidget.c +++ b/src/ui/sidebarwidget.c @@ -230,7 +230,8 @@ static void updateItems_SidebarWidget_(iSidebarWidget *d) { (iMenuItem[]){ { "Open in New Tab", 0, 0, "bookmark.open newtab:1" }, { "Open in Background Tab", 0, 0, "bookmark.open newtab:2" }, { "---", 0, 0, NULL }, - { "Edit Bookmark...", 0, 0, "bookmark.edit" }, + { "Edit...", 0, 0, "bookmark.edit" }, + { "Duplicate...", 0, 0, "bookmark.dup" }, { "Copy URL", 0, 0, "bookmark.copy" }, { "---", 0, 0, NULL }, { "?", 0, 0, "bookmark.tag tag:subscribed" }, @@ -239,8 +240,8 @@ static void updateItems_SidebarWidget_(iSidebarWidget *d) { { "---", 0, 0, NULL }, { uiTextCaution_ColorEscape "Delete Bookmark", 0, 0, "bookmark.delete" }, { "---", 0, 0, NULL }, - { "Refresh Remote Bookmarks", 0, 0, "bookmarks.reload.remote" } }, - 13); + { "Refresh Remote Sources", 0, 0, "bookmarks.reload.remote" } }, + 14); break; } case history_SidebarMode: { @@ -751,6 +752,22 @@ static iBool processEvent_SidebarWidget_(iSidebarWidget *d, const SDL_Event *ev) } return iTrue; } + else if (isCommand_Widget(w, ev, "bookmark.dup")) { + const iSidebarItem *item = d->contextItem; + if (d->mode == bookmarks_SidebarMode && item) { + setFlags_Widget(w, disabled_WidgetFlag, iTrue); + iBookmark *bm = get_Bookmarks(bookmarks_App(), item->id); + const iBool isRemote = hasTag_Bookmark(bm, "remote"); + iChar icon = isRemote ? 0x1f588 : bm->icon; + iWidget *dlg = makeBookmarkCreation_Widget(&bm->url, &bm->title, icon); + setId_Widget(dlg, format_CStr("bmed.%s", cstr_String(id_Widget(w)))); + if (!isRemote) { + setText_InputWidget(findChild_Widget(dlg, "bmed.tags"), &bm->tags); + } + setFocus_Widget(findChild_Widget(dlg, "bmed.title")); + } + return iTrue; + } else if (isCommand_Widget(w, ev, "bookmark.tag")) { const iSidebarItem *item = d->contextItem; if (d->mode == bookmarks_SidebarMode && item) { @@ -1220,7 +1237,14 @@ static void draw_SidebarItem_(const iSidebarItem *d, iPaint *p, iRect itemRect, init_String(&str); appendChar_String(&str, d->icon ? d->icon : 0x1f588); const iRect iconArea = { addX_I2(pos, gap_UI), init_I2(7 * gap_UI, itemHeight) }; - drawCentered_Text(font, iconArea, iTrue, iconColor, "%s", cstr_String(&str)); + drawCentered_Text(font, + iconArea, + iTrue, + isPressing ? iconColor + : d->icon == 0x2601 /* remote */ ? uiTextCaution_ColorId + : iconColor, + "%s", + cstr_String(&str)); deinit_String(&str); const iInt2 textPos = addY_I2(topRight_Rect(iconArea), (itemHeight - lineHeight_Text(font)) / 2); drawRange_Text(font, textPos, fg, range_String(&d->label)); diff --git a/src/ui/util.c b/src/ui/util.c index 1118758b..ddff096a 100644 --- a/src/ui/util.c +++ b/src/ui/util.c @@ -1216,6 +1216,11 @@ iWidget *makeBookmarkEditor_Widget(void) { return dlg; }  +static void enableSidebars_(void) { + setFlags_Widget(findWidget_App("sidebar"), disabled_WidgetFlag, iFalse); + setFlags_Widget(findWidget_App("sidebar2"), disabled_WidgetFlag, iFalse); +} + static iBool handleBookmarkCreationCommands_SidebarWidget_(iWidget *editor, const char *cmd) { if (equal_Command(cmd, "bmed.accept") || equal_Command(cmd, "cancel")) { if (equal_Command(cmd, "bmed.accept")) { @@ -1230,6 +1235,8 @@ static iBool handleBookmarkCreationCommands_SidebarWidget_(iWidget *editor, cons postCommand_App("bookmarks.changed"); } destroy_Widget(editor); + /* Sidebars are disabled when a dialog is opened. */ + enableSidebars_(); return iTrue; } return iFalse; @@ -1260,8 +1267,7 @@ static iBool handleFeedSettingCommands_(iWidget *dlg, const char *cmd) { if (equal_Command(cmd, "cancel")) { destroy_Widget(dlg); /* Sidebars are disabled when a dialog is opened. */ - setFlags_Widget(findWidget_App("sidebar"), disabled_WidgetFlag, iFalse); - setFlags_Widget(findWidget_App("sidebar2"), disabled_WidgetFlag, iFalse); + enableSidebars_(); return iTrue; } if (equal_Command(cmd, "feedcfg.accept")) { @@ -1297,8 +1303,7 @@ static iBool handleFeedSettingCommands_(iWidget *dlg, const char *cmd) { postCommand_App("bookmarks.changed"); destroy_Widget(dlg); /* Sidebars are disabled when a dialog is opened. */ - setFlags_Widget(findWidget_App("sidebar"), disabled_WidgetFlag, iFalse); - setFlags_Widget(findWidget_App("sidebar2"), disabled_WidgetFlag, iFalse); + enableSidebars_(); return iTrue; } return iFalse; diff --git a/src/ui/window.c b/src/ui/window.c index bc0a622e..5e346108 100644 --- a/src/ui/window.c +++ b/src/ui/window.c @@ -167,7 +167,7 @@ static iMenuItem bookmarksMenuItems_[] = { { "List All", 0, 0, "open url:about:bookmarks" }, { "List by Tag", 0, 0, "open url:about:bookmarks?tags" }, { "List by Creation Time", 0, 0, "open url:about:bookmarks?created" }, - { "Refresh Remote Bookmarks", 0, 0, "bookmarks.reload.remote" }, + { "Refresh Remote Sources", 0, 0, "bookmarks.reload.remote" }, { "---", 0, 0, NULL }, { "Subscribe to This Page...", subscribeToPage_KeyModifier, "feeds.subscribe" }, { "---", 0, 0, NULL },