r3543 - in trunk/src/target/OM-2007.2/applications/openmoko-today2: . src
chris at sita.openmoko.org
chris at sita.openmoko.org
Fri Nov 30 18:17:54 CET 2007
Author: chris
Date: 2007-11-30 18:17:53 +0100 (Fri, 30 Nov 2007)
New Revision: 3543
Modified:
trunk/src/target/OM-2007.2/applications/openmoko-today2/ChangeLog
trunk/src/target/OM-2007.2/applications/openmoko-today2/src/today-task-manager.c
trunk/src/target/OM-2007.2/applications/openmoko-today2/src/today.h
Log:
* src/today-task-manager.c: (today_task_manager_populate_tasks),
(set_focus_cb), (page_shown), (page_hidden),
(today_task_manager_notify_visible_cb),
(today_task_manager_visibility_notify_event_cb),
(today_task_manager_unmap_cb), (today_task_manager_page_create):
* src/today.h:
Grey out kill/jump-to/killall buttons where appropriate, fix spurious
warnings on app exit
Modified: trunk/src/target/OM-2007.2/applications/openmoko-today2/ChangeLog
===================================================================
--- trunk/src/target/OM-2007.2/applications/openmoko-today2/ChangeLog 2007-11-30 16:41:52 UTC (rev 3542)
+++ trunk/src/target/OM-2007.2/applications/openmoko-today2/ChangeLog 2007-11-30 17:17:53 UTC (rev 3543)
@@ -1,5 +1,16 @@
2007-11-30 Chris Lord <chris at openedhand.com>
+ * src/today-task-manager.c: (today_task_manager_populate_tasks),
+ (set_focus_cb), (page_shown), (page_hidden),
+ (today_task_manager_notify_visible_cb),
+ (today_task_manager_visibility_notify_event_cb),
+ (today_task_manager_unmap_cb), (today_task_manager_page_create):
+ * src/today.h:
+ Grey out kill/jump-to/killall buttons where appropriate, fix spurious
+ warnings on app exit
+
+2007-11-30 Chris Lord <chris at openedhand.com>
+
* src/today-main.c: (workarea_changed), (main):
Migrate to x_monitor_workarea from x_get_workarea
Modified: trunk/src/target/OM-2007.2/applications/openmoko-today2/src/today-task-manager.c
===================================================================
--- trunk/src/target/OM-2007.2/applications/openmoko-today2/src/today-task-manager.c 2007-11-30 16:41:52 UTC (rev 3542)
+++ trunk/src/target/OM-2007.2/applications/openmoko-today2/src/today-task-manager.c 2007-11-30 17:17:53 UTC (rev 3543)
@@ -343,6 +343,9 @@
/* Empty list */
today_task_manager_free_tasks (data);
+ /* Return if our main window has gone (e.g. on quit) */
+ if ((!data->window) || (!data->window->window)) return;
+
/* Retrieve list of app windows from root window */
display = gtk_widget_get_display (data->tasks_table);
screen = gtk_widget_get_screen (data->tasks_table);
@@ -380,7 +383,7 @@
GdkPixbuf *icon;
GdkWindow *window;
- if (GDK_WINDOW_XID (current) == windows[i]) continue;
+ if (current && GDK_WINDOW_XID (current) == windows[i]) continue;
if (GDK_WINDOW_XID (data->window->window) == windows[i])
continue;
@@ -427,35 +430,63 @@
task_tile);
gtk_widget_show (task_tile);
}
- g_object_unref (current);
+ if (current) g_object_unref (current);
- /* If no windows were found, insert an insensitive "No tasks" item */
- if (nitems == 0) {
- GtkWidget *task_tile;
-
- task_tile = taku_icon_tile_new ();
+ /* If no windows were found, insert an insensitive "No tasks" item */
+ if (nitems == 0) {
+ GtkWidget *task_tile;
+
+ task_tile = taku_icon_tile_new ();
taku_icon_tile_set_primary (TAKU_ICON_TILE (task_tile),
_("No active tasks"));
- gtk_widget_set_sensitive (task_tile, FALSE);
+ gtk_widget_set_sensitive (task_tile, FALSE);
gtk_container_add (GTK_CONTAINER (data->tasks_table),
task_tile);
gtk_widget_show (task_tile);
+
+ gtk_widget_set_sensitive (
+ GTK_WIDGET (data->killall_button), FALSE);
+ } else {
+ gtk_widget_set_sensitive (
+ GTK_WIDGET (data->killall_button), TRUE);
}
- /* Cleanup */
- XFree (windows);
+ /* Cleanup */
+ XFree (windows);
}
static void
+set_focus_cb (GtkWindow *window, GtkWidget *widget, TodayData *data)
+{
+ gtk_widget_set_sensitive (data->kill_button, TAKU_IS_TILE (widget));
+ gtk_widget_set_sensitive (data->switch_button, TAKU_IS_TILE (widget));
+}
+
+static void
+page_shown (TodayData *data)
+{
+ today_task_manager_populate_tasks (data);
+ g_signal_connect (data->window, "set-focus",
+ G_CALLBACK (set_focus_cb), data);
+}
+
+static void
+page_hidden (TodayData *data)
+{
+ today_task_manager_free_tasks (data);
+ g_signal_handlers_disconnect_by_func (data->window, set_focus_cb, data);
+}
+
+static void
today_task_manager_notify_visible_cb (GObject *gobject,
GParamSpec *arg1,
TodayData *data)
{
if ((!hidden) && (!GTK_WIDGET_VISIBLE (gobject))) {
hidden = TRUE;
- today_task_manager_free_tasks (data);
+ page_hidden (data);
}
}
@@ -467,11 +498,11 @@
if (((event->state == GDK_VISIBILITY_PARTIAL) ||
(event->state == GDK_VISIBILITY_UNOBSCURED)) && (hidden)) {
hidden = FALSE;
- today_task_manager_populate_tasks (data);
+ page_shown (data);
} else if ((event->state == GDK_VISIBILITY_FULLY_OBSCURED) &&
(!hidden)) {
hidden = TRUE;
- today_task_manager_free_tasks (data);
+ page_hidden (data);
}
return FALSE;
@@ -482,7 +513,7 @@
{
if (!hidden) {
hidden = TRUE;
- today_task_manager_free_tasks (data);
+ page_hidden (data);
}
}
@@ -715,7 +746,6 @@
today_task_manager_page_create (TodayData *data)
{
GtkWidget *vbox, *toolbar, *viewport, *scroll;
- GtkToolItem *button;
vbox = gtk_vbox_new (FALSE, 0);
@@ -724,28 +754,29 @@
gtk_box_pack_start (GTK_BOX (vbox), toolbar, FALSE, TRUE, 0);
/* Kill all apps button */
- button = gtk_tool_button_new_from_stock (MOKO_STOCK_FOLDER_DELETE);
- gtk_tool_item_set_expand (button, TRUE);
- gtk_toolbar_insert (GTK_TOOLBAR (toolbar), button, 0);
+ data->kill_button = gtk_tool_button_new_from_stock (
+ MOKO_STOCK_FOLDER_DELETE);
+ gtk_tool_item_set_expand (data->kill_button, TRUE);
+ gtk_toolbar_insert (GTK_TOOLBAR (toolbar), data->kill_button, 0);
gtk_toolbar_insert (GTK_TOOLBAR (toolbar),
gtk_separator_tool_item_new (), 0);
- g_signal_connect (G_OBJECT (button), "clicked",
+ g_signal_connect (data->kill_button, "clicked",
G_CALLBACK (today_task_manager_killall_clicked_cb), data);
/* Switch to app button */
- button = gtk_tool_button_new_from_stock (GTK_STOCK_JUMP_TO);
- gtk_tool_item_set_expand (button, TRUE);
- gtk_toolbar_insert (GTK_TOOLBAR (toolbar), button, 0);
+ data->switch_button = gtk_tool_button_new_from_stock (GTK_STOCK_JUMP_TO);
+ gtk_tool_item_set_expand (data->switch_button, TRUE);
+ gtk_toolbar_insert (GTK_TOOLBAR (toolbar), data->switch_button, 0);
gtk_toolbar_insert (GTK_TOOLBAR (toolbar),
gtk_separator_tool_item_new (), 0);
- g_signal_connect (G_OBJECT (button), "clicked",
+ g_signal_connect (data->switch_button, "clicked",
G_CALLBACK (today_task_manager_raise_clicked_cb), data);
/* Kill app button */
- button = gtk_tool_button_new_from_stock (GTK_STOCK_DELETE);
- gtk_tool_item_set_expand (button, TRUE);
- gtk_toolbar_insert (GTK_TOOLBAR (toolbar), button, 0);
- g_signal_connect (G_OBJECT (button), "clicked",
+ data->killall_button = gtk_tool_button_new_from_stock (GTK_STOCK_DELETE);
+ gtk_tool_item_set_expand (data->killall_button, TRUE);
+ gtk_toolbar_insert (GTK_TOOLBAR (toolbar), data->killall_button, 0);
+ g_signal_connect (data->killall_button, "clicked",
G_CALLBACK (today_task_manager_kill_clicked_cb), data);
/* Viewport / tasks table */
Modified: trunk/src/target/OM-2007.2/applications/openmoko-today2/src/today.h
===================================================================
--- trunk/src/target/OM-2007.2/applications/openmoko-today2/src/today.h 2007-11-30 16:41:52 UTC (rev 3542)
+++ trunk/src/target/OM-2007.2/applications/openmoko-today2/src/today.h 2007-11-30 17:17:53 UTC (rev 3543)
@@ -60,6 +60,9 @@
/* App manager */
GdkWindow *root_window;
GtkWidget *tasks_table;
+ GtkToolItem *kill_button;
+ GtkToolItem *killall_button;
+ GtkToolItem *switch_button;
} TodayData;
#endif
More information about the commitlog
mailing list