Mugshot in maemo - Kickoff



Hi all,

I had some random spare time last couple weeks and I thought it would
be nice to have a Mugshot client running on maemo. Basically, I got it
woking on Chinook (latest version of maemo which is the basis for
N810). Here are some general issues and comments.

1. Icon issues
Yes, maemo uses some really weird icon sizes. So, here's what's needed:
- mugshot app logo in 64x64 pixels
- mugshot_connection and mugshot_connection_disabled in 40x40 pixels.
Currently, only have it in 22x22 pixels.

2. Screensaver issues
Screensaver X extension is not available in maemo. I saw that this
extension is being used in hippo-idle. At first sight, I don't think
it makes sense to have it on maemo anyway. I disabled all code related
to this extension when maemo mode is on.

3. Mozilla engine issues
I added the necessary dependency checks for maemo mozilla-based
browser. There's a build problem due to an API incompatible code
chunk. I get this error:

• NS_IMETHODIMP hippoControl::SetWindow() incompatible API (build error)
./../common/firefox/src/hippoControl.cpp: In member function `virtual
nsresult hippoControl::SetWindow(nsIDOMWindow*)':
./../common/firefox/src/hippoControl.cpp:155: error: 'class
nsDerivedSafe<nsIScriptGlobalObject>' has no member named
'GetDocShell'

I'm far from being a Mozilla expert, so, do you have any idea on how
to work around this? For now, I disabled this code chunk when maemo
mode is on. My patch adds a new type of browser (HIPPO_BROWSER_MAEMO)
which is used when running on maemo mode.

4. Loudmouth version
The correct loudmouth dependency should be 1.2.2, not 1.0 as mugshot
doesn't build because LM_DISCONNECT_REASON_RESOURCE_CONFLICT and
LM_DISCONNECT_REASON_INVALID_XML are not available in loudmounth <
1.2.2. This is fixed in the patch as well.

5. Build configure option
I added a --with-maemo configure option to activate maemo bits in
mugshot client.

6. Web pages
There some design issues on viewing the online desktop webpages on a
small screen. See screenshots (initial-page.png and login-page.png).

7. gnome-desktop
I still need to replace gnome-desktop (desktop file handling) with
equivalent code based on maemo stack. For now, I've just disabled the
code.

7. User interaction issues
For now, this is just a simple port of the current client but there
should be some major adaptations on the UI to make it work nicely on a
small screen and finger usage.

8. Status icon
There are still some issues on Hildon Desktop side (the maemo main UI
component) on handling GtkStatusIcon in statusbar (see screenshots).
Those are already fixed but not yet commited (will be in the next
weeks).

I'm still working on the proper (debian) packaging for mugshot client
and its dependencies to make it easily instalable on Nokia devices.
This will come soon.

Patch is attached. You can find some screenshots of mugshot running on
maemo here:

  http://www.gnome.org/~lucasr/misc/mugshot/

Cheers!

--lucasr
Index: linux/src/hippo-platform-impl.c
===================================================================
--- linux/src/hippo-platform-impl.c	(revisão 6847)
+++ linux/src/hippo-platform-impl.c	(cópia de trabalho)
@@ -304,7 +304,6 @@
         g_free(web_host);
         goto out;
     }        
-
     /* Extract value from first cookie and free the rest of them 
      * (we only expect to have one, though)
      */
@@ -448,10 +447,15 @@
     case HIPPO_BROWSER_GALEON:
         command = g_strdup_printf("galeon %s", quoted);
         break;
+#ifdef WITH_MAEMO
+    case HIPPO_BROWSER_MAEMO:
+        command = g_strdup_printf("browser --url=%s", quoted);
+        break;
+#endif
     case HIPPO_BROWSER_FIREFOX:
     case HIPPO_BROWSER_UNKNOWN: /* FIXME get user's default from gnome */
     default:
-        command = g_strdup_printf("firefox %s", quoted);    
+	command = g_strdup_printf("firefox %s", quoted);
         break;
     }
 
Index: linux/src/hippo-distribution.c
===================================================================
--- linux/src/hippo-distribution.c	(revisão 6847)
+++ linux/src/hippo-distribution.c	(cópia de trabalho)
@@ -1,10 +1,13 @@
 /* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */
 
+#include <config.h>
 #include <errno.h>
 #include <stdlib.h>
 #include <string.h>
 #include <sys/wait.h>
+#ifndef WITH_MAEMO
 #include <libgnome/gnome-desktop-item.h>
+#endif
 #include <libgnomevfs/gnome-vfs.h>
 #include <gtk/gtk.h>
 #include <gdk/gdkx.h>
@@ -1069,6 +1072,7 @@
                                       HippoAsyncCallback  callback,
                                       void               *callback_data)
 {
+#ifndef WITH_MAEMO
     GnomeDesktopItem *item = NULL;
     char *desktop_file = NULL;
     GError *error = NULL;
@@ -1110,6 +1114,7 @@
         gnome_desktop_item_unref(item);
     
     g_free(desktop_file);
+#endif
 }
 
 
Index: linux/src/hippo-cookies-linux.c
===================================================================
--- linux/src/hippo-cookies-linux.c	(revisão 6847)
+++ linux/src/hippo-cookies-linux.c	(cópia de trabalho)
@@ -1,4 +1,5 @@
 /* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */
+#include <config.h>
 #include "hippo-cookies-linux.h"
 #include <string.h>
 
@@ -29,6 +30,14 @@
     hippo_cookie_locator_add_file(locator, path, HIPPO_BROWSER_GALEON);
     g_free(path);
 
+#ifdef WITH_MAEMO
+    path = g_build_filename(homedir,
+                            ".mozilla/microb/cookies.txt",
+                            NULL);
+    hippo_cookie_locator_add_file(locator, path, HIPPO_BROWSER_MAEMO);
+    g_free(path);
+#endif
+    
     path = g_build_filename(homedir, ".mozilla/firefox", NULL);
     hippo_cookie_locator_add_directory(locator, path, HIPPO_BROWSER_FIREFOX);
     g_free(path);
Index: linux/src/hippo-window-gtk.c
===================================================================
--- linux/src/hippo-window-gtk.c	(revisão 6847)
+++ linux/src/hippo-window-gtk.c	(cópia de trabalho)
@@ -69,8 +69,12 @@
 
 static const RoleProperties role_properties[] = {
     /*                   type_hint,                   skip_taskbar_pager, accept_focus, no_background */
-    /* APPLICATION */  { GDK_WINDOW_TYPE_HINT_NORMAL,  FALSE,              TRUE,         FALSE  },
+    /* APPLICATION */  { GDK_WINDOW_TYPE_HINT_NORMAL,  FALSE,              TRUE,         FALSE },
+#ifdef WITH_MAEMO
+    /* NOTIFICATION */ { GDK_WINDOW_TYPE_HINT_DIALOG,  TRUE,               FALSE,        TRUE  },
+#else
     /* NOTIFICATION */ { GDK_WINDOW_TYPE_HINT_DOCK,    TRUE,               FALSE,        TRUE  },
+#endif
     /* INPUT_POPUP */  { GDK_WINDOW_TYPE_HINT_TOOLBAR, FALSE,              TRUE,         TRUE  },
 };
 
Index: linux/src/hippo-idle.c
===================================================================
--- linux/src/hippo-idle.c	(revisão 6847)
+++ linux/src/hippo-idle.c	(cópia de trabalho)
@@ -4,7 +4,9 @@
 
 #include <X11/Xlib.h>
 #include <X11/Xatom.h>
+#ifndef WITH_MAEMO
 #include <X11/extensions/scrnsaver.h>
+#endif
 #include <gdk/gdkx.h>
 
 #include "hippo-idle.h"
@@ -16,7 +18,9 @@
 };
 
 struct HippoIdleMonitor {
+#ifndef WITH_MAEMO
     XScreenSaverInfo *info;
+#endif
     GdkDisplay *display;
     HippoDataCache *cache;
     GTime activity_time;
@@ -226,20 +230,24 @@
     idle_time = G_MAXINT;
     n_screens = gdk_display_get_n_screens(monitor->display);
     for (i = 0; i < n_screens; ++i) {
-        int result;
+        int result = 0;
         GdkScreen *screen;
 
-        screen = gdk_display_get_screen(monitor->display, i);        
+        screen = gdk_display_get_screen(monitor->display, i);       
+#ifndef WITH_MAEMO
         result = XScreenSaverQueryInfo(GDK_DISPLAY_XDISPLAY(monitor->display),
                                 GDK_SCREEN_XSCREEN(screen)->root,
                                 monitor->info);
+#endif
         if (result == 0) {
             g_warning("Failed to get idle time from screensaver extension");
             break;
         }
         
         /* monitor->info->idle is time in milliseconds since last user interaction event */
+#ifndef WITH_MAEMO
         idle_time = MIN(monitor->info->idle, idle_time);
+#endif
     }
     
     was_idle = monitor->currently_idle;
@@ -290,16 +298,20 @@
     HippoIdleMonitor *monitor;
         
     xdisplay = GDK_DISPLAY_XDISPLAY(display);
-    
+#ifndef WITH_MAEMO   
     if (!XScreenSaverQueryExtension(xdisplay, &event_base, &error_base)) {
         g_warning("Screensaver extension not found on X display, can't detect user idleness");
         return NULL;
     }
+#endif
+    return NULL;
     
     monitor = g_new0(HippoIdleMonitor, 1);
     monitor->display = g_object_ref(display);
     monitor->cache = g_object_ref(cache);
+#ifndef WITH_MAEMO
     monitor->info = XScreenSaverAllocInfo();
+#endif
     monitor->activity_time = get_time();
     monitor->last_idle = 0;    
     monitor->currently_idle = FALSE;
@@ -319,9 +331,9 @@
 {
     if (monitor == NULL)
         return; /* means no screensaver extension */
-
+#ifndef WITH_MAEMO
     XFree(monitor->info);
-
+#endif
     g_source_remove(monitor->poll_id);
     g_object_unref(monitor->display);
     g_object_unref(monitor->cache);
Index: linux/src/hippo-ui.c
===================================================================
--- linux/src/hippo-ui.c	(revisão 6847)
+++ linux/src/hippo-ui.c	(cópia de trabalho)
@@ -493,16 +493,19 @@
      */
     GdkDisplay *display = gdk_screen_get_display(screen);
     GdkWindow *root = gdk_screen_get_root_window(screen);
+#ifndef WITH_MAEMO
     Atom current_desktop_atom = gdk_x11_get_xatom_by_name_for_display(display, "_NET_CURRENT_DESKTOP");
+#endif
     Atom workarea_atom = gdk_x11_get_xatom_by_name_for_display(display, "_NET_WORKAREA");
     int format;
     Atom type;
     unsigned long n_items;
     unsigned long bytes_after;
     unsigned char *data;
-    guint current_desktop;
+    guint current_desktop = 0;
     guint n_desktops;
     
+#ifndef WITH_MAEMO
     if (XGetWindowProperty(GDK_WINDOW_XDISPLAY(root), GDK_WINDOW_XWINDOW(root),
                            current_desktop_atom, 
                            0, G_MAXLONG, False, XA_CARDINAL,
@@ -519,7 +522,7 @@
 
     current_desktop = ((unsigned long *)data)[0];
     XFree(data);
-    
+#endif    
 
     if (XGetWindowProperty(GDK_WINDOW_XDISPLAY(root), GDK_WINDOW_XWINDOW(root),
                            workarea_atom, 
@@ -542,9 +545,14 @@
     }
 
     work_area->x = ((unsigned long *)data)[current_desktop * 4];
+    work_area->width = ((unsigned long *)data)[current_desktop * 4 + 2];
+#ifndef WITH_MAEMO
     work_area->y = ((unsigned long *)data)[current_desktop * 4 + 1];
-    work_area->width = ((unsigned long *)data)[current_desktop * 4 + 2];
     work_area->height = ((unsigned long *)data)[current_desktop * 4 + 3];
+#else
+    work_area->y = ((unsigned long *)data)[current_desktop * 4 + 1] + 50;
+    work_area->height = ((unsigned long *)data)[current_desktop * 4 + 3] - 50;
+#endif
     
     XFree(data);
     return;
Index: linux/configure.ac
===================================================================
--- linux/configure.ac	(revisão 6847)
+++ linux/configure.ac	(cópia de trabalho)
@@ -287,10 +287,15 @@
     fi
 fi
 
+AC_ARG_WITH(maemo,
+	    AC_HELP_STRING([--with-maemo=[yes/no]],
+		           [Whether to use Maemo version of Mugshot client]),
+	    ,
+	    with_maemo=no)
 
 GLIB2_REQUIRED=2.6.0
 GTK2_REQUIRED=2.6.0
-LOUDMOUTH_REQUIRED=1.0
+LOUDMOUTH_REQUIRED=1.2.2
 # unfortunately this breaks us on FC4
 DBUS_REQUIRED=0.60
 DBUS_GLIB_REQUIRED=0.60
@@ -341,35 +346,37 @@
 XSCREENSAVER_LIBS=""
 XSCREENSAVER_CFLAGS=""
 
-# First check to see if we have a .pc file for the xscreensaver extensio
-HIPPO_PKG_CHECK_EXISTS(xscrnsaver, have_xscreensaver=true, have_xscreensaver=false)
-if $have_xscreensaver ; then
-    XSCREENSAVER_PACKAGES="xscrnsaver"
-else
-    # No, check the old way
-    AC_PATH_XTRA
-    if test "x$no_x" = xyes ; then
-        AC_MSG_ERROR([Can't find path to the X development files])
+if test "x$with_maemo" = xno ; then
+    # First check to see if we have a .pc file for the xscreensaver extensio
+    HIPPO_PKG_CHECK_EXISTS(xscrnsaver, have_xscreensaver=true, have_xscreensaver=false)
+    if $have_xscreensaver ; then
+        XSCREENSAVER_PACKAGES="xscrnsaver"
+    else
+        # No, check the old way
+        AC_PATH_XTRA
+        if test "x$no_x" = xyes ; then
+            AC_MSG_ERROR([Can't find path to the X development files])
+        fi
+    
+        hippo_save_CPPFLAGS="$CPPFLAGS"
+        CPPFLAGS="$CPPFLAGS $X_CFLAGS"
+    
+        hippo_save_LIBS="$LIBS"
+        LIBS="$X_LIBS $LIBS"
+    
+        have_xscreensaver=true
+        AC_CHECK_HEADERS([X11/extensions/scrnsaver.h], :, [have_xscreensaver=false])
+        AC_CHECK_LIB(Xss, XScreenSaverQueryExtension, :, [have_xscreensaver=false], -lXext -lX11 $X_EXTRA_LIBS)
+    
+        CFLAGS="$hippo_save_CFLAGS"
+        LIBS="$hippo_save_LIBS"
+    
+        if ! $have_xscreensaver ; then
+            AC_MSG_ERROR([XScreenSaver extension is required - X11/extensions/scnsaver.h, libXss.so])
+        fi
+        XSCREENSAVER_LIBS="-lXss -lXext -lX11 $X_EXTRA_LIBS"
+        XSCREENSAVER_CFLAGS="$X_CFLAGS"
     fi
-
-    hippo_save_CPPFLAGS="$CPPFLAGS"
-    CPPFLAGS="$CPPFLAGS $X_CFLAGS"
-
-    hippo_save_LIBS="$LIBS"
-    LIBS="$X_LIBS $LIBS"
-
-    have_xscreensaver=true
-    AC_CHECK_HEADERS([X11/extensions/scrnsaver.h], :, [have_xscreensaver=false])
-    AC_CHECK_LIB(Xss, XScreenSaverQueryExtension, :, [have_xscreensaver=false], -lXext -lX11 $X_EXTRA_LIBS)
-
-    CFLAGS="$hippo_save_CFLAGS"
-    LIBS="$hippo_save_LIBS"
-
-    if ! $have_xscreensaver ; then
-        AC_MSG_ERROR([XScreenSaver extension is required - X11/extensions/scnsaver.h, libXss.so])
-    fi
-    XSCREENSAVER_LIBS="-lXss -lXext -lX11 $X_EXTRA_LIBS"
-    XSCREENSAVER_CFLAGS="$X_CFLAGS"
 fi
 
 # PCRE checks
@@ -448,14 +455,27 @@
 AC_DEFINE(HIPPO_LOUDMOUTH_IS_10, 1, [Define if Loudmouth is version 1.0 or below])
 PKG_CHECK_MODULES(LIBHIPPOIPC, gobject-2.0 dbus-1 >= $DBUS_REQUIRED dbus-glib-1 >= $DBUS_REQUIRED)
 PKG_CHECK_MODULES(LIBGTKCOPY, gtk+-2.0 >= $GTK2_REQUIRED gtk+-x11-2.0)
-PKG_CHECK_MODULES(MUGSHOT_BASE, gtk+-2.0 >= $GTK2_REQUIRED gthread-2.0 loudmouth-1.0 >= $LOUDMOUTH_REQUIRED dbus-1 >= $DBUS_REQUIRED dbus-glib-1 >= $DBUS_GLIB_REQUIRED gnome-desktop-2.0 >= $GNOME_DESKTOP_REQUIRED gnome-vfs-2.0 $XSCREENSAVER_PACKAGES $CANVAS_MODULES)
-MUGSHOT_LIBS="$MUGSHOT_BASE_LIBS $CURL_LIBS $XSCREENSAVER_LIBS $JPEG_LIBS $RESOLV_LIBS"
-MUGSHOT_CFLAGS="$MUGSHOT_BASE_CFLAGS $CURL_CFLAGS $XSCREENSAVER_CFLAGS"
+PKG_CHECK_MODULES(MUGSHOT_BASE, gtk+-2.0 >= $GTK2_REQUIRED gthread-2.0 loudmouth-1.0 >= $LOUDMOUTH_REQUIRED dbus-1 >= $DBUS_REQUIRED dbus-glib-1 >= $DBUS_GLIB_REQUIRED gnome-vfs-2.0 $XSCREENSAVER_PACKAGES $CANVAS_MODULES)
+
+# If we're building the Maemo client, we don't need gnome-desktop
+if test "x$with_maemo" != xno ; then
+    PKG_CHECK_MODULES(MUGSHOT_MAEMO, libosso >= 0.9.19)
+else
+    PKG_CHECK_MODULES(MUGSHOT_GNOME, gnome-desktop-2.0 >= $GNOME_DESKTOP_REQUIRED)
+fi
+   
+MUGSHOT_LIBS="$MUGSHOT_BASE_LIBS $MUGSHOT_GNOME_LIBS $MUGSHOT_MAEMO_LIBS $CURL_LIBS $XSCREENSAVER_LIBS $JPEG_LIBS $RESOLV_LIBS"
+MUGSHOT_CFLAGS="$MUGSHOT_BASE_CFLAGS $MUGSHOT_GNOME_CFLAGS $MUGSHOT_MAEMO_CFLAGS $CURL_CFLAGS $XSCREENSAVER_CFLAGS"
 AC_SUBST(MUGSHOT_LIBS)
 AC_SUBST(MUGSHOT_CFLAGS)
 PKG_CHECK_MODULES(MUGSHOT_URI_HANDLER, gtk+-2.0 >= $GTK2_REQUIRED gthread-2.0 dbus-1 >= $DBUS_REQUIRED)
 PKG_CHECK_MODULES(TEST_HIPPO_IPC, gobject-2.0 dbus-1 >= $DBUS_REQUIRED dbus-glib-1 >= $DBUS_REQUIRED)
 
+if test "x$with_maemo" != xno ; then
+    AC_DEFINE(WITH_MAEMO, , [whether Maemo is active])
+fi
+AM_CONDITIONAL(WITH_MAEMO, test "x$with_maemo" != xno)
+
 GLIB_GENMARSHAL=`$PKG_CONFIG --variable=glib_genmarshal glib-2.0`
 AC_SUBST(GLIB_GENMARSHAL)
 
@@ -620,7 +640,7 @@
 if $sdk_includes_nspr ; then
     NSPR_LIBS="-L $with_gecko_sdk/lib -lnspr4"
 else
-    for pkg in firefox-nspr xulrunnner-nspr nspr ; do
+    for pkg in firefox-nspr xulrunnner-nspr nspr microb-engine-nspr; do
         if test "x$NSPR_PACKAGES" = x ; then
 	    HIPPO_PKG_CHECK_EXISTS($pkg, NSPR_PACKAGES=$pkg)
 	fi
@@ -631,7 +651,7 @@
 fi
 
 if $need_separate_js ; then
-    for pkg in firefox-js xulrunner-js ; do
+    for pkg in firefox-js xulrunner-js microb-engine-js; do
         if test "x$JS_PACKAGES" = x ; then
 	    HIPPO_PKG_CHECK_EXISTS($pkg, JS_PACKAGES=$pkg)
 	fi
Index: linux/Makefile-icons.am
===================================================================
--- linux/Makefile-icons.am	(revisão 6847)
+++ linux/Makefile-icons.am	(cópia de trabalho)
@@ -3,11 +3,22 @@
 hugeicon_DATA=				\
 	$(HUGEICONSUBDIR)/mugshot.png
 
+BIGICONSUBDIR=icons/hicolor/64x64/apps
+bigicondir=$(datadir)/$(BIGICONSUBDIR)
+bigicon_DATA=			\
+	$(BIGICONSUBDIR)/mugshot.png
+
 NORMALICONSUBDIR=icons/hicolor/48x48/apps
 normalicondir=$(datadir)/$(NORMALICONSUBDIR)
 normalicon_DATA=				\
 	$(NORMALICONSUBDIR)/mugshot.png
 
+STATUSICONSUBDIR=icons/hicolor/40x40/apps
+statusicondir=$(datadir)/$(STATUSICONSUBDIR)
+statusicon_DATA=						\
+	$(STATUSICONSUBDIR)/mugshot_notification.png		\
+	$(STATUSICONSUBDIR)/mugshot_notification_disabled.png
+
 MEDIUMICONSUBDIR=icons/hicolor/32x32/apps
 mediumicondir=$(datadir)/$(MEDIUMICONSUBDIR)
 mediumicon_DATA=				\
@@ -37,5 +48,8 @@
 	$(smallericon_DATA)			\
 	$(smallishicon_DATA)			\
 	$(mediumicon_DATA)			\
+	$(statusicon_DATA)			\
 	$(normalicon_DATA)			\
-	$(hugeicon_DATA)
+	$(hugeicon_DATA)			\
+	$(bigicon_DATA)
+
Index: linux/Makefile-mugshot.am
===================================================================
--- linux/Makefile-mugshot.am	(revisão 6847)
+++ linux/Makefile-mugshot.am	(cópia de trabalho)
@@ -157,7 +157,11 @@
 autostart_files=$(autostart_in_files:.desktop.in=.desktop)
 autostart_DATA = $(autostart_files)
 
+if WITH_MAEMO
+desktopfilesdir=$(datadir)/applications/hildon
+else
 desktopfilesdir=$(datadir)/applications
+endif
 desktopfiles_in_files=mugshot.desktop.in
 desktopfiles_files=$(desktopfiles_in_files:.desktop.in=.desktop)
 desktopfiles_DATA = $(desktopfiles_files)
Index: common/hippo/hippo-connection.c
===================================================================
--- common/hippo/hippo-connection.c	(revisão 6847)
+++ common/hippo/hippo-connection.c	(cópia de trabalho)
@@ -1,4 +1,5 @@
 /* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */
+#include <config.h>
 #include "hippo-common-internal.h"
 #include "hippo-connection.h"
 #include "hippo-data-cache-internal.h"
@@ -316,8 +317,14 @@
 #ifdef G_OS_WIN32
     connection->login_browser = HIPPO_BROWSER_IE;
 #else
+
+#ifdef WITH_MAEMO
+    connection->login_browser = HIPPO_BROWSER_MAEMO;
+#else
     connection->login_browser = HIPPO_BROWSER_FIREFOX;
-#endif
+#endif /* WITH_MAEMO */
+
+#endif /* G_OS_WIN32 */
 }
 
 static void
@@ -705,7 +712,7 @@
     g_return_val_if_fail(HIPPO_IS_CONNECTION(connection), FALSE);
     
     hippo_connection_stop_signin_timeout(connection);
-        
+
     if (hippo_connection_load_auth(connection)) {
         if (connection->state == HIPPO_STATE_AUTH_WAIT)
             hippo_connection_authenticate(connection);
@@ -1161,6 +1168,7 @@
                             handle_open, connection, NULL, 
                             &error)) {
         g_debug("lm_connection_open returned false");
+
         hippo_connection_connect_failure(connection, error ? error->message : "");
         if (error)
             g_error_free(error);
@@ -1318,6 +1326,7 @@
                 g_error_free(error);
         } else {
         hippo_connection_state_change(connection, HIPPO_STATE_AUTHENTICATING);
+
     }
     g_free(jabber_id);
 }
Index: common/hippo/hippo-stack-manager.c
===================================================================
--- common/hippo/hippo-stack-manager.c	(revisão 6847)
+++ common/hippo/hippo-stack-manager.c	(cópia de trabalho)
@@ -140,7 +140,7 @@
     HippoRectangle base;
     gboolean is_west;
     gboolean is_north;
-
+    
 #if 1
     g_debug("SIZING: work area %d,%d %dx%d icon %d,%d %dx%d orientation %d",
         monitor->x, monitor->y, monitor->width,  monitor->height,
@@ -896,6 +896,10 @@
 
     manager->browser_window = hippo_platform_create_window(platform);
 
+#ifdef WITH_MAEMO
+    g_object_set(manager->browser_window, "role", HIPPO_WINDOW_ROLE_NOTIFICATION, NULL);
+#endif
+
     g_signal_connect(manager->browser_window, "minimize",
                      G_CALLBACK(on_browser_minimize), manager);
 
Index: common/hippo/hippo-basics.h
===================================================================
--- common/hippo/hippo-basics.h	(revisão 6847)
+++ common/hippo/hippo-basics.h	(cópia de trabalho)
@@ -2,6 +2,7 @@
 #ifndef __HIPPO_BASICS_H__
 #define __HIPPO_BASICS_H__
 
+#include <config.h>
 #include <glib-object.h>
 
 G_BEGIN_DECLS
@@ -69,7 +70,10 @@
     HIPPO_BROWSER_IE,
     HIPPO_BROWSER_FIREFOX,
     HIPPO_BROWSER_EPIPHANY,
-    HIPPO_BROWSER_GALEON
+    HIPPO_BROWSER_GALEON,
+#ifdef WITH_MAEMO
+    HIPPO_BROWSER_MAEMO
+#endif
 } HippoBrowserKind;
 
 typedef enum {
Index: common/hippo/hippo-canvas-filter-area.c
===================================================================
--- common/hippo/hippo-canvas-filter-area.c	(revisão 6847)
+++ common/hippo/hippo-canvas-filter-area.c	(cópia de trabalho)
@@ -202,6 +202,9 @@
     
     item = g_object_new(HIPPO_TYPE_CANVAS_TEXT,
                         "text", "Hide feeds: ",
+#ifdef WITH_MAEMO
+                        "font", "14px",
+#endif
                         "padding-left", 4,
                         "xalign", HIPPO_ALIGNMENT_START,
                         NULL);
@@ -219,6 +222,9 @@
     
     item = g_object_new(HIPPO_TYPE_CANVAS_TEXT,
                         "text", "Hide my items: ",
+#ifdef WITH_MAEMO
+                        "font", "14px",
+#endif
                         "padding-left", 40,
                         "xalign", HIPPO_ALIGNMENT_START,
                         NULL);
Index: common/firefox/src/hippoControl.cpp
===================================================================
--- common/firefox/src/hippoControl.cpp	(revisão 6847)
+++ common/firefox/src/hippoControl.cpp	(cópia de trabalho)
@@ -1,5 +1,7 @@
 /* -*- mode: C++; c-basic-offset: 4; indent-tabs-mode: nil; -*- */
 
+#include <config.h>
+
 #ifdef HIPPO_OS_LINUX
 #include <glib.h>
 #include <gtk/gtk.h>
@@ -135,6 +137,8 @@
 {
     window_ = do_GetWeakReference(window);
 
+#ifndef WITH_MAEMO
+
 #ifdef HIPPO_OS_LINUX
     HippoWindowId windowId = 0;
     
@@ -167,8 +171,10 @@
     
     if (controller_ && endpoint_ && windowId)
         controller_->setWindowId(endpoint_, windowId);
-#endif
+#endif /* HIPPO_OS_LINUX */
 
+#endif /* WITH_MAEMO */
+
     return NS_OK;
 }
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]