-#else
-
-static void setTextAreaCursorPosition(struct GadgetInfo *gi, int x, int y)
-{
- char *text = gi->textarea.value;
- int area_xsize = gi->textarea.xsize;
- int area_ysize = gi->textarea.ysize;
- int cursor_x = 0;
- int cursor_y = 0;
- int cursor_position = 0;
-
- while (*text && cursor_y < area_ysize)
- {
- char buffer[MAX_OUTPUT_LINESIZE + 1];
- int i;
-
- for (i=0; i < area_xsize && *text && *text != '\n'; i++)
- buffer[i] = *text++;
- buffer[i] = '\0';
-
-#if 1
- if (i == 0 && *text == '\n')
- {
- text++;
- cursor_position++;
- }
-#endif
-
- if (x == -1 && y == -1) /* get x/y from cursor position */
- {
- if (cursor_position + i >= gi->textarea.cursor_position)
- {
-#if 0
- printf("::: cursor: %d + %d >= %d\n", cursor_position, i,
- gi->textarea.cursor_position);
-#endif
-
- cursor_x = gi->textarea.cursor_position - cursor_position;
- cursor_position = gi->textarea.cursor_position;
-
- break;
- }
- }
-
- if (cursor_y == y || !*text) /* correct y position found */
- {
- cursor_x = MIN(i, x);
- cursor_position += cursor_x;
-
- break;
- }
- else
- cursor_position += i;
-
-#if 0
- if (*text == '\n')
- {
- text++;
- cursor_position++;
-
- if (i == area_xsize)
- cursor_y++;
- }
-#endif
-
- cursor_y++;
- }
-
- if (cursor_x >= area_xsize)
- {
- cursor_x = 0;
- cursor_y++;
- }
-
- if (cursor_y >= area_ysize)
- {
- cursor_x = area_xsize - 1;
- cursor_y = area_ysize - 1;
- }
-
-#if 0
- printf("::: %d, %d [%d]\n", cursor_x, cursor_y, cursor_position);
-#endif
-
- gi->textarea.cursor_x = cursor_x;
- gi->textarea.cursor_y = cursor_y;
- gi->textarea.cursor_x_preferred = cursor_x;
- gi->textarea.cursor_position = cursor_position;
-}
-
-#endif
-