From 13daf7d8bda26414ac91fa814458126fa2ed7c43 Mon Sep 17 00:00:00 2001 From: codewarrior Date: Tue, 4 Oct 2005 01:33:59 +0000 Subject: [PATCH] e_scrollbar smart. needs callbacks. SVN revision: 17150 --- data/themes/default.edc | 3 +- data/themes/default_scrollbar.edc | 529 ++++++++++++++++++ data/themes/images/e17_hhandle.png | Bin 0 -> 1415 bytes data/themes/images/e17_hhandle_down.png | Bin 0 -> 1234 bytes data/themes/images/e17_hhandle_thumb.png | Bin 0 -> 384 bytes data/themes/images/e17_hscrollbar_trough.png | Bin 0 -> 446 bytes .../images/e17_scrollbar_bottom_arrow.png | Bin 0 -> 610 bytes .../e17_scrollbar_bottom_arrow_down.png | Bin 0 -> 564 bytes .../images/e17_scrollbar_left_arrow.png | Bin 0 -> 630 bytes .../images/e17_scrollbar_left_arrow_down.png | Bin 0 -> 592 bytes .../images/e17_scrollbar_right_arrow.png | Bin 0 -> 646 bytes .../images/e17_scrollbar_right_arrow_down.png | Bin 0 -> 618 bytes .../themes/images/e17_scrollbar_top_arrow.png | Bin 0 -> 569 bytes .../images/e17_scrollbar_top_arrow_down.png | Bin 0 -> 541 bytes data/themes/images/e17_vhandle.png | Bin 0 -> 1549 bytes data/themes/images/e17_vhandle_down.png | Bin 0 -> 1400 bytes data/themes/images/e17_vhandle_thumb.png | Bin 0 -> 406 bytes data/themes/images/e17_vscrollbar_trough.png | Bin 0 -> 380 bytes src/bin/Makefile.am | 4 +- src/bin/e_scrollbar.c | 223 ++++++++ src/bin/e_scrollbar.h | 18 + 21 files changed, 775 insertions(+), 2 deletions(-) create mode 100644 data/themes/default_scrollbar.edc create mode 100644 data/themes/images/e17_hhandle.png create mode 100644 data/themes/images/e17_hhandle_down.png create mode 100644 data/themes/images/e17_hhandle_thumb.png create mode 100644 data/themes/images/e17_hscrollbar_trough.png create mode 100644 data/themes/images/e17_scrollbar_bottom_arrow.png create mode 100644 data/themes/images/e17_scrollbar_bottom_arrow_down.png create mode 100644 data/themes/images/e17_scrollbar_left_arrow.png create mode 100644 data/themes/images/e17_scrollbar_left_arrow_down.png create mode 100644 data/themes/images/e17_scrollbar_right_arrow.png create mode 100644 data/themes/images/e17_scrollbar_right_arrow_down.png create mode 100644 data/themes/images/e17_scrollbar_top_arrow.png create mode 100644 data/themes/images/e17_scrollbar_top_arrow_down.png create mode 100644 data/themes/images/e17_vhandle.png create mode 100644 data/themes/images/e17_vhandle_down.png create mode 100644 data/themes/images/e17_vhandle_thumb.png create mode 100644 data/themes/images/e17_vscrollbar_trough.png create mode 100644 src/bin/e_scrollbar.c create mode 100644 src/bin/e_scrollbar.h diff --git a/data/themes/default.edc b/data/themes/default.edc index bcf53612d..1fad8c58c 100644 --- a/data/themes/default.edc +++ b/data/themes/default.edc @@ -46,6 +46,7 @@ collections { #include "default_pointer.edc" #include "default_about.edc" #include "default_theme_about.edc" -#include "default_entry.edc" +#include "default_entry.edc" +#include "default_scrollbar.edc" } diff --git a/data/themes/default_scrollbar.edc b/data/themes/default_scrollbar.edc new file mode 100644 index 000000000..2e1909939 --- /dev/null +++ b/data/themes/default_scrollbar.edc @@ -0,0 +1,529 @@ +images { + image: "e17_hscrollbar_trough.png" COMP; + image: "e17_scrollbar_left_arrow.png" COMP; + image: "e17_scrollbar_left_arrow_down.png" COMP; + image: "e17_scrollbar_right_arrow.png" COMP; + image: "e17_scrollbar_right_arrow_down.png" COMP; + image: "e17_scrollbar_left_arrow.png" COMP; + image: "e17_scrollbar_left_arrow_down.png" COMP; + image: "e17_hhandle.png" COMP; + image: "e17_hhandle_down.png" COMP; + image: "e17_hhandle_thumb.png" COMP; + image: "e17_vscrollbar_trough.png" COMP; + image: "e17_scrollbar_top_arrow.png" COMP; + image: "e17_scrollbar_top_arrow_down.png" COMP; + image: "e17_scrollbar_bottom_arrow.png" COMP; + image: "e17_scrollbar_bottom_arrow_down.png" COMP; + image: "e17_scrollbar_top_arrow.png" COMP; + image: "e17_scrollbar_top_arrow_down.png" COMP; + image: "e17_vhandle.png" COMP; + image: "e17_vhandle_down.png" COMP; + image: "e17_vhandle_thumb.png" COMP; +} + +group { + name: "widgets/hscrollbar"; + min: 40 16; + parts { + part { + name: "trough"; + description { + state: "default" 0.0; + rel1 { + relative: 0.0 0.5; + offset: 0 -8; + } + rel2 { + relative: 1.0 0.5; + offset: -1 9; + } + image { + normal: "e17_hscrollbar_trough.png"; + border: 6 6 6 6; + } + } + } + part { + name: "left_left_arrow"; + description { + state: "default" 0.0; + rel1 { + relative: 0.0 0.5; + offset: -1 -8; + } + rel2 { + relative: 0.0 0.5; + offset: 16 9; + } + image { + normal: "e17_scrollbar_left_arrow.png"; + } + } + description { + state: "down" 0.0; + inherit: "default" 0.0; + image { + normal: "e17_scrollbar_left_arrow_down.png"; + } + } + } + part { + name: "right_right_arrow"; + description { + state: "default" 0.0; + rel1 { + relative: 1.0 0.5; + offset: -17 -8; + } + rel2 { + relative: 1.0 0.5; + offset: 0 9; + } + image { + normal: "e17_scrollbar_right_arrow.png"; + } + } + description { + state: "down" 0.0; + inherit: "default" 0.0; + image { + normal: "e17_scrollbar_right_arrow_down.png"; + } + } + } + part { + name: "right_left_arrow"; + description { + state: "default" 0.0; + rel1 { + relative: 0.0 0.0; + offset: -18 0; + to: "right_right_arrow"; + } + rel2 { + relative: 0.0 1.0; + offset: -1 -1; + to: "right_right_arrow"; + } + image { + normal: "e17_scrollbar_left_arrow.png"; + } + } + description { + state: "down" 0.0; + inherit: "default" 0.0; + image { + normal: "e17_scrollbar_left_arrow_down.png"; + } + } + } + part { + name: "scrollbar_bar_confine"; + type: RECT; + description { + state: "default" 0.0; + visible: 0; + rel1 { + relative: 1.0 0.5; + offset: 0 9; + to_x: "left_left_arrow"; + } + rel2 { + relative: 0.0 0.5; + offset: 0 10; + to_x: "right_left_arrow"; + } + } + } + part { + name: "drag"; + dragable { + confine: "scrollbar_bar_confine"; + x: 1 1 1; + y: 0 0 0; + } + description { + state: "default" 0.0; + min: 58 18; + max: 58 18; + image { + normal: "e17_hhandle.png"; + border: 10 10 0 0; + } + } + description { + state: "down" 0.0; + inherit: "default" 0.0; + image { + normal: "e17_hhandle_down.png"; + } + } + } + part { + name: "drag_thumb"; + mouse_events: 0; + description { + state: "default" 0.0; + rel1 { + relative: 0.5 0.5; + offset: -9 -4; + to: "drag"; + } + rel2 { + relative: 0.5 0.5; + offset: 6 1; + to: "drag"; + } + image { + normal: "e17_hhandle_thumb.png"; + } + } + description { + state: "down" 0.0; + inherit: "default" 0.0; + rel1 { + offset: -8 -3; + } + rel2 { + offset: 7 2; + } + } + } + } + programs { + program { + name: "hscrollbar_drag_down"; + signal: "mouse,down,1"; + source: "drag"; + action: STATE_SET "down" 0.0; + target: "drag"; + target: "drag_thumb"; + } + program { + name: "hscrollbar_drag_up"; + signal: "mouse,up,1"; + source: "drag"; + action: STATE_SET "default" 0.0; + target: "drag"; + target: "drag_thumb"; + } + program { + name: "left_left_arrow_down"; + signal: "mouse,down,1"; + source: "left_left_arrow"; + action: STATE_SET "down" 0.0; + target: "left_left_arrow"; + after: "emit_scroll_left_start"; + } + program { + name: "left_left_arrow_up"; + signal: "mouse,up,1"; + source: "left_left_arrow"; + action: STATE_SET "default" 0.0; + target: "left_left_arrow"; + after: "emit_scroll_left_stop"; + } + program { + name: "right_left_arrow_down"; + signal: "mouse,down,1"; + source: "right_left_arrow"; + action: STATE_SET "down" 0.0; + target: "right_left_arrow"; + after: "emit_scroll_left_start"; + } + program { + name: "right_left_arrow_up"; + signal: "mouse,up,1"; + source: "right_left_arrow"; + action: STATE_SET "default" 0.0; + target: "right_left_arrow"; + after: "emit_scroll_left_stop"; + } + program { + name: "right_right_arrow_down"; + signal: "mouse,down,1"; + source: "right_right_arrow"; + action: STATE_SET "down" 0.0; + target: "right_right_arrow"; + after: "emit_scroll_right_start"; + } + program { + name: "right_right_arrow_up"; + signal: "mouse,up,1"; + source: "right_right_arrow"; + action: STATE_SET "default" 0.0; + target: "right_right_arrow"; + after: "emit_scroll_right_stop"; + } + program { + name: "emit_scroll_left_start"; + action: SIGNAL_EMIT "scroll_left_start" ""; + } + program { + name: "emit_scroll_left_stop"; + action: SIGNAL_EMIT "scroll_left_stop" ""; + } + program { + name: "emit_scroll_right_start"; + action: SIGNAL_EMIT "scroll_right_start" ""; + } + program { + name: "emit_scroll_right_stop"; + action: SIGNAL_EMIT "scroll_right_stop" ""; + } + } +} + + +group { + name: "widgets/vscrollbar"; + min: 16 40; + parts { + part { + name: "trough"; + description { + state: "default" 0.0; + rel1 { + relative: 0.5 0.0; + offset: -8 0; + } + rel2 { + relative: 0.5 1.0; + offset: 9 -1; + } + image { + normal: "e17_vscrollbar_trough.png"; + border: 6 6 6 6; + } + } + } + part { + name: "top_top_arrow"; + description { + state: "default" 0.0; + rel1 { + relative: 0.5 0.0; + offset: -8 -1; + } + rel2 { + relative: 0.5 0.0; + offset: 9 16; + } + image { + normal: "e17_scrollbar_top_arrow.png"; + } + } + description { + state: "down" 0.0; + inherit: "default" 0.0; + image { + normal: "e17_scrollbar_top_arrow_down.png"; + } + } + } + part { + name: "bottom_bottom_arrow"; + description { + state: "default" 0.0; + rel1 { + relative: 0.5 1.0; + offset: -8 -17; + } + rel2 { + relative: 0.5 1.0; + offset: 9 0; + } + image { + normal: "e17_scrollbar_bottom_arrow.png"; + } + } + description { + state: "down" 0.0; + inherit: "default" 0.0; + image { + normal: "e17_scrollbar_bottom_arrow_down.png"; + } + } + } + part { + name: "bottom_top_arrow"; + description { + state: "default" 0.0; + rel1 { + relative: 0.0 0.0; + offset: 0 -18; + to: "bottom_bottom_arrow"; + } + rel2 { + relative: 1.0 0.0; + offset: -1 -1; + to: "bottom_bottom_arrow"; + } + image { + normal: "e17_scrollbar_top_arrow.png"; + } + } + description { + state: "down" 0.0; + inherit: "default" 0.0; + image { + normal: "e17_scrollbar_top_arrow_down.png"; + } + } + } + part { + name: "scrollbar_bar_confine"; + type: RECT; + description { + state: "default" 0.0; + visible: 0; + rel1 { + relative: 0.5 1.0; + offset: 9 0; + to_y: "top_top_arrow"; + } + rel2 { + relative: 0.5 0.0; + offset: 10 0; + to_y: "bottom_top_arrow"; + } + } + } + part { + name: "drag"; + dragable { + confine: "scrollbar_bar_confine"; + x: 0 0 0; + y: 1 1 1; + } + description { + state: "default" 0.0; + min: 18 58; + max: 18 58; + image { + normal: "e17_vhandle.png"; + border: 0 0 10 10; + } + } + description { + state: "down" 0.0; + inherit: "default" 0.0; + image { + normal: "e17_vhandle_down.png"; + } + } + } + part { + name: "drag_thumb"; + mouse_events: 0; + description { + state: "default" 0.0; + rel1 { + relative: 0.5 0.5; + offset: -4 -9; + to: "drag"; + } + rel2 { + relative: 0.5 0.5; + offset: 1 6; + to: "drag"; + } + image { + normal: "e17_vhandle_thumb.png"; + } + } + description { + state: "down" 0.0; + inherit: "default" 0.0; + rel1 { + offset: -3 -8; + } + rel2 { + offset: 2 7; + } + } + } + } + programs { + program { + name: "vscrollbar_drag_down"; + signal: "mouse,down,1"; + source: "drag"; + action: STATE_SET "down" 0.0; + target: "drag"; + target: "drag_thumb"; + } + program { + name: "vscrollbar_drag_up"; + signal: "mouse,up,1"; + source: "drag"; + action: STATE_SET "default" 0.0; + target: "drag"; + target: "drag_thumb"; + } + program { + name: "top_top_arrow_down"; + signal: "mouse,down,1"; + source: "top_top_arrow"; + action: STATE_SET "down" 0.0; + target: "top_top_arrow"; + after: "emit_scroll_top_start"; + } + program { + name: "top_top_arrow_up"; + signal: "mouse,up,1"; + source: "top_top_arrow"; + action: STATE_SET "default" 0.0; + target: "top_top_arrow"; + after: "emit_scroll_top_stop"; + } + program { + name: "bottom_top_arrow_down"; + signal: "mouse,down,1"; + source: "bottom_top_arrow"; + action: STATE_SET "down" 0.0; + target: "bottom_top_arrow"; + after: "emit_scroll_top_start"; + } + program { + name: "bottom_top_arrow_up"; + signal: "mouse,up,1"; + source: "bottom_top_arrow"; + action: STATE_SET "default" 0.0; + target: "bottom_top_arrow"; + after: "emit_scroll_top_stop"; + } + program { + name: "bottom_bottom_arrow_down"; + signal: "mouse,down,1"; + source: "bottom_bottom_arrow"; + action: STATE_SET "down" 0.0; + target: "bottom_bottom_arrow"; + after: "emit_scroll_bottom_start"; + } + program { + name: "bottom_bottom_arrow_up"; + signal: "mouse,up,1"; + source: "bottom_bottom_arrow"; + action: STATE_SET "default" 0.0; + target: "bottom_bottom_arrow"; + after: "emit_scroll_bottom_stop"; + } + program { + name: "emit_scroll_top_start"; + action: SIGNAL_EMIT "scroll_top_start" ""; + } + program { + name: "emit_scroll_top_stop"; + action: SIGNAL_EMIT "scroll_top_stop" ""; + } + program { + name: "emit_scroll_bottom_start"; + action: SIGNAL_EMIT "scroll_bottom_start" ""; + } + program { + name: "emit_scroll_bottom_stop"; + action: SIGNAL_EMIT "scroll_bottom_stop" ""; + } + } +} diff --git a/data/themes/images/e17_hhandle.png b/data/themes/images/e17_hhandle.png new file mode 100644 index 0000000000000000000000000000000000000000..71867ae3303e0b4e2d9fa5923bb03229d3923eee GIT binary patch literal 1415 zcmV;21$g?2P)#?000DYLP=Bz2nYy# z2xN!=00louL_t(oN8OgoiycK2#!vO_d+)p*l4ul(MqIeaLQ#w+VzP7LLN|g7LBWl# z1tCip{tx*pLX;8Q~zp$C3T)(+|$S^X_|Jo<8&3>cY~RB|XPxLnsJv(vrhsm|`6# za@t!J^_&nz$Q6QvAd06TSzD-CJD!&YyGUMpE|f^%40X^bR^nl4ddrT|zAY|2WBt9IrK%lWQ0H!`ymFh7qOxQPg*iXcDysLOh2#r6|_DqR1R#P15fJ#< zs5BOlNUT{4B~gi_5%z*on$a_Q&IgZvtbL_Fe?(AZ*u_vTQ_+XOQVk#^lss-^B;p3*Ix$W%S*sP1eC98L1Eh#NS zPDCLPU5^O315`s;kp^%i!amKYMmI2e#nHL!~1<2UL@QnzFwC?N4 zk*aw>CuCAG;656ZI#HTZtK!L?&dP^5whG?;t-Y8DY1*@XI=~S*#1cE$AKBqSZqrF& zg%XW}1)E=e|Jw%ENzK@y+j@+ZFXqX!+tWX1r+cVqsR)B z0QQlEelHTxUIEz(uV+}Tl>v%^N><=CS0lrK9MGd)`Rb?{$4?#Gq_l$w_xER!Cb~K^ z&A5|}uDSGN+u;?*;j&6Bo08I*`Vt9N)Wyv^<3Bd8ZEgH~{f<6M+sL1YYEz%5vL&p7 z)sKxeM1_7DIW>D`}o=6iIbhH7Sw2jqJ?c^+P0nmZYd!mz(4TJ!-|Y zyIAycgdEa3Co0U@(-IaB5mPGb6Vv|iIR3TOjhMRF|M{n-I!aSkvuL&C+uzO_ei2!T;F2Z{6uKibtwz%7|OI&M_X!|^@2|aATd)GY8?;_a+_BYbK VJ2x}@AWi@P002ovPDHLkV1mYx!4Lod literal 0 HcmV?d00001 diff --git a/data/themes/images/e17_hhandle_down.png b/data/themes/images/e17_hhandle_down.png new file mode 100644 index 0000000000000000000000000000000000000000..856c245b08d8090b04e15ec301c4ed7fe580e972 GIT binary patch literal 1234 zcmV;@1TFiCP)#?000DYLP=Bz2nYy# z2xN!=00fFjL_t(oN9~r&i(Ew%#!ub8-Sg;nW(*7@0ZBkXSK^@HLePKn<36kWeRZcN!!VhpNSr%!y6RS)s`Gu{ zIaS?e=g+wUPn81h3^tnUV68(t!}UKiRf9xUVBs`WPa?d6^D?%G&0`{+U{CTtZSQ|` zOyoQ!vKcnP23Y?jh|>tHe)`dkYd5aHyMFbB7uR~r&n~oDZ42I;_qn+wSmL||SDLRf zY-*18CRS;+*LZ13Qb#lVea%>1nDe{`d~0uYQCcYLW~|0HR6q_^DGtd=)5Ka>NEWP| zOo%tf`$Al(-qwf4PtA_HoiD2`_!} z!TaxQY;1gX>B>vp`NbtmT8^|fgn|GkGjc=>Q=;cF@7}8D=Y%Lit}q0GC`v)Hwoo&6 z)GrElk-X+yD6zmA{9I&1?1Y_CEAz1>X^%M-TN{rQk?A@W9+9S7cCfQ;(}}bG{;usj zdT4_zAAj-9?;qc}``|84!x`!HID7g_*WY{l=Edi(c6-aum@@0)&VUGyU7L(TDs&Y! zZs7!yCrEl#KiP5tvMGKdsbS_CZ-~iH|A%9eHSU0eXse@7$(L4$364aS2FVyAKH3VY z>)aMDR#pXPonL>jEZ?J;ce`)CeEBAXzr*QN!jfzL(&g2)_FQhQBqNB9!~sS*IUqI+eLKE#@`g>c1tIie+VWYB8-03IzUqw)vx;W{74rph1TViCyLyJnp) zgu`2Br3dLngn%@nda_*=L(2wxcCa_K{@B~-VBd-{$Cq#ymO5+Vgo&Frp*BuDAxt=< zlzk*Czn#XH@klBH6#;=iY*of05{Wfqp(HDjG{#&|Nz-~-&-&o;k7r-y&mS2SS!S4j zY$9Bj+yP~Q&joAGFQGAafOlwFSeA`AQA^A9CwAs^u&{_IFu+L(5xmDB7h^Q`kIZERU>9dyEY-tV3gY=FKnu~R7(ZE{b9B# zPU1gfd@{qsd-uM-{p$0bSIXX8HxdyrWuyX-l-4`hP?@$Mp$c?amCTitUXBhM!t(As3u?pV()_$ynG;LWs?I1)B zvBU=bkqQSnmsVkg3XO$T?Z@B#{MT)wADv&3ZX})2Z`#%M4`09b)@xVRS9KRdMRe-XfBP;Og>mpMOrdpg=zIAjN$FDl3DQO20 z_HQ3%n(S)LG-FS0boJ$@*bY@3i_0ppY)VOI`mI4BmVP=M6`Mak`1{u9Up>6f(3xLL w3T3nZ)enyuY03Q5{j{8sJ8#bwcuExb2S!>0#zYgX#Q*>R07*qoM6N<$f*SQmEC2ui literal 0 HcmV?d00001 diff --git a/data/themes/images/e17_hhandle_thumb.png b/data/themes/images/e17_hhandle_thumb.png new file mode 100644 index 0000000000000000000000000000000000000000..10a9324c6a71d811f68a3f6d0ed44d63984d2510 GIT binary patch literal 384 zcmV-`0e}99P)-cj000DYLP=Bz2nYy# z2xN!=00B5jL_t&-R~67vO2a@9fZ=~@l1+BgWRtXwisFMJTGN7$D&9b^;}yh5@1eKw z1f>sNz()&BtZmg;$A#hBftg_#g}kTxn~4hiYV*^o$T^z#879kEHgkGqkKa{|bp_3A zhE5#6->Xer%6*@lCKhY{~vy zCS#VGOuze=TK;U^9zz8s4n>8Qgkb#>mdek2B$U@(*WR^`nbG0?_Z#oOOB@%x7G>hg ztf?v;ofs*0<}=TG+gsaeyYA#|2THXcW;|@*kj=GJM7>CLqNZw#K*7!!h6kEK*<9JW zZHWi+wl^ELx$aZ^RJZ?nJ`00O%d*S`TiXoTW}jX5PkrWfrQ{wB#WhMxr%VWP(qvsK z(!t?!P#D}Kz2!6IvZVB*K6aVy`tCHiP<|Rw^_qKb!m%jVp^5?IM$n(#Z m<+1JCa&KN}zmsQf!(csiu~=;hy8wjj!L^`!@ec@YL>J=9z35I5aW6{6 zm8Ev+B1BuMrDb9>HEEJ2X+Gw<@JyMGsmX!Ey^A}~J?}m58N=}~nf0V_n*V&5>?M`v z1VEh1Bbb*t=mFD!uOO2F#y}5f>pC0-vcP#@5ts$0G7tw0fEKU;lz~oCRTebA^8D6v z@$wu&VFo#O5t?l}l?tkR`-FQ6zHLSB_QQ8~fM392QdJrx!1U6!MS62rF!>^;TY>&I zlCNRwO{^R#y`WDZ2}m;fTdR?)8xf2I#QAv$&R|c^B4WT8nw@@MX}%U>vY-JFUcd3+ zk+VKdJY*1omqVt`Vm%>tF^^xad<1HG{+OI}MZbY^rP64F1^EladRR|bD}}W%Iw%1< z+PQcX$N^p8`=y1OPv8*5V60$F4;$pT_jLJ_b}R%A^nF|wl*rrleeY|v8g-!$2F$R* z`gXkv`~)_ENLwHO&;Gu8>3-b(?A-nb7jHguz+2!ha21%znpsAG20$1D{+Cy;->(Xl7tr6#xJL07*qoM6N<$f(t_hi~s-t literal 0 HcmV?d00001 diff --git a/data/themes/images/e17_scrollbar_bottom_arrow_down.png b/data/themes/images/e17_scrollbar_bottom_arrow_down.png new file mode 100644 index 0000000000000000000000000000000000000000..4bef94fd72709d7359b78c71dbe3ceb7be6257d0 GIT binary patch literal 564 zcmV-40?Yl0P)=2{tO#U)%fL8r3aI2DJ~(!OEuaSU0AB>UvAXo= z&Ar=Wl&_AW@dar0=%ooik~WQ`O>Ot5pP7605NH7XB9H>r`;+4wk4+#WcaY9kFg3&| z#wbRAS9&R1k>)^WKg*{9w_crobF z7L+U+DaI-u=NFbgJPSSQo=+_ga=EI(~FnyUi-rq&sV;zRx717;5%@X z&qjtEbPQYvu7nD%18H{b{N;s9*me^#IL$Wr|CV287?f!<+4`CQ0000JP)aw)Bpei1W80e zR5;76l)r0}K^(?Ecki2|5lxIXu{A~n?a)Swickp=t-vl|7#N;LVFxoiRwfI(P|vkI4+#VhUiZ7$1*ngB=vBa_!IUAC}{*G*a z#UYTbFUWKOV6(qi0-{$@ACNtDbjJaq8ozcNIAal3BlRax%g}0e&;NeouqPJ^sNJ~z zZ1&{1DIzntAcb>rFdDnEgsE4t%^E!dR@onTsf9#5D5oCT$XZ-4Q;6CsYs74i8pb1n|+ZbSR?8M|}pg3{i$l+M7@3ml`UVUu?R&kIGZPdmn-NpOPH_Nno3|dI;F(Q?7gvr-9c% zZLL|85jQhH7TE3s8v?I@3b3-?>F)v)US-@rL9;u&;vc>p5pmmjlQyn?0?yRApU(=) Q#Q*>R07*qoM6N<$g5}~1w*UYD literal 0 HcmV?d00001 diff --git a/data/themes/images/e17_scrollbar_left_arrow_down.png b/data/themes/images/e17_scrollbar_left_arrow_down.png new file mode 100644 index 0000000000000000000000000000000000000000..25c1a4b243d7f12ea774653e83d57902f3e5db1e GIT binary patch literal 592 zcmV-W0; z@KL3)(P9;BL^PPN8{rykWHE`^#e46}ITlV}S+i(NVU>djt+Dv!zVi4=sWi|RxP(N6$@MLO6F>uqyFmun2b8nf>|~mz z)z8t}tHt6-9#znUKpiTA7T@EqTL41Sr6vOm04L|~-?%A1YS%`G*YhTAVB$Ka{Sg(x zd|$%!?*|Bd20JM#0L6=E4owBE28aU@G<5_v#-vMN9XRPM$ZsI^C2c-jc>Q5^=2Qi1 z5o^)JqShjbAkLz{Ks`;C@o#iEp9`yTVyE9cx;#5x9_n{-inD^Vf{5arFg7!H8+Zal z-HHTg15upVHV{?M&o2X0_pYBlSDh#do4|l7P84rO-Bz$uSfB+ofi+-lvG!?Yv9`K( ztUNfr*@{hbqs`M7^=H5;u<uWZXZI|9D!rq@ECuOqkn%>v*4rTb0S eTswb(J;zT#ce}D7x<^C+0000K@^6cnYlMzHr@ec?tT!^@E84hruSo9cv7w=s7MbS1_tJt_sn_Ez#fGfv!`X>0`dQV z3@`y?0T&2>ZNLYjzd=nxMFuzuoCbID(i&@0)M}mniIbNW9mlMMVe|(0C_q06bCPAI zQmLu*k>jY$97;P_6#0BO8HM$$p0_nPoGadUUH4TG1g}M5KiQ$(D3waHdMbw=)Ug(H z;Gv@~I%;$1U^^ZAOV=MixOD?400*R!5k>gEAJg+8sH6R_U^G@cC<@pfD)LyEpP9P? z$AAw&XZT*ffXd}^!}sRV*;(|&G}>rj2jXw&s0EJU$0eLZK zAP4G_EykKe0?cE020_X}L6oCEH^t%Ggh&>`HA*sOr%QvE=R3ocR g%vQXY|JB&|0sPv|9{}lRfB*mh07*qoM6N<$g7*~_X#fBK literal 0 HcmV?d00001 diff --git a/data/themes/images/e17_scrollbar_right_arrow_down.png b/data/themes/images/e17_scrollbar_right_arrow_down.png new file mode 100644 index 0000000000000000000000000000000000000000..d5f7672557d813dd8478f21ff5e7312e2441d502 GIT binary patch literal 618 zcmV-w0+s!VP)kMbRKCGATU@Hp#lmbDA8O#6J7zH z0u`VN3?_kWXRC(Nf@p(;f-(jb8pIedhBxolR=o#Ofbv130_<(pnrJPED72BGMFHi_ zR($%}@{^g+6kUG0KnhqNG;lwDS87ePC{PMZYQGfY;*Gm+Ujk*I+}-Ve2dbm6{2W=J z4>W+%*HWBXt5hfHw;#Ot_=G`P)g3)31X*7qpVm63L)ycW_IVEW8vLpSjGzJJaCyA=G=#K-h18)|67;?{tA{BR%ukm zKq4Ro8vZ>8++jf#U=}zFobkX6_yx#e+O5TLyu7jg=%svK)n}`>-o{aI6IcMk10)$n z1S|q~W&f4x_ZKSd#|k_Jt^?D69o=M0s+o+U@Z`6z+YgLQ!6snqY^~k70bBs)%BmU# z1;9+N*Keh1nm`B&TB&mCL~YXRwFFehfeerU3+<23??Vits1sBpT-N8wz2$5E0FHYJ zOc|)+kGj=tCRK1CJ&fewa$GK4TAHiPPA3Z$L-rHb`GSaoDpNBy5mAnBO5A^TNj00000NkvXX Hu0mjflVS6y literal 0 HcmV?d00001 diff --git a/data/themes/images/e17_scrollbar_top_arrow_down.png b/data/themes/images/e17_scrollbar_top_arrow_down.png new file mode 100644 index 0000000000000000000000000000000000000000..fb98a84c8c5507ee0192890f8daaa311c679596d GIT binary patch literal 541 zcmV+&0^ZT#%zqb1aZ*>f|5@C3xa=yg=HK0mVVpR?@U_^7*s73;OW2Ffs4t5w@yHr_mPC};o?))ubZ1g3zIxE8k?kq6RlcXKk!vJuRKDk?&I zJUs+V14n`3y@(QE;={Yg_c4Q@SP`&X2wMg7H|8z@onBSGL`?>qXf~^(SPs&~$rdI; z5ao2IHF^9*N9m{F@H!!citNVNUzfC2gH@+;1K{fUjQWA(=No`MpB64d^NTjIP2 zoGVHC7%&5z0$RXO&k6$Y3U~^<06qf0U5T|y^xllp2YXVi@l3u0pMYP0xITxRM1p}n f5z(luh!*V+9W9$DR2S)~00000NkvXXu0mjfG#BBG literal 0 HcmV?d00001 diff --git a/data/themes/images/e17_vhandle.png b/data/themes/images/e17_vhandle.png new file mode 100644 index 0000000000000000000000000000000000000000..e5c06f54cbc4d2981bc1969e1976302cac04f125 GIT binary patch literal 1549 zcmV+o2J-odP)g$p-=5KYAV0M~*G7lJFdE`%&y z_#d(qTxBPSLJ-}FuExhoqDU~1Fq-L^>6w1i>)z}4o$6buOm&a+84gu*A77vIoyWap zWU-j}aCnAQe*O}k&F<3+Il-|Q8nu+;uB8_5&w#ao_#Qxdc<)2`Oo#%hpanFaKLeNo zhDEv(LQ4jpe)7TfH{QH{d*}T23h!q!96s9p`kNo_-1+?bpD}*|9YZrH!BqlKW65W? zKfM0#d+&dF>B>u6X+M|9JP}*;ZoPIbd3`e6|M-iqe*0;@m#)$pwTwIjp*8)RH{ZH_ z`RXfMThCvVjm-h-*0;`WM6m$?he^jia0>C>Nk5Ianbxdx zZF_&)BDE@xVTDGTt}{qhd|pcAtXRu&S%bE%X)NL-MS;AlLA(Za1{$X#WhK6XbGC^z zxuGfurA@XDI+u&buh)X;@*Uu=ETyU~3RG~(LLl91BK&HkEemcy=R@lq9Owz$CgOPq8cdI)*xeP@mV~Q8E4b!p&3vQ49p;cj zd02w40%Tb2^nsh0j8NBrtzZ$!pj%oca}f4x>hdPCppC$X+BGGGSqcS+*4c7{x@24A zj0fSNjd({lVG4j^cF!f!3BP9=|j)C7Z=+utO<=1r8)T z0D*11FHeAu*Oj^h_ppZ`>;)7aMd>QXk+K2+{;}K~EL5HVoTMvQlrY8`9;3NQp#Q5g zTHJ9h22ey|F=@e-TI6w#XezB>k&o7pIf>??MfFqRtGanshdg~5m2x_jGM`Aog2l;U z(W^`3RSunH%bR}($eX@I$>#jV#_LR>ZMJ}$8B1r0bb#Vy3j7SfQ!2f4oA7D}CwM7t z@9<35I%JbnkrV(iz}6)lY~vYghOd;_N;1giCNvH_>jX`bc(rQ^0YW7p3gHeyj=?nH zb$NyGn~3-7`ksj!5l*B6k;9Q>an_yDM>=GiG=+0@SF4I+$+EHdWCOh}!sQlsrzO$> z@E& zPY&gHQp$|C5gaB(!DCpz(O4_g4p8_N`|zLR-OB#?c9tJVF&XJk zFG2a_w;6?2459zdpKTx?$X24EG?yQ~6uuup2lM}#M4SsB$DD5nZx;{WgJmm!t}m*> z0H&PHl}3@+pwEP!lZ$}bko{0xPqF5pkQdl6t))Ep@Hd(NNpe(Zku|i^p zx2*YrAhs;{0)D^<5wbyu;3!fMQb4f4!eD#sp6Qu>S8-1D*kRf=mU;&@y6T?ls?+zL z`>5L@|HlzRY09NTEqTiMb;uAhn6F83O&~GEw)gpfIJfn|yYJk-^Y)t`UB9ulZS71B z5C7QP-Tm&<&pzLMfaixkur~O{hwtCL_tT@VlF{G4*h&1d`Wo@@j0e;5SNLJV$eNa3zFFGZVL>YDQoWMOX`h$?7n8W8K846nm$QdVLs7+1SV z?z@yDE)rvMv3PqkDoo%W;HE64YBZWZdwywaaihu0;jjcP}!3rm(3p;G}Rjz-U(0NC1AKZb0x9 z2zQPl7&L<4ozMFbg3~j+dOB{-s4$2lkj$uNYz2sL-|zx40F8hbZldc!w1q}xSNGFX zO=RQU3{HR;T+5=C0-(O()u=WAf;o>4SO z!?djEppn)HKyW089lG8!&!AC}0g!W^;nk=C%3bM@G7$wZ1F(t-+hpQ>cS!hT6?8L@_DLK^@D zte&3Xb-!gARM3ih7~rS|+Lc@@p?Aj;(?~X4^gP!H0syU0A-e!Mejtumx*R`^!$9|N zXm&A8Tht=UQi5WFq_rseiYG71?2<6@lg(sR*x@LG1_mS>0D*1X`vbshaplZ`dDue` z)&dS5ML7H2eS3I;94i3ekLhNhq2mb{VblRAq>r6@6rJaQF3U4&=hY|xkS4KMP=hO{ zk;OUULaBpBRu2$4VROzR`)gOwKr}OFNrm*bz2$5sWj>XV35%1XMy)OpS2-lj{Kel3 zWYvo3a5(SS*v=HL%oZ>+W9oQ@7bpk^;HM9sBI#`mVbxWf;H8*@lclD4$tI~H5dZ>! zU6H82hHKy=yi;Tohb;p)p>W{Z1ZWrr-P#%goMi&S5az(;n2bWU%N^XWH2Z3{FYEv! zoJa*cha;)RS+}H)c*#~#1dyhxRmE7cED;;7qSk3NxBRxbIJ`i%$fQaS;PPCucqHX4 zlNnCh_%x9$MK|XeZ6K#cdb%%@Fp|NGl}tvdWRq0lB$sgv;EW2q3;L!c%t71k=YlFZ zK9O{$q(WMpPK_Lma)~De<{StI5AKD?Y-_{?`E*vK(aG_k_uC^$CMPnUmXfj?!Bg}A zB#8>AAkPqKG#4NIP&$n`O{yI4|~1n@#b*l27>uoUYc?=&c1*6 zc>m)szkc=rAR}t=@8J(qSFO8!9Jhge|H)&UOW(Tx*xWzP)d&tC?9n&?0000s$W-J%kax!3!RRb%Q>7)_WVOCIKFk~vE zBvo>50L2ywW|&_czq99l`aMpw)mNIO>wf{XE z)7O>#Du=M3x$xIzdlVTM7-c+N978;gzrB8NRf~cM+k?e&9?m^Yg%=ma`lsYy-TcF6 zuVVmnf175ry7>myN>BHF({=)9it}XVS!=VtYww+lFj~_?wOP*v1Cfnsrdirection == dir) + return; + + switch (dir) + { + case E_SCROLLBAR_HOR: + e_theme_edje_object_set(scrollbar_sd->edje_object, + "base/theme/widgets/hscrollbar", + "widgets/hscrollbar"); + break; + + case E_SCROLLBAR_VERT: + e_theme_edje_object_set(scrollbar_sd->edje_object, + "base/theme/widgets/vscrollbar", + "widgets/vscrollbar"); + break; + } +} + +E_Scrollbar_Direction +e_scrollbar_direction_get (Evas_Object *object) +{ + E_Scrollbar_Smart_Data *scrollbar_sd; + + if (!object || !(scrollbar_sd = evas_object_smart_data_get(object))) + return; + + return scrollbar_sd->direction; +} + +/************************** + * Private functions + **************************/ + +static void _e_scrollbar_smart_add(Evas_Object *object) +{ + Evas *evas; + E_Scrollbar_Smart_Data *scrollbar_sd; + + if (!object || !(evas = evas_object_evas_get(object))) + return; + + scrollbar_sd = calloc(1, sizeof(E_Scrollbar_Smart_Data)); + scrollbar_sd->value.min = 0.0; + scrollbar_sd->value.max = 1.0; + + scrollbar_sd->edje_object = edje_object_add(evas); + e_theme_edje_object_set(scrollbar_sd->edje_object, + "base/theme/widgets/hscrollbar", + "widgets/hscrollbar"); + + scrollbar_sd->direction = E_SCROLLBAR_HOR; + + evas_object_smart_member_add(scrollbar_sd->edje_object, object); + + evas_object_smart_data_set(object, scrollbar_sd); +} + +static void _e_scrollbar_smart_del(Evas_Object *object) +{ + E_Scrollbar_Smart_Data *scrollbar_sd; + + if (!object || !(scrollbar_sd = evas_object_smart_data_get(object))) + return; + + evas_object_del(scrollbar_sd->edje_object); + + free(scrollbar_sd); +} + +static void _e_scrollbar_smart_raise(Evas_Object *object) +{ + E_Scrollbar_Smart_Data *scrollbar_sd; + + if (!object || !(scrollbar_sd = evas_object_smart_data_get(object))) + return; + + evas_object_raise(scrollbar_sd->edje_object); +} + +static void _e_scrollbar_smart_lower(Evas_Object *object) +{ + E_Scrollbar_Smart_Data *scrollbar_sd; + + if (!object || !(scrollbar_sd = evas_object_smart_data_get(object))) + return; + + evas_object_lower(scrollbar_sd->edje_object); +} + +static void _e_scrollbar_smart_stack_above(Evas_Object *object, Evas_Object *above) +{ + E_Scrollbar_Smart_Data *scrollbar_sd; + + if (!object || !above || !(scrollbar_sd = evas_object_smart_data_get(object))) + return; + + evas_object_stack_above(scrollbar_sd->edje_object, above); +} + +/* Called when the object is stacked below another object */ +static void _e_scrollbar_smart_stack_below(Evas_Object *object, Evas_Object *below) +{ + E_Scrollbar_Smart_Data *scrollbar_sd; + + if (!object || !below || !(scrollbar_sd = evas_object_smart_data_get(object))) + return; + + evas_object_stack_below(scrollbar_sd->edje_object, below); +} + +/* Called when the object is moved */ +static void _e_scrollbar_smart_move(Evas_Object *object, Evas_Coord x, Evas_Coord y) +{ + E_Scrollbar_Smart_Data *scrollbar_sd; + + if (!object || !(scrollbar_sd = evas_object_smart_data_get(object))) + return; + + evas_object_move(scrollbar_sd->edje_object, x, y); +} + +/* Called when the object is resized */ +static void _e_scrollbar_smart_resize(Evas_Object *object, Evas_Coord w, Evas_Coord h) +{ + E_Scrollbar_Smart_Data *scrollbar_sd; + + if (!object || !(scrollbar_sd = evas_object_smart_data_get(object))) + return; + + evas_object_resize(scrollbar_sd->edje_object, w, h); +} + +static void _e_scrollbar_smart_show(Evas_Object *object) +{ + E_Scrollbar_Smart_Data *scrollbar_sd; + + if (!object || !(scrollbar_sd = evas_object_smart_data_get(object))) + return; + + evas_object_show(scrollbar_sd->edje_object); +} + +static void _e_scrollbar_smart_hide(Evas_Object *object) +{ + E_Scrollbar_Smart_Data *scrollbar_sd; + + if (!object || !(scrollbar_sd = evas_object_smart_data_get(object))) + return; + + evas_object_hide(scrollbar_sd->edje_object); +} + diff --git a/src/bin/e_scrollbar.h b/src/bin/e_scrollbar.h new file mode 100644 index 000000000..2ccd7a169 --- /dev/null +++ b/src/bin/e_scrollbar.h @@ -0,0 +1,18 @@ +#ifdef E_TYPEDEFS + +typedef enum _E_Scrollbar_Direction +{ + E_SCROLLBAR_HOR = 0, + E_SCROLLBAR_VERT = 1 +} E_Scrollbar_Direction; + +#else +#ifndef E_SCROLLBAR_H +#define E_SCROLLBAR_H + +EAPI Evas_Object *e_scrollbar_add(Evas *evas); +EAPI void e_scrollbar_direction_set_(Evas_Object *object, E_Scrollbar_Direction dir); +EAPI E_Scrollbar_Direction e_scrollbar_direction_get(Evas_Object *object); + +#endif +#endif