Fix collapsable typos to collapsible
Index: b/NEWS
===================================================================
--- a/NEWS
+++ b/NEWS
@@ -395,7 +395,7 @@ http://wiki.lyx.org/LyX/NewInLyX16
 
 * Multiple Work Areas
 * Split Views
-* User-formattable Collapsable Insets
+* User-formattable Collapsible Insets
 * Layout Modules
 * Layout combobox changes
 * Support for the LaTeX package hyperref
Index: b/development/FORMAT
===================================================================
--- a/development/FORMAT
+++ b/development/FORMAT
@@ -1146,7 +1146,7 @@ adjustments are made to tex2lyx and bugs
 	* Format incremented to 290: Add table wrap floats
 
 2007-10-03 Martin Vermeer <martin.vermeer@tkk.fi>
-	* Format incremented to 289: make Index a collapsable inset.
+	* Format incremented to 289: make Index a collapsible inset.
 
 2007-09-25 Richard Heck <rgheck@lyx.org>
 	* Format incremented to 288: Change how command insets are
@@ -1189,7 +1189,7 @@ adjustments are made to tex2lyx and bugs
 2007-08-17 Martin Vermeer <martin.vermeer@tkk.fi>
 
 	* format incremented to 280: the show_label parameter
-	  is depreciated in favour of (Collapsable) status.
+	  is depreciated in favour of (Collapsible) status.
 
 2007-08-17 Martin Vermeer <martin.vermeer@tkk.fi>
 
@@ -1690,7 +1690,7 @@ Paragraph text.
 2003-12-15  Angus Leeming  <leeming@lyx.org>
 
 	* format incremented to 228.
-	* Change the output of all insets derived from InsetCollapsable
+	* Change the output of all insets derived from InsetCollapsible
 	except for InsetERT (which has a similar output already), changing lines
 	"collapsed true" -> "status collapsed"
 	"collapsed false" -> "status open".
Index: b/lib/doc/Customization.lyx
===================================================================
--- a/lib/doc/Customization.lyx
+++ b/lib/doc/Customization.lyx
@@ -25574,11 +25574,11 @@ changedtextauthor5 Changed text color au
 \end_layout
 
 \begin_layout Description
-collapsable_inset_frame Collapsable insets framecolor
+collapsible_inset_frame Collapsible insets framecolor
 \end_layout
 
 \begin_layout Description
-collapsable_inset_text Collapsable insets text color
+collapsible_inset_text Collapsible insets text color
 \end_layout
 
 \begin_layout Description
Index: b/lib/doc/de/Customization.lyx
===================================================================
--- a/lib/doc/de/Customization.lyx
+++ b/lib/doc/de/Customization.lyx
@@ -25083,13 +25083,13 @@ Autors
 \begin_layout Description
 
 \lang english
-collapsable_inset_frame Collapsable insets framecolor
+collapsible_inset_frame Collapsible insets framecolor
 \end_layout
 
 \begin_layout Description
 
 \lang english
-collapsable_inset_text Collapsable insets text color
+collapsible_inset_text Collapsible insets text color
 \end_layout
 
 \begin_layout Description
Index: b/lib/doc/es/Customization.lyx
===================================================================
--- a/lib/doc/es/Customization.lyx
+++ b/lib/doc/es/Customization.lyx
@@ -25489,11 +25489,11 @@ changedtextauthor5 Color autor 5 de text
 \end_layout
 
 \begin_layout Description
-collapsable_inset_frame Color marco de recuadro plegable
+collapsible_inset_frame Color marco de recuadro plegable
 \end_layout
 
 \begin_layout Description
-collapsable_inset_text Color texto de recuadro plegable 
+collapsible_inset_text Color texto de recuadro plegable 
 \end_layout
 
 \begin_layout Description
Index: b/lib/doc/fr/Customization.lyx
===================================================================
--- a/lib/doc/fr/Customization.lyx
+++ b/lib/doc/fr/Customization.lyx
@@ -28499,7 +28499,7 @@ changedtextauthor5
 \begin_layout Description
 
 \lang english
-collapsable_inset_frame
+collapsible_inset_frame
 \lang french
  cadre d'insert repliable
 \end_layout
@@ -28507,7 +28507,7 @@ collapsable_inset_frame
 \begin_layout Description
 
 \lang english
-collapsable_inset_text
+collapsible_inset_text
 \lang french
  texte d'insert repliable
 \end_layout
Index: b/lib/doc/ja/Customization.lyx
===================================================================
--- a/lib/doc/ja/Customization.lyx
+++ b/lib/doc/ja/Customization.lyx
@@ -22928,11 +22928,11 @@ changedtextauthor5 変更された文章
 \end_layout
 
 \begin_layout Description
-collapsable_inset_frame 畳み込み可能枠の縁色
+collapsible_inset_frame 畳み込み可能枠の縁色
 \end_layout
 
 \begin_layout Description
-collapsable_inset_text 畳み込み可能枠の文字色
+collapsible_inset_text 畳み込み可能枠の文字色
 \end_layout
 
 \begin_layout Description
Index: b/lib/layouts/achemso.layout
===================================================================
--- a/lib/layouts/achemso.layout
+++ b/lib/layouts/achemso.layout
@@ -175,7 +175,7 @@ End
 InsetLayout scheme
 	LabelString		Scheme
 	LabelFont
-	  Color			collapsable
+	  Color			collapsible
 	  Size			Small
 	EndFont
 	MultiPar		true
@@ -197,7 +197,7 @@ End
 InsetLayout chart
 	LabelString		Chart
 	LabelFont
-	  Color			collapsable
+	  Color			collapsible
 	  Size			Small
 	EndFont
 	MultiPar		true
@@ -221,7 +221,7 @@ End
 InsetLayout graph
 	LabelString		Graph[[mathematical]]
 	LabelFont
-	  Color			collapsable
+	  Color			collapsible
 	  Size			Small
 	EndFont
 	MultiPar		true
Index: b/lib/layouts/stdinsets.inc
===================================================================
--- a/lib/layouts/stdinsets.inc
+++ b/lib/layouts/stdinsets.inc
@@ -427,7 +427,7 @@ End
 
 InsetLayout Float
 	LabelFont
-	  Color               collapsable
+	  Color               collapsible
 	  Size                Small
 	EndFont
 	MultiPar              true
@@ -441,7 +441,7 @@ End
 
 InsetLayout Wrap
 	LabelFont
-	  Color               collapsable
+	  Color               collapsible
 	  Size                Small
 	EndFont
 	MultiPar              true
@@ -485,7 +485,7 @@ End
 InsetLayout Argument
 	LabelString           Argument
 	LabelFont
-	  Color               collapsable
+	  Color               collapsible
 	  Size                Small
 	EndFont
 	MultiPar              false
Index: b/lib/lyx2lyx/lyx_1_4.py
===================================================================
--- a/lib/lyx2lyx/lyx_1_4.py
+++ b/lib/lyx2lyx/lyx_1_4.py
@@ -889,7 +889,7 @@ def revert_box(document):
         i = i + 1
 
 
-def convert_collapsable(document):
+def convert_collapsible(document):
     " Convert collapsed insets. "
     i = 0
     while 1:
@@ -924,7 +924,7 @@ def convert_collapsable(document):
         i = i + 1
 
 
-def revert_collapsable(document):
+def revert_collapsible(document):
     " Revert collapsed insets. "
     i = 0
     while 1:
@@ -2474,7 +2474,7 @@ convert = [[222, [insert_tracking_change
                   convert_table_valignment_middle, convert_breaks]],
            [226, [convert_note]],
            [227, [convert_box]],
-           [228, [convert_collapsable, convert_ert]],
+           [228, [convert_collapsible, convert_ert]],
            [229, [convert_minipage]],
            [230, [convert_jurabib]],
            [231, [convert_float]],
@@ -2512,7 +2512,7 @@ revert =  [[244, []],
            [230, [revert_float]],
            [229, [revert_jurabib]],
            [228, []],
-           [227, [revert_collapsable, revert_ert]],
+           [227, [revert_collapsible, revert_ert]],
            [226, [revert_box, revert_external_2]],
            [225, [revert_note]],
            [224, [rm_end_layout, begin_layout2layout, revert_end_document,
Index: b/lib/lyx2lyx/lyx_1_6.py
===================================================================
--- a/lib/lyx2lyx/lyx_1_6.py
+++ b/lib/lyx2lyx/lyx_1_6.py
@@ -1103,7 +1103,7 @@ def revert_wrapfig_options(document):
 
 
 def convert_latexcommand_index(document):
-    "Convert from LatexCommand form to collapsable form."
+    "Convert from LatexCommand form to collapsible form."
     i = 0
     r1 = re.compile('name "(.*)"')
     while True:
@@ -1135,7 +1135,7 @@ def convert_latexcommand_index(document)
 
 
 def revert_latexcommand_index(document):
-    "Revert from collapsable form to LatexCommand form."
+    "Revert from collapsible form to LatexCommand form."
     i = 0
     while True:
         i = find_token(document.body, "\\begin_inset Index", i)
Index: b/lib/ui/stdcontext.inc
===================================================================
--- a/lib/ui/stdcontext.inc
+++ b/lib/ui/stdcontext.inc
@@ -138,9 +138,9 @@ Menuset
 	End
 
 #
-# InsetCollapsable context menu
+# InsetCollapsible context menu
 #
-	Menu "context-collapsable"
+	Menu "context-collapsible"
 		OptItem "Open Inset|O" "inset-toggle open"
 		OptItem "Close Inset|C" "inset-toggle close"
 		Separator
Index: b/po/ar.po
===================================================================
--- a/po/ar.po
+++ b/po/ar.po
@@ -24694,12 +24694,12 @@ msgid "math macro new parameter"
 msgstr "معامل ماكرو رياضي جديد"
 
 #: src/Color.cpp:272
-msgid "collapsable inset text"
+msgid "collapsible inset text"
 msgstr ""
 
 #: src/Color.cpp:273
 #, fuzzy
-msgid "collapsable inset frame"
+msgid "collapsible inset frame"
 msgstr "أمر اطار البرواز"
 
 #: src/Color.cpp:274
Index: b/po/ca.po
===================================================================
--- a/po/ca.po
+++ b/po/ca.po
@@ -26264,11 +26264,11 @@ msgid "math macro new parameter"
 msgstr "&Més paràmetres"
 
 #: src/Color.cpp:272
-msgid "collapsable inset text"
+msgid "collapsible inset text"
 msgstr ""
 
 #: src/Color.cpp:273
-msgid "collapsable inset frame"
+msgid "collapsible inset frame"
 msgstr ""
 
 #: src/Color.cpp:274
Index: b/po/cs.po
===================================================================
--- a/po/cs.po
+++ b/po/cs.po
@@ -25056,11 +25056,11 @@ msgid "math macro new parameter"
 msgstr "nový parametr makra (matematika)"
 
 #: src/Color.cpp:272
-msgid "collapsable inset text"
+msgid "collapsible inset text"
 msgstr "sbalitelná vložka textu"
 
 #: src/Color.cpp:273
-msgid "collapsable inset frame"
+msgid "collapsible inset frame"
 msgstr "sbalitelná vložka rámu"
 
 #: src/Color.cpp:274
Index: b/po/da.po
===================================================================
--- a/po/da.po
+++ b/po/da.po
@@ -26180,11 +26180,11 @@ msgid "math macro new parameter"
 msgstr "matematik-makro-ny-parameter"
 
 #: src/Color.cpp:272
-msgid "collapsable inset text"
+msgid "collapsible inset text"
 msgstr "sammenklappeligt-indstik-tekst"
 
 #: src/Color.cpp:273
-msgid "collapsable inset frame"
+msgid "collapsible inset frame"
 msgstr "sammenklappeligt-indstik-ramme"
 
 #: src/Color.cpp:274
Index: b/po/de.po
===================================================================
--- a/po/de.po
+++ b/po/de.po
@@ -24935,11 +24935,11 @@ msgid "math macro new parameter"
 msgstr "Mathe-Makro (neuer Parameter)"
 
 #: src/Color.cpp:272
-msgid "collapsable inset text"
+msgid "collapsible inset text"
 msgstr "Einklappbare Einfügung (Text)"
 
 #: src/Color.cpp:273
-msgid "collapsable inset frame"
+msgid "collapsible inset frame"
 msgstr "Einklappbare Einfügung (Rahmen)"
 
 #: src/Color.cpp:274
Index: b/po/el.po
===================================================================
--- a/po/el.po
+++ b/po/el.po
@@ -25584,11 +25584,11 @@ msgid "math macro new parameter"
 msgstr ""
 
 #: src/Color.cpp:272
-msgid "collapsable inset text"
+msgid "collapsible inset text"
 msgstr "κείμενο συρρικνώμενου ενθέματος"
 
 #: src/Color.cpp:273
-msgid "collapsable inset frame"
+msgid "collapsible inset frame"
 msgstr "πλαίσιο συρρικώμενου ενθέματος"
 
 #: src/Color.cpp:274
Index: b/po/en.po
===================================================================
--- a/po/en.po
+++ b/po/en.po
@@ -24275,11 +24275,11 @@ msgid "math macro new parameter"
 msgstr ""
 
 #: src/Color.cpp:272
-msgid "collapsable inset text"
+msgid "collapsible inset text"
 msgstr ""
 
 #: src/Color.cpp:273
-msgid "collapsable inset frame"
+msgid "collapsible inset frame"
 msgstr ""
 
 #: src/Color.cpp:274
Index: b/po/es.po
===================================================================
--- a/po/es.po
+++ b/po/es.po
@@ -24809,11 +24809,11 @@ msgid "math macro new parameter"
 msgstr "macro matemática (parám. nuevo)"
 
 #: src/Color.cpp:272
-msgid "collapsable inset text"
+msgid "collapsible inset text"
 msgstr "texto recuadro plegable"
 
 #: src/Color.cpp:273
-msgid "collapsable inset frame"
+msgid "collapsible inset frame"
 msgstr "marco recuadro plegable"
 
 #: src/Color.cpp:274
Index: b/po/eu.po
===================================================================
--- a/po/eu.po
+++ b/po/eu.po
@@ -25678,11 +25678,11 @@ msgid "math macro new parameter"
 msgstr "mat. makroen parametro berria"
 
 #: src/Color.cpp:272
-msgid "collapsable inset text"
+msgid "collapsible inset text"
 msgstr "txertakuntzen testu tolesgarria"
 
 #: src/Color.cpp:273
-msgid "collapsable inset frame"
+msgid "collapsible inset frame"
 msgstr "txertakuntzen marko tolesgarria"
 
 #: src/Color.cpp:274
Index: b/po/fi.po
===================================================================
--- a/po/fi.po
+++ b/po/fi.po
@@ -25515,11 +25515,11 @@ msgid "math macro new parameter"
 msgstr "matematiikkakehys"
 
 #: src/Color.cpp:272
-msgid "collapsable inset text"
+msgid "collapsible inset text"
 msgstr "laskostuvan upotteen teksti"
 
 #: src/Color.cpp:273
-msgid "collapsable inset frame"
+msgid "collapsible inset frame"
 msgstr "laskostuvan upotteen kehys"
 
 #: src/Color.cpp:274
Index: b/po/fr.po
===================================================================
--- a/po/fr.po
+++ b/po/fr.po
@@ -25186,11 +25186,11 @@ msgid "math macro new parameter"
 msgstr "macro mathématique : nouveau paramètre"
 
 #: src/Color.cpp:272
-msgid "collapsable inset text"
+msgid "collapsible inset text"
 msgstr "texte d'insert repliable"
 
 #: src/Color.cpp:273
-msgid "collapsable inset frame"
+msgid "collapsible inset frame"
 msgstr "cadre d'insert repliable"
 
 #: src/Color.cpp:274
Index: b/po/gl.po
===================================================================
--- a/po/gl.po
+++ b/po/gl.po
@@ -26378,11 +26378,11 @@ msgid "math macro new parameter"
 msgstr "marco matemático"
 
 #: src/Color.cpp:272
-msgid "collapsable inset text"
+msgid "collapsible inset text"
 msgstr "texto de recadro pregueábel"
 
 #: src/Color.cpp:273
-msgid "collapsable inset frame"
+msgid "collapsible inset frame"
 msgstr "marco de recadro pregueábel"
 
 #: src/Color.cpp:274
Index: b/po/he.po
===================================================================
--- a/po/he.po
+++ b/po/he.po
@@ -25618,11 +25618,11 @@ msgid "math macro new parameter"
 msgstr "&פרטמטרים נוספים"
 
 #: src/Color.cpp:272
-msgid "collapsable inset text"
+msgid "collapsible inset text"
 msgstr "טקסט בתוסף הניתן לצמצום"
 
 #: src/Color.cpp:273
-msgid "collapsable inset frame"
+msgid "collapsible inset frame"
 msgstr ""
 
 #: src/Color.cpp:274
Index: b/po/hu.po
===================================================================
--- a/po/hu.po
+++ b/po/hu.po
@@ -25819,11 +25819,11 @@ msgid "math macro new parameter"
 msgstr "képlet makró (új paraméter)"
 
 #: src/Color.cpp:272
-msgid "collapsable inset text"
+msgid "collapsible inset text"
 msgstr "becsukható betét szövege"
 
 #: src/Color.cpp:273
-msgid "collapsable inset frame"
+msgid "collapsible inset frame"
 msgstr "becsukható betét kerete"
 
 #: src/Color.cpp:274
Index: b/po/ia.po
===================================================================
--- a/po/ia.po
+++ b/po/ia.po
@@ -25038,11 +25038,11 @@ msgid "math macro new parameter"
 msgstr "macro mathematic (nove parametro)"
 
 #: src/Color.cpp:272
-msgid "collapsable inset text"
+msgid "collapsible inset text"
 msgstr "inserto plicabile (texto)"
 
 #: src/Color.cpp:273
-msgid "collapsable inset frame"
+msgid "collapsible inset frame"
 msgstr "inserto plicabile (quadro)"
 
 #: src/Color.cpp:274
Index: b/po/id.po
===================================================================
--- a/po/id.po
+++ b/po/id.po
@@ -25490,11 +25490,11 @@ msgid "math macro new parameter"
 msgstr "makro matematika parameter baru"
 
 #: src/Color.cpp:272
-msgid "collapsable inset text"
+msgid "collapsible inset text"
 msgstr "sisipan teks yang bisa dilipat"
 
 #: src/Color.cpp:273
-msgid "collapsable inset frame"
+msgid "collapsible inset frame"
 msgstr "sisipan bingkai yang bisa dilipat"
 
 #: src/Color.cpp:274
Index: b/po/it.po
===================================================================
--- a/po/it.po
+++ b/po/it.po
@@ -24788,11 +24788,11 @@ msgid "math macro new parameter"
 msgstr "Macro matematica (nuovo parametro)"
 
 #: src/Color.cpp:272
-msgid "collapsable inset text"
+msgid "collapsible inset text"
 msgstr "Inserto collassabile (testo)"
 
 #: src/Color.cpp:273
-msgid "collapsable inset frame"
+msgid "collapsible inset frame"
 msgstr "Inserto collassabile (cornice)"
 
 #: src/Color.cpp:274
Index: b/po/ja.po
===================================================================
--- a/po/ja.po
+++ b/po/ja.po
@@ -24683,11 +24683,11 @@ msgid "math macro new parameter"
 msgstr "数式マクロの新パラメーター"
 
 #: src/Color.cpp:272
-msgid "collapsable inset text"
+msgid "collapsible inset text"
 msgstr "畳み込み可能枠の文字"
 
 #: src/Color.cpp:273
-msgid "collapsable inset frame"
+msgid "collapsible inset frame"
 msgstr "畳み込み可能枠の枠"
 
 #: src/Color.cpp:274
Index: b/po/lyx.pot
===================================================================
--- a/po/lyx.pot
+++ b/po/lyx.pot
@@ -24274,11 +24274,11 @@ msgid "math macro new parameter"
 msgstr ""
 
 #: src/Color.cpp:272
-msgid "collapsable inset text"
+msgid "collapsible inset text"
 msgstr ""
 
 #: src/Color.cpp:273
-msgid "collapsable inset frame"
+msgid "collapsible inset frame"
 msgstr ""
 
 #: src/Color.cpp:274
Index: b/po/nb.po
===================================================================
--- a/po/nb.po
+++ b/po/nb.po
@@ -24786,11 +24786,11 @@ msgid "math macro new parameter"
 msgstr "mattemakro ny parameter"
 
 #: src/Color.cpp:272
-msgid "collapsable inset text"
+msgid "collapsible inset text"
 msgstr "foldbare \"inset\", tekst"
 
 #: src/Color.cpp:273
-msgid "collapsable inset frame"
+msgid "collapsible inset frame"
 msgstr "foldbare \"inset\", ramme"
 
 #: src/Color.cpp:274
Index: b/po/nl.po
===================================================================
--- a/po/nl.po
+++ b/po/nl.po
@@ -25576,11 +25576,11 @@ msgid "math macro new parameter"
 msgstr ""
 
 #: src/Color.cpp:272
-msgid "collapsable inset text"
+msgid "collapsible inset text"
 msgstr ""
 
 #: src/Color.cpp:273
-msgid "collapsable inset frame"
+msgid "collapsible inset frame"
 msgstr ""
 
 #: src/Color.cpp:274
Index: b/po/nn.po
===================================================================
--- a/po/nn.po
+++ b/po/nn.po
@@ -25433,11 +25433,11 @@ msgid "math macro new parameter"
 msgstr "Mattemakro med nytt parameter"
 
 #: src/Color.cpp:272
-msgid "collapsable inset text"
+msgid "collapsible inset text"
 msgstr "Teksten til samanleggbar innskot"
 
 #: src/Color.cpp:273
-msgid "collapsable inset frame"
+msgid "collapsible inset frame"
 msgstr "Ramma til samanleggbar innskot"
 
 #: src/Color.cpp:274
Index: b/po/pl.po
===================================================================
--- a/po/pl.po
+++ b/po/pl.po
@@ -25625,11 +25625,11 @@ msgid "math macro new parameter"
 msgstr "nowy parametr makra matematycznego"
 
 #: src/Color.cpp:272
-msgid "collapsable inset text"
+msgid "collapsible inset text"
 msgstr "tekst wstawki połączonej"
 
 #: src/Color.cpp:273
-msgid "collapsable inset frame"
+msgid "collapsible inset frame"
 msgstr "ramka wstawki połączonej"
 
 #: src/Color.cpp:274
Index: b/po/pt_BR.po
===================================================================
--- a/po/pt_BR.po
+++ b/po/pt_BR.po
@@ -24817,11 +24817,11 @@ msgid "math macro new parameter"
 msgstr "parâmetro novo de macro de matemática"
 
 #: src/Color.cpp:272
-msgid "collapsable inset text"
+msgid "collapsible inset text"
 msgstr "texto de inset recolhível"
 
 #: src/Color.cpp:273
-msgid "collapsable inset frame"
+msgid "collapsible inset frame"
 msgstr "moldura de inset recolhível"
 
 #: src/Color.cpp:274
Index: b/po/pt_PT.po
===================================================================
--- a/po/pt_PT.po
+++ b/po/pt_PT.po
@@ -25123,11 +25123,11 @@ msgid "math macro new parameter"
 msgstr "macro mat. parãmetro novo"
 
 #: src/Color.cpp:272
-msgid "collapsable inset text"
+msgid "collapsible inset text"
 msgstr "texto de inserto fechável"
 
 #: src/Color.cpp:273
-msgid "collapsable inset frame"
+msgid "collapsible inset frame"
 msgstr "moldura de inserto recolhível"
 
 #: src/Color.cpp:274
Index: b/po/ro.po
===================================================================
--- a/po/ro.po
+++ b/po/ro.po
@@ -26169,12 +26169,12 @@ msgid "math macro new parameter"
 msgstr "cadru mod matematic"
 
 #: src/Color.cpp:272
-msgid "collapsable inset text"
+msgid "collapsible inset text"
 msgstr ""
 
 #: src/Color.cpp:273
 #, fuzzy
-msgid "collapsable inset frame"
+msgid "collapsible inset frame"
 msgstr "cadru comandă \"inset\""
 
 #: src/Color.cpp:274
Index: b/po/ru.po
===================================================================
--- a/po/ru.po
+++ b/po/ru.po
@@ -26438,11 +26438,11 @@ msgid "math macro new parameter"
 msgstr "матем. макрос, новый параметр"
 
 #: src/Color.cpp:272
-msgid "collapsable inset text"
+msgid "collapsible inset text"
 msgstr "Текст сворачиваемой вкладки"
 
 #: src/Color.cpp:273
-msgid "collapsable inset frame"
+msgid "collapsible inset frame"
 msgstr "Рамка сворачиваемой вкладки"
 
 #: src/Color.cpp:274
Index: b/po/sk.po
===================================================================
--- a/po/sk.po
+++ b/po/sk.po
@@ -24728,11 +24728,11 @@ msgid "math macro new parameter"
 msgstr "mat. makro nový parameter"
 
 #: src/Color.cpp:272
-msgid "collapsable inset text"
+msgid "collapsible inset text"
 msgstr "zbaliteľná vložka textu"
 
 #: src/Color.cpp:273
-msgid "collapsable inset frame"
+msgid "collapsible inset frame"
 msgstr "zbaliteľná vložka (rám)"
 
 #: src/Color.cpp:274
Index: b/po/sr.po
===================================================================
--- a/po/sr.po
+++ b/po/sr.po
@@ -25686,11 +25686,11 @@ msgid "math macro new parameter"
 msgstr "matematički makro novih parametara"
 
 #: src/Color.cpp:272
-msgid "collapsable inset text"
+msgid "collapsible inset text"
 msgstr ""
 
 #: src/Color.cpp:273
-msgid "collapsable inset frame"
+msgid "collapsible inset frame"
 msgstr ""
 
 #: src/Color.cpp:274
Index: b/po/sv.po
===================================================================
--- a/po/sv.po
+++ b/po/sv.po
@@ -24938,11 +24938,11 @@ msgid "math macro new parameter"
 msgstr "matematikmakro ny parameter"
 
 #: src/Color.cpp:272
-msgid "collapsable inset text"
+msgid "collapsible inset text"
 msgstr "infällningsbar insättningstext"
 
 #: src/Color.cpp:273
-msgid "collapsable inset frame"
+msgid "collapsible inset frame"
 msgstr "infällningsbar insättningsram"
 
 #: src/Color.cpp:274
Index: b/po/tr.po
===================================================================
--- a/po/tr.po
+++ b/po/tr.po
@@ -25937,11 +25937,11 @@ msgid "math macro new parameter"
 msgstr "matematik makro yeni parametresi"
 
 #: src/Color.cpp:272
-msgid "collapsable inset text"
+msgid "collapsible inset text"
 msgstr "katlanır ekleme metni"
 
 #: src/Color.cpp:273
-msgid "collapsable inset frame"
+msgid "collapsible inset frame"
 msgstr "katlanır ekleme çerçevesi"
 
 #: src/Color.cpp:274
Index: b/po/uk.po
===================================================================
--- a/po/uk.po
+++ b/po/uk.po
@@ -24804,11 +24804,11 @@ msgid "math macro new parameter"
 msgstr "новий параметр матем. макросу"
 
 #: src/Color.cpp:272
-msgid "collapsable inset text"
+msgid "collapsible inset text"
 msgstr "текст вкладки, що згортається"
 
 #: src/Color.cpp:273
-msgid "collapsable inset frame"
+msgid "collapsible inset frame"
 msgstr "рамка вкладки, що згортається"
 
 #: src/Color.cpp:274
Index: b/po/zh_CN.po
===================================================================
--- a/po/zh_CN.po
+++ b/po/zh_CN.po
@@ -25844,11 +25844,11 @@ msgid "math macro new parameter"
 msgstr "公式边框"
 
 #: src/Color.cpp:272
-msgid "collapsable inset text"
+msgid "collapsible inset text"
 msgstr "可折叠嵌入项文本"
 
 #: src/Color.cpp:273
-msgid "collapsable inset frame"
+msgid "collapsible inset frame"
 msgstr "可折叠嵌入项边框"
 
 #: src/Color.cpp:274
Index: b/po/zh_TW.po
===================================================================
--- a/po/zh_TW.po
+++ b/po/zh_TW.po
@@ -25033,11 +25033,11 @@ msgid "math macro new parameter"
 msgstr "數學巨集 新參數"
 
 #: src/Color.cpp:272
-msgid "collapsable inset text"
+msgid "collapsible inset text"
 msgstr "可摺疊 嵌框 文字"
 
 #: src/Color.cpp:273
-msgid "collapsable inset frame"
+msgid "collapsible inset frame"
 msgstr "可摺疊 嵌框 框架"
 
 #: src/Color.cpp:274
Index: b/src/BufferView.cpp
===================================================================
--- a/src/BufferView.cpp
+++ b/src/BufferView.cpp
@@ -775,7 +775,7 @@ bool BufferView::moveToPosition(pit_type
 		if (!dit.atEnd()) {
 			dit.pos() = min(dit.paragraph().size(), top_pos);
 			// Some slices of the iterator may not be
-			// reachable (e.g. closed collapsable inset)
+			// reachable (e.g. closed collapsible inset)
 			// so the dociterator may need to be
 			// shortened. Otherwise, setCursor may crash
 			// lyx when the cursor can not be set to these
Index: b/src/BufferView.h
===================================================================
--- a/src/BufferView.h
+++ b/src/BufferView.h
@@ -244,7 +244,7 @@ public:
 	/// access to full cursor.
 	Cursor const & cursor() const;
 	/// sets cursor.
-	/// This will also open all relevant collapsable insets.
+	/// This will also open all relevant collapsible insets.
 	void setCursor(DocIterator const &);
 	/// Check deleteEmptyParagraphMechanism and update metrics if needed.
 	/// \retval true if an update was needed.
Index: b/src/Color.cpp
===================================================================
--- a/src/Color.cpp
+++ b/src/Color.cpp
@@ -269,8 +269,8 @@ ColorSet::ColorSet()
 	{ Color_mathmacroblend, N_("math macro blended out"), "mathmacroblend", "black", "mathmacroblend" },
 	{ Color_mathmacrooldarg, N_("math macro old parameter"), "mathmacrooldarg", grey80, "mathmacrooldarg" },
 	{ Color_mathmacronewarg, N_("math macro new parameter"), "mathmacronewarg", "black", "mathmacronewarg" },
-	{ Color_collapsable, N_("collapsable inset text"), "collapsable", "DarkRed", "collapsable" },
-	{ Color_collapsableframe, N_("collapsable inset frame"), "collapsableframe", "IndianRed", "collapsableframe" },
+	{ Color_collapsible, N_("collapsible inset text"), "collapsible", "DarkRed", "collapsible" },
+	{ Color_collapsibleframe, N_("collapsible inset frame"), "collapsibleframe", "IndianRed", "collapsibleframe" },
 	{ Color_insetbg, N_("inset background"), "insetbg", grey80, "insetbg" },
 	{ Color_insetframe, N_("inset frame"), "insetframe", "IndianRed", "insetframe" },
 	{ Color_error, N_("LaTeX error"), "error", "Red", "error" },
Index: b/src/ColorCode.h
===================================================================
--- a/src/ColorCode.h
+++ b/src/ColorCode.h
@@ -155,10 +155,10 @@ enum ColorCode {
 	/// Math line color
 	Color_mathline,
 
-	/// Collapsable insets text
-	Color_collapsable,
-	/// Collapsable insets frame
-	Color_collapsableframe,
+	/// Collapsible insets text
+	Color_collapsible,
+	/// Collapsible insets frame
+	Color_collapsibleframe,
 
 	/// Inset marker background color
 	Color_insetbg,
Index: b/src/CutAndPaste.cpp
===================================================================
--- a/src/CutAndPaste.cpp
+++ b/src/CutAndPaste.cpp
@@ -764,7 +764,7 @@ void switchBetweenClasses(DocumentClassC
 	for (InsetIterator it = inset_iterator_begin(in); it != i_end; ++it) {
 		InsetCode const code = it->lyxCode();
 		if (code == FLEX_CODE) {
-			// FIXME: Should we verify all InsetCollapsable?
+			// FIXME: Should we verify all InsetCollapsible?
 			docstring const layoutName = it->layoutName();
 			docstring const & n = newone->insetLayout(layoutName).name();
 			bool const is_undefined = n.empty() ||
Index: b/src/Makefile.am
===================================================================
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -570,7 +570,7 @@ SOURCEFILESINSETS = \
 	insets/InsetCaption.cpp \
 	insets/InsetCaptionable.cpp \
 	insets/InsetCitation.cpp \
-	insets/InsetCollapsable.cpp \
+	insets/InsetCollapsible.cpp \
 	insets/InsetCommand.cpp \
 	insets/InsetCommandParams.cpp \
 	insets/InsetERT.cpp \
@@ -630,7 +630,7 @@ HEADERFILESINSETS = \
 	insets/InsetCaptionable.h \
 	insets/InsetCitation.h \
 	insets/InsetCode.h \
-	insets/InsetCollapsable.h \
+	insets/InsetCollapsible.h \
 	insets/InsetCommand.h \
 	insets/InsetCommandParams.h \
 	insets/InsetERT.h \
Index: b/src/Makefile.in
===================================================================
--- a/src/Makefile.in
+++ b/src/Makefile.in
@@ -225,7 +225,7 @@ am__liblyxinsets_a_SOURCES_DIST = insets
 	insets/InsetBibtex.cpp insets/InsetBox.cpp \
 	insets/InsetBranch.cpp insets/InsetCaption.cpp \
 	insets/InsetCaptionable.cpp insets/InsetCitation.cpp \
-	insets/InsetCollapsable.cpp insets/InsetCommand.cpp \
+	insets/InsetCollapsible.cpp insets/InsetCommand.cpp \
 	insets/InsetCommandParams.cpp insets/InsetERT.cpp \
 	insets/InsetExternal.cpp insets/InsetFlex.cpp \
 	insets/InsetFloat.cpp insets/InsetFloatList.cpp \
@@ -252,7 +252,7 @@ am__liblyxinsets_a_SOURCES_DIST = insets
 	insets/InsetBibitem.h insets/InsetBibtex.h insets/InsetBox.h \
 	insets/InsetBranch.h insets/InsetCaption.h \
 	insets/InsetCaptionable.h insets/InsetCitation.h \
-	insets/InsetCode.h insets/InsetCollapsable.h \
+	insets/InsetCode.h insets/InsetCollapsible.h \
 	insets/InsetCommand.h insets/InsetCommandParams.h \
 	insets/InsetERT.h insets/InsetExternal.h insets/InsetFlex.h \
 	insets/InsetFloat.h insets/InsetFoot.h insets/InsetFloatList.h \
@@ -279,7 +279,7 @@ am__objects_4 = insets/ExternalSupport.$
 	insets/InsetBranch.$(OBJEXT) insets/InsetCaption.$(OBJEXT) \
 	insets/InsetCaptionable.$(OBJEXT) \
 	insets/InsetCitation.$(OBJEXT) \
-	insets/InsetCollapsable.$(OBJEXT) \
+	insets/InsetCollapsible.$(OBJEXT) \
 	insets/InsetCommand.$(OBJEXT) \
 	insets/InsetCommandParams.$(OBJEXT) insets/InsetERT.$(OBJEXT) \
 	insets/InsetExternal.$(OBJEXT) insets/InsetFlex.$(OBJEXT) \
@@ -1498,7 +1498,7 @@ SOURCEFILESINSETS = \
 	insets/InsetCaption.cpp \
 	insets/InsetCaptionable.cpp \
 	insets/InsetCitation.cpp \
-	insets/InsetCollapsable.cpp \
+	insets/InsetCollapsible.cpp \
 	insets/InsetCommand.cpp \
 	insets/InsetCommandParams.cpp \
 	insets/InsetERT.cpp \
@@ -1558,7 +1558,7 @@ HEADERFILESINSETS = \
 	insets/InsetCaptionable.h \
 	insets/InsetCitation.h \
 	insets/InsetCode.h \
-	insets/InsetCollapsable.h \
+	insets/InsetCollapsible.h \
 	insets/InsetCommand.h \
 	insets/InsetCommandParams.h \
 	insets/InsetERT.h \
@@ -1761,7 +1761,7 @@ insets/InsetCaptionable.$(OBJEXT): inset
 	insets/$(DEPDIR)/$(am__dirstamp)
 insets/InsetCitation.$(OBJEXT): insets/$(am__dirstamp) \
 	insets/$(DEPDIR)/$(am__dirstamp)
-insets/InsetCollapsable.$(OBJEXT): insets/$(am__dirstamp) \
+insets/InsetCollapsible.$(OBJEXT): insets/$(am__dirstamp) \
 	insets/$(DEPDIR)/$(am__dirstamp)
 insets/InsetCommand.$(OBJEXT): insets/$(am__dirstamp) \
 	insets/$(DEPDIR)/$(am__dirstamp)
@@ -2252,7 +2252,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@insets/$(DEPDIR)/InsetCaption.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@insets/$(DEPDIR)/InsetCaptionable.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@insets/$(DEPDIR)/InsetCitation.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@insets/$(DEPDIR)/InsetCollapsable.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@insets/$(DEPDIR)/InsetCollapsible.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@insets/$(DEPDIR)/InsetCommand.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@insets/$(DEPDIR)/InsetCommandParams.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@insets/$(DEPDIR)/InsetERT.Po@am__quote@
Index: b/src/Text2.cpp
===================================================================
--- a/src/Text2.cpp
+++ b/src/Text2.cpp
@@ -42,7 +42,7 @@
 #include "TextClass.h"
 #include "TextMetrics.h"
 
-#include "insets/InsetCollapsable.h"
+#include "insets/InsetCollapsible.h"
 
 #include "mathed/InsetMathHull.h"
 
Index: b/src/Text3.cpp
===================================================================
--- a/src/Text3.cpp
+++ b/src/Text3.cpp
@@ -53,7 +53,7 @@
 #include "frontends/Selection.h"
 
 #include "insets/InsetArgument.h"
-#include "insets/InsetCollapsable.h"
+#include "insets/InsetCollapsible.h"
 #include "insets/InsetCommand.h"
 #include "insets/InsetExternal.h"
 #include "insets/InsetFloat.h"
@@ -242,7 +242,7 @@ static bool doInsertInset(Cursor & cur,
 	if (!inset)
 		return false;
 
-	if (InsetCollapsable * ci = inset->asInsetCollapsable())
+	if (InsetCollapsible * ci = inset->asInsetCollapsible())
 		ci->setButtonLabel();
 
 	cur.recordUndo();
Index: b/src/factory.cpp
===================================================================
--- a/src/factory.cpp
+++ b/src/factory.cpp
@@ -679,7 +679,7 @@ Inset * readInset(Lexer & lex, Buffer *
 		}
 
 		// Set the buffer reference for proper parsing of some insets
-		// (InsetCollapsable for example)
+		// (InsetCollapsible for example)
 		inset->setBuffer(*buf);
 		inset->read(lex);
 		// Set again the buffer for insets that are created inside this inset
Index: b/src/frontends/qt4/GuiERT.cpp
===================================================================
--- a/src/frontends/qt4/GuiERT.cpp
+++ b/src/frontends/qt4/GuiERT.cpp
@@ -40,8 +40,8 @@ GuiERT::GuiERT(QWidget * parent) : Inset
 
 docstring GuiERT::dialogToParams() const
 {
-	InsetCollapsable::CollapseStatus const status = openRB->isChecked()
-		? InsetCollapsable::Open : InsetCollapsable::Collapsed;
+	InsetCollapsible::CollapseStatus const status = openRB->isChecked()
+		? InsetCollapsible::Open : InsetCollapsible::Collapsed;
 	return from_ascii(InsetERT::params2string(status));
 }
 
@@ -51,10 +51,10 @@ void GuiERT::paramsToDialog(Inset const
 	InsetERT const * ert = static_cast<InsetERT const *>(inset);
 	// FIXME: This dialog has absolutely no value...
 	BufferView const * bv = guiApp->currentView()->currentBufferView();
-	InsetCollapsable::CollapseStatus status = ert->status(*bv);
+	InsetCollapsible::CollapseStatus status = ert->status(*bv);
 	switch (status) {
-		case InsetCollapsable::Open: openRB->setChecked(true); break;
-		case InsetCollapsable::Collapsed: collapsedRB->setChecked(true); break;
+		case InsetCollapsible::Open: openRB->setChecked(true); break;
+		case InsetCollapsible::Collapsed: collapsedRB->setChecked(true); break;
 	}
 }
 
Index: b/src/insets/Inset.cpp
===================================================================
--- a/src/insets/Inset.cpp
+++ b/src/insets/Inset.cpp
@@ -116,7 +116,7 @@ static void build_translator()
 	insetnames[MATH_MACROARG_CODE] = InsetName("mathmacroarg");
 	insetnames[LISTINGS_CODE] = InsetName("listings");
 	insetnames[INFO_CODE] = InsetName("info", _("Info"));
-	insetnames[COLLAPSABLE_CODE] = InsetName("collapsable");
+	insetnames[COLLAPSIBLE_CODE] = InsetName("collapsible");
 	insetnames[NEWPAGE_CODE] = InsetName("newpage");
 	insetnames[SCRIPT_CODE] = InsetName("script");
 	insetnames[CELL_CODE] = InsetName("tablecell");
Index: b/src/insets/Inset.h
===================================================================
--- a/src/insets/Inset.h
+++ b/src/insets/Inset.h
@@ -40,7 +40,7 @@ class Dimension;
 class DocIterator;
 class FuncRequest;
 class FuncStatus;
-class InsetCollapsable;
+class InsetCollapsible;
 class InsetCommand;
 class InsetIterator;
 class InsetLayout;
@@ -139,10 +139,10 @@ public:
 	virtual InsetText * asInsetText() { return 0; }
 	/// is this inset based on the InsetText class?
 	virtual InsetText const * asInsetText() const { return 0; }
-	/// is this inset based on the InsetCollapsable class?
-	virtual InsetCollapsable * asInsetCollapsable() { return 0; }
-	/// is this inset based on the InsetCollapsable class?
-	virtual InsetCollapsable const * asInsetCollapsable() const { return 0; }
+	/// is this inset based on the InsetCollapsible class?
+	virtual InsetCollapsible * asInsetCollapsible() { return 0; }
+	/// is this inset based on the InsetCollapsible class?
+	virtual InsetCollapsible const * asInsetCollapsible() const { return 0; }
 	/// is this inset based on the InsetTabular class?
 	virtual InsetTabular * asInsetTabular() { return 0; }
 	/// is this inset based on the InsetTabular class?
@@ -332,12 +332,12 @@ public:
 							 bool const shorten = true) const;
 
 	/// can the contents of the inset be edited on screen ?
-	// true for InsetCollapsables (not ButtonOnly) (not InsetInfo), InsetText
+	// true for InsetCollapsibles (not ButtonOnly) (not InsetInfo), InsetText
 	virtual bool editable() const;
 	/// has the Inset settings that can be modified in a dialog ?
 	virtual bool hasSettings() const;
 	/// can we go further down on mouse click?
-	// true for InsetCaption, InsetCollapsables (not ButtonOnly), InsetTabular
+	// true for InsetCaption, InsetCollapsibles (not ButtonOnly), InsetTabular
 	virtual bool descendable(BufferView const &) const { return false; }
 	/// is this an inset that can be moved into?
 	/// FIXME: merge with editable()
Index: b/src/insets/InsetArgument.cpp
===================================================================
--- a/src/insets/InsetArgument.cpp
+++ b/src/insets/InsetArgument.cpp
@@ -37,7 +37,7 @@ namespace lyx {
 
 
 InsetArgument::InsetArgument(Buffer * buf, string const & name)
-    : InsetCollapsable(buf), name_(name), labelstring_(docstring()),
+    : InsetCollapsible(buf), name_(name), labelstring_(docstring()),
       font_(inherit_font), labelfont_(inherit_font), decoration_(string()),
       pass_thru_(false), pass_thru_chars_(docstring())
 {}
@@ -46,14 +46,14 @@ InsetArgument::InsetArgument(Buffer * bu
 void InsetArgument::write(ostream & os) const
 {
 	os << "Argument " << name_ << "\n";
-	InsetCollapsable::write(os);
+	InsetCollapsible::write(os);
 }
 
 
 void InsetArgument::read(Lexer & lex)
 {
 	lex >> name_;
-	InsetCollapsable::read(lex);
+	InsetCollapsible::read(lex);
 }
 
 
@@ -118,7 +118,7 @@ void InsetArgument::updateBuffer(ParIter
 		tooltip_ = _("Argument not known in this Layout. Will be suppressed in the output.");
 	}
 	setButtonLabel();
-	InsetCollapsable::updateBuffer(it, utype);
+	InsetCollapsible::updateBuffer(it, utype);
 }
 
 
@@ -159,23 +159,23 @@ void InsetArgument::doDispatch(Cursor &
 	case LFUN_CLIPBOARD_PASTE:
 	case LFUN_SELECTION_PASTE:
 	case LFUN_PRIMARY_SELECTION_PASTE:
-		// Do not call InsetCollapsable::doDispatch(cur, cmd)
+		// Do not call InsetCollapsible::doDispatch(cur, cmd)
 		// with (inherited) pass_thru to avoid call for
 		// fixParagraphsFont(), which does not play nicely with
 		// inherited pass_thru (see #8471).
 		// FIXME: Once we have implemented genuine pass_thru
 		// option for InsetArgument (not inherited pass_thru),
 		// we should probably directly call
-		// InsetCollapsable::doDispatch(cur, cmd) for that
+		// InsetCollapsible::doDispatch(cur, cmd) for that
 		// case as well
 		if (pass_thru_)
 			text().dispatch(cur, cmd);
 		else
-			InsetCollapsable::doDispatch(cur, cmd);
+			InsetCollapsible::doDispatch(cur, cmd);
 		break;
 
 	default:
-		InsetCollapsable::doDispatch(cur, cmd);
+		InsetCollapsible::doDispatch(cur, cmd);
 		break;
 	}
 }
@@ -221,11 +221,11 @@ bool InsetArgument::getStatus(Cursor & c
 				flag.setEnabled(false);
 			return true;
 		}
-		return InsetCollapsable::getStatus(cur, cmd, flag);
+		return InsetCollapsible::getStatus(cur, cmd, flag);
 	}
 
 	default:
-		return InsetCollapsable::getStatus(cur, cmd, flag);
+		return InsetCollapsible::getStatus(cur, cmd, flag);
 	}
 }
 
Index: b/src/insets/InsetArgument.h
===================================================================
--- a/src/insets/InsetArgument.h
+++ b/src/insets/InsetArgument.h
@@ -13,7 +13,7 @@
 #define INSETARGUMENT_H
 
 
-#include "InsetCollapsable.h"
+#include "InsetCollapsible.h"
 
 
 namespace lyx {
@@ -23,7 +23,7 @@ namespace lyx {
  * InsetArgument. Used to insert a short version of sectioning header etc.
  * automatically, or other optional LaTeX arguments
  */
-class InsetArgument : public InsetCollapsable
+class InsetArgument : public InsetCollapsible
 {
 public:
 	///
@@ -68,7 +68,7 @@ public:
 	///
 	bool resetFontEdit() const { return false; }
 	//@}
-	/// \name Public functions inherited from InsetCollapsable class
+	/// \name Public functions inherited from InsetCollapsible class
 	//@{
 	///
 	InsetLayout::InsetDecoration decoration() const;
Index: b/src/insets/InsetBox.cpp
===================================================================
--- a/src/insets/InsetBox.cpp
+++ b/src/insets/InsetBox.cpp
@@ -100,7 +100,7 @@ BoxTranslatorLoc const & boxtranslator_l
 /////////////////////////////////////////////////////////////////////////
 
 InsetBox::InsetBox(Buffer * buffer, string const & label)
-	: InsetCollapsable(buffer), params_(label)
+	: InsetCollapsible(buffer), params_(label)
 {}
 
 
@@ -114,14 +114,14 @@ docstring InsetBox::layoutName() const
 void InsetBox::write(ostream & os) const
 {
 	params_.write(os);
-	InsetCollapsable::write(os);
+	InsetCollapsible::write(os);
 }
 
 
 void InsetBox::read(Lexer & lex)
 {
 	params_.read(lex);
-	InsetCollapsable::read(lex);
+	InsetCollapsible::read(lex);
 }
 
 
@@ -163,7 +163,7 @@ void InsetBox::setButtonLabel()
 	if (btype == Boxed)
 		setFrameColor(lcolor.getFromLaTeXName(params_.framecolor));
 	else
-		setFrameColor(Color_collapsableframe);
+		setFrameColor(Color_collapsibleframe);
 }
 
 
@@ -186,7 +186,7 @@ void InsetBox::metrics(MetricsInfo & m,
 	int textwidth_backup = m.base.textwidth;
 	if (hasFixedWidth())
 		m.base.textwidth = params_.width.inPixels(m.base);
-	InsetCollapsable::metrics(m, dim);
+	InsetCollapsible::metrics(m, dim);
 	// retore textwidth.
 	m.base.textwidth = textwidth_backup;
 }
@@ -285,7 +285,7 @@ void InsetBox::doDispatch(Cursor & cur,
 	}
 
 	default:
-		InsetCollapsable::doDispatch(cur, cmd);
+		InsetCollapsible::doDispatch(cur, cmd);
 		break;
 	}
 }
@@ -308,7 +308,7 @@ bool InsetBox::getStatus(Cursor & cur, F
 			flag.setEnabled(true);
 			return true;
 		}
-		return InsetCollapsable::getStatus(cur, cmd, flag);
+		return InsetCollapsible::getStatus(cur, cmd, flag);
 	}
 
 	case LFUN_INSET_DIALOG_UPDATE:
@@ -316,7 +316,7 @@ bool InsetBox::getStatus(Cursor & cur, F
 		return true;
 
 	default:
-		return InsetCollapsable::getStatus(cur, cmd, flag);
+		return InsetCollapsible::getStatus(cur, cmd, flag);
 	}
 }
 
@@ -728,7 +728,7 @@ void InsetBox::validate(LaTeXFeatures &
 		features.require("framed");
 		break;
 	}
-	InsetCollapsable::validate(features);
+	InsetCollapsible::validate(features);
 }
 
 
Index: b/src/insets/InsetBox.h
===================================================================
--- a/src/insets/InsetBox.h
+++ b/src/insets/InsetBox.h
@@ -14,7 +14,7 @@
 #ifndef INSETBOX_H
 #define INSETBOX_H
 
-#include "InsetCollapsable.h"
+#include "InsetCollapsible.h"
 #include "Length.h"
 
 
@@ -74,7 +74,7 @@ public:
 ///////////////////////////////////////////////////////////////////////
 
 
-class InsetBox : public InsetCollapsable
+class InsetBox : public InsetCollapsible
 {
 public:
 	///
@@ -143,7 +143,7 @@ public:
 	std::string contextMenuName() const;
 	//@}
 
-	/// \name Public functions inherited from InsetCollapsable class
+	/// \name Public functions inherited from InsetCollapsible class
 	//@{
 	///
 	void setButtonLabel();
Index: b/src/insets/InsetBranch.cpp
===================================================================
--- a/src/insets/InsetBranch.cpp
+++ b/src/insets/InsetBranch.cpp
@@ -44,7 +44,7 @@ using namespace std;
 namespace lyx {
 
 InsetBranch::InsetBranch(Buffer * buf, InsetBranchParams const & params)
-	: InsetCollapsable(buf, InsetText::DefaultLayout), params_(params)
+	: InsetCollapsible(buf, InsetText::DefaultLayout), params_(params)
 {}
 
 
@@ -53,14 +53,14 @@ void InsetBranch::write(ostream & os) co
 	os << "Branch ";
 	params_.write(os);
 	os << '\n';
-	InsetCollapsable::write(os);
+	InsetCollapsible::write(os);
 }
 
 
 void InsetBranch::read(Lexer & lex)
 {
 	params_.read(lex);
-	InsetCollapsable::read(lex);
+	InsetCollapsible::read(lex);
 }
 
 
@@ -184,11 +184,11 @@ void InsetBranch::doDispatch(Cursor & cu
 		if (cmd.argument() == "assign")
 			setStatus(cur, isBranchSelected() ? Open : Collapsed);
 		else
-			InsetCollapsable::doDispatch(cur, cmd);
+			InsetCollapsible::doDispatch(cur, cmd);
 		break;
 
 	default:
-		InsetCollapsable::doDispatch(cur, cmd);
+		InsetCollapsible::doDispatch(cur, cmd);
 		break;
 	}
 }
@@ -231,11 +231,11 @@ bool InsetBranch::getStatus(Cursor & cur
 		if (cmd.argument() == "assign")
 			flag.setEnabled(true);
 		else
-			return InsetCollapsable::getStatus(cur, cmd, flag);	
+			return InsetCollapsible::getStatus(cur, cmd, flag);	
 		break;
 
 	default:
-		return InsetCollapsable::getStatus(cur, cmd, flag);
+		return InsetCollapsible::getStatus(cur, cmd, flag);
 	}
 	return true;
 }
@@ -297,7 +297,7 @@ docstring InsetBranch::xhtml(XHTMLStream
 void InsetBranch::toString(odocstream & os) const
 {
 	if (isBranchSelected())
-		InsetCollapsable::toString(os);
+		InsetCollapsible::toString(os);
 }
 
 
@@ -305,14 +305,14 @@ void InsetBranch::forOutliner(docstring
 							  bool const shorten) const
 {
 	if (isBranchSelected())
-		InsetCollapsable::forOutliner(os, maxlen, shorten);
+		InsetCollapsible::forOutliner(os, maxlen, shorten);
 }
 
 
 void InsetBranch::validate(LaTeXFeatures & features) const
 {
 	if (isBranchSelected())
-		InsetCollapsable::validate(features);
+		InsetCollapsible::validate(features);
 }
 
 
@@ -367,7 +367,7 @@ void InsetBranch::addToToc(DocIterator c
 	
 	// Proceed with the rest of the inset.
 	bool const doing_output = output_active && isBranchSelected();
-	InsetCollapsable::addToToc(cpit, doing_output, utype);
+	InsetCollapsible::addToToc(cpit, doing_output, utype);
 }
 
 
Index: b/src/insets/InsetBranch.h
===================================================================
--- a/src/insets/InsetBranch.h
+++ b/src/insets/InsetBranch.h
@@ -12,7 +12,7 @@
 #ifndef INSETBRANCH_H
 #define INSETBRANCH_H
 
-#include "InsetCollapsable.h"
+#include "InsetCollapsible.h"
 
 namespace lyx {
 
@@ -38,7 +38,7 @@ public:
 
 /// The Branch inset for alternative, conditional output.
 
-class InsetBranch : public InsetCollapsable
+class InsetBranch : public InsetCollapsible
 {
 public:
 	///
Index: b/src/insets/InsetCaption.cpp
===================================================================
--- a/src/insets/InsetCaption.cpp
+++ b/src/insets/InsetCaption.cpp
@@ -54,7 +54,7 @@ InsetCaption::InsetCaption(Buffer * buf,
     : InsetText(buf, InsetText::PlainLayout), type_(type)
 {
 	setDrawFrame(true);
-	setFrameColor(Color_collapsableframe);
+	setFrameColor(Color_collapsibleframe);
 }
 
 
Index: b/src/insets/InsetCaptionable.cpp
===================================================================
--- a/src/insets/InsetCaptionable.cpp
+++ b/src/insets/InsetCaptionable.cpp
@@ -58,7 +58,7 @@ void InsetCaptionable::addToToc(DocItera
 	shared_ptr<TocBuilder> b = buffer().tocBackend().builder(caption_type_);
 	b->pushItem(pit, str, output_active);
 	// Proceed with the rest of the inset.
-	InsetCollapsable::addToToc(cpit, output_active, utype);
+	InsetCollapsible::addToToc(cpit, output_active, utype);
 	b->pop();
 }
 
@@ -79,7 +79,7 @@ void InsetCaptionable::updateBuffer(ParI
 	// Tell captions what the current float is
 	cnts.current_float(caption_type_);
 	cnts.isSubfloat(subflt);
-	InsetCollapsable::updateBuffer(it, utype);
+	InsetCollapsible::updateBuffer(it, utype);
 	// Restore counters
 	cnts.current_float(saveflt);
 	if (utype == OutputUpdate)
@@ -90,7 +90,7 @@ void InsetCaptionable::updateBuffer(ParI
 
 bool InsetCaptionable::insetAllowed(InsetCode c) const
 {
-	return (c == CAPTION_CODE) || InsetCollapsable::insetAllowed(c);
+	return (c == CAPTION_CODE) || InsetCollapsible::insetAllowed(c);
 }
 
 
Index: b/src/insets/InsetCaptionable.h
===================================================================
--- a/src/insets/InsetCaptionable.h
+++ b/src/insets/InsetCaptionable.h
@@ -15,18 +15,18 @@
 #ifndef INSET_CAPTIONABLE_H
 #define INSET_CAPTIONABLE_H
 
-#include "InsetCollapsable.h"
+#include "InsetCollapsible.h"
 
 
 namespace lyx {
 
-class InsetCaptionable : public InsetCollapsable
+class InsetCaptionable : public InsetCollapsible
 {
 public:
 	InsetCaptionable(Buffer * buffer)
-		: InsetCollapsable(buffer), caption_type_("senseless") {}
+		: InsetCollapsible(buffer), caption_type_("senseless") {}
 	InsetCaptionable(Buffer * buffer, std::string const & type)
-		: InsetCollapsable(buffer), caption_type_(type) {}
+		: InsetCollapsible(buffer), caption_type_(type) {}
 	///
 	std::string const & captionType() const { return caption_type_; }
 	///
Index: b/src/insets/InsetCollapsable.cpp
===================================================================
--- a/src/insets/InsetCollapsable.cpp
+++ /dev/null
@@ -1,644 +0,0 @@
-/**
- * \file InsetCollapsable.cpp
- * This file is part of LyX, the document processor.
- * Licence details can be found in the file COPYING.
- *
- * \author Alejandro Aguilar Sierra
- * \author Jürgen Vigna
- * \author Lars Gullik Bjønnes
- *
- * Full author contact details are available in file CREDITS.
- */
-
-#include <config.h>
-
-#include "InsetCollapsable.h"
-
-#include "Buffer.h"
-#include "BufferView.h"
-#include "Cursor.h"
-#include "Dimension.h"
-#include "FuncRequest.h"
-#include "FuncStatus.h"
-#include "InsetLayout.h"
-#include "Lexer.h"
-#include "MetricsInfo.h"
-#include "OutputParams.h"
-
-#include "frontends/FontMetrics.h"
-#include "frontends/Painter.h"
-
-#include "support/debug.h"
-#include "support/docstream.h"
-#include "support/gettext.h"
-#include "support/lassert.h"
-#include "support/lstrings.h"
-
-using namespace std;
-
-
-namespace lyx {
-
-InsetCollapsable::InsetCollapsable(Buffer * buf, InsetText::UsePlain ltype)
-	: InsetText(buf, ltype), status_(Open), openinlined_(false)
-{
-	setDrawFrame(true);
-	setFrameColor(Color_collapsableframe);
-}
-
-
-// The sole purpose of this copy constructor is to make sure
-// that the mouse_hover_ map is not copied and remains empty.
-InsetCollapsable::InsetCollapsable(InsetCollapsable const & rhs)
-	: InsetText(rhs),
-	  status_(rhs.status_),
-	  labelstring_(rhs.labelstring_),
-	  button_dim(rhs.button_dim),
-	  openinlined_(rhs.openinlined_)
-{}
-
-
-InsetCollapsable::~InsetCollapsable()
-{
-	map<BufferView const *, bool>::iterator it = mouse_hover_.begin();
-	map<BufferView const *, bool>::iterator end = mouse_hover_.end();
-	for (; it != end; ++it)
-		if (it->second)
-			it->first->clearLastInset(this);
-}
-
-
-InsetCollapsable::CollapseStatus InsetCollapsable::status(BufferView const & bv) const
-{
-	if (decoration() == InsetLayout::CONGLOMERATE)
-		return status_;
-	return auto_open_[&bv] ? Open : status_;
-}
-
-
-InsetCollapsable::Geometry InsetCollapsable::geometry(BufferView const & bv) const
-{
-	switch (decoration()) {
-	case InsetLayout::CLASSIC:
-		if (status(bv) == Open)
-			return openinlined_ ? LeftButton : TopButton;
-		return ButtonOnly;
-
-	case InsetLayout::MINIMALISTIC:
-		return status(bv) == Open ? NoButton : ButtonOnly ;
-
-	case InsetLayout::CONGLOMERATE:
-		return status(bv) == Open ? SubLabel : Corners ;
-
-	case InsetLayout::DEFAULT:
-		break; // this shouldn't happen
-	}
-
-	// dummy return value to shut down a warning,
-	// this is dead code.
-	return NoButton;
-}
-
-
-InsetCollapsable::Geometry InsetCollapsable::geometry() const
-{
-	switch (decoration()) {
-	case InsetLayout::CLASSIC:
-		if (status_ == Open)
-			return openinlined_ ? LeftButton : TopButton;
-		return ButtonOnly;
-
-	case InsetLayout::MINIMALISTIC:
-		return status_ == Open ? NoButton : ButtonOnly ;
-
-	case InsetLayout::CONGLOMERATE:
-		return status_ == Open ? SubLabel : Corners ;
-
-	case InsetLayout::DEFAULT:
-		break; // this shouldn't happen
-	}
-
-	// dummy return value to shut down a warning,
-	// this is dead code.
-	return NoButton;
-}
-
-
-docstring InsetCollapsable::toolTip(BufferView const & bv, int x, int y) const
-{
-	Dimension const dim = dimensionCollapsed(bv);
-	if (geometry(bv) == NoButton)
-		return translateIfPossible(getLayout().labelstring());
-	if (x > xo(bv) + dim.wid || y > yo(bv) + dim.des || isOpen(bv))
-		return docstring();
-
-	return toolTipText();
-}
-
-
-void InsetCollapsable::write(ostream & os) const
-{
-	os << "status ";
-	switch (status_) {
-	case Open:
-		os << "open";
-		break;
-	case Collapsed:
-		os << "collapsed";
-		break;
-	}
-	os << "\n";
-	text().write(os);
-}
-
-
-void InsetCollapsable::read(Lexer & lex)
-{
-	lex.setContext("InsetCollapsable::read");
-	string tmp_token;
-	status_ = Collapsed;
-	lex >> "status" >> tmp_token;
-	if (tmp_token == "open")
-		status_ = Open;
-
-	InsetText::read(lex);
-	setButtonLabel();
-}
-
-
-Dimension InsetCollapsable::dimensionCollapsed(BufferView const & bv) const
-{
-	Dimension dim;
-	FontInfo labelfont(getLabelfont());
-	labelfont.realize(sane_font);
-	theFontMetrics(labelfont).buttonText(
-		buttonLabel(bv), dim.wid, dim.asc, dim.des);
-	return dim;
-}
-
-
-void InsetCollapsable::metrics(MetricsInfo & mi, Dimension & dim) const
-{
-	auto_open_[mi.base.bv] = mi.base.bv->cursor().isInside(this);
-
-	FontInfo tmpfont = mi.base.font;
-	mi.base.font = getFont();
-	mi.base.font.realize(tmpfont);
-
-	BufferView const & bv = *mi.base.bv;
-
-	switch (geometry(bv)) {
-	case NoButton:
-		InsetText::metrics(mi, dim);
-		break;
-	case Corners:
-		InsetText::metrics(mi, dim);
-		dim.des -= 3;
-		dim.asc -= 1;
-		break;
-	case SubLabel: {
-		InsetText::metrics(mi, dim);
-		// consider width of the inset label
-		FontInfo font(getLabelfont());
-		font.realize(sane_font);
-		font.decSize();
-		font.decSize();
-		int w = 0;
-		int a = 0;
-		int d = 0;
-		theFontMetrics(font).rectText(buttonLabel(bv), w, a, d);
-		dim.des += a + d;
-		break;
-		}
-	case TopButton:
-	case LeftButton:
-	case ButtonOnly:
-		if (hasFixedWidth()){
-			int const mindim = button_dim.x2 - button_dim.x1;
-			if (mi.base.textwidth < mindim)
-				mi.base.textwidth = mindim;
-		}
-		dim = dimensionCollapsed(bv);
-		if (geometry(bv) == TopButton 
-			  || geometry(bv) == LeftButton) {
-			Dimension textdim;
-			InsetText::metrics(mi, textdim);
-			openinlined_ = (textdim.wid + dim.wid) < mi.base.textwidth;
-			if (openinlined_) {
-				// Correct for button width.
-				dim.wid += textdim.wid;
-				dim.des = max(dim.des - textdim.asc + dim.asc, textdim.des);
-				dim.asc = textdim.asc;
-			} else {
-				dim.des += textdim.height() + TEXT_TO_INSET_OFFSET;
-				dim.wid = max(dim.wid, textdim.wid);
-			}
-		}
-		break;
-	}
-
-	mi.base.font = tmpfont;
-}
-
-
-bool InsetCollapsable::setMouseHover(BufferView const * bv, bool mouse_hover)
-	const
-{
-	mouse_hover_[bv] = mouse_hover;
-	return true;
-}
-
-
-void InsetCollapsable::draw(PainterInfo & pi, int x, int y) const
-{
-	BufferView const & bv = *pi.base.bv;
-
-	auto_open_[&bv] = bv.cursor().isInside(this);
-
-	FontInfo tmpfont = pi.base.font;
-	pi.base.font = getFont();
-	pi.base.font.realize(tmpfont);
-
-	// Draw button first -- top, left or only
-	Dimension dimc = dimensionCollapsed(bv);
-
-	if (geometry(bv) == TopButton ||
-	    geometry(bv) == LeftButton ||
-	    geometry(bv) == ButtonOnly) {
-		button_dim.x1 = x + 0;
-		button_dim.x2 = x + dimc.width();
-		button_dim.y1 = y - dimc.asc;
-		button_dim.y2 = y + dimc.des;
-
-		FontInfo labelfont = getLabelfont();
-		labelfont.setColor(labelColor());
-		pi.pain.buttonText(x, y, buttonLabel(bv), labelfont,
-			mouse_hover_[&bv]);
-	} else {
-		button_dim.x1 = 0;
-		button_dim.y1 = 0;
-		button_dim.x2 = 0;
-		button_dim.y2 = 0;
-	}
-
-	Dimension const textdim = InsetText::dimension(bv);
-	int const baseline = y;
-	int textx, texty;
-	switch (geometry(bv)) {
-	case LeftButton:
-		textx = x + dimc.width();
-		texty = baseline;
-		InsetText::draw(pi, textx, texty);
-		break;
-	case TopButton:
-		textx = x;
-		texty = baseline + dimc.des + textdim.asc;
-		InsetText::draw(pi, textx, texty);
-		break;
-	case ButtonOnly:
-		break;
-	case NoButton:
-		textx = x;
-		texty = baseline;
-		InsetText::draw(pi, textx, texty);
-		break;
-	case SubLabel:
-	case Corners:
-		textx = x;
-		texty = baseline;
-		const_cast<InsetCollapsable *>(this)->setDrawFrame(false);
-		InsetText::draw(pi, textx, texty);
-		const_cast<InsetCollapsable *>(this)->setDrawFrame(true);
-
-		int desc = textdim.descent();
-		if (geometry(bv) == Corners)
-			desc -= 3;
-
-		const int xx1 = x + TEXT_TO_INSET_OFFSET - 1;
-		const int xx2 = x + textdim.wid - TEXT_TO_INSET_OFFSET + 1;
-		pi.pain.line(xx1, y + desc - 4, 
-			     xx1, y + desc, 
-			Color_foreground);
-		if (status_ == Open)
-			pi.pain.line(xx1, y + desc, 
-				xx2, y + desc,
-				Color_foreground);
-		else {
-			// Make status_ value visible:
-			pi.pain.line(xx1, y + desc,
-				xx1 + 4, y + desc,
-				Color_foreground);
-			pi.pain.line(xx2 - 4, y + desc,
-				xx2, y + desc,
-				Color_foreground);
-		}
-		pi.pain.line(x + textdim.wid - 3, y + desc, x + textdim.wid - 3, 
-			y + desc - 4, Color_foreground);
-
-		// the label below the text. Can be toggled.
-		if (geometry(bv) == SubLabel) {
-			FontInfo font(getLabelfont());
-			font.realize(sane_font);
-			font.decSize();
-			font.decSize();
-			int w = 0;
-			int a = 0;
-			int d = 0;
-			theFontMetrics(font).rectText(buttonLabel(bv), w, a, d);
-			int const ww = max(textdim.wid, w);
-			pi.pain.rectText(x + (ww - w) / 2, y + desc + a,
-				buttonLabel(bv), font, Color_none, Color_none);
-		}
-
-		// a visual cue when the cursor is inside the inset
-		Cursor const & cur = bv.cursor();
-		if (cur.isInside(this)) {
-			y -= textdim.asc;
-			y += 3;
-			pi.pain.line(xx1, y + 4, xx1, y, Color_foreground);
-			pi.pain.line(xx1 + 4, y, xx1, y, Color_foreground);
-			pi.pain.line(xx2, y + 4, xx2, y, Color_foreground);
-			pi.pain.line(xx2 - 4, y, xx2, y, Color_foreground);
-		}
-		break;
-	}
-
-	pi.base.font = tmpfont;
-}
-
-
-void InsetCollapsable::cursorPos(BufferView const & bv,
-		CursorSlice const & sl, bool boundary, int & x, int & y) const
-{
-	if (geometry(bv) == ButtonOnly)
-		status_ = Open;
-
-	InsetText::cursorPos(bv, sl, boundary, x, y);
-	Dimension const textdim = InsetText::dimension(bv);
-
-	switch (geometry(bv)) {
-	case LeftButton:
-		x += dimensionCollapsed(bv).wid;
-		break;
-	case TopButton: {
-		y += dimensionCollapsed(bv).des + textdim.asc;
-		break;
-	}
-	case NoButton:
-	case SubLabel:
-	case Corners:
-		// Do nothing
-		break;
-	case ButtonOnly:
-		// Cannot get here
-		break;
-	}
-}
-
-
-bool InsetCollapsable::editable() const
-{
-	return geometry() != ButtonOnly;
-}
-
-
-bool InsetCollapsable::descendable(BufferView const & bv) const
-{
-	return geometry(bv) != ButtonOnly;
-}
-
-
-bool InsetCollapsable::hitButton(FuncRequest const & cmd) const
-{
-	return button_dim.contains(cmd.x(), cmd.y());
-}
-
-
-bool InsetCollapsable::clickable(int x, int y) const
-{
-	FuncRequest cmd(LFUN_NOACTION, x, y, mouse_button::none);
-	return hitButton(cmd);
-}
-
-
-docstring const InsetCollapsable::getNewLabel(docstring const & l) const
-{
-	docstring label;
-	pos_type const max_length = 15;
-	pos_type const p_siz = paragraphs().begin()->size();
-	pos_type const n = min(max_length, p_siz);
-	pos_type i = 0;
-	pos_type j = 0;
-	for (; i < n && j < p_siz; ++j) {
-		if (paragraphs().begin()->isInset(j))
-			continue;
-		label += paragraphs().begin()->getChar(j);
-		++i;
-	}
-	if (paragraphs().size() > 1 || (i > 0 && j < p_siz)) {
-		label += "...";
-	}
-	return label.empty() ? l : label;
-}
-
-
-void InsetCollapsable::edit(Cursor & cur, bool front, EntryDirection entry_from)
-{
-	//lyxerr << "InsetCollapsable: edit left/right" << endl;
-	cur.push(*this);
-	InsetText::edit(cur, front, entry_from);
-}
-
-
-Inset * InsetCollapsable::editXY(Cursor & cur, int x, int y)
-{
-	//lyxerr << "InsetCollapsable: edit xy" << endl;
-	if (geometry(cur.bv()) == ButtonOnly
-	 || (button_dim.contains(x, y) 
-	  && geometry(cur.bv()) != NoButton))
-		return this;
-	cur.push(*this);
-	return InsetText::editXY(cur, x, y);
-}
-
-
-void InsetCollapsable::doDispatch(Cursor & cur, FuncRequest & cmd)
-{
-	//lyxerr << "InsetCollapsable::doDispatch (begin): cmd: " << cmd
-	//	<< " cur: " << cur << " bvcur: " << cur.bv().cursor() << endl;
-
-	switch (cmd.action()) {
-	case LFUN_MOUSE_PRESS:
-		if (hitButton(cmd)) {
-			switch (cmd.button()) {
-			case mouse_button::button1:
-			case mouse_button::button3:
-				// Pass the command to the enclosing InsetText,
-				// so that the cursor gets set.
-				cur.undispatched();
-				break;
-			case mouse_button::none:
-			case mouse_button::button2:
-			case mouse_button::button4:
-			case mouse_button::button5:
-				// Nothing to do.
-				cur.noScreenUpdate();
-				break;
-			}
-		} else if (geometry(cur.bv()) != ButtonOnly)
-			InsetText::doDispatch(cur, cmd);
-		else
-			cur.undispatched();
-		break;
-
-	case LFUN_MOUSE_MOTION:
-	case LFUN_MOUSE_DOUBLE:
-	case LFUN_MOUSE_TRIPLE:
-		if (hitButton(cmd)) 
-			cur.noScreenUpdate();
-		else if (geometry(cur.bv()) != ButtonOnly)
-			InsetText::doDispatch(cur, cmd);
-		else
-			cur.undispatched();
-		break;
-
-	case LFUN_MOUSE_RELEASE:
-		if (!hitButton(cmd)) {
-			// The mouse click has to be within the inset!
-			if (geometry(cur.bv()) != ButtonOnly)
-				InsetText::doDispatch(cur, cmd);
-			else
-				cur.undispatched();			
-			break;
-		}
-		if (cmd.button() != mouse_button::button1) {
-			// Nothing to do.
-			cur.noScreenUpdate();
-			break;
-		}
-		// if we are selecting, we do not want to
-		// toggle the inset.
-		if (cur.selection())
-			break;
-		// Left button is clicked, the user asks to
-		// toggle the inset visual state.
-		cur.dispatched();
-		cur.screenUpdateFlags(Update::Force | Update::FitCursor);
-		if (geometry(cur.bv()) == ButtonOnly) {
-			setStatus(cur, Open);
-			edit(cur, true);
-		}
-		else
-			setStatus(cur, Collapsed);
-		cur.bv().cursor() = cur;
-		break;
-
-	case LFUN_INSET_TOGGLE:
-		if (cmd.argument() == "open")
-			setStatus(cur, Open);
-		else if (cmd.argument() == "close")
-			setStatus(cur, Collapsed);
-		else if (cmd.argument() == "toggle" || cmd.argument().empty())
-			if (status_ == Open)
-				setStatus(cur, Collapsed);
-			else
-				setStatus(cur, Open);
-		else // if assign or anything else
-			cur.undispatched();
-		cur.dispatched();
-		break;
-
-	default:
-		InsetText::doDispatch(cur, cmd);
-		break;
-	}
-}
-
-
-bool InsetCollapsable::getStatus(Cursor & cur, FuncRequest const & cmd,
-		FuncStatus & flag) const
-{
-	switch (cmd.action()) {
-	case LFUN_INSET_TOGGLE:
-		if (cmd.argument() == "open")
-			flag.setEnabled(status_ != Open);
-		else if (cmd.argument() == "close")
-			flag.setEnabled(status_ == Open);
-		else if (cmd.argument() == "toggle" || cmd.argument().empty()) {
-			flag.setEnabled(true);
-			flag.setOnOff(status_ == Open);
-		} else
-			flag.setEnabled(false);
-		return true;
-
-	default:
-		return InsetText::getStatus(cur, cmd, flag);
-	}
-}
-
-
-void InsetCollapsable::setLabel(docstring const & l)
-{
-	labelstring_ = l;
-}
-
-
-docstring const InsetCollapsable::buttonLabel(BufferView const & bv) const
-{
-	InsetLayout const & il = getLayout();
-	docstring const label = labelstring_.empty() ? 
-		translateIfPossible(il.labelstring()) : labelstring_;
-	if (!il.contentaslabel() || geometry(bv) != ButtonOnly)
-		return label;
-	return getNewLabel(label);
-}
-
-
-void InsetCollapsable::setStatus(Cursor & cur, CollapseStatus status)
-{
-	status_ = status;
-	setButtonLabel();
-	if (status_ == Collapsed)
-		cur.leaveInset(*this);
-}
-
-
-InsetLayout::InsetDecoration InsetCollapsable::decoration() const
-{
-	InsetLayout::InsetDecoration const dec = getLayout().decoration();
-	return dec == InsetLayout::DEFAULT ? InsetLayout::CLASSIC : dec;
-}
-
-
-string InsetCollapsable::contextMenu(BufferView const & bv, int x,
-	int y) const
-{
-	string context_menu = contextMenuName();
-	string const it_context_menu = InsetText::contextMenuName();
-	if (decoration() == InsetLayout::CONGLOMERATE)
-		return context_menu + ";" + it_context_menu;
-
-	string const ic_context_menu = InsetCollapsable::contextMenuName();
-	if (ic_context_menu != context_menu)
-		context_menu += ";" + ic_context_menu;
-
-	if (geometry(bv) == NoButton)
-		return context_menu + ";" + it_context_menu;
-
-	Dimension dim = dimensionCollapsed(bv);
-	if (x < xo(bv) + dim.wid && y < yo(bv) + dim.des)
-		return context_menu;
-
-	return it_context_menu;
-}
-
-
-string InsetCollapsable::contextMenuName() const
-{
-	if (decoration() == InsetLayout::CONGLOMERATE)
-		return "context-conglomerate";
-	else
-		return "context-collapsable";
-}
-
-} // namespace lyx
Index: b/src/insets/InsetCollapsable.h
===================================================================
--- a/src/insets/InsetCollapsable.h
+++ /dev/null
@@ -1,179 +0,0 @@
-// -*- C++ -*-
-/**
- * \file InsetCollapsable.h
- * This file is part of LyX, the document processor.
- * Licence details can be found in the file COPYING.
- *
- * \author Alejandro Aguilar Sierra
- * \author Jürgen Vigna
- * \author Lars Gullik Bjønnes
- *
- * Full author contact details are available in file CREDITS.
- */
-
-#ifndef INSETCOLLAPSABLE_H
-#define INSETCOLLAPSABLE_H
-
-#include "InsetText.h"
-
-#include "Box.h"
-
-#include <map>
-
-namespace lyx {
-
-class CursorSlice;
-class InsetLayout;
-
-namespace frontend { class Painter; }
-
-/** A collapsable text inset
-
-*/
-class InsetCollapsable : public InsetText {
-public:
-	///
-	InsetCollapsable(Buffer *, InsetText::UsePlain = InsetText::PlainLayout);
-	///
-	InsetCollapsable(InsetCollapsable const & rhs);
-	///
-	virtual ~InsetCollapsable();
-	///
-	InsetCollapsable * asInsetCollapsable() { return this; }
-	///
-	InsetCollapsable const * asInsetCollapsable() const { return this; }
-	///
-	docstring toolTip(BufferView const & bv, int x, int y) const;
-	///
-	docstring layoutName() const { return from_ascii("Collapsable"); }
-	///
-	void read(Lexer &);
-	///
-	void write(std::ostream &) const;
-	///
-	void metrics(MetricsInfo &, Dimension &) const;
-	///
-	void draw(PainterInfo & pi, int x, int y) const;
-
-	/// return x,y of given position relative to the inset's baseline
-	void cursorPos(BufferView const & bv, CursorSlice const & sl,
-		bool boundary, int & x, int & y) const;
-	/// Returns true if (mouse) action is over the inset's button.
-	/// Always returns false when the inset does not have a
-	/// button.
-	bool hitButton(FuncRequest const &) const;
-	///
-	docstring const getNewLabel(docstring const & l) const;
-	///
-	bool editable() const;
-	///
-	bool hasSettings() const { return true; }
-	///
-	bool clickable(int x, int y) const;
-	/// can we go further down on mouse click?
-	bool descendable(BufferView const & bv) const;
-	///
-	void setLabel(docstring const & l);
-	///
-	virtual void setButtonLabel() {}
-	///
-	virtual docstring const buttonLabel(BufferView const &) const;
-	///
-	bool isOpen(BufferView const & bv) const 
-		{ return geometry(bv) != ButtonOnly; }
-	///
-	enum CollapseStatus {
-		Collapsed,
-		Open
-	};
-	///
-	virtual void setStatus(Cursor & cur, CollapseStatus st);
-	///
-	CollapseStatus status(BufferView const & bv) const;
-	/** Of the old CollapseStatus we only keep the values  
-	 *  Open and Collapsed.
-	 * We define a list of possible inset decoration
-	 * styles, and a list of possible (concrete, visual)
-	 * inset geometries. Relationships between them
-	 * (geometries in body of table):
-	 *
-	 *               \       CollapseStatus:
-	 *   Decoration:  \ Open                Collapsed
-	 *   -------------+-------------------------------
-	 *   Classic      | *) TopButton, <--x) ButtonOnly
-	 *                | LeftButton
-	 *   Minimalistic | NoButton            ButtonOnly
-	 *   Conglomerate | SubLabel            Corners
-	 *   ---------------------------------------------
-	 *   *) toggled by openinlined_
-	 *   x) toggled by auto_open_
-	 */
-
-	/// Default looks
-	virtual InsetLayout::InsetDecoration decoration() const;
-	/// Inset font
-	virtual FontInfo getFont() const { return getLayout().font(); }
-	/// Label font
-	virtual FontInfo getLabelfont() const { return getLayout().labelfont(); }
-	///
-	enum Geometry {
-		TopButton,
-		ButtonOnly,
-		NoButton,
-		LeftButton,
-		SubLabel,
-		Corners
-	};
-	/// Returns the geometry based on CollapseStatus
-	/// (status_), auto_open_[BufferView] and openinlined_,
-	/// and of course decoration().
-	Geometry geometry(BufferView const & bv) const;
-	/// Returns the geometry disregarding auto_open_
-	Geometry geometry() const;
-	///
-	bool getStatus(Cursor &, FuncRequest const &, FuncStatus &) const;
-	///
-	bool setMouseHover(BufferView const * bv, bool mouse_hover) const;
-	///
-	ColorCode backgroundColor(PainterInfo const &) const
-		{ return getLayout().bgcolor(); }
-	///
-	ColorCode labelColor() const { return getLayout().labelfont().color(); }
-	///
-	InsetCode lyxCode() const { return COLLAPSABLE_CODE; }
-
-	///
-	virtual bool usePlainLayout() const { return true; }
-	///
-	std::string contextMenu(BufferView const & bv, int x, int y) const;
-	///
-	std::string contextMenuName() const;
-protected:
-	///
-	void doDispatch(Cursor & cur, FuncRequest & cmd);
-	///
-	void edit(Cursor & cur, bool front, 
-		EntryDirection entry_from = ENTRY_DIRECTION_IGNORE);
-	///
-	Inset * editXY(Cursor & cur, int x, int y);
-	///
-	mutable CollapseStatus status_;
-private:
-	///
-	Dimension dimensionCollapsed(BufferView const & bv) const;
-	///
-	docstring labelstring_;
-	///
-	mutable Box button_dim;
-	/// a substatus of the Open status, determined automatically in metrics
-	mutable bool openinlined_;
-	/// the inset will automatically open when the cursor is inside. This is
-	/// dependent on the bufferview, compare with MathMacro::editing_.
-	mutable std::map<BufferView const *, bool> auto_open_;
-	/// changes color when mouse enters/leaves this inset
-	mutable std::map<BufferView const *, bool> mouse_hover_;
-};
-
-} // namespace lyx
-
-#endif
Index: b/src/insets/InsetCommand.cpp
===================================================================
--- a/src/insets/InsetCommand.cpp
+++ b/src/insets/InsetCommand.cpp
@@ -319,7 +319,7 @@ bool decodeInsetParam(string const & nam
 		break;
 	}
 	case ERT_CODE: {
-		data = InsetERT::params2string(InsetCollapsable::Open);
+		data = InsetERT::params2string(InsetCollapsible::Open);
 		break;
 	}
 	case EXTERNAL_CODE: {
Index: b/src/insets/InsetERT.cpp
===================================================================
--- a/src/insets/InsetERT.cpp
+++ b/src/insets/InsetERT.cpp
@@ -40,7 +40,7 @@ using namespace lyx::support;
 namespace lyx {
 
 InsetERT::InsetERT(Buffer * buf, CollapseStatus status)
-	: InsetCollapsable(buf)
+	: InsetCollapsible(buf)
 {
 	status_ = status;
 }
@@ -49,7 +49,7 @@ InsetERT::InsetERT(Buffer * buf, Collaps
 void InsetERT::write(ostream & os) const
 {
 	os << "ERT" << "\n";
-	InsetCollapsable::write(os);
+	InsetCollapsible::write(os);
 }
 
 
@@ -117,7 +117,7 @@ void InsetERT::doDispatch(Cursor & cur,
 		}
 		//fall-through
 	default:
-		InsetCollapsable::doDispatch(cur, cmd);
+		InsetCollapsible::doDispatch(cur, cmd);
 		break;
 	}
 
@@ -136,7 +136,7 @@ bool InsetERT::getStatus(Cursor & cur, F
 		//fall through
 
 	default:
-		return InsetCollapsable::getStatus(cur, cmd, status);
+		return InsetCollapsible::getStatus(cur, cmd, status);
 	}
 }
 
@@ -150,7 +150,7 @@ docstring const InsetERT::buttonLabel(Bu
 }
 
 
-InsetCollapsable::CollapseStatus InsetERT::string2params(string const & in)
+InsetCollapsible::CollapseStatus InsetERT::string2params(string const & in)
 {
 	if (in.empty())
 		return Collapsed;
Index: b/src/insets/InsetERT.h
===================================================================
--- a/src/insets/InsetERT.h
+++ b/src/insets/InsetERT.h
@@ -13,12 +13,12 @@
 #ifndef INSETERT_H
 #define INSETERT_H
 
-#include "InsetCollapsable.h"
+#include "InsetCollapsible.h"
 
 
 namespace lyx {
 
-/** A collapsable text inset for LaTeX insertions.
+/** A collapsible text inset for LaTeX insertions.
 
   To write full ert (including styles and other insets) in a given
   space.
@@ -29,7 +29,7 @@ namespace lyx {
 
 class Language;
 
-class InsetERT : public InsetCollapsable {
+class InsetERT : public InsetCollapsible {
 public:
 	///
 	InsetERT(Buffer *, CollapseStatus status = Open);
Index: b/src/insets/InsetFlex.cpp
===================================================================
--- a/src/insets/InsetFlex.cpp
+++ b/src/insets/InsetFlex.cpp
@@ -35,12 +35,12 @@ namespace lyx {
 
 
 InsetFlex::InsetFlex(Buffer * buf, string const & layoutName)
-	: InsetCollapsable(buf), name_(layoutName)
+	: InsetCollapsible(buf), name_(layoutName)
 {}
 
 
 InsetFlex::InsetFlex(InsetFlex const & in)
-	: InsetCollapsable(in), name_(in.name_)
+	: InsetCollapsible(in), name_(in.name_)
 {}
 
 
@@ -86,7 +86,7 @@ void InsetFlex::write(ostream & os) cons
 		}
 	}
 	os << name << "\n";
-	InsetCollapsable::write(os);
+	InsetCollapsible::write(os);
 }
 
 
@@ -101,13 +101,13 @@ bool InsetFlex::getStatus(Cursor & cur,
 				translateLyXType(to_utf8(cmd.argument()));
 			if (il.lyxtype() == type) {
 				FuncRequest temp_cmd(LFUN_INSET_DISSOLVE);
-				return InsetCollapsable::getStatus(cur, temp_cmd, flag);
+				return InsetCollapsible::getStatus(cur, temp_cmd, flag);
 			} else
 				return false;
 		}
 		// fall-through
 	default:
-		return InsetCollapsable::getStatus(cur, cmd, flag);
+		return InsetCollapsible::getStatus(cur, cmd, flag);
 	}
 }
 
@@ -123,14 +123,14 @@ void InsetFlex::doDispatch(Cursor & cur,
 			
 			if (il.lyxtype() == type) {
 				FuncRequest temp_cmd(LFUN_INSET_DISSOLVE);
-				InsetCollapsable::doDispatch(cur, temp_cmd);
+				InsetCollapsible::doDispatch(cur, temp_cmd);
 			} else
 				cur.undispatched();
 			break;
 		}
 		// fall-through
 	default:
-		InsetCollapsable::doDispatch(cur, cmd);
+		InsetCollapsible::doDispatch(cur, cmd);
 		break;
 	}
 }
@@ -159,7 +159,7 @@ void InsetFlex::updateBuffer(ParIterator
 		// need a layout flag
 		cnts.saveLastCounter();
 	}
-	InsetCollapsable::updateBuffer(it, utype);
+	InsetCollapsible::updateBuffer(it, utype);
 	if (save_counter)
 		cnts.restoreLastCounter();
 }
Index: b/src/insets/InsetFlex.h
===================================================================
--- a/src/insets/InsetFlex.h
+++ b/src/insets/InsetFlex.h
@@ -13,14 +13,14 @@
 #ifndef INSETFLEX_H
 #define INSETFLEX_H
 
-#include "InsetCollapsable.h"
+#include "InsetCollapsible.h"
 
 namespace lyx {
 
 /** The Flex inset, e.g., CharStyle, Custom inset or XML short element
 
 */
-class InsetFlex : public InsetCollapsable {
+class InsetFlex : public InsetCollapsible {
 public:
 	///
 	InsetFlex(Buffer *, std::string const & layoutName);
Index: b/src/insets/InsetFoot.cpp
===================================================================
--- a/src/insets/InsetFoot.cpp
+++ b/src/insets/InsetFoot.cpp
@@ -69,7 +69,7 @@ void InsetFoot::updateBuffer(ParIterator
 	custom_label_ += ' ' + cnts.theCounter(count, lang->code());
 	setLabel(custom_label_);
 
-	InsetCollapsable::updateBuffer(it, utype);
+	InsetCollapsible::updateBuffer(it, utype);
 	if (utype == OutputUpdate)
 		cnts.restoreLastCounter();
 }
@@ -98,7 +98,7 @@ docstring InsetFoot::toolTip(BufferView
 {
 	if (isOpen(bv))
 		// this will give us something useful if there is no button
-		return InsetCollapsable::toolTip(bv, x, y);
+		return InsetCollapsible::toolTip(bv, x, y);
 	return toolTipText(custom_label_+ ": ");
 }
 
Index: b/src/insets/InsetFootlike.cpp
===================================================================
--- a/src/insets/InsetFootlike.cpp
+++ b/src/insets/InsetFootlike.cpp
@@ -29,7 +29,7 @@ namespace lyx {
 using support::token;
 
 InsetFootlike::InsetFootlike(Buffer * buf)
-	: InsetCollapsable(buf)
+	: InsetCollapsible(buf)
 {}
 
 
@@ -37,7 +37,7 @@ void InsetFootlike::metrics(MetricsInfo
 {
 	FontInfo tmpfont = mi.base.font;
 	mi.base.font = mi.base.bv->buffer().params().getFont().fontInfo();
-	InsetCollapsable::metrics(mi, dim);
+	InsetCollapsible::metrics(mi, dim);
 	mi.base.font = tmpfont;
 }
 
@@ -46,7 +46,7 @@ void InsetFootlike::draw(PainterInfo & p
 {
 	FontInfo tmpfont = pi.base.font;
 	pi.base.font = pi.base.bv->buffer().params().getFont().fontInfo();
-	InsetCollapsable::draw(pi, x, y);
+	InsetCollapsible::draw(pi, x, y);
 	pi.base.font = tmpfont;
 }
 
@@ -55,7 +55,7 @@ void InsetFootlike::write(ostream & os)
 {
 	// The layoutName may contain a "InTitle" qualifier
 	os << to_utf8(token(layoutName(), char_type(':'), 0)) << "\n";
-	InsetCollapsable::write(os);
+	InsetCollapsible::write(os);
 }
 
 
@@ -63,7 +63,7 @@ bool InsetFootlike::insetAllowed(InsetCo
 {
 	if (code == FOOT_CODE || code == MARGIN_CODE || code == FLOAT_CODE)
 		return false;
-	return InsetCollapsable::insetAllowed(code);
+	return InsetCollapsible::insetAllowed(code);
 }
 
 
Index: b/src/insets/InsetFootlike.h
===================================================================
--- a/src/insets/InsetFootlike.h
+++ b/src/insets/InsetFootlike.h
@@ -12,7 +12,7 @@
 #ifndef INSETFOOTLIKE_H
 #define INSETFOOTLIKE_H
 
-#include "InsetCollapsable.h"
+#include "InsetCollapsible.h"
 
 
 namespace lyx {
@@ -20,7 +20,7 @@ namespace lyx {
 // To have this class is probably a bit overkill... (Lgb)
 
 // The footnote inset
-class InsetFootlike : public InsetCollapsable {
+class InsetFootlike : public InsetCollapsible {
 public:
 	///
 	InsetFootlike(Buffer *);
Index: b/src/insets/InsetIPAMacro.cpp
===================================================================
--- a/src/insets/InsetIPAMacro.cpp
+++ b/src/insets/InsetIPAMacro.cpp
@@ -124,7 +124,7 @@ void InsetIPADecoParams::read(Lexer & le
 /////////////////////////////////////////////////////////////////////
 
 InsetIPADeco::InsetIPADeco(Buffer * buf, string const & label)
-	: InsetCollapsable(buf)
+	: InsetCollapsible(buf)
 {
 	setDrawFrame(true);
 	setFrameColor(Color_insetframe);
@@ -181,7 +181,7 @@ void InsetIPADeco::metrics(MetricsInfo &
 void InsetIPADeco::draw(PainterInfo & pi, int x, int y) const
 {
 	// draw the text
-	InsetCollapsable::draw(pi, x, y);
+	InsetCollapsible::draw(pi, x, y);
 
 	// draw the inset marker
 	drawMarkers(pi, x, y);
@@ -225,14 +225,14 @@ void InsetIPADeco::draw(PainterInfo & pi
 void InsetIPADeco::write(ostream & os) const
 {
 	params_.write(os);
-	InsetCollapsable::write(os);
+	InsetCollapsible::write(os);
 }
 
 
 void InsetIPADeco::read(Lexer & lex)
 {
 	params_.read(lex);
-	InsetCollapsable::read(lex);
+	InsetCollapsible::read(lex);
 }
 
 
@@ -279,7 +279,7 @@ void InsetIPADeco::latex(otexstream & os
 		os << "\\texttoptiebar{";
 	else if (params_.type == InsetIPADecoParams::Bottomtiebar)
 		os << "\\textbottomtiebar{";
-	InsetCollapsable::latex(os, runparams);
+	InsetCollapsible::latex(os, runparams);
 	os << "}";
 }
 
@@ -288,7 +288,7 @@ int InsetIPADeco::plaintext(odocstringst
 			    OutputParams const & runparams, size_t max_length) const
 {
 	odocstringstream ods;
-	int h = (int)(InsetCollapsable::plaintext(ods, runparams, max_length) / 2);
+	int h = (int)(InsetCollapsible::plaintext(ods, runparams, max_length) / 2);
 	docstring result = ods.str();
 	docstring const before = result.substr(0, h);
 	docstring const after = result.substr(h, result.size());
@@ -310,7 +310,7 @@ int InsetIPADeco::plaintext(odocstringst
 int InsetIPADeco::docbook(odocstream & os, OutputParams const & runparams) const
 {
 	// FIXME: Any docbook option here?
-	return InsetCollapsable::docbook(os, runparams);
+	return InsetCollapsible::docbook(os, runparams);
 }
 
 
@@ -319,7 +319,7 @@ docstring InsetIPADeco::xhtml(XHTMLStrea
 	// FIXME: Like in plaintext, the combining characters "&#x361;" (toptiebar)
 	// or "&#x35c;" (bottomtiebar) would need to be inserted just in the mid
 	// of the text string. (How) can this be done with the xhtml stream?
-	return InsetCollapsable::xhtml(xs, runparams);
+	return InsetCollapsible::xhtml(xs, runparams);
 }
 
 
Index: b/src/insets/InsetIPAMacro.h
===================================================================
--- a/src/insets/InsetIPAMacro.h
+++ b/src/insets/InsetIPAMacro.h
@@ -14,7 +14,7 @@
 
 
 #include "Inset.h"
-#include "InsetCollapsable.h"
+#include "InsetCollapsible.h"
 
 
 namespace lyx {
@@ -45,7 +45,7 @@ public:
 /////////////////////////////////////////////////////////////////////////
 
 /// Used to insert IPA decorations
-class InsetIPADeco : public InsetCollapsable
+class InsetIPADeco : public InsetCollapsible
 {
 public:
 	///
Index: b/src/insets/InsetIndex.cpp
===================================================================
--- a/src/insets/InsetIndex.cpp
+++ b/src/insets/InsetIndex.cpp
@@ -54,7 +54,7 @@ namespace lyx {
 
 
 InsetIndex::InsetIndex(Buffer * buf, InsetIndexParams const & params)
-	: InsetCollapsable(buf), params_(params)
+	: InsetCollapsible(buf), params_(params)
 {}
 
 
@@ -219,7 +219,7 @@ void InsetIndex::doDispatch(Cursor & cur
 		break;
 
 	default:
-		InsetCollapsable::doDispatch(cur, cmd);
+		InsetCollapsible::doDispatch(cur, cmd);
 		break;
 	}
 }
@@ -241,7 +241,7 @@ bool InsetIndex::getStatus(Cursor & cur,
 				from_utf8(cmd.getArg(1)) == params_.index);
 			return true;
 		}
-		return InsetCollapsable::getStatus(cur, cmd, flag);
+		return InsetCollapsible::getStatus(cur, cmd, flag);
 
 	case LFUN_INSET_DIALOG_UPDATE: {
 		Buffer const & realbuffer = *buffer().masterBuffer();
@@ -250,7 +250,7 @@ bool InsetIndex::getStatus(Cursor & cur,
 	}
 
 	default:
-		return InsetCollapsable::getStatus(cur, cmd, flag);
+		return InsetCollapsible::getStatus(cur, cmd, flag);
 	}
 }
 
@@ -258,11 +258,11 @@ bool InsetIndex::getStatus(Cursor & cur,
 ColorCode InsetIndex::labelColor() const
 {
 	if (params_.index.empty() || params_.index == from_ascii("idx"))
-		return InsetCollapsable::labelColor();
+		return InsetCollapsible::labelColor();
 	// FIXME UNICODE
 	ColorCode c = lcolor.getFromLyXName(to_utf8(params_.index));
 	if (c == Color_none)
-		c = InsetCollapsable::labelColor();
+		c = InsetCollapsible::labelColor();
 	return c;
 }
 
@@ -313,14 +313,14 @@ void InsetIndex::write(ostream & os) con
 {
 	os << to_utf8(layoutName());
 	params_.write(os);
-	InsetCollapsable::write(os);
+	InsetCollapsible::write(os);
 }
 
 
 void InsetIndex::read(Lexer & lex)
 {
 	params_.read(lex);
-	InsetCollapsable::read(lex);
+	InsetCollapsible::read(lex);
 }
 
 
@@ -361,7 +361,7 @@ void InsetIndex::addToToc(DocIterator co
 	text().forOutliner(str, INT_MAX);
 	buffer().tocBackend().toc(type)->push_back(TocItem(pit, 0, str, output_active));
 	// Proceed with the rest of the inset.
-	InsetCollapsable::addToToc(cpit, output_active, utype);
+	InsetCollapsible::addToToc(cpit, output_active, utype);
 }
 
 
@@ -371,7 +371,7 @@ void InsetIndex::validate(LaTeXFeatures
 	    && !params_.index.empty()
 	    && params_.index != "idx")
 		features.require("splitidx");
-	InsetCollapsable::validate(features);
+	InsetCollapsible::validate(features);
 }
 
 
Index: b/src/insets/InsetIndex.h
===================================================================
--- a/src/insets/InsetIndex.h
+++ b/src/insets/InsetIndex.h
@@ -13,7 +13,7 @@
 #define INSET_INDEX_H
 
 
-#include "InsetCollapsable.h"
+#include "InsetCollapsible.h"
 #include "InsetCommand.h"
 
 
@@ -35,7 +35,7 @@ public:
 
 /** Used to insert index labels
   */
-class InsetIndex : public InsetCollapsable {
+class InsetIndex : public InsetCollapsible {
 public:
 	///
 	InsetIndex(Buffer *, InsetIndexParams const &);
Index: b/src/insets/InsetInfo.cpp
===================================================================
--- a/src/insets/InsetInfo.cpp
+++ b/src/insets/InsetInfo.cpp
@@ -92,7 +92,7 @@ NameTranslator const & nameTranslator()
 
 	
 InsetInfo::InsetInfo(Buffer * buf, string const & name) 
-	: InsetCollapsable(buf), type_(UNKNOWN_INFO), name_()
+	: InsetCollapsible(buf), type_(UNKNOWN_INFO), name_()
 {
 	setInfo(name);
 	status_ = Collapsed;
@@ -221,7 +221,7 @@ bool InsetInfo::getStatus(Cursor & cur,
 {
 	switch (cmd.action()) {
 	case LFUN_INSET_SETTINGS:
-		return InsetCollapsable::getStatus(cur, cmd, flag);
+		return InsetCollapsible::getStatus(cur, cmd, flag);
 
 	case LFUN_INSET_DIALOG_UPDATE:
 	case LFUN_INSET_COPY_AS:
@@ -264,7 +264,7 @@ void InsetInfo::doDispatch(Cursor & cur,
 	}
 
 	default:
-		InsetCollapsable::doDispatch(cur, cmd);
+		InsetCollapsible::doDispatch(cur, cmd);
 		break;
 	}
 }
@@ -498,8 +498,8 @@ void InsetInfo::updateInfo()
 
 string InsetInfo::contextMenu(BufferView const &, int, int) const
 {
-	//FIXME: We override the implementation of InsetCollapsable,
-	//because this inset is not a collapsable inset.
+	//FIXME: We override the implementation of InsetCollapsible,
+	//because this inset is not a collapsible inset.
 	return contextMenuName();
 }
 
Index: b/src/insets/InsetInfo.h
===================================================================
--- a/src/insets/InsetInfo.h
+++ b/src/insets/InsetInfo.h
@@ -12,7 +12,7 @@
 #ifndef INSET_INFO_H
 #define INSET_INFO_H
 
-#include "InsetCollapsable.h"
+#include "InsetCollapsible.h"
 
 namespace lyx {
 
@@ -77,7 +77,7 @@ the command buffer (view->Toolbar->Comma
 
 */
 
-class InsetInfo : public InsetCollapsable {
+class InsetInfo : public InsetCollapsible {
 public:
 	enum info_type {
 		UNKNOWN_INFO,   // Invalid type
@@ -141,7 +141,7 @@ private:
 	///
 	void setText(docstring const & str);
 	// make sure that the other version of setText is still available.
-	using InsetCollapsable::setText;
+	using InsetCollapsible::setText;
 	///
 	info_type type_;
 	///
Index: b/src/insets/InsetListings.h
===================================================================
--- a/src/insets/InsetListings.h
+++ b/src/insets/InsetListings.h
@@ -25,7 +25,7 @@ class LaTeXFeatures;
 //
 /////////////////////////////////////////////////////////////////////////
 
-/// A captionable and collapsable text inset for program listings.
+/// A captionable and collapsible text inset for program listings.
 class InsetListings : public InsetCaptionable
 {
 public:
Index: b/src/insets/InsetListingsParams.cpp
===================================================================
--- a/src/insets/InsetListingsParams.cpp
+++ b/src/insets/InsetListingsParams.cpp
@@ -705,13 +705,13 @@ bool ParValidator::onoff(string const &
 ParValidator * par_validator = 0;
 
 InsetListingsParams::InsetListingsParams()
-	: inline_(false), params_(), status_(InsetCollapsable::Open)
+	: inline_(false), params_(), status_(InsetCollapsible::Open)
 {
 }
 
 
 InsetListingsParams::InsetListingsParams(string const & par, bool in,
-		InsetCollapsable::CollapseStatus s)
+		InsetCollapsible::CollapseStatus s)
 	: inline_(in), params_(), status_(s)
 {
 	// this will activate parameter validation.
@@ -732,9 +732,9 @@ void InsetListingsParams::write(ostream
 void InsetListingsParams::read(Lexer & lex)
 {
 	lex >> inline_;
-	int s = InsetCollapsable::Collapsed;
+	int s = InsetCollapsible::Collapsed;
 	lex >> s;
-	status_ = static_cast<InsetCollapsable::CollapseStatus>(s);
+	status_ = static_cast<InsetCollapsible::CollapseStatus>(s);
 	string par;
 	lex >> par;
 	fromEncodedString(par);
Index: b/src/insets/InsetListingsParams.h
===================================================================
--- a/src/insets/InsetListingsParams.h
+++ b/src/insets/InsetListingsParams.h
@@ -25,7 +25,7 @@ public:
 
 	///
 	InsetListingsParams(std::string const &, bool in=false,
-		InsetCollapsable::CollapseStatus s = InsetCollapsable::Open);
+		InsetCollapsible::CollapseStatus s = InsetCollapsible::Open);
 
 	/// write parameters to an ostream
 	void write(std::ostream &) const;
@@ -65,7 +65,7 @@ public:
 	bool isFloat() const;
 
 	///
-	InsetCollapsable::CollapseStatus status() const { return status_; }
+	InsetCollapsible::CollapseStatus status() const { return status_; }
 
 	///
 	void setInline(bool i) { inline_ = i; }
@@ -93,8 +93,8 @@ private:
 	typedef std::vector<std::pair<std::string, std::string> > keyValuePair;
 	keyValuePair params_;
 
-	/// collapsable status
-	InsetCollapsable::CollapseStatus status_;
+	/// collapsible status
+	InsetCollapsible::CollapseStatus status_;
 };
 
 
Index: b/src/insets/InsetNote.cpp
===================================================================
--- a/src/insets/InsetNote.cpp
+++ b/src/insets/InsetNote.cpp
@@ -100,7 +100,7 @@ void InsetNoteParams::read(Lexer & lex)
 /////////////////////////////////////////////////////////////////////
 
 InsetNote::InsetNote(Buffer * buf, string const & label)
-	: InsetCollapsable(buf)
+	: InsetCollapsible(buf)
 {
 	params_.type = notetranslator().find(label);
 }
@@ -127,14 +127,14 @@ Inset::DisplayType InsetNote::display()
 void InsetNote::write(ostream & os) const
 {
 	params_.write(os);
-	InsetCollapsable::write(os);
+	InsetCollapsible::write(os);
 }
 
 
 void InsetNote::read(Lexer & lex)
 {
 	params_.read(lex);
-	InsetCollapsable::read(lex);
+	InsetCollapsible::read(lex);
 }
 
 
@@ -176,7 +176,7 @@ void InsetNote::doDispatch(Cursor & cur,
 		break;
 
 	default:
-		InsetCollapsable::doDispatch(cur, cmd);
+		InsetCollapsible::doDispatch(cur, cmd);
 		break;
 	}
 }
@@ -203,7 +203,7 @@ bool InsetNote::getStatus(Cursor & cur,
 		return true;
 
 	default:
-		return InsetCollapsable::getStatus(cur, cmd, flag);
+		return InsetCollapsible::getStatus(cur, cmd, flag);
 	}
 }
 
@@ -225,7 +225,7 @@ void InsetNote::addToToc(DocIterator con
 
 	// Proceed with the rest of the inset.
 	bool doing_output = output_active && producesOutput();
-	InsetCollapsable::addToToc(cpit, doing_output, utype);
+	InsetCollapsible::addToToc(cpit, doing_output, utype);
 }
 
 
@@ -235,7 +235,7 @@ bool InsetNote::isMacroScope() const
 	if (params_.type == InsetNoteParams::Note)
 		return true;
 
-	return InsetCollapsable::isMacroScope();
+	return InsetCollapsible::isMacroScope();
 }
 
 
@@ -266,7 +266,7 @@ void InsetNote::latex(otexstream & os, O
 	// insets whose InsetLayout Display tag is false. This is achieved
 	// by telling otexstream to protect an immediately following space
 	// and is done for both comment and greyedout insets.
-	InsetCollapsable::latex(os, runparams);
+	InsetCollapsible::latex(os, runparams);
 
 	runparams_in.encoding = runparams.encoding;
 }
@@ -321,7 +321,7 @@ docstring InsetNote::xhtml(XHTMLStream &
 	if (params_.type == InsetNoteParams::Note)
 		return docstring();
 
-	return InsetCollapsable::xhtml(xs, rp);
+	return InsetCollapsible::xhtml(xs, rp);
 }
 
 
@@ -333,12 +333,12 @@ void InsetNote::validate(LaTeXFeatures &
 		if (features.runparams().flavor == OutputParams::HTML)
 			// we do output this but set display to "none" by default,
 			// but people might want to use it.
-			InsetCollapsable::validate(features);
+			InsetCollapsible::validate(features);
 		break;
 	case InsetNoteParams::Greyedout:
 		features.require("color");
 		features.require("lyxgreyedout");
-		InsetCollapsable::validate(features);
+		InsetCollapsible::validate(features);
 		break;
 	case InsetNoteParams::Note:
 		break;
Index: b/src/insets/InsetNote.h
===================================================================
--- a/src/insets/InsetNote.h
+++ b/src/insets/InsetNote.h
@@ -12,7 +12,7 @@
 #ifndef INSET_NOTE_H
 #define INSET_NOTE_H
 
-#include "InsetCollapsable.h"
+#include "InsetCollapsible.h"
 
 
 namespace lyx {
@@ -43,7 +43,7 @@ public:
 /////////////////////////////////////////////////////////////////////////
 
 /// The PostIt note inset, and other annotations
-class InsetNote : public InsetCollapsable
+class InsetNote : public InsetCollapsible
 {
 public:
 	///
Index: b/src/insets/InsetPhantom.cpp
===================================================================
--- a/src/insets/InsetPhantom.cpp
+++ b/src/insets/InsetPhantom.cpp
@@ -115,7 +115,7 @@ void InsetPhantomParams::read(Lexer & le
 /////////////////////////////////////////////////////////////////////
 
 InsetPhantom::InsetPhantom(Buffer * buf, string const & label)
-	: InsetCollapsable(buf)
+	: InsetCollapsible(buf)
 {
 	setDrawFrame(false);
 	params_.type = phantomtranslator().find(label);
@@ -136,7 +136,7 @@ docstring InsetPhantom::layoutName() con
 
 void InsetPhantom::metrics(MetricsInfo & mi, Dimension & dim) const
 {
-	InsetCollapsable::metrics(mi, dim);
+	InsetCollapsible::metrics(mi, dim);
 
 	// cache the inset dimension
 	setDimCache(mi, dim);
@@ -146,7 +146,7 @@ void InsetPhantom::metrics(MetricsInfo &
 void InsetPhantom::draw(PainterInfo & pi, int x, int y) const
 {
 	// draw the text
-	InsetCollapsable::draw(pi, x, y);
+	InsetCollapsible::draw(pi, x, y);
 
 	// draw the inset marker
 	drawMarkers(pi, x, y);
@@ -230,14 +230,14 @@ void InsetPhantom::draw(PainterInfo & pi
 void InsetPhantom::write(ostream & os) const
 {
 	params_.write(os);
-	InsetCollapsable::write(os);
+	InsetCollapsible::write(os);
 }
 
 
 void InsetPhantom::read(Lexer & lex)
 {
 	params_.read(lex);
-	InsetCollapsable::read(lex);
+	InsetCollapsible::read(lex);
 }
 
 
@@ -272,7 +272,7 @@ void InsetPhantom::doDispatch(Cursor & c
 		break;
 
 	default:
-		InsetCollapsable::doDispatch(cur, cmd);
+		InsetCollapsible::doDispatch(cur, cmd);
 		break;
 	}
 }
@@ -297,7 +297,7 @@ bool InsetPhantom::getStatus(Cursor & cu
 		return true;
 
 	default:
-		return InsetCollapsable::getStatus(cur, cmd, flag);
+		return InsetCollapsible::getStatus(cur, cmd, flag);
 	}
 }
 
@@ -328,7 +328,7 @@ void InsetPhantom::latex(otexstream & os
 		os << "\\phantom{";
 		break;
 	}
-	InsetCollapsable::latex(os, runparams);
+	InsetCollapsible::latex(os, runparams);
 	os << "}";
 }
 
@@ -350,7 +350,7 @@ int InsetPhantom::plaintext(odocstringst
 		os << '[' << buffer().B_("phantom") << ":";
 		break;
 	}
-	InsetCollapsable::plaintext(os, runparams, max_length);
+	InsetCollapsible::plaintext(os, runparams, max_length);
 	os << "]";
 
 	return PLAINTEXT_NEWLINE;
@@ -369,7 +369,7 @@ int InsetPhantom::docbook(odocstream & o
 		break;
 	}
 	os << "<" + cmdname + ">";
-	int const i = InsetCollapsable::docbook(os, runparams);
+	int const i = InsetCollapsible::docbook(os, runparams);
 	os << "</" + cmdname + ">";
 
 	return i;
Index: b/src/insets/InsetPhantom.h
===================================================================
--- a/src/insets/InsetPhantom.h
+++ b/src/insets/InsetPhantom.h
@@ -12,7 +12,7 @@
 #ifndef INSET_PHANTOM_H
 #define INSET_PHANTOM_H
 
-#include "InsetCollapsable.h"
+#include "InsetCollapsible.h"
 
 
 namespace lyx {
@@ -43,7 +43,7 @@ public:
 /////////////////////////////////////////////////////////////////////////
 
 /// The phantom inset
-class InsetPhantom : public InsetCollapsable
+class InsetPhantom : public InsetCollapsible
 {
 public:
 	///
Index: b/src/insets/InsetText.cpp
===================================================================
--- a/src/insets/InsetText.cpp
+++ b/src/insets/InsetText.cpp
@@ -430,7 +430,7 @@ void InsetText::latex(otexstream & os, O
 {
 	// This implements the standard way of handling the LaTeX
 	// output of a text inset, either a command or an
-	// environment. Standard collapsable insets should not
+	// environment. Standard collapsible insets should not
 	// redefine this, non-standard ones may call this.
 	InsetLayout const & il = getLayout();
 	if (il.forceOwnlines())
Index: b/src/lyxinsets.cpp
===================================================================
--- a/src/lyxinsets.cpp
+++ b/src/lyxinsets.cpp
@@ -14,7 +14,7 @@
 #include "insets/InsetCaption.cpp" 
 #include "insets/InsetCaptionable.cpp" 
 #include "insets/InsetCitation.cpp" 
-#include "insets/InsetCollapsable.cpp" 
+#include "insets/InsetCollapsible.cpp" 
 #include "insets/InsetCommand.cpp" 
 #include "insets/InsetCommandParams.cpp" 
 #include "insets/InsetERT.cpp" 
Index: b/src/insets/InsetCode.h
===================================================================
--- a/src/insets/InsetCode.h
+++ b/src/insets/InsetCode.h
@@ -111,7 +111,7 @@ enum InsetCode {
 	///
 	INFO_CODE, // 45
 	///
-	COLLAPSABLE_CODE,
+	COLLAPSIBLE_CODE,
 	///
 	PHANTOM_CODE,
 	///
Index: b/src/insets/InsetCollapsible.cpp
===================================================================
--- /dev/null
+++ b/src/insets/InsetCollapsible.cpp
@@ -0,0 +1,644 @@
+/**
+ * \file InsetCollapsible.cpp
+ * This file is part of LyX, the document processor.
+ * Licence details can be found in the file COPYING.
+ *
+ * \author Alejandro Aguilar Sierra
+ * \author Jürgen Vigna
+ * \author Lars Gullik Bjønnes
+ *
+ * Full author contact details are available in file CREDITS.
+ */
+
+#include <config.h>
+
+#include "InsetCollapsible.h"
+
+#include "Buffer.h"
+#include "BufferView.h"
+#include "Cursor.h"
+#include "Dimension.h"
+#include "FuncRequest.h"
+#include "FuncStatus.h"
+#include "InsetLayout.h"
+#include "Lexer.h"
+#include "MetricsInfo.h"
+#include "OutputParams.h"
+
+#include "frontends/FontMetrics.h"
+#include "frontends/Painter.h"
+
+#include "support/debug.h"
+#include "support/docstream.h"
+#include "support/gettext.h"
+#include "support/lassert.h"
+#include "support/lstrings.h"
+
+using namespace std;
+
+
+namespace lyx {
+
+InsetCollapsible::InsetCollapsible(Buffer * buf, InsetText::UsePlain ltype)
+	: InsetText(buf, ltype), status_(Open), openinlined_(false)
+{
+	setDrawFrame(true);
+	setFrameColor(Color_collapsibleframe);
+}
+
+
+// The sole purpose of this copy constructor is to make sure
+// that the mouse_hover_ map is not copied and remains empty.
+InsetCollapsible::InsetCollapsible(InsetCollapsible const & rhs)
+	: InsetText(rhs),
+	  status_(rhs.status_),
+	  labelstring_(rhs.labelstring_),
+	  button_dim(rhs.button_dim),
+	  openinlined_(rhs.openinlined_)
+{}
+
+
+InsetCollapsible::~InsetCollapsible()
+{
+	map<BufferView const *, bool>::iterator it = mouse_hover_.begin();
+	map<BufferView const *, bool>::iterator end = mouse_hover_.end();
+	for (; it != end; ++it)
+		if (it->second)
+			it->first->clearLastInset(this);
+}
+
+
+InsetCollapsible::CollapseStatus InsetCollapsible::status(BufferView const & bv) const
+{
+	if (decoration() == InsetLayout::CONGLOMERATE)
+		return status_;
+	return auto_open_[&bv] ? Open : status_;
+}
+
+
+InsetCollapsible::Geometry InsetCollapsible::geometry(BufferView const & bv) const
+{
+	switch (decoration()) {
+	case InsetLayout::CLASSIC:
+		if (status(bv) == Open)
+			return openinlined_ ? LeftButton : TopButton;
+		return ButtonOnly;
+
+	case InsetLayout::MINIMALISTIC:
+		return status(bv) == Open ? NoButton : ButtonOnly ;
+
+	case InsetLayout::CONGLOMERATE:
+		return status(bv) == Open ? SubLabel : Corners ;
+
+	case InsetLayout::DEFAULT:
+		break; // this shouldn't happen
+	}
+
+	// dummy return value to shut down a warning,
+	// this is dead code.
+	return NoButton;
+}
+
+
+InsetCollapsible::Geometry InsetCollapsible::geometry() const
+{
+	switch (decoration()) {
+	case InsetLayout::CLASSIC:
+		if (status_ == Open)
+			return openinlined_ ? LeftButton : TopButton;
+		return ButtonOnly;
+
+	case InsetLayout::MINIMALISTIC:
+		return status_ == Open ? NoButton : ButtonOnly ;
+
+	case InsetLayout::CONGLOMERATE:
+		return status_ == Open ? SubLabel : Corners ;
+
+	case InsetLayout::DEFAULT:
+		break; // this shouldn't happen
+	}
+
+	// dummy return value to shut down a warning,
+	// this is dead code.
+	return NoButton;
+}
+
+
+docstring InsetCollapsible::toolTip(BufferView const & bv, int x, int y) const
+{
+	Dimension const dim = dimensionCollapsed(bv);
+	if (geometry(bv) == NoButton)
+		return translateIfPossible(getLayout().labelstring());
+	if (x > xo(bv) + dim.wid || y > yo(bv) + dim.des || isOpen(bv))
+		return docstring();
+
+	return toolTipText();
+}
+
+
+void InsetCollapsible::write(ostream & os) const
+{
+	os << "status ";
+	switch (status_) {
+	case Open:
+		os << "open";
+		break;
+	case Collapsed:
+		os << "collapsed";
+		break;
+	}
+	os << "\n";
+	text().write(os);
+}
+
+
+void InsetCollapsible::read(Lexer & lex)
+{
+	lex.setContext("InsetCollapsible::read");
+	string tmp_token;
+	status_ = Collapsed;
+	lex >> "status" >> tmp_token;
+	if (tmp_token == "open")
+		status_ = Open;
+
+	InsetText::read(lex);
+	setButtonLabel();
+}
+
+
+Dimension InsetCollapsible::dimensionCollapsed(BufferView const & bv) const
+{
+	Dimension dim;
+	FontInfo labelfont(getLabelfont());
+	labelfont.realize(sane_font);
+	theFontMetrics(labelfont).buttonText(
+		buttonLabel(bv), dim.wid, dim.asc, dim.des);
+	return dim;
+}
+
+
+void InsetCollapsible::metrics(MetricsInfo & mi, Dimension & dim) const
+{
+	auto_open_[mi.base.bv] = mi.base.bv->cursor().isInside(this);
+
+	FontInfo tmpfont = mi.base.font;
+	mi.base.font = getFont();
+	mi.base.font.realize(tmpfont);
+
+	BufferView const & bv = *mi.base.bv;
+
+	switch (geometry(bv)) {
+	case NoButton:
+		InsetText::metrics(mi, dim);
+		break;
+	case Corners:
+		InsetText::metrics(mi, dim);
+		dim.des -= 3;
+		dim.asc -= 1;
+		break;
+	case SubLabel: {
+		InsetText::metrics(mi, dim);
+		// consider width of the inset label
+		FontInfo font(getLabelfont());
+		font.realize(sane_font);
+		font.decSize();
+		font.decSize();
+		int w = 0;
+		int a = 0;
+		int d = 0;
+		theFontMetrics(font).rectText(buttonLabel(bv), w, a, d);
+		dim.des += a + d;
+		break;
+		}
+	case TopButton:
+	case LeftButton:
+	case ButtonOnly:
+		if (hasFixedWidth()){
+			int const mindim = button_dim.x2 - button_dim.x1;
+			if (mi.base.textwidth < mindim)
+				mi.base.textwidth = mindim;
+		}
+		dim = dimensionCollapsed(bv);
+		if (geometry(bv) == TopButton 
+			  || geometry(bv) == LeftButton) {
+			Dimension textdim;
+			InsetText::metrics(mi, textdim);
+			openinlined_ = (textdim.wid + dim.wid) < mi.base.textwidth;
+			if (openinlined_) {
+				// Correct for button width.
+				dim.wid += textdim.wid;
+				dim.des = max(dim.des - textdim.asc + dim.asc, textdim.des);
+				dim.asc = textdim.asc;
+			} else {
+				dim.des += textdim.height() + TEXT_TO_INSET_OFFSET;
+				dim.wid = max(dim.wid, textdim.wid);
+			}
+		}
+		break;
+	}
+
+	mi.base.font = tmpfont;
+}
+
+
+bool InsetCollapsible::setMouseHover(BufferView const * bv, bool mouse_hover)
+	const
+{
+	mouse_hover_[bv] = mouse_hover;
+	return true;
+}
+
+
+void InsetCollapsible::draw(PainterInfo & pi, int x, int y) const
+{
+	BufferView const & bv = *pi.base.bv;
+
+	auto_open_[&bv] = bv.cursor().isInside(this);
+
+	FontInfo tmpfont = pi.base.font;
+	pi.base.font = getFont();
+	pi.base.font.realize(tmpfont);
+
+	// Draw button first -- top, left or only
+	Dimension dimc = dimensionCollapsed(bv);
+
+	if (geometry(bv) == TopButton ||
+	    geometry(bv) == LeftButton ||
+	    geometry(bv) == ButtonOnly) {
+		button_dim.x1 = x + 0;
+		button_dim.x2 = x + dimc.width();
+		button_dim.y1 = y - dimc.asc;
+		button_dim.y2 = y + dimc.des;
+
+		FontInfo labelfont = getLabelfont();
+		labelfont.setColor(labelColor());
+		pi.pain.buttonText(x, y, buttonLabel(bv), labelfont,
+			mouse_hover_[&bv]);
+	} else {
+		button_dim.x1 = 0;
+		button_dim.y1 = 0;
+		button_dim.x2 = 0;
+		button_dim.y2 = 0;
+	}
+
+	Dimension const textdim = InsetText::dimension(bv);
+	int const baseline = y;
+	int textx, texty;
+	switch (geometry(bv)) {
+	case LeftButton:
+		textx = x + dimc.width();
+		texty = baseline;
+		InsetText::draw(pi, textx, texty);
+		break;
+	case TopButton:
+		textx = x;
+		texty = baseline + dimc.des + textdim.asc;
+		InsetText::draw(pi, textx, texty);
+		break;
+	case ButtonOnly:
+		break;
+	case NoButton:
+		textx = x;
+		texty = baseline;
+		InsetText::draw(pi, textx, texty);
+		break;
+	case SubLabel:
+	case Corners:
+		textx = x;
+		texty = baseline;
+		const_cast<InsetCollapsible *>(this)->setDrawFrame(false);
+		InsetText::draw(pi, textx, texty);
+		const_cast<InsetCollapsible *>(this)->setDrawFrame(true);
+
+		int desc = textdim.descent();
+		if (geometry(bv) == Corners)
+			desc -= 3;
+
+		const int xx1 = x + TEXT_TO_INSET_OFFSET - 1;
+		const int xx2 = x + textdim.wid - TEXT_TO_INSET_OFFSET + 1;
+		pi.pain.line(xx1, y + desc - 4, 
+			     xx1, y + desc, 
+			Color_foreground);
+		if (status_ == Open)
+			pi.pain.line(xx1, y + desc, 
+				xx2, y + desc,
+				Color_foreground);
+		else {
+			// Make status_ value visible:
+			pi.pain.line(xx1, y + desc,
+				xx1 + 4, y + desc,
+				Color_foreground);
+			pi.pain.line(xx2 - 4, y + desc,
+				xx2, y + desc,
+				Color_foreground);
+		}
+		pi.pain.line(x + textdim.wid - 3, y + desc, x + textdim.wid - 3, 
+			y + desc - 4, Color_foreground);
+
+		// the label below the text. Can be toggled.
+		if (geometry(bv) == SubLabel) {
+			FontInfo font(getLabelfont());
+			font.realize(sane_font);
+			font.decSize();
+			font.decSize();
+			int w = 0;
+			int a = 0;
+			int d = 0;
+			theFontMetrics(font).rectText(buttonLabel(bv), w, a, d);
+			int const ww = max(textdim.wid, w);
+			pi.pain.rectText(x + (ww - w) / 2, y + desc + a,
+				buttonLabel(bv), font, Color_none, Color_none);
+		}
+
+		// a visual cue when the cursor is inside the inset
+		Cursor const & cur = bv.cursor();
+		if (cur.isInside(this)) {
+			y -= textdim.asc;
+			y += 3;
+			pi.pain.line(xx1, y + 4, xx1, y, Color_foreground);
+			pi.pain.line(xx1 + 4, y, xx1, y, Color_foreground);
+			pi.pain.line(xx2, y + 4, xx2, y, Color_foreground);
+			pi.pain.line(xx2 - 4, y, xx2, y, Color_foreground);
+		}
+		break;
+	}
+
+	pi.base.font = tmpfont;
+}
+
+
+void InsetCollapsible::cursorPos(BufferView const & bv,
+		CursorSlice const & sl, bool boundary, int & x, int & y) const
+{
+	if (geometry(bv) == ButtonOnly)
+		status_ = Open;
+
+	InsetText::cursorPos(bv, sl, boundary, x, y);
+	Dimension const textdim = InsetText::dimension(bv);
+
+	switch (geometry(bv)) {
+	case LeftButton:
+		x += dimensionCollapsed(bv).wid;
+		break;
+	case TopButton: {
+		y += dimensionCollapsed(bv).des + textdim.asc;
+		break;
+	}
+	case NoButton:
+	case SubLabel:
+	case Corners:
+		// Do nothing
+		break;
+	case ButtonOnly:
+		// Cannot get here
+		break;
+	}
+}
+
+
+bool InsetCollapsible::editable() const
+{
+	return geometry() != ButtonOnly;
+}
+
+
+bool InsetCollapsible::descendable(BufferView const & bv) const
+{
+	return geometry(bv) != ButtonOnly;
+}
+
+
+bool InsetCollapsible::hitButton(FuncRequest const & cmd) const
+{
+	return button_dim.contains(cmd.x(), cmd.y());
+}
+
+
+bool InsetCollapsible::clickable(int x, int y) const
+{
+	FuncRequest cmd(LFUN_NOACTION, x, y, mouse_button::none);
+	return hitButton(cmd);
+}
+
+
+docstring const InsetCollapsible::getNewLabel(docstring const & l) const
+{
+	docstring label;
+	pos_type const max_length = 15;
+	pos_type const p_siz = paragraphs().begin()->size();
+	pos_type const n = min(max_length, p_siz);
+	pos_type i = 0;
+	pos_type j = 0;
+	for (; i < n && j < p_siz; ++j) {
+		if (paragraphs().begin()->isInset(j))
+			continue;
+		label += paragraphs().begin()->getChar(j);
+		++i;
+	}
+	if (paragraphs().size() > 1 || (i > 0 && j < p_siz)) {
+		label += "...";
+	}
+	return label.empty() ? l : label;
+}
+
+
+void InsetCollapsible::edit(Cursor & cur, bool front, EntryDirection entry_from)
+{
+	//lyxerr << "InsetCollapsible: edit left/right" << endl;
+	cur.push(*this);
+	InsetText::edit(cur, front, entry_from);
+}
+
+
+Inset * InsetCollapsible::editXY(Cursor & cur, int x, int y)
+{
+	//lyxerr << "InsetCollapsible: edit xy" << endl;
+	if (geometry(cur.bv()) == ButtonOnly
+	 || (button_dim.contains(x, y) 
+	  && geometry(cur.bv()) != NoButton))
+		return this;
+	cur.push(*this);
+	return InsetText::editXY(cur, x, y);
+}
+
+
+void InsetCollapsible::doDispatch(Cursor & cur, FuncRequest & cmd)
+{
+	//lyxerr << "InsetCollapsible::doDispatch (begin): cmd: " << cmd
+	//	<< " cur: " << cur << " bvcur: " << cur.bv().cursor() << endl;
+
+	switch (cmd.action()) {
+	case LFUN_MOUSE_PRESS:
+		if (hitButton(cmd)) {
+			switch (cmd.button()) {
+			case mouse_button::button1:
+			case mouse_button::button3:
+				// Pass the command to the enclosing InsetText,
+				// so that the cursor gets set.
+				cur.undispatched();
+				break;
+			case mouse_button::none:
+			case mouse_button::button2:
+			case mouse_button::button4:
+			case mouse_button::button5:
+				// Nothing to do.
+				cur.noScreenUpdate();
+				break;
+			}
+		} else if (geometry(cur.bv()) != ButtonOnly)
+			InsetText::doDispatch(cur, cmd);
+		else
+			cur.undispatched();
+		break;
+
+	case LFUN_MOUSE_MOTION:
+	case LFUN_MOUSE_DOUBLE:
+	case LFUN_MOUSE_TRIPLE:
+		if (hitButton(cmd)) 
+			cur.noScreenUpdate();
+		else if (geometry(cur.bv()) != ButtonOnly)
+			InsetText::doDispatch(cur, cmd);
+		else
+			cur.undispatched();
+		break;
+
+	case LFUN_MOUSE_RELEASE:
+		if (!hitButton(cmd)) {
+			// The mouse click has to be within the inset!
+			if (geometry(cur.bv()) != ButtonOnly)
+				InsetText::doDispatch(cur, cmd);
+			else
+				cur.undispatched();			
+			break;
+		}
+		if (cmd.button() != mouse_button::button1) {
+			// Nothing to do.
+			cur.noScreenUpdate();
+			break;
+		}
+		// if we are selecting, we do not want to
+		// toggle the inset.
+		if (cur.selection())
+			break;
+		// Left button is clicked, the user asks to
+		// toggle the inset visual state.
+		cur.dispatched();
+		cur.screenUpdateFlags(Update::Force | Update::FitCursor);
+		if (geometry(cur.bv()) == ButtonOnly) {
+			setStatus(cur, Open);
+			edit(cur, true);
+		}
+		else
+			setStatus(cur, Collapsed);
+		cur.bv().cursor() = cur;
+		break;
+
+	case LFUN_INSET_TOGGLE:
+		if (cmd.argument() == "open")
+			setStatus(cur, Open);
+		else if (cmd.argument() == "close")
+			setStatus(cur, Collapsed);
+		else if (cmd.argument() == "toggle" || cmd.argument().empty())
+			if (status_ == Open)
+				setStatus(cur, Collapsed);
+			else
+				setStatus(cur, Open);
+		else // if assign or anything else
+			cur.undispatched();
+		cur.dispatched();
+		break;
+
+	default:
+		InsetText::doDispatch(cur, cmd);
+		break;
+	}
+}
+
+
+bool InsetCollapsible::getStatus(Cursor & cur, FuncRequest const & cmd,
+		FuncStatus & flag) const
+{
+	switch (cmd.action()) {
+	case LFUN_INSET_TOGGLE:
+		if (cmd.argument() == "open")
+			flag.setEnabled(status_ != Open);
+		else if (cmd.argument() == "close")
+			flag.setEnabled(status_ == Open);
+		else if (cmd.argument() == "toggle" || cmd.argument().empty()) {
+			flag.setEnabled(true);
+			flag.setOnOff(status_ == Open);
+		} else
+			flag.setEnabled(false);
+		return true;
+
+	default:
+		return InsetText::getStatus(cur, cmd, flag);
+	}
+}
+
+
+void InsetCollapsible::setLabel(docstring const & l)
+{
+	labelstring_ = l;
+}
+
+
+docstring const InsetCollapsible::buttonLabel(BufferView const & bv) const
+{
+	InsetLayout const & il = getLayout();
+	docstring const label = labelstring_.empty() ? 
+		translateIfPossible(il.labelstring()) : labelstring_;
+	if (!il.contentaslabel() || geometry(bv) != ButtonOnly)
+		return label;
+	return getNewLabel(label);
+}
+
+
+void InsetCollapsible::setStatus(Cursor & cur, CollapseStatus status)
+{
+	status_ = status;
+	setButtonLabel();
+	if (status_ == Collapsed)
+		cur.leaveInset(*this);
+}
+
+
+InsetLayout::InsetDecoration InsetCollapsible::decoration() const
+{
+	InsetLayout::InsetDecoration const dec = getLayout().decoration();
+	return dec == InsetLayout::DEFAULT ? InsetLayout::CLASSIC : dec;
+}
+
+
+string InsetCollapsible::contextMenu(BufferView const & bv, int x,
+	int y) const
+{
+	string context_menu = contextMenuName();
+	string const it_context_menu = InsetText::contextMenuName();
+	if (decoration() == InsetLayout::CONGLOMERATE)
+		return context_menu + ";" + it_context_menu;
+
+	string const ic_context_menu = InsetCollapsible::contextMenuName();
+	if (ic_context_menu != context_menu)
+		context_menu += ";" + ic_context_menu;
+
+	if (geometry(bv) == NoButton)
+		return context_menu + ";" + it_context_menu;
+
+	Dimension dim = dimensionCollapsed(bv);
+	if (x < xo(bv) + dim.wid && y < yo(bv) + dim.des)
+		return context_menu;
+
+	return it_context_menu;
+}
+
+
+string InsetCollapsible::contextMenuName() const
+{
+	if (decoration() == InsetLayout::CONGLOMERATE)
+		return "context-conglomerate";
+	else
+		return "context-collapsible";
+}
+
+} // namespace lyx
Index: b/src/insets/InsetCollapsible.h
===================================================================
--- /dev/null
+++ b/src/insets/InsetCollapsible.h
@@ -0,0 +1,179 @@
+// -*- C++ -*-
+/**
+ * \file InsetCollapsible.h
+ * This file is part of LyX, the document processor.
+ * Licence details can be found in the file COPYING.
+ *
+ * \author Alejandro Aguilar Sierra
+ * \author Jürgen Vigna
+ * \author Lars Gullik Bjønnes
+ *
+ * Full author contact details are available in file CREDITS.
+ */
+
+#ifndef INSETCOLLAPSIBLE_H
+#define INSETCOLLAPSIBLE_H
+
+#include "InsetText.h"
+
+#include "Box.h"
+
+#include <map>
+
+namespace lyx {
+
+class CursorSlice;
+class InsetLayout;
+
+namespace frontend { class Painter; }
+
+/** A collapsible text inset
+
+*/
+class InsetCollapsible : public InsetText {
+public:
+	///
+	InsetCollapsible(Buffer *, InsetText::UsePlain = InsetText::PlainLayout);
+	///
+	InsetCollapsible(InsetCollapsible const & rhs);
+	///
+	virtual ~InsetCollapsible();
+	///
+	InsetCollapsible * asInsetCollapsible() { return this; }
+	///
+	InsetCollapsible const * asInsetCollapsible() const { return this; }
+	///
+	docstring toolTip(BufferView const & bv, int x, int y) const;
+	///
+	docstring layoutName() const { return from_ascii("Collapsible"); }
+	///
+	void read(Lexer &);
+	///
+	void write(std::ostream &) const;
+	///
+	void metrics(MetricsInfo &, Dimension &) const;
+	///
+	void draw(PainterInfo & pi, int x, int y) const;
+
+	/// return x,y of given position relative to the inset's baseline
+	void cursorPos(BufferView const & bv, CursorSlice const & sl,
+		bool boundary, int & x, int & y) const;
+	/// Returns true if (mouse) action is over the inset's button.
+	/// Always returns false when the inset does not have a
+	/// button.
+	bool hitButton(FuncRequest const &) const;
+	///
+	docstring const getNewLabel(docstring const & l) const;
+	///
+	bool editable() const;
+	///
+	bool hasSettings() const { return true; }
+	///
+	bool clickable(int x, int y) const;
+	/// can we go further down on mouse click?
+	bool descendable(BufferView const & bv) const;
+	///
+	void setLabel(docstring const & l);
+	///
+	virtual void setButtonLabel() {}
+	///
+	virtual docstring const buttonLabel(BufferView const &) const;
+	///
+	bool isOpen(BufferView const & bv) const 
+		{ return geometry(bv) != ButtonOnly; }
+	///
+	enum CollapseStatus {
+		Collapsed,
+		Open
+	};
+	///
+	virtual void setStatus(Cursor & cur, CollapseStatus st);
+	///
+	CollapseStatus status(BufferView const & bv) const;
+	/** Of the old CollapseStatus we only keep the values  
+	 *  Open and Collapsed.
+	 * We define a list of possible inset decoration
+	 * styles, and a list of possible (concrete, visual)
+	 * inset geometries. Relationships between them
+	 * (geometries in body of table):
+	 *
+	 *               \       CollapseStatus:
+	 *   Decoration:  \ Open                Collapsed
+	 *   -------------+-------------------------------
+	 *   Classic      | *) TopButton, <--x) ButtonOnly
+	 *                | LeftButton
+	 *   Minimalistic | NoButton            ButtonOnly
+	 *   Conglomerate | SubLabel            Corners
+	 *   ---------------------------------------------
+	 *   *) toggled by openinlined_
+	 *   x) toggled by auto_open_
+	 */
+
+	/// Default looks
+	virtual InsetLayout::InsetDecoration decoration() const;
+	/// Inset font
+	virtual FontInfo getFont() const { return getLayout().font(); }
+	/// Label font
+	virtual FontInfo getLabelfont() const { return getLayout().labelfont(); }
+	///
+	enum Geometry {
+		TopButton,
+		ButtonOnly,
+		NoButton,
+		LeftButton,
+		SubLabel,
+		Corners
+	};
+	/// Returns the geometry based on CollapseStatus
+	/// (status_), auto_open_[BufferView] and openinlined_,
+	/// and of course decoration().
+	Geometry geometry(BufferView const & bv) const;
+	/// Returns the geometry disregarding auto_open_
+	Geometry geometry() const;
+	///
+	bool getStatus(Cursor &, FuncRequest const &, FuncStatus &) const;
+	///
+	bool setMouseHover(BufferView const * bv, bool mouse_hover) const;
+	///
+	ColorCode backgroundColor(PainterInfo const &) const
+		{ return getLayout().bgcolor(); }
+	///
+	ColorCode labelColor() const { return getLayout().labelfont().color(); }
+	///
+	InsetCode lyxCode() const { return COLLAPSIBLE_CODE; }
+
+	///
+	virtual bool usePlainLayout() const { return true; }
+	///
+	std::string contextMenu(BufferView const & bv, int x, int y) const;
+	///
+	std::string contextMenuName() const;
+protected:
+	///
+	void doDispatch(Cursor & cur, FuncRequest & cmd);
+	///
+	void edit(Cursor & cur, bool front, 
+		EntryDirection entry_from = ENTRY_DIRECTION_IGNORE);
+	///
+	Inset * editXY(Cursor & cur, int x, int y);
+	///
+	mutable CollapseStatus status_;
+private:
+	///
+	Dimension dimensionCollapsed(BufferView const & bv) const;
+	///
+	docstring labelstring_;
+	///
+	mutable Box button_dim;
+	/// a substatus of the Open status, determined automatically in metrics
+	mutable bool openinlined_;
+	/// the inset will automatically open when the cursor is inside. This is
+	/// dependent on the bufferview, compare with MathMacro::editing_.
+	mutable std::map<BufferView const *, bool> auto_open_;
+	/// changes color when mouse enters/leaves this inset
+	mutable std::map<BufferView const *, bool> mouse_hover_;
+};
+
+} // namespace lyx
+
+#endif
Index: b/src/insets/InsetScript.cpp
===================================================================
--- a/src/insets/InsetScript.cpp
+++ b/src/insets/InsetScript.cpp
@@ -235,7 +235,7 @@ bool InsetScript::insetAllowed(InsetCode
 	case BOX_CODE:
 	case BRANCH_CODE:
 	case CAPTION_CODE:
-	case COLLAPSABLE_CODE:
+	case COLLAPSIBLE_CODE:
 	case FLOAT_CODE:
 	case FLOAT_LIST_CODE:
 	case FOOT_CODE:
