| Components.utils.import('resource://gre/modules/Services.jsm'); | |
| var browserWindow = Services.wm.getMostRecentWindow('navigator:browser'); | |
| if (!browserWindow) { | |
| throw new Error('No browser window found'); | |
| } | |
| var baseWindow = browserWindow.QueryInterface(Ci.nsIInterfaceRequestor) | |
| .getInterface(Ci.nsIWebNavigation) | |
| .QueryInterface(Ci.nsIDocShellTreeItem) | |
| .treeOwner | |
| .QueryInterface(Ci.nsIInterfaceRequestor) | |
| .getInterface(Ci.nsIBaseWindow); | |
| var GDKWindowPtrString = baseWindow.nativeHandle; | |
| Components.utils.import('resource://gre/modules/ctypes.jsm'); | |
| var gdk = ctypes.open('libgdk-x11-2.0.so.0'); | |
| var gtk = ctypes.open('libgtk-x11-2.0.so.0'); | |
| // types | |
| let GdkWindow = ctypes.StructType('GdkWindow'); | |
| let gpointer = ctypes.voidptr_t; | |
| let gboolean = ctypes.bool; | |
| let GtkWindow = ctypes.StructType('GtkWindow'); | |
| //let GtkWidget = ctypes.StructType('GtkWidget'); | |
| var gdk_window_get_user_data = gdk.declare('gdk_window_get_user_data', ctypes.default_abi, ctypes.void_t, GdkWindow.ptr, gpointer.ptr); | |
| //var gtk_widget_get_window = gtk.declare('gtk_widget_get_window', ctypes.default_abi, GtkWidget.ptr); // for getGdkWindowFromGtkWindow | |
| var gtk_window_set_urgency_hint = gtk.declare('gtk_window_set_urgency_hint', ctypes.default_abi, ctypes.void_t, GtkWindow.ptr, gboolean) | |
| var browserWindow_madeIntoGdkWinPtr = GdkWindow.ptr(ctypes.UInt64(GDKWindowPtrString)); | |
| var gptr = gpointer(); | |
| var rez_gwgud = gdk_window_get_user_data(browserWindow_madeIntoGdkWinPtr, gptr.address()); | |
| console.info('rez_gwgud:', rez_gwgud, /*rez_gwgud.toString(),*/ uneval(rez_gwgud)); // return is void so cant do .toString on it | |
| var browserWindow_madeIntoGtkWindowPtr = ctypes.cast(gptr, GtkWindow.ptr); | |
| var rez_gwsuh = gtk_window_set_urgency_hint(browserWindow_madeIntoGtkWindowPtr, true); // returns void | |
| console.info('rez_gwsuh:', rez_gwsuh, uneval(rez_gwsuh)); // is void so cant do .toString() on it | |
| gdk.close(); | |
| gtk.close(); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Noitidart commentedMar 30, 2015
README
Rev1