From 1dfa3c60ebe431eefd62709583b49d45f49c44a7 Mon Sep 17 00:00:00 2001 From: Vadim Lopatin Date: Mon, 30 Nov 2015 16:09:19 +0300 Subject: [PATCH] updated scrollbar resources; spreadsheet example improved --- .../src/dlangui/widgets/spreadsheet.d | 13 ++++++++++++ src/dlangui/widgets/controls.d | 6 +++--- src/dlangui/widgets/grid.d | 19 +++++++++++++----- src/dlangui/widgets/styles.d | 2 ++ views/res/scrollbar_btn_background.xml | 14 +++++++++++++ views/res/scrollbar_btn_background_dark.xml | 18 +++++++++++++++++ .../scrollbar_btn_background_disabled.9.png | Bin 0 -> 224 bytes .../res/scrollbar_btn_background_hover.9.png | Bin 0 -> 314 bytes .../res/scrollbar_btn_background_normal.9.png | Bin 0 -> 308 bytes .../scrollbar_btn_background_pressed.9.png | Bin 0 -> 252 bytes views/res/scrollbar_btn_down.png | Bin 371 -> 331 bytes views/res/scrollbar_btn_left.png | Bin 378 -> 319 bytes views/res/scrollbar_btn_right.png | Bin 353 -> 339 bytes .../scrollbar_btn_transparent_background.xml | 14 +++++++++++++ views/res/scrollbar_btn_up.png | Bin 371 -> 338 bytes views/res/scrollbar_indicator_horizontal.png | Bin 142 -> 126 bytes views/res/scrollbar_indicator_vertical.png | Bin 138 -> 129 bytes views/res/theme_default.xml | 10 +++++++-- views/standard_resources.list | 7 +++++++ 19 files changed, 93 insertions(+), 10 deletions(-) create mode 100644 views/res/scrollbar_btn_background.xml create mode 100644 views/res/scrollbar_btn_background_dark.xml create mode 100644 views/res/scrollbar_btn_background_disabled.9.png create mode 100644 views/res/scrollbar_btn_background_hover.9.png create mode 100644 views/res/scrollbar_btn_background_normal.9.png create mode 100644 views/res/scrollbar_btn_background_pressed.9.png create mode 100644 views/res/scrollbar_btn_transparent_background.xml diff --git a/examples/spreadsheet/src/dlangui/widgets/spreadsheet.d b/examples/spreadsheet/src/dlangui/widgets/spreadsheet.d index fa6323c6..e9de0d83 100644 --- a/examples/spreadsheet/src/dlangui/widgets/spreadsheet.d +++ b/examples/spreadsheet/src/dlangui/widgets/spreadsheet.d @@ -218,6 +218,19 @@ class SpreadSheetWidget : WidgetGroupDefaultDrawing, OnScrollHandler, CellSelect /// Callback for handling of view scroll (top left visible cell change) void onViewScrolled(GridWidgetBase source, int col, int row) { + if (source == _viewTopLeft) { + _viewTopRight.scrollTo(-1, row, source, false); + _viewBottomLeft.scrollTo(col, -1, source, false); + } else if (source == _viewTopRight) { + _viewTopLeft.scrollTo(-1, row, source, false); + _viewBottomRight.scrollTo(col, -1, source, false); + } else if (source == _viewBottomLeft) { + _viewTopLeft.scrollTo(col, -1, source, false); + _viewBottomRight.scrollTo(-1, row, source, false); + } else if (source == _viewBottomRight) { + _viewTopRight.scrollTo(col, -1, source, false); + _viewBottomLeft.scrollTo(-1, row, source, false); + } } } diff --git a/src/dlangui/widgets/controls.d b/src/dlangui/widgets/controls.d index 6200e178..4f7b66b3 100644 --- a/src/dlangui/widgets/controls.d +++ b/src/dlangui/widgets/controls.d @@ -623,7 +623,7 @@ class ScrollBar : AbstractSlider, OnClickHandler { this(string resourceId) { super("SLIDER", resourceId); - styleId = STYLE_BUTTON_NOMARGINS; + styleId = STYLE_SCROLLBAR_BUTTON; trackHover = true; } @@ -801,8 +801,8 @@ class ScrollBar : AbstractSlider, OnClickHandler { _btnForward = new ImageButton("FORWARD", style.customDrawableId(_orientation == Orientation.Vertical ? ATTR_SCROLLBAR_BUTTON_DOWN : ATTR_SCROLLBAR_BUTTON_RIGHT)); _pageUp = new PageScrollButton("PAGE_UP"); _pageDown = new PageScrollButton("PAGE_DOWN"); - _btnBack.styleId = STYLE_SCROLLBAR_BUTTON; - _btnForward.styleId = STYLE_SCROLLBAR_BUTTON; + _btnBack.styleId = STYLE_SCROLLBAR_BUTTON_TRANSPARENT; + _btnForward.styleId = STYLE_SCROLLBAR_BUTTON_TRANSPARENT; _indicator = new SliderButton(style.customDrawableId(_orientation == Orientation.Vertical ? ATTR_SCROLLBAR_INDICATOR_VERTICAL : ATTR_SCROLLBAR_INDICATOR_HORIZONTAL)); addChild(_btnBack); addChild(_btnForward); diff --git a/src/dlangui/widgets/grid.d b/src/dlangui/widgets/grid.d index 84779a55..74a59663 100644 --- a/src/dlangui/widgets/grid.d +++ b/src/dlangui/widgets/grid.d @@ -535,12 +535,12 @@ class GridWidgetBase : ScrollWidgetBase { return scrollTo(_headerCols + _fixedCols + _scrollCol + dx, _headerRows + _fixedRows + _scrollRow + dy); } - /// set scroll position to show specified cell as top left in scrollable area - bool scrollTo(int col, int row) { + /// set scroll position to show specified cell as top left in scrollable area; col or row -1 value means no change + bool scrollTo(int col, int row, GridWidgetBase source = null, bool doNotify = true) { int oldx = _scrollCol; int oldy = _scrollRow; - int newScrollCol = col - _headerCols - _fixedCols; - int newScrollRow = row - _headerRows - _fixedRows; + int newScrollCol = col == -1 ? _scrollCol : col - _headerCols - _fixedCols; + int newScrollRow = row == -1 ? _scrollRow : row - _headerRows - _fixedRows; if (newScrollCol > _maxScrollCol) newScrollCol = _maxScrollCol; if (newScrollCol < 0) @@ -565,7 +565,13 @@ class GridWidgetBase : ScrollWidgetBase { //if (changed) updateScrollBars(); invalidate(); - return oldx != _scrollCol || oldy != _scrollRow; + bool changed = oldx != _scrollCol || oldy != _scrollRow; + if (doNotify && changed && viewScrolled.assigned) { + if (source is null) + source = this; + viewScrolled(source, col, row); + } + return changed; } /// process horizontal scrollbar event @@ -635,6 +641,9 @@ class GridWidgetBase : ScrollWidgetBase { if (scrolled) { updateScrollBars(); invalidate(); + if (viewScrolled.assigned) { + viewScrolled(this, _scrollCol + _headerCols + _fixedCols, _scrollRow + _headerRows + _fixedRows); + } } } diff --git a/src/dlangui/widgets/styles.d b/src/dlangui/widgets/styles.d index 96821a98..fdef49c2 100644 --- a/src/dlangui/widgets/styles.d +++ b/src/dlangui/widgets/styles.d @@ -69,6 +69,8 @@ immutable string STYLE_VSPACER = "VSPACER"; immutable string STYLE_SCROLLBAR = "SCROLLBAR"; /// standard style id for ScrollBar button immutable string STYLE_SCROLLBAR_BUTTON = "SCROLLBAR_BUTTON"; +/// standard style id for ScrollBar button +immutable string STYLE_SCROLLBAR_BUTTON_TRANSPARENT = "SCROLLBAR_BUTTON_TRANSPARENT"; /// standard style id for ScrollBar page control immutable string STYLE_PAGE_SCROLL = "PAGE_SCROLL"; /// standard style id for Slider diff --git a/views/res/scrollbar_btn_background.xml b/views/res/scrollbar_btn_background.xml new file mode 100644 index 00000000..8d354638 --- /dev/null +++ b/views/res/scrollbar_btn_background.xml @@ -0,0 +1,14 @@ + + + + + + + + + diff --git a/views/res/scrollbar_btn_background_dark.xml b/views/res/scrollbar_btn_background_dark.xml new file mode 100644 index 00000000..7c86b3e0 --- /dev/null +++ b/views/res/scrollbar_btn_background_dark.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + diff --git a/views/res/scrollbar_btn_background_disabled.9.png b/views/res/scrollbar_btn_background_disabled.9.png new file mode 100644 index 0000000000000000000000000000000000000000..7dccd4cefe1e61076ec57d51f7d1a563db12715d GIT binary patch literal 224 zcmeAS@N?(olHy`uVBq!ia0vp^LLkh+1|-AI^@Rf|wj^(N7lu0wj~HHT{OGUO=Oz%Ti&L|Wt*b^JiBB8QQ_t(?pHK!FvLC7_RBLAcn@?7 NgQu&X%Q~loCIHexQ3n73 literal 0 HcmV?d00001 diff --git a/views/res/scrollbar_btn_background_hover.9.png b/views/res/scrollbar_btn_background_hover.9.png new file mode 100644 index 0000000000000000000000000000000000000000..c018279f08cdda1ff20379e34c98756371244161 GIT binary patch literal 314 zcmV-A0mc4_P)LKG&6L% zxgH8zD9w!5buY~fZ|@&s7E5-~)#U}FyIW5In8lLkr$+=p1Q8Gfam6JrJGXy1naz2) zAB(^KPTjOrb&IVVY}HWOn!;ABO6R<={H#j8@`BIreB&~oJ?S`f96HdUbrh(;CsaOK z1?Vs!(u!Dz^djdZ)|~VrPLr6kezJiR1uz_(^YS{~86*EZ+6UNv0orM3$Aip6uK)l5 M07*qoM6N<$f*k~cVE_OC literal 0 HcmV?d00001 diff --git a/views/res/scrollbar_btn_background_normal.9.png b/views/res/scrollbar_btn_background_normal.9.png new file mode 100644 index 0000000000000000000000000000000000000000..b3131244cb5ebcc9fc5ad35ed3e751a96f539c50 GIT binary patch literal 308 zcmeAS@N?(olHy`uVBq!ia0vp^LLkh+1|-AI^@Rf|wj^(N7lu0wj~HHT{OGd;TpXNeuh)8daf2V2F|Kz)VnUdZMUu2YgX4Jqh-e=mYfuDdGgdma*-h$!-edZ zPxf5o}K&ZknS@Jc_rQ3Pp`aa;J>(a`)9>T&-JxWb=l=y z)4o*lT#dmsvd~V}(Dcd{&rlF{5fxo3=9uN^!mz`Bp3JwIs^c4QTC}pfJg?$5^K-V|AD?{us|Iu@gQu&X%Q~loCIBu6T_*ql literal 0 HcmV?d00001 diff --git a/views/res/scrollbar_btn_down.png b/views/res/scrollbar_btn_down.png index 19ab977b7066d2b3d98cb2db242ef2858343f117..d37d8cc44985250afd1df179de00dc251e486879 100644 GIT binary patch delta 318 zcmey&behSyGr-TCmrII^fq{Y7)59eQNOOZQ2OE%Fxu#qVNU(*IuXYVVZuKx*P;vsJ%Po6m= z_Ve%S*LMq!rt@F<{rAtmJZWz2^o+WreOr&8uaEgPJ$_>`FE_XQjsExf+vi(Hyl;Q_ zY|kd$**7d$YU*pMcQ-eC-+27IpFjHCo7JD%t7TTr06FX>&<36~y}7T~>|OTPy!2g6 zzh1kb)HJm!pK0%e#pUnMl<$_C;&Y>E#rms;QnM|t6&w?FWVl{mu_8d~KOZnC7(8A5 LT-G@;B{Ts5IYW*1 literal 371 zcmeAS@N?(olHy`uVBq!ia0vp@Ak4uAB#T}@sR2@q#X;^)4C~IxyaaMM3p^r=85p=b zL736}27kQ#mI3v!db&7$SMc z|Dt#JN3=OJ3Nte^H!uBtWGP7O@Y+8g-+t9gOWWqL;#j?h)JzEpiGPtmg~yJZk^1`g z_3OJlJUnO40Ez$e?JYJ$`rJCx(K}b)!Rw&s@0WXHS0_lFx%(?@(}oT1HUEEAec##q zRS>B5{)~lc|7!j{IFMB+>8)&5wvWNHvU>0G?`7*vieJVZK6Og;*W=%}-#+KN!fIe( zP?MGb1TJN4Acw6CzO81)$9P}<{=Ih(9teH=@$>QFX~w@-{h2uDZ@-{7$6w>(modjr z9h3g?`uTI-<=>~VE1iDWEA0Kf)4Q|7dd1(?iBL{Q4GJ0x0000DNk~Le0000B0000B2nGNE0I95ZCIA2c24YJ` zL;%MC%mC6-9#d$ME*O8`Nkl)1Jk-2VRkwH#TT5#1SiWm`6}aR~VS`Tc$Mgm%|343lBjo4ItZVdD_+{r&69 zx``bgVU{L(Ovle$`Uf|efq{YP_?b)pimLZ7WnyNH`tj}Ujwy9L{+{Rx;m&}WZ0g*( zmW`b^;PGFJ?1x00000NkvXXu0mjf DootbQ literal 378 zcmeAS@N?(olHy`uVBq!ia0vp@Ak4uAB#T}@sR2@q#X;^)4C~IxyaaMM3p^r=85p=b zL736}6<-fAAc z(2yf6%*=e)-uru}_skiQi|cBtcRzm980DWMbz$ytu%1_Uc24V^YyRN-`t{lVZ#8)j zrVD2&SZvKrdoJ+d=jZ3gS54mCb?Bn0(W5Tq{O&VI#{{$lpm%KPeT_s;H|Y1-B3((q7<;d^V$ Vr&p2D>A;|3@O1TaS?83{1OWSgsUZLW diff --git a/views/res/scrollbar_btn_right.png b/views/res/scrollbar_btn_right.png index 081a183bfdc94774188c5fcbefa1d2a3c40f8746..fc03a57697e3e120abca273ae7e546f85ed85ad7 100644 GIT binary patch delta 326 zcmaFJbeYMxGr-TCmrII^fq{Y7)59eQNOOZQ2OE%Fxu#qVNUPt7T}~hwk;Z>v%U9Uf*R6TYu;!%lS+7F8!HF?bRpx^YhC$Z2Zg?vCBV(M>yTl z{O6CE-v2*om#umFKiHnD&!g0FxSAasFJzX3_G|nd{9AG)aV7)@ zef#b6@78~9oZ0Rz9J6?5^nEWevAzxS?d@_bH?Kb>KHpbE>TJxe>l-!|vj6|}v-0rE zy-yFGFf)3@Iivm<-`U%iJ6df2{r$W5&5v_`GGc7ghw|XahmSfzxQ5gTD`Bp vy(tX-_5r-<{8!q6e))4GjXRJnk(ohoYW%m$4!=`@-e>T1^>bP0l+XkKW5}5M diff --git a/views/res/scrollbar_btn_transparent_background.xml b/views/res/scrollbar_btn_transparent_background.xml new file mode 100644 index 00000000..43fe44f1 --- /dev/null +++ b/views/res/scrollbar_btn_transparent_background.xml @@ -0,0 +1,14 @@ + + + + + + + + + diff --git a/views/res/scrollbar_btn_up.png b/views/res/scrollbar_btn_up.png index 1a229062e2def10e2a14b4817488b3c848b857d6..0fff3cffd9d384e240c2cb149ab1ea357ee48a12 100644 GIT binary patch delta 325 zcmV-L0lNP40@4CAiBL{Q4GJ0x0000DNk~Le0000B0000B2nGNE0I95ZCIA2c24YJ` zL;%MC%mC6-9#d$ME*O9ENkl*83(m!-@CR_?FP4t)uDrR6{ zU?{5IzZ9D|3(PbI1_p-XXDlFz(Kw%+u)rumDV$l@b6Mmr{}`_x z;TZ`v!Ozca^*OU9Fimf6_JyYx=6>vNY-~JuWM!_gv~~W0{`~y%4Vyl)&9d5>+jQ!0 z^UC(jU&jv|IFR_}#-7%>&Ig`3Ji4y{M>j$N!(7ldrD4tC|Ru^6`KFHcoTtgC%E=ofB73%T4?C=V0SmpoG1oq=dwb z-Z#?Qi;KE<{rmen`)B7|)FVdQ&MBb@0MNJ|Q~&?~ delta 125 zcmb>HW1Jvf&dtHbz`)=%`;01(Vk{1FcVbv~PUa<$!&%@FS21s-(!|wGv_wldOZ**q~Ph|7$R{wdBe9^WuO25|DP=>AtAA0<4g&ThCo&qEe3|m XF9hCKxomy|RLkJ$>gTe~DWM4fpRFe< diff --git a/views/res/scrollbar_indicator_vertical.png b/views/res/scrollbar_indicator_vertical.png index ac0e1ae246feb916e12c323be478cedabb550f6f..7b4f578c78a93cf916a47ef7376a1d7892895f21 100644 GIT binary patch delta 114 zcmeBTY-BX<4DfU3<&xrJU|`_&^l%9R(wsod!NCS3wa;GN3Z&SQyxmP!c5WA#W6(Ua`K=5|Nlp^F*RJgm3_;%sjF}P&La*17X!BPF*xrMU0ckf-VW5y N;OXk;vd$@?2>_{*BTE1P literal 138 zcmeAS@N?(olHy`uVBq!ia0vp^+(691!3HGtEm%8%6k~CayA#8@b22Z19L@rd$YP+P zP7r1^KY4mBP>{XE)7O>#9KHs-{an^LB{Ts5Q^h9) diff --git a/views/res/theme_default.xml b/views/res/theme_default.xml index 86b9560c..bf7ba7a1 100644 --- a/views/res/theme_default.xml +++ b/views/res/theme_default.xml @@ -131,10 +131,16 @@