r3285 - in trunk/src/target/OM-2007.2/applications/openmoko-today2: . src

chris at sita.openmoko.org chris at sita.openmoko.org
Fri Oct 26 15:34:15 CEST 2007


Author: chris
Date: 2007-10-26 15:34:10 +0200 (Fri, 26 Oct 2007)
New Revision: 3285

Modified:
   trunk/src/target/OM-2007.2/applications/openmoko-today2/ChangeLog
   trunk/src/target/OM-2007.2/applications/openmoko-today2/src/today-launcher.c
   trunk/src/target/OM-2007.2/applications/openmoko-today2/src/today-main.c
   trunk/src/target/OM-2007.2/applications/openmoko-today2/src/today.h
Log:
        * src/today-launcher.c: (redraw_widget_now),
        (viewport_set_scroll_adjustments_cb), (table_expose_cb),
        (today_launcher_page_create):
        * src/today-main.c: (main):
        * src/today.h:
        Add some disabled code to draw wallpaper in the background of the
        launcher


Modified: trunk/src/target/OM-2007.2/applications/openmoko-today2/ChangeLog
===================================================================
--- trunk/src/target/OM-2007.2/applications/openmoko-today2/ChangeLog	2007-10-26 11:46:42 UTC (rev 3284)
+++ trunk/src/target/OM-2007.2/applications/openmoko-today2/ChangeLog	2007-10-26 13:34:10 UTC (rev 3285)
@@ -1,3 +1,13 @@
+2007-10-26  Chris Lord  <chris at openedhand.com>
+
+	* src/today-launcher.c: (redraw_widget_now),
+	(viewport_set_scroll_adjustments_cb), (table_expose_cb),
+	(today_launcher_page_create):
+	* src/today-main.c: (main):
+	* src/today.h:
+        Add some disabled code to draw wallpaper in the background of the
+        launcher
+
 2007-10-26  Thomas Wood  <thomas at openedhand.com>
 
 	* src/today-main.c: (main): Do not hard code theme settings

Modified: trunk/src/target/OM-2007.2/applications/openmoko-today2/src/today-launcher.c
===================================================================
--- trunk/src/target/OM-2007.2/applications/openmoko-today2/src/today-launcher.c	2007-10-26 11:46:42 UTC (rev 3284)
+++ trunk/src/target/OM-2007.2/applications/openmoko-today2/src/today-launcher.c	2007-10-26 13:34:10 UTC (rev 3285)
@@ -364,10 +364,77 @@
 	}
 }
 
+/* If there's zero padding around tiles and redraw is forced for every scroll,
+ * the following function also works to paint the wallpaper under the tiles.
+ */
+/*static gboolean
+tile_expose_cb (GtkWidget *widget, GdkEventExpose *event, TodayData *data)
+{
+	GtkAdjustment *vadjustment;
+	
+	if (!data->wallpaper) return FALSE;
+
+	vadjustment = gtk_viewport_get_vadjustment (
+		(GtkViewport *)data->launcher_viewport);
+	gdk_draw_drawable (widget->window, widget->style->black_gc,
+		data->wallpaper, widget->allocation.x,
+		widget->allocation.y - vadjustment->value,
+		widget->allocation.x, widget->allocation.y,
+		widget->allocation.width, widget->allocation.height);
+	
+	return FALSE;
+}*/
+
+static void
+redraw_widget_now (GtkWidget *widget)
+{
+	GdkRectangle rect;
+	rect.x = 0;
+	rect.y = 0;
+	rect.width = widget->allocation.width;
+	rect.height = widget->allocation.height;
+	gdk_window_invalidate_rect (widget->window, &rect, TRUE);
+	gdk_window_process_updates (widget->window, TRUE);
+}
+
+static void
+viewport_set_scroll_adjustments_cb (GtkViewport *viewport,
+				    GtkAdjustment *hadjust,
+				    GtkAdjustment *vadjust,
+				    TodayData *data)
+{
+	static gpointer instance = NULL;
+	static gulong id = 0;
+	
+	if (instance) g_signal_handler_disconnect (instance, id);
+	if (vadjust) {
+		instance = vadjust;
+		id = g_signal_connect_swapped (vadjust, "value-changed",
+			G_CALLBACK (redraw_widget_now), viewport);
+	} else {
+		instance = NULL;
+	}
+}
+
+static gboolean
+table_expose_cb (GtkWidget *widget, GdkEventExpose *event, TodayData *data)
+{
+	GtkAdjustment *vadjustment;
+	
+	if (!data->wallpaper) return FALSE;
+
+	vadjustment = gtk_viewport_get_vadjustment (
+		(GtkViewport *)data->launcher_viewport);
+	gdk_draw_drawable (widget->window, widget->style->black_gc,
+		data->wallpaper, 0, 0, 0, vadjustment->value, -1, -1);
+	
+	return FALSE;
+}
+
 GtkWidget *
 today_launcher_page_create (TodayData *data)
 {
-	GtkWidget *main_vbox, *hbox, *toggle, *viewport, *scroll;
+	GtkWidget *main_vbox, *hbox, *toggle, *scroll;
 	const char * const *dirs;
 	gchar *vfolder_dir;
 
@@ -399,12 +466,20 @@
 		FALSE, TRUE, 0);
 	gtk_widget_show (data->search_bar);
 	
-	viewport = gtk_viewport_new (NULL, NULL);
-	gtk_viewport_set_shadow_type (GTK_VIEWPORT (viewport),
+	data->launcher_viewport = gtk_viewport_new (NULL, NULL);
+	gtk_viewport_set_shadow_type (GTK_VIEWPORT (data->launcher_viewport),
 				      GTK_SHADOW_NONE);
 	gtk_icon_size_register ("taku-icon", 64, 64);
 	data->launcher_table = taku_table_new ();
 
+#ifdef SLOW_BLING
+	/* Draw the wallpaper in the background of the table */
+	g_signal_connect (data->launcher_viewport, "set-scroll-adjustments",
+		G_CALLBACK (viewport_set_scroll_adjustments_cb), data);
+	g_signal_connect (data->launcher_table, "expose-event",
+		G_CALLBACK (table_expose_cb), data);
+#endif
+
 	/* Create search category */
 	data->search_cat = g_new0 (TakuLauncherCategory, 1);
 	data->search_cat->name = g_strdup ("Search");
@@ -458,10 +533,11 @@
 	/* Make sure initial search shows all items */
 	today_launcher_update_search (data, "");
 
-	gtk_container_add (GTK_CONTAINER (viewport), data->launcher_table);
+	gtk_container_add (GTK_CONTAINER (data->launcher_viewport),
+		data->launcher_table);
 	
 	scroll = moko_finger_scroll_new ();
-	gtk_container_add (GTK_CONTAINER (scroll), viewport);
+	gtk_container_add (GTK_CONTAINER (scroll), data->launcher_viewport);
 	
 	gtk_box_pack_start (GTK_BOX (main_vbox), scroll, TRUE, TRUE, 0);
 	gtk_widget_show_all (scroll);

Modified: trunk/src/target/OM-2007.2/applications/openmoko-today2/src/today-main.c
===================================================================
--- trunk/src/target/OM-2007.2/applications/openmoko-today2/src/today-main.c	2007-10-26 11:46:42 UTC (rev 3284)
+++ trunk/src/target/OM-2007.2/applications/openmoko-today2/src/today-main.c	2007-10-26 13:34:10 UTC (rev 3285)
@@ -392,6 +392,17 @@
 	g_signal_connect (G_OBJECT (data.window), "delete-event",
 		G_CALLBACK (gtk_main_quit), NULL);
 	
+#if 0
+	/* This block here to ease testing, please don't remove! */
+	/* Force theme settings */
+	g_object_set (gtk_settings_get_default (),
+		"gtk-theme-name", "openmoko-standard-2",
+		"gtk-icon-theme-name", "openmoko-standard",
+		"gtk-xft-dpi", 285 * 1024,
+		"gtk-font-name", "Sans 6",
+		NULL);
+#endif
+
 #ifndef STANDALONE
 	x = 0; y = 0; w = 480; h = 640;
 	gtk_window_set_type_hint (GTK_WINDOW (data.window),

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-10-26 11:46:42 UTC (rev 3284)
+++ trunk/src/target/OM-2007.2/applications/openmoko-today2/src/today.h	2007-10-26 13:34:10 UTC (rev 3285)
@@ -45,6 +45,7 @@
 	/* App launcher */
 	GList *categories;
 	GtkWidget *launcher_table;
+	GtkWidget *launcher_viewport;
 	GtkWidget *search_bar;
 	GtkWidget *filter_combo;
 	TakuLauncherCategory *search_cat;





More information about the commitlog mailing list