+ if (transparencies == NULL)
+ {
+ for (i = 0; transparencies_list[i].value != -1; i++)
+ {
+ TreeInfo *ti = newTreeInfo_setDefaults(TREE_TYPE_UNDEFINED);
+ char identifier[32], name[32];
+ int value = transparencies_list[i].value;
+ char *text = transparencies_list[i].text;
+
+ ti->node_top = &transparencies;
+ ti->sort_priority = value;
+
+ sprintf(identifier, "%d", value);
+ sprintf(name, "%s", text);
+
+ setString(&ti->identifier, identifier);
+ setString(&ti->name, name);
+ setString(&ti->name_sorting, name);
+ setString(&ti->infotext, STR_SETUP_CHOOSE_TRANSPARENCY);
+
+ pushTreeInfo(&transparencies, ti);
+ }
+
+ /* sort transparency values to start with lowest transparency value */
+ sortTreeInfo(&transparencies);
+
+ /* set current transparency value to configured transparency value */
+ transparency_current =
+ getTreeInfoFromIdentifier(transparencies,
+ i_to_a(setup.touch.transparency));
+
+ /* if that fails, set current transparency to reliable default value */
+ if (transparency_current == NULL)
+ transparency_current =
+ getTreeInfoFromIdentifier(transparencies,
+ i_to_a(TOUCH_TRANSPARENCY_DEFAULT));
+
+ /* if that also fails, set current transparency to first available value */
+ if (transparency_current == NULL)
+ transparency_current = transparencies;
+ }
+
+ for (i = 0; i < 2; i++)
+ {
+ for (j = 0; j < 2; j++)
+ {
+ if (grid_sizes[i][j] == NULL)
+ {
+ for (k = 0; grid_sizes_list[k].value != -1; k++)
+ {
+ TreeInfo *ti = newTreeInfo_setDefaults(TREE_TYPE_UNDEFINED);
+ char identifier[32], name[32];
+ int value = grid_sizes_list[k].value;
+ char *text = grid_sizes_list[k].text;
+
+ ti->node_top = &grid_sizes[i][j];
+ ti->sort_priority = value;
+
+ sprintf(identifier, "%d", value);
+ sprintf(name, "%s", text);
+
+ setString(&ti->identifier, identifier);
+ setString(&ti->name, name);
+ setString(&ti->name_sorting, name);
+ setString(&ti->infotext,
+ (i == 0 ?
+ (j == 0 ?
+ STR_SETUP_CHOOSE_GRID_XSIZE_0 :
+ STR_SETUP_CHOOSE_GRID_YSIZE_0) :
+ (j == 0 ?
+ STR_SETUP_CHOOSE_GRID_XSIZE_1 :
+ STR_SETUP_CHOOSE_GRID_YSIZE_1)));
+
+ pushTreeInfo(&grid_sizes[i][j], ti);
+ }
+
+ /* sort grid size values to start with lowest grid size value */
+ sortTreeInfo(&grid_sizes[i][j]);
+
+ /* set current grid size value to configured grid size value */
+ grid_size_current[i][j] =
+ getTreeInfoFromIdentifier(grid_sizes[i][j],
+ i_to_a(j == 0 ?
+ setup.touch.grid_xsize[i] :
+ setup.touch.grid_ysize[i]));
+
+ /* if that fails, set current grid size to reliable default value */
+ if (grid_size_current[i][j] == NULL)
+ grid_size_current[i][j] =
+ getTreeInfoFromIdentifier(grid_sizes[i][j],
+ i_to_a(j == 0 ?
+ DEFAULT_GRID_XSIZE(i) :
+ DEFAULT_GRID_YSIZE(i)));
+
+ /* if that also fails, set current grid size to first available value */
+ if (grid_size_current[i][j] == NULL)
+ grid_size_current[i][j] = grid_sizes[i][j];
+ }
+ }
+ }
+