[virt-tools-list] [PATCH 4/5] window: Replace toolbar with headerbar (fullscreen)

Pavel Grunt pgrunt at redhat.com
Mon Dec 19 12:46:09 UTC 2016


On Mon, 2016-12-19 at 13:32 +0100, Fabiano Fidêncio wrote:
> On Mon, Dec 19, 2016 at 1:05 PM, Pavel Grunt <pgrunt at redhat.com>
> wrote:
> > Hey, would you mind splitting the usb icon change ?
> 
> I really don't see a good reason for that.

The commit would be shorter
The change of the icon would not be hidden
It could be merged separately

>  We would end up somewhere
> with an icon different of the rest for one commit, but yeah, could
> be
> done.
> 
> > The icon is  provided by some icon package or gtk ?
> 
> The icon currently used in these patches is provided by gtk itself.

The icon has been introduced in gtk 3.14 - it is needed to bump the
requirement

Pavel

> The one replaced was made specifically for virt-viewer.
> 
> > 
> > Pavel
> > 
> > On Sat, 2016-12-17 at 17:50 +0100, Fabiano Fidêncio wrote:
> > > From: Sagar Ghuge <ghugesss at gmail.com>
> > > 
> > > In order to give a modern look to {virt,remote}-viewer let's
> > > replace
> > > the
> > > old toolbar for a headerbar (it's the widget shown when the app
> > > is
> > > fullscreen).
> > > 
> > > The items in the headerbar are exactly the same ones present in
> > > the
> > > old
> > > toolbar.
> > > 
> > > Signed-off-by: Sagar Ghuge <ghugesss at gmail.com>
> > > ---
> > >  icons/24x24/Makefile.am                 |   4 -
> > >  icons/24x24/virt-viewer-usb.png         | Bin 1063 -> 0 bytes
> > >  icons/24x24/virt-viewer-usb.svg         | 204 ---------------
> > > ------
> > >  src/resources/ui/virt-viewer.ui         |  62 +++++++
> > >  src/resources/virt-viewer.gresource.xml |   1 -
> > >  src/virt-viewer-app.c                   |   2 +-
> > >  src/virt-viewer-timed-revealer.c        |   2 +-
> > >  src/virt-viewer-window.c                | 311 ++++-------------
> > > ----
> > > -----------
> > >  src/virt-viewer-window.h                |   2 +-
> > >  9 files changed, 105 insertions(+), 483 deletions(-)
> > >  delete mode 100644 icons/24x24/virt-viewer-usb.png
> > >  delete mode 100644 icons/24x24/virt-viewer-usb.svg
> > > 
> > > diff --git a/icons/24x24/Makefile.am b/icons/24x24/Makefile.am
> > > index f2b6388..85f7553 100644
> > > --- a/icons/24x24/Makefile.am
> > > +++ b/icons/24x24/Makefile.am
> > > @@ -5,8 +5,4 @@ apps_icondir =
> > > $(datadir)/icons/hicolor/$(size)/apps/
> > >  apps_icon_DATA = $(PACKAGE).png
> > >  EXTRA_DIST += $(apps_icon_DATA)
> > > 
> > > -devices_icondir = $(datadir)/icons/hicolor/$(size)/devices/
> > > -devices_icon_DATA = virt-viewer-usb.png virt-viewer-usb.svg
> > > -EXTRA_DIST += $(devices_icon_DATA)
> > > -
> > >  -include $(top_srcdir)/git.mk
> > > diff --git a/icons/24x24/virt-viewer-usb.png b/icons/24x24/virt-
> > > viewer-usb.png
> > > deleted file mode 100644
> > > index
> > > e23661e402387bd2601c634860d2627b0aebe721..0000000000000000000000
> > > 0000
> > > 00000000000000
> > > GIT binary patch
> > > literal 0
> > > HcmV?d00001
> > > 
> > > literal 1063
> > > zcmV+?1laqDP)<h;3K|Lk000e1NJLTq000;O000;W1^@s6;CDUv00006VoOIv0RI
> > > 60
> > > z0RN!9r;`8x1KdeOK~zYIm6lCtTvZgufA`)uv9=~5H8!DOT3ZV#;-
> > > ;lk5|a`XQK1Vz
> > > zz=f7tUFpu9;L;c?f}1YfDNPYU3A#vwh#&Q%X)SS~p|wpi+N8-
> > > OO){OAbdt`z`{m-z
> > > zymXS8Ko1;v at 6Y-CpL@@HVsv!0Mb`N<c;AI!3xM|?Aq4j#6+WH<@Qc&(c;Hp^MN>
> > > md
> > > zPeXm91VPzG2!Z!y#~3?1Jb?h7?|8HnG`15Wwku=cw=CzEo?gf<d>KTM?yi5JQLe
> > > 78
> > > zBu3R_G`+~l)4u`Gv`z8&-
> > > sVj^s^8Y2GIP^UN^4yTJl0yAb5(UAT%ouB0>*ia^Yr##
> > > zU?E(oY44l^z*?7*#u&T at Yi(66M4I0ION4oilnN;oVLrwRk*?|IJs4vMv^D at q*7f
> > > q)
> > > z&=tm}myk+U;A7KEd_HuA!Hbg>__yyrmpp522%NRV6je{~&MSv`??ev(oo}51;QX
> > > h@
> > > z09ajJ<?N;D3j4J<9%n6qu`xx?*{TV0xm)CNw*Zhz0WdQY2MzO4f|aEl$9pi=5NN
> > > F{
> > > zGF#^vIDdoTtBU}1v^Voo=ffx|5K<+!;fkj3tIG+tu>;Ur6If$$&L)`$hG!TYnM;
> > > fY
> > > zN9I5XUhdeLRGZ5e_-J69xiF%wwUJNW?xwlnegLMXt|y&XQ=-T at mt?*;wv1d?)gR
> > > *_
> > > zFC1=7 at Q=Sq$H7|~Ir-)jtcLUam#w7OITur8w81&QHUlXUvhu_ at 6wcWMpA940S{m
> > > p(
> > > zafrh0d92+yKj%C~8>BHNZpX%5Jae!OsZ at pDSC=A}*U9^?)<!;j;}9$1O`=FAzIU
> > > s0
> > > zcI_U-
> > > U|hw~gAbvU;=4bm@!nGxC>ECsocew)8R!Sc53rn_#Tc`p^1FwvwIQ(9U`ulV
> > > z$S%%v^uP{Y>)8zm@^>QozP`fcsW2IGxG=M6 at HjynH!#LvjIH1?lgW_DWJ)8Ey!+
> > > xl
> > > zP7O^mGLZ$KSS)TD9Ke{EBB`||o<sGeWsKp*<aJt`QV69GO7Y{>J0+fLt1%|N2ga
> > > Dv
> > > zf~vkM0Dc<R{QmE4Wa$*0o6uMXJ^NCdP*fUnOp&R%DggevDG=*c!r$|PBYSK6l;Z
> > > ~F
> > > zRyOM(6{J{qH3(FIwYsKHnR*!~h>~?tO}pB+BT5&rtX=!JZ|b9U6n9{?(Zymh<(#
> > > ki
> > > z$vm=0BIFK!{U_e4-TNP;d$%VuUA=1|1jS;6)h-IW=iGRDtmlzkdjcsXQp!@IwI6
> > > _`
> > > z+#=7m at 8s3a#{kG?v&_zB*t#`daHS7DLWtxPji;{}@9ob)v0#p+)9KS=W7nPnf|{
> > > h>
> > > hn;50k58lex{|8sH2#IslN<07n002ovPDHLkV1iv){{;X5
> > > 
> > > diff --git a/icons/24x24/virt-viewer-usb.svg b/icons/24x24/virt-
> > > viewer-usb.svg
> > > deleted file mode 100644
> > > index 4101f6e..0000000
> > > --- a/icons/24x24/virt-viewer-usb.svg
> > > +++ /dev/null
> > > @@ -1,204 +0,0 @@
> > > -<?xml version="1.0" encoding="UTF-8" standalone="no"?>
> > > -<!-- Created with Inkscape (http://www.inkscape.org/) -->
> > > -
> > > -<svg
> > > -   xmlns:dc="http://purl.org/dc/elements/1.1/"
> > > -   xmlns:cc="http://creativecommons.org/ns#"
> > > -   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
> > > -   xmlns:svg="http://www.w3.org/2000/svg"
> > > -   xmlns="http://www.w3.org/2000/svg"
> > > -   xmlns:xlink="http://www.w3.org/1999/xlink"
> > > -   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi
> > > -0.d
> > > td"
> > > -   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
> > > -   width="24"
> > > -   height="24"
> > > -   id="svg9434"
> > > -   version="1.1"
> > > -   inkscape:version="0.48.4 r9939"
> > > -   sodipodi:docname="usb.svg">
> > > -  <defs
> > > -     id="defs9436">
> > > -    <linearGradient
> > > -       inkscape:collect="always"
> > > -       id="linearGradient10012">
> > > -      <stop
> > > -         style="stop-color:#d3d7cf;stop-opacity:1"
> > > -         offset="0"
> > > -         id="stop10014" />
> > > -      <stop
> > > -         style="stop-color:#747671;stop-opacity:1"
> > > -         offset="1"
> > > -         id="stop10016" />
> > > -    </linearGradient>
> > > -    <linearGradient
> > > -       inkscape:collect="always"
> > > -       id="linearGradient9985">
> > > -      <stop
> > > -         style="stop-color:#a6a6a6;stop-opacity:1;"
> > > -         offset="0"
> > > -         id="stop9987" />
> > > -      <stop
> > > -         style="stop-color:#eeeeec;stop-opacity:1"
> > > -         offset="1"
> > > -         id="stop9989" />
> > > -    </linearGradient>
> > > -    <linearGradient
> > > -       inkscape:collect="always"
> > > -       id="linearGradient9977">
> > > -      <stop
> > > -         style="stop-color:#fafafa;stop-opacity:1;"
> > > -         offset="0"
> > > -         id="stop9979" />
> > > -      <stop
> > > -         style="stop-color:#fafafa;stop-opacity:0;"
> > > -         offset="1"
> > > -         id="stop9981" />
> > > -    </linearGradient>
> > > -    <linearGradient
> > > -       inkscape:collect="always"
> > > -       xlink:href="#linearGradient9401"
> > > -       id="linearGradient9407"
> > > -       x1="714.20172"
> > > -       y1="-81.798248"
> > > -       x2="714.20172"
> > > -       y2="-64.777008"
> > > -       gradientUnits="userSpaceOnUse"
> > > -       gradientTransform="translate(0,1)" />
> > > -    <linearGradient
> > > -       inkscape:collect="always"
> > > -       id="linearGradient9401">
> > > -      <stop
> > > -         style="stop-color:#2e5991;stop-opacity:1"
> > > -         offset="0"
> > > -         id="stop9403" />
> > > -      <stop
> > > -         style="stop-color:#4983c1;stop-opacity:1"
> > > -         offset="1"
> > > -         id="stop9405" />
> > > -    </linearGradient>
> > > -    <radialGradient
> > > -       inkscape:collect="always"
> > > -       xlink:href="#linearGradient9977"
> > > -       id="radialGradient9983"
> > > -       cx="12.001339"
> > > -       cy="1035.3622"
> > > -       fx="12.001339"
> > > -       fy="1035.3622"
> > > -       r="11.03125"
> > > -       gradientTransform="matrix(3.5911562,0,0,1.7223807,-
> > > 31.098681,-747.92565)"
> > > -       gradientUnits="userSpaceOnUse" />
> > > -    <linearGradient
> > > -       inkscape:collect="always"
> > > -       xlink:href="#linearGradient9985"
> > > -       id="linearGradient9991"
> > > -       x1="13.481804"
> > > -       y1="1057.5219"
> > > -       x2="13.481804"
> > > -       y2="1028.9601"
> > > -       gradientUnits="userSpaceOnUse" />
> > > -    <linearGradient
> > > -       inkscape:collect="always"
> > > -       xlink:href="#linearGradient10012"
> > > -       id="linearGradient10018"
> > > -       x1="20.287706"
> > > -       y1="1029.2219"
> > > -       x2="20.287706"
> > > -       y2="1052.9133"
> > > -       gradientUnits="userSpaceOnUse" />
> > > -  </defs>
> > > -  <sodipodi:namedview
> > > -     id="base"
> > > -     pagecolor="#ffffff"
> > > -     bordercolor="#666666"
> > > -     borderopacity="1.0"
> > > -     inkscape:pageopacity="1"
> > > -     inkscape:pageshadow="2"
> > > -     inkscape:zoom="1"
> > > -     inkscape:cx="14.456171"
> > > -     inkscape:cy="42.877288"
> > > -     inkscape:document-units="px"
> > > -     inkscape:current-layer="layer1"
> > > -     showgrid="false"
> > > -     inkscape:snap-nodes="false"
> > > -     inkscape:snap-bbox="true"
> > > -     borderlayer="true"
> > > -     inkscape:showpageshadow="false"
> > > -     showborder="false"
> > > -     inkscape:window-width="1311"
> > > -     inkscape:window-height="1189"
> > > -     inkscape:window-x="764"
> > > -     inkscape:window-y="173"
> > > -     inkscape:window-maximized="0">
> > > -    <inkscape:grid
> > > -       type="xygrid"
> > > -       id="grid9463"
> > > -       empspacing="5"
> > > -       visible="true"
> > > -       enabled="true"
> > > -       snapvisiblegridlinesonly="true" />
> > > -  </sodipodi:namedview>
> > > -  <metadata
> > > -     id="metadata9439">
> > > -    <rdf:RDF>
> > > -      <cc:Work
> > > -         rdf:about="">
> > > -        <dc:format>image/svg+xml</dc:format>
> > > -        <dc:type
> > > -           rdf:resource="http://purl.org/dc/dcmitype/StillImage
> > > " />
> > > -        <dc:title></dc:title>
> > > -      </cc:Work>
> > > -    </rdf:RDF>
> > > -  </metadata>
> > > -  <g
> > > -     inkscape:label="Layer 1"
> > > -     inkscape:groupmode="layer"
> > > -     id="layer1"
> > > -     transform="translate(0,-1028.3622)">
> > > -    <rect
> > > -       style="color:#000000;fill:url(#linearGradient9991);fill-
> > > opacity:1;fill-
> > > rule:nonzero;stroke:url(#linearGradient10018);stroke-
> > > width:0.99999994000000003;stroke-miterlimit:4;stroke-
> > > opacity:1;stroke-
> > > dasharray:none;marker:none;visibility:visible;display:inline;ove
> > > rflo
> > > w:visible;enable-background:accumulate"
> > > -       id="rect9973"
> > > -       width="23.000017"
> > > -       height="23.000017"
> > > -       x="0.5"
> > > -       y="1028.8622"
> > > -       rx="2.1213202"
> > > -       ry="2.1213202" />
> > > -    <path
> > > -       sodipodi:type="inkscape:offset"
> > > -       inkscape:radius="-0.9722718"
> > > -       inkscape:original="M 2.625 1028.875 C 1.4497886 1028.875
> > > 0.5
> > > 1029.7935 0.5 1030.9688 L 0.5 1049.75 C 0.5 1050.9252 1.4497886
> > > 1051.875 2.625 1051.875 L 21.375 1051.875 C 22.550211 1051.875
> > > 23.5
> > > 1050.9252 23.5 1049.75 L 23.5 1030.9688 C 23.5 1029.7935
> > > 22.550211
> > > 1028.875 21.375 1028.875 L 2.625 1028.875 z "
> > > -       xlink:href="#rect9973"
> > > -       style="color:#000000;fill:none;stroke:url(#radialGradien
> > > t998
> > > 3);stroke-width:0.99999994000000003;stroke-miterlimit:4;stroke-
> > > opacity:1;stroke-
> > > dasharray:none;marker:none;visibility:visible;display:inline;ove
> > > rflo
> > > w:visible;enable-background:accumulate"
> > > -       id="path9975"
> > > -       inkscape:href="#rect9973"
> > > -       d="m 2.625,1029.8438 c -0.6686179,0 -1.15625,0.4735
> > > -1.15625,1.125 l 0,18.7812 c 0,0.6513 0.5048954,1.1562
> > > 1.15625,1.1562 l 18.75,0 c 0.651354,0 1.15625,-0.5049 1.15625,-
> > > 1.1562 l 0,-18.7812 c 0,-0.6515 -0.487633,-1.125 -1.15625,-1.125 
> > > l
> > > -18.75,0 z" />
> > > -    <g
> > > -       transform="translate(-703,1112.3622)"
> > > -       style="display:inline;enable-background:new"
> > > -       id="g9411">
> > > -      <path
> > > -         d="m 715,-83 -4,5 3,0 0,7.5625 -1.3125,-1.3125 C
> > > 712.86766,-72.1354 713,-72.54648 713,-73 c 0,-1.65685 -1.34315,-
> > > 3
> > > -3,-3 -1.65685,0 -3,1.34315 -3,3 0,1.65685 1.34315,3 3,3
> > > 0.45352,0
> > > 0.8646,-0.13234 1.25,-0.3125 l 2.625,2.4375 0.125,0.09375 c
> > > -1.15835,0.41551 -2,1.51118 -2,2.8125 0,1.65685 1.34315,3 3,3
> > > 1.65685,0 3,-1.34315 3,-3 0,-1.30132 -0.84165,-2.39699 -2,-
> > > 2.8125 l
> > > 0,-2.78125 4.4375,-4.4375 2.5625,0 0,-4 -4,0 0,1 0,1.5625 -3,3
> > > 0,-
> > > 4.5625 3,0 -4,-5 z"
> > > -         inkscape:href="#path9368"
> > > -         id="path9399"
> > > -         style="font-size:medium;font-style:normal;font-
> > > variant:normal;font-weight:normal;font-stretch:normal;text-
> > > indent:0;text-align:start;text-decoration:none;line-
> > > height:normal;letter-spacing:normal;word-spacing:normal;text-
> > > transform:none;direction:ltr;block-progression:tb;writing-
> > > mode:lr-
> > > tb;text-anchor:start;baseline-
> > > shift:baseline;color:#000000;fill:#ffffff;fill-
> > > opacity:0.82488477;stroke:none;stroke-
> > > width:2;marker:none;visibility:visible;display:inline;overflow:v
> > > isib
> > > le;enable-background:accumulate;font-family:Sans;-inkscape-font-
> > > specification:Sans"
> > > -         xlink:href="#path9368"
> > > -         inkscape:original="M 715 -83 L 711 -78 L 714 -78 L 714
> > > -70.4375 L 712.6875 -71.75 C 712.86766 -72.1354 713 -72.54648
> > > 713
> > > -73 C 713 -74.65685 711.65685 -76 710 -76 C 708.34315 -76 707
> > > -74.65685 707 -73 C 707 -71.34315 708.34315 -70 710 -70 C
> > > 710.45352
> > > -70 710.8646 -70.13234 711.25 -70.3125 L 713.875 -67.875 L 714
> > > -67.78125 C 712.84165 -67.36574 712 -66.27007 712 -64.96875 C
> > > 712
> > > -63.3119 713.34315 -61.96875 715 -61.96875 C 716.65685 -61.96875
> > > 718
> > > -63.3119 718 -64.96875 C 718 -66.27007 717.15835 -67.36574 716
> > > -67.78125 L 716 -70.5625 L 720.4375 -75 L 723 -75 L 723 -79 L
> > > 719
> > > -79 L 719 -78 L 719 -76.4375 L 716 -73.4375 L 716 -78 L 719 -78
> > > L
> > > 715 -83 z "
> > > -         inkscape:radius="0"
> > > -         sodipodi:type="inkscape:offset"
> > > -         transform="translate(0,0.97227174)" />
> > > -      <path
> > > -         sodipodi:nodetypes="cccccsssscccsssccccccccccc"
> > > -         inkscape:connector-curvature="0"
> > > -         id="path9368"
> > > -         d="m 715,-83 -4,5 3,0 0,7.5625 -1.3125,-1.3125 C
> > > 712.86766,-72.1354 713,-72.54648 713,-73 c 0,-1.65685 -1.34315,-
> > > 3
> > > -3,-3 -1.65685,0 -3,1.34315 -3,3 0,1.65685 1.34315,3 3,3
> > > 0.45352,0
> > > 0.8646,-0.13234 1.25,-0.3125 l 2.61742,2.440641 0.13258,0.08709
> > > c
> > > -1.15835,0.41551 -2,1.51118 -2,2.8125 0,1.65685 1.34315,3 3,3
> > > 1.65685,0 3,-1.34315 3,-3 0,-1.30132 -0.84165,-2.39699 -2,-
> > > 2.8125 l
> > > 0,-2.777728 4.4375,-4.4375 2.5625,0 0,-4 -4,0 0,2.5625 -3,3 0,-
> > > 4.5625 3,0 z"
> > > -         style="font-size:medium;font-style:normal;font-
> > > variant:normal;font-weight:normal;font-stretch:normal;text-
> > > indent:0;text-align:start;text-decoration:none;line-
> > > height:normal;letter-spacing:normal;word-spacing:normal;text-
> > > transform:none;direction:ltr;block-progression:tb;writing-
> > > mode:lr-
> > > tb;text-anchor:start;baseline-
> > > shift:baseline;color:#000000;fill:url(#linearGradient9407);fill-
> > > opacity:1;stroke:none;stroke-
> > > width:2;marker:none;visibility:visible;display:inline;overflow:v
> > > isib
> > > le;enable-background:accumulate;font-family:Sans;-inkscape-font-
> > > specification:Sans" />
> > > -      <rect
> > > -         y="-84"
> > > -         x="703"
> > > -         height="24"
> > > -         width="24"
> > > -         id="rect9409"
> > > -         style="color:#000000;fill:none;stroke:none;stroke-
> > > width:2;marker:none;visibility:visible;display:inline;overflow:v
> > > isib
> > > le;enable-background:accumulate" />
> > > -    </g>
> > > -  </g>
> > > -</svg>
> > > diff --git a/src/resources/ui/virt-viewer.ui
> > > b/src/resources/ui/virt-viewer.ui
> > > index 42cd849..c211440 100644
> > > --- a/src/resources/ui/virt-viewer.ui
> > > +++ b/src/resources/ui/virt-viewer.ui
> > > @@ -222,4 +222,66 @@
> > >        </object>
> > >      </child>
> > >    </object>
> > > +  <object class="GtkHeaderBar" id="fullscreen-headerbar">
> > > +    <property name="visible">True</property>
> > > +    <property name="show-close-button">True</property>
> > > +    <child>
> > > +      <object class="GtkButton" id="fullscreen-usb-devices">
> > > +        <property name="visible">False</property>
> > > +        <property name="tooltip-text">USB device
> > > selection</property>
> > > +        <style>
> > > +          <class name="image-button"/>
> > > +        </style>
> > > +        <child>
> > > +          <object class="GtkImage" id="fullscreen-usb-devices-
> > > icon">
> > > +            <property name="visible">True</property>
> > > +            <property name="icon-name">media-removable-
> > > symbolic</property>
> > > +            <property name="icon-size">1</property>
> > > +          </object>
> > > +        </child>
> > > +      </object>
> > > +      <packing>
> > > +        <property name="pack-type">end</property>
> > > +      </packing>
> > > +    </child>
> > > +    <child>
> > > +      <object class="GtkMenuButton" id="fullscreen-send-keys">
> > > +        <property name="visible">True</property>
> > > +        <property name="use-popover">True</property>
> > > +        <property name="tooltip-text">Send key
> > > combination</property>
> > > +        <style>
> > > +          <class name="image-button"/>
> > > +        </style>
> > > +        <child>
> > > +          <object class="GtkImage" id="fullscreen-send-keys-
> > > icon">
> > > +            <property name="visible">True</property>
> > > +            <property name="icon-name">input-keyboard-
> > > symbolic</property>
> > > +            <property name="icon-size">1</property>
> > > +          </object>
> > > +        </child>
> > > +      </object>
> > > +      <packing>
> > > +        <property name="pack-type">end</property>
> > > +      </packing>
> > > +    </child>
> > > +    <child>
> > > +      <object class="GtkButton" id="leave-fullscreen">
> > > +        <property name="visible">True</property>
> > > +        <property name="tooltip-text">Leave
> > > fullscreen</property>
> > > +        <style>
> > > +          <class name="image-button"/>
> > > +        </style>
> > > +        <child>
> > > +          <object class="GtkImage" id="leave-fullscreen-image">
> > > +            <property name="visible">True</property>
> > > +            <property name="icon-name">view-restore-
> > > symbolic</property>
> > > +            <property name="icon-size">1</property>
> > > +          </object>
> > > +        </child>
> > > +      </object>
> > > +      <packing>
> > > +        <property name="pack-type">end</property>
> > > +      </packing>
> > > +    </child>
> > > +  </object>
> > >  </interface>
> > > diff --git a/src/resources/virt-viewer.gresource.xml
> > > b/src/resources/virt-viewer.gresource.xml
> > > index f4fbab9..7bd66f9 100644
> > > --- a/src/resources/virt-viewer.gresource.xml
> > > +++ b/src/resources/virt-viewer.gresource.xml
> > > @@ -14,7 +14,6 @@
> > >      <file alias="icons/16x16/virt-
> > > viewer.png">../../icons/16x16/virt-viewer.png</file>
> > >      <file alias="icons/22x22/virt-
> > > viewer.png">../../icons/22x22/virt-viewer.png</file>
> > >      <file alias="icons/24x24/virt-
> > > viewer.png">../../icons/24x24/virt-viewer.png</file>
> > > -    <file alias="icons/24x24/virt-viewer-
> > > usb.png">../../icons/24x24/virt-viewer-usb.png</file>
> > >      <file alias="icons/32x32/virt-
> > > viewer.png">../../icons/32x32/virt-viewer.png</file>
> > >      <file alias="icons/48x48/virt-
> > > viewer.png">../../icons/48x48/virt-viewer.png</file>
> > >      <file alias="icons/256x256/virt-
> > > viewer.png">../../icons/256x256/virt-viewer.png</file>
> > > diff --git a/src/virt-viewer-app.c b/src/virt-viewer-app.c
> > > index 580bef0..fa8b008 100644
> > > --- a/src/virt-viewer-app.c
> > > +++ b/src/virt-viewer-app.c
> > > @@ -2375,7 +2375,7 @@ window_update_menu_displays_cb(gpointer
> > > value,
> > >      GtkMenuButton *button =
> > > virt_viewer_window_get_menu_button_displays(VIRT_VIEWER_WINDOW(v
> > > alue
> > > ));
> > > 
> > >      sensitive = (keys != NULL);
> > > -    virt_viewer_window_set_menu_displays_sensitive(VIRT_VIEWER_
> > > WIND
> > > OW(value), sensitive);
> > > +    virt_viewer_window_set_headerbar_displays_sensitive(VIRT_VI
> > > EWER
> > > _WINDOW(value), sensitive);
> > > 
> > >      tmp = keys;
> > >      while (tmp) {
> > > diff --git a/src/virt-viewer-timed-revealer.c b/src/virt-viewer-
> > > timed-revealer.c
> > > index 3c48ab5..fbb8583 100644
> > > --- a/src/virt-viewer-timed-revealer.c
> > > +++ b/src/virt-viewer-timed-revealer.c
> > > @@ -178,7 +178,7 @@ virt_viewer_timed_revealer_new(GtkWidget
> > > *toolbar)
> > >       */
> > > 
> > >      gtk_container_add(GTK_CONTAINER(self), priv->revealer);
> > > -    gtk_widget_set_halign(GTK_WIDGET(self), GTK_ALIGN_CENTER);
> > > +    gtk_widget_set_halign(GTK_WIDGET(self), GTK_ALIGN_FILL);
> > >      gtk_widget_set_valign(GTK_WIDGET(self), GTK_ALIGN_START);
> > >      gtk_widget_show_all(GTK_WIDGET(self));
> > > 
> > > diff --git a/src/virt-viewer-window.c b/src/virt-viewer-window.c
> > > index c1278ca..60ab088 100644
> > > --- a/src/virt-viewer-window.c
> > > +++ b/src/virt-viewer-window.c
> > > @@ -56,11 +56,10 @@ void virt_viewer_window_menu_send(GtkWidget
> > > *menu, VirtViewerWindow *self);
> > >  static void
> > > virt_viewer_window_enable_modifiers(VirtViewerWindow
> > > *self);
> > >  static void
> > > virt_viewer_window_disable_modifiers(VirtViewerWindow
> > > *self);
> > >  static void virt_viewer_window_queue_resize(VirtViewerWindow
> > > *self);
> > > -static void virt_viewer_window_toolbar_setup(VirtViewerWindow
> > > *self);
> > > +static void
> > > virt_viewer_window_fullscreen_headerbar_setup(VirtViewerWindow
> > > *self);
> > >  static void
> > > virt_viewer_window_menu_view_fullscreen(VirtViewerWindow *self);
> > >  static void usb_device_selection_activated(GSimpleAction
> > > *action,
> > > GVariant *parameter, gpointer window);
> > > 
> > > -static GtkMenu*
> > > virt_viewer_window_get_keycombo_menu(VirtViewerWindow *self);
> > >  static gint
> > > virt_viewer_window_get_minimal_zoom_level(VirtViewerWindow
> > > *self);
> > > 
> > > 
> > > @@ -82,10 +81,9 @@ struct _VirtViewerWindowPrivate {
> > > 
> > >      GtkBuilder *builder;
> > >      GtkWidget *window;
> > > -    GtkWidget *toolbar;
> > >      GtkWidget *header;
> > > +    GtkWidget *fullscreen_headerbar;
> > >      GtkWidget *toolbar_usb_device_selection;
> > > -    GtkWidget *toolbar_send_key;
> > >      GtkAccelGroup *accel_group;
> > >      VirtViewerNotebook *notebook;
> > >      VirtViewerDisplay *display;
> > > @@ -192,7 +190,7 @@ virt_viewer_window_dispose (GObject *object)
> > >      priv->subtitle = NULL;
> > > 
> > >      g_value_unset(&priv->accel_setting);
> > > -    priv->toolbar = NULL;
> > > +    priv->fullscreen_headerbar = NULL;
> > > 
> > >      G_OBJECT_CLASS (virt_viewer_window_parent_class)->dispose
> > > (object);
> > >  }
> > > @@ -248,14 +246,6 @@ virt_viewer_window_class_init
> > > (VirtViewerWindowClass *klass)
> > >                                                          G_PARAM
> > > _STA
> > > TIC_STRINGS));
> > >  }
> > > 
> > > -static gboolean
> > > -can_activate_cb (GtkWidget *widget G_GNUC_UNUSED,
> > > -                 guint signal_id G_GNUC_UNUSED,
> > > -                 VirtViewerWindow *self G_GNUC_UNUSED)
> > > -{
> > > -    return TRUE;
> > > -}
> > > -
> > >  static void
> > >  fullscreen_activated(GSimpleAction *action G_GNUC_UNUSED,
> > >                       GVariant *parameter G_GNUC_UNUSED,
> > > @@ -692,7 +682,7 @@ virt_viewer_window_init (VirtViewerWindow
> > > *self)
> > >      priv->accel_group =
> > > GTK_ACCEL_GROUP(gtk_builder_get_object(priv->builder,
> > > "accelgroup"));
> > > 
> > >      vbox = GTK_WIDGET(gtk_builder_get_object(priv->builder,
> > > "viewer-box"));
> > > -    virt_viewer_window_toolbar_setup(self);
> > > +    virt_viewer_window_fullscreen_headerbar_setup(self);
> > > 
> > >      gtk_box_pack_end(GTK_BOX(vbox), GTK_WIDGET(priv->notebook),
> > > TRUE, TRUE, 0);
> > > 
> > > @@ -822,7 +812,7 @@
> > > virt_viewer_window_leave_fullscreen(VirtViewerWindow *self)
> > >          virt_viewer_display_set_fullscreen(priv->display,
> > > FALSE);
> > >      }
> > >      virt_viewer_timed_revealer_force_reveal(priv->revealer,
> > > FALSE);
> > > -    gtk_widget_hide(priv->toolbar);
> > > +    gtk_widget_hide(priv->fullscreen_headerbar);
> > >      gtk_widget_set_size_request(priv->window, -1, -1);
> > >      gtk_window_unfullscreen(GTK_WINDOW(priv->window));
> > > 
> > > @@ -853,7 +843,7 @@
> > > virt_viewer_window_enter_fullscreen(VirtViewerWindow *self, gint
> > > monitor)
> > >          return;
> > >      }
> > > 
> > > -    gtk_widget_show(priv->toolbar);
> > > +    gtk_widget_show(priv->fullscreen_headerbar);
> > >      virt_viewer_timed_revealer_force_reveal(priv->revealer,
> > > TRUE);
> > > 
> > >      if (priv->display) {
> > > @@ -865,174 +855,6 @@
> > > virt_viewer_window_enter_fullscreen(VirtViewerWindow *self, gint
> > > monitor)
> > >      gtk_window_fullscreen(GTK_WINDOW(priv->window));
> > >  }
> > > 
> > > -#define MAX_KEY_COMBO 4
> > > -struct keyComboDef {
> > > -    guint keys[MAX_KEY_COMBO];
> > > -    const char *label;
> > > -    const gchar* accel_path;
> > > -};
> > > -
> > > -struct gkeyComboDef {
> > > -    const char *label;
> > > -    const gchar* action;
> > > -};
> > > -
> > > -static const struct keyComboDef keyCombos[] = {
> > > -    { { GDK_KEY_Control_L, GDK_KEY_Alt_L, GDK_KEY_Delete,
> > > GDK_KEY_VoidSymbol }, N_("Ctrl+Alt+_Del"), "<virt-
> > > viewer>/send/secure-attention"},
> > > -    { { GDK_KEY_Control_L, GDK_KEY_Alt_L, GDK_KEY_BackSpace,
> > > GDK_KEY_VoidSymbol }, N_("Ctrl+Alt+_Backspace"), NULL},
> > > -    { { GDK_KEY_VoidSymbol }, "" , NULL},
> > > -    { { GDK_KEY_Control_L, GDK_KEY_Alt_L, GDK_KEY_F1,
> > > GDK_KEY_VoidSymbol }, N_("Ctrl+Alt+F_1"), NULL},
> > > -    { { GDK_KEY_Control_L, GDK_KEY_Alt_L, GDK_KEY_F2,
> > > GDK_KEY_VoidSymbol }, N_("Ctrl+Alt+F_2"), NULL},
> > > -    { { GDK_KEY_Control_L, GDK_KEY_Alt_L, GDK_KEY_F3,
> > > GDK_KEY_VoidSymbol }, N_("Ctrl+Alt+F_3"), NULL},
> > > -    { { GDK_KEY_Control_L, GDK_KEY_Alt_L, GDK_KEY_F4,
> > > GDK_KEY_VoidSymbol }, N_("Ctrl+Alt+F_4"), NULL},
> > > -    { { GDK_KEY_Control_L, GDK_KEY_Alt_L, GDK_KEY_F5,
> > > GDK_KEY_VoidSymbol }, N_("Ctrl+Alt+F_5"), NULL},
> > > -    { { GDK_KEY_Control_L, GDK_KEY_Alt_L, GDK_KEY_F6,
> > > GDK_KEY_VoidSymbol }, N_("Ctrl+Alt+F_6"), NULL},
> > > -    { { GDK_KEY_Control_L, GDK_KEY_Alt_L, GDK_KEY_F7,
> > > GDK_KEY_VoidSymbol }, N_("Ctrl+Alt+F_7"), NULL},
> > > -    { { GDK_KEY_Control_L, GDK_KEY_Alt_L, GDK_KEY_F8,
> > > GDK_KEY_VoidSymbol }, N_("Ctrl+Alt+F_8"), NULL},
> > > -    { { GDK_KEY_Control_L, GDK_KEY_Alt_L, GDK_KEY_F9,
> > > GDK_KEY_VoidSymbol }, N_("Ctrl+Alt+F_9"), NULL},
> > > -    { { GDK_KEY_Control_L, GDK_KEY_Alt_L, GDK_KEY_F10,
> > > GDK_KEY_VoidSymbol }, N_("Ctrl+Alt+F1_0"), NULL},
> > > -    { { GDK_KEY_Control_L, GDK_KEY_Alt_L, GDK_KEY_F11,
> > > GDK_KEY_VoidSymbol }, N_("Ctrl+Alt+F11"), NULL},
> > > -    { { GDK_KEY_Control_L, GDK_KEY_Alt_L, GDK_KEY_F12,
> > > GDK_KEY_VoidSymbol }, N_("Ctrl+Alt+F12"), NULL},
> > > -    { { GDK_KEY_VoidSymbol }, "" , NULL},
> > > -    { { GDK_KEY_Print, GDK_KEY_VoidSymbol }, "_PrintScreen",
> > > NULL},
> > > -};
> > > -
> > > -static guint
> > > -get_nkeys(const guint *keys)
> > > -{
> > > -    guint i;
> > > -
> > > -    for (i = 0; keys[i] != GDK_KEY_VoidSymbol; )
> > > -        i++;
> > > -
> > > -    return i;
> > > -}
> > > -
> > > -G_MODULE_EXPORT void
> > > -virt_viewer_window_menu_send(GtkWidget *menu,
> > > -                             VirtViewerWindow *self)
> > > -{
> > > -    VirtViewerWindowPrivate *priv = self->priv;
> > > -
> > > -    g_return_if_fail(priv->display != NULL);
> > > -    guint *keys = g_object_get_data(G_OBJECT(menu), "vv-keys");
> > > -    g_return_if_fail(keys != NULL);
> > > -
> > > -    virt_viewer_display_send_keys(VIRT_VIEWER_DISPLAY(priv-
> > > > display),
> > > 
> > > -                                  keys, get_nkeys(keys));
> > > -}
> > > -
> > > -static void
> > > -virt_viewer_menu_add_combo(VirtViewerWindow *self, GtkMenu
> > > *menu,
> > > -                           const guint *keys, const gchar
> > > *label,
> > > const gchar* accel_path)
> > > -{
> > > -    GtkWidget *item;
> > > -
> > > -    if (keys == NULL || keys[0] == GDK_KEY_VoidSymbol) {
> > > -        item = gtk_separator_menu_item_new();
> > > -    } else {
> > > -        item = gtk_menu_item_new_with_mnemonic(label);
> > > -        if (accel_path) {
> > > -            gtk_menu_item_set_accel_path(GTK_MENU_ITEM(item),
> > > accel_path);
> > > -            /* make accel work in fullscreen */
> > > -            g_signal_connect(item, "can-activate-accel",
> > > G_CALLBACK(can_activate_cb), self);
> > > -        }
> > > -        guint *ckeys = g_memdup(keys, (get_nkeys(keys) + 1) *
> > > sizeof(guint));
> > > -        g_object_set_data_full(G_OBJECT(item), "vv-keys",
> > > ckeys,
> > > g_free);
> > > -        g_signal_connect(item, "activate",
> > > G_CALLBACK(virt_viewer_window_menu_send), self);
> > > -    }
> > > -
> > > -    gtk_container_add(GTK_CONTAINER(menu), item);
> > > -}
> > > -
> > > -static guint*
> > > -accel_key_to_keys(const GtkAccelKey *key)
> > > -{
> > > -    guint i;
> > > -    guint *val, *keys;
> > > -    const struct {
> > > -        const guint mask;
> > > -        const guint key;
> > > -    } modifiers[] = {
> > > -        {GDK_SHIFT_MASK, GDK_KEY_Shift_L},
> > > -        {GDK_CONTROL_MASK, GDK_KEY_Control_L},
> > > -        {GDK_MOD1_MASK, GDK_KEY_Alt_L},
> > > -    };
> > > -
> > > -    g_warn_if_fail((key->accel_mods &
> > > -                    ~(GDK_SHIFT_MASK | GDK_CONTROL_MASK |
> > > GDK_MOD1_MASK)) == 0);
> > > -
> > > -    keys = val = g_new(guint, 5); /* up to 3 modifiers, key and
> > > the
> > > stop symbol */
> > > -    /* first, send the modifiers */
> > > -    for (i = 0; i < G_N_ELEMENTS(modifiers); i++) {
> > > -        if (key->accel_mods & modifiers[i].mask)
> > > -            *val++ = modifiers[i].key;
> > > -    }
> > > -
> > > -    /* only after, the non-modifier key (ctrl-t, not t-ctrl) */
> > > -    *val++ = key->accel_key;
> > > -    /* stop symbol */
> > > -    *val = GDK_KEY_VoidSymbol;
> > > -
> > > -    return keys;
> > > -}
> > > -
> > > -struct accelCbData
> > > -{
> > > -    VirtViewerWindow *self;
> > > -    GtkMenu *menu;
> > > -};
> > > -
> > > -static void
> > > -accel_map_item_cb(gpointer data,
> > > -                  const gchar *accel_path,
> > > -                  guint accel_key,
> > > -                  GdkModifierType accel_mods,
> > > -                  gboolean changed G_GNUC_UNUSED)
> > > -{
> > > -    struct accelCbData *d = data;
> > > -    GtkAccelKey key = {
> > > -        .accel_key = accel_key,
> > > -        .accel_mods = accel_mods
> > > -    };
> > > -
> > > -    if (!g_str_has_prefix(accel_path, "<virt-viewer>"))
> > > -        return;
> > > -    if (accel_key == GDK_KEY_VoidSymbol || accel_key == 0)
> > > -        return;
> > > -
> > > -    guint *keys = accel_key_to_keys(&key);
> > > -    gchar *label = gtk_accelerator_get_label(accel_key,
> > > accel_mods);
> > > -    virt_viewer_menu_add_combo(d->self, d->menu, keys, label,
> > > NULL);
> > > -    g_free(label);
> > > -    g_free(keys);
> > > -}
> > > -
> > > -static GtkMenu*
> > > -virt_viewer_window_get_keycombo_menu(VirtViewerWindow *self)
> > > -{
> > > -    gint i;
> > > -    VirtViewerWindowPrivate *priv = self->priv;
> > > -    GtkMenu *menu = GTK_MENU(gtk_menu_new());
> > > -    gtk_menu_set_accel_group(menu, priv->accel_group);
> > > -
> > > -    for (i = 0 ; i < G_N_ELEMENTS(keyCombos); i++) {
> > > -        virt_viewer_menu_add_combo(self, menu,
> > > keyCombos[i].keys,
> > > keyCombos[i].label, keyCombos[i].accel_path);
> > > -    }
> > > -
> > > -    if (virt_viewer_app_get_enable_accel(priv->app)) {
> > > -        struct accelCbData d = {
> > > -            .self = self,
> > > -            .menu = menu
> > > -        };
> > > -
> > > -        gtk_accel_map_foreach(&d, accel_map_item_cb);
> > > -    }
> > > -
> > > -    gtk_widget_show_all(GTK_WIDGET(menu));
> > > -    return menu;
> > > -}
> > > -
> > >  void
> > >  virt_viewer_window_disable_modifiers(VirtViewerWindow *self)
> > >  {
> > > @@ -1109,15 +931,6 @@ virt_viewer_window_delete(GtkWidget *src
> > > G_GNUC_UNUSED,
> > >      return TRUE;
> > >  }
> > > 
> > > -
> > > -static void
> > > -virt_viewer_window_menu_file_quit(GtkWidget *src G_GNUC_UNUSED,
> > > -                                  VirtViewerWindow *self)
> > > -{
> > > -    virt_viewer_app_maybe_quit(self->priv->app, self);
> > > -}
> > > -
> > > -
> > >  static void
> > >  virt_viewer_window_set_fullscreen(VirtViewerWindow *self,
> > >                                    gboolean fullscreen)
> > > @@ -1135,39 +948,12 @@
> > > virt_viewer_window_set_fullscreen(VirtViewerWindow *self,
> > >  }
> > > 
> > >  static void
> > > -virt_viewer_window_toolbar_leave_fullscreen(GtkWidget *button
> > > G_GNUC_UNUSED,
> > > +virt_viewer_window_headerbar_leave_fullscreen(GtkWidget *button
> > > G_GNUC_UNUSED,
> > >                                              VirtViewerWindow
> > > *self)
> > >  {
> > >      virt_viewer_window_set_fullscreen(self, FALSE);
> > >  }
> > > 
> > > -static void keycombo_menu_location(GtkMenu *menu G_GNUC_UNUSED,
> > > gint *x, gint *y,
> > > -                                   gboolean *push_in, gpointer
> > > user_data)
> > > -{
> > > -    VirtViewerWindow *self = user_data;
> > > -    GtkAllocation allocation;
> > > -    GtkWidget *toplevel = gtk_widget_get_toplevel(self->priv-
> > > > toolbar_send_key);
> > > 
> > > -
> > > -    *push_in = TRUE;
> > > -    gdk_window_get_origin(gtk_widget_get_window(toplevel), x,
> > > y);
> > > -    gtk_widget_translate_coordinates(self->priv-
> > > >toolbar_send_key,
> > > toplevel,
> > > -                                     *x, *y, x, y);
> > > -    gtk_widget_get_allocation(self->priv->toolbar_send_key,
> > > &allocation);
> > > -    *y += allocation.height;
> > > -}
> > > -
> > > -static void
> > > -virt_viewer_window_toolbar_send_key(GtkWidget *button
> > > G_GNUC_UNUSED,
> > > -                                    VirtViewerWindow *self)
> > > -{
> > > -    GtkMenu *menu = virt_viewer_window_get_keycombo_menu(self);
> > > -    gtk_menu_attach_to_widget(menu, self->priv->window, NULL);
> > > -    g_object_ref_sink(menu);
> > > -    gtk_menu_popup(menu, NULL, NULL, keycombo_menu_location,
> > > self,
> > > -                   0, gtk_get_current_event_time());
> > > -    g_object_unref(menu);
> > > -}
> > > -
> > >  static void
> > >  virt_viewer_window_menu_view_fullscreen(VirtViewerWindow *self)
> > >  {
> > > @@ -1184,56 +970,39 @@
> > > virt_viewer_window_guest_details_response(GtkDialog *dialog,
> > >  }
> > > 
> > >  static void
> > > -virt_viewer_window_toolbar_setup(VirtViewerWindow *self)
> > > +virt_viewer_window_headerbar_usb_device_selection(GtkWidget
> > > *menu
> > > G_GNUC_UNUSED,
> > > +                                                  VirtViewerWin
> > > dow
> > > *self)
> > > +{
> > > +    virt_viewer_session_usb_device_selection(virt_viewer_app_ge
> > > t_se
> > > ssion(self->priv->app),
> > > +                                             GTK_WINDOW(self-
> > > >priv-
> > > > window));
> > > 
> > > +}
> > > +
> > > +static void
> > > +virt_viewer_window_fullscreen_headerbar_setup(VirtViewerWindow
> > > *self)
> > >  {
> > > -    GtkWidget *button;
> > >      GtkWidget *overlay;
> > > +    GtkWidget *leave_fullscreen_button;
> > > +    GtkWidget *usb_devices_button;
> > > +    GtkWidget *send_keys_button;
> > > +    GMenuModel *send_keys_menu;
> > > +
> > >      VirtViewerWindowPrivate *priv = self->priv;
> > > 
> > > -    priv->toolbar = gtk_toolbar_new();
> > > -    gtk_toolbar_set_show_arrow(GTK_TOOLBAR(priv->toolbar),
> > > FALSE);
> > > -    gtk_widget_set_no_show_all(priv->toolbar, TRUE);
> > > -    gtk_toolbar_set_style(GTK_TOOLBAR(priv->toolbar),
> > > GTK_TOOLBAR_BOTH_HORIZ);
> > > -
> > > -    /* Close connection */
> > > -    button = GTK_WIDGET(gtk_tool_button_new(NULL, NULL));
> > > -    gtk_tool_button_set_icon_name(GTK_TOOL_BUTTON(button),
> > > "window-
> > > close");
> > > -    gtk_tool_item_set_tooltip_text(GTK_TOOL_ITEM(button),
> > > _("Disconnect"));
> > > -    gtk_widget_show(button);
> > > -    gtk_toolbar_insert(GTK_TOOLBAR(priv->toolbar),
> > > GTK_TOOL_ITEM
> > > (button), 0);
> > > -    g_signal_connect(button, "clicked",
> > > G_CALLBACK(virt_viewer_window_menu_file_quit), self);
> > > -
> > > -    /* USB Device selection */
> > > -    button =
> > > gtk_image_new_from_resource(VIRT_VIEWER_RESOURCE_PREFIX"/icons/2
> > > 4x24
> > > /virt-viewer-usb.png");
> > > -    button = GTK_WIDGET(gtk_tool_button_new(button, NULL));
> > > -    gtk_tool_button_set_label(GTK_TOOL_BUTTON(button), _("USB
> > > device selection"));
> > > -    gtk_tool_item_set_tooltip_text(GTK_TOOL_ITEM(button),
> > > _("USB
> > > device selection"));
> > > -    gtk_toolbar_insert(GTK_TOOLBAR(priv->toolbar),
> > > GTK_TOOL_ITEM(button), 0);
> > > -    g_signal_connect(button, "clicked",
> > > G_CALLBACK(usb_device_selection_activated), self);
> > > -    priv->toolbar_usb_device_selection = button;
> > > -    gtk_widget_show_all(button);
> > > -
> > > -    /* Send key */
> > > -    button = GTK_WIDGET(gtk_tool_button_new(NULL, NULL));
> > > -    gtk_tool_button_set_icon_name(GTK_TOOL_BUTTON(button),
> > > "preferences-desktop-keyboard-shortcuts");
> > > -    gtk_tool_item_set_tooltip_text(GTK_TOOL_ITEM(button),
> > > _("Send
> > > key combination"));
> > > -    gtk_widget_show(button);
> > > -    gtk_toolbar_insert(GTK_TOOLBAR(priv->toolbar),
> > > GTK_TOOL_ITEM(button), 0);
> > > -    g_signal_connect(button, "clicked",
> > > G_CALLBACK(virt_viewer_window_toolbar_send_key), self);
> > > -    gtk_widget_set_sensitive(button, FALSE);
> > > -    priv->toolbar_send_key = button;
> > > -
> > > -    /* Leave fullscreen */
> > > -    button = GTK_WIDGET(gtk_tool_button_new(NULL, NULL));
> > > -    gtk_tool_button_set_icon_name(GTK_TOOL_BUTTON(button),
> > > "view-
> > > restore");
> > > -    gtk_tool_button_set_label(GTK_TOOL_BUTTON(button), _("Leave
> > > fullscreen"));
> > > -    gtk_tool_item_set_tooltip_text(GTK_TOOL_ITEM(button),
> > > _("Leave
> > > fullscreen"));
> > > -    gtk_tool_item_set_is_important(GTK_TOOL_ITEM(button),
> > > TRUE);
> > > -    gtk_widget_show(button);
> > > -    gtk_toolbar_insert(GTK_TOOLBAR(priv->toolbar),
> > > GTK_TOOL_ITEM(button), 0);
> > > -    g_signal_connect(button, "clicked",
> > > G_CALLBACK(virt_viewer_window_toolbar_leave_fullscreen), self);
> > > -
> > > -    priv->revealer = virt_viewer_timed_revealer_new(priv-
> > > >toolbar);
> > > +    leave_fullscreen_button =
> > > GTK_WIDGET(gtk_builder_get_object(priv->builder, "leave-
> > > fullscreen"));
> > > +    g_signal_connect(leave_fullscreen_button, "clicked",
> > > +                      G_CALLBACK(virt_viewer_window_headerbar_l
> > > eave
> > > _fullscreen), self);
> > > +
> > > +    send_keys_button = GTK_WIDGET(gtk_builder_get_object(priv-
> > > > builder, "fullscreen-send-keys"));
> > > 
> > > +    send_keys_menu = G_MENU_MODEL (gtk_builder_get_object
> > > (priv-
> > > > builder, "send-keys-menu"));
> > > 
> > > +    gtk_menu_button_set_menu_model (GTK_MENU_BUTTON
> > > (send_keys_button), send_keys_menu);
> > > +
> > > +    usb_devices_button =
> > > GTK_WIDGET(gtk_builder_get_object(priv-
> > > > builder, "fullscreen-usb-devices"));
> > > 
> > > +    priv->toolbar_usb_device_selection = usb_devices_button;
> > > +    g_signal_connect(usb_devices_button, "clicked",
> > > +                     G_CALLBACK(virt_viewer_window_headerbar_us
> > > b_de
> > > vice_selection), self);
> > > +
> > > +    priv->fullscreen_headerbar =
> > > GTK_WIDGET(gtk_builder_get_object(priv->builder, "fullscreen-
> > > headerbar"));
> > > +    priv->revealer = virt_viewer_timed_revealer_new(priv-
> > > > fullscreen_headerbar);
> > > 
> > >      overlay = GTK_WIDGET(gtk_builder_get_object(priv->builder,
> > > "viewer-overlay"));
> > >      gtk_overlay_add_overlay(GTK_OVERLAY(overlay),
> > > GTK_WIDGET(priv-
> > > > revealer));
> > > 
> > >  }
> > > @@ -1336,17 +1105,17 @@
> > > virt_viewer_window_update_title(VirtViewerWindow *self)
> > >  }
> > > 
> > >  void
> > > -virt_viewer_window_set_menu_displays_sensitive(VirtViewerWindow
> > > *self, gboolean sensitive)
> > > +virt_viewer_window_set_headerbar_displays_sensitive(VirtViewerW
> > > indo
> > > w *self, gboolean sensitive)
> > >  {
> > >      VirtViewerWindowPrivate *priv;
> > > -    GtkWidget *menu;
> > > +    GtkWidget *displays;
> > > 
> > >      g_return_if_fail(VIRT_VIEWER_IS_WINDOW(self));
> > > 
> > >      priv = self->priv;
> > > 
> > > -    menu = GTK_WIDGET(gtk_builder_get_object(priv->builder,
> > > "displays"));
> > > -    gtk_widget_set_sensitive(menu, sensitive);
> > > +    displays = GTK_WIDGET(gtk_builder_get_object(priv->builder,
> > > "displays"));
> > > +    gtk_widget_set_sensitive(displays, sensitive);
> > >  }
> > > 
> > >  void
> > > diff --git a/src/virt-viewer-window.h b/src/virt-viewer-window.h
> > > index f578637..17cc6cf 100644
> > > --- a/src/virt-viewer-window.h
> > > +++ b/src/virt-viewer-window.h
> > > @@ -68,7 +68,7 @@ GtkWindow* virt_viewer_window_get_window
> > > (VirtViewerWindow* window);
> > >  VirtViewerNotebook* virt_viewer_window_get_notebook
> > > (VirtViewerWindow* window);
> > >  void virt_viewer_window_set_display(VirtViewerWindow *self,
> > > VirtViewerDisplay *display);
> > >  VirtViewerDisplay*
> > > virt_viewer_window_get_display(VirtViewerWindow
> > > *self);
> > > -void
> > > virt_viewer_window_set_menu_displays_sensitive(VirtViewerWindow
> > > *self, gboolean sensitive);
> > > +void
> > > virt_viewer_window_set_headerbar_displays_sensitive(VirtViewerWi
> > > ndow
> > > *self, gboolean sensitive);
> > >  void
> > > virt_viewer_window_set_usb_options_sensitive(VirtViewerWindow
> > > *self, gboolean sensitive);
> > >  void virt_viewer_window_set_menus_sensitive(VirtViewerWindow
> > > *self,
> > > gboolean sensitive);
> > >  void virt_viewer_window_update_title(VirtViewerWindow *self);
> > 
> > _______________________________________________
> > virt-tools-list mailing list
> > virt-tools-list at redhat.com
> > https://www.redhat.com/mailman/listinfo/virt-tools-list
> 
> 
> 




More information about the virt-tools-list mailing list