Annotation of /trunk/kdelibs/patches/kdelibs-3.5.7-xinerama-improvements.patch
Parent Directory | Revision Log
Revision 221 -
(hide annotations)
(download)
Sun Jun 10 22:41:45 2007 UTC (17 years, 3 months ago) by niro
File size: 20172 byte(s)
Sun Jun 10 22:41:45 2007 UTC (17 years, 3 months ago) by niro
File size: 20172 byte(s)
-rediff against 3.5.7
1 | niro | 221 | 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 = 83; | ||
143 | +static const int netAtomCount = 84; | ||
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 | }; | ||
199 | |||
200 | /** | ||
201 | Only in kdelibs-3.5.7/kdecore: netwm_def.h.orig | ||
202 | diff -ru kdelibs-3.5.7.orig/kio/kio/krun.cpp kdelibs-3.5.7/kio/kio/krun.cpp | ||
203 | --- kdelibs-3.5.7.orig/kio/kio/krun.cpp 2007-05-15 08:57:52.000000000 +0200 | ||
204 | +++ kdelibs-3.5.7/kio/kio/krun.cpp 2007-05-15 08:58:27.000000000 +0200 | ||
205 | @@ -77,6 +77,7 @@ | ||
206 | QString m_localPath; | ||
207 | QString m_suggestedFileName; | ||
208 | QGuardedPtr <QWidget> m_window; | ||
209 | + QCString m_asn; | ||
210 | }; | ||
211 | |||
212 | pid_t KRun::runURL( const KURL& u, const QString& _mimetype ) | ||
213 | @@ -109,14 +110,20 @@ | ||
214 | return false; | ||
215 | } | ||
216 | |||
217 | -// This is called by foundMimeType, since it knows the mimetype of the URL | ||
218 | pid_t KRun::runURL( const KURL& u, const QString& _mimetype, bool tempFile, bool runExecutables, const QString& suggestedFileName ) | ||
219 | { | ||
220 | + return runURL( u, _mimetype, NULL, "", tempFile, runExecutables, suggestedFileName ); | ||
221 | +} | ||
222 | + | ||
223 | +// This is called by foundMimeType, since it knows the mimetype of the URL | ||
224 | +pid_t KRun::runURL( const KURL& u, const QString& _mimetype, QWidget* window, const QCString& asn, | ||
225 | + bool tempFile, bool runExecutables, const QString& suggestedFileName ) | ||
226 | +{ | ||
227 | bool noRun = false; | ||
228 | bool noAuth = false; | ||
229 | if ( _mimetype == "inode/directory-locked" ) | ||
230 | { | ||
231 | - KMessageBoxWrapper::error( 0L, | ||
232 | + KMessageBoxWrapper::error( window, | ||
233 | i18n("<qt>Unable to enter <b>%1</b>.\nYou do not have access rights to this location.</qt>").arg(u.htmlURL()) ); | ||
234 | return 0; | ||
235 | } | ||
236 | @@ -133,7 +140,7 @@ | ||
237 | { | ||
238 | QString path = u.path(); | ||
239 | shellQuote( path ); | ||
240 | - return (KRun::runCommand(path)); // just execute the url as a command | ||
241 | + return (KRun::runCommand(path, QString::null, QString::null, window, asn)); // just execute the url as a command | ||
242 | // ## TODO implement deleting the file if tempFile==true | ||
243 | } | ||
244 | else | ||
245 | @@ -155,14 +162,14 @@ | ||
246 | |||
247 | if ( noRun ) | ||
248 | { | ||
249 | - KMessageBox::sorry( 0L, | ||
250 | + KMessageBox::sorry( window, | ||
251 | i18n("<qt>The file <b>%1</b> is an executable program. " | ||
252 | "For safety it will not be started.</qt>").arg(u.htmlURL())); | ||
253 | return 0; | ||
254 | } | ||
255 | if ( noAuth ) | ||
256 | { | ||
257 | - KMessageBoxWrapper::error( 0L, | ||
258 | + KMessageBoxWrapper::error( window, | ||
259 | i18n("<qt>You do not have permission to run <b>%1</b>.</qt>").arg(u.htmlURL()) ); | ||
260 | return 0; | ||
261 | } | ||
262 | @@ -182,7 +189,7 @@ | ||
263 | return displayOpenWithDialog( lst, tempFile, suggestedFileName ); | ||
264 | } | ||
265 | |||
266 | - return KRun::run( *offer, lst, 0 /*window*/, tempFile, suggestedFileName ); | ||
267 | + return KRun::run( *offer, lst, window, asn, tempFile, suggestedFileName ); | ||
268 | } | ||
269 | |||
270 | bool KRun::displayOpenWithDialog( const KURL::List& lst ) | ||
271 | @@ -536,13 +543,13 @@ | ||
272 | } | ||
273 | |||
274 | static pid_t runCommandInternal( KProcess* proc, const KService* service, const QString& binName, | ||
275 | - const QString &execName, const QString & iconName ) | ||
276 | + const QString &execName, const QString & iconName, QWidget* window, QCString asn ) | ||
277 | { | ||
278 | if (service && !service->desktopEntryPath().isEmpty() | ||
279 | && !KDesktopFile::isAuthorizedDesktopFile( service->desktopEntryPath() )) | ||
280 | { | ||
281 | kdWarning() << "No authorization to execute " << service->desktopEntryPath() << endl; | ||
282 | - KMessageBox::sorry(0, i18n("You are not authorized to execute this file.")); | ||
283 | + KMessageBox::sorry(window, i18n("You are not authorized to execute this file.")); | ||
284 | return 0; | ||
285 | } | ||
286 | QString bin = KRun::binaryName( binName, true ); | ||
287 | @@ -550,10 +557,10 @@ | ||
288 | bool silent; | ||
289 | QCString wmclass; | ||
290 | KStartupInfoId id; | ||
291 | - bool startup_notify = KRun::checkStartupNotify( binName, service, &silent, &wmclass ); | ||
292 | + bool startup_notify = ( asn != "0" && KRun::checkStartupNotify( binName, service, &silent, &wmclass )); | ||
293 | if( startup_notify ) | ||
294 | { | ||
295 | - id.initId(); | ||
296 | + id.initId( asn ); | ||
297 | id.setupStartupEnv(); | ||
298 | KStartupInfoData data; | ||
299 | data.setHostname(); | ||
300 | @@ -572,6 +579,8 @@ | ||
301 | if( silent ) | ||
302 | data.setSilent( KStartupInfoData::Yes ); | ||
303 | data.setDesktop( KWin::currentDesktop()); | ||
304 | + if( window ) | ||
305 | + data.setLaunchedBy( window->winId()); | ||
306 | KStartupInfo::sendStartup( id, data ); | ||
307 | } | ||
308 | pid_t pid = KProcessRunner::run( proc, binName, id ); | ||
309 | @@ -629,7 +638,8 @@ | ||
310 | return true; | ||
311 | } | ||
312 | |||
313 | -static pid_t runTempService( const KService& _service, const KURL::List& _urls, bool tempFiles, const QString& suggestedFileName ) | ||
314 | +static pid_t runTempService( const KService& _service, const KURL::List& _urls, QWidget* window, | ||
315 | + const QCString& asn, bool tempFiles, const QString& suggestedFileName ) | ||
316 | { | ||
317 | if (!_urls.isEmpty()) { | ||
318 | kdDebug(7010) << "runTempService: first url " << _urls.first().url() << endl; | ||
319 | @@ -648,7 +658,7 @@ | ||
320 | { | ||
321 | KURL::List singleUrl; | ||
322 | singleUrl.append(*it); | ||
323 | - runTempService( _service, singleUrl, tempFiles, suggestedFileName ); | ||
324 | + runTempService( _service, singleUrl, window, "", tempFiles, suggestedFileName ); | ||
325 | } | ||
326 | KURL::List singleUrl; | ||
327 | singleUrl.append(_urls.first()); | ||
328 | @@ -667,7 +677,7 @@ | ||
329 | proc->setWorkingDirectory(_service.path()); | ||
330 | |||
331 | return runCommandInternal( proc, &_service, KRun::binaryName( _service.exec(), false ), | ||
332 | - _service.name(), _service.icon() ); | ||
333 | + _service.name(), _service.icon(), window, asn ); | ||
334 | } | ||
335 | |||
336 | // WARNING: don't call this from processDesktopExec, since klauncher uses that too... | ||
337 | @@ -728,11 +738,22 @@ | ||
338 | |||
339 | pid_t KRun::run( const KService& _service, const KURL::List& _urls, QWidget* window, bool tempFiles ) | ||
340 | { | ||
341 | - return run( _service, _urls, window, tempFiles, QString::null ); | ||
342 | + return run( _service, _urls, window, "", tempFiles, QString::null ); | ||
343 | +} | ||
344 | + | ||
345 | +pid_t KRun::run( const KService& _service, const KURL::List& _urls, QWidget* window, const QCString& asn, bool tempFiles ) | ||
346 | +{ | ||
347 | + return run( _service, _urls, window, asn, tempFiles, QString::null ); | ||
348 | } | ||
349 | |||
350 | pid_t KRun::run( const KService& _service, const KURL::List& _urls, QWidget* window, bool tempFiles, const QString& suggestedFileName ) | ||
351 | { | ||
352 | + return run( _service, _urls, window, "", tempFiles, suggestedFileName ); | ||
353 | +} | ||
354 | + | ||
355 | +pid_t KRun::run( const KService& _service, const KURL::List& _urls, QWidget* window, const QCString& asn, | ||
356 | + bool tempFiles, const QString& suggestedFileName ) | ||
357 | +{ | ||
358 | if (!_service.desktopEntryPath().isEmpty() && | ||
359 | !KDesktopFile::isAuthorizedDesktopFile( _service.desktopEntryPath())) | ||
360 | { | ||
361 | @@ -753,7 +774,7 @@ | ||
362 | |||
363 | if ( tempFiles || _service.desktopEntryPath().isEmpty() || !suggestedFileName.isEmpty() ) | ||
364 | { | ||
365 | - return runTempService(_service, _urls, tempFiles, suggestedFileName); | ||
366 | + return runTempService(_service, _urls, window, asn, tempFiles, suggestedFileName); | ||
367 | } | ||
368 | |||
369 | kdDebug(7010) << "KRun::run " << _service.desktopEntryPath() << endl; | ||
370 | @@ -767,9 +788,25 @@ | ||
371 | |||
372 | QString error; | ||
373 | int pid = 0; | ||
374 | - | ||
375 | + | ||
376 | + QCString myasn = asn; | ||
377 | + // startServiceByDesktopPath() doesn't take QWidget*, add it to the startup info now | ||
378 | + if( window != NULL ) | ||
379 | + { | ||
380 | + if( myasn.isEmpty()) | ||
381 | + myasn = KStartupInfo::createNewStartupId(); | ||
382 | + if( myasn != "0" ) | ||
383 | + { | ||
384 | + KStartupInfoId id; | ||
385 | + id.initId( myasn ); | ||
386 | + KStartupInfoData data; | ||
387 | + data.setLaunchedBy( window->winId()); | ||
388 | + KStartupInfo::sendChange( id, data ); | ||
389 | + } | ||
390 | + } | ||
391 | + | ||
392 | int i = KApplication::startServiceByDesktopPath( | ||
393 | - _service.desktopEntryPath(), urls.toStringList(), &error, 0L, &pid | ||
394 | + _service.desktopEntryPath(), urls.toStringList(), &error, 0L, &pid, myasn | ||
395 | ); | ||
396 | |||
397 | if (i != 0) | ||
398 | @@ -794,33 +831,47 @@ | ||
399 | |||
400 | pid_t KRun::runCommand( QString cmd ) | ||
401 | { | ||
402 | - return KRun::runCommand( cmd, QString::null, QString::null ); | ||
403 | + return KRun::runCommand( cmd, QString::null, QString::null, NULL, "" ); | ||
404 | } | ||
405 | |||
406 | pid_t KRun::runCommand( const QString& cmd, const QString &execName, const QString & iconName ) | ||
407 | { | ||
408 | + return KRun::runCommand( cmd, execName, iconName, NULL, "" ); | ||
409 | +} | ||
410 | + | ||
411 | +pid_t KRun::runCommand( const QString& cmd, const QString &execName, const QString & iconName, | ||
412 | + QWidget* window, const QCString& asn ) | ||
413 | +{ | ||
414 | kdDebug(7010) << "runCommand " << cmd << "," << execName << endl; | ||
415 | KProcess * proc = new KProcess; | ||
416 | proc->setUseShell(true); | ||
417 | *proc << cmd; | ||
418 | KService::Ptr service = KService::serviceByDesktopName( binaryName( execName, true ) ); | ||
419 | - return runCommandInternal( proc, service.data(), binaryName( execName, false ), execName, iconName ); | ||
420 | + return runCommandInternal( proc, service.data(), binaryName( execName, false ), execName, iconName, | ||
421 | + window, asn ); | ||
422 | } | ||
423 | |||
424 | KRun::KRun( const KURL& url, mode_t mode, bool isLocalFile, bool showProgressInfo ) | ||
425 | :m_timer(0,"KRun::timer") | ||
426 | { | ||
427 | - init (url, 0, mode, isLocalFile, showProgressInfo); | ||
428 | + init (url, 0, "", mode, isLocalFile, showProgressInfo); | ||
429 | } | ||
430 | |||
431 | KRun::KRun( const KURL& url, QWidget* window, mode_t mode, bool isLocalFile, | ||
432 | bool showProgressInfo ) | ||
433 | :m_timer(0,"KRun::timer") | ||
434 | { | ||
435 | - init (url, window, mode, isLocalFile, showProgressInfo); | ||
436 | + init (url, window, "", mode, isLocalFile, showProgressInfo); | ||
437 | +} | ||
438 | + | ||
439 | +KRun::KRun( const KURL& url, QWidget* window, const QCString& asn, mode_t mode, bool isLocalFile, | ||
440 | + bool showProgressInfo ) | ||
441 | + :m_timer(0,"KRun::timer") | ||
442 | +{ | ||
443 | + init (url, window, asn, mode, isLocalFile, showProgressInfo); | ||
444 | } | ||
445 | |||
446 | -void KRun::init ( const KURL& url, QWidget* window, mode_t mode, bool isLocalFile, | ||
447 | +void KRun::init ( const KURL& url, QWidget* window, const QCString& asn, mode_t mode, bool isLocalFile, | ||
448 | bool showProgressInfo ) | ||
449 | { | ||
450 | m_bFault = false; | ||
451 | @@ -836,6 +887,7 @@ | ||
452 | d = new KRunPrivate; | ||
453 | d->m_runExecutables = true; | ||
454 | d->m_window = window; | ||
455 | + d->m_asn = asn; | ||
456 | setEnableExternalBrowser(true); | ||
457 | |||
458 | // Start the timer. This means we will return to the event | ||
459 | @@ -936,7 +988,7 @@ | ||
460 | KService::Ptr service = KService::serviceByStorageId( exec ); | ||
461 | if (service) | ||
462 | { | ||
463 | - run( *service, urls ); | ||
464 | + run( *service, urls, d->m_window, d->m_asn ); | ||
465 | ok = true; | ||
466 | } | ||
467 | } | ||
468 | @@ -1229,7 +1281,7 @@ | ||
469 | { | ||
470 | KURL::List lst; | ||
471 | lst.append( m_strURL ); | ||
472 | - m_bFinished = KRun::run( *serv, lst ); | ||
473 | + m_bFinished = KRun::run( *serv, lst, d->m_window, d->m_asn ); | ||
474 | /// Note: the line above means that if that service failed, we'll | ||
475 | /// go to runURL to maybe find another service, even though a dialog | ||
476 | /// box was displayed. That's good if runURL tries another service, | ||
477 | @@ -1244,7 +1296,7 @@ | ||
478 | m_strURL.setPath( d->m_localPath ); | ||
479 | } | ||
480 | |||
481 | - if (!m_bFinished && KRun::runURL( m_strURL, type, false, d->m_runExecutables, d->m_suggestedFileName )){ | ||
482 | + if (!m_bFinished && KRun::runURL( m_strURL, type, d->m_window, d->m_asn, false, d->m_runExecutables, d->m_suggestedFileName )){ | ||
483 | m_bFinished = true; | ||
484 | } | ||
485 | else{ | ||
486 | diff -ru kdelibs-3.5.7.orig/kio/kio/krun.h kdelibs-3.5.7/kio/kio/krun.h | ||
487 | --- kdelibs-3.5.7.orig/kio/kio/krun.h 2007-05-15 08:57:52.000000000 +0200 | ||
488 | +++ kdelibs-3.5.7/kio/kio/krun.h 2007-05-15 08:58:27.000000000 +0200 | ||
489 | @@ -111,6 +111,8 @@ | ||
490 | */ | ||
491 | KRun( const KURL& url, QWidget* window, mode_t mode = 0, | ||
492 | bool isLocalFile = false, bool showProgressInfo = true ); | ||
493 | + KRun( const KURL& url, QWidget* window, const QCString& asn, mode_t mode = 0, | ||
494 | + bool isLocalFile = false, bool showProgressInfo = true ); | ||
495 | |||
496 | /** | ||
497 | * Destructor. Don't call it yourself, since a KRun object auto-deletes | ||
498 | @@ -210,6 +212,8 @@ | ||
499 | * @since 3.5.2 | ||
500 | */ | ||
501 | static pid_t run( const KService& _service, const KURL::List& _urls, QWidget* window, bool tempFiles = false ); | ||
502 | + static pid_t run( const KService& _service, const KURL::List& _urls, QWidget* window, | ||
503 | + const QCString& asn, bool tempFiles = false ); | ||
504 | /** | ||
505 | * Open a list of URLs with a certain service (application). | ||
506 | * | ||
507 | @@ -226,6 +230,8 @@ | ||
508 | /// @since 3.5.3 | ||
509 | /// @internal | ||
510 | static pid_t run( const KService& _service, const KURL::List& _urls, QWidget* window, bool tempFiles, const QString& suggestedFileName ); | ||
511 | + static pid_t run( const KService& _service, const KURL::List& _urls, QWidget* window, | ||
512 | + const QCString& asn, bool tempFiles, const QString& suggestedFileName ); | ||
513 | |||
514 | /** | ||
515 | * Open a list of URLs with. | ||
516 | @@ -269,6 +275,7 @@ | ||
517 | static pid_t runURL( const KURL& _url, const QString& _mimetype ); | ||
518 | /// @since 3.5.3 | ||
519 | /// @internal | ||
520 | + static pid_t runURL( const KURL& _url, const QString& _mimetype, QWidget* window, const QCString& asn, bool tempFile, bool runExecutables, const QString& suggestedFileName ); | ||
521 | static pid_t runURL( const KURL& _url, const QString& _mimetype, bool tempFile, bool runExecutables, const QString& suggestedFileName ); | ||
522 | |||
523 | /** | ||
524 | @@ -299,6 +306,8 @@ | ||
525 | * of running command) if command was unsafe for map notification. | ||
526 | */ | ||
527 | static pid_t runCommand( const QString& cmd, const QString & execName, const QString & icon ); | ||
528 | + static pid_t runCommand( const QString& cmd, const QString & execName, const QString & icon, | ||
529 | + QWidget* window, const QCString& asn ); | ||
530 | |||
531 | /** | ||
532 | * Display the Open-With dialog for those URLs, and run the chosen application. | ||
533 | @@ -438,7 +447,7 @@ | ||
534 | virtual void virtual_hook( int id, void* data ); | ||
535 | |||
536 | private: | ||
537 | - void init (const KURL& url, QWidget* window, mode_t mode, | ||
538 | + void init (const KURL& url, QWidget* window, const QCString& asn, mode_t mode, | ||
539 | bool isLocalFile, bool showProgressInfo); | ||
540 | private: | ||
541 | class KRunPrivate; |