From: <sa...@us...> - 2006-06-30 03:57:36
|
Revision: 16376 Author: sadrul Date: 2006-06-29 20:57:22 -0700 (Thu, 29 Jun 2006) ViewCVS: http://svn.sourceforge.net/gaim/?rev=16376&view=rev Log Message: ----------- I may have done it (window-redrawing thing) right this time. Modified Paths: -------------- trunk/console/libgnt/gntmain.c Modified: trunk/console/libgnt/gntmain.c =================================================================== --- trunk/console/libgnt/gntmain.c 2006-06-29 21:02:54 UTC (rev 16375) +++ trunk/console/libgnt/gntmain.c 2006-06-30 03:57:22 UTC (rev 16376) @@ -219,12 +219,12 @@ top = MAX(widget->priv.y, w->priv.y) - w->priv.y; bottom = MIN(widget->priv.y + widget->priv.height, w->priv.y + w->priv.height) - w->priv.y; - + copywin(w->window, win, top, left, - w->priv.y + top, - w->priv.x + left, - w->priv.y + bottom - top - 1, - w->priv.x + right - left - 1, FALSE); + w->priv.y - widget->priv.y + top, + w->priv.x - widget->priv.x + left, + w->priv.y - widget->priv.y + bottom - 1, + w->priv.x - widget->priv.x + right - 1, FALSE); n->above = g_list_remove(n->above, node); } @@ -273,10 +273,10 @@ bottom = MIN(widget->priv.y + widget->priv.height, w->priv.y + w->priv.height) - w->priv.y; copywin(w->window, win, top, left, - w->priv.y + top, - w->priv.x + left, - w->priv.y + bottom - top - 1, - w->priv.x + right - left - 1, FALSE); + w->priv.y - widget->priv.y + top, + w->priv.x - widget->priv.x + left, + w->priv.y - widget->priv.y + bottom - 1, + w->priv.x - widget->priv.x + right - 1, FALSE); } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sa...@us...> - 2006-07-04 03:51:09
|
Revision: 16419 Author: sadrul Date: 2006-07-03 20:50:59 -0700 (Mon, 03 Jul 2006) ViewCVS: http://svn.sourceforge.net/gaim/?rev=16419&view=rev Log Message: ----------- I am not handling mouse-events yet. So disable reporting the events. Modified Paths: -------------- trunk/console/libgnt/gntmain.c Modified: trunk/console/libgnt/gntmain.c =================================================================== --- trunk/console/libgnt/gntmain.c 2006-07-04 01:32:39 UTC (rev 16418) +++ trunk/console/libgnt/gntmain.c 2006-07-04 03:50:59 UTC (rev 16419) @@ -437,7 +437,9 @@ wbkgdset(stdscr, '\0' | COLOR_PAIR(GNT_COLOR_NORMAL)); noecho(); refresh(); +#if MAYBE_SOMEDAY mousemask(ALL_MOUSE_EVENTS | REPORT_MOUSE_POSITION, NULL); +#endif wbkgdset(stdscr, '\0' | COLOR_PAIR(GNT_COLOR_NORMAL)); werase(stdscr); wrefresh(stdscr); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sa...@us...> - 2006-07-05 00:10:01
|
Revision: 16430 Author: sadrul Date: 2006-07-04 17:09:56 -0700 (Tue, 04 Jul 2006) ViewCVS: http://svn.sourceforge.net/gaim/?rev=16430&view=rev Log Message: ----------- Remove some warnings, and make sure the window in focus is always on top of all other windows. Modified Paths: -------------- trunk/console/libgnt/gntmain.c Modified: trunk/console/libgnt/gntmain.c =================================================================== --- trunk/console/libgnt/gntmain.c 2006-07-04 23:45:59 UTC (rev 16429) +++ trunk/console/libgnt/gntmain.c 2006-07-05 00:09:56 UTC (rev 16430) @@ -47,6 +47,7 @@ static void free_node(gpointer data); static void draw_taskbar(); +static void bring_on_top(GntWidget *widget); void gnt_screen_take_focus(GntWidget *widget) { @@ -88,8 +89,7 @@ if (focus_list) { - gnt_widget_set_focus(focus_list->data, TRUE); - gnt_widget_draw(focus_list->data); + bring_on_top(focus_list->data); } draw_taskbar(); } @@ -98,7 +98,6 @@ bring_on_top(GntWidget *widget) { GntNode *node = g_hash_table_lookup(nodes, widget); - GList *iter; g_return_if_fail(focus_list->data == widget); @@ -124,7 +123,7 @@ { static WINDOW *taskbar = NULL; GList *iter; - int n, width; + int n, width = 0; int i; if (taskbar == NULL) @@ -204,7 +203,7 @@ window_list_activate(GntTree *tree, gpointer null) { GntWidget *widget = gnt_tree_get_selection_data(GNT_TREE(tree)); - GntWidget *old; + GntWidget *old = NULL; if (focus_list) old = focus_list->data; @@ -218,15 +217,14 @@ } } -static GntWidget * +static void show_window_list() { GntWidget *tree, *win; GList *iter; - int id; if (window_list.window) - return window_list.window; + return; win = window_list.window = gnt_box_new(FALSE, FALSE); gnt_box_set_toplevel(GNT_BOX(win), TRUE); @@ -497,8 +495,6 @@ void gnt_screen_release(GntWidget *widget) { - WINDOW *win; - GList *iter; GntNode *node; gnt_screen_remove_widget(widget); @@ -520,8 +516,6 @@ void gnt_screen_update(GntWidget *widget) { - GList *iter; - WINDOW *win; GntNode *node; if (widget->parent) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sa...@us...> - 2006-07-17 13:37:19
|
Revision: 16508 Author: sadrul Date: 2006-07-17 06:37:08 -0700 (Mon, 17 Jul 2006) ViewCVS: http://svn.sourceforge.net/gaim/?rev=16508&view=rev Log Message: ----------- Use alt+, and alt+. to change the order of the window. Modified Paths: -------------- trunk/console/libgnt/gntmain.c Modified: trunk/console/libgnt/gntmain.c =================================================================== --- trunk/console/libgnt/gntmain.c 2006-07-17 12:22:37 UTC (rev 16507) +++ trunk/console/libgnt/gntmain.c 2006-07-17 13:37:08 UTC (rev 16508) @@ -275,6 +275,34 @@ g_signal_connect(G_OBJECT(tree), "activate", G_CALLBACK(window_list_activate), NULL); } +static void +shift_window(GntWidget *widget, int dir) +{ + GList *all = g_list_first(focus_list); + GList *list = g_list_find(all, widget); + int length, pos; + if (!list) + return; + + length = g_list_length(all); + pos = g_list_position(all, list); + + pos += dir; + if (dir > 0) + pos++; + + if (pos < 0) + pos = length; + else if (pos > length) + pos = 0; + + all = g_list_insert(all, widget, pos); + all = g_list_delete_link(all, list); + if (focus_list == list) + focus_list = g_list_find(all, widget); + draw_taskbar(); +} + static gboolean io_invoke(GIOChannel *source, GIOCondition cond, gpointer null) { @@ -351,6 +379,15 @@ /* Resize window */ mode = GNT_KP_MODE_RESIZE; } + else if (strcmp(buffer + 1, ",") == 0 && focus_list) + { + /* Re-order the list of windows */ + shift_window(focus_list->data, -1); + } + else if (strcmp(buffer + 1, ".") == 0 && focus_list) + { + shift_window(focus_list->data, 1); + } } } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sa...@us...> - 2006-08-05 02:19:24
|
Revision: 16631 Author: sadrul Date: 2006-08-04 19:19:19 -0700 (Fri, 04 Aug 2006) ViewCVS: http://svn.sourceforge.net/gaim/?rev=16631&view=rev Log Message: ----------- Press Alt+d to get an HTML-dump of the contents of the screen. The dump goes in "dump.html" in pwd. Modified Paths: -------------- trunk/console/libgnt/gntmain.c Modified: trunk/console/libgnt/gntmain.c =================================================================== --- trunk/console/libgnt/gntmain.c 2006-08-05 02:10:30 UTC (rev 16630) +++ trunk/console/libgnt/gntmain.c 2006-08-05 02:19:19 UTC (rev 16631) @@ -308,6 +308,99 @@ draw_taskbar(); } +static void +dump_screen() +{ + int x, y; + chtype old = 0, now = 0; + FILE *file = fopen("dump.html", "w"); + + fprintf(file, "<pre>"); + for (y = 0; y < getmaxy(stdscr); y++) + { + for (x = 0; x < getmaxx(stdscr); x++) + { + char ch; + now = mvwinch(newscr, y, x); + ch = now & A_CHARTEXT; + now ^= ch; + +#define CHECK(attr, start, end) \ + do \ + { \ + if (now & attr) \ + { \ + if (!(old & attr)) \ + fprintf(file, start); \ + } \ + else if (old & attr) \ + { \ + fprintf(file, end); \ + } \ + } while (0) + + CHECK(A_BOLD, "<b>", "</b>"); + CHECK(A_UNDERLINE, "<u>", "</u>"); + CHECK(A_BLINK, "<blink>", "</blink>"); + + if ((now & A_COLOR) != (old & A_COLOR)) + { + int ret; + short fgp, bgp, r, g, b; + struct + { + int r, g, b; + } fg, bg; + + ret = pair_content(PAIR_NUMBER(now & A_COLOR), &fgp, &bgp); + ret = color_content(fgp, &r, &g, &b); + fg.r = r; fg.b = b; fg.g = g; + ret = color_content(bgp, &r, &g, &b); + bg.r = r; bg.b = b; bg.g = g; +#define ADJUST(x) (x = x * 255 / 1000) + ADJUST(fg.r); + ADJUST(fg.g); + ADJUST(fg.b); + ADJUST(bg.r); + ADJUST(bg.b); + ADJUST(bg.g); + + if (x) fprintf(file, "</span>"); + fprintf(file, "<span style=\"background:#%02x%02x%02x;color:#%02x%02x%02x\">", + bg.r, bg.g, bg.b, fg.r, fg.g, fg.b); + } + if (now & A_ALTCHARSET) + { + switch (ch) + { + case 'q': + ch = '-'; break; + case 't': + case 'u': + case 'x': + ch = '|'; break; + case 'v': + case 'w': + case 'l': + case 'm': + case 'k': + case 'j': + case 'n': + ch = '+'; break; + default: + ch = ' '; break; + } + } + fprintf(file, "%c", ch); + old = now; + } + fprintf(file, "</span>\n"); + old = 0; + } + fprintf(file, "</pre>"); + fclose(file); +} + static gboolean io_invoke(GIOChannel *source, GIOCondition cond, gpointer null) { @@ -331,6 +424,12 @@ buffer[rd] = 0; + if (buffer[0] == 27 && buffer[1] == 'd' && buffer[2] == 0) + { + /* This dumps the screen contents in an html file */ + dump_screen(); + } + if (mode == GNT_KP_MODE_NORMAL) { if (focus_list) @@ -567,8 +666,8 @@ wbkgdset(stdscr, '\0' | COLOR_PAIR(GNT_COLOR_NORMAL)); noecho(); refresh(); -#if MAYBE_SOMEDAY - mousemask(ALL_MOUSE_EVENTS | REPORT_MOUSE_POSITION, NULL); +#if 0 + mousemask(NCURSES_BUTTON_PRESSED | NCURSES_BUTTON_RELEASED | REPORT_MOUSE_POSITION, NULL); #endif wbkgdset(stdscr, '\0' | COLOR_PAIR(GNT_COLOR_NORMAL)); werase(stdscr); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sa...@us...> - 2006-08-19 06:45:46
|
Revision: 16875 Author: sadrul Date: 2006-08-18 23:45:42 -0700 (Fri, 18 Aug 2006) ViewCVS: http://svn.sourceforge.net/gaim/?rev=16875&view=rev Log Message: ----------- some tweakings. Modified Paths: -------------- trunk/console/libgnt/gntmain.c Modified: trunk/console/libgnt/gntmain.c =================================================================== --- trunk/console/libgnt/gntmain.c 2006-08-19 06:02:26 UTC (rev 16874) +++ trunk/console/libgnt/gntmain.c 2006-08-19 06:45:42 UTC (rev 16875) @@ -663,21 +663,26 @@ { static GIOChannel *channel = NULL; char *filename; - + int result; + const char *locale; + if (channel) return; - channel = g_io_channel_unix_new(0); + channel = g_io_channel_unix_new(STDIN_FILENO); g_io_channel_set_encoding(channel, NULL, NULL); g_io_channel_set_buffered(channel, FALSE); g_io_channel_set_flags(channel, G_IO_FLAG_NONBLOCK, NULL ); - int result = g_io_add_watch(channel, - (G_IO_IN | G_IO_HUP | G_IO_ERR), - io_invoke, NULL); - const char *locale = setlocale(LC_ALL, ""); + result = g_io_add_watch_full(channel, G_PRIORITY_HIGH, + (G_IO_IN | G_IO_HUP | G_IO_ERR | G_IO_PRI | G_IO_NVAL), + io_invoke, NULL, NULL); + + locale = setlocale(LC_ALL, ""); + g_io_channel_unref(channel); + if (locale && (strstr(locale, "UTF") || strstr(locale, "utf"))) ascii_only = FALSE; else This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sa...@us...> - 2006-08-19 16:41:51
|
Revision: 16886 Author: sadrul Date: 2006-08-19 09:41:40 -0700 (Sat, 19 Aug 2006) ViewCVS: http://svn.sourceforge.net/gaim/?rev=16886&view=rev Log Message: ----------- Use STDIN_FILENO instead of 0 (does anyone know if they are different in some place?) Modified Paths: -------------- trunk/console/libgnt/gntmain.c Modified: trunk/console/libgnt/gntmain.c =================================================================== --- trunk/console/libgnt/gntmain.c 2006-08-19 16:13:55 UTC (rev 16885) +++ trunk/console/libgnt/gntmain.c 2006-08-19 16:41:40 UTC (rev 16886) @@ -437,7 +437,7 @@ gboolean ret = FALSE; static GntKeyPressMode mode = GNT_KP_MODE_NORMAL; - int rd = read(0, buffer, sizeof(buffer) - 1); + int rd = read(STDIN_FILENO, buffer, sizeof(buffer) - 1); if (rd < 0) { endwin(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ebl...@us...> - 2006-08-20 16:20:55
|
Revision: 16901 Author: eblanton Date: 2006-08-20 09:20:45 -0700 (Sun, 20 Aug 2006) ViewCVS: http://svn.sourceforge.net/gaim/?rev=16901&view=rev Log Message: ----------- Alt+n window switching for libgnt Modified Paths: -------------- trunk/console/libgnt/gntmain.c Modified: trunk/console/libgnt/gntmain.c =================================================================== --- trunk/console/libgnt/gntmain.c 2006-08-20 14:56:53 UTC (rev 16900) +++ trunk/console/libgnt/gntmain.c 2006-08-20 16:20:45 UTC (rev 16901) @@ -12,6 +12,7 @@ #include <locale.h> #include <unistd.h> #include <string.h> +#include <ctype.h> /** * Notes: Interesting functions to look at: @@ -240,6 +241,27 @@ } static void +switch_window_n(int n) +{ + GntWidget *w = NULL; + GList *l; + + if (focus_list) + w = focus_list->data; + + if ((l = g_list_nth(g_list_first(focus_list), n)) != NULL) + { + focus_list = l; + bring_on_top(focus_list->data); + } + + if (w && (!focus_list || w != focus_list->data)) + { + gnt_widget_set_focus(w, FALSE); + } +} + +static void window_list_activate(GntTree *tree, gpointer null) { GntWidget *widget = gnt_tree_get_selection_data(GNT_TREE(tree)); @@ -531,6 +553,15 @@ update_screen(NULL); draw_taskbar(); } + else if (strlen(buffer) == 2 && isdigit(*(buffer + 1))) + { + int n = *(buffer + 1) - '0'; + + if (n == 0) + n = 10; + + switch_window_n(n - 1); + } } } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sa...@us...> - 2006-08-21 01:44:15
|
Revision: 16927 Author: sadrul Date: 2006-08-20 18:44:07 -0700 (Sun, 20 Aug 2006) ViewCVS: http://svn.sourceforge.net/gaim/?rev=16927&view=rev Log Message: ----------- Press alt+l to refresh the screen, useful if you resize the terminal. Modified Paths: -------------- trunk/console/libgnt/gntmain.c Modified: trunk/console/libgnt/gntmain.c =================================================================== --- trunk/console/libgnt/gntmain.c 2006-08-21 01:00:31 UTC (rev 16926) +++ trunk/console/libgnt/gntmain.c 2006-08-21 01:44:07 UTC (rev 16927) @@ -57,7 +57,7 @@ static GHashTable *nodes; static void free_node(gpointer data); -static void draw_taskbar(); +static void draw_taskbar(gboolean reposition); static void bring_on_top(GntWidget *widget); static gboolean @@ -88,7 +88,7 @@ gnt_widget_set_focus(widget, TRUE); if (w) gnt_widget_set_focus(w, FALSE); - draw_taskbar(); + draw_taskbar(FALSE); } void gnt_screen_remove_widget(GntWidget *widget) @@ -112,7 +112,7 @@ { bring_on_top(focus_list->data); } - draw_taskbar(); + draw_taskbar(FALSE); } static void @@ -136,7 +136,7 @@ top_panel(nd->panel); } update_screen(NULL); - draw_taskbar(); + draw_taskbar(FALSE); } static void @@ -156,7 +156,7 @@ } static void -draw_taskbar() +draw_taskbar(gboolean reposition) { static WINDOW *taskbar = NULL; GList *iter; @@ -167,6 +167,10 @@ { taskbar = newwin(1, getmaxx(stdscr), getmaxy(stdscr) - 1, 0); } + else if (reposition) + { + mvwin(taskbar, Y_MAX, 0); + } wbkgdset(taskbar, '\0' | COLOR_PAIR(GNT_COLOR_NORMAL)); werase(taskbar); @@ -343,7 +347,7 @@ all = g_list_delete_link(all, list); if (focus_list == list) focus_list = g_list_find(all, widget); - draw_taskbar(); + draw_taskbar(FALSE); } static void @@ -452,6 +456,27 @@ fclose(file); } +static void +refresh_node(GntWidget *widget, GntNode *node, gpointer null) +{ + int x, y, w, h; + int nw, nh; + + gnt_widget_get_position(widget, &x, &y); + gnt_widget_get_size(widget, &w, &h); + + if (x + w >= X_MAX) + x = MAX(0, X_MAX - w); + if (y + h >= Y_MAX) + y = MAX(0, Y_MAX - h); + gnt_screen_move_widget(widget, x, y); + + nw = MIN(w, X_MAX); + nh = MIN(h, Y_MAX); + if (nw != w || nh != h) + gnt_screen_resize_widget(widget, nw, nh); +} + static gboolean io_invoke(GIOChannel *source, GIOCondition cond, gpointer null) { @@ -547,11 +572,17 @@ } else if (strcmp(buffer + 1, "l") == 0) { - touchwin(stdscr); - touchwin(newscr); - wrefresh(newscr); update_screen(NULL); - draw_taskbar(); + werase(stdscr); + wrefresh(stdscr); + + X_MAX = getmaxx(stdscr); + Y_MAX = getmaxy(stdscr) - 1; + + g_hash_table_foreach(nodes, (GHFunc)refresh_node, NULL); + + update_screen(NULL); + draw_taskbar(TRUE); } else if (strlen(buffer) == 2 && isdigit(*(buffer + 1))) { @@ -882,7 +913,7 @@ return; GNT_WIDGET_SET_FLAGS(widget, GNT_WIDGET_URGENT); - draw_taskbar(); + draw_taskbar(FALSE); } void gnt_quit() This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sa...@us...> - 2006-08-22 03:01:58
|
Revision: 16969 Author: sadrul Date: 2006-08-21 20:01:52 -0700 (Mon, 21 Aug 2006) ViewCVS: http://svn.sourceforge.net/gaim/?rev=16969&view=rev Log Message: ----------- I made this change because Evan was getting a crash because of this. But as a side effect, it fixes the scrambleness!! This is pretty sweet! Modified Paths: -------------- trunk/console/libgnt/gntmain.c Modified: trunk/console/libgnt/gntmain.c =================================================================== --- trunk/console/libgnt/gntmain.c 2006-08-22 02:55:14 UTC (rev 16968) +++ trunk/console/libgnt/gntmain.c 2006-08-22 03:01:52 UTC (rev 16969) @@ -758,7 +758,9 @@ g_io_channel_set_encoding(channel, NULL, NULL); g_io_channel_set_buffered(channel, FALSE); +#if 0 g_io_channel_set_flags(channel, G_IO_FLAG_NONBLOCK, NULL ); +#endif result = g_io_add_watch_full(channel, G_PRIORITY_HIGH, (G_IO_IN | G_IO_HUP | G_IO_ERR | G_IO_PRI | G_IO_NVAL), This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sa...@us...> - 2006-08-23 18:50:53
|
Revision: 17007 Author: sadrul Date: 2006-08-23 11:50:46 -0700 (Wed, 23 Aug 2006) ViewCVS: http://svn.sourceforge.net/gaim/?rev=17007&view=rev Log Message: ----------- This is a temporary change, allowing people with slightly older versions of ncurses to build. I plan to evetually add mouse support for older versions. Modified Paths: -------------- trunk/console/libgnt/gntmain.c Modified: trunk/console/libgnt/gntmain.c =================================================================== --- trunk/console/libgnt/gntmain.c 2006-08-23 17:01:31 UTC (rev 17006) +++ trunk/console/libgnt/gntmain.c 2006-08-23 18:50:46 UTC (rev 17007) @@ -560,7 +560,7 @@ offset = 0; } else return FALSE; - return TRUE; + return FALSE; /* XXX: this should be TRUE */ } static gboolean @@ -885,8 +885,10 @@ wbkgdset(stdscr, '\0' | COLOR_PAIR(GNT_COLOR_NORMAL)); refresh(); +#ifdef NCURSES_BUTTON_PRESSEDaa if ((mouse_enabled = gnt_style_get_bool(GNT_STYLE_MOUSE, FALSE))) - mousemask(NCURSES_BUTTON_PRESSED | NCURSES_BUTTON_RELEASED , NULL); + mousemask(NCURSES_BUTTON_PRESSED | NCURSES_BUTTON_RELEASED | REPORT_MOUSE_POSITION, NULL); +#endif wbkgdset(stdscr, '\0' | COLOR_PAIR(GNT_COLOR_NORMAL)); werase(stdscr); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sa...@us...> - 2006-08-24 02:35:20
|
Revision: 17010 Author: sadrul Date: 2006-08-23 19:35:15 -0700 (Wed, 23 Aug 2006) ViewCVS: http://svn.sourceforge.net/gaim/?rev=17010&view=rev Log Message: ----------- This should allow mouse-events to work for everyone. Also, you can click on any window to bring it to focus. Modified Paths: -------------- trunk/console/libgnt/gntmain.c Modified: trunk/console/libgnt/gntmain.c =================================================================== --- trunk/console/libgnt/gntmain.c 2006-08-24 01:13:57 UTC (rev 17009) +++ trunk/console/libgnt/gntmain.c 2006-08-24 02:35:15 UTC (rev 17010) @@ -24,6 +24,7 @@ static int lock_focus_list; static GList *focus_list; +static GList *ordered; static int X_MIN; static int X_MAX; @@ -64,6 +65,14 @@ static gboolean refresh_screen(); +static GList * +g_list_bring_to_front(GList *list, gpointer data) +{ + list = g_list_remove(list, data); + list = g_list_prepend(list, data); + return list; +} + static gboolean update_screen(gpointer null) { @@ -78,17 +87,16 @@ if (lock_focus_list) return; - if (g_list_find(g_list_first(focus_list), widget)) + if (g_list_find(focus_list, widget)) return; - if (focus_list) - w = focus_list->data; + if (ordered) + w = ordered->data; - /* XXX: ew */ - focus_list = g_list_first(focus_list); focus_list = g_list_append(focus_list, widget); - focus_list = g_list_find(focus_list, w ? w : widget); + ordered = g_list_append(ordered, widget); + gnt_widget_set_focus(widget, TRUE); if (w) gnt_widget_set_focus(w, FALSE); @@ -97,8 +105,7 @@ void gnt_screen_remove_widget(GntWidget *widget) { - int pos = g_list_index(g_list_first(focus_list), widget); - GList *next; + int pos = g_list_index(focus_list, widget); if (lock_focus_list) return; @@ -106,15 +113,12 @@ if (pos == -1) return; - focus_list = g_list_first(focus_list); focus_list = g_list_remove(focus_list, widget); - next = g_list_nth(focus_list, pos - 1); - if (next) - focus_list = next; + ordered = g_list_remove(ordered, widget); - if (focus_list) + if (ordered) { - bring_on_top(focus_list->data); + bring_on_top(ordered->data); } draw_taskbar(FALSE); } @@ -124,14 +128,11 @@ { GntNode *node = g_hash_table_lookup(nodes, widget); - g_return_if_fail(focus_list->data == widget); - if (!node) return; - gnt_widget_set_focus(focus_list->data, TRUE); - gnt_widget_draw(focus_list->data); - + gnt_widget_set_focus(widget, TRUE); + gnt_widget_draw(widget); top_panel(node->panel); if (window_list.window) @@ -151,7 +152,7 @@ if (window_list.window == NULL) return; - if (wid == focus_list->data) + if (wid == ordered->data) flag |= GNT_TEXT_FLAG_DIM; else if (GNT_WIDGET_IS_FLAG_SET(wid, GNT_WIDGET_URGENT)) flag |= GNT_TEXT_FLAG_BOLD; @@ -179,17 +180,17 @@ wbkgdset(taskbar, '\0' | COLOR_PAIR(GNT_COLOR_NORMAL)); werase(taskbar); - n = g_list_length(g_list_first(focus_list)); + n = g_list_length(focus_list); if (n) width = getmaxx(stdscr) / n; - for (i = 0, iter = g_list_first(focus_list); iter; iter = iter->next, i++) + for (i = 0, iter = focus_list; iter; iter = iter->next, i++) { GntWidget *w = iter->data; int color; const char *title; - if (w == focus_list->data) + if (w == ordered->data) { /* This is the current window in focus */ color = GNT_COLOR_TITLE; @@ -218,31 +219,28 @@ static void switch_window(int direction) { - GntWidget *w = NULL; - if (focus_list) - w = focus_list->data; + GntWidget *w = NULL, *wid = NULL; + int pos; - if (direction == 1) - { - if (focus_list && focus_list->next) - focus_list = focus_list->next; - else - focus_list = g_list_first(focus_list); - } - else if (direction == -1) - { - if (focus_list && focus_list->prev) - focus_list = focus_list->prev; - else - focus_list = g_list_last(focus_list); - } - - if (focus_list) - { - bring_on_top(focus_list->data); - } + if (!ordered || !ordered->next) + return; - if (w && (!focus_list || w != focus_list->data)) + w = ordered->data; + pos = g_list_index(focus_list, w); + pos += direction; + + if (pos < 0) + wid = g_list_last(focus_list)->data; + else if (pos >= g_list_length(focus_list)) + wid = focus_list->data; + else if (pos >= 0) + wid = g_list_nth_data(focus_list, pos); + + ordered = g_list_bring_to_front(ordered, wid); + + bring_on_top(ordered->data); + + if (w != wid) { gnt_widget_set_focus(w, FALSE); } @@ -254,16 +252,18 @@ GntWidget *w = NULL; GList *l; - if (focus_list) - w = focus_list->data; + if (!ordered) + return; + + w = ordered->data; - if ((l = g_list_nth(g_list_first(focus_list), n)) != NULL) + if ((l = g_list_nth(focus_list, n)) != NULL) { - focus_list = l; - bring_on_top(focus_list->data); + ordered = g_list_bring_to_front(ordered, l->data); + bring_on_top(ordered->data); } - if (w && (!focus_list || w != focus_list->data)) + if (l && w != l->data) { gnt_widget_set_focus(w, FALSE); } @@ -275,13 +275,14 @@ GntWidget *widget = gnt_tree_get_selection_data(GNT_TREE(tree)); GntWidget *old = NULL; - if (focus_list) - old = focus_list->data; + if (!ordered || !widget) + return; - focus_list = g_list_find(g_list_first(focus_list), widget); + old = ordered->data; + ordered = g_list_bring_to_front(ordered, widget); bring_on_top(widget); - if (old && (!focus_list || old != focus_list->data)) + if (old != widget) { gnt_widget_set_focus(old, FALSE); } @@ -303,7 +304,7 @@ tree = window_list.tree = gnt_tree_new(); - for (iter = g_list_first(focus_list); iter; iter = iter->next) + for (iter = focus_list; iter; iter = iter->next) { GntBox *box = GNT_BOX(iter->data); @@ -312,7 +313,7 @@ update_window_in_list(GNT_WIDGET(box)); } - gnt_tree_set_selected(GNT_TREE(tree), focus_list->data); + gnt_tree_set_selected(GNT_TREE(tree), ordered->data); gnt_box_add_widget(GNT_BOX(win), tree); gnt_tree_set_col_width(GNT_TREE(tree), 0, getmaxx(stdscr) / 3); @@ -329,7 +330,7 @@ static void shift_window(GntWidget *widget, int dir) { - GList *all = g_list_first(focus_list); + GList *all = focus_list; GList *list = g_list_find(all, widget); int length, pos; if (!list) @@ -349,8 +350,7 @@ all = g_list_insert(all, widget, pos); all = g_list_delete_link(all, list); - if (focus_list == list) - focus_list = g_list_find(all, widget); + focus_list = all; draw_taskbar(FALSE); } @@ -522,14 +522,26 @@ if (strncmp(buffer, "[M ", 3) == 0) { /* left button down */ - /* If you clicked on the top-bar of the active window, then you can move it by dragging it */ - if (focus_list) { - GntWidget *wid = focus_list->data; - if (x >= wid->priv.x && x < wid->priv.x + wid->priv.width && - y == wid->priv.y) { - offset = x - wid->priv.x; - remember = wid; - button = MOUSE_LEFT; + /* Bring the window you clicked on to front */ + /* If you click on the topbar, then you can drag to move the window */ + GList *iter; + for (iter = ordered; iter; iter = iter->next) { + GntWidget *wid = iter->data; + if (x >= wid->priv.x && x < wid->priv.x + wid->priv.width) { + if (y >= wid->priv.y && y < wid->priv.y + wid->priv.height) { + if (iter != ordered) { + GntWidget *w = ordered->data; + ordered = g_list_bring_to_front(ordered, iter->data); + bring_on_top(ordered->data); + gnt_widget_set_focus(w, FALSE); + } + if (y == wid->priv.y) { + offset = x - wid->priv.x; + remember = wid; + button = MOUSE_LEFT; + } + break; + } } } } else if (strncmp(buffer, "[M\"", 3) == 0) { @@ -543,7 +555,7 @@ } else if (strncmp(buffer, "[M#", 3) == 0) { /* button up */ if (button == MOUSE_NONE && y == getmaxy(stdscr) - 1) { - int n = g_list_length(g_list_first(focus_list)); + int n = g_list_length(focus_list); if (n) { int width = getmaxx(stdscr) / n; switch_window_n(x / width); @@ -599,9 +611,9 @@ if (mode == GNT_KP_MODE_NORMAL) { - if (focus_list) + if (ordered) { - ret = gnt_widget_key_pressed(focus_list->data, buffer); + ret = gnt_widget_key_pressed(ordered->data, buffer); } if (!ret) @@ -614,9 +626,9 @@ else if (strcmp(buffer + 1, "c") == 0) { /* Alt + c was pressed. I am going to use it to close a window. */ - if (focus_list) + if (ordered) { - gnt_widget_destroy(focus_list->data); + gnt_widget_destroy(ordered->data); } } else if (strcmp(buffer + 1, "q") == 0) @@ -653,11 +665,11 @@ else if (strcmp(buffer + 1, ",") == 0 && focus_list) { /* Re-order the list of windows */ - shift_window(focus_list->data, -1); + shift_window(ordered->data, -1); } else if (strcmp(buffer + 1, ".") == 0 && focus_list) { - shift_window(focus_list->data, 1); + shift_window(ordered->data, 1); } else if (strcmp(buffer + 1, "l") == 0) { @@ -681,7 +693,7 @@ { gboolean changed = FALSE; int x, y, w, h; - GntWidget *widget = GNT_WIDGET(focus_list->data); + GntWidget *widget = GNT_WIDGET(ordered->data); gnt_widget_get_position(widget, &x, &y); gnt_widget_get_size(widget, &w, &h); @@ -755,7 +767,7 @@ mode = GNT_KP_MODE_NORMAL; else if (buffer[0] == 27) { - GntWidget *widget = focus_list->data; + GntWidget *widget = ordered->data; gboolean changed = FALSE; int width, height; @@ -885,9 +897,9 @@ wbkgdset(stdscr, '\0' | COLOR_PAIR(GNT_COLOR_NORMAL)); refresh(); -#ifdef NCURSES_BUTTON_PRESSEDaa +#ifdef ALL_MOUSE_EVENTS if ((mouse_enabled = gnt_style_get_bool(GNT_STYLE_MOUSE, FALSE))) - mousemask(NCURSES_BUTTON_PRESSED | NCURSES_BUTTON_RELEASED | REPORT_MOUSE_POSITION, NULL); + mousemask(ALL_MOUSE_EVENTS | REPORT_MOUSE_POSITION, NULL); #endif wbkgdset(stdscr, '\0' | COLOR_PAIR(GNT_COLOR_NORMAL)); @@ -1014,7 +1026,7 @@ if (widget == window_list.window) return TRUE; - if (focus_list && focus_list->data == widget) + if (ordered && ordered->data == widget) { if (GNT_IS_BOX(widget) && (GNT_BOX(widget)->active == w || widget == w)) @@ -1029,7 +1041,7 @@ while (widget->parent) widget = widget->parent; - if (focus_list && focus_list->data == widget) + if (ordered && ordered->data == widget) return; GNT_WIDGET_SET_FLAGS(widget, GNT_WIDGET_URGENT); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sa...@us...> - 2006-08-30 17:09:52
|
Revision: 17087 http://svn.sourceforge.net/gaim/?rev=17087&view=rev Author: sadrul Date: 2006-08-30 10:09:44 -0700 (Wed, 30 Aug 2006) Log Message: ----------- Do stuff with SIGCHLD Modified Paths: -------------- trunk/console/libgnt/gntmain.c Modified: trunk/console/libgnt/gntmain.c =================================================================== --- trunk/console/libgnt/gntmain.c 2006-08-30 06:26:40 UTC (rev 17086) +++ trunk/console/libgnt/gntmain.c 2006-08-30 17:09:44 UTC (rev 17087) @@ -21,7 +21,11 @@ #include <signal.h> #include <string.h> #include <ctype.h> +#include <errno.h> +#include <sys/types.h> +#include <sys/wait.h> + /** * Notes: Interesting functions to look at: * scr_dump, scr_init, scr_restore: for workspaces @@ -882,21 +886,42 @@ return FALSE; } -#ifdef SIGWINCH +/* Xerox */ static void +clean_pid(void) +{ + int status; + pid_t pid; + + do { + pid = waitpid(-1, &status, WNOHANG); + } while (pid != 0 && pid != (pid_t)-1); + + if ((pid == (pid_t) - 1) && (errno != ECHILD)) { + char errmsg[BUFSIZ]; + snprintf(errmsg, BUFSIZ, "Warning: waitpid() returned %d", pid); + perror(errmsg); + } +} + +static void sighandler(int sig) { - if (sig == SIGWINCH) - { + switch (sig) { +#ifdef SIGWINCH + case SIGWINCH: werase(stdscr); wrefresh(stdscr); - g_idle_add(refresh_screen, NULL); + signal(SIGWINCH, sighandler); + break; +#endif + case SIGCHLD: + clean_pid(); + signal(SIGCHLD, sighandler); + break; } - - signal(SIGWINCH, sighandler); } -#endif static void init_wm() @@ -910,7 +935,7 @@ handle = g_module_open(name, G_MODULE_BIND_LAZY); if (handle) { gboolean (*init)(GntWM *); - if (g_module_symbol(handle, "gntwm_init", &init)) { + if (g_module_symbol(handle, "gntwm_init", (gpointer)&init)) { init(&wm); } } @@ -983,6 +1008,7 @@ #ifdef SIGWINCH signal(SIGWINCH, sighandler); #endif + signal(SIGCHLD, sighandler); g_type_init(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sa...@us...> - 2006-09-02 04:40:36
|
Revision: 17123 http://svn.sourceforge.net/gaim/?rev=17123&view=rev Author: sadrul Date: 2006-09-01 21:40:27 -0700 (Fri, 01 Sep 2006) Log Message: ----------- Reverse the colors of the borders of a window when resizing or moving. Modified Paths: -------------- trunk/console/libgnt/gntmain.c Modified: trunk/console/libgnt/gntmain.c =================================================================== --- trunk/console/libgnt/gntmain.c 2006-09-02 01:25:43 UTC (rev 17122) +++ trunk/console/libgnt/gntmain.c 2006-09-02 04:40:27 UTC (rev 17123) @@ -645,6 +645,41 @@ return FALSE; /* XXX: this should be TRUE */ } +static void +window_reverse(GntWidget *win, gboolean set) +{ + int i; + int w, h; + WINDOW *d; + + if (GNT_WIDGET_IS_FLAG_SET(win, GNT_WIDGET_NO_BORDER)) + return; + + d = dupwin(win->window); + gnt_widget_get_size(win, &w, &h); + +#define DECIDE(ch) (set ? ((ch) | A_REVERSE) : ((ch) & ~A_REVERSE)) + + /* the top and bottom */ + for (i = 0; i < w; i++) { + chtype ch = mvwinch(d, 0, i); + mvwaddch(win->window, 0, i, DECIDE(ch)); + ch = mvwinch(d, h-1, i); + mvwaddch(win->window, h-1, i, DECIDE(ch)); + } + + /* the left an right */ + for (i = 0; i < h; i++) { + chtype ch = mvwinch(d, i, 0); + mvwaddch(win->window, i, 0, DECIDE(ch)); + ch = mvwinch(d, i, w-1); + mvwaddch(win->window, i, w-1, DECIDE(ch)); + } + + wrefresh(win->window); + delwin(d); +} + static gboolean io_invoke(GIOChannel *source, GIOCondition cond, gpointer null) { @@ -728,6 +763,7 @@ { /* Move a window */ mode = GNT_KP_MODE_MOVE; + window_reverse(ordered->data, TRUE); } else if (strcmp(buffer + 1, "w") == 0 && focus_list) { @@ -744,6 +780,7 @@ { /* Resize window */ mode = GNT_KP_MODE_RESIZE; + window_reverse(ordered->data, TRUE); } else if (strcmp(buffer + 1, ",") == 0 && focus_list) { @@ -828,6 +865,7 @@ else if (*buffer == '\r') { mode = GNT_KP_MODE_NORMAL; + window_reverse(ordered->data, FALSE); } } else if (mode == GNT_KP_MODE_WINDOW_LIST && _list.window) @@ -848,10 +886,10 @@ } else if (mode == GNT_KP_MODE_RESIZE) { - if (buffer[0] == '\r' || (buffer[0] == 27 && buffer[1] == 0)) + if (buffer[0] == '\r' || (buffer[0] == 27 && buffer[1] == 0)) { mode = GNT_KP_MODE_NORMAL; - else if (buffer[0] == 27) - { + window_reverse(ordered->data, FALSE); + } else if (buffer[0] == 27) { GntWidget *widget = ordered->data; gboolean changed = FALSE; int width, height; @@ -888,6 +926,7 @@ if (changed) { gnt_screen_resize_widget(widget, width, height); + window_reverse(widget, TRUE); } } } @@ -1299,7 +1338,7 @@ win = action_list->window; tree = action_list->tree; - gnt_box_set_title(GNT_BOX(win), "Available Actions"); + gnt_box_set_title(GNT_BOX(win), "Actions"); GNT_WIDGET_SET_FLAGS(tree, GNT_WIDGET_NO_BORDER); /* XXX: Do we really want this? */ gnt_tree_set_compare_func(GNT_TREE(tree), compare_action); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sa...@us...> - 2006-09-03 02:12:31
|
Revision: 17133 http://svn.sourceforge.net/gaim/?rev=17133&view=rev Author: sadrul Date: 2006-09-02 19:12:26 -0700 (Sat, 02 Sep 2006) Log Message: ----------- If the window-title has wide-characters, and you go in move/resize mode, then reversing the colors screws up the title. This is a fix for that. It's a bit hackish, but that's the way it's gotta be for now. Modified Paths: -------------- trunk/console/libgnt/gntmain.c Modified: trunk/console/libgnt/gntmain.c =================================================================== --- trunk/console/libgnt/gntmain.c 2006-09-02 23:23:30 UTC (rev 17132) +++ trunk/console/libgnt/gntmain.c 2006-09-03 02:12:26 UTC (rev 17133) @@ -1,3 +1,6 @@ +#define _XOPEN_SOURCE +#define _XOPEN_SOURCE_EXTENDED + #include "config.h" #ifdef HAVE_NCURSESW_INC @@ -28,6 +31,8 @@ #include <sys/types.h> #include <sys/wait.h> +#include <wchar.h> + /** * Notes: Interesting functions to look at: * scr_dump, scr_init, scr_restore: for workspaces @@ -647,6 +652,28 @@ return FALSE; /* XXX: this should be TRUE */ } +/* Returns the onscreen width of the character at the position */ +static int +reverse_char(WINDOW *d, int y, int x, gboolean set) +{ + /* This is supposed to simply in_wch the cchar_t, set the attribute, + * and add_wch. But that doesn't currently work, possibly because of + * a bug in ncurses. This is an ugly hack to work around that. */ + cchar_t ch; + int wc = 1, j; + +#define DECIDE(ch) (set ? ((ch) | WA_REVERSE) : ((ch) & ~WA_REVERSE)) + + if (mvwin_wch(d, y, x, &ch) == OK) { + wc = wcswidth(ch.chars, CCHARW_MAX); + for (j = 0; j < wc; j++) + mvwdelch(d, y, x); + ch.attr = DECIDE(ch.attr); + mvwins_wch(d, y, x, &ch); + } + return wc; +} + static void window_reverse(GntWidget *win, gboolean set) { @@ -660,23 +687,13 @@ d = win->window; gnt_widget_get_size(win, &w, &h); -#define DECIDE(ch) (set ? ((ch) | A_REVERSE) : ((ch) & ~A_REVERSE)) - /* the top and bottom */ - for (i = 0; i < w; i++) { - chtype ch = mvwinch(d, 0, i); - mvwaddch(win->window, 0, i, DECIDE(ch)); - ch = mvwinch(d, h-1, i); - mvwaddch(win->window, h-1, i, DECIDE(ch)); - } + for (i = 0; i < w; i += reverse_char(d, 0, i, set)); + for (i = 0; i < w; i += reverse_char(d, h-1, i, set)); - /* the left an right */ - for (i = 0; i < h; i++) { - chtype ch = mvwinch(d, i, 0); - mvwaddch(win->window, i, 0, DECIDE(ch)); - ch = mvwinch(d, i, w-1); - mvwaddch(win->window, i, w-1, DECIDE(ch)); - } + /* the left and right */ + for (i = 0; i < h; i += reverse_char(d, i, 0, set)); + for (i = 0; i < h; i += reverse_char(d, i, w-1, set)); wrefresh(win->window); } @@ -854,8 +871,7 @@ else if (buffer[1] == 0) { mode = GNT_KP_MODE_NORMAL; - changed = TRUE; - gnt_widget_draw(widget); + window_reverse(widget, FALSE); } if (changed) @@ -964,7 +980,7 @@ if ((pid == (pid_t) - 1) && (errno != ECHILD)) { char errmsg[BUFSIZ]; - snprintf(errmsg, BUFSIZ, "Warning: waitpid() returned %d", pid); + g_snprintf(errmsg, BUFSIZ, "Warning: waitpid() returned %d", pid); perror(errmsg); } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <the...@us...> - 2006-09-03 21:22:16
|
Revision: 17145 http://svn.sourceforge.net/gaim/?rev=17145&view=rev Author: thekingant Date: 2006-09-03 14:22:14 -0700 (Sun, 03 Sep 2006) Log Message: ----------- This fixes compiling for me. The problem is that panel.h includes /usr/include/ncurses/curses.h, which then prevents us from correctly including /usr/include/ncursesw/ncurses.h. So I just moved the include for panel.h below the other include Modified Paths: -------------- trunk/console/libgnt/gntmain.c Modified: trunk/console/libgnt/gntmain.c =================================================================== --- trunk/console/libgnt/gntmain.c 2006-09-03 19:06:50 UTC (rev 17144) +++ trunk/console/libgnt/gntmain.c 2006-09-03 21:22:14 UTC (rev 17145) @@ -3,8 +3,6 @@ #include "config.h" -#include <panel.h> - #include <gmodule.h> #include "gnt.h" @@ -15,6 +13,8 @@ #include "gnttree.h" #include "gntwm.h" +#include <panel.h> + #include <stdio.h> #include <stdlib.h> #include <locale.h> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sa...@us...> - 2006-09-12 23:56:31
|
Revision: 17265 http://svn.sourceforge.net/gaim/?rev=17265&view=rev Author: sadrul Date: 2006-09-12 16:56:25 -0700 (Tue, 12 Sep 2006) Log Message: ----------- This should cause new windows caused by user actions (click, keypress) to get focus on creation. Modified Paths: -------------- trunk/console/libgnt/gntmain.c Modified: trunk/console/libgnt/gntmain.c =================================================================== --- trunk/console/libgnt/gntmain.c 2006-09-12 23:49:26 UTC (rev 17264) +++ trunk/console/libgnt/gntmain.c 2006-09-12 23:56:25 UTC (rev 17265) @@ -46,6 +46,13 @@ static gboolean ascii_only; static gboolean mouse_enabled; +/** + * 'event_stack' will be set to TRUE when a user-event, ie. a mouse-click + * or a key-press is being processed. This variable will be used to determine + * whether to give focus to a new window. + */ +static gboolean event_stack; + static GMainLoop *loop; static struct @@ -132,7 +139,11 @@ focus_list = g_list_append(focus_list, widget); - ordered = g_list_append(ordered, widget); + if (event_stack) { + ordered = g_list_prepend(ordered, widget); + g_object_set_data(G_OBJECT(widget), "give_focus", GINT_TO_POINTER(event_stack)); + } else + ordered = g_list_append(ordered, widget); gnt_widget_set_focus(widget, TRUE); if (w) @@ -741,6 +752,7 @@ exit(1); } + event_stack = TRUE; keys[rd] = 0; if (keys[0] == 27 && keys[1] == 'd' && keys[2] == 0) @@ -756,8 +768,10 @@ if (wm.key_pressed) { buffer = wm.key_pressed(keys); - if (buffer == NULL) + if (buffer == NULL) { + event_stack = FALSE; return TRUE; + } } else buffer = keys; @@ -969,6 +983,7 @@ } } + event_stack = FALSE; return TRUE; } @@ -1204,10 +1219,14 @@ else node->panel = new_panel(node->me->window); set_panel_userptr(node->panel, node); - if (!GNT_WIDGET_IS_FLAG_SET(node->me, GNT_WIDGET_TRANSIENT)) - { - bottom_panel(node->panel); /* New windows should not grab focus */ - gnt_widget_set_urgent(node->me); + if (!GNT_WIDGET_IS_FLAG_SET(node->me, GNT_WIDGET_TRANSIENT)) { + if (!g_object_get_data(G_OBJECT(node->me), "give_focus")) { + bottom_panel(node->panel); /* New windows should not grab focus */ + gnt_widget_set_urgent(node->me); + } + else { + bring_on_top(node->me); + } } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sa...@us...> - 2006-09-26 18:54:20
|
Revision: 17358 http://svn.sourceforge.net/gaim/?rev=17358&view=rev Author: sadrul Date: 2006-09-26 11:54:12 -0700 (Tue, 26 Sep 2006) Log Message: ----------- The html-dumps should be a little better now. There's no way of knowing the rgb-contents of the default colors (-1), so gnt is going to make an assumption for the colors and use that. Modified Paths: -------------- trunk/console/libgnt/gntmain.c Modified: trunk/console/libgnt/gntmain.c =================================================================== --- trunk/console/libgnt/gntmain.c 2006-09-26 18:21:14 UTC (rev 17357) +++ trunk/console/libgnt/gntmain.c 2006-09-26 18:54:12 UTC (rev 17358) @@ -474,7 +474,8 @@ CHECK(A_UNDERLINE, "<u>", "</u>"); CHECK(A_BLINK, "<blink>", "</blink>"); - if ((now & A_COLOR) != (old & A_COLOR)) + if ((now & A_COLOR) != (old & A_COLOR) || + (now & A_REVERSE) != (old & A_REVERSE)) { int ret; short fgp, bgp, r, g, b; @@ -484,6 +485,12 @@ } fg, bg; ret = pair_content(PAIR_NUMBER(now & A_COLOR), &fgp, &bgp); + if (fgp == -1) + fgp = COLOR_BLACK; + if (bgp == -1) + bgp = COLOR_WHITE; + if (now & A_REVERSE) + fgp ^= bgp ^= fgp ^= bgp; /* *wink* */ ret = color_content(fgp, &r, &g, &b); fg.r = r; fg.b = b; fg.g = g; ret = color_content(bgp, &r, &g, &b); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sa...@us...> - 2006-09-26 20:07:07
|
Revision: 17361 http://svn.sourceforge.net/gaim/?rev=17361&view=rev Author: sadrul Date: 2006-09-26 13:07:02 -0700 (Tue, 26 Sep 2006) Log Message: ----------- Fix the highlighting for move/resize of windows when shadows are turned on. Modified Paths: -------------- trunk/console/libgnt/gntmain.c Modified: trunk/console/libgnt/gntmain.c =================================================================== --- trunk/console/libgnt/gntmain.c 2006-09-26 20:01:29 UTC (rev 17360) +++ trunk/console/libgnt/gntmain.c 2006-09-26 20:07:02 UTC (rev 17361) @@ -744,6 +744,11 @@ d = win->window; gnt_widget_get_size(win, &w, &h); + if (gnt_widget_has_shadow(win)) { + --w; + --h; + } + /* the top and bottom */ for (i = 0; i < w; i += reverse_char(d, 0, i, set)); for (i = 0; i < w; i += reverse_char(d, h-1, i, set)); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sa...@us...> - 2006-10-04 20:31:48
|
Revision: 17432 http://svn.sourceforge.net/gaim/?rev=17432&view=rev Author: sadrul Date: 2006-10-04 13:31:44 -0700 (Wed, 04 Oct 2006) Log Message: ----------- If exiting, print a more helpful error message. I once got an "Invalid file descriptor" (or something similar) once, which I don't know why would happen. Modified Paths: -------------- trunk/console/libgnt/gntmain.c Modified: trunk/console/libgnt/gntmain.c =================================================================== --- trunk/console/libgnt/gntmain.c 2006-10-04 19:05:22 UTC (rev 17431) +++ trunk/console/libgnt/gntmain.c 2006-10-04 20:31:44 UTC (rev 17432) @@ -772,7 +772,8 @@ if (rd < 0) { endwin(); - printf("ERROR!\n"); + printf("ERROR: %s\n", strerror(errno)); + printf("File descriptor is: %d\n\nGIOChannel is: %p", STDIN_FILENO, source); exit(1); } else if (rd == 0) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sa...@us...> - 2006-10-17 04:35:26
|
Revision: 17493 http://svn.sourceforge.net/gaim/?rev=17493&view=rev Author: sadrul Date: 2006-10-16 21:34:55 -0700 (Mon, 16 Oct 2006) Log Message: ----------- Patch from Richard Nelson (wabz). This will allow the WM to do stuff when a window is closed. Also, ignore SIGPIPE, although this doesn't seem to help. Modified Paths: -------------- trunk/console/libgnt/gntmain.c Modified: trunk/console/libgnt/gntmain.c =================================================================== --- trunk/console/libgnt/gntmain.c 2006-10-17 04:07:19 UTC (rev 17492) +++ trunk/console/libgnt/gntmain.c 2006-10-17 04:34:55 UTC (rev 17493) @@ -268,7 +268,8 @@ GNT_WIDGET_UNSET_FLAGS(w, GNT_WIDGET_URGENT); if (wm.window_update) { GntNode *node = g_hash_table_lookup(nodes, w); - wm.window_update(node->panel, w); + if (node) + wm.window_update(node->panel, w); } } else if (GNT_WIDGET_IS_FLAG_SET(w, GNT_WIDGET_URGENT)) { /* This is a window with the URGENT hint set */ @@ -1158,6 +1159,7 @@ signal(SIGWINCH, sighandler); #endif signal(SIGCHLD, sighandler); + signal(SIGPIPE, SIG_IGN); g_type_init(); @@ -1225,6 +1227,9 @@ if (node == NULL) /* Yay! Nothing to do. */ return; + if (GNT_WIDGET_IS_FLAG_SET(widget, GNT_WIDGET_DESTROYING) && wm.close_window) + wm.close_window(widget); + g_hash_table_remove(nodes, widget); if (window_list) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sa...@us...> - 2006-10-17 05:00:49
|
Revision: 17494 http://svn.sourceforge.net/gaim/?rev=17494&view=rev Author: sadrul Date: 2006-10-16 22:00:19 -0700 (Mon, 16 Oct 2006) Log Message: ----------- I believe this was required to make libgnt compile in osx (Is this correct, LSchiere?) Modified Paths: -------------- trunk/console/libgnt/gntmain.c Modified: trunk/console/libgnt/gntmain.c =================================================================== --- trunk/console/libgnt/gntmain.c 2006-10-17 04:34:55 UTC (rev 17493) +++ trunk/console/libgnt/gntmain.c 2006-10-17 05:00:19 UTC (rev 17494) @@ -1,4 +1,7 @@ #define _GNU_SOURCE +#if defined(__APPLE__) +#define _XOPEN_SOURCE_EXTENDED +#endif #include "config.h" This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sa...@us...> - 2006-10-18 04:40:05
|
Revision: 17517 http://svn.sourceforge.net/gaim/?rev=17517&view=rev Author: sadrul Date: 2006-10-17 21:39:59 -0700 (Tue, 17 Oct 2006) Log Message: ----------- Patch from Richard Nelson (wabz). This is not necessary right now, but it's probably going to be necessary for workspaces (wabz is doing a WM for that). Modified Paths: -------------- trunk/console/libgnt/gntmain.c Modified: trunk/console/libgnt/gntmain.c =================================================================== --- trunk/console/libgnt/gntmain.c 2006-10-18 04:21:10 UTC (rev 17516) +++ trunk/console/libgnt/gntmain.c 2006-10-18 04:39:59 UTC (rev 17517) @@ -271,8 +271,7 @@ GNT_WIDGET_UNSET_FLAGS(w, GNT_WIDGET_URGENT); if (wm.window_update) { GntNode *node = g_hash_table_lookup(nodes, w); - if (node) - wm.window_update(node->panel, w); + wm.window_update(node ? node->panel : NULL, w); } } else if (GNT_WIDGET_IS_FLAG_SET(w, GNT_WIDGET_URGENT)) { /* This is a window with the URGENT hint set */ @@ -1318,7 +1317,7 @@ if (wm.window_update) { GntNode *node = g_hash_table_lookup(nodes, widget); - wm.window_update(node->panel, widget); + wm.window_update(node ? node->panel : NULL, widget); } draw_taskbar(FALSE); @@ -1382,7 +1381,7 @@ if (wm.window_update) { GntNode *node = g_hash_table_lookup(nodes, widget); - wm.window_update(node->panel, widget); + wm.window_update(node ? node->panel : NULL, widget); } draw_taskbar(FALSE); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |