1
0
mirror of https://github.com/gryf/wmaker.git synced 2026-01-03 04:14:20 +01:00

WINGs: merge duplicate code from wtext

This patch is saving about 30 duplicate code lines from
WMPrependTextBlock and WMAppendTextBlock to create
a static fct called prepareTextBlock.
This commit is contained in:
David Maciejak
2014-08-24 08:55:59 +08:00
committed by Carlos R. Mafra
parent adebdf41c6
commit 238b8ed3ca

View File

@@ -3322,13 +3322,8 @@ WMGetTextBlockProperties(WMText * tPtr, void *vtb, unsigned int *first,
*margins = tPtr->margins[tb->marginN];
}
void WMPrependTextBlock(WMText * tPtr, void *vtb)
static int prepareTextBlock(WMText *tPtr, TextBlock *tb)
{
TextBlock *tb = (TextBlock *) vtb;
if (!tb)
return;
if (tb->graphic) {
if (tb->object) {
WMWidget *w = tb->d.widget;
@@ -3348,13 +3343,24 @@ void WMPrependTextBlock(WMText * tPtr, void *vtb)
tb->next = tb->prior = NULL;
tb->first = True;
tPtr->lastTextBlock = tPtr->firstTextBlock = tPtr->currentTextBlock = tb;
return;
return 0;
}
if (!tb->first) {
tb->marginN = tPtr->currentTextBlock->marginN;
}
return 1;
}
void WMPrependTextBlock(WMText *tPtr, void *vtb)
{
TextBlock *tb = (TextBlock *) vtb;
if (!tb || !prepareTextBlock(tPtr, tb))
return;
tb->next = tPtr->currentTextBlock;
tb->prior = tPtr->currentTextBlock->prior;
if (tPtr->currentTextBlock->prior)
@@ -3367,39 +3373,13 @@ void WMPrependTextBlock(WMText * tPtr, void *vtb)
tPtr->currentTextBlock = tb;
}
void WMAppendTextBlock(WMText * tPtr, void *vtb)
void WMAppendTextBlock(WMText *tPtr, void *vtb)
{
TextBlock *tb = (TextBlock *) vtb;
if (!tb)
if (!tb || !prepareTextBlock(tPtr, tb))
return;
if (tb->graphic) {
if (tb->object) {
WMWidget *w = tb->d.widget;
if (W_CLASS(w) != WC_TextField && W_CLASS(w) != WC_Text) {
(W_VIEW(w))->attribs.cursor = tPtr->view->screen->defaultCursor;
(W_VIEW(w))->attribFlags |= CWOverrideRedirect | CWCursor;
}
}
WMAddToArray(tPtr->gfxItems, (void *)tb);
tPtr->tpos = 1;
} else {
tPtr->tpos = tb->used;
}
if (!tPtr->lastTextBlock || !tPtr->firstTextBlock) {
tb->next = tb->prior = NULL;
tb->first = True;
tPtr->lastTextBlock = tPtr->firstTextBlock = tPtr->currentTextBlock = tb;
return;
}
if (!tb->first) {
tb->marginN = tPtr->currentTextBlock->marginN;
}
tb->next = tPtr->currentTextBlock->next;
tb->prior = tPtr->currentTextBlock;
if (tPtr->currentTextBlock->next)