Репозиторий Sisyphus
Последнее обновление: 1 октября 2023 | Пакетов: 18631 | Посещений: 37788294
en ru br
Репозитории ALT
S:3.3.8d-alt16.1
5.1: 3.3.8b-alt7
4.1: 3.3.8b-alt2.qa1
4.0: 3.3.8b-alt0.M40.1
3.0: 3.3.4-alt6
+updates:3.3.4-alt6.3.M30
www.altlinux.org/Changes

Группа :: Система/Библиотеки
Пакет: qt3

 Главная   Изменения   Спек   Патчи   Sources   Загрузить   Gear   Bugs and FR  Repocop 

Патч: 0037-dnd-timestamp-fix.patch
Скачать


qt-bugs@ issue : 38794
bugs.kde.org number : 69519
applied: no
author: Lubos Lunak <l.lunak@kde.org>
 Hello,
 
please consider applying the attached patch. It changes XDND handling code to 
put the drop timestamp in the right field in the XdndDrop message according 
to http://www.newplanetsoftware.com/xdnd/ . I'm not quite sure why the code 
has the field moved by one, and puts 1<<24 in the flags, but I see it has a 
todo mark next to it. The last snippet of the patch changes it to match the 
XDND spec. I tested briefly with Gtk, Mozilla and OOo, and they still work 
with the patch.
The rest of the patch is for fixing part of 
http://bugs.kde.org/show_bug.cgi?id=69519, when the user drags some data to 
the desktop, and desktop in response popups a dialog asking for filename. 
Without the X user timestamp (qt-bugs@ issue 24923) being updated after the 
drop, KWin's focus stealing prevention will refuse to activate the dialog. As 
the XdndDrop message is kind of an user action too, the timestamp should be 
updated.
--- src/kernel/qdnd_x11.cpp.sav	2004-01-05 19:18:33.000000000 +0100
+++ src/kernel/qdnd_x11.cpp	2004-01-08 19:08:52.000000000 +0100
@@ -81,6 +81,7 @@ extern void qt_leave_modal( QWidget *wid
 extern Window qt_x11_findClientWindow( Window, Atom, bool );
 extern Atom qt_wm_state;
 extern Time qt_x_time;
+extern Time qt_x_user_time;
 
 // this stuff is copied from qclb_x11.cpp
 
@@ -834,6 +835,9 @@ void qt_handle_xdnd_drop( QWidget *, con
 	//       l[0], qt_xdnd_dragsource_xid );
 	return;
     }
+    
+    if( l[2] != 0 )
+        qt_x_user_time = l[2];
     if ( qt_xdnd_source_object )
 	qt_xdnd_source_object->setTarget( qt_xdnd_current_widget );
 
@@ -1366,9 +1370,9 @@ void QDragManager::drop()
     drop.format = 32;
     drop.message_type = qt_xdnd_drop;
     drop.data.l[0] = object->source()->winId();
-    drop.data.l[1] = 1 << 24; // flags
-    drop.data.l[2] = 0; // ###
-    drop.data.l[3] = qt_x_time;
+    drop.data.l[1] = 0; // flags
+    drop.data.l[2] = qt_x_time;
+    drop.data.l[3] = 0;
     drop.data.l[4] = 0;
 
     QWidget * w = QWidget::find( qt_xdnd_current_proxy_target );
 
дизайн и разработка: Vladimir Lettiev aka crux © 2004-2005, Andrew Avramenko aka liks © 2007-2008
текущий майнтейнер: Michael Shigorin