split dirent.h and more xtray support

This commit is contained in:
berkeviktor@aol.com 2011-01-14 06:43:56 +01:00
parent 1effb26d5f
commit e26a1c5f7a
9 changed files with 335 additions and 236 deletions

View File

@ -61,7 +61,7 @@ copy ..\plugins\python\xcpython.dll %XCHAT_DEST%\plugins
copy ..\plugins\tcl\xctcl.dll %XCHAT_DEST%\plugins
copy ..\plugins\upd\xcupd.dll %XCHAT_DEST%\plugins
::copy ..\plugins\xdcc\xcxdcc.dll %XCHAT_DEST%\plugins
::copy ..\plugins\xtray\xtray.dll %XCHAT_DEST%\plugins
copy ..\plugins\xtray\xtray.dll %XCHAT_DEST%\plugins
copy ..\plugins\winamp\xcwinamp.dll %XCHAT_DEST%\plugins
copy %DEPS_ROOT%\bin\lua51.dll %XCHAT_DEST%
pause

View File

@ -1,7 +1,9 @@
include "..\..\src\makeinc.mak"
DIRENTLIB = ..\..\src\common\dirent.lib
all: lua.obj lua.def
link $(LDFLAGS) $(LIBS) /dll /out:xclua.dll $(LUALIB).lib /def:lua.def lua.obj
link $(LDFLAGS) $(LIBS) /dll /out:xclua.dll $(LUALIB).lib $(DIRENTLIB) /def:lua.def lua.obj
lua.def:
echo EXPORTS > lua.def

View File

@ -1,5 +1,6 @@
include "..\..\src\makeinc.mak"
DIRENTLIB = ..\..\src\common\dirent.lib
TARGET = $(PYTHONOUTPUT)
all: $(TARGET)
@ -14,7 +15,7 @@ python.obj: python.c
$(CC) $(CFLAGS) /I.. /Dusleep=_sleep /DPATH_MAX=255 python.c $(GLIB) /I$(PYTHONPATH)\include /DPYTHON_DLL=\"$(PYTHONLIB).dll\"
$(TARGET): python.obj python.def
$(LINK) /dll /out:$(TARGET) $(LDFLAGS) python.obj /libpath:$(PYTHONPATH)\libs $(PYTHONLIB).lib $(LIBS) /def:python.def
$(LINK) /dll /out:$(TARGET) $(LDFLAGS) python.obj /libpath:$(PYTHONPATH)\libs $(PYTHONLIB).lib $(DIRENTLIB) $(LIBS) /def:python.def
clean:
del $(TARGET)

199
src/common/dirent.c Normal file
View File

@ -0,0 +1,199 @@
/*****************************************************************************
* dirent.h - dirent API for Microsoft Visual Studio
*
* Copyright (C) 2006 Toni Ronkko
*
* Permission is hereby granted, free of charge, to any person obtaining
* a copy of this software and associated documentation files (the
* ``Software''), to deal in the Software without restriction, including
* without limitation the rights to use, copy, modify, merge, publish,
* distribute, sublicense, and/or sell copies of the Software, and to
* permit persons to whom the Software is furnished to do so, subject to
* the following conditions:
*
* The above copyright notice and this permission notice shall be included
* in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
* IN NO EVENT SHALL TONI RONKKO BE LIABLE FOR ANY CLAIM, DAMAGES OR
* OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
* OTHER DEALINGS IN THE SOFTWARE.
*
* Dec 15, 2009, John Cunningham
* Added rewinddir member function
*
* Jan 18, 2008, Toni Ronkko
* Using FindFirstFileA and WIN32_FIND_DATAA to avoid converting string
* between multi-byte and unicode representations. This makes the
* code simpler and also allows the code to be compiled under MingW. Thanks
* to Azriel Fasten for the suggestion.
*
* Mar 4, 2007, Toni Ronkko
* Bug fix: due to the strncpy_s() function this file only compiled in
* Visual Studio 2005. Using the new string functions only when the
* compiler version allows.
*
* Nov 2, 2006, Toni Ronkko
* Major update: removed support for Watcom C, MS-DOS and Turbo C to
* simplify the file, updated the code to compile cleanly on Visual
* Studio 2005 with both unicode and multi-byte character strings,
* removed rewinddir() as it had a bug.
*
* Aug 20, 2006, Toni Ronkko
* Removed all remarks about MSVC 1.0, which is antiqued now. Simplified
* comments by removing SGML tags.
*
* May 14 2002, Toni Ronkko
* Embedded the function definitions directly to the header so that no
* source modules need to be included in the Visual Studio project. Removed
* all the dependencies to other projects so that this very header can be
* used independently.
*
* May 28 1998, Toni Ronkko
* First version.
*****************************************************************************/
#include "dirent.h"
/* Use the new safe string functions introduced in Visual Studio 2005 */
#if defined(_MSC_VER) && _MSC_VER >= 1400
# define STRNCPY(dest,src,size) strncpy_s((dest),(size),(src),_TRUNCATE)
#else
# define STRNCPY(dest,src,size) strncpy((dest),(src),(size))
#endif
/*****************************************************************************
* Open directory stream DIRNAME for read and return a pointer to the
* internal working area that is used to retrieve individual directory
* entries.
*/
DIR *opendir(const char *dirname)
{
DIR *dirp;
assert (dirname != NULL);
assert (strlen (dirname) < MAX_PATH);
/* construct new DIR structure */
dirp = (DIR*) malloc (sizeof (struct DIR));
if (dirp != NULL) {
char *p;
/* take directory name... */
STRNCPY (dirp->patt, dirname, sizeof(dirp->patt));
dirp->patt[MAX_PATH] = '\0';
/* ... and append search pattern to it */
p = strchr (dirp->patt, '\0');
if (dirp->patt < p && *(p-1) != '\\' && *(p-1) != ':') {
*p++ = '\\';
}
*p++ = '*';
*p = '\0';
/* open stream and retrieve first file */
dirp->search_handle = FindFirstFileA (dirp->patt, &dirp->current.data);
if (dirp->search_handle == INVALID_HANDLE_VALUE) {
/* invalid search pattern? */
free (dirp);
return NULL;
}
/* there is an un-processed directory entry in memory now */
dirp->cached = 1;
}
return dirp;
}
/*****************************************************************************
* Read a directory entry, and return a pointer to a dirent structure
* containing the name of the entry in d_name field. Individual directory
* entries returned by this very function include regular files,
* sub-directories, pseudo-directories "." and "..", but also volume labels,
* hidden files and system files may be returned.
*/
struct dirent *readdir(DIR *dirp)
{
assert (dirp != NULL);
if (dirp->search_handle == INVALID_HANDLE_VALUE) {
/* directory stream was opened/rewound incorrectly or ended normally */
return NULL;
}
/* get next directory entry */
if (dirp->cached != 0) {
/* a valid directory entry already in memory */
dirp->cached = 0;
} else {
/* read next directory entry from disk */
if (FindNextFileA (dirp->search_handle, &dirp->current.data) == FALSE) {
/* the very last file has been processed or an error occured */
FindClose (dirp->search_handle);
dirp->search_handle = INVALID_HANDLE_VALUE;
return NULL;
}
}
/* copy as a multibyte character string */
STRNCPY ( dirp->current.d_name,
dirp->current.data.cFileName,
sizeof(dirp->current.d_name) );
dirp->current.d_name[MAX_PATH] = '\0';
return &dirp->current;
}
/*****************************************************************************
* Close directory stream opened by opendir() function. Close of the
* directory stream invalidates the DIR structure as well as any previously
* read directory entry.
*/
int closedir(DIR *dirp)
{
assert (dirp != NULL);
/* release search handle */
if (dirp->search_handle != INVALID_HANDLE_VALUE) {
FindClose (dirp->search_handle);
dirp->search_handle = INVALID_HANDLE_VALUE;
}
/* release directory handle */
free (dirp);
return 0;
}
/*****************************************************************************
* Resets the position of the directory stream to which dirp refers to the
* beginning of the directory. It also causes the directory stream to refer
* to the current state of the corresponding directory, as a call to opendir()
* would have done. If dirp does not refer to a directory stream, the effect
* is undefined.
*/
void rewinddir(DIR* dirp)
{
/* release search handle */
if (dirp->search_handle != INVALID_HANDLE_VALUE) {
FindClose (dirp->search_handle);
dirp->search_handle = INVALID_HANDLE_VALUE;
}
/* open new search handle and retrieve first file */
dirp->search_handle = FindFirstFileA (dirp->patt, &dirp->current.data);
if (dirp->search_handle == INVALID_HANDLE_VALUE) {
/* invalid search pattern? */
free (dirp);
return;
}
/* there is an un-processed directory entry in memory now */
dirp->cached = 1;
}

View File

@ -1,60 +1,3 @@
/*****************************************************************************
* dirent.h - dirent API for Microsoft Visual Studio
*
* Copyright (C) 2006 Toni Ronkko
*
* Permission is hereby granted, free of charge, to any person obtaining
* a copy of this software and associated documentation files (the
* ``Software''), to deal in the Software without restriction, including
* without limitation the rights to use, copy, modify, merge, publish,
* distribute, sublicense, and/or sell copies of the Software, and to
* permit persons to whom the Software is furnished to do so, subject to
* the following conditions:
*
* The above copyright notice and this permission notice shall be included
* in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
* IN NO EVENT SHALL TONI RONKKO BE LIABLE FOR ANY CLAIM, DAMAGES OR
* OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
* OTHER DEALINGS IN THE SOFTWARE.
*
* Dec 15, 2009, John Cunningham
* Added rewinddir member function
*
* Jan 18, 2008, Toni Ronkko
* Using FindFirstFileA and WIN32_FIND_DATAA to avoid converting string
* between multi-byte and unicode representations. This makes the
* code simpler and also allows the code to be compiled under MingW. Thanks
* to Azriel Fasten for the suggestion.
*
* Mar 4, 2007, Toni Ronkko
* Bug fix: due to the strncpy_s() function this file only compiled in
* Visual Studio 2005. Using the new string functions only when the
* compiler version allows.
*
* Nov 2, 2006, Toni Ronkko
* Major update: removed support for Watcom C, MS-DOS and Turbo C to
* simplify the file, updated the code to compile cleanly on Visual
* Studio 2005 with both unicode and multi-byte character strings,
* removed rewinddir() as it had a bug.
*
* Aug 20, 2006, Toni Ronkko
* Removed all remarks about MSVC 1.0, which is antiqued now. Simplified
* comments by removing SGML tags.
*
* May 14 2002, Toni Ronkko
* Embedded the function definitions directly to the header so that no
* source modules need to be included in the Visual Studio project. Removed
* all the dependencies to other projects so that this very header can be
* used independently.
*
* May 28 1998, Toni Ronkko
* First version.
*****************************************************************************/
#ifndef DIRENT_H
#define DIRENT_H
@ -62,14 +5,12 @@
#include <string.h>
#include <assert.h>
typedef struct dirent
{
char d_name[MAX_PATH + 1]; /* current dir entry (multi-byte char string) */
WIN32_FIND_DATAA data; /* file attributes */
} dirent;
typedef struct DIR
{
dirent current; /* Current directory entry */
@ -78,153 +19,10 @@ typedef struct DIR
char patt[MAX_PATH + 3]; /* search pattern (3 = pattern + "\\*\0") */
} DIR;
/* Forward declarations */
static DIR *opendir (const char *dirname);
static struct dirent *readdir (DIR *dirp);
static int closedir (DIR *dirp);
static void rewinddir(DIR* dirp);
/* Use the new safe string functions introduced in Visual Studio 2005 */
#if defined(_MSC_VER) && _MSC_VER >= 1400
# define STRNCPY(dest,src,size) strncpy_s((dest),(size),(src),_TRUNCATE)
#else
# define STRNCPY(dest,src,size) strncpy((dest),(src),(size))
#endif
/*****************************************************************************
* Open directory stream DIRNAME for read and return a pointer to the
* internal working area that is used to retrieve individual directory
* entries.
*/
static DIR *opendir(const char *dirname)
{
DIR *dirp;
assert (dirname != NULL);
assert (strlen (dirname) < MAX_PATH);
/* construct new DIR structure */
dirp = (DIR*) malloc (sizeof (struct DIR));
if (dirp != NULL) {
char *p;
/* take directory name... */
STRNCPY (dirp->patt, dirname, sizeof(dirp->patt));
dirp->patt[MAX_PATH] = '\0';
/* ... and append search pattern to it */
p = strchr (dirp->patt, '\0');
if (dirp->patt < p && *(p-1) != '\\' && *(p-1) != ':') {
*p++ = '\\';
}
*p++ = '*';
*p = '\0';
/* open stream and retrieve first file */
dirp->search_handle = FindFirstFileA (dirp->patt, &dirp->current.data);
if (dirp->search_handle == INVALID_HANDLE_VALUE) {
/* invalid search pattern? */
free (dirp);
return NULL;
}
/* there is an un-processed directory entry in memory now */
dirp->cached = 1;
}
return dirp;
}
/*****************************************************************************
* Read a directory entry, and return a pointer to a dirent structure
* containing the name of the entry in d_name field. Individual directory
* entries returned by this very function include regular files,
* sub-directories, pseudo-directories "." and "..", but also volume labels,
* hidden files and system files may be returned.
*/
static struct dirent *readdir(DIR *dirp)
{
assert (dirp != NULL);
if (dirp->search_handle == INVALID_HANDLE_VALUE) {
/* directory stream was opened/rewound incorrectly or ended normally */
return NULL;
}
/* get next directory entry */
if (dirp->cached != 0) {
/* a valid directory entry already in memory */
dirp->cached = 0;
} else {
/* read next directory entry from disk */
if (FindNextFileA (dirp->search_handle, &dirp->current.data) == FALSE) {
/* the very last file has been processed or an error occured */
FindClose (dirp->search_handle);
dirp->search_handle = INVALID_HANDLE_VALUE;
return NULL;
}
}
/* copy as a multibyte character string */
STRNCPY ( dirp->current.d_name,
dirp->current.data.cFileName,
sizeof(dirp->current.d_name) );
dirp->current.d_name[MAX_PATH] = '\0';
return &dirp->current;
}
/*****************************************************************************
* Close directory stream opened by opendir() function. Close of the
* directory stream invalidates the DIR structure as well as any previously
* read directory entry.
*/
static int closedir(DIR *dirp)
{
assert (dirp != NULL);
/* release search handle */
if (dirp->search_handle != INVALID_HANDLE_VALUE) {
FindClose (dirp->search_handle);
dirp->search_handle = INVALID_HANDLE_VALUE;
}
/* release directory handle */
free (dirp);
return 0;
}
/*****************************************************************************
* Resets the position of the directory stream to which dirp refers to the
* beginning of the directory. It also causes the directory stream to refer
* to the current state of the corresponding directory, as a call to opendir()
* would have done. If dirp does not refer to a directory stream, the effect
* is undefined.
*/
static void rewinddir(DIR* dirp)
{
/* release search handle */
if (dirp->search_handle != INVALID_HANDLE_VALUE) {
FindClose (dirp->search_handle);
dirp->search_handle = INVALID_HANDLE_VALUE;
}
/* open new search handle and retrieve first file */
dirp->search_handle = FindFirstFileA (dirp->patt, &dirp->current.data);
if (dirp->search_handle == INVALID_HANDLE_VALUE) {
/* invalid search pattern? */
free (dirp);
return;
}
/* there is an un-processed directory entry in memory now */
dirp->cached = 1;
}
DIR *opendir (const char *dirname);
struct dirent *readdir (DIR *dirp);
int closedir (DIR *dirp);
void rewinddir(DIR* dirp);
#endif /*DIRENT_H*/

View File

@ -5,6 +5,7 @@ cfgfiles.obj \
chanopt.obj \
ctcp.obj \
dcc.obj \
dirent.obj \
history.obj \
ignore.obj \
inbound.obj \
@ -14,7 +15,6 @@ notify.obj \
outbound.obj \
plugin.obj \
plugin-timer.obj \
portable.obj \
proto-irc.obj \
server.obj \
servlist.obj \
@ -25,16 +25,21 @@ tree.obj \
url.obj \
userlist.obj \
util.obj \
wdkutil.obj \
xchat.obj
all: $(COMMON_OBJECTS) xchatcommon.lib
all: $(COMMON_OBJECTS) xchatcommon.lib dirent.lib
xchatcommon.lib: $(COMMON_OBJECTS)
lib /nologo /out:xchatcommon.lib $(COMMON_OBJECTS)
dirent.lib: dirent.obj
lib /nologo /out:dirent.lib dirent.obj
.c.obj::
$(CC) $(CFLAGS) $(GLIB) $<
clean:
@del *.obj
@del xchatcommon.lib
@del dirent.lib

View File

@ -12,3 +12,16 @@ portable_mode ()
return 0;
}
}
int
xtray_mode ()
{
if ((_access( "plugins/xtray.dll", 0 )) != -1)
{
return 1;
}
else
{
return 0;
}
}

View File

@ -1 +1,2 @@
int portable_mode ();
int xtray_mode ();

View File

@ -103,7 +103,7 @@ diff -ruN --strip-trailing-cr xchat-wdk.orig/plugins/xdcc/xdcc.c xchat-wdk/plugi
diff -ruN --strip-trailing-cr xchat-wdk.orig/src/common/cfgfiles.c xchat-wdk/src/common/cfgfiles.c
--- xchat-wdk.orig/src/common/cfgfiles.c 2010-08-07 09:14:45 +0200
+++ xchat-wdk/src/common/cfgfiles.c 2011-01-09 22:15:18 +0100
+++ xchat-wdk/src/common/cfgfiles.c 2011-01-14 05:44:35 +0100
@@ -17,7 +17,6 @@
*/
@ -116,7 +116,7 @@ diff -ruN --strip-trailing-cr xchat-wdk.orig/src/common/cfgfiles.c xchat-wdk/src
#include "fe.h"
#include "text.h"
#include "xchatc.h"
+#include "portable.h"
+#include "wdkutil.h"
-#ifdef WIN32
-#define XCHAT_DIR "X-Chat 2"
@ -844,12 +844,12 @@ diff -ruN --strip-trailing-cr xchat-wdk.orig/src/common/xchat.h xchat-wdk/src/co
unsigned int ctcp_time_limit; /*seconds of floods */
diff -ruN --strip-trailing-cr xchat-wdk.orig/src/fe-gtk/about.c xchat-wdk/src/fe-gtk/about.c
--- xchat-wdk.orig/src/fe-gtk/about.c 2010-05-16 09:43:49 +0200
+++ xchat-wdk/src/fe-gtk/about.c 2011-01-13 02:40:11 +0100
+++ xchat-wdk/src/fe-gtk/about.c 2011-01-14 05:44:48 +0100
@@ -39,6 +39,7 @@
#include "../common/xchat.h"
#include "../common/util.h"
+#include "../common/portable.h"
+#include "../common/wdkutil.h"
#include "palette.h"
#include "pixmaps.h"
#include "gtkutil.h"
@ -1491,8 +1491,16 @@ diff -ruN --strip-trailing-cr xchat-wdk.orig/src/fe-gtk/joind.c xchat-wdk/src/fe
diff -ruN --strip-trailing-cr xchat-wdk.orig/src/fe-gtk/maingui.c xchat-wdk/src/fe-gtk/maingui.c
--- xchat-wdk.orig/src/fe-gtk/maingui.c 2010-12-28 04:16:34 +0100
+++ xchat-wdk/src/fe-gtk/maingui.c 2010-12-28 14:57:33 +0100
@@ -214,60 +214,10 @@
+++ xchat-wdk/src/fe-gtk/maingui.c 2011-01-14 06:24:27 +0100
@@ -53,6 +53,7 @@
#include "../common/plugin.h"
#include "../common/modes.h"
#include "../common/url.h"
+#include "../common/wdkutil.h"
#include "fe-gtk.h"
#include "banlist.h"
#include "gtkutil.h"
@@ -214,60 +215,10 @@
away_list = mg_attr_list_create (&colors[COL_AWAY], FALSE);
}
@ -1554,7 +1562,7 @@ diff -ruN --strip-trailing-cr xchat-wdk.orig/src/fe-gtk/maingui.c xchat-wdk/src/
}
static void
@@ -281,18 +231,14 @@
@@ -281,18 +232,14 @@
{
set_window_urgency (win, FALSE);
}
@ -1573,7 +1581,16 @@ diff -ruN --strip-trailing-cr xchat-wdk.orig/src/fe-gtk/maingui.c xchat-wdk/src/
}
/* set a tab plain, red, light-red, or blue */
@@ -2972,11 +2918,7 @@
@@ -1334,7 +1281,7 @@
gtk_button_box_set_layout (GTK_BUTTON_BOX (dialog_action_area1),
GTK_BUTTONBOX_END);
- if (minimize_button)
+ if (minimize_button && !xtray_mode ())
{
button = gtk_button_new_with_mnemonic (_("_Minimize to Tray"));
gtk_widget_show (button);
@@ -2972,11 +2919,7 @@
gtk_xtext_check_marker_visibility (GTK_XTEXT (current_sess->gui->xtext));
plugin_emit_dummy_print (current_sess, "Focus Window");
}
@ -1585,7 +1602,7 @@ diff -ruN --strip-trailing-cr xchat-wdk.orig/src/fe-gtk/maingui.c xchat-wdk/src/
return FALSE;
}
@@ -2987,11 +2929,7 @@
@@ -2987,11 +2930,7 @@
if (!sess->server->server_session)
sess->server->server_session = sess;
gtk_xtext_check_marker_visibility(GTK_XTEXT (current_sess->gui->xtext));
@ -1653,8 +1670,8 @@ diff -ruN --strip-trailing-cr xchat-wdk.orig/src/fe-gtk/palette.c xchat-wdk/src/
#include <fcntl.h>
diff -ruN --strip-trailing-cr xchat-wdk.orig/src/fe-gtk/plugin-tray.c xchat-wdk/src/fe-gtk/plugin-tray.c
--- xchat-wdk.orig/src/fe-gtk/plugin-tray.c 2010-11-16 09:26:23 +0100
+++ xchat-wdk/src/fe-gtk/plugin-tray.c 2011-01-11 00:16:30 +0100
@@ -1,8 +1,7 @@
+++ xchat-wdk/src/fe-gtk/plugin-tray.c 2011-01-14 05:52:36 +0100
@@ -1,14 +1,14 @@
/* Copyright (C) 2006-2007 Peter Zelezny. */
#include <string.h>
@ -1664,7 +1681,14 @@ diff -ruN --strip-trailing-cr xchat-wdk.orig/src/fe-gtk/plugin-tray.c xchat-wdk/
#include "../common/xchat.h"
#include "../common/xchatc.h"
#include "../common/inbound.h"
@@ -297,10 +296,10 @@
#include "../common/server.h"
#include "../common/fe.h"
#include "../common/util.h"
+#include "../common/wdkutil.h"
#include "fe-gtk.h"
#include "pixmaps.h"
#include "maingui.h"
@@ -297,10 +297,10 @@
nets = tray_count_networks ();
chans = tray_count_channels ();
if (nets)
@ -1677,7 +1701,7 @@ diff -ruN --strip-trailing-cr xchat-wdk.orig/src/fe-gtk/plugin-tray.c xchat-wdk/
}
if (custom_icon1)
@@ -450,7 +449,7 @@
@@ -450,7 +450,7 @@
/* ph may have an invalid context now */
xchat_set_context (ph, xchat_find_context (ph, NULL, NULL));
@ -1686,7 +1710,7 @@ diff -ruN --strip-trailing-cr xchat-wdk.orig/src/fe-gtk/plugin-tray.c xchat-wdk/
tray_stop_flash ();
tray_reset_counts ();
@@ -585,11 +584,12 @@
@@ -585,11 +585,12 @@
/*gtk_menu_set_screen (GTK_MENU (menu), gtk_widget_get_screen (widget));*/
if (tray_get_window_status () == WS_HIDDEN)
@ -1701,7 +1725,7 @@ diff -ruN --strip-trailing-cr xchat-wdk.orig/src/fe-gtk/plugin-tray.c xchat-wdk/
submenu = mg_submenu (menu, _("_Blink on"));
blink_item (&prefs.input_tray_chans, submenu, _("Channel Message"));
blink_item (&prefs.input_tray_priv, submenu, _("Private Message"));
@@ -606,6 +606,7 @@
@@ -606,6 +607,7 @@
gtk_widget_set_sensitive (item, FALSE);
tray_make_item (menu, NULL, tray_menu_quit_cb, NULL);
@ -1709,7 +1733,7 @@ diff -ruN --strip-trailing-cr xchat-wdk.orig/src/fe-gtk/plugin-tray.c xchat-wdk/
mg_create_icon_item (_("_Quit"), GTK_STOCK_QUIT, menu, tray_menu_quit_cb, NULL);
menu_add_plugin_items (menu, "\x5$TRAY", NULL);
@@ -631,8 +632,8 @@
@@ -631,8 +633,8 @@
sticon = gtk_status_icon_new_from_pixbuf (ICON_NORMAL);
if (!sticon)
return;
@ -1720,7 +1744,7 @@ diff -ruN --strip-trailing-cr xchat-wdk.orig/src/fe-gtk/plugin-tray.c xchat-wdk/
g_signal_connect (G_OBJECT (sticon), "activate",
G_CALLBACK (tray_menu_restore_cb), NULL);
}
@@ -650,15 +651,15 @@
@@ -650,15 +652,15 @@
/* FIXME: hides any previous private messages */
tray_hilight_count++;
if (tray_hilight_count == 1)
@ -1739,7 +1763,7 @@ diff -ruN --strip-trailing-cr xchat-wdk.orig/src/fe-gtk/plugin-tray.c xchat-wdk/
word[1], xchat_get_info (ph, "channel"));
return XCHAT_EAT_NONE;
@@ -676,14 +677,14 @@
@@ -676,14 +678,14 @@
tray_pub_count++;
if (tray_pub_count == 1)
@ -1757,7 +1781,7 @@ diff -ruN --strip-trailing-cr xchat-wdk.orig/src/fe-gtk/plugin-tray.c xchat-wdk/
word[1], xchat_get_info (ph, "channel"));
return XCHAT_EAT_NONE;
@@ -705,14 +706,14 @@
@@ -705,14 +707,14 @@
tray_priv_count++;
if (tray_priv_count == 1)
@ -1775,7 +1799,7 @@ diff -ruN --strip-trailing-cr xchat-wdk.orig/src/fe-gtk/plugin-tray.c xchat-wdk/
from, network);
}
@@ -758,15 +759,15 @@
@@ -758,15 +760,15 @@
tray_file_count++;
if (tray_file_count == 1)
@ -1794,6 +1818,24 @@ diff -ruN --strip-trailing-cr xchat-wdk.orig/src/fe-gtk/plugin-tray.c xchat-wdk/
word[1], network);
return XCHAT_EAT_NONE;
@@ -802,7 +804,7 @@
}
else
{
- if (prefs.gui_tray)
+ if (prefs.gui_tray && !xtray_mode ())
tray_init ();
}
}
@@ -834,7 +836,7 @@
xchat_hook_print (ph, "Focus Window", -1, tray_focus_cb, NULL);
- if (prefs.gui_tray)
+ if (prefs.gui_tray && !xtray_mode ())
tray_init ();
return 1; /* return 1 for success */
diff -ruN --strip-trailing-cr xchat-wdk.orig/src/fe-gtk/plugingui.c xchat-wdk/src/fe-gtk/plugingui.c
--- xchat-wdk.orig/src/fe-gtk/plugingui.c 2010-05-16 05:20:22 +0200
+++ xchat-wdk/src/fe-gtk/plugingui.c 2010-12-28 14:57:33 +0100
@ -1854,7 +1896,7 @@ diff -ruN --strip-trailing-cr xchat-wdk.orig/src/fe-gtk/servlistgui.c xchat-wdk/
gtk_box_set_spacing (GTK_BOX (vbuttonbox2), 3);
diff -ruN --strip-trailing-cr xchat-wdk.orig/src/fe-gtk/setup.c xchat-wdk/src/fe-gtk/setup.c
--- xchat-wdk.orig/src/fe-gtk/setup.c 2008-02-08 10:04:45 +0100
+++ xchat-wdk/src/fe-gtk/setup.c 2011-01-10 06:58:17 +0100
+++ xchat-wdk/src/fe-gtk/setup.c 2011-01-14 06:37:24 +0100
@@ -109,19 +109,32 @@
N_("Give each person on IRC a different color"),0,0},
{ST_TOGGLR, N_("Indent nick names"), P_OFFINTNL(indent_nicks),
@ -1892,7 +1934,32 @@ diff -ruN --strip-trailing-cr xchat-wdk.orig/src/fe-gtk/setup.c xchat-wdk/src/fe
{ST_END, 0, 0, 0, 0, 0}
};
@@ -363,7 +376,6 @@
@@ -348,6 +361,24 @@
{ST_END, 0, 0, 0, 0, 0}
};
+static const setting alert_settings_xtray[] =
+{
+ {ST_HEADER, N_("Alerts"),0,0,0},
+
+ {ST_ALERTHEAD},
+ {ST_3OGGLE, N_("Blink task bar on:"), 0, 0, (void *)taskbarlist, 0},
+ {ST_3OGGLE, N_("Make a beep sound on:"), 0, 0, (void *)beeplist, 0},
+
+ {ST_HEADER, N_("Highlighted Messages"),0,0,0},
+ {ST_LABEL, N_("Highlighted messages are ones where your nickname is mentioned, but also:"), 0, 0, 0, 1},
+
+ {ST_ENTRY, N_("Extra words to highlight:"), P_OFFSETNL(irc_extra_hilight), 0, 0, sizeof prefs.irc_extra_hilight},
+ {ST_ENTRY, N_("Nick names not to highlight:"), P_OFFSETNL(irc_no_hilight), 0, 0, sizeof prefs.irc_no_hilight},
+ {ST_ENTRY, N_("Nick names to always highlight:"), P_OFFSETNL(irc_nick_hilight), 0, 0, sizeof prefs.irc_nick_hilight},
+ {ST_LABEL, N_("Separate multiple words with commas.\nWildcards are accepted.")},
+ {ST_END, 0, 0, 0, 0, 0}
+};
+
static const setting general_settings[] =
{
{ST_HEADER, N_("Default Messages"),0,0,0},
@@ -363,7 +394,6 @@
{ST_END, 0, 0, 0, 0, 0}
};
@ -1900,7 +1967,7 @@ diff -ruN --strip-trailing-cr xchat-wdk.orig/src/fe-gtk/setup.c xchat-wdk/src/fe
static const setting advanced_settings[] =
{
{ST_HEADER, N_("Advanced Settings"),0,0,0},
@@ -378,7 +390,6 @@
@@ -378,7 +408,6 @@
{ST_END, 0, 0, 0, 0, 0}
};
@ -1908,7 +1975,7 @@ diff -ruN --strip-trailing-cr xchat-wdk.orig/src/fe-gtk/setup.c xchat-wdk/src/fe
static const setting logging_settings[] =
{
@@ -1708,7 +1719,7 @@
@@ -1708,7 +1737,7 @@
N_("General"),
N_("Logging"),
N_("Sound"),
@ -1917,7 +1984,20 @@ diff -ruN --strip-trailing-cr xchat-wdk.orig/src/fe-gtk/setup.c xchat-wdk/src/fe
NULL,
N_("Network"),
N_("Network setup"),
@@ -1733,6 +1744,7 @@
@@ -1729,10 +1758,19 @@
setup_add_page (cata[3], book, setup_create_page (userlist_settings));
setup_add_page (cata[4], book, setup_create_page (tabs_settings));
setup_add_page (cata[5], book, setup_create_color_page ());
- setup_add_page (cata[8], book, setup_create_page (alert_settings));
+
+ if (xtray_mode ())
+ {
+ setup_add_page (cata[8], book, setup_create_page (alert_settings_xtray));
+ } else
+ {
+ setup_add_page (cata[8], book, setup_create_page (alert_settings));
+ }
+
setup_add_page (cata[9], book, setup_create_page (general_settings));
setup_add_page (cata[10], book, setup_create_page (logging_settings));
setup_add_page (cata[11], book, setup_create_sound_page ());