[1mdiff --git a/src/gmdocument.c b/src/gmdocument.c[m
[1mindex 1c7e69be..583679c9 100644[m
[1m--- a/src/gmdocument.c[m
[1m+++ b/src/gmdocument.c[m
[36m@@ -2208,7 +2208,7 @@[m [mstatic void convertMarkdownToGemtext_GmDocument_(iGmDocument *d) {[m
}[m
/* Replace Markdown syntax with equivalent Gemtext, where possible. */[m
replaceRegExp_String(&d->source, iClob(new_RegExp("(\\s*\n){2,}", 0)), "\n\n", NULL, NULL); /* normalize paragraph breaks */[m
[31m- printf("Converted:\n%s", cstr_String(&d->source));[m
[32m+[m[32m// printf("Converted:\n%s", cstr_String(&d->source));[m
d->format = gemini_SourceFormat;[m
}[m
[m
[1mdiff --git a/src/ui/listwidget.c b/src/ui/listwidget.c[m
[1mindex 79e8ca4b..8b7d61e7 100644[m
[1m--- a/src/ui/listwidget.c[m
[1m+++ b/src/ui/listwidget.c[m
[36m@@ -314,6 +314,37 @@[m [mvoid setHoverItem_ListWidget(iListWidget *d, size_t index) {[m
}[m
}[m
[m
[32m+[m[32mstatic void moveCursor_ListWidget_(iListWidget *d, int dir, uint32_t animSpan) {[m
[32m+[m[32m const size_t oldCursor = d->cursorItem;[m
[32m+[m[32m if (isEmpty_ListWidget(d)) {[m
[32m+[m[32m d->cursorItem = iInvalidPos;[m
[32m+[m[32m }[m
[32m+[m[32m else {[m
[32m+[m[32m const int maxItem = numItems_ListWidget(d) - 1;[m
[32m+[m[32m if (d->cursorItem == iInvalidPos) {[m
[32m+[m[32m d->cursorItem = 0;[m
[32m+[m[32m }[m
[32m+[m[32m d->cursorItem = iClamp((int) d->cursorItem + dir, 0, maxItem);[m
[32m+[m[32m while (((const iListItem *) constItem_ListWidget(d, d->cursorItem))->isSeparator &&[m
[32m+[m[32m ((d->cursorItem < maxItem && dir >= 0) || (d->cursorItem > 0 && dir < 0))) {[m
[32m+[m[32m d->cursorItem += (dir >= 0 ? 1 : -1); /* Skip separators. */[m
[32m+[m[32m }[m
[32m+[m[32m }[m[41m [m
[32m+[m[32m if (oldCursor != d->cursorItem) {[m
[32m+[m[32m invalidateItem_ListWidget(d, oldCursor);[m
[32m+[m[32m invalidateItem_ListWidget(d, d->cursorItem);[m
[32m+[m[32m }[m
[32m+[m[32m if (d->cursorItem != iInvalidPos) {[m
[32m+[m[32m scrollToItem_ListWidget(d, d->cursorItem, prefs_App()->uiAnimations ? animSpan : 0);[m
[32m+[m[32m }[m
[32m+[m[32m}[m
[32m+[m
[32m+[m[32mvoid setCursorItem_ListWidget(iListWidget *d, size_t index) {[m
[32m+[m[32m invalidateItem_ListWidget(d, d->cursorItem);[m
[32m+[m[32m d->cursorItem = 0;[m
[32m+[m[32m moveCursor_ListWidget_(d, 0, 0);[m
[32m+[m[32m}[m
[32m+[m
void updateMouseHover_ListWidget(iListWidget *d) {[m
const iInt2 mouse = mouseCoord_Window([m
get_Window(), deviceType_App() == desktop_AppDeviceType ? 0 : SDL_TOUCH_MOUSEID);[m
[36m@@ -418,29 +449,6 @@[m [mstatic iBool isScrollDisabled_ListWidget_(const iListWidget *d, const SDL_Event[m
return iFalse;[m
}[m
[m
[31m-static void moveCursor_ListWidget_(iListWidget *d, int dir, uint32_t animSpan) {[m
[31m- const size_t oldCursor = d->cursorItem;[m
[31m- if (isEmpty_ListWidget(d)) {[m
[31m- d->cursorItem = iInvalidPos;[m
[31m- }[m
[31m- else {[m
[31m- const int maxItem = numItems_ListWidget(d) - 1;[m
[31m- if (d->cursorItem == iInvalidPos) {[m
[31m- d->cursorItem = 0;[m
[31m- }[m
[31m- int cursor = (int) d->cursorItem + dir;[m
[31m- d->cursorItem = iClamp(cursor, 0, maxItem);[m
[31m- /* TODO: skip separator items */[m
[31m- } [m
[31m- if (oldCursor != d->cursorItem) {[m
[31m- invalidateItem_ListWidget(d, oldCursor);[m
[31m- invalidateItem_ListWidget(d, d->cursorItem);[m
[31m- }[m
[31m- if (d->cursorItem != iInvalidPos) {[m
[31m- scrollToItem_ListWidget(d, d->cursorItem, prefs_App()->uiAnimations ? animSpan : 0);[m
[31m- }[m
[31m-}[m
[31m-[m
static int cursorKeyStep_ListWidget_(const iListWidget *d, int sym) {[m
const iWidget *w = constAs_Widget(d);[m
const int dir = (sym == SDLK_UP || sym == SDLK_PAGEUP || sym == SDLK_HOME ? -1 : 1);[m
[1mdiff --git a/src/ui/listwidget.h b/src/ui/listwidget.h[m
[1mindex cb690983..a9f88606 100644[m
[1m--- a/src/ui/listwidget.h[m
[1m+++ b/src/ui/listwidget.h[m
[36m@@ -100,6 +100,7 @@[m [mvoid scrollOffsetSpan_ListWidget (iListWidget *, int offset, uint32_t span);[m
void updateVisible_ListWidget (iListWidget *);[m
void updateMouseHover_ListWidget (iListWidget *);[m
void setHoverItem_ListWidget (iListWidget *, size_t index);[m
[32m+[m[32mvoid setCursorItem_ListWidget (iListWidget *, size_t index);[m
[m
void sort_ListWidget (iListWidget *, int (*cmp)(const iListItem **item1, const iListItem **item2));[m
[m
[1mdiff --git a/src/ui/sidebarwidget.c b/src/ui/sidebarwidget.c[m
[1mindex 3d5b2af4..e3fea01f 100644[m
[1m--- a/src/ui/sidebarwidget.c[m
[1m+++ b/src/ui/sidebarwidget.c[m
[36m@@ -841,10 +841,8 @@[m [mvoid init_SidebarWidget(iSidebarWidget *d, enum iSidebarSide side) {[m
d->itemFonts[1] = uiLabelBigBold_FontId;[m
}[m
d->widthAsGaps = 73.0f;[m
[31m-#elif defined (iPlatformTerminal)[m
[31m- d->widthAsGaps = 35.0f;[m
#else[m
[31m- d->widthAsGaps = 60.0f;[m
[32m+[m[32m d->widthAsGaps = isTerminal_App() ? 35.0f : 60.0f;[m
#endif[m
setFlags_Widget(w, fixedWidth_WidgetFlag, iTrue);[m
iWidget *vdiv = makeVDiv_Widget();[m
[36m@@ -1211,6 +1209,9 @@[m [mstatic iBool handleSidebarCommand_SidebarWidget_(iSidebarWidget *d, const char *[m
postCommandf_App("%s.mode.changed arg:%d", cstr_String(id_Widget(w)), d->mode);[m
if (isTerminal_App()) {[m
setFocus_Widget(as_Widget(list_SidebarWidget(d)));[m
[32m+[m[32m if (wasChanged) {[m
[32m+[m[32m setCursorItem_ListWidget(list_SidebarWidget(d), 0);[m
[32m+[m[32m }[m
}[m
}[m
refresh_Widget(findChild_Widget(w, "buttons"));[m
[36m@@ -1852,6 +1853,11 @@[m [mstatic iBool processEvent_SidebarWidget_(iSidebarWidget *d, const SDL_Event *ev)[m
refresh_Widget(d);[m
return iTrue;[m
}[m
[32m+[m[32m else if (equal_Command(cmd, "zoom.delta") && !isVisible_Widget(w) &&[m
[32m+[m[32m d->side == left_SidebarSide) {[m
[32m+[m[32m postCommand_Widget(w, "sidebar.toggle");[m
[32m+[m[32m return iTrue;[m
[32m+[m[32m }[m
#endif [m
}[m
if (ev->type == SDL_MOUSEMOTION &&[m
[1mdiff --git a/src/ui/uploadwidget.c b/src/ui/uploadwidget.c[m
[1mindex cce7dce8..596236ac 100644[m
[1m--- a/src/ui/uploadwidget.c[m
[1m+++ b/src/ui/uploadwidget.c[m
[36m@@ -290,7 +290,6 @@[m [mvoid init_UploadWidget(iUploadWidget *d) {[m
d->ident = makeMenuButton_LabelWidget("${upload.id}", items, numItems);[m
setTextCStr_LabelWidget(d->ident, items[findWidestLabel_MenuItem(items, numItems)].label);[m
//setFixedSize_Widget(as_Widget(d->ident), init_I2(50 * gap_UI, ));[m
[31m- setBackgroundColor_Widget(as_Widget(d->ident), red_ColorId);[m
iWidget *identHeading = addChild_Widget(headings, iClob(makeHeading_Widget("${upload.id}")));[m
identHeading->sizeRef = as_Widget(d->ident);[m
setId_Widget(addChildFlags_Widget(values, iClob(d->ident), alignLeft_WidgetFlag), "upload.id");[m
[1mdiff --git a/src/ui/util.c b/src/ui/util.c[m
[1mindex 44d2778d..db0249f6 100644[m
[1m--- a/src/ui/util.c[m
[1m+++ b/src/ui/util.c[m
[36m@@ -1146,7 +1146,7 @@[m [mvoid unselectAllNativeMenuItems_Widget(iWidget *menu) {[m
}[m
[m
iLocalDef iBool isUsingMenuPopupWindows_(void) {[m
[31m-#if defined (LAGRANGE_ENABLE_POPUP_MENUS)[m
[32m+[m[32m#if defined (LAGRANGE_ENABLE_POPUP_MENUS) && !defined (iPlatformTerminal)[m
return deviceType_App() == desktop_AppDeviceType;[m
#else[m
return iFalse;[m
text/plain
This content has been proxied by September (3851b).