Skip to content

Commit 5b05b1c

Browse files
author
Chris K
committed
Support for query flag 'showdfl' to not hide a Dragonfly window.
1 parent fc9bfe8 commit 5b05b1c

File tree

3 files changed

+54
-24
lines changed

3 files changed

+54
-24
lines changed

src/build-application/build_application.js

Lines changed: 22 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,8 @@ window.app.profiles[window.app.profiles.HTTP_PROFILER].is_enabled = false;
8686

8787
window.app.build_application = function(on_services_created, on_services_enabled)
8888
{
89+
var app_ctx = {};
90+
app_ctx.messages = window.messages;
8991
var _find_compatible_version = function(version, version_list)
9092
{
9193
var
@@ -148,6 +150,14 @@ window.app.build_application = function(on_services_created, on_services_enabled
148150

149151
window.messages.clear_session_listeners();
150152

153+
var session_ctx =
154+
{
155+
messages: app_ctx.messages,
156+
helpers: app_ctx.helpers,
157+
tag_manager: app_ctx.tag_manager,
158+
show_dragonfly_window: app_ctx.show_dragonfly_window
159+
};
160+
151161
for (service_name in service_descriptions)
152162
{
153163
service = service_descriptions[service_name];
@@ -167,7 +177,10 @@ window.app.build_application = function(on_services_created, on_services_enabled
167177
// service_description is a dict of services
168178
// with name and version for each service
169179
// return false if the service shall not be enabled
170-
window.services[service_name].is_implemented = builder(service, service_descriptions);
180+
var is_implemented = builder(service,
181+
service_descriptions,
182+
session_ctx);
183+
window.services[service_name].is_implemented = is_implemented;
171184
}
172185
}
173186
}
@@ -225,8 +238,8 @@ window.app.build_application = function(on_services_created, on_services_enabled
225238
window.messages.addListener("application-setup", report_usage, true);
226239

227240
// global objects
228-
window.tagManager = window.tag_manager = new window.cls.TagManager();
229-
window.helpers = new cls.Helpers();
241+
window.tagManager = window.tag_manager = app_ctx.tag_manager = new window.cls.TagManager();
242+
window.helpers = app_ctx.helpers = new cls.Helpers();
230243

231244
// create window.services namespace and register it.
232245
cls.ServiceBase.register_services(new cls.Namespace("services"));
@@ -247,6 +260,7 @@ window.app.build_application = function(on_services_created, on_services_enabled
247260
{
248261
cls.debug.create_debug_environment(params);
249262
}
263+
app_ctx.show_dragonfly_window = Boolean(params.showdfl);
250264
var namespace = cls.Scope && cls.Scope["1.1"];
251265
namespace.Service.apply(window.services.scope.constructor.prototype);
252266
window.services.scope.is_implemented = true;
@@ -322,18 +336,14 @@ window.app.helpers.parse_url_arguments = function()
322336
supported arguments:
323337
- debug
324338
- log-filter
339+
- showdfl
325340
*/
326-
var
327-
args = location.search.slice(1).split(';'),
328-
params = {},
329-
arg = '',
330-
i = 0;
331-
332-
for( ; arg = args[i]; i++)
341+
var args = location.search.slice(1).split(/[;&]/);
342+
var params = {};
343+
for (var i = 0, arg; arg = args[i]; i++)
333344
{
334345
arg = arg.split('=');
335-
params[arg[0].replace(/^ +/, '').replace(/ +$/, '')] =
336-
arg[1] && arg[1].replace(/^ +/, '').replace(/ +$/, '') || true;
346+
params[arg[0].trim()] = arg[1] && arg[1].trim() || true;
337347
}
338348
return params;
339349
}

src/build-application/build_window_manager_2_0.js

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,15 @@ window.app.builders.WindowManager || ( window.app.builders.WindowManager = {} );
44
/**
55
* @param {Object} service the service description of the according service on the host side
66
*/
7-
window.app.builders.WindowManager["2.0"] = function(service)
7+
window.app.builders.WindowManager["2.0"] = function(service,
8+
service_descriptions,
9+
session_ctx)
810
{
911
var namespace = cls.WindowManager && cls.WindowManager["2.0"];
1012
var service_interface = window.services['window-manager'];
1113
if(service_interface)
1214
{
13-
window.window_manager_data = new namespace.WindowManagerData();
15+
window.window_manager_data = new namespace.WindowManagerData(session_ctx);
1416
window.window_manager_data.bind(service_interface);
1517
window.windowsDropDown = new namespace.WindowsDropDown();
1618
namespace.DebuggerMenu.prototype = new CstSelectWithAction();

src/window-manager/window-manager.js

Lines changed: 28 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ cls.WindowManager || (cls.WindowManager = {});
33
cls.WindowManager["2.0"] || (cls.WindowManager["2.0"] = {});
44

55

6-
cls.WindowManager["2.0"].WindowManagerData = function()
6+
cls.WindowManager["2.0"].WindowManagerData = function(session_ctx)
77
{
88

99
/* interface */
@@ -26,6 +26,8 @@ cls.WindowManager["2.0"].WindowManagerData = function()
2626
this._window_list = null;
2727
this._debug_context = 0;
2828
this._check_counter = 0;
29+
this._session_ctx = session_ctx;
30+
this._tag_man = session_ctx.tag_manager;
2931

3032
// TODO is this still ok?
3133

@@ -108,10 +110,15 @@ cls.WindowManager["2.0"].WindowManagerData = function()
108110
window.windowsDropDown.update();
109111
};
110112

111-
this._window_filter = function(win)
112-
{
113-
return win.window_type in {"normal": 1, "gadget": 1};
114-
};
113+
this._window_filter = session_ctx.show_dragonfly_window
114+
? function(win)
115+
{
116+
return win.window_type in {"normal": 1, "gadget": 1, "devtools": 1};
117+
}
118+
: function(win)
119+
{
120+
return win.window_type in {"normal": 1, "gadget": 1};
121+
};
115122

116123
this._update_list = function(win_obj)
117124
{
@@ -198,6 +205,21 @@ cls.WindowManager["2.0"].WindowManagerData = function()
198205
}
199206
}
200207

208+
this._onprofile_enabled = function(msg)
209+
{
210+
if (!this._debug_context)
211+
{
212+
if (this._session_ctx.show_dragonfly_window)
213+
{
214+
var cb = function(status, message) { window_manager.requestListWindows() };
215+
var tag = this._tag_man.set_callback(this, cb);
216+
var msg = ["replace", ["normal_hidden"]];
217+
window_manager.requestModifyTypeFilter(tag, msg);
218+
}
219+
window_manager.requestListWindows();
220+
}
221+
};
222+
201223
/* implementation */
202224

203225
this.get_active_window_id = function()
@@ -288,11 +310,7 @@ cls.WindowManager["2.0"].WindowManagerData = function()
288310
{
289311
self._remove_window(message[0]);
290312
};
291-
window.messages.addListener("profile-enabled", function()
292-
{
293-
if (!this._debug_context)
294-
window_manager.requestListWindows();
295-
});
313+
window.messages.addListener("profile-enabled", this._onprofile_enabled.bind(this));
296314
window_manager.onWindowLoaded = function(status, message)
297315
{
298316
// do nothing

0 commit comments

Comments
 (0)