You could get a tube of clear silicone caulking (for use in bathroom renovations, etc.) and put dots of it on the inside of the band of the hat. It wouldn't feel tight because the bits are not continuous - they are just grippy bits. Let it dry thoroughly before wearing. It would be machine washable once dry.
This could also help retrofit existing headwear in her collection.
I would punch a side-by-side pair of grommets in the canvas at the zipper "closed" position. I would then run the padlock in one grommet, out the other, and through the hole on the end of the metal zipper pull (where the fabric pull loop attaches. If your padlock doesn't have a big enough lead, you could splice or crimp a loop on each end of a piece of steel cable, run that through the aforementioned path, and padlock the loops. The tighter the path, however, the less play the zipper will have.
We used cookie cutters (hearts, daisies and airplanes - you can pick whatever fits you theme / is meaningful to you), and attached our favourite recipe on a tiny card. Cookie cutters were $0.99 each plus tax, I had cardstock laying around, and raffia was $1 for more than enough for all of the favours.
We liked it because they were personal (recipe, theme), unusual and useful but still quite inexpensive! I was also able to buy the cutters through a small, local business, which was nice.
I actually really like the brown - you needed the dark tone to balance the piece. Too many fabrics with the same tonal value lose their impact.
If anything, I think the two orange-y fabrics are far too similar, particularly because they are next to each other. They blend together, and you lose the shapes. I would suggest a darker value green print to replace it.