summaryrefslogtreecommitdiff
path: root/ChangeLog
blob: a9d4887f4a67f6f0e89b9f892732c55cf9d66bc9 (plain)
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
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
2009-04-04	Jannis Pohlmann <jannis@xfce.org>

	* AUTHORS: Add Travis Watkins as a contributor.
	* docs/reference: Update API docs.
	* libxfce4menu/xfce-menu-directory.{c,h},
	  libxfce4menu/xfce-menu-element.{c,h},
	  libxfce4menu/xfce-menu-item.c,
	  libxfce4menu/xfce-menu-separator.c, libxfce4menu/xfce-menu.c: Add
	  xfce_menu_element_get_visible() to XfceMenuElement. The
	  XfceMenuSeparator implementation always returns TRUE while the
	  XfceMenuItem implementation checks the Hidden/OnlyShowIn/NotShowIn
	  values of the corresponding desktop entry. XfceMenu checks the
	  Hidden/OnlyShowIn/NotShowIn values of its XfceMenuDirectory as well
	  as whether there are any visible child elements. Thanks to Travis
	  Watkins for the patch.
	* tests/test-display-menu.c, tests/test-menu-spec.c: Update tests to
	  reflect the latest API changes. Thanks to Travis for updating
	  test-display-menu.c.

2009-03-15	Jannis Pohlmann <jannis@xfce.org>

	* STATUS: Update STATUS file.

2009-03-15	Jannis Pohlmann <jannis@xfce.org>

	* docs/reference/: Update API docs.
	* libxfce4menu/libxfce4menu.c: Set path pointer to NULL after freeing
	  it to avoid random data in it.
	* libxfce4menu/xfce-menu-merger.c: Prepend a default layout element
	  to the root menu so that the root menu and its children have a
	  layout to use as a fallback. Remove empty layout elements so that
	  we can fallback to the default layout. 
	* libxfce4menu/xfce-menu-node.{c,h}: Add new function
	  xfce_menu_node_tree_get_child_node(). Add
	  XFCE_MENU_NODE_TYPE_DEFAULT_LAYOUT to the XfceMenuNodeType enum.
	* libxfce4menu/xfce-menu-parser.c: Parse <DefaultLayout> elements.
	  Attributes are currently ignored.
	* libxfce4menu/xfce-menu.c: Properly look up the right layout or
	  default layout in xfce_menu_get_elements().
	* tests/test-display-menu.c, tests/test-menu-spec.c: Improve error
	  messages.

2009-03-15	Jannis Pohlmann <jannis@xfce.org>

	* docs/reference/libxfce4menu-sections.txt,
	  docs/reference/libxfce4menu.types, libxfce4menu/Makefile.am,
	  libxfce4menu/libxfce4menu.h, libxfce4menu/xfce-menu.{c,h}, 
	  libxfce4menu/xfce-menu-layout.{c,h}: Remove XfceMenuLayout class.
	  Also remove xfce_menu_get_items() and rename
	  xfce_menu_get_layout_elements() to xfce_menu_get_elements(). Make
	  menu layouts work again with the GNode trees we have instead of
	  XfceMenuLayout now.
	* tests/test-display-menu.c, tests/test-menu-spec.c: Update tests to
	  the latest API.

2009-03-15	Jannis Pohlmann <jannis@xfce.org>

	* libxfce4menu/xfce-menu-node.c: Really fix the typo this time.
	* libxfce4menu/xfce-menu-parser.c: Remove break inside an if statement
	  and thereby fix the parsing of <Layout> child elements.

2009-03-15	Jannis Pohlmann <jannis@xfce.org>

	* libxfce4menu/xfce-menu-node.c: Fix type macro typo in
	  xfce_menu_node_tree_get_layout_merge_type().

2009-03-15	Jannis Pohlmann <jannis@xfce.org>

	* libxfce4menu/xfce-menu-merger.c: Remove duplicate layout nodes and
	  only keep the last one.

2009-03-14	Jannis Pohlmann <jannis@xfce.org>

	* libxfce4menu/*.h: Remove trailing semicolons after G_BEGIN_DECLS and
	  G_END_DECLS because it makes gobject-introspection freak out and its
	  also a bit of a syntax error. Reported by Travis Watkins.

2009-03-14	Jannis Pohlmann <jannis@xfce.org>

	* INSTALL: Update the install information.
	* configure.in.in, libxfce4menu/libxfce4menu-0.1.pc.in, 
	  libxfce4menu/xfce-menu-directory.c, 
	  libxfce4menu/xfce-menu-item-cache.c, libxfce4menu/xfce-menu-item.c,
	  libxfce4menu/xfce-menu-merger.c, libxfce4menu/xfce-menu-parser.c: Get
	  rid of libxfce4util and related code like xfce_resource_dirs(). Use 
	  GKeyFile instead of XfceRc. A lot of this code comes from Travis 
	  Watkins <amaranth@ubuntu.com> who was kind enough to provide a
	  patch.
	* docs/reference/libxfce4menu-sections.txt: Update sections.
	* libxfce4menu/libxfce4menu.{c,h}: Rename xfce_menu_init() and
	  xfce_menu_shutdown() to libxfce4menu_init() and
	  libxfce4menu_shutdown(). Add new function 
	  xfce_menu_config_lookup(). 
	* libxfce4menu/xfce-menu.{c,h}: Use xfce_menu_config_lookup() instead 
	  of xfce_resource_lookup(). Remove xfce_menu_init() and 
	  xfce_menu_shutdown() declaration in the header file.
	* tdb/: Remove TDB entirely.
	* tests/test-display-menu.c, tests/test-menu-parser.c,
	  tests/test-menu-spec.c: Update to new API and get rid of
	  libxfce4util code.

2009-03-12	Jannis Pohlmann <jannis@xfce.org>

	* libxfce4menu/xfce-menu-monitor.h, libxfce4menu/libxfce4menu.c:
	  Something is wrong with the API docs. Another try to fix them.

2009-03-12	Jannis Pohlmann <jannis@xfce.org>

	* libxfce4menu/xfce-menu-monitor.h, libxfce4menu/xfce-menu.c: Try to
	  fix broken API docs syntax and add docs for the
	  XfceMenuMonitorVTable members.

2009-03-12	Jannis Pohlmann <jannis@xfce.org>

	* libxfce4menu/xfce-menu-directory.{c,h}: Add function
	  xfce_menu_directory_equal() which compares two XfceMenuDirectory
	  objects based on their GFile members.
	* libxfce4menu/xfce-menu-layout.{c,h}: Use GList instead of GSList
	  everywhere.
	* libxfce4menu/xfce-menu-merger.{c,h}: Never access GNode data
	  directly. Instead always use the xfce_menu_node_tree*() functions.
	* libxfce4menu/xfce-menu-node.{c,h}: Add functions
	  xfce_menu_node_tree_get_child_nodes(),
	  xfce_menu_node_tree_get_string_children(),
	  xfce_menu_node_tree_get_boolean_child() and
	  xfce_menu_node_tree_get_string_child() to collect the values of
	  immediate children of a GNode tree.  Add new functions
	  xfce_menu_node_tree_set_string() and
	  xfce_menu_node_tree_set_merge_file_filename() so that GNode data
	  needs to be accessed less often. Fix assertions in a few other
	  functions.
	* libxfce4menu/xfce-menu-parser.c: Fix segmentation fault due to an
	  uninitialized GError in GIO.
	* libxfce4menu/xfce-menu.{c,h}: Use GList instead of GSList everywhere.
	  Improve API docs for a few public functions. Change xfce_menu_new()
	  again to expect a filename as the first parameter. Add a separate
	  function xfce_menu_new_for_file() to create an XfceMenu from a
	  GFile. Rename xfce_menu_get_root() to xfce_menu_new_applications().
	  Replace a lot of traversing code with the new
	  xfce_menu_node_tree_get*() functions.
	* tests/test-display-menu.c, tests/test-menu-parser.c,
	  tests/test-menu-spec.c: Update to new libxfce4menu API.

2009-02-24	Jannis Pohlmann <jannis@xfce.org>

	* libxfce4menu/libxfce4menu.c: Add missing source file.

2009-02-24	Jannis Pohlmann <jannis@xfce.org>

	* docs/reference/: Try to get the damn docs right.
	* libxfce4menu/libxfce4menu.{c,h}, libxfce4menu/xfce-menu.c: Move
	  xfce_menu_init() and xfce_menu_shutdown() into libxfce4menu.{c,h}.
	  Fix #undef LIBXFCE4MENU_INSIDE_LIBXFCE4MENU_H. 
	* libxfce4menu/xfce-menu-node.{c,h}: Make XfceMenuNodeType enum code
	  private.

2009-02-24	Jannis Pohlmann <jannis@xfce.org>

	* docs/reference/: Remove tmpl/ subdir.

2009-02-24	Jannis Pohlmann <jannis@xfce.org>

	* docs/reference/: Update API docs.

2009-02-24	Jannis Pohlmann <jannis@xfce.org>

	* libxfce4menu/xfce-menu-node.h: Add missing declaration for
	  xfce_menu_node_type_get_type().

2009-02-24	Jannis Pohlmann <jannis@xfce.org>

	* docs/reference/: Update API docs section and stuff.
	* libxfce4menu/xfce-menu-move.{c,h}: Remove unused source files.

2009-02-24	Jannis Pohlmann <jannis@xfce.org>

	* libfxce4menu/Makefile.am: Remove non-existent files and missing
	  ones.

2009-02-24	Jannis Pohlmann <jannis@xfce.org>

	* libxfce4menu/xfce-menu-gio.{c,h}: Add missing source files for a few
	  GIO/GFile utility functions.

2009-02-24	Jannis Pohlmann <jannis@xfce.org>

	* STATUS: Big status update.
	* TODO: Create a TODO list.
	* configure.in.in, Makefile.am, tdb/: Remove TDB entirely.
	* libxfce4menu/libxfce4menu.h: Clean up.
	* libxfce4menu/xfce-menu-and-rules.{c,h},
	  libxfce4menu/xfce-menu-not-rules.{c,h},
	  libxfce4menu/xfce-menu-or-rules.{c,h},
	  libxfce4menu/xfce-menu-standard-rules.{c,h},
	  libxfce4menu/xfce-menu-rules.{c,h}: Remove all the XfceMenu*Rules
	  classes. Replace them with one very simple XfceMenuNode function.
	* libxfce4menu/xfce-menu-directory.{c,h}: Replace the filename string
	  property with a GFile file property. Replace
	  xfce_menu_directory_get_filename() with 
	  xfce_menu_directory_get_file() and remove
	  xfce_menu_directory_set_filename(). Fix typos in the signal
	  installation code. 
	* libxfce4menu/xfce-menu-item-cache.c: Remove all TDB related code.
	  Avoid memory leaks when creating new items (same patch as went into
	  the old trunk a while ago, bug #3812).
	* libxfce4menu/xfce-menu-item-pool.{c,h}: Update
	  xfce_menu_item_pool_apply_exclude_rule() and
	  xfce_menu_item_pool_filter_exclude() to use a GNode instead of an
	  XfceMenuRuleStandardRules.
	* libxfce4menu/xfce-menu-item.{c,h}: Accept URIs as input to
	  xfce_menu_item_new() and convert them to paths using GFile.
	* libxfce4menu/xfce-menu-merger.{c,h}: Implement the missing merging
	  and moving code. Fix a lot of bugs in the code. Never access
	  XfceMenuNodes directly, always use xfce_menu_node_tree_*()
	  functions.
	* libxfce4menu/xfce-menu-node.{c,h}: Add more xfce_menu_node_tree*()
	  functions. Simplify the code. Add support for matching
	  Include/Exclude/And/Or/etc. rules against XfceMenuItems. 
	* libxfce4menu/xfce-menu-parser.{c,h}: Minor cleanups.
	* libxfce4menu/xfce-menu.{c,h}: Change the first parameter of
	  xfce_menu_new() to GFile. Remove all the parsing code. Use
	  XfceMenuParser and XfceMenuMerger in xfce_menu_load(). Update all
	  the menu loading code to use GNode DOM trees. Replace the filename 
	  property with a GFile file property. Still waiting to be implemented 
	  again is the layout stuff. Remove functions like
	  xfce_menu_get_directory_dirs() which were not meant for public use
	  anyway.
	* tests/test-display-menu.c, tests/test-menu-parser.c,
	  tests/test-menu-spec.c: Update to the new API. Cleanups.

2009-02-22	Jannis Pohlmann <jannis@xfce.org>

	* configure.in.in: Depend on GTK+ 2.12 and GLib 2.14. Add dependency
	  on GIO 2.14 as well. 
	* libxfce4menu/Makefile.am: Add new source and header files.
	* libxfce4menu/libxfce4menu.h: Add new header files.
	* libxfce4menu/xfce-menu-node.{c,h}: Add new class XfceMenuNode which
	  holds the information for one element in the menu DOM tree, e.g.
	  <MergeFile>, <Name> or <Menu>
	* libxfce4menu/xfce-menu-tree-provider.{c,h}: Add new interface
	  XfceMenuTreeProvider for classes which hold a GNode DOM
	  representation for .menu files.
	* libxfce4menu/xfce-menu-parser.{c,h}: Add new parser for .menu XML
	  files. It builds a GNode DOM representation for the XML data. Each
	  GNode in the tree (except for the menu nodes) contains one
	  XfceMenuNode for the XML element information. The parser implements
	  XfceMenuTreeProvider.
	* libxfce4menu/xfce-menu-merger.{c,h}: Add new class XfceMenuMerger
	  which takes the DOM tree from the parser or any other 
	  XfceMenuTreeProvider and resolves duplicates, relative paths and,
	  most importantly, merges and deletes menus according to the
	  information in the DOM tree. It implements XfceMenuTreeProvider. It
	  is not complete yet because it doesn't implement <Move> elements 
	  and is not capable of consolidating child menus with the same name
	  at the moment.
	* tests/Makefile.am, tests/test-menu-parser.c: Add a small test
	  program which parses a menu file using XfceMenuParser and then runs
	  an XfceMenuMerger and prints the output of both.

2009-02-04	Jannis Pohlmann <jannis@xfce.org>

	* NEWS: Update NEWS.

2009-02-04	Jannis Pohlmann <jannis@xfce.org>

	* COPYING: Add "no invariant sections" hint to the GFDL.
	* configure.in.in: Post-release version bump.
	* libxfce4mixer/xfce-menu.c: Fix crash when reading invalid menu files
	  with characters outside the root <Menu> element. Of course this even
	  works with documents which have no <Menu> element at all.

2009-01-25	Jannis Pohlmann <jannis@xfce.org>

	* == 4.5.99.1 released! ==
	* NEWS: Update NEWS for the release.
	* configure.in.in: Bump version and dependencies and remove 'svn'
	  version tag.

2009-01-23	Jannis Pohlmann <jannis@xfce.org>

	* COPYING: Add GFDL 1.1 as requested by Michael Casadevall from
	  Xubuntu.

2009-01-14	Jannis Pohlmann <jannis@xfce.org>

	* configure.in.in: Post-release version bump.

2009-01-11	Jannis Pohlmann <jannis@xfce.org>

	* == 4.5.93 released! ==
	* configure.in.in: Bump version and dependencies and remove 'svn'
	  version tag.

2009-01-10	Jannis Pohlmann <jannis@xfce.org>

	* NEWS: Update NEWS for the upcoming 4.5.93 (Xfce 4.6 beta3) release.

2009-01-06	Jannis Pohlmann <jannis@xfce.org>

	* libxfce4menu/xfce-menu.c, libxfce4menu/xfce-menu-item-cache.c:
	  Review strings.

2009-01-02	Nick Schermer <nick@xfce.org>

	* libxfce4menu/xfce-menu-item-cache.c,
	  libxfce4menu/xfce-menu-separator.c: Add weak pointer to 
	  XfceMenuItemCache and XfceMenuSeparator so you can init and shutdown
	  the library multiple times without running into trouble.
	* NEWS: Update.

2008-12-06	Jannis Pohlmann <jannis@xfce.org>

	* configure.in.in: Re-add svn version tag.

2008-12-04	Jannis Pohlmann <jannis@xfce.org>

	* libxfce4menu/xfce-menu.c: Always use xfce_menu_get_element() when
	  comparing two menu elements instead of handling menus and items
	  in different ways.
	* libxfce4menu/xfce-menu-item.c: Minor cleanup of the
	  XfceMenuElement functions.
	* tests/test-display-menu.c: Always use xfce_menu_get_element(), never
	  use xfce_menu_item_get_name() directly.

2008-11-11	Jannis Pohlmann <jannis@xfce.org>

	* == 4.5.92 released ==
	* configure.in.in: Bump version and update dependencies.
	* NEWS: Update NEWS file.

2008-10-29	Jannis Pohlmann <jannis@xfce.org>

	* libxfce4menu/libxfce4menu-config.h.in,
	  libxfce4menu/xfce-menu-item.c: Fix copyright header.

2008-10-14	Stephan Arts <stephan@xfce.org>

	* NEWS: Updated for the beta1 release.

2008-09-12	Jannis Pohlmann <jannis@xfce.org>

	* NEWS, TODO: Updated for the alpha release.

2008-09-07	Stephan Arts <stephan@xfce.org>

	* configure.in.in: Bump libxfce4util dependency to 4.5.90, so people
	  won't use it with earlier versions. Remove -svn tag.

2008-09-02	Jannis Pohlmann <jannis@xfce.org>

	* libxfce4menu/xfce-menu-item-cache.c: Properly release the mutex at
	  the end of xfce_menu_item_cache_foreach(). Calling g_mutex_lock()
	  won't unlock the mutex ...

2008-08-31	Jannis Pohlmann <jannis@xfce.org>

	* libxfce4menu/xfce-menu-item.{c,h}: Add
	  xfce_menu_item_only_show_in_environment() function which checks
	  whether the current environment is present in the OnlyShowIn key of
	  a menu item. This should close bug #3741.

2008-08-31	Jannis Pohlmann <jannis@xfce.org>

	* autogen.sh: Don't print errors when trying to detect the
	  revision of a git svn repository.

2008-08-17	Brian Tarricone <bjt23@cornell.edu>

	* configure.in.in: Set LIBXFCE4MENU_VERSION_API independently
	  of the package version.
	* docs/reference/Makefile.am: use the correct API version when
	  linking with the library

2008-07-15	Jannis Pohlmann <jannis@xfce.org>

	* autogen.sh: Change @REVISION@ substitution for git svn
	  repositories again.

2008-07-10	Jannis Pohlmann <jannis@xfce.org>

	* autogen.sh: Fix @REVISION@ substitution when using git svn.

2008-07-06	Jannis Pohlmann <jannis@xfce.org>

	* libxfce4menu/xfce-menu.c: Add #if 0 around 
	  xfce_menu_resolve_legacy_menus() and 
	  xfce_menu_resolve_legacy_menu(). Avoids build errors on some
	  systems.

2008-02-06	Jannis Pohlmann <jannis@xfce.org>

	* STATUS: Status file updated, mainly to reflect the progress made
	  with filesystem monitoring.

2008-01-02	Jannis Pohlmann <jannis@xfce.org>

	* libxfce4menu/xfce-menu-item.{c,h}: Add support for the Comment field
	  via xfce_menu_item_get_comment().

2007-12-29	Jannis Pohlmann <jannis@xfce.org>

	* libxfce4menu/xfce-menu-monitor.{c,h}: Add support for defining what
	  kind of files/directories are monitored (XfceMenuMonitorFlags,
	  xfce_menu_monitor_set_flags(), xfce_menu_monitor_get_flags(),
	  xfce_menu_monitor_has_flags()).
	* libxfce4menu/xfce-menu.c: Check monitor flags before adding
	  files/directories to the monitoring system.
	* tests/test-display-menu.c: Center window on screen.

2007-12-27	Jannis Pohlmann <jannis@xfce.org>

	* libxfce4menu/xfce-menu-monitor.c: Use the KEY, not the VALUE pointer
	  to remove items from the shared handle hash table. In this case, use
	  the directory string instead of the shared handle. This should fix
	  the issue we've had with monitoring directories only.

2007-12-23	Jannis Pohlmann <jannis@xfce.org>

	* libxfce4menu/xfce-menu-item.{c,h}: Add support for "GenericName" as
	  requested by Brian. Also add a convenience function 
	  xfce_menu_item_has_category (XfceMenuItem *, const char *).
	* libxfce4menu/xfce-menu-item-cache.c: Re-add caching features, but now
	  also allow the cache to be invalidated using _item_cache_invalidate().
	  This can be used in combination with file monitoring: Once something
	  has changed a) destroy the current menu, b) invalidate the cache and
	  c) create the menu again.

2007-10-21	Jannis Pohlmann <jannis@xfce.org>

	* libxfce4menu/xfce-menu-item.{c,h}: Add support for the "Path" 
	  key of the .desktop entries. This makes it possible to start
	  menu items in a special working directory. Will make fixing
	  bug #3472 easier.

2007-10-20	Jannis Pohlmann <jannis@xfce.org>

	* libxfce4menu/xfce-menu-monitor.c: No, let's do it 
	  differently: You can now redefine the vtable. You can also
	  clear it by passing NULL. Whenever you want to change the
	  user_data, just pass the same vtable as before.
	* libxfce4menu/xfce-menu-item-cache.c: Deactivate the cache
	  for now. Perhaps we can add it later, together with fast
	  checksum support to detect filesystem changes.
	
2007-10-20	Jannis Pohlmann <jannis@xfce.org>

	* libxfce4menu/xfce-menu-monitor.c: Add vtable != NULL check
	  to xfce_menu_monitor_set_vtable. Avoids crashes when passing
	  a NULL pointer and makes other developers aware of what they
	  might be doing wrong.

2007-10-12	Jannis Pohlmann <jannis@xfce.org>

	* STATUS: Updated the status file to reflect the
	  current implementation status.

2007-09-25	Jannis Pohlmann <jannis@xfce.org>

	* libxfce4menu/xfce-menu-layout.c: As a follow-up to 
	  the last commit, fix the disabled code. There is no
	  parameter named 'layout'.

2007-09-25	Jannis Pohlmann <jannis@xfce.org>

	* libxfce4menu/xfce-menu-layout.c: Fix bug #3568 which
	  was caused by the layout variable not being used in
	  _set_property and _get_property. Thanks to Tomasz Mon
	  for the hint.

2007-09-20	Jannis Pohlmann <jannis@xfce.org>

	* libxfce4menu/xfce-menu-monitor.c: Use g_str_hash and 
	  g_str_equal for the file/directory to monitor handle
	  hash table, rather than comparing the pointers directly.
	* libxfce4menu/xfce-menu.c: Create submenu monitors after 
	  parsing by traversing the XfceMenu tree but remove them 
	  in xfce_menu_finalize (so creating the monitors happens
	  in the root menu, removing is handled inside the 
	  submenus). Now all monitors are properly removed when
	  the root menu is destroyed.
	* tests/test-display-root-menu.c: Print the pseudo monitor 
	  handle ID in monitor_file and monitor_directory.

2007-09-20	Jannis Pohlmann <jannis@xfce.org>

	* libxfce4menu/xfce-menu-monitor.{c,h}: Added methods to 
	  monitor files and directories. That way we can now add 
	  monitors for the main menu file as well as menu .directory 
	  files and the application directories - I think that's
	  all we need. Since there may be several XfceMenu's monotoring
	  the same application directories and menu files, those
	  are managed using a reference counting mechanism, so that
	  the monitor is only removed when all menus have asked
	  to remove the monitor on them.
	* libxfce4menu/xfce-menu.c: Monitor the main menu file as
	  well as .directory files and application directories. And
	  of course remove the monitors when the menu is destroyed.

2007-05-22	Benedikt Meurer <benny@xfce.org>

	* libxfce4menu/Makefile.am: Fix typo.

2007-05-20	Jannis Pohlmann <jannis@xfce.org>

	* configure.in.in: Disable empty AC_CHECK_FUNCS([]) call for
	  now. Fixes syntax error on IRIX (bug #3251, reported by
	  Daichi).

2007-03-25	Jannis Pohlmann <jannis@xfce.org>

	* libxfce4menu/xfce-menu-monitor.c: Use if statement
	  rather than g_return_(val_)if_fail to check whether vtable 
	  functions have been set.

2007-03-25	Jannis Pohlmann <jannis@xfce.org>

	* libxfce4menu/xfce-menu.c: Fix weird typo as noted by
	  Jens Luedicke.

2007-03-24	Jannis Pohlmann <jannis@xfce.org>

	* libxfce4menu/Makefile.am, libxfce4menu/xfce-menu.c, 
	  libxfce4menu/xfce-menu-monitor.{c,h}: Add monitoring support
	  by making it possible for library clients to define a vtable
	  with functions to be called whenever monitoring a file or
	  directory becomes necessary. This way Thunar and xfdesktop
	  can use ThunarVFS for monitoring and I don't need to care
	  about how they do it. Note: xfce_menu_monitor_notify_change()
	  is missing but will be adedd as soon as possible.
	  Add a missing NULL to g_strjoin() in xfce-menu.c as reported
	  by Jens Luedicke.
	* tests/test-display-menu.c: Add some dummy code for testing
	  the monitoring system.
	* docs/reference/: Updated and reorganized API docs.

2007-03-23	Jannis Pohlmann <jannis@xfce.org>

	* libxfce4menu/*.c: Remove gettext calls for strings
	  we don't really need to translate. Add gettext calls
	  were it makes sense. Remove several debug messages.

2007-03-23	Jannis Pohlmann <jannis@xfce.org>

	* libxfce4menu/libxfce4menu.h, libxfce4menu/Makefile.am, 
	  libxfce4menu/xfce-menu-element.{c,h}: XfceMenuElement 
	  interface with methods xfce_menu_element_get_name() and 
	  xfce_menu_element_get_icon_name() added. 
	* libxfce4menu/xfce-menu.c, libxfce4menu/xfce-menu-item.c, 
	  libxfce4menu/xfce-menu-separator.c: Add XfceMenuElementIface
	  to XfceMenu, XfceMenuItem and XfceMenuSeparator. Rename
	  xfce_menu_get_layout_items() to 
	  xfce_menu_get_layout_elements().
	* tests/test-display-menu.c: Use XfceMenuElement methods
	  where possible.

2007-03-23	Jannis Pohlmann <jannis@xfce.org>

	* tests/Makefile.am, tests/test-display-menu.c: Test program
	  for displaying a menu added again.

2007-03-23	Jannis Pohlmann <jannis@xfce.org>

	* docs/reference/tmpl/: Remove tdb related files from
	  SVN. They won't be installed to the system anyway.
	* tests/Makefile.am, tests/test-menu-spec.c: Test program for
	  the menu specification test suite added again.

2007-03-23	Jannis Pohlmann <jannis@xfce.org>

	* libxfce4menu/libxfce4menu-0.1.pc.in: Update pkg-config
	  information to point to the new header file location.

2007-03-23	Jannis Pohlmann <jannis@xfce.org>

	* libxfce4menu/Makefile.am: Install header files to 
	  $includedir/xfce4/libxfce4menu-<version>/libxfce4menu/.

2007-03-23	Jannis Pohlmann <jannis@xfce.org>

	* Move to libxfce4menu. 

2007-03-21	Jannis Pohlmann <jannis@xfce.org>

	* frap-menu-item.{c,h}: Improve set methods a little. Add 
	  support for TryExec as requested by Brian.

2007-03-20	Jannis Pohlmann <jannis@xfce.org>

	* frap-menu.c: Fix several memory leaks, among them a huge
	  310k bomb. You don't believe me? Well, see 
	  http://rafb.net/p/WPbFZy97.html for the numbers. All
	  menus (except the root menu) were ref'd twice and thus, their
	  data never got free'd anywhere.

2007-03-19	Jannis Pohlmann <jannis@xfce.org>

	* frap-menu.c: Initialize threading before anything else - this
	  seems to be a new requirement in GLib. Initialize node_type
	  of the parse context properly. Close directory handle at the
	  end of frap_menu_collect_files_from_path() to avoid mem leaks.
	* frap-menu-item-cache.c: Disable g_object_ref() calls on new
	  menu items. They're already created with a refcount of 1 ...
	* tests/test-display-root-menu.c: Initialize FrapMenu before
	  GTK+ so that threading is initialized earlier.
	* tests/test-root-menu.c: Catch possible GErrors when calling
	  frap_menu_get_root().

2007-03-19	Jannis Pohlmann <jannis@xfce.org>

	* frap-menu.c, docs/reference/tmpl/frap-menu.sgml: Improve
	  API docs a little bit. There's soooo much more to be 
	  documented.

2007-03-19	Jannis Pohlmann <jannis@xfce.org>

	* docs/reference/libfrapmenu-docs.sgml: Remove the xmlns:xi
	  attribute from <book>.

2007-03-19	Jannis Pohlmann <jannis@xfce.org>

	* configure.in.in, Makefile.am, docs/: Initial import of
	  gtk-doc support. Still needs some tweaking though.

2007-03-19	Jannis Pohlmann <jannis@xfce.org>

	* frap-menu.c: Avoid sorting items and submenus twice if
	  possible in frap_menu_get_layout_items().

2007-03-19	Jannis Pohlmann <jannis@xfce.org>

	* frap-menu.{c,h}: Add frap_menu_has_layout(). Return NULL
	  from frap_menu_get_layout_nodes() if a menu has no layout.
	  Disable crappy submenu consolidation code for now as it
	  didn't preserve menu layouts.
	  Sort submenus in frap_menu_get_menus() and items in 
	  frap_menu_get_items(), so API users don't have to do this.
	* tests/test-display-root-menu.c: Update test program to be
	  in sync with the latest API changes.

2007-03-18	Jannis Pohlmann <jannis@xfce.org>

	* frap-menu-item.c: Replace g_return_val_if_fail() calls in
	  frap_menu_item_new() with a less verbose if statement.

2007-03-18	Jannis Pohlmann <jannis@xfce.org>

	* frap-menu.c: Fix list returned by frap_menu_get_layout_items()
	  when no layout is used (submenus were not included).

2007-03-18	Jannis Pohlmann <jannis@xfce.org>

	* tests/test-display-root-menu.c: Do not skip menus without 
	  menu directory, use the menu name as display name in this 
	  case. 
	* frap-menu.c, frap-menu-layout.{c,h}: Add methods for a 
	  simplified <Menuname> support. I don't want to deal with XML 
	  attributes right now, we can add support for them later.
	  Don't return menus/items already used in the menu layout 
	  elsewhere. Sort menus/items before returning them - no need
	  for the clients to implement that by themselves anymore.
	* STATUS: Status updated.

2007-03-18	Jannis Pohlmann <jannis@xfce.org>

	* frap-menu-layout.{c,h}: FrapMenuLayout added. It only supports
	  <Filename>, <Separator> and <Merge> elements currently.
	* frap-menu-separator.{c,h}: FrapMenuSeparator added. This is a
	  singleton to be inserted into the GSList returned by 
	  frap_menu_get_layout_items() whenever a separator is required.
	* frap-menu.{c,h}: Implement parsing of <Layout>, <Separator>
	  and <Merge> elements. Add layout member to the FrapMenu struct.
	  Add method to fetch all items based on the layout: 
	  frap_menu_get_layout_items(). Call _frap_menu_separator_init()
	  in frap_menu_init() and _frap_menu_separator_shutdown() in
	  frap_menu_shutdown(). Check filename != NULL in 
	  frap_menu_new(). 
	* libfrapmenu.h: Add separator and layout to the main header.
	* tests/test-display-root-menu.c: Use 
	  frap_menu_get_layout_items() instead of frap_menu_get_items().
	* Makefile.am: Add separator and layout sources.
	* STATUS: Status updated.

2007-02-14	Jannis Pohlmann <jannis@xfce.org>

	* STATUS: Menu spec test suite results added.
	* tests/test-display-root-menu.c: Fix warning caused by copying
	  a string into a const gchar*.

2007-02-14	Jannis Pohlmann <jannis@xfce.org>

	* frap-menu-item-cache.h: Fix typo - it's 
	  frap_menu_item_cache_get_default(), not 
	  frap_menu_item_pool_get_default().

2007-02-14	Jannis Pohlmann <jannis@xfce.org>

	* STATUS: <Move>, <Old> and <New> are not working yet, so mark them
	  as not implemented yet. According to the menu test suite, everything
	  is completely supported now, except moving/merging menus and menu 
	  layouts!

2007-02-14	Jannis Pohlmann <jannis@xfce.org>

	* frap-menu-item.{c,h}: Don't ignore items which don't match the 
	  current desktop environment. Parse OnlyShowIn/NotShowIn and add 
	  method frap_menu_item_show_in_environment() which returns whether the 
	  item should be displayed in the defined desktop environment or not. 
	  Remove frap_menu_item_matches_environment(). Don't check for != NULL 
	  before free'ing strings (g_free won't complain anyway). 
	* frap-menu-directory.{c,h}: Don't check for != NULL before calling
	  g_free(). Add frap_menu_directory_show_in_environment() (see notes on
	  frap-menu-item.c for how it works). 
	* tests/test-display-root-menu.c: Update to the new FrapMenu API.

2007-02-13	Jannis Pohlmann <jannis@xfce.org>

	* frap-menu.c: Add frap_menu_collect_files() and 
	  frap_menu_collect_files_from_path() in order to collect potential
	  desktop entry filenames for each menu prior to resolving the menu
	  items. In these methods, desktop name collisions are handled by using
	  a (desktop-file id => absolute filename) mapping. After all filenames
	  are collected, we can simply iterate over them in order to resolve
	  the menu items. All in all, this mechanism adds some memory overhead
	  but reduces filesystem I/O at the same time.
	* ./, tdb/, tests/, tests/data/: Add better svn:ignore properties for
	  the subdirectories.

2007-02-08	Jannis Pohlmann <jannis@xfce.org>

	* frap-menu-item.c: Must have accidently reverted this file before
	  commiting the last changes. Do not decrement the allocation counter
	  in frap_menu_item_unref(), so excluded items won't be moved from
	  one menu to another.

2007-02-08	Jannis Pohlmann <jannis@xfce.org>

	* frap-menu-item-pool.{c,h}: Remove frap_menu_item_cache_apply_rules()
	  and frap_menu_item_cache_remove_allocated() as include/exclude rules
	  are handled differently now. Instead, add 
	  frap_menu_item_cache_apply_exclude_rule().
	* frap-menu.c: Remove frap_menu_resolve_items_from_path in favour of
	  frap_menu_resolve_items_by_rule() and
	  frap_menu_resolve_items_from_path_by_rule(), so items are only added
	  to the pool if they match one of the include rules (instead of
	  removing them later if they match no include rule). Update
	  frap_menu_resolve_items() according to this. Call
	  frap_menu_resolve_deleted() after resolving the items to preserve the
	  allocation state of items allocated by the menu. 

2007-02-06	Jannis Pohlmann <jannis@xfce.org>

	* frap-menu-directory.{c,h}: Add support for NoDisplay, Hidden and
	  partial support for OnlyShowIn/NotShowIn to menu directories. Fix
	  memory leaks when the filename of a FrapMenuDirectory is redefined
	  and the menu directory has to be reloaded (note: Hidden attributes
	  won't be recognized by the related menu after reloading).
	* frap-menu.c: Handle Hidden attribute of menu directories in 
	  frap_menu_resolve_deleted() to delete menus if necessary (gives us
	  another passed test in the fd.o test suite).
	* tests/test-menu-spec.c: Handle NoDisplay attributes of menu
	  directories when printing the menus.

2007-02-06	Jannis Pohlmann <jannis@xfce.org>

	* frap-menu-item-cache.c: Also acquire mutex lock in 
	  frap_menu_item_cache_foreach() as the item cache hash table could 
	  be modified by other threads during this call otherwise.

2007-02-06	Jannis Pohlmann <jannis@xfce.org>

	* frap-menu-item-cache.c: Add GMutex variable to the item cache and
	  lock the item cache in frap_menu_item_cache_lookup() which is the
	  only public function where the contents of the item cache may be
	  modified. 
	* frap-menu.c: Initialize GThread system in frap_menu_init ().

2007-02-05	Jannis Pohlmann <jannis@xfce.org>

	* tests/Makefile.am, tests/test-menu-spec.c: Test program for
	  the fd.o menu spec test suite added.
	* frap-menu-item.{c,h}: Replce "hidden" property with "no-display" as
	  hidden desktop entries won't even be parsed. Also replace all
	  accessor functions with _get_no_display(), _set_no_display()
	  equivalents. Ignore hidden desktop entries. Don't check TryExec for
	  now (as this causes errors when testing with the fd.o menu spec
	  test suite). Let frap_menu_item_get_allocated() return gint instead
	  of gboolean as we need to check at least two states (allocation 
	  counter > 1 and > 2) in FrapMenu and FrapMenuItemPool.
	* frap-menu-item-pool.{c,h}: Implement functions for removing already
	  allocated items (for menus with <OnlyUnallocated/>). Fix several
	  issues related to <Include>/<Exclude> rules, which did not work
	  properly until now.
	* frap-menu.c: Cleanup app dir related code. Remove allocated items
	  from menus with <OnlyUnallocated/> in the second pass of
	  frap_menu_resolve_items(). Only set the menu directory if there is
	  one. Don't try to load item files not ending with .desktop.
	* tests/test-menu-item.c: Use frap_menu_item_get_no_display() instead
	  of _is_hidden().

2007-01-16	Jannis Pohlmann <jannis@xfce.org>

	* frap-menu.c: Update documentation.
	* *.c, tests/*.c: Update copyright years.

2007-01-16	Jannis Pohlmann <jannis@xfce.org>

	* frap-menu-environment.{c,h}, libfrapmenu.h, Makefile.am: Add 
	  functions for defining the name of the desktop environment in 
	  order to ignore menu items belonging to other environments.
	* frap-menu.{c,h}: Add desktop environment name parameter to
	  frap_menu_init().
	* tests/*.c: Sync with new API.
	* frap-menu-item.c: Add frap_menu_item_rc_matches_environment() to check
	  whether a desktop file should be displayed in the current environment
	  or not. Call this method in frap_menu_new() before anything else is
	  parsed.

2007-01-15	Jannis Pohlmann <jannis@xfce.org>

	* frap-menu-item.c: Free TryExec argument list. Remove old code. Don't
	  copy the Exec string unnecessarily. Close the XfceRc file properly
	  at the end of the function.

2007-01-14	Jannis Pohlmann <jannis@xfce.org>

	* frap-menu.{c,h}: Add frap_menu_get_items() method as a convenience 
	  wrapper around frap_menu_item_pool_foreach. Thanks to Benny again.

2007-01-14	Jannis Pohlmann <jannis@xfce.org>

	* frap-menu.{c,h}, frap-menu-rules.h, frap-menu-standard-rules.h,
	frap-menu-{standard,or,and,not}-rules.{c}, tests/test-root-menu.c,
	tests/test-display-root-menu.c, Makefile.am, STATUS: Incorporate Benny's
	patch which he wrote for the xfce4-appbrowser mockup. This patch
	includes a lot of changes:

	  - Adds <All> support to all include/exclude rules
	  - Makes parsing include/exclude rules more sane if markup is malformed
	  - Adds kde-applications.menu and gnome-applications.menu to the list
	    of root menu files to search
	  - Adds GError support to menu loading functions
	  - Fixes <DirectoryDir> elements accidently being skipped
	  - Fixes use of g_access usage

	And some other small fixes. Huge thanks to Benny for this.

2007-01-11	Jannis Pohlmann <jannis@xfce.org>

	* frap-menu-item.{c,h}: Remove "allocated" property and replace it
	  with a kind of reference counter. Add frap_menu_item_ref/unref 
	  methods to be used instead of frap_menu_item_set_allocated() which
	  has been removed. Use "guint ... : 1" notation for boolean values
	  in the structs belonging to FrapMenuItem. 
	* frap-menu-item-pool.c: Call frap_menu_item_ref when adding an item
	  to the pool of a menu (instead of setting the allocated value 
	  directly).
	* frap-menu.c: Use "guint ... : 1" notation for boolean values in
	  structs. Fix frap_menu_set_filename to make free'ing the filename
	  possible. Implement recursive (bottom -> top) collecting of 
	  directory and legacy dirs (might be wrong for legacy dirs, I need 
	  to verify this during the next days). Implement two-pass mechanism 
	  to resolve menu items (in order to be able to handle 
	  <OnlyUnallocated> elements). Only set menu parse state to 
	  _STATE_ROOT if there are no other menus left on the stack.
	* STATUS: Update implementation STATUS.

2006-11-07	Jannis Pohlmann <jannis@xfce.org>

	* frap-menu-item-pool.c: Fix backwards compatibility by passing 
	  frap_menu_item_pool_remove to the hash table remove loop function 
	  instead of g_object_unref (we need a function returning TRUE here).
	* frap-menu.c: Initial import of legacy menu support by adding
	  frap_menu_resolve_menu, frap_menu_resolve_menus methods. It's not
	  complete yet (only FrapMenu's and FrapMenuDirectory's are created and
	  added to the menu structure; desktop entries are not parsed yet). In
	  addition to this, I added a workaround for distributions not
	  installing KDE properly, by adding $KDEDIR/share/desktop-directories/
	  to <DefaultDirectoryDirs>.
	  Also fixed some segfaults and warnings. 

2006-11-06	Jannis Pohlmann <jannis@xfce.org>

	* frap-menu.c, frap-menu-standard-rules.c, frap-menu-item-pool.c, 
	  frap-menu-item-cache.c: Apply patch by Jannis Pohlmann which makes
	  FrapMenu compatible with GLib < 2.12.

2006-11-03	Jannis Pohlmann <jannis@xfce.org>

	* frap-menu.{c,h}, frap-menu-move.{c,h}, Makefile.am, STATUS: 
	  frap_menu_get_menu_with_name() added. Implemented <Move>, <New> 
	  and <Old> elements (also added error handling for incomplete move 
	  instructions). A move instruction is a FrapMenuMove with properties 
	  "old" and "new", which refers to the source and target menu names. 
	  
2006-10-31	Jannis Pohlmann <jannis@xfce.org>

	* Makefile.am, tdb/: tdb added.
	* tests/test-root-menu.c: Return type fixed (EXIT_SUCCESS).
	* frap-menu-item-cache.{c,h}: Prepare for reading cached items from 
	  a tdb. This needs a carefully written memory management 
	  implementation of which I don't know yet how it might look like.
	  Change the signature of frap_menu_item_cache_lookup - the desktop id
	  is now passed as a third parameter. Add a _get_default method, so 
	  other classes can take a reference on the singleton object.
	* frap-menu.c: Make use of the new frap_menu_item_cache_lookup method.
	  Update FrapMenu to keep a reference on the frap menu item cache.

2006-10-15	Jannis Pohlmann <jannis@xfce.org>

	* frap-menu-item-pool.c: Fix item filter method in order to respect the
	  order of <Include>/<Exclude> elements.
	* frap-menu.c: Rename methods related to FrapMenuParseInfo. Don't load
	  the menu in frap_menu_set_filename (). Instead, just set the filename
	  and use the frap_menu_new (const gchar*) method to actually load the
	  menu file. A method to react on filename changes may be added later,
	  when I'm working on the filesystem monitor.
	  Merge submenus with the same name and consolidate app and directory
	  dirs. This is another step towards proper merging of menus according
	  to the spec and it increases the parsing speed.

2006-10-04	Jannis Pohlmann <jannis@xfce.org>

	* tests/test-display-root-menu.c: Add option to load a different menu 
	  than the default applications menu.

2006-10-04	Jannis Pohlmann <jannis@xfce.org>

	* frap-menu-item.c: Revert parts of the previous commit because of 
	  useless checks.
	* frap-menu.c: Remove <Deleted /> menus and add notes for other 
	  merge actions to be implemented.

2006-10-04	Jannis Pohlmann <jannis@xfce.org>

	* frap-menu-item.c: Make property assignment more clean.

2006-10-04	Jannis Pohlmann <jannis@xfce.org>

	* frap-menu.c: Err, this fixes the <OnlyUnallocated /> check when
	  resolving items.

2006-10-04	Jannis Pohlmann <jannis@xfce.org>

	* frap-menu-item-pool.c: Add frap_menu_item_pool_get_empty function.
	* tests/Makefile.am, tests/test-display-root-menu.c: Link against
	  libxfcegui4. Do not display empty menus. Improve icon loading again
	  and execute item command when menu items are clicked.
	* frap-menu-item.c: Leave Exec/TryExec command as is (do not modify the
	  url(s)/file(s) parameter. 
	* frap-menu.c: Respect <OnlyUnallocated /> item when resolve menu items.

2006-10-03	Jannis Pohlmann <jannis@xfce.org>

	* STATUS: Updated the implementation status.
	* tests/test-display-root-menu.c: Improved loading / displaying of
	  application icons. It's still not perfect, but much better than
	  before.

2006-10-01	Jannis Pohlmann <jannis@xfce.org>

	* frap-menu-or-rules.c, frap-menu-and-rules.c, frap-menu-not-rules.c:
	  Improve match functions and implement desktop file id matching.
	* Fix several compiler warnings in some of the files.

2006-09-30	Jannis Pohlmann <jannis@xfce.org>

	* STATUS: Status updated.

2006-09-30	Jannis Pohlmann <jannis@xfce.org>

	* frap-menu.h, frap-menu.c: Make get_rules and add_rule static methods 
	  in frap-menu.c. Implemented parsing of all include/exclude rule
	  elements. get_app_dirs returns all application directories from the
	  bottom up to the root menu now. Added methods to resolve the items of
	  a menu. This is at the moment done by 1) including all items into
	  the pool by scanning the app dirs recursively and 2) removing them
	  according to the include/exclude rules afterwards. 
	* frap-menu-or-rules.c, frap-menu-and-rules.c, frap-menu-not-rules.c,
	  frap-menu-rules.{c,h}, frap-menu-standard-rules.{c,h}: Fix and improve
	  the rules classes. The "include" interface still needs to be moved
	  into FrapMenuRules - Jannis, don't forget about it.
	* frap-menu-item-pool.{c,h}: Implemented several insert, lookup and
	  foreach methods as well as methods for applying the include/exclude
	  rules to the item pool.
	* tests/test-display-root-menu.c: Displays menu items now.
	* frap-menu-item.{c,h}: Added "desktop-id" and "allocated" properties.
	  Free private data in finalize. Don't parse/load MIME types.
	* Makefile.am, frap-menu-item-cache.{c,h}: Cache for menu items added. 
	  This cache currently does not save anything on your harddrives. It 
	  just seaches for an absolute menu item path in a hash table and if 
	  it doesn't exist, it reads the file, creates a menu item, adds it to 
	  the hash table and passes it to the menu asking for it. That's it. 
	  tdb stuff will be implemented later.

2006-09-28	Jannis Pohlmann <jannis@xfce.org>

	* Makefile.am, frap-menu-not-rules.{c,h}, frap-menu.c: FrapMenuNotRules 
	  for handling <Not> elements implemented.
	* tests/Makefile.am, tests/test-not-rules.c: Test program for the 
	  <Not> rules added.

2006-09-28	Jannis Pohlmann <jannis@xfce.org>

	* Makefile.am, frap-menu-and-rules.{c,h}, frap-menu.c: FrapMenuAndRules 
	  for handling <And> elements implemented.
	* tests/Makefile.am, tests/test-and-rules.c: Test program for the 
	  <And> rules added.

2006-09-28	Jannis Pohlmann <jannis@xfce.org>

	* tests/Makefile.am, tests/test-or-rules.c,
	  tests/test-display-root-menu.c: Added two additional test programs,
	  one for testing <Or> rules and one for displaying the root menu.
	* frap-menu-rules.{c,h}: Make methods for adding rules to a
	  FrapMenuRules object public. Add G_TYPE_OBJECT prerequisite to the 
	  FrapMenuRules interface.
	* frap-menu-standard-rules.{c,h}: Add "include" property. This will
	  probably be moved to the FrapMenuRules interface later. Fix abstract
	  ->match method.
	* frap-menu-or-rules.{c,h}: Add frap_menu_or_rules_new method. Make
	  FrapMenuOrRules a FRAP_TYPE_MENU_STANDARD_RULES type. Implement match
	  method (does not yet check the desktop file id, because it's not clear
	  how that is going to be handled).
	* frap-menu-item.c: Implement frap_menu_item_add_categories method.
	* frap-menu.c: Implement parsing of <Include>, <Exclude>, <Or>,
	  <Filename> and <Category> elements. <And> and <Not> are still missing.

2006-09-28	Jannis Pohlmann <jannis@xfce.org>

	* tests/data/Makefile.am: Update desktop entry filename. I'm using 
	  xfmedia.desktop as it provides everything I need to test (positively).

2006-09-27	Jannis Pohlmann <jannis@xfce.org>

	* frap-menu.{c,h}: Add frap_menu_new method to create a menu structure
	  from a filename.
	* frap-menu-item.{c,h}: Implement first parts of the FrapMenuItem class.
	  This class acts as a wrapper for .desktop entries and represents one
	  application/command.
	* frap-menu-item-pool.{c,h}: First code for FrapMenuItemPool added.
	  Please note that this class has no real use yet. It will probably act
	  as a (Desktop-File Id => FrapMenuItem) mapping. Every menu will have
	  such a pool and whenever the menu needs to access it's menu items, the
	  pool will be queried. The pool itself doesn't store the
	  FrapMenuItem's. They will be kept in cached FrapMenuItemDatabase and
	  be shared among all pools.
	* tests/, test/data/, tests/test-root-menu.c, tests/test-menu-item.c, 
	  tests/Makefile.am, tests/data/Makefile.am, tests/data/xfmedia.desktop:
	  Test environment added. All programs in this directory will test small
	  parts of the menu framework. The first two (one for testing
	  FrapMenuItem and one for loading the root menu) were also added.
	* libfrapmenu.h: Missing headers added.
	* frap-menu-standard-rules.c: This one is currently broken. I'll
	  implement the properties tomorrow.

2006-09-26	Jannis Pohlmann <jannis@xfce.org>

	* Makefile.am, frap-menu-rules.{c.h}: FrapMenuRulesIface interface added.
	  This interface will be used for the <And>, <Or> and <Not> elements.
	  It provides virtual methods to add filename and category rules as
	  well as FrapMenuRules objects (as the mentioned elements may be
	  nested). It also provides a virtual method for matching menu items
	  (essentially, desktop entries) against these rules.
	* Makefile.am, frap-menu-standard-rules.{c,h}: Implemented a base
	  class for all rule sets (<And>, <Or>, <Not>). It implements the add
	  methods of FrapMenuRulesIface. The responsibility of implementing the
	  match method is forwarded to subclasses of FrapMenuStandardRules.
	* Makefile.am, frap-menu-or-rules.{c,h}: This first implementation of
	  the FrapMenuRulesIface will be used for matching items against <Or>,
	  <Include> and <Exclude> elements. The match method is not implemented
	  yet, though.

2006-07-28	Jannis Pohlmann <jannis@xfce.org>

	* Import as libfrapmenu into the newly created libfrap development
	  library. Makefile.am probably still needs some tweaking and I need to
	  figure out how to link test programs in libfrap/ to this library, but
	  apart from that, everything has been renamed and should work.

2006-07-27	Jannis Pohlmann <jannis@xfce.org>

	* STATUS: Implementation status updated. Directory names are now 
	  resolved properly (and in reverse order).

2006-07-27	Jannis Pohlmann <jannis@xfce.org>

	* tests/display-menu.c: Removed debug statement and tooltips allocation.
	* libxfce4menu/xfce-menu.c: Use list for possible directory names and
	  try to load them in reverse order when resolving the menu directory of
	  an XfceMenu object. Free string lists properly.

2006-07-21	Jannis Pohlmann <jannis@xfce.org>

	* STATUS: Detailled information about the implementation status added.

2006-07-21	Jannis Pohlmann <jannis@xfce.org>

	* libxfce4menu/xfce-menu.c: Destroy the menu parse info in
	  xfce_menu_finalize, not directly after parsing the menu. Free
	  old parse info directory name when the menu directory name has 
	  changed and the menu is parsed again. 
	* tests/CMakeLists.txt, tests/display-menu.c: Added a test program to
	  display the menu structure. At the moment, it only contains menus
	  listed in the root menu file, no merged menus or menu items (as
	  these features have not been implemented yet).

2006-07-20	Jannis Pohlmann <jannis@xfce.org>

	* libxfce4menu/xfce-menu-directory.{c,h}: Remove the
	  xfce_menu_directory_lookup method, as the lookup is performed by the
	  menu by using its search paths.
	* libxfce4menu/xfce-menu.{c,h}: Recursively resolve menu directories
	  after the parsing process. xfce_menu_get_parent method added.
	* tests/load-root-menu-test.c: Print menu directory information.

2006-07-17	Jannis Pohlmann <jannis@xfce.org>

	* tests/load-root-menu.c: Cleanup the test program. Print legacy
	  and app dirs.

2006-07-17	Jannis Pohlmann <jannis@xfce.org>

	* libxfce4menu/xfce-menu.{c,h}: Implement recursive <Menu> parsing.
	  There is no support for merging menus across files and also, 
	  directory and desktop entry lookup is still missing.
	* tests/load-root-menu.c: Extend test program to print the complete
	  menu hierarchy.

2006-07-17	Jannis Pohlmann <jannis@xfce.org>

	* libxfce4menu/xfce-menu.{c,h}: Implemented the following elements:
	  elements: <DirectoryDir>, <DefaultDirectoryDirs>, 
	  <OnlyUnallocated>, <NotOnlyUnallocated>, <Deleted>, <NotDeleted>.
	  
	  Handle <Directory> differently, as we need to parse the whole menu
	  before we can lookup the directory file - therefor XfceMenuParseInfo
	  has been added, which will be used to store temporary information
	  in order to resolve things after parsing the menu.
	  
	  Abort setting properties if new values are equal to the old ones.
	* tests/load-root-menu-test.c: Display only_unallocated, delete and
	  directory_dirs information.
	
vim:set sw=8 sts=8 ts=8 noexpandtab: