diff -p -up comm-1.9.2/mozilla/widget/src/gtk2/nsDragService.cpp.gtk-settings comm-1.9.2/mozilla/widget/src/gtk2/nsDragService.cpp --- comm-1.9.2/mozilla/widget/src/gtk2/nsDragService.cpp.gtk-settings 2010-07-13 18:29:48.000000000 -0300 +++ comm-1.9.2/mozilla/widget/src/gtk2/nsDragService.cpp 2010-07-20 17:28:59.285040675 -0300 @@ -59,6 +59,8 @@ #include <gtk/gtk.h> #include <gdk/gdkx.h> #include "nsCRT.h" +#include "nsIPrefService.h" +#include "nsIPrefBranch.h" #include "gfxASurface.h" #include "gfxXlibSurface.h" @@ -110,8 +112,13 @@ nsDragService::nsDragService() { // We have to destroy the hidden widget before the event loop stops // running. + nsCOMPtr<nsIPrefService> prefs = do_GetService("@mozilla.org/preferences-service;1"); + PRInt32 dnd_threshold=-1; + PRInt32 double_click_timeout=-1; + nsCOMPtr<nsIObserverService> obsServ = do_GetService("@mozilla.org/observer-service;1"); + obsServ->AddObserver(this, "quit-application", PR_FALSE); // our hidden source widget @@ -146,6 +153,63 @@ nsDragService::nsDragService() mTargetDragDataReceived = PR_FALSE; mTargetDragData = 0; mTargetDragDataLen = 0; + + if (prefs) { + nsresult rv; + nsCOMPtr<nsIPrefBranch> prefBranch; + prefs->GetBranch(nsnull, getter_AddRefs(prefBranch)); + if (prefBranch) { + PRInt32 tmp = -1; + PRInt32 tmp1 = -1; + rv = prefBranch->GetIntPref("widget.gtk2.dnd.threshold", &tmp); + if(!NS_FAILED(rv) && tmp>0) { + dnd_threshold = tmp; + } + + rv = prefBranch->GetIntPref("widget.gtk2.double_click_timeout", &tmp); + if(!NS_FAILED(rv) && tmp>0) { + double_click_timeout = tmp; + } + } + } + + + + // MAKE gtk settings below + + GtkSettings* settings = gtk_settings_get_default(); + + /* DEBUG output */ + { + gint double_click; + g_object_get( + G_OBJECT(settings), + "gtk-double-click-time", &double_click, + NULL + ); + printf("DOUBLE-CLICK: %d --> %d ",double_click, double_click_timeout); + } + + + { + gint threshold; + g_object_get( + G_OBJECT(settings), + "gtk-dnd-drag-threshold", &threshold, + NULL + ); + printf("THRESHOLD: %d --> %d ", threshold, dnd_threshold); + } + /**/ + + + if(dnd_threshold>-1) { + gtk_settings_set_long_property(settings, "gtk-dnd-drag-threshold", dnd_threshold , "someline"); + } + + if(double_click_timeout>-1) { + gtk_settings_set_long_property(settings, "gtk-double-click-time", double_click_timeout, "someline"); + } } nsDragService::~nsDragService()