equal
deleted
inserted
replaced
1882 // value: winbuf structure |
1882 // value: winbuf structure |
1883 // data: int, set to 1 if the buffer should be closed. |
1883 // data: int, set to 1 if the buffer should be closed. |
1884 // NOTE: does not work for special buffers. |
1884 // NOTE: does not work for special buffers. |
1885 static void buffer_purge(gpointer key, gpointer value, gpointer data) |
1885 static void buffer_purge(gpointer key, gpointer value, gpointer data) |
1886 { |
1886 { |
1887 int closebuf = (gint)data; // XXX GPOINTER_TO_INT? |
1887 int *p_closebuf = data; |
1888 winbuf *win_entry = value; |
1888 winbuf *win_entry = value; |
1889 |
1889 |
1890 // Delete the current hbuf |
1890 // Delete the current hbuf |
1891 hbuf_free(&win_entry->bd->hbuf); |
1891 hbuf_free(&win_entry->bd->hbuf); |
1892 |
1892 |
1893 if (closebuf) { |
1893 if (*p_closebuf) { |
1894 g_hash_table_remove(winbufhash, key); |
1894 g_hash_table_remove(winbufhash, key); |
1895 } else { |
1895 } else { |
1896 win_entry->bd->cleared = FALSE; |
1896 win_entry->bd->cleared = FALSE; |
1897 win_entry->bd->top = NULL; |
1897 win_entry->bd->top = NULL; |
1898 } |
1898 } |
1903 // If closebuf is 1, close the buffer. |
1903 // If closebuf is 1, close the buffer. |
1904 void scr_BufferPurge(int closebuf) |
1904 void scr_BufferPurge(int closebuf) |
1905 { |
1905 { |
1906 winbuf *win_entry; |
1906 winbuf *win_entry; |
1907 guint isspe; |
1907 guint isspe; |
|
1908 guint *p_closebuf; |
1908 |
1909 |
1909 // Get win_entry |
1910 // Get win_entry |
1910 if (!current_buddy) return; |
1911 if (!current_buddy) return; |
1911 isspe = buddy_gettype(BUDDATA(current_buddy)) & ROSTER_TYPE_SPECIAL; |
1912 isspe = buddy_gettype(BUDDATA(current_buddy)) & ROSTER_TYPE_SPECIAL; |
1912 win_entry = scr_SearchWindow(CURRENT_JID, isspe); |
1913 win_entry = scr_SearchWindow(CURRENT_JID, isspe); |
1913 if (!win_entry) return; |
1914 if (!win_entry) return; |
1914 |
1915 |
1915 if (!isspe) { |
1916 if (!isspe) { |
1916 buffer_purge((gpointer)CURRENT_JID, win_entry, (gpointer)closebuf); |
1917 p_closebuf = g_new(guint, 1); |
1917 // XXX GINT_TO_POINTER? |
1918 *p_closebuf = closebuf; |
|
1919 buffer_purge((gpointer)CURRENT_JID, win_entry, p_closebuf); |
|
1920 g_free(p_closebuf); |
1918 if (closebuf) { |
1921 if (closebuf) { |
1919 scr_set_chatmode(FALSE); |
1922 scr_set_chatmode(FALSE); |
1920 currentWindow = NULL; |
1923 currentWindow = NULL; |
1921 } |
1924 } |
1922 } else { |
1925 } else { |
1937 update_panels(); |
1940 update_panels(); |
1938 } |
1941 } |
1939 |
1942 |
1940 void scr_BufferPurgeAll(int closebuf) |
1943 void scr_BufferPurgeAll(int closebuf) |
1941 { |
1944 { |
1942 g_hash_table_foreach(winbufhash, buffer_purge, (gpointer)closebuf); |
1945 guint *p_closebuf; |
1943 // XXX GINT_TO_POINTER? |
1946 p_closebuf = g_new(guint, 1); |
|
1947 |
|
1948 *p_closebuf = closebuf; |
|
1949 g_hash_table_foreach(winbufhash, buffer_purge, p_closebuf); |
|
1950 g_free(p_closebuf); |
1944 |
1951 |
1945 if (closebuf) { |
1952 if (closebuf) { |
1946 scr_set_chatmode(FALSE); |
1953 scr_set_chatmode(FALSE); |
1947 currentWindow = NULL; |
1954 currentWindow = NULL; |
1948 } |
1955 } |