This patch is saving about 30 duplicate code lines from
WMPrependTextBlock and WMAppendTextBlock to create
a static fct called prepareTextBlock.

---
 WINGs/wtext.c | 50 +++++++++++++++-----------------------------------
 1 file changed, 15 insertions(+), 35 deletions(-)

diff --git a/WINGs/wtext.c b/WINGs/wtext.c
index 734dc8b..5981de3 100644
--- a/WINGs/wtext.c
+++ b/WINGs/wtext.c
@@ -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)
--

Attachment: 0001-WINGs-merge-duplicate-code-from-wtext.patch
Description: Binary data

Reply via email to