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:
@@ -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,10 +2311,10 @@ 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);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!control_pressed && tPtr->flags.ownsSelection)
|
if (!control_pressed && tPtr->flags.ownsSelection)
|
||||||
|
|||||||
Reference in New Issue
Block a user