>From 7cf0cdd46cd50aa23a568cd9371588c11e57dcc6 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?"Rodolfo=20Garc=C3=ADa=20Pe=C3=B1as=20(kix)"?= <[email protected]>
Date: Wed, 6 Jun 2012 07:50:05 +0200
Subject: [PATCH 02/10] Function wDefaultFillAttributes() rewrited

The function wDefaultFillAttributes can be changed a lot:

1. Initialitation to NULL: If the pointers are initialized to NULL
   then, the "if's" don't need the else block:

   WMPropList *value, *dw, *dc, *dn, *da;
   dw = dc = dn = da = NULL;

   if's:

   = if (instance)
   =     key2 = WMCreatePLString(instance);
   - else
   -     key2 = NULL;

2. Added StrConcatDot in the class + instance block:

   = if (class && instance) {
   +     buffer = StrConcatDot(instance, class);
   -     buffer = wmalloc(strlen(class) + strlen(instance) + 2);
   -     sprintf(buffer, "%s.%s", instance, class);

3. init_wdefaults(scr); moved above. This function is used only
   to load the default value "AnyWindow" (value "*"), to search
   the default value. Can be moved above without problems.

4. Preprocessor code of APPLY_VAL moved at file top.

5. New function get_value_from_instanceclass() to do the rest of
   the (repetitive) code. This function is called to create the
   proplist, search the value, and return the proplist.

EXTRA:

1. Added StrConcatDot (like dot 2) in wDefaultChangeIcon()
2. Added a comment in get_value()
---
 src/wdefaults.c |   88 ++++++++++++++++++++++++++-----------------------------
 1 file changed, 42 insertions(+), 46 deletions(-)

diff --git a/src/wdefaults.c b/src/wdefaults.c
index 8235e97..5c6f9b6 100644
--- a/src/wdefaults.c
+++ b/src/wdefaults.c
@@ -42,6 +42,10 @@
 #include "defaults.h"
 #include "icon.h"
 
+#define APPLY_VAL(value, flag, attrib) \
+    if (value) {attr->flag = getBool(attrib, value); \
+    if (mask) mask->flag = 1;}
+
 /* Global stuff */
 extern WPreferences wPreferences;
 extern WDDomain *WDWindowAttributes;
@@ -125,6 +129,7 @@ static void init_wdefaults(WScreen * scr)
        No = WMCreatePLString("No");
 }
 
+/* Returns the correct WMPropList, using instance+class or instance, or class, 
or default */
 static WMPropList *get_value(WMPropList * dict_win, WMPropList * dict_class, 
WMPropList * dict_name,
                             WMPropList * dict_any, WMPropList * option, 
WMPropList * default_value,
                             Bool useGlobalDefault)
@@ -161,6 +166,28 @@ static WMPropList *get_value(WMPropList * dict_win, 
WMPropList * dict_class, WMP
        return default_value;
 }
 
+static WMPropList *get_value_from_instanceclass(char *value)
+{
+       WMPropList *key, *val = NULL;
+
+       if (!value)
+               return NULL;
+
+       key = WMCreatePLString(value);
+
+       WMPLSetCaseSensitive(True);
+
+       if (WDWindowAttributes->dictionary)
+               val = key ? 
WMGetFromPLDictionary(WDWindowAttributes->dictionary, key) : NULL;
+
+       if (key)
+               WMReleasePropList(key);
+
+       WMPLSetCaseSensitive(False);
+
+       return val;
+}
+
 /*
  *----------------------------------------------------------------------
  * wDefaultFillAttributes--
@@ -176,58 +203,27 @@ void
 wDefaultFillAttributes(WScreen * scr, char *instance, char *class,
                       WWindowAttributes * attr, WWindowAttributes * mask, Bool 
useGlobalDefault)
 {
-       WMPropList *value, *key1, *key2, *key3, *dw, *dc, *dn, *da;
+       WMPropList *value, *dw, *dc, *dn, *da;
+       char *buffer;
 
-       if (class && instance) {
-               char *buffer;
+       dw = dc = dn = da = NULL;
 
-               buffer = wmalloc(strlen(class) + strlen(instance) + 2);
-               sprintf(buffer, "%s.%s", instance, class);
-               key1 = WMCreatePLString(buffer);
+       if (!ANoTitlebar)
+               init_wdefaults(scr);
+
+       if (class && instance) {
+               buffer = StrConcatDot(instance, class);
+               dw = get_value_from_instanceclass(buffer);
                wfree(buffer);
-       } else {
-               key1 = NULL;
        }
 
-       if (instance)
-               key2 = WMCreatePLString(instance);
-       else
-               key2 = NULL;
-
-       if (class)
-               key3 = WMCreatePLString(class);
-       else
-               key3 = NULL;
-
-       if (!ANoTitlebar)
-               init_wdefaults(scr);
+       dn = get_value_from_instanceclass(instance);
+       dc = get_value_from_instanceclass(class);
 
        WMPLSetCaseSensitive(True);
 
-       if (WDWindowAttributes->dictionary) {
-               dw = key1 ? 
WMGetFromPLDictionary(WDWindowAttributes->dictionary, key1) : NULL;
-               dn = key2 ? 
WMGetFromPLDictionary(WDWindowAttributes->dictionary, key2) : NULL;
-               dc = key3 ? 
WMGetFromPLDictionary(WDWindowAttributes->dictionary, key3) : NULL;
-               if (useGlobalDefault)
-                       da = 
WMGetFromPLDictionary(WDWindowAttributes->dictionary, AnyWindow);
-               else
-                       da = NULL;
-       } else {
-               dw = NULL;
-               dn = NULL;
-               dc = NULL;
-               da = NULL;
-       }
-       if (key1)
-               WMReleasePropList(key1);
-       if (key2)
-               WMReleasePropList(key2);
-       if (key3)
-               WMReleasePropList(key3);
-
-#define APPLY_VAL(value, flag, attrib) \
-    if (value) {attr->flag = getBool(attrib, value); \
-    if (mask) mask->flag = 1;}
+       if ((WDWindowAttributes->dictionary) && (useGlobalDefault))
+               da = WMGetFromPLDictionary(WDWindowAttributes->dictionary, 
AnyWindow);
 
        /* get the data */
        value = get_value(dw, dc, dn, da, ANoTitlebar, No, useGlobalDefault);
@@ -477,8 +473,8 @@ void wDefaultChangeIcon(WScreen * scr, char *instance, char 
*class, char *file)
 
        if (instance && class) {
                char *buffer;
-               buffer = wmalloc(strlen(instance) + strlen(class) + 2);
-               sprintf(buffer, "%s.%s", instance, class);
+
+               buffer = StrConcatDot(instance, class);
                key = WMCreatePLString(buffer);
                wfree(buffer);
        } else if (instance) {
-- 
1.7.10

-- 
||// //\\// Rodolfo "kix" Garcia
||\\// //\\ http://www.kix.es/
>From 7cf0cdd46cd50aa23a568cd9371588c11e57dcc6 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?"Rodolfo=20Garc=C3=ADa=20Pe=C3=B1as=20(kix)"?= <[email protected]>
Date: Wed, 6 Jun 2012 07:50:05 +0200
Subject: [PATCH 02/10] Function wDefaultFillAttributes() rewrited

The function wDefaultFillAttributes can be changed a lot:

1. Initialitation to NULL: If the pointers are initialized to NULL
   then, the "if's" don't need the else block:

   WMPropList *value, *dw, *dc, *dn, *da;
   dw = dc = dn = da = NULL;

   if's:

   = if (instance)
   =     key2 = WMCreatePLString(instance);
   - else
   -     key2 = NULL;

2. Added StrConcatDot in the class + instance block:

   = if (class && instance) {
   +     buffer = StrConcatDot(instance, class);
   -     buffer = wmalloc(strlen(class) + strlen(instance) + 2);
   -     sprintf(buffer, "%s.%s", instance, class);

3. init_wdefaults(scr); moved above. This function is used only
   to load the default value "AnyWindow" (value "*"), to search
   the default value. Can be moved above without problems.

4. Preprocessor code of APPLY_VAL moved at file top.

5. New function get_value_from_instanceclass() to do the rest of
   the (repetitive) code. This function is called to create the
   proplist, search the value, and return the proplist.

EXTRA:

1. Added StrConcatDot (like dot 2) in wDefaultChangeIcon()
2. Added a comment in get_value()
---
 src/wdefaults.c |   88 ++++++++++++++++++++++++++-----------------------------
 1 file changed, 42 insertions(+), 46 deletions(-)

diff --git a/src/wdefaults.c b/src/wdefaults.c
index 8235e97..5c6f9b6 100644
--- a/src/wdefaults.c
+++ b/src/wdefaults.c
@@ -42,6 +42,10 @@
 #include "defaults.h"
 #include "icon.h"
 
+#define APPLY_VAL(value, flag, attrib)	\
+    if (value) {attr->flag = getBool(attrib, value); \
+    if (mask) mask->flag = 1;}
+
 /* Global stuff */
 extern WPreferences wPreferences;
 extern WDDomain *WDWindowAttributes;
@@ -125,6 +129,7 @@ static void init_wdefaults(WScreen * scr)
 	No = WMCreatePLString("No");
 }
 
+/* Returns the correct WMPropList, using instance+class or instance, or class, or default */
 static WMPropList *get_value(WMPropList * dict_win, WMPropList * dict_class, WMPropList * dict_name,
 			     WMPropList * dict_any, WMPropList * option, WMPropList * default_value,
 			     Bool useGlobalDefault)
@@ -161,6 +166,28 @@ static WMPropList *get_value(WMPropList * dict_win, WMPropList * dict_class, WMP
 	return default_value;
 }
 
+static WMPropList *get_value_from_instanceclass(char *value)
+{
+	WMPropList *key, *val = NULL;
+
+	if (!value)
+		return NULL;
+
+	key = WMCreatePLString(value);
+
+	WMPLSetCaseSensitive(True);
+
+	if (WDWindowAttributes->dictionary)
+		val = key ? WMGetFromPLDictionary(WDWindowAttributes->dictionary, key) : NULL;
+
+	if (key)
+		WMReleasePropList(key);
+
+	WMPLSetCaseSensitive(False);
+
+	return val;
+}
+
 /*
  *----------------------------------------------------------------------
  * wDefaultFillAttributes--
@@ -176,58 +203,27 @@ void
 wDefaultFillAttributes(WScreen * scr, char *instance, char *class,
 		       WWindowAttributes * attr, WWindowAttributes * mask, Bool useGlobalDefault)
 {
-	WMPropList *value, *key1, *key2, *key3, *dw, *dc, *dn, *da;
+	WMPropList *value, *dw, *dc, *dn, *da;
+	char *buffer;
 
-	if (class && instance) {
-		char *buffer;
+	dw = dc = dn = da = NULL;
 
-		buffer = wmalloc(strlen(class) + strlen(instance) + 2);
-		sprintf(buffer, "%s.%s", instance, class);
-		key1 = WMCreatePLString(buffer);
+	if (!ANoTitlebar)
+		init_wdefaults(scr);
+
+	if (class && instance) {
+		buffer = StrConcatDot(instance, class);
+		dw = get_value_from_instanceclass(buffer);
 		wfree(buffer);
-	} else {
-		key1 = NULL;
 	}
 
-	if (instance)
-		key2 = WMCreatePLString(instance);
-	else
-		key2 = NULL;
-
-	if (class)
-		key3 = WMCreatePLString(class);
-	else
-		key3 = NULL;
-
-	if (!ANoTitlebar)
-		init_wdefaults(scr);
+	dn = get_value_from_instanceclass(instance);
+	dc = get_value_from_instanceclass(class);
 
 	WMPLSetCaseSensitive(True);
 
-	if (WDWindowAttributes->dictionary) {
-		dw = key1 ? WMGetFromPLDictionary(WDWindowAttributes->dictionary, key1) : NULL;
-		dn = key2 ? WMGetFromPLDictionary(WDWindowAttributes->dictionary, key2) : NULL;
-		dc = key3 ? WMGetFromPLDictionary(WDWindowAttributes->dictionary, key3) : NULL;
-		if (useGlobalDefault)
-			da = WMGetFromPLDictionary(WDWindowAttributes->dictionary, AnyWindow);
-		else
-			da = NULL;
-	} else {
-		dw = NULL;
-		dn = NULL;
-		dc = NULL;
-		da = NULL;
-	}
-	if (key1)
-		WMReleasePropList(key1);
-	if (key2)
-		WMReleasePropList(key2);
-	if (key3)
-		WMReleasePropList(key3);
-
-#define APPLY_VAL(value, flag, attrib)	\
-    if (value) {attr->flag = getBool(attrib, value); \
-    if (mask) mask->flag = 1;}
+	if ((WDWindowAttributes->dictionary) && (useGlobalDefault))
+		da = WMGetFromPLDictionary(WDWindowAttributes->dictionary, AnyWindow);
 
 	/* get the data */
 	value = get_value(dw, dc, dn, da, ANoTitlebar, No, useGlobalDefault);
@@ -477,8 +473,8 @@ void wDefaultChangeIcon(WScreen * scr, char *instance, char *class, char *file)
 
 	if (instance && class) {
 		char *buffer;
-		buffer = wmalloc(strlen(instance) + strlen(class) + 2);
-		sprintf(buffer, "%s.%s", instance, class);
+
+		buffer = StrConcatDot(instance, class);
 		key = WMCreatePLString(buffer);
 		wfree(buffer);
 	} else if (instance) {
-- 
1.7.10

Reply via email to