Blob Blame History Raw
--- "eclipse.platform.swt/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/library/os.c"
+++ "eclipse.platform.swt/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/library/os.c"
@@ -11321,6 +11321,24 @@ JNIEXPORT jintLong JNICALL OS_NATIVE(_1gtk_1image_1new_1from_1pixbuf)
 }
 #endif
 
+#ifndef NO__1gtk_1image_1set_1from_1gicon
+JNIEXPORT void JNICALL OS_NATIVE(_1gtk_1image_1set_1from_1gicon)
+	(JNIEnv *env, jclass that, jintLong arg0, jintLong arg1, jint arg2)
+{
+	OS_NATIVE_ENTER(env, that, _1gtk_1image_1set_1from_1gicon_FUNC);
+/*
+	gtk_image_set_from_gicon((GtkImage *)arg0, (GIcon *)arg1, (GtkIconSize)arg2);
+*/
+	{
+		OS_LOAD_FUNCTION(fp, gtk_image_set_from_gicon)
+		if (fp) {
+			((void (CALLING_CONVENTION*)(GtkImage *, GIcon *, GtkIconSize))fp)((GtkImage *)arg0, (GIcon *)arg1, (GtkIconSize)arg2);
+		}
+	}
+	OS_NATIVE_EXIT(env, that, _1gtk_1image_1set_1from_1gicon_FUNC);
+}
+#endif
+
 #ifndef NO__1gtk_1image_1set_1from_1pixbuf
 JNIEXPORT void JNICALL OS_NATIVE(_1gtk_1image_1set_1from_1pixbuf)
 	(JNIEnv *env, jclass that, jintLong arg0, jintLong arg1)
--- "eclipse.platform.swt/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/library/os_custom.h"
+++ "eclipse.platform.swt/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/library/os_custom.h"
@@ -175,6 +175,7 @@
 #define gtk_icon_info_free_LIB LIB_GTK
 #define gtk_icon_set_render_icon_LIB LIB_GTK
 #define gtk_icon_theme_lookup_by_gicon_LIB LIB_GTK
+#define gtk_image_set_from_gicon_LIB LIB_GTK
 #define gdk_keyboard_ungrab_LIB LIB_GDK
 #define gtk_icon_theme_get_default_LIB LIB_GTK
 #define gtk_menu_item_remove_submenu_LIB LIB_GTK
--- "eclipse.platform.swt/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/library/os_stats.c"
+++ "eclipse.platform.swt/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/library/os_stats.c"
@@ -818,6 +818,7 @@ char * OS_nativeFunctionNames[] = {
 	"_1gtk_1image_1menu_1item_1set_1image",
 	"_1gtk_1image_1new",
 	"_1gtk_1image_1new_1from_1pixbuf",
+	"_1gtk_1image_1set_1from_1gicon",
 	"_1gtk_1image_1set_1from_1pixbuf",
 	"_1gtk_1init_1check",
 	"_1gtk_1label_1get_1layout",
--- "eclipse.platform.swt/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/library/os_stats.h"
+++ "eclipse.platform.swt/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/library/os_stats.h"
@@ -828,6 +828,7 @@ typedef enum {
 	_1gtk_1image_1menu_1item_1set_1image_FUNC,
 	_1gtk_1image_1new_FUNC,
 	_1gtk_1image_1new_1from_1pixbuf_FUNC,
+	_1gtk_1image_1set_1from_1gicon_FUNC,
 	_1gtk_1image_1set_1from_1pixbuf_FUNC,
 	_1gtk_1init_1check_FUNC,
 	_1gtk_1label_1get_1layout_FUNC,
--- "eclipse.platform.swt/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/org/eclipse/swt/internal/gtk/OS.java"
+++ "eclipse.platform.swt/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/org/eclipse/swt/internal/gtk/OS.java"
@@ -8266,6 +8266,21 @@ public static final void gtk_image_set_from_pixbuf(long /*int*/ image, long /*in
 	}
 }
 /**
+ * @method flags=dynamic
+ * @param image cast=(GtkImage *)
+ * @param gicon cast=(GIcon *)
+ * @param size cast=(GtkIconSize)
+ */
+public static final native void _gtk_image_set_from_gicon(long /*int*/ image, long /*int*/ gicon, int size);
+public static final void gtk_image_set_from_gicon(long /*int*/ image, long /*int*/ gicon, int size) {
+	lock.lock();
+	try {
+		_gtk_image_set_from_gicon(image, gicon, size);
+	} finally {
+		lock.unlock();
+	}
+}
+/**
  * @param argc cast=(int *)
  * @param argv cast=(char ***)
  */
--- "eclipse.platform.swt/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Button.java"
+++ "eclipse.platform.swt/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Button.java"
@@ -875,11 +875,11 @@ public void setImage (Image image) {
 		imageList = new ImageList ();
 		int imageIndex = imageList.add (image);
 		long /*int*/ pixbuf = imageList.getPixbuf (imageIndex);
-		OS.gtk_image_set_from_pixbuf (imageHandle, pixbuf);
+		gtk_image_set_from_pixbuf(imageHandle, pixbuf);
 		if (text.length () == 0) OS.gtk_widget_hide (labelHandle);
 		OS.gtk_widget_show (imageHandle);
 	} else {
-		OS.gtk_image_set_from_pixbuf (imageHandle, 0);
+		gtk_image_set_from_pixbuf (imageHandle, 0);
 		OS.gtk_widget_show (labelHandle);
 		OS.gtk_widget_hide (imageHandle);
 	}
--- "eclipse.platform.swt/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/ExpandItem.java"
+++ "eclipse.platform.swt/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/ExpandItem.java"
@@ -535,11 +535,11 @@ public void setImage (Image image) {
 		imageList = new ImageList ();
 		int imageIndex = imageList.add (image);
 		long /*int*/ pixbuf = imageList.getPixbuf (imageIndex);
-		OS.gtk_image_set_from_pixbuf (imageHandle, pixbuf);
+		gtk_image_set_from_pixbuf (imageHandle, pixbuf);
 		if (text.length () == 0) OS.gtk_widget_hide (labelHandle);
 		OS.gtk_widget_show (imageHandle);
 	} else {
-		OS.gtk_image_set_from_pixbuf (imageHandle, 0);
+		gtk_image_set_from_pixbuf (imageHandle, 0);
 		OS.gtk_widget_show (labelHandle);
 		OS.gtk_widget_hide (imageHandle);
 	}
--- "eclipse.platform.swt/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Label.java"
+++ "eclipse.platform.swt/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Label.java"
@@ -535,11 +535,11 @@ public void setImage (Image image) {
 		imageList = new ImageList ();
 		int imageIndex = imageList.add (image);
 		long /*int*/ pixbuf = imageList.getPixbuf (imageIndex);
-		OS.gtk_image_set_from_pixbuf (imageHandle, pixbuf);
+		gtk_image_set_from_pixbuf (imageHandle, pixbuf);
 		OS.gtk_widget_hide (labelHandle);
 		OS.gtk_widget_show (imageHandle);
 	} else {
-		OS.gtk_image_set_from_pixbuf (imageHandle, 0);
+		gtk_image_set_from_pixbuf (imageHandle, 0);
 		OS.gtk_widget_show (labelHandle);
 		OS.gtk_widget_hide (imageHandle);
 	}
--- "eclipse.platform.swt/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/TabItem.java"
+++ "eclipse.platform.swt/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/TabItem.java"
@@ -307,10 +307,10 @@ public void setImage (Image image) {
 			imageList.put (imageIndex, image);
 		}
 		long /*int*/ pixbuf = imageList.getPixbuf (imageIndex);
-		OS.gtk_image_set_from_pixbuf (imageHandle, pixbuf);
+		gtk_image_set_from_pixbuf (imageHandle, pixbuf);
 		OS.gtk_widget_show (imageHandle);
 	} else {
-		OS.gtk_image_set_from_pixbuf (imageHandle, 0);
+		gtk_image_set_from_pixbuf (imageHandle, 0);
 		OS.gtk_widget_hide (imageHandle);
 	}
 }
--- "eclipse.platform.swt/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/TableColumn.java"
+++ "eclipse.platform.swt/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/TableColumn.java"
@@ -553,10 +553,10 @@ public void setImage (Image image) {
 		int imageIndex = headerImageList.indexOf (image);
 		if (imageIndex == -1) imageIndex = headerImageList.add (image);
 		long /*int*/ pixbuf = headerImageList.getPixbuf (imageIndex);
-		OS.gtk_image_set_from_pixbuf (imageHandle, pixbuf);
+		gtk_image_set_from_pixbuf (imageHandle, pixbuf);
 		OS.gtk_widget_show (imageHandle);
 	} else {
-		OS.gtk_image_set_from_pixbuf (imageHandle, 0);
+		gtk_image_set_from_pixbuf (imageHandle, 0);
 		OS.gtk_widget_hide (imageHandle);
 	}
 }
--- "eclipse.platform.swt/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/ToolItem.java"
+++ "eclipse.platform.swt/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/ToolItem.java"
@@ -608,7 +608,7 @@ long /*int*/ gtk_enter_notify_event (long /*int*/ widget, long /*int*/ event) {
 			int index = imageList.indexOf (hotImage);
 			if (index != -1 && imageHandle != 0) {
 				long /*int*/ pixbuf = imageList.getPixbuf (index);
-				OS.gtk_image_set_from_pixbuf(imageHandle, pixbuf);
+				gtk_image_set_from_pixbuf(imageHandle, pixbuf);
 			}
 		}
 	}
@@ -652,7 +652,7 @@ long /*int*/ gtk_leave_notify_event (long /*int*/ widget, long /*int*/ event) {
 				int index = imageList.indexOf (image);
 				if (index != -1 && imageHandle != 0) {
 					long /*int*/ pixbuf = imageList.getPixbuf (index);
-					OS.gtk_image_set_from_pixbuf(imageHandle, pixbuf);
+					gtk_image_set_from_pixbuf(imageHandle, pixbuf);
 				}
 			}
 		}	
@@ -998,9 +998,9 @@ public void setImage (Image image) {
 			imageList.put (imageIndex, image);
 		}
 		long /*int*/ pixbuf = imageList.getPixbuf (imageIndex);
-		OS.gtk_image_set_from_pixbuf(imageHandle, pixbuf);
+		gtk_image_set_from_pixbuf(imageHandle, pixbuf);
 	} else {
-		OS.gtk_image_set_from_pixbuf(imageHandle, 0);
+		gtk_image_set_from_pixbuf(imageHandle, 0);
 	}
 	/*
 	* If Text/Image of a tool-item changes, then it is 
--- "eclipse.platform.swt/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/TreeColumn.java"
+++ "eclipse.platform.swt/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/TreeColumn.java"
@@ -550,10 +550,10 @@ public void setImage (Image image) {
 		int imageIndex = headerImageList.indexOf (image);
 		if (imageIndex == -1) imageIndex = headerImageList.add (image);
 		long /*int*/ pixbuf = headerImageList.getPixbuf (imageIndex);
-		OS.gtk_image_set_from_pixbuf (imageHandle, pixbuf);
+		gtk_image_set_from_pixbuf (imageHandle, pixbuf);
 		OS.gtk_widget_show (imageHandle);
 	} else {
-		OS.gtk_image_set_from_pixbuf (imageHandle, 0);
+		gtk_image_set_from_pixbuf (imageHandle, 0);
 		OS.gtk_widget_hide (imageHandle);
 	}
 }
--- "eclipse.platform.swt/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Widget.java"
+++ "eclipse.platform.swt/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Widget.java"
@@ -2171,4 +2171,13 @@ void gtk_widget_get_preferred_size (long /*int*/ widget, GtkRequisition requisit
 		OS.gtk_widget_size_request (widget, requisition);
 	}
 }
+
+void gtk_image_set_from_pixbuf (long /*int*/ imageHandle, long /*int*/ pixbuf){
+	if (OS.GTK3) {
+		OS.gtk_image_set_from_gicon(imageHandle, pixbuf, OS.GTK_ICON_SIZE_SMALL_TOOLBAR);
+	} else {
+		OS.gtk_image_set_from_pixbuf(imageHandle, pixbuf);
+	}
+}
+
 }