diff -urN --exclude CVS google-gadgets.orig/Makefile google-gadgets/Makefile
--- google-gadgets.orig/Makefile	2009-01-08 01:47:47.000000000 +1000
+++ google-gadgets/Makefile	2009-01-06 23:30:02.000000000 +1000
@@ -6,7 +6,7 @@
 #
 
 PORTNAME=	google-gadgets
-PORTVERSION=	0.10.3
+PORTVERSION=	0.10.4
 CATEGORIES=	deskutils
 MASTER_SITES=	http://google-gadgets-for-linux.googlecode.com/files/
 DISTNAME=	${PORTNAME}-for-linux-${PORTVERSION}
diff -urN --exclude CVS google-gadgets.orig/distinfo google-gadgets/distinfo
--- google-gadgets.orig/distinfo	2009-01-08 01:47:47.000000000 +1000
+++ google-gadgets/distinfo	2009-01-06 23:30:10.000000000 +1000
@@ -1,3 +1,3 @@
-MD5 (google-gadgets-for-linux-0.10.3.tar.bz2) = 16d2cc4fe05e4416d3b720090237520b
-SHA256 (google-gadgets-for-linux-0.10.3.tar.bz2) = fe63758aacb3842829c5a6d7698152b34becb44fe3e2d84d9706bf4ea9956c1e
-SIZE (google-gadgets-for-linux-0.10.3.tar.bz2) = 2310377
+MD5 (google-gadgets-for-linux-0.10.4.tar.bz2) = 0ef0a62e0a575388084a77759b646718
+SHA256 (google-gadgets-for-linux-0.10.4.tar.bz2) = 03ff4140070ae7518a40fef94993c1f32b02d8f65f88f69363447cff501977df
+SIZE (google-gadgets-for-linux-0.10.4.tar.bz2) = 2384725
diff -urN --exclude CVS google-gadgets.orig/files/patch-extensions_gtk__system__framework_gtk__system__framework.cc google-gadgets/files/patch-extensions_gtk__system__framework_gtk__system__framework.cc
--- google-gadgets.orig/files/patch-extensions_gtk__system__framework_gtk__system__framework.cc	2009-01-08 01:47:48.000000000 +1000
+++ google-gadgets/files/patch-extensions_gtk__system__framework_gtk__system__framework.cc	2009-01-07 01:39:30.000000000 +1000
@@ -3,12 +3,12 @@
 
 --- extensions/gtk_system_framework/gtk_system_framework.cc.orig
 +++ extensions/gtk_system_framework/gtk_system_framework.cc
-@@ -99,7 +99,7 @@
-         GTK_FILE_CHOOSER_ACTION_OPEN,
+@@ -137,7 +137,7 @@
+         whole_title.c_str(), NULL, action,
          GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
          GTK_STOCK_OK, GTK_RESPONSE_OK,
 -        NULL);
 +        (gint*)0);
+     gtk_window_set_position(GTK_WINDOW(dialog), GTK_WIN_POS_CENTER);
  
-     gtk_file_chooser_set_select_multiple(GTK_FILE_CHOOSER(dialog), multiple);
-     if (filter && *filter) {
+     if (action == GTK_FILE_CHOOSER_ACTION_SAVE) {
diff -urN --exclude CVS google-gadgets.orig/files/patch-extensions_gtkmoz__browser__element_Makefile.am google-gadgets/files/patch-extensions_gtkmoz__browser__element_Makefile.am
--- google-gadgets.orig/files/patch-extensions_gtkmoz__browser__element_Makefile.am	2009-01-08 01:47:48.000000000 +1000
+++ google-gadgets/files/patch-extensions_gtkmoz__browser__element_Makefile.am	2009-01-06 23:33:07.000000000 +1000
@@ -4,12 +4,12 @@
 --- extensions/gtkmoz_browser_element/Makefile.am.orig
 +++ extensions/gtkmoz_browser_element/Makefile.am
 @@ -63,8 +63,7 @@
- gtkmoz_browser_child_LDADD	= @GTK2_LIBS@ \
- 				  @GTKMOZEMBED_LIBS@ \
- 				  $(top_builddir)/ggadget/js/libggadget-js@GGL_EPOCH@.la \
+ 
+ gtkmoz_browser_child_LDADD	= $(GTK2_LIBS) \
+ 				  $(GTKMOZEMBED_LIBS) \
 -				  $(top_builddir)/ggadget/libggadget@GGL_EPOCH@.la \
 -				  -ldl
 +				  $(top_builddir)/ggadget/libggadget@GGL_EPOCH@.la
  
- gtkmoz_browser_child_LDFLAGS	= @GTKMOZEMBED_LDFLAGS@
+ gtkmoz_browser_child_LDFLAGS	= $(GTKMOZEMBED_LDFLAGS)
  
diff -urN --exclude CVS google-gadgets.orig/files/patch-extensions_gtkmoz__browser__element_browser__element.cc google-gadgets/files/patch-extensions_gtkmoz__browser__element_browser__element.cc
--- google-gadgets.orig/files/patch-extensions_gtkmoz__browser__element_browser__element.cc	2009-01-08 01:47:48.000000000 +1000
+++ google-gadgets/files/patch-extensions_gtkmoz__browser__element_browser__element.cc	2009-01-07 23:51:30.000000000 +1000
@@ -3,12 +3,50 @@
 
 --- extensions/gtkmoz_browser_element/browser_element.cc.orig
 +++ extensions/gtkmoz_browser_element/browser_element.cc
-@@ -380,7 +380,7 @@
-         for (size_t i = 0; kBrowserChildNames[i]; ++i) {
-           execl(kBrowserChildNames[i], kBrowserChildNames[i],
-                 down_fd_str.c_str(), up_fd_str.c_str(),
--                ret_fd_str.c_str(), NULL);
-+                ret_fd_str.c_str(), (char*)0);
-         }
-         LOG("Failed to execute browser child");
-         _exit(-1);
+@@ -157,7 +157,7 @@
+       std::string up_fd_str = StringPrintf("%d", up_fds[1]);
+       for (size_t i = 0; kBrowserChildNames[i]; ++i) {
+         execl(kBrowserChildNames[i], kBrowserChildNames[i],
+-              down_fd_str.c_str(), up_fd_str.c_str(), NULL);
++              down_fd_str.c_str(), up_fd_str.c_str(), (char*)0);
+       }
+       LOG("Failed to execute browser child");
+       _exit(-1);
+@@ -416,6 +416,8 @@
+           object_id_str_(StringPrintf("%zu", object_id)),
+           call_self_(this),
+           to_string_(NewSlot(this, &BrowserObjectWrapper::ToString)) {
++      if (parent_)
++        parent_->Ref();
+     }
+ 
+     virtual ~BrowserObjectWrapper() {
+@@ -426,6 +428,8 @@
+         owner_->controller_->SendCommand(kUnrefCommand, owner_->browser_id_,
+                                          object_id_str_.c_str(), NULL);
+       }
++      if (parent_)
++        parent_->Unref();
+     }
+ 
+     void OnOwnerDestroy() {
+@@ -523,8 +527,8 @@
+         buffer += '\n';
+         buffer += wrapper_->object_id_str_;
+         buffer += '\n';
+-        if (wrapper_->parent_.Get())
+-          buffer += wrapper_->parent_.Get()->object_id_str_;
++        if (wrapper_->parent_)
++          buffer += wrapper_->parent_->object_id_str_;
+         for (int i = 0; i < argc; i++) {
+           buffer += '\n';
+           buffer += wrapper_->owner_->EncodeValue(argv[i]);
+@@ -546,7 +550,7 @@
+     };
+ 
+     BrowserElementImpl *owner_;
+-    ScriptableHolder<BrowserObjectWrapper> parent_;
++    BrowserObjectWrapper *parent_;
+     size_t object_id_;
+     std::string object_id_str_;
+     CallSelfSlot call_self_;
diff -urN --exclude CVS google-gadgets.orig/files/patch-ggadget_gtk_utilities.cc google-gadgets/files/patch-ggadget_gtk_utilities.cc
--- google-gadgets.orig/files/patch-ggadget_gtk_utilities.cc	1970-01-01 10:00:00.000000000 +1000
+++ google-gadgets/files/patch-ggadget_gtk_utilities.cc	2009-01-10 11:27:30.000000000 +1000
@@ -0,0 +1,11 @@
+--- ggadget/gtk/utilities.cc.orig	2008-12-03 18:01:36.000000000 +1000
++++ ggadget/gtk/utilities.cc	2009-01-07 00:52:52.000000000 +1000
+@@ -83,7 +83,7 @@
+                                     "%s", message);
+     gtk_dialog_add_buttons(GTK_DIALOG(dialog), GTK_STOCK_NO, GTK_RESPONSE_NO,
+                            GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
+-                           GTK_STOCK_YES, GTK_RESPONSE_YES, NULL);
++                           GTK_STOCK_YES, GTK_RESPONSE_YES, (const gchar*)0);
+     gtk_dialog_set_default_response(GTK_DIALOG(dialog), GTK_RESPONSE_YES);
+   } else {
+     dialog = gtk_message_dialog_new(NULL, GTK_DIALOG_MODAL,
diff -urN --exclude CVS google-gadgets.orig/pkg-plist google-gadgets/pkg-plist
--- google-gadgets.orig/pkg-plist	2009-01-08 01:47:47.000000000 +1000
+++ google-gadgets/pkg-plist	2009-01-10 11:22:05.000000000 +1000
@@ -119,6 +119,7 @@
 include/google-gadgets/ggadget/texture.h
 include/google-gadgets/ggadget/unicode_utils.h
 include/google-gadgets/ggadget/usage_collector_interface.h
+include/google-gadgets/ggadget/uuid.h
 include/google-gadgets/ggadget/variant.h
 include/google-gadgets/ggadget/video_element_base.h
 include/google-gadgets/ggadget/view.h
@@ -229,11 +230,12 @@
 libdata/pkgconfig/libggadget-npapi-1.0.pc
 %%QT%%libdata/pkgconfig/libggadget-qt-1.0.pc
 libdata/pkgconfig/libggadget-xdg-1.0.pc
+%%GTK%%share/applications/ggl-designer.desktop
 %%GTK%%share/applications/ggl-gtk.desktop
 %%QT%%share/applications/ggl-qt.desktop
-%%DATADIR%%/analog_clock.gg
+%%DATADIR%%/analog-clock.gg
 %%DATADIR%%/designer.gg
-%%DATADIR%%/digital_alarm_clock.gg
+%%DATADIR%%/digital-alarm-clock.gg
 %%DATADIR%%/google-gadget-browser.gg
 %%DATADIR%%/igoogle.gg
 %%DATADIR%%/photos.gg
