rpms/xulrunner/OLPC-2 xulrunner-1.9a6-xds.patch,NONE,1.1
Marco Pesenti Gritti (mpg)
fedora-extras-commits at redhat.com
Mon Sep 17 19:50:29 UTC 2007
- Previous message (by thread): rpms/lapack/EL-5 dead.package, NONE, 1.1 Makefile, 1.1, NONE Makefile.blas, 1.5, NONE Makefile.lapack, 1.4, NONE blas-bz143340.patch, 1.3, NONE blasqr.ps, 1.1, NONE branch, 1.1, NONE lapack-20010525.patch, 1.1, NONE lapack-3.1.0-make.inc.patch, 1.1, NONE lapack-3.1.0-no-external-etime.patch, 1.1, NONE lapack-3.1.1-make.inc.patch, 1.1, NONE lapack-fixlwork.patch, 1.1, NONE lapack.spec, 1.17, NONE lapackqref.ps, 1.1, NONE sources, 1.5, NONE
- Next message (by thread): rpms/ipe/F-7 ipe-6.0pre28-patch1.patch,NONE,1.1 ipe.spec,1.13,1.14
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
Author: mpg
Update of /cvs/extras/rpms/xulrunner/OLPC-2
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv20982
Added Files:
xulrunner-1.9a6-xds.patch
Log Message:
Actually add xds patch
xulrunner-1.9a6-xds.patch:
--- NEW FILE xulrunner-1.9a6-xds.patch ---
Index: content/base/src/nsContentAreaDragDrop.cpp
===================================================================
RCS file: /cvsroot/mozilla/content/base/src/nsContentAreaDragDrop.cpp,v
retrieving revision 1.69
diff -u -r1.69 nsContentAreaDragDrop.cpp
--- content/base/src/nsContentAreaDragDrop.cpp 8 Jul 2007 07:08:07 -0000 1.69
+++ content/base/src/nsContentAreaDragDrop.cpp 16 Sep 2007 20:11:36 -0000
@@ -855,9 +855,6 @@
return NS_ERROR_NO_INTERFACE;
}
- rv = inDestFile->CreateUnique(nsIFile::NORMAL_FILE_TYPE, 0600);
- NS_ENSURE_SUCCESS(rv, rv);
-
// we rely on the fact that the WPB is refcounted by the channel etc,
// so we don't keep a ref to it. It will die when finished.
nsCOMPtr<nsIWebBrowserPersist> persist =
@@ -921,21 +918,32 @@
if (targetFilename.IsEmpty())
return NS_ERROR_FAILURE;
- // get the target directory from the kFilePromiseDirectoryMime
- // flavor
- nsCOMPtr<nsISupports> dirPrimitive;
+ nsCOMPtr<nsIFile> file;
+
+ nsCOMPtr<nsISupports> fullpathPrimitive;
dataSize = 0;
- aTransferable->GetTransferData(kFilePromiseDirectoryMime,
- getter_AddRefs(dirPrimitive), &dataSize);
- nsCOMPtr<nsILocalFile> destDirectory = do_QueryInterface(dirPrimitive);
- if (!destDirectory)
- return NS_ERROR_FAILURE;
+ aTransferable->GetTransferData(kFilePromiseFullpathMime,
+ getter_AddRefs(fullpathPrimitive), &dataSize);
+ file = do_QueryInterface(fullpathPrimitive);
+ if (!file) {
+ // get the target directory from the kFilePromiseDirectoryMime
+ // flavor
+ nsCOMPtr<nsISupports> dirPrimitive;
+ dataSize = 0;
+ aTransferable->GetTransferData(kFilePromiseDirectoryMime,
+ getter_AddRefs(dirPrimitive), &dataSize);
+ nsCOMPtr<nsILocalFile> destDirectory = do_QueryInterface(dirPrimitive);
+ if (!destDirectory)
+ return NS_ERROR_FAILURE;
- nsCOMPtr<nsIFile> file;
- rv = destDirectory->Clone(getter_AddRefs(file));
- NS_ENSURE_SUCCESS(rv, rv);
+ rv = destDirectory->Clone(getter_AddRefs(file));
+ NS_ENSURE_SUCCESS(rv, rv);
- file->Append(targetFilename);
+ file->Append(targetFilename);
+
+ rv = file->CreateUnique(nsIFile::NORMAL_FILE_TYPE, 0600);
+ NS_ENSURE_SUCCESS(rv, rv);
+ }
// now save the file
rv = SaveURIToFile(sourceURLString, file);
Index: widget/public/nsITransferable.idl
===================================================================
RCS file: /cvsroot/mozilla/widget/public/nsITransferable.idl,v
retrieving revision 1.12
diff -u -r1.12 nsITransferable.idl
--- widget/public/nsITransferable.idl 12 Jun 2006 17:30:22 -0000 1.12
+++ widget/public/nsITransferable.idl 16 Sep 2007 20:12:24 -0000
@@ -70,6 +70,7 @@
#define kFilePromiseMime "application/x-moz-file-promise"
// a synthetic flavor, put into the transferable once we know the destination directory of a file drag
#define kFilePromiseDirectoryMime "application/x-moz-file-promise-dir"
+#define kFilePromiseFullpathMime "application/x-moz-file-promise-fullpath"
%}
Index: widget/src/gtk2/nsDragService.cpp
===================================================================
RCS file: /cvsroot/mozilla/widget/src/gtk2/nsDragService.cpp,v
retrieving revision 1.19
diff -u -r1.19 nsDragService.cpp
--- widget/src/gtk2/nsDragService.cpp 7 Aug 2007 15:18:38 -0000 1.19
+++ widget/src/gtk2/nsDragService.cpp 16 Sep 2007 20:12:26 -0000
@@ -60,11 +60,16 @@
#include "gfxASurface.h"
#include "nsImageToPixbuf.h"
+#define XDS_ATOM gdk_atom_intern("XdndDirectSave0", FALSE)
+#define TEXT_ATOM gdk_atom_intern("text/plain", FALSE)
+#define MAX_XDS_ATOM_VAL_LEN 4096
+
static PRLogModuleInfo *sDragLm = NULL;
static const char gMimeListType[] = "application/x-moz-internal-item-list";
static const char gMozUrlType[] = "_NETSCAPE_URL";
static const char gTextUriListType[] = "text/uri-list";
+static const char gDirectSaveType[] = "XdndDirectSave0";
static void
invisibleSourceDragEnd(GtkWidget *aWidget,
@@ -79,6 +84,11 @@
guint32 aTime,
gpointer aData);
+void
+invisibleSourceDragBegin(GtkWidget *aWidget,
+ GdkDragContext *aContext,
+ gpointer aData);
+
nsDragService::nsDragService()
{
// We have to destroy the hidden widget before the event loop stops
@@ -96,6 +106,8 @@
// from our drag source
gtk_signal_connect(GTK_OBJECT(mHiddenWidget), "drag_data_get",
GTK_SIGNAL_FUNC(invisibleSourceDragDataGet), this);
+ gtk_signal_connect(GTK_OBJECT(mHiddenWidget), "drag_begin",
+ GTK_SIGNAL_FUNC(invisibleSourceDragBegin), this);
gtk_signal_connect(GTK_OBJECT(mHiddenWidget), "drag_end",
GTK_SIGNAL_FUNC(invisibleSourceDragEnd), this);
@@ -989,6 +1001,21 @@
id %ld\n", urlTarget->target, urlAtom));
targetArray.AppendElement(urlTarget);
}
+ // XdndDirectSave
+ if (strcmp(flavorStr, kFilePromiseMime) == 0) {
+ // get the atom for the unicode string
+ GdkAtom directsaveAtom =
+ gdk_atom_intern(gDirectSaveType, FALSE);
+ GtkTargetEntry *directsaveTarget =
+ (GtkTargetEntry *)g_malloc(sizeof(GtkTargetEntry));
+ directsaveTarget->target = g_strdup(gDirectSaveType);
+ directsaveTarget->flags = 0;
+ directsaveTarget->info = GPOINTER_TO_UINT(directsaveAtom);
+ PR_LOG(sDragLm, PR_LOG_DEBUG,
+ ("automatically adding target %s with \
+ id %ld\n", directsaveTarget->target, directsaveAtom));
+ targetArray.AppendElement(directsaveTarget);
+ }
}
} // foreach flavor in item
} // if valid flavor list
@@ -1024,6 +1051,52 @@
}
void
+nsDragService::SourceBeginDrag(GdkDragContext *context)
+{
+ nsCOMPtr<nsISupports> genericItem;
+ mSourceDataItems->GetElementAt(0, getter_AddRefs(genericItem));
+ nsCOMPtr<nsITransferable> transferable(do_QueryInterface(genericItem));
+
+ nsresult rv;
+ nsCOMPtr<nsISupportsArray> flavorList;
+ rv = transferable->FlavorsTransferableCanImport(getter_AddRefs(flavorList));
+ NS_ENSURE_SUCCESS(rv,);
+
+ PRUint32 cnt;
+ flavorList->Count(&cnt);
+
+ for (PRUint32 i = 0; i < cnt; ++i) {
+ nsCOMPtr<nsISupports> genericWrapper;
+ flavorList->GetElementAt(i, getter_AddRefs(genericWrapper));
+ nsCOMPtr<nsISupportsCString> currentFlavor(do_QueryInterface(genericWrapper, &rv));
+ NS_ENSURE_SUCCESS(rv,);
+
+ nsXPIDLCString flavorStr;
+ currentFlavor->ToString(getter_Copies(flavorStr));
+ if (strcmp(flavorStr, kFilePromiseDestFilename) == 0) {
+ PRUint32 dataSize = 0;
+ nsCOMPtr<nsISupports> tmp;
+ transferable->GetTransferData(kFilePromiseDestFilename,
+ getter_AddRefs(tmp), &dataSize);
+ nsCOMPtr<nsISupportsString> fileName = do_QueryInterface(tmp, &rv);
+ NS_ENSURE_SUCCESS(rv,);
+
+ nsAutoString filenameStr;
+ fileName->GetData(filenameStr);
+
+ nsCString filenameCStr;
+ CopyUTF16toUTF8(filenameStr, filenameCStr);
+
+ gdk_property_change(context->source_window,
+ XDS_ATOM, TEXT_ATOM,
+ 8, GDK_PROP_MODE_REPLACE,
+ (guchar *)filenameCStr.get(),
+ filenameCStr.Length());
+ }
+ }
+}
+
+void
nsDragService::SourceEndDrag(void)
{
// this just releases the list of data items that we provide
@@ -1106,6 +1179,8 @@
guint32 aTime)
{
PR_LOG(sDragLm, PR_LOG_DEBUG, ("nsDragService::SourceDataGet"));
+ nsresult rv;
+
GdkAtom atom = (GdkAtom)aInfo;
nsXPIDLCString mimeFlavor;
gchar *typeName = 0;
@@ -1134,6 +1209,7 @@
// we can convert it.
PRBool needToDoConversionToPlainText = PR_FALSE;
const char* actualFlavor = mimeFlavor;
+printf("%s\n", actualFlavor);
if (strcmp(mimeFlavor,kTextMime) == 0) {
actualFlavor = kUnicodeMime;
needToDoConversionToPlainText = PR_TRUE;
@@ -1150,16 +1226,60 @@
actualFlavor = gTextUriListType;
needToDoConversionToPlainText = PR_TRUE;
}
+ else if (strcmp(mimeFlavor, gTextUriListType) == 0) {
+ actualFlavor = gTextUriListType;
+ needToDoConversionToPlainText = PR_TRUE;
+ }
+ else if (strcmp(mimeFlavor, gDirectSaveType) == 0) {
+ guchar *propText;
+ gint propLen;
+
+ if (!gdk_property_get(aContext->source_window,
+ XDS_ATOM, TEXT_ATOM,
+ 0, MAX_XDS_ATOM_VAL_LEN,
+ FALSE, NULL, NULL, &propLen,
+ (unsigned char **)&propText))
+ return;
+
+ /* Zero-terminate the string */
+ propText = (guchar *)g_realloc(propText, propLen + 1);
+ propText[propLen] = '\0';
+
+ char *fullpath;
+ fullpath = g_filename_from_uri((gchar *)propText, NULL, NULL);
+ if (!fullpath)
+ return;
+
+ nsCOMPtr<nsILocalFile> file;
+ rv = NS_NewNativeLocalFile(nsDependentCString(fullpath),
+ PR_FALSE, getter_AddRefs(file));
+ NS_ENSURE_SUCCESS(rv,);
+
+ item->SetTransferData(kFilePromiseFullpathMime, file,
+ sizeof(nsILocalFile*));
+
+ actualFlavor = kFilePromiseMime;
+
+ g_free(fullpath);
+ }
else
actualFlavor = mimeFlavor;
PRUint32 tmpDataLen = 0;
void *tmpData = NULL;
- nsresult rv;
nsCOMPtr<nsISupports> data;
rv = item->GetTransferData(actualFlavor,
getter_AddRefs(data),
&tmpDataLen);
+
+ if (strcmp(actualFlavor, kFilePromiseMime) == 0) {
+ const char *result = NS_SUCCEEDED(rv) ? "S" : "F";
+ gtk_selection_data_set(aSelectionData,
+ aSelectionData->target,
+ 8, (guchar *)result, 1);
+ return;
+ }
+
if (NS_SUCCEEDED(rv)) {
nsPrimitiveHelpers::CreateDataFromPrimitive (actualFlavor, data,
&tmpData, tmpDataLen);
@@ -1224,6 +1344,18 @@
/* static */
void
+invisibleSourceDragBegin(GtkWidget *aWidget,
+ GdkDragContext *aContext,
+ gpointer aData)
+{
+ PR_LOG(sDragLm, PR_LOG_DEBUG, ("invisibleDragBegin"));
+ nsDragService *dragService = (nsDragService *)aData;
+ // The drag has ended. Release the hostages!
+ dragService->SourceBeginDrag(aContext);
+}
+
+/* static */
+void
invisibleSourceDragEnd(GtkWidget *aWidget,
GdkDragContext *aContext,
gpointer aData)
Index: widget/src/gtk2/nsDragService.h
===================================================================
RCS file: /cvsroot/mozilla/widget/src/gtk2/nsDragService.h,v
retrieving revision 1.4
diff -u -r1.4 nsDragService.h
--- widget/src/gtk2/nsDragService.h 12 Apr 2007 04:37:40 -0000 1.4
+++ widget/src/gtk2/nsDragService.h 16 Sep 2007 20:12:26 -0000
@@ -101,6 +101,7 @@
// This is called when the drag started with the invisible widget
// finishes. It's called from within the drag service code but from
// a callback - it needs to be public.
+ void SourceBeginDrag(GdkDragContext *context);
void SourceEndDrag(void);
void SourceDataGet(GtkWidget *widget,
GdkDragContext *context,
- Previous message (by thread): rpms/lapack/EL-5 dead.package, NONE, 1.1 Makefile, 1.1, NONE Makefile.blas, 1.5, NONE Makefile.lapack, 1.4, NONE blas-bz143340.patch, 1.3, NONE blasqr.ps, 1.1, NONE branch, 1.1, NONE lapack-20010525.patch, 1.1, NONE lapack-3.1.0-make.inc.patch, 1.1, NONE lapack-3.1.0-no-external-etime.patch, 1.1, NONE lapack-3.1.1-make.inc.patch, 1.1, NONE lapack-fixlwork.patch, 1.1, NONE lapack.spec, 1.17, NONE lapackqref.ps, 1.1, NONE sources, 1.5, NONE
- Next message (by thread): rpms/ipe/F-7 ipe-6.0pre28-patch1.patch,NONE,1.1 ipe.spec,1.13,1.14
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
More information about the fedora-extras-commits
mailing list