jcs
/amend
/amendments
/157
browser+committer: Set TextView tabstop to calculated width
jcs made amendment 157 9 months ago
--- browser.c Fri Oct 25 13:28:38 2024
+++ browser.c Fri Nov 15 14:21:56 2024
@@ -142,6 +142,7 @@ browser_init(struct repo *repo)
justfilename++;
snprintf(title, sizeof(title), "%s: %s", PROGRAM_NAME, justfilename);
CtoPstr(title);
+
browser->win = NewWindow(0L, &bounds, title, false, noGrowDocProc,
(WindowPtr)-1L, true, 0);
if (!browser->win)
@@ -197,7 +198,11 @@ browser_init(struct repo *repo)
SetRect(&padding, 2, 2, 2, 2);
browser->diff_tv = TVNew(&bounds, &padding);
TVLineWrap(browser->diff_tv, false);
- TVTabStop(browser->diff_tv, settings.tabstop);
+ TextFont(DIFF_FONT);
+ TextFace(0);
+ TextSize(DIFF_FONT_SIZE);
+ TVTabStop(browser->diff_tv, (short)settings.tabstop * CharWidth(' '));
+ EraseRect(&bounds);
/* scrollbar for diff text */
bounds.right = browser->win->portRect.right - PADDING;
@@ -397,8 +402,6 @@ void
browser_show_amendment(struct browser *browser,
struct repo_amendment *amendment)
{
- TVTabStop(browser->diff_tv, settings.tabstop);
-
TVClear(browser->diff_tv);
TVUpdateScrollbar(browser->diff_tv, browser->diff_scroller);
@@ -583,6 +586,7 @@ browser_update(struct focusable *focusable, EventRecor
HLock(browser->diff_tv);
r = (*(browser->diff_tv))->view;
HUnlock(browser->diff_tv);
+ EraseRect(&r);
TVUpdate(browser->diff_tv);
InsetRect(&r, -1, -1);
FrameRect(&r);
--- committer.c Fri Oct 25 20:21:01 2024
+++ committer.c Thu Aug 14 17:00:11 2025
@@ -124,7 +124,10 @@ committer_init(struct browser *browser)
SetRect(&padding, 2, 2, 2, 2);
committer->diff_tv = TVNew(&bounds, &padding);
TVLineWrap(committer->diff_tv, false);
- TVTabStop(committer->diff_tv, settings.tabstop);
+ TextFont(DIFF_FONT);
+ TextFace(0);
+ TextSize(DIFF_FONT_SIZE);
+ TVTabStop(committer->diff_tv, (short)settings.tabstop * CharWidth(' '));
TVAutoCalc(committer->diff_tv, false);
/* scrollbar for diff */
@@ -660,7 +663,7 @@ diff_output(const char *format, ...)
void
diff_append_line(char *str, size_t len)
{
- struct TVStyle style;
+ struct TVStyle style = { 0 };
if (committer_diffing == NULL)
panic("diff_append_line without committer_diffing");
--- settings.c Thu Oct 24 10:53:50 2024
+++ settings.c Thu Oct 24 21:39:09 2024
@@ -26,7 +26,6 @@
#include "amend.h"
#include "settings.h"
-#include "tetab.h"
#include "util.h"
enum {
@@ -58,10 +57,10 @@ struct setting {
1, 0, "unknown",
SETTINGS_AUTHOR_ID, offsetof(struct settings, author),
member_size(struct settings, author) },
- { "Tab Width", SETTING_USHORT, 0,
+ { "Tab Stop Width", SETTING_USHORT, 0,
1, 32, "4",
- SETTINGS_TABWIDTH_ID, offsetof(struct settings, tabwidth),
- member_size(struct settings, tabwidth) },
+ SETTINGS_TABSTOP_ID, offsetof(struct settings, tabstop),
+ member_size(struct settings, tabstop) },
{ "Max Amendments to Load", SETTING_USHORT, 0,
1, 65535, "100",
SETTINGS_MAX_AMENDMENTS_ID, offsetof(struct settings, max_amendments),
@@ -123,7 +122,6 @@ settings_load(void)
FSClose(pb.ioParam.ioRefNum);
settings = tsettings;
- TETabWidth = settings.tabwidth;
}
void
@@ -175,8 +173,6 @@ settings_save(struct settings *tsettings)
tsettings->version = SETTINGS_VERSION;
FSWrite(pb.ioParam.ioRefNum, &len, tsettings);
FSClose(pb.ioParam.ioRefNum);
-
- TETabWidth = tsettings->tabwidth;
return;
--- settings.h Thu Oct 24 10:54:10 2024
+++ settings.h Thu Oct 24 21:38:41 2024
@@ -25,7 +25,7 @@ struct settings {
short version;
#define SETTINGS_VERSION 1
char author[32];
- short tabwidth;
+ short tabstop;
short max_amendments;
};