norgepaul / TChromeTabs

Comprehensive Delphi implementation of Chrome's tab system
Other
218 stars 78 forks source link

BaseLine drawing issue #40

Open homer90 opened 8 years ago

homer90 commented 8 years ago

When dragging one tab to another form the baseline gets rendered "behind" the tab.

Now: http://gfycat.com/SneakyRealIraniangroundjay


        // Only draw if not (!)dragging tab  <-----------------------
        if FDragTabControl = nil then
        begin
          case FOptions.Display.Tabs.Orientation of
            toTop: TabCanvas.DrawLine(Pen, 0, TabContainerRect.Bottom - 1, CorrectedClientWidth, TabContainerRect.Bottom - 1);
            toBottom: TabCanvas.DrawLine(Pen, 0, TabContainerRect.Top, CorrectedClientWidth, TabContainerRect.Top);
          end;
        end;

        // Restore the tab clip region
        SetTabClipRegion;

        // Draw the active tab
        if (ActiveTabIndex <> -1) and
           (ActiveTabVisible) and
           (TabControls[ActiveTabIndex].ControlRect.Right >= ScrollOffset) and
           (TabControls[ActiveTabIndex].ControlRect.Left <= CorrectedClientWidth + ScrollOffset) then
          TabControls[ActiveTabIndex].DrawTo(TabCanvas, FLastMouseX, FLastMouseY);

        // Clear the clip region
        TabCanvas.ResetClip;

        // Only draw if dragging tab  <-----------------------
        if FDragTabControl <> nil then
        begin
          case FOptions.Display.Tabs.Orientation of
            toTop: TabCanvas.DrawLine(Pen, 0, TabContainerRect.Bottom - 1, CorrectedClientWidth, TabContainerRect.Bottom - 1);
            toBottom: TabCanvas.DrawLine(Pen, 0, TabContainerRect.Top, CorrectedClientWidth, TabContainerRect.Top);
          end;
        end;

After fix: http://gfycat.com/FlippantVagueChihuahua

norgepaul commented 8 years ago

Hi,

Sorry, I don't see any difference in the videos. The baseline seems to get rendered correctly in both. Can you point out exactly what the issue is?

Was the code included in the email a fix?

Cheers, Paul

On 17 November 2015 at 20:00, homer90 notifications@github.com wrote:

When dragging one tab to another form the baseline gets rendered "behind" the tab.

Now: http://gfycat.com/SneakyRealIraniangroundjay

    // Only draw if not (!)dragging tab  <-----------------------
    if FDragTabControl = nil then
    begin
      case FOptions.Display.Tabs.Orientation of
        toTop: TabCanvas.DrawLine(Pen, 0, TabContainerRect.Bottom - 1, CorrectedClientWidth, TabContainerRect.Bottom - 1);
        toBottom: TabCanvas.DrawLine(Pen, 0, TabContainerRect.Top, CorrectedClientWidth, TabContainerRect.Top);
      end;
    end;

    // Restore the tab clip region
    SetTabClipRegion;

    // Draw the active tab
    if (ActiveTabIndex <> -1) and
       (ActiveTabVisible) and
       (TabControls[ActiveTabIndex].ControlRect.Right >= ScrollOffset) and
       (TabControls[ActiveTabIndex].ControlRect.Left <= CorrectedClientWidth + ScrollOffset) then
      TabControls[ActiveTabIndex].DrawTo(TabCanvas, FLastMouseX, FLastMouseY);

    // Clear the clip region
    TabCanvas.ResetClip;

    // Only draw if dragging tab  <-----------------------
    if FDragTabControl <> nil then
    begin
      case FOptions.Display.Tabs.Orientation of
        toTop: TabCanvas.DrawLine(Pen, 0, TabContainerRect.Bottom - 1, CorrectedClientWidth, TabContainerRect.Bottom - 1);
        toBottom: TabCanvas.DrawLine(Pen, 0, TabContainerRect.Top, CorrectedClientWidth, TabContainerRect.Top);
      end;
    end;

After fix: http://gfycat.com/FlippantVagueChihuahua

— Reply to this email directly or view it on GitHub https://github.com/norgepaul/TChromeTabs/issues/40.

homer90 commented 8 years ago

before: bbbb

after: aaaa

The code i included is indeed the fix.

norgepaul commented 8 years ago

Hi,

Unfortunately, the fix you posted doesn't work for me.

1) The baseline is drawn in front of the drag tab 2) When dragging a tab over another tab container it is no longer visible.

I'm still having a hard time figuring out what the actual issue is though, When I drag a tab the baseline is clearly visible in front of all the other tabs, not just because of the transparency settings.

The only issue I can see is that the baseline is visible if the drag tab has some transparency,

Can you give me any more information to go on or provide a fix that works correctly?

Cheers, Paul

homer90 commented 8 years ago

That's weird cause the fix is working for me as posted in the video (http://gfycat.com/FlippantVagueChihuahua).

The glitch happens when you drag one tab in another container.