Skip to content

Commit 994b9c6

Browse files
committed
Added check to ensure we are in lighttable view prior to callling darktable.register_lib. If darktable was invoked in single image (darkroom) mode, then an event handler is registered to detect the change from darkroom mode to lighttable mode so that we can then call darktable.register_lib.
1 parent d05536b commit 994b9c6

File tree

1 file changed

+46
-20
lines changed

1 file changed

+46
-20
lines changed

contrib/quicktag.lua

Lines changed: 46 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,12 @@ local dt = require "darktable"
4747
local du = require "lib/dtutils"
4848
local debug = require "darktable.debug"
4949

50+
local qt = {}
51+
qt.module_installed = false
52+
qt.event_registered = false
53+
qt.widget_table = {}
54+
55+
5056

5157
local gettext = dt.gettext
5258

@@ -177,6 +183,27 @@ local function update_quicktag_list()
177183
end
178184
end
179185

186+
local function install_module()
187+
if not qt.module_installed then
188+
dt.register_lib(
189+
"quicktag", -- Module name
190+
"quicktag", -- name
191+
true, -- expandable
192+
false, -- resetable
193+
{[dt.gui.views.lighttable] = {"DT_UI_CONTAINER_PANEL_RIGHT_CENTER", 490}},
194+
195+
dt.new_widget("box"){
196+
orientation = "vertical",
197+
table.unpack(qt.widget_table),
198+
199+
},
200+
nil,-- view_enter
201+
nil -- view_leave
202+
)
203+
qt.module_installed = true
204+
end
205+
end
206+
180207
update_quicktag_list()
181208

182209
local new_quicktag = dt.new_widget("entry"){
@@ -213,33 +240,32 @@ local new_qt_widget = dt.new_widget ("box") {
213240

214241
-- back UI elements in a table
215242
-- thanks to wpferguson for the hint
216-
local widget_table = {}
217243

218244
for i=1,qnr do
219-
widget_table[#widget_table + 1] = button[i]
245+
qt.widget_table[#qt.widget_table + 1] = button[i]
220246
end
221247

222-
widget_table[#widget_table + 1] = dt.new_widget("separator"){}
223-
widget_table[#widget_table + 1] = old_quicktag
224-
widget_table[#widget_table + 1] = new_qt_widget
248+
qt.widget_table[#qt.widget_table + 1] = dt.new_widget("separator"){}
249+
qt.widget_table[#qt.widget_table + 1] = old_quicktag
250+
qt.widget_table[#qt.widget_table + 1] = new_qt_widget
225251

226252

227253
--create module
228-
dt.register_lib(
229-
"quicktag", -- Module name
230-
"quicktag", -- name
231-
true, -- expandable
232-
false, -- resetable
233-
{[dt.gui.views.lighttable] = {"DT_UI_CONTAINER_PANEL_RIGHT_CENTER", 490}},
234-
235-
dt.new_widget("box"){
236-
orientation = "vertical",
237-
table.unpack(widget_table),
238-
239-
},
240-
nil,-- view_enter
241-
nil -- view_leave
242-
)
254+
if dt.gui.current_view().name == "lighttable" then
255+
install_module()
256+
else
257+
if not qt.event_registered then
258+
dt.register_event(
259+
"view-changed",
260+
function(event, old_view, new_view)
261+
if new_view.name == "lighttable" and old_view.name == "darkroom" then
262+
install_module()
263+
end
264+
end
265+
)
266+
qt.event_registered = true
267+
end
268+
end
243269

244270
-- create shortcuts
245271
for i=1,qnr do

0 commit comments

Comments
 (0)