Skip to content

Commit c874c36

Browse files
author
mergetest
committed
Merge PR #218: click casting — consolidate the internals and close the hover-bind gap
2 parents 517239c + ca95ea9 commit c874c36

10 files changed

Lines changed: 1552 additions & 624 deletions

File tree

CHANGELOG.md

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,21 @@
22

33
## [Unreleased]
44

5+
### Bug Fixes
6+
7+
* (Click Casting) **Fixed hover keybinds never working on frames that appear after you open the settings window** — opening the Click Casting options replaced the internal frame that owns hover bindings with a piece of the settings panel, so every frame created from then on (arena and boss frames, nameplates, frames for people joining your group) silently never got its keyboard bindings, and the automatic repair could not fix it either. A reload was the only way back. (by Krathe)
8+
* (Click Casting) Fixed keyboard binds going dead on every frame for a whole fight when combat interrupted a binding refresh — typically zoning into a raid and a pull starting seconds later. (by Krathe)
9+
* (Click Casting) Fixed hover keybinds dying for the rest of the session on some frames after visiting player housing. (by Krathe)
10+
* (Click Casting) Fixed cast-on-down silently switching itself off on Blizzard's own raid and party frames after every roster change. (by Krathe)
11+
12+
### Improvements
13+
14+
* (Click Casting) Work that has to wait for combat to end — profile switches, frame registration, binding refreshes and keyboard-bind rebuilds — now runs from a single queue that always drains, instead of ten separate flags; a keyboard-bind refresh asked for during combat was previously dropped entirely. (by Krathe)
15+
* (Click Casting) Binding-settle timers are now deduplicated so repeated events reuse one pending pass, a background rescan that re-armed itself forever now stops once its work is done, and two setup steps that gave up when combat outlasted their single retry now retry until combat ends. (by Krathe)
16+
* (Click Casting) Applying and clearing bindings now tracks exactly which click attributes were written on each frame instead of a ~500-write blanket sweep, which also fixes the previous profile's action lingering on an unmodified mouse button until reload. (by Krathe)
17+
* (Click Casting) **Removed:** the hidden per-binding "load only for these specs" field, which no settings screen could ever set and which could filter your binding list using unresolved spec data at login — per-spec click casting is unchanged via loadout-assigned profiles. (by Krathe)
18+
19+
520
## [4.8.0]
621

722
### Bug Fixes

ClickCasting/Bindings.lua

Lines changed: 387 additions & 357 deletions
Large diffs are not rendered by default.

ClickCasting/Constants.lua

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -306,7 +306,8 @@ local DEFAULT_BINDING = {
306306
alwaysCast = false,
307307
},
308308
-- Load conditions
309-
loadSpec = nil, -- nil = all specs, or table of spec IDs
309+
-- (loadSpec, the per-binding spec gate, was retired: no UI ever wrote it
310+
-- and per-spec click casting is done via loadout-assigned profiles)
310311
loadCombat = nil, -- nil = always, "combat" = in combat only, "nocombat" = out of combat only
311312
}
312313
CC.DEFAULT_BINDING = DEFAULT_BINDING
@@ -523,4 +524,25 @@ local BLIZZARD_ARENA_FRAMES = {
523524
}
524525
CC.BLIZZARD_ARENA_FRAMES = BLIZZARD_ARENA_FRAMES
525526

527+
-- Modifier prefixes whose type1/type2 attributes get blanked to "" to suppress
528+
-- Blizzard's own click-casting on a frame we have taken over
529+
-- (ClearBlizzardClickCastFromFrame), and back to nil when the frame is handed
530+
-- back (RestoreBlizzardDefaults). Shared so the two sides cannot drift: they
531+
-- must name EXACTLY the same attributes, or the suppression outlives the
532+
-- takeover and modified clicks on that frame stay dead until a reload.
533+
--
534+
-- Note the ordering. For the multi-modifier entries this is NOT WoW's canonical
535+
-- attribute order (canonical is alt-ctrl-shift-meta -- see MODIFIER_COMBOS in
536+
-- Bindings.lua), so SecureActionButtonTemplate almost certainly never looks
537+
-- those names up and they are inert. They are still written today, so the
538+
-- restore side has to name them to be sure it undoes everything. Deliberately
539+
-- not "corrected" here: making them canonical would START suppressing
540+
-- multi-modifier Blizzard click-casting that is not suppressed today, which is
541+
-- a behaviour change and not this change's business.
542+
local BLIZZARD_SUPPRESSED_MODIFIERS = {
543+
"shift-", "ctrl-", "alt-",
544+
"shift-ctrl-", "shift-alt-", "ctrl-alt-", "shift-ctrl-alt-",
545+
}
546+
CC.BLIZZARD_SUPPRESSED_MODIFIERS = BLIZZARD_SUPPRESSED_MODIFIERS
547+
526548
-- ============================================================

0 commit comments

Comments
 (0)