swt3.4-gtk 3.3+3.4M5: New recipe.
authorRobert Schuster <thebohemian@gmx.net>
Thu, 14 Feb 2008 14:33:35 +0000 (14:33 +0000)
committerRobert Schuster <thebohemian@gmx.net>
Thu, 14 Feb 2008 14:33:35 +0000 (14:33 +0000)
swt3.4-gtk-hildon 3.3+3.4M5: New recipe.
swt3.4-gtk-hildon: Updated hildonizing patch.
  - fixed resizing issue
  - make use of special hildon file dialog

packages/swt/files/swt-hildon.patch
packages/swt/swt3.4-gtk-hildon_3.3+3.4M3.bb
packages/swt/swt3.4-gtk-hildon_3.3+3.4M5.bb [new file with mode: 0644]
packages/swt/swt3.4-gtk_3.3+3.4M5.bb [new file with mode: 0644]

index 728dd30..5f095e0 100644 (file)
@@ -1,15 +1,15 @@
-Index: swt-hildon/swt-source/make_linux.mak
+Index: swt/swt-source/make_linux.mak
 ===================================================================
---- swt-hildon.orig/swt-source/make_linux.mak  2008-01-08 09:35:29.000000000 +0100
-+++ swt-hildon/swt-source/make_linux.mak       2008-01-08 11:35:01.000000000 +0100
+--- swt.orig/swt-source/make_linux.mak 2007-06-20 12:01:22.000000000 +0200
++++ swt/swt-source/make_linux.mak      2008-02-14 11:32:49.000000000 +0100
 @@ -45,8 +45,8 @@
  CAIROLIBS = `pkg-config --libs-only-L cairo` -lcairo
  
  # Do not use pkg-config to get libs because it includes unnecessary dependencies (i.e. pangoxft-1.0)
 -GTKCFLAGS = `pkg-config --cflags gtk+-2.0`
 -GTKLIBS = `pkg-config --libs-only-L gtk+-2.0 gthread-2.0` -lgtk-x11-2.0 -lgthread-2.0 -L/usr/X11R6/lib $(XLIB64) -lXtst
-+GTKCFLAGS = `pkg-config --cflags gtk+-2.0 hildon-1`
-+GTKLIBS = -lhildon-1 `pkg-config --libs-only-L gtk+-2.0 gthread-2.0` -lgtk-x11-2.0 -lgthread-2.0 -L/usr/X11R6/lib $(XLIB64) -lXtst
++GTKCFLAGS = `pkg-config --cflags gtk+-2.0 hildon-1 hildon-fm-2`
++GTKLIBS = -lhildon-1 -lhildonfm `pkg-config --libs-only-L gtk+-2.0 gthread-2.0` -lgtk-x11-2.0 -lgthread-2.0 -L/usr/X11R6/lib $(XLIB64) -lXtst
  
  CDE_LIBS = -L$(CDE_HOME)/lib -R$(CDE_HOME)/lib -lXt -lX11 -lDtSvc
  
@@ -31,10 +31,10 @@ Index: swt-hildon/swt-source/make_linux.mak
                -fPIC \
                ${SWT_PTR_CFLAGS}
  LIBS = -shared -fPIC
-Index: swt-hildon/swt-source/os.c
+Index: swt/swt-source/os.c
 ===================================================================
---- swt-hildon.orig/swt-source/os.c    2008-01-08 09:35:29.000000000 +0100
-+++ swt-hildon/swt-source/os.c 2008-01-08 09:37:00.000000000 +0100
+--- swt.orig/swt-source/os.c   2007-10-30 16:24:28.000000000 +0100
++++ swt/swt-source/os.c        2008-02-14 09:32:49.000000000 +0100
 @@ -17,6 +17,9 @@
  #include "os_structs.h"
  #include "os_stats.h"
@@ -80,7 +80,7 @@ Index: swt-hildon/swt-source/os.c
        OS_NATIVE_EXIT(env, that, _1gtk_1menu_1bar_1new_FUNC);
        return rc;
  }
-@@ -15464,8 +15479,22 @@
+@@ -15464,8 +15479,23 @@
        (JNIEnv *env, jclass that, jint arg0)
  {
        jint rc = 0;
@@ -95,6 +95,7 @@ Index: swt-hildon/swt-source/os.c
 +    p = hildon_program_get_instance();
 +    w = hildon_window_new();
 +    hildon_program_add_window(p, HILDON_WINDOW(w));
++/*    gtk_window_fullscreen(GTK_WINDOW(w));*/
 +/*
 +  }
 +  else
@@ -104,10 +105,10 @@ Index: swt-hildon/swt-source/os.c
        OS_NATIVE_EXIT(env, that, _1gtk_1window_1new_FUNC);
        return rc;
  }
-Index: swt-hildon/swt-source/org/eclipse/swt/widgets/Menu.java
+Index: swt/swt-source/org/eclipse/swt/widgets/Menu.java
 ===================================================================
---- swt-hildon.orig/swt-source/org/eclipse/swt/widgets/Menu.java       2008-01-08 09:34:55.000000000 +0100
-+++ swt-hildon/swt-source/org/eclipse/swt/widgets/Menu.java    2008-01-08 09:36:01.000000000 +0100
+--- swt.orig/swt-source/org/eclipse/swt/widgets/Menu.java      2007-05-31 18:03:50.000000000 +0200
++++ swt/swt-source/org/eclipse/swt/widgets/Menu.java   2008-02-14 09:05:04.000000000 +0100
 @@ -259,9 +259,17 @@
        if ((style & SWT.BAR) != 0) {
                handle = OS.gtk_menu_bar_new ();
@@ -126,3 +127,137 @@ Index: swt-hildon/swt-source/org/eclipse/swt/widgets/Menu.java
        } else {
                handle = OS.gtk_menu_new ();
                if (handle == 0) error (SWT.ERROR_NO_HANDLES);
+Index: swt/swt-source/org/eclipse/swt/internal/gtk/OS.java
+===================================================================
+--- swt.orig/swt-source/org/eclipse/swt/internal/gtk/OS.java   2007-10-30 16:06:36.000000000 +0100
++++ swt/swt-source/org/eclipse/swt/internal/gtk/OS.java        2008-02-14 09:05:04.000000000 +0100
+@@ -471,6 +471,11 @@
+       public static final byte[] window_state_event = ascii("window-state-event");
+       
+       /** Properties */
++  /* Maemo hildon specific - border added due to toolbar */
++  public static final byte[] toolbar_borders = ascii("toolbar-borders");
++  /* Maemo hildon specific - border added due to skin graphics area */
++  public static final byte[] borders = ascii("borders");
++
+       public static final byte[] active = ascii("active");
+       public static final byte[] background_gdk = ascii("background-gdk");
+       public static final byte[] button_relief = ascii("button-relief");
+Index: swt/swt-source/org/eclipse/swt/widgets/Shell.java
+===================================================================
+--- swt.orig/swt-source/org/eclipse/swt/widgets/Shell.java     2007-11-01 11:31:12.000000000 +0100
++++ swt/swt-source/org/eclipse/swt/widgets/Shell.java  2008-02-14 10:51:37.000000000 +0100
+@@ -1028,6 +1028,14 @@
+ int /*long*/ gtk_size_allocate (int /*long*/ widget, int /*long*/ allocation) {
+       int width = OS.GTK_WIDGET_WIDTH (shellHandle);
+       int height = OS.GTK_WIDGET_HEIGHT (shellHandle);
++
++      if (!fullScreen)
++      {
++              GtkBorder b = getMaemoBorder(false);
++              width -= (b.left + b.right);
++              height -= (b.top + b.bottom);
++      }
++
+       if (!resized || oldWidth != width || oldHeight != height) {
+               oldWidth = width;
+               oldHeight = height;
+@@ -1384,14 +1392,53 @@
+       if ((state & FOREIGN_HANDLE) != 0) return;
+       Monitor monitor = getMonitor ();
+       Rectangle rect = monitor.getClientArea ();
++/*
+       int width = rect.width * 5 / 8;
+       int height = rect.height * 5 / 8;
++*/
++
++      int width = rect.width;
++      int height = rect.height;
++
++  // Instead of some arbitrary defaults we can use the complete "application
++  // area" on the maemo platform.
++      if (!fullScreen)
++      {
++              GtkBorder b = getMaemoBorder(false);
++              width -= (b.left + b.right);
++              height -= (b.top + b.bottom);
++      }
++
+       if ((style & SWT.RESIZE) != 0) {
+               OS.gtk_window_resize (shellHandle, width, height);
+       }
+       resizeBounds (width, height, false);
+ }
++/**
++ * Retrieves the "borders" or "toolbar-borders" property
++ * from the Shell.
++ *
++ * That is neccessary to calculate correct Shell sizes on
++ * the Maemo platform.
++ *
++ */
++private GtkBorder getMaemoBorder(boolean wantToolbarBorder)
++{
++  GtkBorder b = new GtkBorder();
++
++  int /*long*/ [] result = new int /*long*/[1];
++  OS.gtk_widget_style_get(shellHandle,
++                          (wantToolbarBorder ? OS.toolbar_borders
++                                             : OS.borders),
++                          result, 0);
++
++  if (result[0] != 0)
++    OS.memmove(b, result[0], GtkBorder.sizeof);
++
++  return b;
++}
++
+ public void setMaximized (boolean maximized) {
+       checkWidget();
+       super.setMaximized (maximized);
+Index: swt/swt-source/os_custom.c
+===================================================================
+--- swt.orig/swt-source/os_custom.c    2007-05-31 18:04:22.000000000 +0200
++++ swt/swt-source/os_custom.c 2008-02-14 13:55:49.000000000 +0100
+@@ -13,6 +13,8 @@
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
++#include <hildon/hildon-file-chooser-dialog.h>
++
+ #include "swt.h"
+ #include "os_structs.h"
+ #include "os_stats.h"
+@@ -41,11 +43,22 @@
+ {
+       jbyte *lparg0=NULL;
+       SWT_PTR rc = 0;
++      GtkWidget *widget = NULL;
+       OS_NATIVE_ENTER(env, that, _1gtk_1file_1chooser_1dialog_1new_FUNC);
+       if (arg0) if ((lparg0 = (*env)->GetByteArrayElements(env, arg0, NULL)) == NULL) goto fail;
+ /*
+       rc = (SWT_PTR)gtk_file_chooser_dialog_new(lparg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7);
+ */
++      /* Remaining arguments are thrown away as they cannot be used for the
++       * HildonFileChooserDialog anyways.
++       */
++      widget = (SWT_PTR) hildon_file_chooser_dialog_new(arg1, (GtkFileChooserAction) arg2);
++  gtk_window_set_title(GTK_WINDOW(widget), (const gchar *) lparg0);
++
++  rc = (SWT_PTR) widget;
++#if 0
++// The code is not supposed to run on AMD64.
++
+       {
+               static int initialized = 0;
+               static void *handle = NULL;
+@@ -70,6 +83,8 @@
+                       rc = (SWT_PTR)(*fptr)(lparg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7);
+               }
+       }
++#endif
++
+ fail:
+       if (arg0 && lparg0) (*env)->ReleaseByteArrayElements(env, arg0, lparg0, 0);
+       OS_NATIVE_EXIT(env, that, _1gtk_1file_1chooser_1dialog_1new_FUNC);
index 628dcdd..d3dfe4d 100644 (file)
@@ -1,7 +1,7 @@
 require swt3.4-gtk_${PV}.bb
 
-PR = "r1"
+PR = "r2"
 
-DEPENDS += "hildon-1"
+DEPENDS += "libhildon libhildonfm"
 
 SRC_URI += "file://swt-hildon.patch;patch=1;pnum=2"
diff --git a/packages/swt/swt3.4-gtk-hildon_3.3+3.4M5.bb b/packages/swt/swt3.4-gtk-hildon_3.3+3.4M5.bb
new file mode 100644 (file)
index 0000000..17d85b4
--- /dev/null
@@ -0,0 +1,7 @@
+require swt3.4-gtk_${PV}.bb
+
+PR = "r0"
+
+DEPENDS += "libhildon libhildonfm"
+
+SRC_URI += "file://swt-hildon.patch;patch=1;pnum=2"
diff --git a/packages/swt/swt3.4-gtk_3.3+3.4M5.bb b/packages/swt/swt3.4-gtk_3.3+3.4M5.bb
new file mode 100644 (file)
index 0000000..4035d08
--- /dev/null
@@ -0,0 +1,12 @@
+require swt-gtk.inc
+
+SRC_URI = "http://ftp.wh2.tu-dresden.de/pub/mirrors/eclipse/eclipse/downloads/drops/S-3.4M5-200802071530/swt-3.4M5-gtk-linux-x86.zip \
+           file://Makefile"
+
+# A number which is used by SWT to mark the shared libraries.
+SWTVERSION = "3428"
+SWT_API_VERSION = "3.4"
+
+PROVIDES = "swt3.4-gtk"
+
+RCONFLICTS = "libswt3.3-gtk-java"