1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
|
/* X-Chat
* Copyright (C) 2006-2007 Peter Zelezny.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
#include <string.h>
#include "../common/hexchat-plugin.h"
#include "../common/hexchat.h"
#include "../common/hexchatc.h"
#include "../common/inbound.h"
#include "../common/server.h"
#include "../common/fe.h"
#include "../common/util.h"
#include "../common/outbound.h"
#include "fe-gtk.h"
#include "pixmaps.h"
#include "maingui.h"
#include "menu.h"
#ifndef WIN32
#include <unistd.h>
#endif
#ifdef USE_LIBNOTIFY
#include <libnotify/notify.h>
#ifndef NOTIFY_CHECK_VERSION
#define NOTIFY_CHECK_VERSION(x,y,z) 0
#endif
#if NOTIFY_CHECK_VERSION(0,7,0)
#define XC_NOTIFY_NEW(a,b,c,d) notify_notification_new(a,b,c)
#else
#define XC_NOTIFY_NEW(a,b,c,d) notify_notification_new(a,b,c,d)
#endif
#endif
typedef enum /* current icon status */
{
TS_NONE,
TS_MESSAGE,
TS_HIGHLIGHT,
TS_FILEOFFER,
TS_CUSTOM /* plugin */
} TrayStatus;
typedef enum
{
WS_FOCUSED,
WS_NORMAL,
WS_HIDDEN
} WinStatus;
typedef GdkPixbuf* TrayIcon;
#define tray_icon_from_file(f) gdk_pixbuf_new_from_file(f,NULL)
#define tray_icon_free(i) g_object_unref(i)
#define ICON_NORMAL pix_hexchat
#define ICON_MSG pix_tray_message
#define ICON_HILIGHT pix_tray_highlight
#define ICON_FILE pix_tray_fileoffer
#define TIMEOUT 500
static GtkStatusIcon *sticon;
static gint flash_tag;
static TrayStatus tray_status;
#ifdef WIN32
static guint tray_menu_timer;
static gint64 tray_menu_inactivetime;
#endif
static hexchat_plugin *ph;
static TrayIcon custom_icon1;
static TrayIcon custom_icon2;
static int tray_priv_count = 0;
static int tray_pub_count = 0;
static int tray_hilight_count = 0;
static int tray_file_count = 0;
static int tray_restore_timer = 0;
void tray_apply_setup (void);
static gboolean tray_menu_try_restore ();
static void tray_cleanup (void);
static void tray_init (void);
static WinStatus
tray_get_window_status (void)
{
const char *st;
st = hexchat_get_info (ph, "win_status");
if (!st)
return WS_HIDDEN;
if (!strcmp (st, "active"))
return WS_FOCUSED;
if (!strcmp (st, "hidden"))
return WS_HIDDEN;
return WS_NORMAL;
}
static int
tray_count_channels (void)
{
int cons = 0;
GSList *list;
session *sess;
for (list = sess_list; list; list = list->next)
{
sess = list->data;
if (sess->server->connected && sess->channel[0] &&
sess->type == SESS_CHANNEL)
cons++;
}
return cons;
}
static int
tray_count_networks (void)
{
int cons = 0;
GSList *list;
for (list = serv_list; list; list = list->next)
{
if (((server *)list->data)->connected)
cons++;
}
return cons;
}
void
fe_tray_set_tooltip (const char *text)
{
if (sticon)
gtk_status_icon_set_tooltip (sticon, text);
}
void
fe_tray_set_balloon (const char *title, const char *text)
{
#ifndef WIN32
#if 0
const char *argv[8];
const char *path;
char time[16];
#endif
WinStatus ws;
/* no balloons if the window is focused */
ws = tray_get_window_status ();
if ((prefs.hex_away_omit_alerts && hexchat_get_info(ph, "away")) ||
(prefs.hex_gui_focus_omitalerts && ws == WS_FOCUSED))
return;
/* bit 1 of flags means "no balloons unless hidden/iconified" */
if (ws != WS_HIDDEN && prefs.hex_gui_tray_quiet)
return;
/* FIXME: this should close the current balloon */
if (!text)
return;
#ifdef USE_LIBNOTIFY
static int notify_text_strip_flags = STRIP_ALL;
NotifyNotification *notification;
char *notify_text, *notify_title;
if (!notify_is_initted())
{
notify_init(PACKAGE_NAME);
GList* server_caps = notify_get_server_caps ();
if (g_list_find_custom (server_caps, "body-markup", (GCompareFunc)strcmp))
{
notify_text_strip_flags |= STRIP_ESCMARKUP;
}
g_list_free_full (server_caps, g_free);
}
notify_text = strip_color (text, -1, notify_text_strip_flags);
notify_title = strip_color (title, -1, STRIP_ALL);
notification = XC_NOTIFY_NEW (notify_title, notify_text, HEXCHATSHAREDIR "/icons/hicolor/scalable/apps/hexchat.svg", NULL);
#if NOTIFY_CHECK_VERSION(0,7,0)
notify_notification_set_hint (notification, "desktop-entry", g_variant_new_string ("hexchat"));
#endif
g_free ((char *)notify_title);
g_free ((char *)notify_text);
notify_notification_set_timeout (notification, prefs.hex_input_balloon_time*1000);
notify_notification_show (notification, NULL);
g_object_unref (notification);
#endif
#endif
}
static void
tray_set_balloonf (const char *text, const char *format, ...)
{
va_list args;
char *buf;
va_start (args, format);
buf = g_strdup_vprintf (format, args);
va_end (args);
fe_tray_set_balloon (buf, text);
g_free (buf);
}
static void
tray_set_tipf (const char *format, ...)
{
va_list args;
char *buf;
va_start (args, format);
buf = g_strdup_vprintf (format, args);
va_end (args);
fe_tray_set_tooltip (buf);
g_free (buf);
}
static void
tray_stop_flash (void)
{
int nets, chans;
if (flash_tag)
{
g_source_remove (flash_tag);
flash_tag = 0;
}
if (sticon)
{
gtk_status_icon_set_from_pixbuf (sticon, ICON_NORMAL);
nets = tray_count_networks ();
chans = tray_count_channels ();
if (nets)
tray_set_tipf (_(DISPLAY_NAME": Connected to %u networks and %u channels"),
nets, chans);
else
tray_set_tipf (DISPLAY_NAME": %s", _("Not connected."));
}
if (custom_icon1)
{
tray_icon_free (custom_icon1);
custom_icon1 = NULL;
}
if (custom_icon2)
{
tray_icon_free (custom_icon2);
custom_icon2 = NULL;
}
tray_status = TS_NONE;
}
static void
tray_reset_counts (void)
{
tray_priv_count = 0;
tray_pub_count = 0;
tray_hilight_count = 0;
tray_file_count = 0;
}
static int
tray_timeout_cb (TrayIcon icon)
{
if (custom_icon1)
{
if (gtk_status_icon_get_pixbuf (sticon) == custom_icon1)
{
if (custom_icon2)
gtk_status_icon_set_from_pixbuf (sticon, custom_icon2);
else
gtk_status_icon_set_from_pixbuf (sticon, ICON_NORMAL);
}
else
{
gtk_status_icon_set_from_pixbuf (sticon, custom_icon1);
}
}
else
{
if (gtk_status_icon_get_pixbuf (sticon) == ICON_NORMAL)
gtk_status_icon_set_from_pixbuf (sticon, icon);
else
gtk_status_icon_set_from_pixbuf (sticon, ICON_NORMAL);
}
return 1;
}
static void
tray_set_flash (TrayIcon icon)
{
if (!sticon)
return;
/* already flashing the same icon */
if (flash_tag && gtk_status_icon_get_pixbuf (sticon) == icon)
return;
/* no flashing if window is focused */
if (tray_get_window_status () == WS_FOCUSED)
return;
tray_stop_flash ();
gtk_status_icon_set_from_pixbuf (sticon, icon);
if (prefs.hex_gui_tray_blink)
flash_tag = g_timeout_add (TIMEOUT, (GSourceFunc) tray_timeout_cb, icon);
}
void
fe_tray_set_flash (const char *filename1, const pre { line-height: 125%; }
td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
.highlight .hll { background-color: #ffffcc }
.highlight .c { color: #888888 } /* Comment */
.highlight .err { color: #a61717; background-color: #e3d2d2 } /* Error */
.highlight .k { color: #008800; font-weight: bold } /* Keyword */
.highlight .ch { color: #888888 } /* Comment.Hashbang */
.highlight .cm { color: #888888 } /* Comment.Multiline */
.highlight .cp { color: #cc0000; font-weight: bold } /* Comment.Preproc */
.highlight .cpf { color: #888888 } /* Comment.PreprocFile */
.highlight .c1 { color: #888888 } /* Comment.Single */
.highlight .cs { color: #cc0000; font-weight: bold; background-color: #fff0f0 } /* Comment.Special */
.highlight .gd { color: #000000; background-color: #ffdddd } /* Generic.Deleted */
.highlight .ge { font-style: italic } /* Generic.Emph */
.highlight .ges { font-weight: bold; font-style: italic } /* Generic.EmphStrong */
.highlight .gr { color: #aa0000 } /* Generic.Error */
.highlight .gh { color: #333333 } /* Generic.Heading */
.highlight .gi { color: #000000; background-color: #ddffdd } /* Generic.Inserted */
.highlight .go { color: #888888 } /* Generic.Output */
.highlight .gp { color: #555555 } /* Generic.Prompt */
.highlight .gs { font-weight: bold } /* Generic.Strong */
.highlight .gu { color: #666666 } /* Generic.Subheading */
.highlight .gt { color: #aa0000 } /* Generic.Traceback */
.highlight .kc { color: #008800; font-weight: bold } /* Keyword.Constant */
.highlight .kd { color: #008800; font-weight: bold } /* Keyword.Declaration */
.highlight .kn { color: #008800; font-weight: bold } /* Keyword.Namespace */
.highlight .kp { color: #008800 } /* Keyword.Pseudo */
.highlight .kr { color: #008800; font-weight: bold } /* Keyword.Reserved */
.highlight .kt { color: #888888; font-weight: bold } /* Keyword.Type */
.highlight .m { color: #0000DD; font-weight: bold } /* Literal.Number */
.highlight .s { color: #dd2200; background-color: #fff0f0 } /* Literal.String */
.highlight .na { color: #336699 } /* Name.Attribute */
.highlight .nb { color: #003388 } /* Name.Builtin */
.highlight .nc { color: #bb0066; font-weight: bold } /* Name.Class */
.highlight .no { color: #003366; font-weight: bold } /* Name.Constant */
.highlight .nd { color: #555555 } /* Name.Decorator */
.highlight .ne { color: #bb0066; font-weight: bold } /* Name.Exception */
.highlight .nf { color: #0066bb; font-weight: bold } /* Name.Function */
.highlight .nl { color: #336699; font-style: italic } /* Name.Label */
.highlight .nn { color: #bb0066; font-weight: bold } /* Name.Namespace */
.highlight .py { color: #336699; font-weight: bold } /* Name.Property */
.highlight .nt { color: #bb0066; font-weight: bold } /* Name.Tag */
.highlight .nv { color: #336699 } /* Name.Variable */
.highlight .ow { color: #008800 } /* Operator.Word */
.highlight .w { color: #bbbbbb } /* Text.Whitespace */
.highlight .mb { color: #0000DD; font-weight: bold } /* Literal.Number.Bin */
.highlight .mf { color: #0000DD; font-weight: bold } /* Literal.Number.Float */
.highlight .mh { color: #0000DD; font-weight: bold } /* Literal.Number.Hex */
.highlight .mi { color: #0000DD; font-weight: bold } /* Literal.Number.Integer */
.highlight .mo { color: #0000DD; font-weight: bold } /* Literal.Number.Oct */
.highlight .sa { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Affix */
.highlight .sb { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Backtick */
.highlight .sc { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Char */
.highlight .dl { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Delimiter */
.highlight .sd { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Doc */
.highlight .s2 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Double */
.highlight .se { color: #0044dd; background-color: #fff0f0 } /* Literal.String.Escape */
.highlight .sh { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Heredoc */
.highlight .si { color: #3333bb; background-color: #fff0f0 } /* Literal.String.Interpol */
.highlight .sx { color: #22bb22; background-color: #f0fff0 } /* Literal.String.Other */
.highlight .sr { color: #008800; background-color: #fff0ff } /* Literal.String.Regex */
.highlight .s1 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Single */
.highlight .ss { color: #aa6600; background-color: #fff0f0 } /* Literal.String.Symbol */
.highlight .bp { color: #003388 } /* Name.Builtin.Pseudo */
.highlight .fm { color: #0066bb; font-weight: bold } /* Name.Function.Magic */
.highlight .vc { color: #336699 } /* Name.Variable.Class */
.highlight .vg { color: #dd7700 } /* Name.Variable.Global */
.highlight .vi { color: #3333bb } /* Name.Variable.Instance */
.highlight .vm { color: #336699 } /* Name.Variable.Magic */
.highlight .il { color: #0000DD; font-weight: bold } /* Literal.Number.Integer.Long */# XChat ChangeLog
To see more details of bugs, go to this URL:
http://sf.net/tracker/?func=detail&atid=100239&group_id=239&aid=NUMBER
Where "NUMBER" is the bug number.
This log DOES NOT apply to XChat for Windows.
There are always more changes than listed here, these are just the
highlights. The full CVS log is available at [www.xchat.org/cvslog/](http://www.xchat.org/cvslog/)
***
## 2.8.10 - dd/mm/yyyy
- Emit the Topic Change event before setting the topic internally so plugins
can access the old topic inside the callback.
- Add two options url\_grabber and url\_grabber\_limit.
* url\_grabber is a boolean for enabling/disabling the url grabber
* url\_grabber\_limit is an integer controlling the number of URLs the
URL Grabber will keep around. Setting it to 0 leaves it unlimited as in
previous versions.
- Fixed a bug with the URL Grabber where it fails to grab a URL if the URL
is the first thing in the message.
- Change /ignore <nick> to always add !*@* if <nick> does not contain ? or *
- Perl (Lian Wan Situ)
* Added two new options to hook\_print, run\_after\_event and filter. See
documentation for details.
* When building on Windows, generate the name of the DLL for the Perl
library based on information from the header files instead of hardcoding
the value.
* Fixed a bug in the reinit handling code. The bug prevented the plugin from
cleaning up properly. Which includes unloading scripts and removing
their GUI entries.
* Remove the restriction on having only 1 package per script. Any inner
packages declared will also be unloaded when the script is unload. If
multiple script declare an inner package with the same name then unloading
or reloading one of those scripts will cause problems.
***
## 2.8.8 - 30/May/2010
- Made balloon time adjustable via /set input\_balloon\_time (Nicoleau Fabien).
- Fixed a crash in the /SET command if a boolean value was loaded from config
file that isn't set to 0 or 1.
- Added -on and -off parameters to the /SET command. This can be used to set
bits, for example gui\_tweaks.
- Made scrolling backwards for the search window act better (Richard Hitt).
- [2045483] Made ESC key close the search window (Richard Rowell).
- Improved the reconnect logic. If a network is already open but disconnected,
it'll now get re-used if you use the Network List and connect to that same
network.
- Improved scrollback reloading speed significantly (Soeren Sandmann Pedersen).
- [2957047] Handle CTCPs when IDmsg is used correctly (Lian Wan Situ).
- [2987626] Allow /GHOST's password arg to be optional (Ori Avtalion).
- Added networks: 7-indonesia, ChattingAway, GeekShed, TURLINet.
- When switching tabs, make the treeview only scroll if the selected item
isn't visible [treeview-less-jumping.diff] (Brian Evans).
- Selecting an item in the nickmenu will now copy it to clipboard (Alex
Kutepow).
- New icons for notification area (systray): file offer, message and highlight
(Brian Evans).
- Defined a comparison routine for contexts in Python (Brian Evans).
- For the auto-join command, added an 'x' filler for empty keys. This works
around a bug in ircd-seven.
- When a single channel MODE changes, xchat will no longer re-issue a MODE
request for the titlebar display, but figure the new modes intelligently
(Brian Evans).
- Various text event changes (Brian Evans):
1. Added "Private Action", "Private Action to Dialog", "SSL Message".
2. Added "Identified text" parameter all the 'action' events.
3. Added a $3 parameter to "Server Text".
- Perl (Lian Wan Situ)
* Fixed a bug that resulted in timer hooks being leaked because
"return REMOVE" from a timer callback was not unhooking like it was
supposed to
* Reverted the unintentional change to how the server argument of print()
and command() is interepreted when it is undef
* Add hook\_fd to the 'hooks' export tag
* Fixed a leak in XS\_Xchat\_get\_list(Vincent Pit)
* Change Xchat::register so that scripts calling it without a name or
version will still show up in the plugins and scripts window.
* Added calls to PERL\_SYS\_INIT3 and PERL\_SYS\_TERM which are required on
some platforms
* Added some additional guards to prevents bits of scripts from spilling
into each other
* Added "modes", "win\_ptr" and "xchatdirfs" to the list of keys that are
returned by context\_info()
* Changed the information displayed in the "Plugins & Scripts" for scripts
that do not call register() to show up as "" for the name and description
and "unknown" for the version
* /reloadall will now reload scripts in the same order they were loaded
* Make xchat\_send\_modes available as Xchat::send\_modes
* Add support for getting the network list using Xchat::get\_list( "networks" )
* Xchat::strip\_code will now strip off ANSI escape codes as well
***
## 2.8.6 - 11/Jun/2008
- Updated translations (de, fi, fr, hu, lt, nb, ru, th, zh\_CN).
- Fixed creation of ~/.xchat2/scrollback/ paths (xc284-scrollbmkdir.diff).
- Fixed a leak of file descriptors related to the scrollback feature
(resource leak) (xc284-fix-scrollbfdleak.diff).
- Stopped scrollback files growing too large by fixing the file-shrink code.
- Put a "Display scrollback from previous session" into the Setup GUI
(logging section) so people can turn this off without typing commands.
- Made /away work even when the reason setting is empty.
- Using /part on a channel that contains a quotation mark now works [1800855].
- Changed the default encoding to "IRC" (CP1252/Unicode Hybrid) for both Unix
and Windows.
- Fixed a possible Channel List crash if you searched many times while the
download was still going.
- Fixed alert balloons failing if the text contained "<" characters [1827629].
- The Drag&Drop files to userlist feature has been enabled again.
- Removed the /set tab\_icons setting and made it automatic (see FAQ for more
info about icons).
- Fixed a bug in creating files (save channel list, rawlog etc) that would set
the wrong permissions.
- Added command line argument --command=COMMAND which can be used in
conjuction with --existing (E.K.L.). This sends any xchat command to an
existing (running) client.
- A private SSL key/certificate can now be loaded from ~/.xchat2/client.pem.
- The Alerts settings now accept wildcards, instead of partitial string match
[1807563].
- Changing away status during reconnect/disconnect will now remember it.
- You can now change your Away/Back status (all networks) in the tray menu.
- Favorite Channels / Auto-Join-List management:
* Network List window now has a "..." button to edit the auto-join-list in
a more friendly way.
* Channel(text area), Tree/Tab and Channel-List right-click menus now have a
"Add to Favorites" function.
* Previous limit of 300 bytes has been overcome. Now up to 2 KB worth of
channels/keys can be joined and it will be automatically split into
multiple lines, if necessary.
* Per-Channel settings now save to disk, including Logging and Scrollback
settings.
* /ChanOpt has been re-worked to be more like /Set.
- 'hostname:port' syntax is now accepted, if it's not an IPv6 address.
- The Userlist right-click menu now has icons and an option to add to friends
list. If you've edited this menu before you'll still get the old one. To get
the new one delete ~/.xchat2/popup.conf while XChat isn't running.
- ~/.xchat2/startup.txt is now loaded on launch (like /LOAD -e). Put any
commands you want executed at startup here.
- The lag-o-meter now has a full scale of 1.0 seconds.
- libnotify is now opened directly instead of using 'notify-send' to open
tray/balloon alerts.
- Added support for QuakeNet's /AUTH for nick password, when numeric 005
NETWORK=QuakeNet is detected.
- You can now copy with IRC attributes and mIRC colors if CTRL key is down
when a selection is finished (on mouse release). This replaces the old
"Color paste" feature.
- Added a 'compact' flag to gui\_tweaks. This'll make the userlist and tree
spacing smaller. E.g. type /set -or gui\_tweaks 32 and restart to turn it on.
- The /CLEAR command takes a number as paramater (how many lines to clear).
- When there's missing information in the Userlist right-click menu, it'll
issue a silent /WHOIS and fill it in. This includes retrieving a person's
away-reason.
- Perl (Lian Wan Situ)
* /reloadall will now reload all the scripts that are currently load instead
of simply reruning the autoload routine
* gtk/glib/gdk errors and warnings have been redirected back to stderr so
they will no longer show up in the text box as a result of having the Perl
plugin loaded
* Check if the user has perl 5.6 instead of 5.8 and give an warning dialog
if they do (Peter Zelezny)
* Changed timer callbacks so that they are executed in the context that they
were created in
* Modified Xchat::print and Xchat::command to accept array references in
addition to strings for the channel and server parameters
- Plugin API:
* xchat\_emit_print() will now trigger Sound, Blink, Icon etc type events,
depending on user's settings.
* Fixed a bug where not all 32 elements were available in word[]/word\_eol[].
***
## 2.8.4 - 01/Jul/2007
- Updated translations (cs, de, ko, mk, sv, vi).
- System-Tray balloons now get the xchat icon instead of a generic one.
- Fixed the notify-send zombies (released as xc282-fixtrayzombies.diff).
- Fixed underscore ('\_') in real names in the nick-name right-click menu being
drawn as a underline.
- ut2004:// URLs are now underlined too.
- /set gui\_tray\_flags 4 will now enable a "Minimize to tray" feature. Clicking
the window minimize button will minimize to tray instead of the task-bar.
- Fixed bug: [1680762] Notify fails if network name contains spaces.
- Extended tclConfig.sh search paths so it hopefully works on Ubuntu now.
- Added a feature that reloads conversations from last time you used XChat
(type /set text\_replay 0 to disable it).
- Fixed /LASTLOG printing everything twice if you had Indented Nicks off.
- The CTRL-F keybinding (Find) is now disabled when using Emacs keys.
- Added /SET gui\_tweaks. See http://forum.xchat.org/viewtopic.php?p=13766
- Fixed opening URLs on KDE that didn't begin with http:// or other protocol.
- A better quit dialog which warns you if you're connected to IRC or have
active file transfers.
- Fixed: [1741525] Cycle selected channel (Luca Falavigna).
- Fixed: [1737249] Doesn't recognize nicks with halfop mode on hovering.
- The userlist and treeview can now be placed on the same side, with a resize
handle in between them. They can also be dragged and dropped into place.
- When you hide the userlist using the View menu, the resize handle now
disappears too. It also disappears when you have a server tab in focus.
- If you have a tree on one side and userlist on the other, they'll both now
have a resize handle, previously the tree's size was fixed.
- The userlist can be hidden and shown with CTRL+F7.
- [1735116] Channel List's minimum users spin-button can now be set downward
even on networks that sent a list of channels of only a larger size. In this
case the Download button will flash to indicate you need to download a new
list.
- Changing the channel switcher type (Tree or Tabs) is also possible in the
setup dialog.
- The Ban List window now lists exceptions too (mode +e).
- Script and Plugin related changes:
* /SETTEXT with no argument now clears the input box.
* Python: Added a xchat.strip method for stripping IRC attributes and mIRC
color codes.
* C-API and Perl: Returning 0 from a FD hook will now remove the hook and
free all associated memory.
* /MENU now supports a $CHAN root aswell (see plugin20.html).
* Fixed GDK warning when using /MENU to add a key binding to a popup menu.
***
## 2.8.2 - 01/Apr/2007
- Updated translations (be, ca, cs, el, hu, sv, uk, zh\_CN).
- Fixed the "Save As" function saving to the wrong folder in the URL Grabber.
- Fixed a bug in the "Copy Selected Link" URL right-click on non-ASCII chars.
- Fixed small bug: #100239 buffer overflow in setup dialog.
- Overhauled the Alerts section of the settings and added support for opening
system-tray balloons (libnotify required).
- Implemented /TRAY -b command on unix.
- Nick serv authentication is now sent without the ":" when using the
/NICKSERV or /NS method. #1655733.
- Added command line argument:
--minimize=level Begin minimized. Level 0=Normal 1=Iconified 2=Tray
- Plugin API:
* Added "modes" to xchat\_get_info(). Returns the current channel modes, if
they are known.
* Fixed "event\_event name" for xchat\_get\_info() to match the docs exactly,
but 2.8.0 (mis)behaviour works too.
- Perl (Lian Wan Situ)
* Execute the shutdown callback before removing the hooks so commands
created by the script can be used in the callback.
***
## 2.8.0 - 03/Jan/2007
- Updated translations (cs, de, gl, hu).
- XChat now requires at least GTK+ 2.10.
- Added a system tray icon (aka Notification Area). This is probably the
biggest feature addition in this series. Also added a /TRAY command so
scripts can manipulate the icon.
- Added partial support for numeric 005 token ELIST (min users only).
- Brand new channel list window: GtkTreeView, nicer layout, less CPU power
when downloading very large list, uses less memory, supports regexp/
patternmatch/substring search and supports downloading LIST with minusers to
save time (only on some networks that support ELIST).
- Overhauled URL opening on Unix, it now tries xdg-open first, then auto-
detects Gnome or KDE to run gnome-open or kfmclient. URLs with quotes
should also work now (changed to execv()).
- Settings: Warn the user when trying to put the tree on the top/bottom.
- Fixed DCC ack reading so it doesn't use MSG\_PEEK.
- Channel modes are no longer shown in the titlebar if they contain a key.
- Added /GUI APPLY command, which does that same as pressing OK in the
settings window (e.g use it after /set). Mainly for scripters.
- Allow changing the logging folder if the log filename is set to a full path
in the settings window (starts with a '/').
- Added 'Your Action' text event.
- Separated out /away and /back commands so it's obvious what they'll do.
- Changes to /MENU command (See plugin20.html for details):
* Now works for popup menus too.
* Allows creation of radio menu items.
* -p arg can now to be negative to give a position offset from right/bottom.
* -i arg to specify an icon file.
- Plugin API:
* Added event\_text to xchat\_get\_info().
- Perl (Lian Wan Situ)
* Fixed hook\_command so that it won't override the help message for builtin
commands unless a help message was specified.
* Perl Win32: Warn the user about trying to load 64-bit ActivePerl.
***
# 2.6.8 - 16/Oct/2006
- Updated translations (be, de, el, es, fi, hu, it, ja, lt, pt, ru, sv, vi).
- Removed "xchat-remote" and "dbus.so", it's now apart of the "xchat" binary.
There is now a new dbus interface, see src/common/dbus/README for details.
(Claessens Xavier).
- Python: Fixed "restricted mode" errors on win32 [1512076].
- Special-cased BRASnet for nickserv.
- Fixed using the /MENU args -p and -e at the same time.
- Fixed /reconnect and auto-reconnect issue [1525383].
- Plugin API:
* Added fields: lag, queue to the "channels" list.
* Added fields: sizehigh to the "dcc" list.
* Added fields: networks to the "notify" list.
* Handle gracefully plugins that try to execute commands with invalid UTF-8.
* Added /GETFILE command, to open a file dialog.
* Command hooks that start with a period ('.') will now be hidden from /HELP
and /HELP -l.
- Fixed: [1544960] quitting via tabs behaves bad on bncs.
- Fixed: [1551620] --version flag needs display.
- Fixed: [1539236] problem with the /url command (irc:// handling).
- Fixed: [1568931] treeview problem: closing tabs by holding shift and
clicking.
- "Clear" button in Ban List window now has a 'Are you sure?' dialog for
safety.
- The notify list can now contain entries specific to only one or more IRC
networks.
- Userlist popup menu and buttons: added %e for 'current network name'.
- Added option: 'Flash taskbar on any private messages'.
- Added a new encoding choice: "IRC (Latin-1/UTF-8 hybrid)".
How it works is described at: http://forum.xchat.org/viewtopic.php?t=3180
- Added /LastLog -r <regexp>.
- The DCC windows have been remodeled and are much nicer now. Ported to
GtkTreeView, the buttons are context sensitive, the window remembers its
size and uploads and downloads are combined in one window.
- Perl (Lian Wan Situ)
* Changed Xchat::print and Xchat::command to return false if they are called
with either no arguments or undef
* Changed Xchat::user\_info so that it works even if the nick parameter
contains color codes
***
## 2.6.6 - 18/Jul/2006
- Updated translations (es, fr, sr).
- Fixed connecting to a IRC server via proxy (bug in 2.6.4 only).
- Fixed the invisible cursor color when using GTKSpell and a black
input box (when "Use the text box font & colors" is ON).
- Allow loading a cert/privatekey file from ~/.xchat2/<NetWorkName>.pem
- Improved the fallback routine when you receive non-UTF8 messages. It
can now handle CP1252 from mIRC users and the ISO-8859-15 Euro symbol.
- Added CHANOPT command for setting channel specific options such as showing
of joins and part, beep on message and color paste (Lian Wan Situ).
- /CLEAR HISTORY will clear your command history.
- Fixed a crash if you left a Ban-List window open after closing the
associated channel and then clicking Refresh.
- Added an option of using 'Last-Spoke' nick completion order in Settings >
Input Box.
- The /QUERY command now has -nofocus arg, which scripts might find useful.
- You can now /set gui\_url\_mod 0, to allow left-clicking URLs (default is
4, for CTRL).
- XChat will now respect gtk-button-images=0 set in ~/.gtkrc-2.0.
- Added a ./configure option to use your preferred spelling library:
--enable-spell=type. Where type can be: none static libsexy gtkspell.
Note that using gtkspell will force the inputbox to become a GtkTextView.
- Advanced users can /set tab\_small 2, to get _extra_ small tabs.
- Added /SPLAY <soundfile>.
- Plugin API:
* The second args to xchat\_list_int and xchat\_list\_str can now be NULL as
a shortcut to "channels" list for current context only.
* Added bits 6-8 to the field "flags" in the "channels" list.
* /GUI MSGBOX <text> can now contain Pango markup.
* Added -m arg to /MENU. See plugin20.html for more.
- Perl (Lian Wan Situ)
* Fixed a bug with Xchat::print that prevents printing out a
single 0(Lian Wan Situ)
* Fixed a bug in Xchat::get\_prefs that was clobbering the stack(Sergio Luis)
* Allow scripts that use a non-existent function for the shutdown callback
to be unloaded(Lian Wan Situ)
* Added check in set\_context for undef
* Added the fields from get\_list "channels" for the current context to the
result of context\_info
***
## 2.6.4 - 08/Jun/2006
- Updated translations (de, el, es, gl, hu, nl, sv, vi, zh\_TW).
- Fixed opening a irc:// URL via "xchat -a --url=abc123" command while
"Skip serverlist on startup" is off. This fix is only relevant when
opening an initial instance of xchat (i.e not via dbus).
- Fixed the tree layout "flashing" (redrawing slowly) after you
switched to tabs and back to tree.
- Fixed plugin/script get\_list("users") causing a critical GDK warning
when not executed from the front-most tab.
- Added spelling support in the input-box via GTKSpell.
- Improved the error reporting when connecting through a Socks proxy.
- DCC file transfers via http/socks45/wingate proxy is now supported
(Damjan Jovanovic & me).
- Fixed Socks 5 failing on 64-bit CPUs.
- Added support for connecting through a Microsoft ISA Proxy, requires
libntlm at build time (Pavel Fedin).
- You can now mark and copy timestamps if you hold down SHIFT.
- Timestamps are now preserved in the /lastlog command. Also fixed a
bug where the separator line disappeared during /lastlog.
- Added a Browse button to the DCC download folder setting.
- Made the setup window a little neater and Gnome-like.
- Improved the notify window a little and fixed a small memory leak.
- Fixed CTCPs being truncated in the RawLog window.
- Added an option to open a "Save As..." dialog when receiving a
DCC file offer.
- Fixed a crash if you try to remove a network from the list while
it's in a auto-reconnect delay [debian bug #364858].
- Python: Fixed some memory usage bugs.
- Perl: Turned on utf8 flag for things that should have it on.
***
## 2.6.2 - 27/Mar/2006
- Updated translations (de, fr, ja, sv).
- Made "/server freenode" send auto-join channels but not
"/server irc://freenode".
- Fixed building of xchat-text (although not recommended!).
- Fixed using Strip mIRC colors & Color nicks at the same time.
- Fixed a bug in timestamp drawing using non-fixed-width font [1404341].
- Fixed display of realname in the nick-name right-click menu when it
contains a '<' or '&' character [1403069].
- Added support for UniBG's nickserv (ongeboren).
- The move-to-complete-dir routine now treats encoding/UTF8 correctly.
- Show help when using wrong args for /DCC, instead of silence.
- Support receiving 2048 bytes per line from server and dcc-chat, so we
can support 512 UTF-8 characters that some servers now send.
- Added /gui detach and /gui attach commands for scripters.
- The server list window now remembers its size.
- TCL: Added 'selected' flag to users list.
- Perl:
* Fixed strip\_code so that it no longer takes off extra commas (LifeIsPain)
* Fixed filename checks so that '/load "filenameWithoutSpaces.pl"'
will also work (Lian Wan Situ).
* Fixed hook\_fd to work with sockets on Windows (Vince Pit).
***
## 2.6.1 - 06/Jan/2006
- Updated translations (de, el, fi, fr, gl, hu, ko, nl, pa, sq, vi).
- Added support for log rotation based on time or date.
- Double-click in tree layout will now expand/collapse (Lian Wan Situ).
- Keys to move tabs around now work in Tree layout too (Lian Wan Situ/Me).
- Largely re-written "Search Text" function with much better
behaviour and match case on/off and search backwards options
(Richard Hitt and Me).
- The parent row in the tree layout now changes color if you have
that group collapsed (Lian Wan Situ).
- Fixed crash when trying to Detach or Close a utility tab via
right-click, when it's not the currently focused tab.
- Made DCC resume handle case-insensitive file systems properly.
- Fixed the flashing when you click on a colored treeview row.
- Fixed auto-completion during /exec -o [1375530].
- Added "Join Channel" menu item to the Server menu.
- Unshade the Disconnect menu item when a connection is in progress.
- Fixed a possible crash in changing color settings before changing
to/from the tree layout (SF bug #1349088).
- Added "Auto accept file offers" to the File Transfer settings.
- Added support for brackets "<>" around nicknames in cut and paste,
without displaying them (hidden text) (Camillo Lugaresi).
- Fixed opening URL irc://NetWork/#channel not joining the channel
[1362155].
- Fixed the nickname label becoming small when you're marked Back
if you have "Small tabs" turned on.
- The textevents GUI has been re-written to use GtkTreeView.
- Randomized DNS lookups on Mac OS X on hostnames that return
multiple IP numbers (SG / CL).
- Added a dialog window to help newbies join a channel.
- Opening irc:// URLs will now JOIN only if you are already connected
to the network.
- Plugin API (Lian Wan Situ):
* Added selected flag to "users" list.
* Added "id" to xchat\_get_prefs.
* Changed xchat\_find_context (ph, channel, NULL) to return results
from the same server group as the current context when possible.
- Perl (Lian Wan Situ):
* using emit\_print/command/recv will no longer trigger their own
callbacks.
* Fix compiling issues with versions older than 5.8.2.
* Make all scripts appear in the "Plugins and Scripts" window, even
those that do not call register().
***
## 2.6.0 - 03/Nov/2005
- Updated translations (nl, zh\_TW).
- Message boxes are now warning, error or info with appropriate icon.
- Red marker line feature enabled by default.
- Added /SEND <nick> [file] which will automatically switch to PSEND
when detecting a private net address.
- Simplified default nick-right-click menu.
- Show "Last Talk" in nick-right-click menu as "minutes ago".
- Strip mIRC colour from away message in right-click menu.
- Warn when opening banlist in non-channel.
- Reorganised and simplified IRC/Server menus and new View menu.
- The editable Server menu is no more, if you want it type
/set gui\_usermenu 1 and restart.
- Option to view channels in tabs or tree structure.
- Shorter titlebar text for better viewing in taskbar.
- Disabled key-search in server list, as GTK's auto-find does this
better.
- Removed "Connect in new tab" button in server list, it now does it
intelligently. Use stock Connect icon.
- Removed "Tint (shade) transparency" item from settings and figure
it out based on tint values.
- When closing a tab, re-focus the one near by, instead of always the
last.
- Firefox style close button.
- The lag and throttle metres now have tooltips that give you real
information (hover the pointer over them).
- Added workaround to show on-join ChanServ notices in the right tab.
- Tab scroll buttons are now side-by-side when in vertical mode.
- Automatically change key shortcut of "Marked Away" if the
translation already uses ALT-A for the Help menu (e.g \_Aide in
French).
- Your nickname in the bottom-left corner now turns gray when you are
marked away, just like the userlist.
- Introduced a delay before joining channels, to allow for FreeNode's
short comings. If a umode +e is received it'll send auto-join
channels immediately.
- Plugin API: Added win\_ptr to xchat\_get\_info.
- Non-irc (utility) tabs can now be detached aswell.
- Fixed behaviour problems of the userlist pane, which might be set
incorrectly if the window was resized while a server-tab is focued.
- Added a confirm-dialog when trying to close a server-tab with
children.
- Server list's edit window now gives you an option of a network
specific "Second choice" nickname.
- Auto detect RusNet and use /NICKSERV to identify instead of /MSG.
- Added /Ghost command.
- Fixed: The WHOIS away-line ignored irc\_whois\_front setting.
- Scroll-wheel now works while hovering over a tab (Lian Wan Situ).
- The input box right-click menu now has bold, underline and italic.
- Added xchat-remote for launching irc:// URLs in existing xchat
and other functions (Claessens Xavier).
- WIN32: Auto-loading perl scripts now also works from:
C:\Program Files\XChat\Plugins\
- Better command-line parameter parsing via GOption.
- Tab completion order can now be in "last talk" order if you
/set completion\_sort 1.
- "Channel Action" and "Channel Action Hilight" now have a 3rd
argument of "Mode char", just like normal message events. The last
talk time is also now updated on actions.
- Reworked the Character Chart window so you can find your char.
- Perl:
- fixed so that printf and commandf are exported
- print and printf can also be called as prnt and prntf, this is to
avoid clashing with the builtins.
- Deprioritized MODE/WHO to reduce join lag.
- WIN32: Mask out more invalid filename characters when writing to
log files.
***
## 2.4.5 - 10/Sep/2005
- Updated translations (cs, el, fr, gl, it, nl, sl, sr, vi, zh\_TW).
- Fixed incorrect information displayed in Plugins & scripts window
under unix (xc244-fixpluginns.diff).
- Added "/set irc\_whois\_front 1" option to show WHOIS in front tab.
- Lots of speed ups under the hood, mainly in handling of URL
highlighting during mouse motion. Also now allows underlining
.name and .info domains [1230265].
- Moved the "Insert color code" menu into the input box's right-
click menu.
- Fixed "Your Message" messing up when starting with a comma
[1230269].
- Added /id command to identify yourself to nickserv.
- Added /gui MSGBOX <text> for scripters.
- Added /menu command which lets plugins/scripts add their own
menu items.
- Added support for passive DCC chat via /DCC PCHAT <nick>.
- Added support for DCC sending and receiving very large files
(above 4 GB).
- Improved layout of "Info" button in the DCC windows.
- Improved layout of the nick-name right-click menu.
- Improved /help command's display of plugins/script commands.
- Fixed two bugs in detaching tabs (or CTRL-I) [1228926].
- Added /uselect command for scripters to select nick names in the
channel userlist (Daniel P. Stasinski).
- Fixed possible crashes while using the SJIS (Japanese) charset.
- Fixed various memory leaks in right-click menus.
***
## 2.4.4 - 20/Jun/2005
- Updated translations (hi, ko, lt, pa, ru, vi, zh_TW).
- People's away message is now shown in the right-click menu, if
known (Christopher Aillon).
- The "Bind to:" setting can now be set to 0.0.0.0 [1176256].
- Plugin API: Don't crash if a print-event closes the current context
and doesn't eat the event [1175674].
- Disabled parsing of quotation marks for /JOIN, so you can join
channels with a quote in them (Dan Fruehauf).
- Fixed truncation of the URL in the right-click menu. Now handles
UTF-8 properly [1188229].
- Fixed use of CP1255 charset, which would chop the last char when
receiving messages [1122089].
- The DCC windows now allow multiple selection and the columns auto
resize (Dan Fruehauf).
- Added "CTCP Sound to Channel" event [1159445].
- You can now drag and drop files into dialog windows to start file
transfers.
- Perl:
- Fix to allow fully qualified variable names to work as well.
- Enabled individual script unloading.
- Enabled reloading scripts using XS modules.
- Fixed handling of filenames with spaces in them.
- Added /reload which works like /load but it will do an unload first
it is not necessary to use the full path with this command, just
the file name is enough.
- Fix print callbacks for cases where there are NULL elements between
non-NULL elements.
- Fixed: "XChat can't ban users with long idents" (Dan Fruehauf)
[1159447].
- Implemented taskbar flashing on unix. Requires a window manager
or taskbar that supports XUrgency flag (Adil).
***
## 2.4.3 - 31/Mar/2005
- Updated translations (de, sq, zh\_CN).
- Fixed crash of server list connect button when no network is
selected while using GTK's auto-find feature [1166669].
- Fixed handling of WhoIs Special event on some networks where it
could chop off the first character [1164315].
- Plugin API changes: Added "nickserv" field to xchat\_get\_info.
- Python: Fixed get\_list() incorrectly failing when the list
contained a time field [1171525].
- Perl: Make scripts using calls with fully qualified subs work again
[1170139] (Lian Wan Situ).
- Fixed input-box input-method (GTK I.M.) problem [1168239].
- Fixed: Ignore and Notify windows incorrectly used the stock CLOSE
button instead of DELETE [1170655].
- Placed Close/Connect buttons in correct position in server list
[1165474].
***
## 2.4.2
- Updated translations (ca, de, lt, nl, ru, sk, sr, vi).
- Added command line args -u and -p.
- Fixed handling of "MODE -o+o nick nick" (#1094026).
- Plugin API changes:
* Added "Key Press" print event.
* Added "state\_cursor" for xchat\_get\_prefs.
* Added xchat\_strip and xchat\_free functions.
* Added "lasttalk" field to "users" list.
* Added "charset" field to xchat\_get_info.
- Perl plugin changes (Lian Wan Situ):
* Move each script into their own unique package/namespace. Scripts
containing multiple packages will not be loaded.
* When warning messages are emitted you will now be told which
script it came from.
* Xchat::set\_context will now accept Xchat::set\_context( $channel )
and Xchat::set\_context( $channel, $server ) in addition to
Xchat::set\_context( $context ).
* Fix display of loaded scripts in the Plugins and Scripts window.
- TCL: Fixed crash with invalidated TCL timer (#1110306) (Daniel P.
Stasinski).
- /TIMER now supports timeouts to one decimal place.
- Fixed possible crash of open-file dialog on 64-bit machines.
- Pressing CTRL-O in the DCC Receive window will now open your
downloads folder.
- Win32: Default download folder changed to "My Documents\Downloads".
- Added -quiet arg to the /charset command.
- The /country command now supports a wildcard search.
- The user is now warned when real/user name is left blank in the
server list window.
- Added the /URL command.
- Added a text event for all unknown WHOIS reply lines.
- Added /ALLCHANL which sends to the current server only.
- Actions (/ME) are now treated like PRIV/CHAN for purposes of the
ignore list.
***
## 2.4.1
- Updated translations (ca, de, eu, it, ko, mk, nb, nl, pt, ru, sl,
sq, uk, zh\_TW).
- Fixed custom marker-line color not reloading.
- Brought back the "Connect to selected server only" option in the
Serverlist edit window (it's like the reverse of "Cycle until
connected" in 2.0.x).
- You can now move networks and servers via Shift+Up/Down (in the
ServerList window).
- Small efficiency improvements in receiving dcc. It will now not
send ACKs while the input buffer is non-empty.
- Python: Fixed crash when a timer callback routine executes
xchat.unhook() and returns false.
- Fixed playing sound files with spaces in them.
- Added support for NickServ on DalNet and FreeNode.
- Plugin API: Added xchat\_get_info(ph,"inputbox");.
- Added /settext and /setcursor commands for scripters.
- You can now scroll tabs with the mouse-wheel while hovering over
the arrow buttons.
- Fixed connecting to a SSL server via http proxy (#1054152).
- Fixed: Opened server tab doesn't count as "requested" (#1044227).
***
## 2.4.0
- Updated translations (ca, de, eu, it, ko, lt, nl, sk, sr, zh\_CN).
- Fixed a possible crash in loading pevents.conf.
- Made default URL handlers work with Firefox 0.9.x by adding the
"-a firefox" argument.
- Plugin API: Added xchat\_get_info field "libdirfs".
- Fixed crash when trying to dcc send a filename which has encoding
that doesn't match G\_FILENAME\_ENCODING.
***
## 2.1.1
- Updated translations (de, kr, lt, sk, sr, zh\_CN).
- Added some rudimentary support for the IDENTIFY-MSG feature.
- Perl: Added Xchat::context\_info (Lian Situ).
- TCL: Added support for time fields in getlist (Daniel P.Stasinski).
- Added "Open Dialog" event, so you can add a sound-file to it.
- The standard beep can now be overridden with a sound-file.
- Fixed tab-nick-completion's cycling behaviour.
- New keyboard shortcut for line up and down (shift-arrow up/down).
- Fixed: [986958] tab completion with GTK Input-Methods.
***
## 2.1.0
- Updated translations (eu).
- Tab nick completion fixes: Crash with space-tab and glib critical
warning (Ian Kumlien).
- Heavily reworked the Preferences window. It should be alot clearer
now, and more gnome-like.
- 'Pop new tabs to front' setting now has three options (Kyoshiro).
- New colors and text-events, using a white background.
- Config files are not saved to disk unless you edit the defaults.
This makes it easier to change language (for print events, popup
menu etc).
- Brand new Server List window. Now much simpler and intuitive. Also
includes an entry box for NickServ password.
- The vertical separator line now has its own pointer when you hover
over it (Richard Gobeille).
- Alphabetical tab sorting now works and is enabled by default.
- Added "Small Tabs" option (reduces the font size).
- Brand new Sound-Events editor in the Preferences window.
- Added socks5 authentication support (Benjamin Foster).
- Win32: fixed auto-loading of TCL scripts.
***
## 2.0.10
- Updated translations (ru, sr).
- Fixed compiling on systems other than linux/freebsd [969643].
(Samuel Mimram).
- Fixed compiling with an old version of GTK (2.0.x).
- Further BiDi fixes in xtext (Ilya Konstantinov).
- Brand-new tab completion code (Ian Kumlien). This also fixes:
Tab expansion not working behind umlauts [956127].
Plugin commands can now be tab-completed too (Frank Thieme).
- Fixed parsing URIs on userlist drag-n-drop (Jonas Heylen).
- Added Sort button to the server list window (David Oftedal and
Tim-Philipp Mueller).
- Tab button selection fix (Guillaume Knispel).
- Added marker-line feature. Shows a red-line to indicate the place
where you last read up to (Thomas Kockerbauer).
- The "Get my IP from Server" feature now works on networks that
hide your hostname too (by using the USERHOST command).
- Win32: Fixed CPS calculation for file transfers [824934].
- Fixed: Ping timeout when the system clock changes [789140].
- Fixed: Private messages delivered to status window when nickname
is the same as the network [977550].
- Maximised window-state is now saved.
- Double middle-clicking a nickname in the text area will now select
it in the userlist.
- Included a work-around to stop X-Sys plugin crashing with GTK 2.4.
- Fixed: /list output going to the current tab [970746].
- Fixed: Serverlist crash while editing a port-number, and switching
to another network before pressing enter [968652].
- Made it possible to execute multiple "Connect Command:"s in the
ServerList window, when they're separated by ctrl-shift-a.
***
## 2.0.9
- Updated translations (bg, cs, de, en\_GB, eu, fi, lt, nl, ru, sk,
uk, wa).
- Fixed the Socks5 overflow security bug.
- DCC IP address setting can now be a hostname too (Flavio
Chierichetti) [773229].
- Don't try random DCC ports when a range is set (mib) [889987].
- Fix: Spurious nick completion (mib) [916944].
- Serverlist passwd box is now masked (Cristian Peraferrer) [920113].
- Fix: Sometimes messes up the tab order on reconnect (Gabor Szeder)
[941773].
- Fix: Crashes when setting $CHARSET to nonexistant charset [945855].
- Plugin API: Added some fields to the "channels" list.
- Plugin API: Added "win\_status" and "xchatdirfs" fields to
xchat\_get\_info.
- Plugin API: Added xchat\_send\_modes() function.
- Fix: Unload, then reload a plugin on FreeBSD fails (Kevin Leung).
- Plugins should now work on HPUX too.
- Perl-plugin: Fixes for 3 arg version of emit\_print, unhooking the
same hook multiple times and get\_list returning correct values for
address32 field and some memory leaks (Lian Situ).
- Made menu keybindings work when the menubar is hidden on GTK 2.4.
- Added support for the new GTK 2.4 file chooser dialog.
- Fix for BiDi in xtext (Ilya Konstantinov).
- Smaller bug fixes [962211] [958599] [950353] and
[945617] (Frederic Krueger).
***
## 2.0.8
- Updated translations (az, es, fi, lt, mk, nl, ru, sk, sl, sr, sv,
zh\_CN).
- Added color, flash and iconify args to /GUI command (this is for
use in scripts and plugins only).
- Plugin API: Added "notify" list.
- Plugin API: Added id, users, flags fields for "channels" list.
- Win32: Better error messages for file i/o and winsock errors.
- New Perl interface (with backward compatibility)! (Lian Situ).
- Fixed command-character buglet [873541].
- Win32: Improved incorrect CPS display for file transfers.
- Added "Copy Selected URL" option to URL popupmenu (Mike Battersby).
- Added work-around for "Get my IP from server" not working on PTNet
(Mario Freitas).
- Fixed: Alt+numbers do not work with X Input Method [896968] (Marius
Gedminas).
- Added support for "+port" to indicate SSL connections.
- Fixed non-ASCII chars in time-stamp bug [918445].
- Smaller bug fixes: [870073] [890891].
***
## 2.0.7
- Updated translations (fi, nl).
- Fixed dcc psend crash [858539].
- Fixed bug where an error message was erroneously displayed while
transfering files with fast-send turned off. Also, allow fastsend
to be used with psend (Daniel Dubois).
- Print more informative messages when Perl scripts fail to load
(Andy).
- Win32: Added native sound playing support.
- Win32: Fixed possible crash upon exit while still connected.
- Fixed notify's Lastseen column for offline users [864185].
- Report more informative error when DCC write to disk fails.
- Fixed crash when xchat.conf contains oversized strings [750403].
***
## 2.0.6
- Updated translations (de, lt, sl, sr).
- Fixed detection of Python on amd64 (Mads Martin Joergensen).
- Don't loose editbox contents when pressing up, then down arrow
(Ricky Clarkson).
- Fixed missing dcc flag on new ignores via gui.
- Fixed missing separator bar on PseudoColor displays.
- Fixed some 64-bit issues (xc205-fix64bit.diff).
- Apply tint changes instantly.
- Fixed DCC resume with mirc >= 6.1.
- Python plugin changes:
* Fixed the reentrancy problem which made xchat freeze when some
python code made xchat trigger a python callback somewhere.
* Implemented xchat\_emit\_print() and xchat\_get\_prefs() support.
* Fixed softspace support for python 2.3. This problem was making
print statements yield an extra space at the next line start.
* Other minor changes.
(Gustavo Niemeyer, Gustavo J. A. M. Carneiro, Marko Kreen).
- Fixed request of a MODE on a channel you're not in changing the
current titlebar [820998].
- Restored compatibility with older Perl that lacks call\_pv().
- Use sigaction inplace of signal() for better compatibility.
- Win32: Don't try to open logfiles with a "\" in them, windows wont
allow it. Instead, the "\" is replaced by a "\_".
- Backported HTTP authentication code from 1.8.11 (you can now
specify a username and password for HTTP proxies).
- When beep on highlight is on, beep on channel actions too
(Christopher A. Aillon)
- Added active dcc send feature (/dcc PSEND). More info here:
http://mail.nl.linux.org/xchat-discuss/2003-10/msg00124.html
(Daniel Dubois and Emmanuel Jeandel).
- URL Handlers menu now removes programs that arn't in PATH.
- Added "away" users field for plugin API.
- Smaller bug fixes: 822199, 786267, 783172, 811971, 756048, 844919.
***
## 2.0.5
- Updated translations (ca, fi, lt, nl, sk, sv, zh\_CN).
- Fixed detection of Python 2.3 in configure script (anonymous).
- DCC Send file-selection dialog now supports multi-select.
- Reset away status after auto-reconnect from a ping timeout.
- Perl: Fixed IRC::user\_info always matching the first entry.
- More C89 fixes for non-gcc compilers (Albert Chin). [781809].
- xtext: now double buffered and flicker free. Also some efficiency
tweaks for exposure events and multi-wrapped lines.
- Removed buggy numeric 338 support [783945].
- Nick completion in dialogs and channel completion (Jay Cornwall).
- Print informative error messages when dcc resume isn't possible.
|