Mercurial > wow > reaction
comparison Overlay.lua @ 92:5f1d7a81317c
- Various bugfixes
- Switched action bar paging/mc fully to the _childupdate method
author | Flick <flickerstreak@gmail.com> |
---|---|
date | Fri, 17 Oct 2008 22:43:57 +0000 |
parents | 7cabc8ac6c16 |
children | 567a885cdfad |
comparison
equal
deleted
inserted
replaced
91:c2504a8b996c | 92:5f1d7a81317c |
---|---|
14 local SetAnchor = Bar.SetAnchor | 14 local SetAnchor = Bar.SetAnchor |
15 local SetButtonSize = Bar.SetButtonSize | 15 local SetButtonSize = Bar.SetButtonSize |
16 local SetButtonGrid = Bar.SetButtonGrid | 16 local SetButtonGrid = Bar.SetButtonGrid |
17 local ApplyAnchor = Bar.ApplyAnchor | 17 local ApplyAnchor = Bar.ApplyAnchor |
18 | 18 |
19 local KB = LibStub("LibKeyBound-1.0") | |
20 | |
19 ReAction:UpdateRevision("$Revision$") | 21 ReAction:UpdateRevision("$Revision$") |
20 | 22 |
21 -- | 23 -- |
22 -- Bar config overlay | 24 -- Bar config overlay |
23 -- | 25 -- |
27 SetSize( bar, f:GetWidth(), f:GetHeight() ) | 29 SetSize( bar, f:GetWidth(), f:GetHeight() ) |
28 end | 30 end |
29 | 31 |
30 local function StoreExtents(bar) | 32 local function StoreExtents(bar) |
31 local f = bar:GetFrame() | 33 local f = bar:GetFrame() |
32 SetAnchor( bar, f:GetPoint(1) ) | 34 local p, fr, rp, x, y = f:GetPoint(1) |
35 fr = fr or UIParent | |
36 SetAnchor( bar, p, fr, rp, x, y ) | |
33 SetSize( bar, f:GetWidth(), f:GetHeight() ) | 37 SetSize( bar, f:GetWidth(), f:GetHeight() ) |
34 end | 38 end |
35 | 39 |
36 local function RecomputeButtonSize(bar) | 40 local function RecomputeButtonSize(bar) |
37 local w, h = GetSize(bar) | 41 local w, h = GetSize(bar) |
265 end | 269 end |
266 | 270 |
267 local function GetClosestPointSnapped(f1, rx, ry, xOff, yOff) | 271 local function GetClosestPointSnapped(f1, rx, ry, xOff, yOff) |
268 local o, p, rp, x, y = GetClosestVisiblePoint(f1) | 272 local o, p, rp, x, y = GetClosestVisiblePoint(f1) |
269 local s = false | 273 local s = false |
274 | |
275 local insideOffsetFunc = p and insidePointOffsetFuncs[p] | |
276 local coordFunc = p and pointCoordFuncs[p] | |
277 if not insideOffsetFunc or not coordFunc then | |
278 return | |
279 end | |
270 | 280 |
271 local sx, sy = insidePointOffsetFuncs[p](xOff or 0, yOff or 0) | 281 local sx, sy = insidePointOffsetFuncs[p](xOff or 0, yOff or 0) |
272 local xx, yy = pointCoordFuncs[p](f1) | 282 local xx, yy = pointCoordFuncs[p](f1) |
273 if xx and yy then | 283 if xx and yy then |
274 if math.abs(x) <= rx then | 284 if math.abs(x) <= rx then |
351 local function CreateControls(bar) | 361 local function CreateControls(bar) |
352 local f = bar:GetFrame() | 362 local f = bar:GetFrame() |
353 | 363 |
354 f:SetMovable(true) | 364 f:SetMovable(true) |
355 f:SetResizable(true) | 365 f:SetResizable(true) |
356 f:SetClampedToScreen(true) | 366 |
357 | 367 local overlay = CreateFrame("Button", nil, f) |
358 local control = CreateFrame("Button", nil, f) | 368 overlay:EnableMouse(true) |
359 control:EnableMouse(true) | 369 overlay:SetFrameLevel(3) -- set it above the buttons |
360 control:SetToplevel(true) | 370 overlay:SetPoint("TOPLEFT", -4, 4) |
361 control:SetPoint("TOPLEFT", -4, 4) | 371 overlay:SetPoint("BOTTOMRIGHT", 4, -4) |
362 control:SetPoint("BOTTOMRIGHT", 4, -4) | 372 overlay:SetBackdrop({ |
363 control:SetBackdrop({ | |
364 edgeFile = "Interface\\Tooltips\\UI-Tooltip-Border", | 373 edgeFile = "Interface\\Tooltips\\UI-Tooltip-Border", |
365 tile = true, | 374 tile = true, |
366 tileSize = 16, | 375 tileSize = 16, |
367 edgeSize = 16, | 376 edgeSize = 16, |
368 insets = { left = 0, right = 0, top = 0, bottom = 0 }, | 377 insets = { left = 0, right = 0, top = 0, bottom = 0 }, |
369 }) | 378 }) |
370 control:SetClampedToScreen(true) | |
371 | 379 |
372 -- textures | 380 -- textures |
373 local bgTex = control:CreateTexture(nil,"BACKGROUND") | 381 local bgTex = overlay:CreateTexture(nil,"BACKGROUND") |
374 bgTex:SetTexture(0.7,0.7,1.0,0.2) | 382 bgTex:SetTexture(0.7,0.7,1.0,0.2) |
375 bgTex:SetPoint("TOPLEFT",4,-4) | 383 bgTex:SetPoint("TOPLEFT",4,-4) |
376 bgTex:SetPoint("BOTTOMRIGHT",-4,4) | 384 bgTex:SetPoint("BOTTOMRIGHT",-4,4) |
377 local hTex = control:CreateTexture(nil,"HIGHLIGHT") | 385 local hTex = overlay:CreateTexture(nil,"HIGHLIGHT") |
378 hTex:SetTexture(0.7,0.7,1.0,0.2) | 386 hTex:SetTexture(0.7,0.7,1.0,0.2) |
379 hTex:SetPoint("TOPLEFT",4,-4) | 387 hTex:SetPoint("TOPLEFT",4,-4) |
380 hTex:SetPoint("BOTTOMRIGHT",-4,4) | 388 hTex:SetPoint("BOTTOMRIGHT",-4,4) |
381 hTex:SetBlendMode("ADD") | 389 hTex:SetBlendMode("ADD") |
382 | 390 |
383 -- label | 391 -- label |
384 local label = control:CreateFontString(nil,"OVERLAY","GameFontNormalLarge") | 392 local label = overlay:CreateFontString(nil,"OVERLAY","GameFontNormalLarge") |
385 label:SetAllPoints() | 393 label:SetAllPoints() |
386 label:SetJustifyH("CENTER") | 394 label:SetJustifyH("CENTER") |
387 label:SetShadowColor(0,0,0,1) | 395 label:SetShadowColor(0,0,0,1) |
388 label:SetShadowOffset(2,-2) | 396 label:SetShadowOffset(2,-2) |
389 label:SetTextColor(1,1,1,1) | 397 label:SetTextColor(1,1,1,1) |
401 ReAction:RefreshOptions() | 409 ReAction:RefreshOptions() |
402 end | 410 end |
403 | 411 |
404 -- edge drag handles | 412 -- edge drag handles |
405 for _, point in pairs({"LEFT","TOP","RIGHT","BOTTOM"}) do | 413 for _, point in pairs({"LEFT","TOP","RIGHT","BOTTOM"}) do |
406 local edge = CreateFrame("Frame",nil,control) | 414 local edge = CreateFrame("Frame",nil,overlay) |
407 edge:EnableMouse(true) | 415 edge:EnableMouse(true) |
408 edge:SetWidth(8) | 416 edge:SetWidth(8) |
409 edge:SetHeight(8) | 417 edge:SetHeight(8) |
410 if point == "TOP" or point == "BOTTOM" then | 418 if point == "TOP" or point == "BOTTOM" then |
411 edge:SetPoint(point.."LEFT") | 419 edge:SetPoint(point.."LEFT") |
443 edge:SetScript("OnLeave", HideGameTooltip) | 451 edge:SetScript("OnLeave", HideGameTooltip) |
444 edge:Show() | 452 edge:Show() |
445 end | 453 end |
446 | 454 |
447 -- corner drag handles, nested in an anonymous frame so that they are on top | 455 -- corner drag handles, nested in an anonymous frame so that they are on top |
448 local foo = CreateFrame("Frame",nil,control) | 456 local foo = CreateFrame("Frame",nil,overlay) |
449 foo:SetAllPoints(true) | 457 foo:SetAllPoints(true) |
450 for _, point in pairs({"BOTTOMLEFT","TOPLEFT","BOTTOMRIGHT","TOPRIGHT"}) do | 458 for _, point in pairs({"BOTTOMLEFT","TOPLEFT","BOTTOMRIGHT","TOPRIGHT"}) do |
451 local corner = CreateFrame("Frame",nil,foo) | 459 local corner = CreateFrame("Frame",nil,foo) |
452 corner:EnableMouse(true) | 460 corner:EnableMouse(true) |
453 corner:SetWidth(12) | 461 corner:SetWidth(12) |
511 end | 519 end |
512 ) | 520 ) |
513 | 521 |
514 end | 522 end |
515 | 523 |
516 control:RegisterForDrag("LeftButton") | 524 overlay:RegisterForDrag("LeftButton") |
517 control:RegisterForClicks("RightButtonUp") | 525 overlay:RegisterForClicks("RightButtonUp") |
518 | 526 |
519 control:SetScript("OnDragStart", | 527 overlay:SetScript("OnDragStart", |
520 function() | 528 function() |
521 f:StartMoving() | 529 f:StartMoving() |
522 f.isMoving = true | 530 f.isMoving = true |
523 local w,h = bar:GetButtonSize() | 531 local w,h = bar:GetButtonSize() |
524 f:ClearAllPoints() | 532 f:ClearAllPoints() |
543 GameTooltip:AddLine(L["Currently anchored to <%s>"]:format(a)) | 551 GameTooltip:AddLine(L["Currently anchored to <%s>"]:format(a)) |
544 end | 552 end |
545 GameTooltip:Show() | 553 GameTooltip:Show() |
546 end | 554 end |
547 | 555 |
548 control:SetScript("OnDragStop", | 556 overlay:SetScript("OnDragStop", |
549 function() | 557 function() |
550 f:StopMovingOrSizing() | 558 f:StopMovingOrSizing() |
551 f.isMoving = false | 559 f.isMoving = false |
552 f:SetScript("OnUpdate",nil) | 560 f:SetScript("OnUpdate",nil) |
553 | 561 |
565 ReAction:RefreshOptions() | 573 ReAction:RefreshOptions() |
566 updateDragTooltip() | 574 updateDragTooltip() |
567 end | 575 end |
568 ) | 576 ) |
569 | 577 |
570 control:SetScript("OnEnter", | 578 overlay:SetScript("OnEnter", |
571 function() | 579 function() |
572 -- TODO: add bar type and status information to name | 580 -- TODO: add bar type and status information to name |
573 --[[ | 581 --[[ |
574 local name = bar.name | 582 local name = bar.name |
575 for _, m in ReAction:IterateModules() do | 583 for _, m in ReAction:IterateModules() do |
582 | 590 |
583 updateDragTooltip() | 591 updateDragTooltip() |
584 end | 592 end |
585 ) | 593 ) |
586 | 594 |
587 control:SetScript("OnLeave", HideGameTooltip) | 595 overlay:SetScript("OnLeave", HideGameTooltip) |
588 | 596 |
589 control:SetScript("OnClick", | 597 overlay:SetScript("OnClick", |
590 function() | 598 function() |
591 ReAction:ShowEditor(bar) | 599 ReAction:ShowEditor(bar) |
592 end | 600 end |
593 ) | 601 ) |
594 | 602 |
595 control:Raise() | 603 function overlay:LIBKEYBOUND_ENABLED(evt) |
596 | 604 self:SetFrameLevel(1) |
597 return control | 605 end |
606 | |
607 function overlay:LIBKEYBOUND_DISABLED(evt) | |
608 self:SetFrameLevel(3) | |
609 end | |
610 | |
611 KB.RegisterCallback(overlay,"LIBKEYBOUND_ENABLED") | |
612 KB.RegisterCallback(overlay,"LIBKEYBOUND_DISABLED") | |
613 | |
614 if ReAction:GetKeybindMode() then | |
615 self:SetFrameLevel(1) | |
616 end | |
617 | |
618 return overlay | |
598 end | 619 end |
599 | 620 |
600 | 621 |
601 -- export methods to the Bar prototype | 622 -- export methods to the Bar prototype |
602 | 623 |
603 function Bar:ShowControls(show) | 624 function Bar:ShowControls(show) |
625 local f = self.controlFrame | |
604 if show then | 626 if show then |
605 if not self.controlFrame then | 627 if not f then |
606 self.controlFrame = CreateControls(self) | 628 f = CreateControls(self) |
607 end | 629 self.controlFrame = f |
608 self.controlFrame:Show() | 630 end |
609 self.controlFrame:Raise() | 631 f:Show() |
610 elseif self.controlFrame then | 632 elseif f then |
611 self.controlFrame:Hide() | 633 f:Hide() |
612 end | 634 end |
613 end | 635 end |
614 | 636 |
615 function Bar:SetLabel(name) | 637 function Bar:SetLabel(name) |
616 if self.controlLabelString then | 638 local label = self.controlLabelString |
617 self.controlLabelString:SetText(self.name) | 639 if label then |
618 end | 640 label:SetText(self.name) |
619 end | 641 end |
642 end |