Annotation of /trunk/kdelibs/patches/kdelibs-3.5.8-xinerama-improvements.patch
Parent Directory | Revision Log
Revision 391 -
(hide annotations)
(download)
Sat Nov 3 12:50:46 2007 UTC (16 years, 7 months ago) by niro
File size: 20231 byte(s)
Sat Nov 3 12:50:46 2007 UTC (16 years, 7 months ago) by niro
File size: 20231 byte(s)
-ver bump to 3.5.8-r1
1 | niro | 391 | diff -ru kdelibs-3.5.7.orig/kdecore/kstartupinfo.cpp kdelibs-3.5.7/kdecore/kstartupinfo.cpp |
2 | --- kdelibs-3.5.7.orig/kdecore/kstartupinfo.cpp 2007-05-15 08:57:52.000000000 +0200 | ||
3 | +++ kdelibs-3.5.7/kdecore/kstartupinfo.cpp 2007-05-15 08:58:27.000000000 +0200 | ||
4 | @@ -1105,7 +1105,7 @@ | ||
5 | struct KStartupInfoDataPrivate | ||
6 | { | ||
7 | KStartupInfoDataPrivate() : desktop( 0 ), wmclass( "" ), hostname( "" ), | ||
8 | - silent( KStartupInfoData::Unknown ), timestamp( -1U ), screen( -1 ) {} | ||
9 | + silent( KStartupInfoData::Unknown ), timestamp( -1U ), screen( -1 ), xinerama( -1 ), launched_by( 0 ) {}; | ||
10 | QString bin; | ||
11 | QString name; | ||
12 | QString description; | ||
13 | @@ -1117,6 +1117,8 @@ | ||
14 | KStartupInfoData::TriState silent; | ||
15 | unsigned long timestamp; | ||
16 | int screen; | ||
17 | + int xinerama; | ||
18 | + WId launched_by; | ||
19 | }; | ||
20 | |||
21 | QString KStartupInfoData::to_text() const | ||
22 | @@ -1147,6 +1149,10 @@ | ||
23 | ret += QString::fromLatin1( " TIMESTAMP=%1" ).arg( d->timestamp ); | ||
24 | if( d->screen != -1 ) | ||
25 | ret += QString::fromLatin1( " SCREEN=%1" ).arg( d->screen ); | ||
26 | + if( d->xinerama != -1 ) | ||
27 | + ret += QString::fromLatin1( " XINERAMA=%1" ).arg( d->xinerama ); | ||
28 | + if( d->launched_by != 0 ) | ||
29 | + ret += QString::fromLatin1( " LAUNCHED_BY=%1" ).arg( d->launched_by ); | ||
30 | return ret; | ||
31 | } | ||
32 | |||
33 | @@ -1165,6 +1171,8 @@ | ||
34 | const QString silent_str = QString::fromLatin1( "SILENT=" ); | ||
35 | const QString timestamp_str = QString::fromLatin1( "TIMESTAMP=" ); | ||
36 | const QString screen_str = QString::fromLatin1( "SCREEN=" ); | ||
37 | + const QString xinerama_str = QString::fromLatin1( "XINERAMA=" ); | ||
38 | + const QString launched_by_str = QString::fromLatin1( "LAUNCHED_BY=" ); | ||
39 | for( QStringList::Iterator it = items.begin(); | ||
40 | it != items.end(); | ||
41 | ++it ) | ||
42 | @@ -1195,6 +1203,10 @@ | ||
43 | d->timestamp = get_unum( *it ); | ||
44 | else if( ( *it ).startsWith( screen_str )) | ||
45 | d->screen = get_num( *it ); | ||
46 | + else if( ( *it ).startsWith( xinerama_str )) | ||
47 | + d->xinerama = get_num( *it ); | ||
48 | + else if( ( *it ).startsWith( launched_by_str )) | ||
49 | + d->launched_by = get_num( *it ); | ||
50 | } | ||
51 | } | ||
52 | |||
53 | @@ -1238,6 +1250,10 @@ | ||
54 | d->timestamp = data_P.timestamp(); | ||
55 | if( data_P.screen() != -1 ) | ||
56 | d->screen = data_P.screen(); | ||
57 | + if( data_P.xinerama() != -1 && xinerama() != -1 ) // don't overwrite | ||
58 | + d->xinerama = data_P.xinerama(); | ||
59 | + if( data_P.launchedBy() != 0 && launchedBy() != 0 ) // don't overwrite | ||
60 | + d->launched_by = data_P.launchedBy(); | ||
61 | } | ||
62 | |||
63 | KStartupInfoData::KStartupInfoData() | ||
64 | @@ -1408,6 +1424,26 @@ | ||
65 | return d->screen; | ||
66 | } | ||
67 | |||
68 | +void KStartupInfoData::setXinerama( int xinerama ) | ||
69 | + { | ||
70 | + d->xinerama = xinerama; | ||
71 | + } | ||
72 | + | ||
73 | +int KStartupInfoData::xinerama() const | ||
74 | + { | ||
75 | + return d->xinerama; | ||
76 | + } | ||
77 | + | ||
78 | +void KStartupInfoData::setLaunchedBy( WId window ) | ||
79 | + { | ||
80 | + d->launched_by = window; | ||
81 | + } | ||
82 | + | ||
83 | +WId KStartupInfoData::launchedBy() const | ||
84 | + { | ||
85 | + return d->launched_by; | ||
86 | + } | ||
87 | + | ||
88 | static | ||
89 | long get_num( const QString& item_P ) | ||
90 | { | ||
91 | diff -ru kdelibs-3.5.7.orig/kdecore/kstartupinfo.h kdelibs-3.5.7/kdecore/kstartupinfo.h | ||
92 | --- kdelibs-3.5.7.orig/kdecore/kstartupinfo.h 2007-05-15 08:57:52.000000000 +0200 | ||
93 | +++ kdelibs-3.5.7/kdecore/kstartupinfo.h 2007-05-15 08:58:27.000000000 +0200 | ||
94 | @@ -635,6 +635,30 @@ | ||
95 | * This is usually not necessary to set, as it's set by default to qt_xscreen(). | ||
96 | */ | ||
97 | void setScreen( int screen ); | ||
98 | + | ||
99 | + /** | ||
100 | + * The Xinerama screen for the startup notification, -1 if unknown. | ||
101 | + */ | ||
102 | + int xinerama() const; | ||
103 | + | ||
104 | + /** | ||
105 | + * Sets the Xinerama screen for the startup notification ( i.e. the screeen on which | ||
106 | + * the starting application should appear ). | ||
107 | + * @param xinerama the Xinerama screen for the startup notification | ||
108 | + */ | ||
109 | + void setXinerama( int xinerama ); | ||
110 | + | ||
111 | + /** | ||
112 | + * The toplevel window of the application that caused this startup notification, | ||
113 | + * 0 if unknown. | ||
114 | + */ | ||
115 | + WId launchedBy() const; | ||
116 | + | ||
117 | + /** | ||
118 | + * Sets the toplevel window of the application that caused this startup notification. | ||
119 | + * @param window window ID of the toplevel window that is responsible for this startup | ||
120 | + */ | ||
121 | + void setLaunchedBy( WId window ); | ||
122 | |||
123 | /** | ||
124 | * Updates the notification data from the given data. Some data, such as the desktop | ||
125 | diff -ru kdelibs-3.5.7.orig/kdecore/netwm.cpp kdelibs-3.5.7/kdecore/netwm.cpp | ||
126 | --- kdelibs-3.5.7.orig/kdecore/netwm.cpp 2007-05-15 08:57:52.000000000 +0200 | ||
127 | +++ kdelibs-3.5.7/kdecore/netwm.cpp 2007-05-15 08:59:01.000000000 +0200 | ||
128 | @@ -144,6 +144,9 @@ | ||
129 | // used to determine whether application window is managed or not | ||
130 | static Atom xa_wm_state = 0; | ||
131 | |||
132 | +// ability flags | ||
133 | +static Atom net_wm_full_placement = 0; | ||
134 | + | ||
135 | static Bool netwm_atoms_created = False; | ||
136 | const unsigned long netwm_sendevent_mask = (SubstructureRedirectMask| | ||
137 | SubstructureNotifyMask); | ||
138 | @@ -235,7 +238,7 @@ | ||
139 | } | ||
140 | |||
141 | |||
142 | -static const int netAtomCount = 84; | ||
143 | +static const int netAtomCount = 85; | ||
144 | static void create_atoms(Display *d) { | ||
145 | static const char * const names[netAtomCount] = | ||
146 | { | ||
147 | @@ -328,7 +331,9 @@ | ||
148 | "_KDE_NET_WM_TEMPORARY_RULES", | ||
149 | |||
150 | "WM_STATE", | ||
151 | - "WM_PROTOCOLS" | ||
152 | + "WM_PROTOCOLS", | ||
153 | + | ||
154 | + "_NET_WM_FULL_PLACEMENT" | ||
155 | }; | ||
156 | |||
157 | Atom atoms[netAtomCount], *atomsp[netAtomCount] = | ||
158 | @@ -422,7 +427,9 @@ | ||
159 | &kde_net_wm_temporary_rules, | ||
160 | |||
161 | &xa_wm_state, | ||
162 | - &wm_protocols | ||
163 | + &wm_protocols, | ||
164 | + | ||
165 | + &net_wm_full_placement | ||
166 | }; | ||
167 | |||
168 | assert( !netwm_atoms_created ); | ||
169 | @@ -1339,6 +1346,8 @@ | ||
170 | |||
171 | if (p->properties[ PROTOCOLS2 ] & WM2KDETemporaryRules) | ||
172 | atoms[pnum++] = kde_net_wm_temporary_rules; | ||
173 | + if (p->properties[ PROTOCOLS2 ] & WM2FullPlacement) | ||
174 | + atoms[pnum++] = net_wm_full_placement; | ||
175 | |||
176 | XChangeProperty(p->display, p->root, net_supported, XA_ATOM, 32, | ||
177 | PropModeReplace, (unsigned char *) atoms, pnum); | ||
178 | @@ -1568,6 +1577,8 @@ | ||
179 | |||
180 | else if( atom == kde_net_wm_temporary_rules ) | ||
181 | p->properties[ PROTOCOLS2 ] |= WM2KDETemporaryRules; | ||
182 | + else if( atom == net_wm_full_placement ) | ||
183 | + p->properties[ PROTOCOLS2 ] |= WM2FullPlacement; | ||
184 | } | ||
185 | |||
186 | extern Time qt_x_user_time; | ||
187 | Only in kdelibs-3.5.7/kdecore: netwm.cpp.orig | ||
188 | diff -ru kdelibs-3.5.7.orig/kdecore/netwm_def.h kdelibs-3.5.7/kdecore/netwm_def.h | ||
189 | --- kdelibs-3.5.7.orig/kdecore/netwm_def.h 2007-05-15 08:57:52.000000000 +0200 | ||
190 | +++ kdelibs-3.5.7/kdecore/netwm_def.h 2007-05-15 08:58:27.000000000 +0200 | ||
191 | @@ -608,7 +608,8 @@ | ||
192 | WM2WindowClass = 1<<10, ///< @since 3.3 | ||
193 | WM2WindowRole = 1<<11, ///< @since 3.3 | ||
194 | WM2ClientMachine = 1<<12, ///< @since 3.3 | ||
195 | - WM2ShowingDesktop = 1<<13, ///< @since 3.5 | ||
196 | + WM2ShowingDesktop = 1<<13, ///< @since 3.5 | ||
197 | + WM2FullPlacement = 1<<14, | ||
198 | WM2DesktopLayout = 1<<15 ///< @since 3.5.8 | ||
199 | }; | ||
200 | |||
201 | /** | ||
202 | Only in kdelibs-3.5.7/kdecore: netwm_def.h.orig | ||
203 | diff -ru kdelibs-3.5.7.orig/kio/kio/krun.cpp kdelibs-3.5.7/kio/kio/krun.cpp | ||
204 | --- kdelibs-3.5.7.orig/kio/kio/krun.cpp 2007-05-15 08:57:52.000000000 +0200 | ||
205 | +++ kdelibs-3.5.7/kio/kio/krun.cpp 2007-05-15 08:58:27.000000000 +0200 | ||
206 | @@ -77,6 +77,7 @@ | ||
207 | QString m_localPath; | ||
208 | QString m_suggestedFileName; | ||
209 | QGuardedPtr <QWidget> m_window; | ||
210 | + QCString m_asn; | ||
211 | }; | ||
212 | |||
213 | pid_t KRun::runURL( const KURL& u, const QString& _mimetype ) | ||
214 | @@ -109,14 +110,20 @@ | ||
215 | return false; | ||
216 | } | ||
217 | |||
218 | -// This is called by foundMimeType, since it knows the mimetype of the URL | ||
219 | pid_t KRun::runURL( const KURL& u, const QString& _mimetype, bool tempFile, bool runExecutables, const QString& suggestedFileName ) | ||
220 | { | ||
221 | + return runURL( u, _mimetype, NULL, "", tempFile, runExecutables, suggestedFileName ); | ||
222 | +} | ||
223 | + | ||
224 | +// This is called by foundMimeType, since it knows the mimetype of the URL | ||
225 | +pid_t KRun::runURL( const KURL& u, const QString& _mimetype, QWidget* window, const QCString& asn, | ||
226 | + bool tempFile, bool runExecutables, const QString& suggestedFileName ) | ||
227 | +{ | ||
228 | bool noRun = false; | ||
229 | bool noAuth = false; | ||
230 | if ( _mimetype == "inode/directory-locked" ) | ||
231 | { | ||
232 | - KMessageBoxWrapper::error( 0L, | ||
233 | + KMessageBoxWrapper::error( window, | ||
234 | i18n("<qt>Unable to enter <b>%1</b>.\nYou do not have access rights to this location.</qt>").arg(u.htmlURL()) ); | ||
235 | return 0; | ||
236 | } | ||
237 | @@ -133,7 +140,7 @@ | ||
238 | { | ||
239 | QString path = u.path(); | ||
240 | shellQuote( path ); | ||
241 | - return (KRun::runCommand(path)); // just execute the url as a command | ||
242 | + return (KRun::runCommand(path, QString::null, QString::null, window, asn)); // just execute the url as a command | ||
243 | // ## TODO implement deleting the file if tempFile==true | ||
244 | } | ||
245 | else | ||
246 | @@ -155,14 +162,14 @@ | ||
247 | |||
248 | if ( noRun ) | ||
249 | { | ||
250 | - KMessageBox::sorry( 0L, | ||
251 | + KMessageBox::sorry( window, | ||
252 | i18n("<qt>The file <b>%1</b> is an executable program. " | ||
253 | "For safety it will not be started.</qt>").arg(u.htmlURL())); | ||
254 | return 0; | ||
255 | } | ||
256 | if ( noAuth ) | ||
257 | { | ||
258 | - KMessageBoxWrapper::error( 0L, | ||
259 | + KMessageBoxWrapper::error( window, | ||
260 | i18n("<qt>You do not have permission to run <b>%1</b>.</qt>").arg(u.htmlURL()) ); | ||
261 | return 0; | ||
262 | } | ||
263 | @@ -182,7 +189,7 @@ | ||
264 | return displayOpenWithDialog( lst, tempFile, suggestedFileName ); | ||
265 | } | ||
266 | |||
267 | - return KRun::run( *offer, lst, 0 /*window*/, tempFile, suggestedFileName ); | ||
268 | + return KRun::run( *offer, lst, window, asn, tempFile, suggestedFileName ); | ||
269 | } | ||
270 | |||
271 | bool KRun::displayOpenWithDialog( const KURL::List& lst ) | ||
272 | @@ -536,13 +543,13 @@ | ||
273 | } | ||
274 | |||
275 | static pid_t runCommandInternal( KProcess* proc, const KService* service, const QString& binName, | ||
276 | - const QString &execName, const QString & iconName ) | ||
277 | + const QString &execName, const QString & iconName, QWidget* window, QCString asn ) | ||
278 | { | ||
279 | if (service && !service->desktopEntryPath().isEmpty() | ||
280 | && !KDesktopFile::isAuthorizedDesktopFile( service->desktopEntryPath() )) | ||
281 | { | ||
282 | kdWarning() << "No authorization to execute " << service->desktopEntryPath() << endl; | ||
283 | - KMessageBox::sorry(0, i18n("You are not authorized to execute this file.")); | ||
284 | + KMessageBox::sorry(window, i18n("You are not authorized to execute this file.")); | ||
285 | return 0; | ||
286 | } | ||
287 | QString bin = KRun::binaryName( binName, true ); | ||
288 | @@ -550,10 +557,10 @@ | ||
289 | bool silent; | ||
290 | QCString wmclass; | ||
291 | KStartupInfoId id; | ||
292 | - bool startup_notify = KRun::checkStartupNotify( binName, service, &silent, &wmclass ); | ||
293 | + bool startup_notify = ( asn != "0" && KRun::checkStartupNotify( binName, service, &silent, &wmclass )); | ||
294 | if( startup_notify ) | ||
295 | { | ||
296 | - id.initId(); | ||
297 | + id.initId( asn ); | ||
298 | id.setupStartupEnv(); | ||
299 | KStartupInfoData data; | ||
300 | data.setHostname(); | ||
301 | @@ -572,6 +579,8 @@ | ||
302 | if( silent ) | ||
303 | data.setSilent( KStartupInfoData::Yes ); | ||
304 | data.setDesktop( KWin::currentDesktop()); | ||
305 | + if( window ) | ||
306 | + data.setLaunchedBy( window->winId()); | ||
307 | KStartupInfo::sendStartup( id, data ); | ||
308 | } | ||
309 | pid_t pid = KProcessRunner::run( proc, binName, id ); | ||
310 | @@ -629,7 +638,8 @@ | ||
311 | return true; | ||
312 | } | ||
313 | |||
314 | -static pid_t runTempService( const KService& _service, const KURL::List& _urls, bool tempFiles, const QString& suggestedFileName ) | ||
315 | +static pid_t runTempService( const KService& _service, const KURL::List& _urls, QWidget* window, | ||
316 | + const QCString& asn, bool tempFiles, const QString& suggestedFileName ) | ||
317 | { | ||
318 | if (!_urls.isEmpty()) { | ||
319 | kdDebug(7010) << "runTempService: first url " << _urls.first().url() << endl; | ||
320 | @@ -648,7 +658,7 @@ | ||
321 | { | ||
322 | KURL::List singleUrl; | ||
323 | singleUrl.append(*it); | ||
324 | - runTempService( _service, singleUrl, tempFiles, suggestedFileName ); | ||
325 | + runTempService( _service, singleUrl, window, "", tempFiles, suggestedFileName ); | ||
326 | } | ||
327 | KURL::List singleUrl; | ||
328 | singleUrl.append(_urls.first()); | ||
329 | @@ -667,7 +677,7 @@ | ||
330 | proc->setWorkingDirectory(_service.path()); | ||
331 | |||
332 | return runCommandInternal( proc, &_service, KRun::binaryName( _service.exec(), false ), | ||
333 | - _service.name(), _service.icon() ); | ||
334 | + _service.name(), _service.icon(), window, asn ); | ||
335 | } | ||
336 | |||
337 | // WARNING: don't call this from processDesktopExec, since klauncher uses that too... | ||
338 | @@ -728,11 +738,22 @@ | ||
339 | |||
340 | pid_t KRun::run( const KService& _service, const KURL::List& _urls, QWidget* window, bool tempFiles ) | ||
341 | { | ||
342 | - return run( _service, _urls, window, tempFiles, QString::null ); | ||
343 | + return run( _service, _urls, window, "", tempFiles, QString::null ); | ||
344 | +} | ||
345 | + | ||
346 | +pid_t KRun::run( const KService& _service, const KURL::List& _urls, QWidget* window, const QCString& asn, bool tempFiles ) | ||
347 | +{ | ||
348 | + return run( _service, _urls, window, asn, tempFiles, QString::null ); | ||
349 | } | ||
350 | |||
351 | pid_t KRun::run( const KService& _service, const KURL::List& _urls, QWidget* window, bool tempFiles, const QString& suggestedFileName ) | ||
352 | { | ||
353 | + return run( _service, _urls, window, "", tempFiles, suggestedFileName ); | ||
354 | +} | ||
355 | + | ||
356 | +pid_t KRun::run( const KService& _service, const KURL::List& _urls, QWidget* window, const QCString& asn, | ||
357 | + bool tempFiles, const QString& suggestedFileName ) | ||
358 | +{ | ||
359 | if (!_service.desktopEntryPath().isEmpty() && | ||
360 | !KDesktopFile::isAuthorizedDesktopFile( _service.desktopEntryPath())) | ||
361 | { | ||
362 | @@ -753,7 +774,7 @@ | ||
363 | |||
364 | if ( tempFiles || _service.desktopEntryPath().isEmpty() || !suggestedFileName.isEmpty() ) | ||
365 | { | ||
366 | - return runTempService(_service, _urls, tempFiles, suggestedFileName); | ||
367 | + return runTempService(_service, _urls, window, asn, tempFiles, suggestedFileName); | ||
368 | } | ||
369 | |||
370 | kdDebug(7010) << "KRun::run " << _service.desktopEntryPath() << endl; | ||
371 | @@ -767,9 +788,25 @@ | ||
372 | |||
373 | QString error; | ||
374 | int pid = 0; | ||
375 | - | ||
376 | + | ||
377 | + QCString myasn = asn; | ||
378 | + // startServiceByDesktopPath() doesn't take QWidget*, add it to the startup info now | ||
379 | + if( window != NULL ) | ||
380 | + { | ||
381 | + if( myasn.isEmpty()) | ||
382 | + myasn = KStartupInfo::createNewStartupId(); | ||
383 | + if( myasn != "0" ) | ||
384 | + { | ||
385 | + KStartupInfoId id; | ||
386 | + id.initId( myasn ); | ||
387 | + KStartupInfoData data; | ||
388 | + data.setLaunchedBy( window->winId()); | ||
389 | + KStartupInfo::sendChange( id, data ); | ||
390 | + } | ||
391 | + } | ||
392 | + | ||
393 | int i = KApplication::startServiceByDesktopPath( | ||
394 | - _service.desktopEntryPath(), urls.toStringList(), &error, 0L, &pid | ||
395 | + _service.desktopEntryPath(), urls.toStringList(), &error, 0L, &pid, myasn | ||
396 | ); | ||
397 | |||
398 | if (i != 0) | ||
399 | @@ -794,33 +831,47 @@ | ||
400 | |||
401 | pid_t KRun::runCommand( QString cmd ) | ||
402 | { | ||
403 | - return KRun::runCommand( cmd, QString::null, QString::null ); | ||
404 | + return KRun::runCommand( cmd, QString::null, QString::null, NULL, "" ); | ||
405 | } | ||
406 | |||
407 | pid_t KRun::runCommand( const QString& cmd, const QString &execName, const QString & iconName ) | ||
408 | { | ||
409 | + return KRun::runCommand( cmd, execName, iconName, NULL, "" ); | ||
410 | +} | ||
411 | + | ||
412 | +pid_t KRun::runCommand( const QString& cmd, const QString &execName, const QString & iconName, | ||
413 | + QWidget* window, const QCString& asn ) | ||
414 | +{ | ||
415 | kdDebug(7010) << "runCommand " << cmd << "," << execName << endl; | ||
416 | KProcess * proc = new KProcess; | ||
417 | proc->setUseShell(true); | ||
418 | *proc << cmd; | ||
419 | KService::Ptr service = KService::serviceByDesktopName( binaryName( execName, true ) ); | ||
420 | - return runCommandInternal( proc, service.data(), binaryName( execName, false ), execName, iconName ); | ||
421 | + return runCommandInternal( proc, service.data(), binaryName( execName, false ), execName, iconName, | ||
422 | + window, asn ); | ||
423 | } | ||
424 | |||
425 | KRun::KRun( const KURL& url, mode_t mode, bool isLocalFile, bool showProgressInfo ) | ||
426 | :m_timer(0,"KRun::timer") | ||
427 | { | ||
428 | - init (url, 0, mode, isLocalFile, showProgressInfo); | ||
429 | + init (url, 0, "", mode, isLocalFile, showProgressInfo); | ||
430 | } | ||
431 | |||
432 | KRun::KRun( const KURL& url, QWidget* window, mode_t mode, bool isLocalFile, | ||
433 | bool showProgressInfo ) | ||
434 | :m_timer(0,"KRun::timer") | ||
435 | { | ||
436 | - init (url, window, mode, isLocalFile, showProgressInfo); | ||
437 | + init (url, window, "", mode, isLocalFile, showProgressInfo); | ||
438 | +} | ||
439 | + | ||
440 | +KRun::KRun( const KURL& url, QWidget* window, const QCString& asn, mode_t mode, bool isLocalFile, | ||
441 | + bool showProgressInfo ) | ||
442 | + :m_timer(0,"KRun::timer") | ||
443 | +{ | ||
444 | + init (url, window, asn, mode, isLocalFile, showProgressInfo); | ||
445 | } | ||
446 | |||
447 | -void KRun::init ( const KURL& url, QWidget* window, mode_t mode, bool isLocalFile, | ||
448 | +void KRun::init ( const KURL& url, QWidget* window, const QCString& asn, mode_t mode, bool isLocalFile, | ||
449 | bool showProgressInfo ) | ||
450 | { | ||
451 | m_bFault = false; | ||
452 | @@ -836,6 +887,7 @@ | ||
453 | d = new KRunPrivate; | ||
454 | d->m_runExecutables = true; | ||
455 | d->m_window = window; | ||
456 | + d->m_asn = asn; | ||
457 | setEnableExternalBrowser(true); | ||
458 | |||
459 | // Start the timer. This means we will return to the event | ||
460 | @@ -936,7 +988,7 @@ | ||
461 | KService::Ptr service = KService::serviceByStorageId( exec ); | ||
462 | if (service) | ||
463 | { | ||
464 | - run( *service, urls ); | ||
465 | + run( *service, urls, d->m_window, d->m_asn ); | ||
466 | ok = true; | ||
467 | } | ||
468 | } | ||
469 | @@ -1229,7 +1281,7 @@ | ||
470 | { | ||
471 | KURL::List lst; | ||
472 | lst.append( m_strURL ); | ||
473 | - m_bFinished = KRun::run( *serv, lst ); | ||
474 | + m_bFinished = KRun::run( *serv, lst, d->m_window, d->m_asn ); | ||
475 | /// Note: the line above means that if that service failed, we'll | ||
476 | /// go to runURL to maybe find another service, even though a dialog | ||
477 | /// box was displayed. That's good if runURL tries another service, | ||
478 | @@ -1244,7 +1296,7 @@ | ||
479 | m_strURL.setPath( d->m_localPath ); | ||
480 | } | ||
481 | |||
482 | - if (!m_bFinished && KRun::runURL( m_strURL, type, false, d->m_runExecutables, d->m_suggestedFileName )){ | ||
483 | + if (!m_bFinished && KRun::runURL( m_strURL, type, d->m_window, d->m_asn, false, d->m_runExecutables, d->m_suggestedFileName )){ | ||
484 | m_bFinished = true; | ||
485 | } | ||
486 | else{ | ||
487 | diff -ru kdelibs-3.5.7.orig/kio/kio/krun.h kdelibs-3.5.7/kio/kio/krun.h | ||
488 | --- kdelibs-3.5.7.orig/kio/kio/krun.h 2007-05-15 08:57:52.000000000 +0200 | ||
489 | +++ kdelibs-3.5.7/kio/kio/krun.h 2007-05-15 08:58:27.000000000 +0200 | ||
490 | @@ -111,6 +111,8 @@ | ||
491 | */ | ||
492 | KRun( const KURL& url, QWidget* window, mode_t mode = 0, | ||
493 | bool isLocalFile = false, bool showProgressInfo = true ); | ||
494 | + KRun( const KURL& url, QWidget* window, const QCString& asn, mode_t mode = 0, | ||
495 | + bool isLocalFile = false, bool showProgressInfo = true ); | ||
496 | |||
497 | /** | ||
498 | * Destructor. Don't call it yourself, since a KRun object auto-deletes | ||
499 | @@ -210,6 +212,8 @@ | ||
500 | * @since 3.5.2 | ||
501 | */ | ||
502 | static pid_t run( const KService& _service, const KURL::List& _urls, QWidget* window, bool tempFiles = false ); | ||
503 | + static pid_t run( const KService& _service, const KURL::List& _urls, QWidget* window, | ||
504 | + const QCString& asn, bool tempFiles = false ); | ||
505 | /** | ||
506 | * Open a list of URLs with a certain service (application). | ||
507 | * | ||
508 | @@ -226,6 +230,8 @@ | ||
509 | /// @since 3.5.3 | ||
510 | /// @internal | ||
511 | static pid_t run( const KService& _service, const KURL::List& _urls, QWidget* window, bool tempFiles, const QString& suggestedFileName ); | ||
512 | + static pid_t run( const KService& _service, const KURL::List& _urls, QWidget* window, | ||
513 | + const QCString& asn, bool tempFiles, const QString& suggestedFileName ); | ||
514 | |||
515 | /** | ||
516 | * Open a list of URLs with. | ||
517 | @@ -269,6 +275,7 @@ | ||
518 | static pid_t runURL( const KURL& _url, const QString& _mimetype ); | ||
519 | /// @since 3.5.3 | ||
520 | /// @internal | ||
521 | + static pid_t runURL( const KURL& _url, const QString& _mimetype, QWidget* window, const QCString& asn, bool tempFile, bool runExecutables, const QString& suggestedFileName ); | ||
522 | static pid_t runURL( const KURL& _url, const QString& _mimetype, bool tempFile, bool runExecutables, const QString& suggestedFileName ); | ||
523 | |||
524 | /** | ||
525 | @@ -299,6 +306,8 @@ | ||
526 | * of running command) if command was unsafe for map notification. | ||
527 | */ | ||
528 | static pid_t runCommand( const QString& cmd, const QString & execName, const QString & icon ); | ||
529 | + static pid_t runCommand( const QString& cmd, const QString & execName, const QString & icon, | ||
530 | + QWidget* window, const QCString& asn ); | ||
531 | |||
532 | /** | ||
533 | * Display the Open-With dialog for those URLs, and run the chosen application. | ||
534 | @@ -438,7 +447,7 @@ | ||
535 | virtual void virtual_hook( int id, void* data ); | ||
536 | |||
537 | private: | ||
538 | - void init (const KURL& url, QWidget* window, mode_t mode, | ||
539 | + void init (const KURL& url, QWidget* window, const QCString& asn, mode_t mode, | ||
540 | bool isLocalFile, bool showProgressInfo); | ||
541 | private: | ||
542 | class KRunPrivate; |