From 8ad1fd53afc136d4a9592be20a9904a3b79e5ed4 Mon Sep 17 00:00:00 2001 From: ketmar Date: Wed, 15 Mar 2017 04:27:55 +0000 Subject: [PATCH] playlist scroll fixes; other fixes FossilOrigin-Name: 6dc3f22d12cba2a28b32cdabb665cf826de353b49dbeb7517a263e8691cb0323 --- amper.d | 6 ++++-- amperskin.d | 17 +++++++++-------- egfx/backgl.d | 4 ++++ 3 files changed, 17 insertions(+), 10 deletions(-) diff --git a/amper.d b/amper.d index fd87ba4..06d5bf3 100644 --- a/amper.d +++ b/amper.d @@ -191,7 +191,6 @@ void createAmpWindow () { sdampwin.redrawOpenGlScene = delegate () { ampMain.onPaint(); //conwriteln("PAINT: sdampwin"); - //if (sdplwin !is null && !sdplwin.closed) sdplwin.redrawOpenGlSceneNow(); }; sdampwin.visibleForTheFirstTime = delegate () { @@ -290,6 +289,7 @@ void createPListWindow () { sdplwin.redrawOpenGlScene = delegate () { ampPList.onPaint(); //conwriteln("PAINT: sdplwin"); + //conwriteln(ampPList.curitem); }; sdplwin.visibleForTheFirstTime = delegate () { @@ -315,7 +315,9 @@ void createPListWindow () { }; sdplwin.handleMouseEvent = delegate (MouseEvent event) { + //conwriteln("PLMOUSE BEFORE: ", ampPList.curitem, " : ", event.type); ampPList.onMouse(event); + //conwriteln("PLMOUSE AFTER: ", ampPList.curitem, " : ", event.type); glconPostScreenRebuild(); //sdplwin.redrawOpenGlSceneNow(); }; @@ -323,7 +325,7 @@ void createPListWindow () { sdplwin.windowResized = delegate (int wdt, int hgt) { ampPList.imgrc = GxRect(0, 0, wdt/vbufEffScale, hgt/vbufEffScale); //vglResizeBuffer(wdt/vbufEffScale, hgt/vbufEffScale, vbufEffScale); - sdplwin.redrawOpenGlSceneNow(); + //sdplwin.redrawOpenGlSceneNow(); }; sdplwin.onFocusChange = delegate (bool focused) { ampPList.focusChanged(focused); }; diff --git a/amperskin.d b/amperskin.d index f9532db..aac13d2 100644 --- a/amperskin.d +++ b/amperskin.d @@ -653,24 +653,25 @@ public: if (curitem < 0) curitem = 0; if (items.length == 0) { topitem = 0; return; } if (curitem >= items.length) curitem = cast(int)items.length-1; + immutable vfi = visibleFullItems; + immutable vi = visibleItems; + immutable ci = curitem; int tl = topitem; if (tl < 0) tl = 0; - if (tl < curitem) tl = curitem; - if (tl+visibleFullItems >= curitem) tl = curitem-visibleFullItems+1; - int el = topitem+visibleItems-1; - if (el >= items.length) { - tl = cast(int)items.length-visibleItems; - } + if (tl > ci) tl = ci; + if (tl+vfi <= ci) tl = ci-vfi+1; + int el = tl+vi-1; + if (el >= items.length) tl = cast(int)items.length-vfi; if (tl < 0) tl = 0; topitem = tl; } final @property int knobYOfs () nothrow @trusted { normTop(); - if (items.length < visibleItems+1) return 0; + if (items.length < visibleFullItems+1) return 0; int hgt = imgrc.height-37-19-18; if (hgt < 1) return 0; - return cast(int)(hgt*topitem/(items.length-visibleItems)); + return cast(int)(hgt*topitem/(items.length-visibleFullItems)); // normal knob: 52,53 8x18 at width-15,[19..height-37) } diff --git a/egfx/backgl.d b/egfx/backgl.d index 0165401..6befee8 100644 --- a/egfx/backgl.d +++ b/egfx/backgl.d @@ -464,11 +464,15 @@ public void vglRegisterWindow(string role) (SimpleWindow w) { if (save.valid) { if (auto sw = save.wd) { if (sw.vglTexIdSave != 0 && sw.redrawOpenGlSceneSave !is null) { + //conwriteln("PAINT: ", w.title); + w.setAsCurrentOpenGlContext(); gxClipReset(); sw.redrawOpenGlSceneSave(); w.setAsCurrentOpenGlContext(); vglUpdateTexture(); + //glFlush(); vglBlitTexture(); + //XFlush(w.display); } } } -- 2.11.4.GIT