Index: src/gtk/tasks-ui.xml
===================================================================
---- src/gtk/tasks-ui.xml (revision 288)
+--- src/gtk/tasks-ui.xml (revision 338)
+++ src/gtk/tasks-ui.xml (working copy)
-@@ -10,10 +10,8 @@
+@@ -7,17 +7,14 @@
+ <menuitem action="EditTask"/>
+ <menuitem action="CompleteTask"/>
+ <separator/>
++ <menuitem action="Undo"/>
++ <menuitem action="Redo"/>
++ <separator/>
<menuitem action="DeleteTask"/>
<menuitem action="PurgeTasks"/>
<separator/>
+ <menuitem action="About"/>
<menuitem action="Quit"/>
</menu>
+- <menu action="EditMenu">
+- <menuitem action="Undo"/>
+- <menuitem action="Redo"/>
+- </menu>
- <menu action="HelpMenu">
- <menuitem action="About"/>
- </menu>
</ui>
Index: src/gtk/main.c
===================================================================
---- src/gtk/main.c (revision 288)
+--- src/gtk/main.c (revision 338)
+++ src/gtk/main.c (working copy)
@@ -21,6 +21,7 @@
#include <libecal/e-cal.h>
+#include <owlwindowmenu.h>
#include <libkoto/ical-util.h>
- #include <libkoto/koto-category-group.h>
-@@ -462,17 +463,6 @@
- NULL);
- }
-
--/*
-- * Callback from the UI manager with the GtkMenu widget. Pack and add this to
-- * the container.
-- */
--static void
--ui_add_widget (GtkUIManager *ui, GtkWidget *widget, GtkContainer *container)
--{
-- gtk_box_pack_start (GTK_BOX (container), widget, FALSE, FALSE, 0);
-- gtk_widget_show (widget);
--}
--
- /* TODO: split into global actions and actions that require a task to be selected */
- static const GtkActionEntry actions[] =
- {
-@@ -563,11 +553,12 @@
- }
- /* Bind the accelerators */
+ #include <libkoto/koto-actions.h>
+@@ -564,8 +565,8 @@
gtk_window_add_accel_group (GTK_WINDOW (window), gtk_ui_manager_get_accel_group (ui_manager));
-- g_signal_connect (ui_manager, "add-widget", G_CALLBACK (ui_add_widget), top_box);
-
- /* Do this so that the menu is packed now instead of in the idle loop */
gtk_ui_manager_ensure_update (ui_manager);
--
-+ owl_set_window_menu_item (GTK_WINDOW (window),
-+ GTK_MENU_ITEM (gtk_ui_manager_get_widget (ui_manager, "/MenuBar/TasksMenu")));
-+
+
+- menu = gtk_ui_manager_get_widget (ui_manager, "/MenuBar");
+- gtk_box_pack_start (GTK_BOX (top_box), menu, FALSE, FALSE, 0);
++ menu = gtk_ui_manager_get_widget (ui_manager, "/MenuBar/TasksMenu");
++ owl_set_window_menu_item (GTK_WINDOW (window), GTK_MENU_ITEM (menu));
+
box = gtk_vbox_new (FALSE, 4);
gtk_container_set_border_width (GTK_CONTAINER (box), 4);
- gtk_container_add (GTK_CONTAINER (top_box), box);
Index: src/gtk/Makefile.am
===================================================================
---- src/gtk/Makefile.am (revision 288)
+--- src/gtk/Makefile.am (revision 338)
+++ src/gtk/Makefile.am (working copy)
@@ -4,7 +4,7 @@
bin_PROGRAMS = tasks
tasks_CPPFLAGS = -I$(top_srcdir)/
- tasks_CFLAGS = -Wall $(GTK_CFLAGS) $(ECAL_CFLAGS) $(SEXY_CFLAGS)
+ tasks_CFLAGS = $(WARN_CFLAGS) $(GTK_CFLAGS) $(ECAL_CFLAGS) $(SEXY_CFLAGS)
-tasks_LDADD = $(top_builddir)/libkoto/libkoto.a $(GTK_LIBS) $(ECAL_LIBS) $(SEXY_LIBS)
-+tasks_LDADD = $(top_builddir)/libkoto/libkoto.a $(GTK_LIBS) $(ECAL_LIBS) $(SEXY_LIBS) -lowl
++tasks_LDADD = $(top_builddir)/libkoto/libkoto.a $(GTK_LIBS) $(ECAL_LIBS) $(SEXY_LIBS) -lowl
tasks_SOURCES = \
main.c \
+++ /dev/null
-Index: libkoto/koto-utils.c
-===================================================================
---- libkoto/koto-utils.c (revision 294)
-+++ libkoto/koto-utils.c (revision 295)
-@@ -25,6 +25,7 @@
-
- typedef struct {
- GtkWindow *window;
-+ GtkTreeModel *model;
- char *title;
- } WindowData;
-
-@@ -67,19 +68,21 @@
- /*
- * Update the window title, generally as the number of tasks has changed.
- */
--static void
--update_title (WindowData *data, GtkTreeModel *model)
-+static gboolean
-+update_title (gpointer user_data)
- {
-+ WindowData *data = user_data;
- int count = 0;
- char *title;
-
- g_assert (data);
-- g_assert (model);
-
-- gtk_tree_model_foreach (model, count_pending, &count);
-+ gtk_tree_model_foreach (data->model, count_pending, &count);
- title = g_strdup_printf (data->title, count);
- gtk_window_set_title (data->window, title);
- g_free (title);
-+
-+ return FALSE;
- }
-
- /*
-@@ -89,7 +92,7 @@
- static void
- on_row_inserted (GtkTreeModel *model, GtkTreePath *path, GtkTreeIter *iter, WindowData *data)
- {
-- update_title (data, model);
-+ g_idle_add (update_title, data);
- }
-
- /*
-@@ -99,7 +102,7 @@
- static void
- on_row_deleted (GtkTreeModel *model, GtkTreePath *path, WindowData *data)
- {
-- update_title (data, model);
-+ g_idle_add (update_title, data);
- }
-
- /*
-@@ -135,6 +138,7 @@
-
- data = g_slice_new (WindowData);
- data->window = window;
-+ data->model = model;
- data->title = g_strdup (title);
-
- g_object_weak_ref (G_OBJECT (model), on_weak_notify, data);
-@@ -145,5 +149,5 @@
- "signal::row-deleted", G_CALLBACK (on_row_deleted), data,
- NULL);
-
-- update_title (data, model);
-+ update_title (data);
- }