1
0
mirror of https://github.com/gryf/wmaker.git synced 2025-12-21 13:28:05 +01:00

fixed reqBlockSize... sometimes X%Y was zero... very bad

This commit is contained in:
nwanua
2001-02-09 17:06:15 +00:00
parent 21ab029532
commit e4ce88e7f1

View File

@@ -1806,9 +1806,8 @@ W_ViewDelegate _TextViewDelegate =
NULL, NULL,
}; };
/* nice, divisble-by-16 blocks */ #define TEXT_BUFFER_INCR 8
#define reqBlockSize(requested) (requested + 16 - (requested%16)) #define reqBlockSize(requested) (requested + TEXT_BUFFER_INCR)
static void static void
clearText(Text *tPtr) clearText(Text *tPtr)
@@ -1838,7 +1837,6 @@ deleteTextInteractively(Text *tPtr, KeySym ksym)
Bool wasFirst = 0; Bool wasFirst = 0;
if (!tPtr->flags.editable) { if (!tPtr->flags.editable) {
XBell(tPtr->view->screen->display, 0);
return; return;
} }
@@ -1919,7 +1917,6 @@ insertTextInteractively(Text *tPtr, char *text, int len)
char *newline = NULL; char *newline = NULL;
if (!tPtr->flags.editable) { if (!tPtr->flags.editable) {
XBell(tPtr->view->screen->display, 0);
return; return;
} }
@@ -1993,6 +1990,7 @@ insertTextInteractively(Text *tPtr, char *text, int len)
} else { } else {
if (tb->used + len >= tb->allocated) { if (tb->used + len >= tb->allocated) {
tb->allocated = reqBlockSize(tb->used+len); tb->allocated = reqBlockSize(tb->used+len);
printf("realloced %d... %d\n", tb->allocated, tb->used+len);
tb->text = wrealloc(tb->text, tb->allocated); tb->text = wrealloc(tb->text, tb->allocated);
} }
@@ -2222,14 +2220,17 @@ printf("fontChanged\n");
static void static void
handleTextKeyPress(Text *tPtr, XEvent *event) handleTextKeyPress(Text *tPtr, XEvent *event)
{ {
char buffer[2]; char buffer[64];
KeySym ksym; KeySym ksym;
int control_pressed = False; int control_pressed = False;
TextBlock *tb = NULL; TextBlock *tb = NULL;
if (((XKeyEvent *) event)->state & ControlMask) if (((XKeyEvent *) event)->state & ControlMask)
control_pressed = True; control_pressed = True;
buffer[XLookupString(&event->xkey, buffer, 1, &ksym, NULL)] = 0; buffer[XLookupString(&event->xkey, buffer, 63, &ksym, NULL)] = 0;
if(!*buffer)
return;
switch(ksym) { switch(ksym) {
@@ -2298,10 +2299,10 @@ R_imaGFX: if(tb->next) {
break; break;
case XK_Return: case XK_Return:
buffer[0] = '\n'; *buffer = '\n';
default: default:
if (buffer[0] != 0 && !control_pressed) { if (*buffer != 0 && !control_pressed) {
insertTextInteractively(tPtr, buffer, 1); insertTextInteractively(tPtr, buffer, strlen(buffer));
updateCursorPosition(tPtr); updateCursorPosition(tPtr);
paintText(tPtr); paintText(tPtr);
@@ -2310,7 +2311,7 @@ R_imaGFX: if(tb->next) {
WMShowTextRuler(tPtr, i); WMShowTextRuler(tPtr, i);
tPtr->flags.rulerShown = i; tPtr->flags.rulerShown = i;
} }
else if (control_pressed && buffer[0] == '') else if (control_pressed && *buffer == '')
XBell(tPtr->view->screen->display, 0); XBell(tPtr->view->screen->display, 0);
else else
WMRelayToNextResponder(tPtr->view, event); WMRelayToNextResponder(tPtr->view, event);