+# Define a style used for the surround of text widgets.
+proc InitEntryFrame {} {
+ ttk::style theme settings default {
+ ttk::style layout EntryFrame {
+ EntryFrame.field -sticky nswe -border 0 -children {
+ EntryFrame.fill -sticky nswe -children {
+ EntryFrame.padding -sticky nswe
+ }
+ }
+ }
+ ttk::style configure EntryFrame -padding 1 -relief sunken
+ ttk::style map EntryFrame -background {}
+ }
+ ttk::style theme settings classic {
+ ttk::style configure EntryFrame -padding 2 -relief sunken
+ ttk::style map EntryFrame -background {}
+ }
+ ttk::style theme settings alt {
+ ttk::style configure EntryFrame -padding 2
+ ttk::style map EntryFrame -background {}
+ }
+ ttk::style theme settings clam {
+ ttk::style configure EntryFrame -padding 2
+ ttk::style map EntryFrame -background {}
+ }
+
+ # Ignore errors for missing native themes
+ catch {
+ ttk::style theme settings winnative {
+ ttk::style configure EntryFrame -padding 2
+ }
+ ttk::style theme settings xpnative {
+ ttk::style configure EntryFrame -padding 1
+ ttk::style element create EntryFrame.field vsapi \
+ EDIT 1 {disabled 4 focus 3 active 2 {} 1} -padding 1
+ }
+ ttk::style theme settings vista {
+ ttk::style configure EntryFrame -padding 2
+ ttk::style element create EntryFrame.field vsapi \
+ EDIT 6 {disabled 4 focus 3 active 2 {} 1} -padding 2
+ }
+ }
+
+ bind EntryFrame <Enter> {%W instate !disabled {%W state active}}
+ bind EntryFrame <Leave> {%W state !active}
+ bind EntryFrame <<ThemeChanged>> {
+ set pad [ttk::style lookup EntryFrame -padding]
+ %W configure -padding [expr {$pad eq {} ? 1 : $pad}]
+ }
+}
+