summaryrefslogtreecommitdiff
path: root/2023-05-28-030536-6612-1@f643dde74cbd_master
diff options
context:
space:
mode:
authorraveit65 (via Travis CI) <[email protected]>2024-02-18 23:59:08 +0000
committerraveit65 (via Travis CI) <[email protected]>2024-02-18 23:59:08 +0000
commit1a4602c3aed04c5294eb9a9613ce93283b79f5fb (patch)
tree7bbf5c21169e2b8ecd9fdd62c191d58a3f8f43e4 /2023-05-28-030536-6612-1@f643dde74cbd_master
downloadpluma-gh-pages.tar.bz2
pluma-gh-pages.tar.xz
Deploy mate-desktop/pluma to github.com/mate-desktop/pluma.git:gh-pagesgh-pages
Diffstat (limited to '2023-05-28-030536-6612-1@f643dde74cbd_master')
-rw-r--r--2023-05-28-030536-6612-1@f643dde74cbd_master/index.html146
-rw-r--r--2023-05-28-030536-6612-1@f643dde74cbd_master/report-008555.html1944
-rw-r--r--2023-05-28-030536-6612-1@f643dde74cbd_master/report-13aee1.html1139
-rw-r--r--2023-05-28-030536-6612-1@f643dde74cbd_master/report-1e519c.html1475
-rw-r--r--2023-05-28-030536-6612-1@f643dde74cbd_master/report-222690.html5495
-rw-r--r--2023-05-28-030536-6612-1@f643dde74cbd_master/report-4a60ca.html4233
-rw-r--r--2023-05-28-030536-6612-1@f643dde74cbd_master/report-527848.html1327
-rw-r--r--2023-05-28-030536-6612-1@f643dde74cbd_master/report-5f782a.html1544
-rw-r--r--2023-05-28-030536-6612-1@f643dde74cbd_master/report-6c7faf.html1444
-rw-r--r--2023-05-28-030536-6612-1@f643dde74cbd_master/report-731a91.html4342
-rw-r--r--2023-05-28-030536-6612-1@f643dde74cbd_master/report-7b3428.html4233
-rw-r--r--2023-05-28-030536-6612-1@f643dde74cbd_master/report-a608c3.html1327
-rw-r--r--2023-05-28-030536-6612-1@f643dde74cbd_master/report-b8f564.html2089
-rw-r--r--2023-05-28-030536-6612-1@f643dde74cbd_master/report-cf3974.html2089
-rw-r--r--2023-05-28-030536-6612-1@f643dde74cbd_master/report-efdf48.html1150
-rw-r--r--2023-05-28-030536-6612-1@f643dde74cbd_master/report-f2c91f.html1120
-rw-r--r--2023-05-28-030536-6612-1@f643dde74cbd_master/scanview.css62
-rw-r--r--2023-05-28-030536-6612-1@f643dde74cbd_master/sorttable.js492
18 files changed, 35651 insertions, 0 deletions
diff --git a/2023-05-28-030536-6612-1@f643dde74cbd_master/index.html b/2023-05-28-030536-6612-1@f643dde74cbd_master/index.html
new file mode 100644
index 00000000..1f618038
--- /dev/null
+++ b/2023-05-28-030536-6612-1@f643dde74cbd_master/index.html
@@ -0,0 +1,146 @@
+<html>
+<head>
+<title>rootdir - scan-build results</title>
+<link type="text/css" rel="stylesheet" href="scanview.css"/>
+<script src="sorttable.js"></script>
+<script language='javascript' type="text/javascript">
+function SetDisplay(RowClass, DisplayVal)
+{
+ var Rows = document.getElementsByTagName("tr");
+ for ( var i = 0 ; i < Rows.length; ++i ) {
+ if (Rows[i].className == RowClass) {
+ Rows[i].style.display = DisplayVal;
+ }
+ }
+}
+
+function CopyCheckedStateToCheckButtons(SummaryCheckButton) {
+ var Inputs = document.getElementsByTagName("input");
+ for ( var i = 0 ; i < Inputs.length; ++i ) {
+ if (Inputs[i].type == "checkbox") {
+ if(Inputs[i] != SummaryCheckButton) {
+ Inputs[i].checked = SummaryCheckButton.checked;
+ Inputs[i].onclick();
+ }
+ }
+ }
+}
+
+function returnObjById( id ) {
+ if (document.getElementById)
+ var returnVar = document.getElementById(id);
+ else if (document.all)
+ var returnVar = document.all[id];
+ else if (document.layers)
+ var returnVar = document.layers[id];
+ return returnVar;
+}
+
+var NumUnchecked = 0;
+
+function ToggleDisplay(CheckButton, ClassName) {
+ if (CheckButton.checked) {
+ SetDisplay(ClassName, "");
+ if (--NumUnchecked == 0) {
+ returnObjById("AllBugsCheck").checked = true;
+ }
+ }
+ else {
+ SetDisplay(ClassName, "none");
+ NumUnchecked++;
+ returnObjById("AllBugsCheck").checked = false;
+ }
+}
+</script>
+<!-- SUMMARYENDHEAD -->
+</head>
+<body>
+<h1>rootdir - scan-build results</h1>
+
+<table>
+<tr><th>User:</th><td>root@33ab92fae757</td></tr>
+<tr><th>Working Directory:</th><td>/rootdir</td></tr>
+<tr><th>Command Line:</th><td>make -j 2</td></tr>
+<tr><th>Clang Version:</th><td>clang version 16.0.4 (Fedora 16.0.4-1.fc38)
+</td></tr>
+<tr><th>Date:</th><td>Sun May 28 03:05:36 2023</td></tr>
+</table>
+<h2>Bug Summary</h2><table>
+<thead><tr><td>Bug Type</td><td>Quantity</td><td class="sorttable_nosort">Display?</td></tr></thead>
+<tr style="font-weight:bold"><td class="SUMM_DESC">All Bugs</td><td class="Q">15</td><td><center><input type="checkbox" id="AllBugsCheck" onClick="CopyCheckedStateToCheckButtons(this);" checked/></center></td></tr>
+<tr><th>Logic error</th><th colspan=2></th></tr>
+<tr><td class="SUMM_DESC">Cast from non-struct type to struct type</td><td class="Q">2</td><td><center><input type="checkbox" onClick="ToggleDisplay(this,'bt_logic_error_cast_from_non-struct_type_to_struct_type');" checked/></center></td></tr>
+<tr><td class="SUMM_DESC">Identical branches</td><td class="Q">1</td><td><center><input type="checkbox" onClick="ToggleDisplay(this,'bt_logic_error_identical_branches');" checked/></center></td></tr>
+<tr><td class="SUMM_DESC">Out-of-bound access</td><td class="Q">3</td><td><center><input type="checkbox" onClick="ToggleDisplay(this,'bt_logic_error_out-of-bound_access');" checked/></center></td></tr>
+<tr><td class="SUMM_DESC">Use fixed address</td><td class="Q">1</td><td><center><input type="checkbox" onClick="ToggleDisplay(this,'bt_logic_error_use_fixed_address');" checked/></center></td></tr>
+<tr><th>Memory error</th><th colspan=2></th></tr>
+<tr><td class="SUMM_DESC">Use-after-free</td><td class="Q">1</td><td><center><input type="checkbox" onClick="ToggleDisplay(this,'bt_memory_error_use-after-free');" checked/></center></td></tr>
+<tr><th>Security</th><th colspan=2></th></tr>
+<tr><td class="SUMM_DESC">Potential insecure memory buffer bounds restriction in call 'strcpy'</td><td class="Q">1</td><td><center><input type="checkbox" onClick="ToggleDisplay(this,'bt_security_potential_insecure_memory_buffer_bounds_restriction_in_call_strcpy_');" checked/></center></td></tr>
+<tr><th>Unused code</th><th colspan=2></th></tr>
+<tr><td class="SUMM_DESC">Dead assignment</td><td class="Q">5</td><td><center><input type="checkbox" onClick="ToggleDisplay(this,'bt_unused_code_dead_assignment');" checked/></center></td></tr>
+<tr><td class="SUMM_DESC">Dead nested assignment</td><td class="Q">1</td><td><center><input type="checkbox" onClick="ToggleDisplay(this,'bt_unused_code_dead_nested_assignment');" checked/></center></td></tr>
+</table>
+<h2>Reports</h2>
+
+<table class="sortable" style="table-layout:automatic">
+<thead><tr>
+ <td>Bug Group</td>
+ <td class="sorttable_sorted">Bug Type<span id="sorttable_sortfwdind">&nbsp;&#x25BE;</span></td>
+ <td>File</td>
+ <td>Function/Method</td>
+ <td class="Q">Line</td>
+ <td class="Q">Path Length</td>
+ <td class="sorttable_nosort"></td>
+ <!-- REPORTBUGCOL -->
+</tr></thead>
+<tbody>
+<tr class="bt_logic_error_cast_from_non-struct_type_to_struct_type"><td class="DESC">Logic error</td><td class="DESC">Cast from non-struct type to struct type</td><td>pluma/mate-submodules/libegg/eggsmclient-xsmp.c</td><td class="DESC">array_prop</td><td class="Q">1199</td><td class="Q">1</td><td><a href="report-b8f564.html#EndPath">View Report</a></td>
+<!-- REPORTBUG id="report-b8f564.html" -->
+</tr>
+<tr class="bt_logic_error_cast_from_non-struct_type_to_struct_type"><td class="DESC">Logic error</td><td class="DESC">Cast from non-struct type to struct type</td><td>pluma/mate-submodules/libegg/eggsmclient-xsmp.c</td><td class="DESC">ptrarray_prop</td><td class="Q">1232</td><td class="Q">1</td><td><a href="report-cf3974.html#EndPath">View Report</a></td>
+<!-- REPORTBUG id="report-cf3974.html" -->
+</tr>
+<tr class="bt_unused_code_dead_assignment"><td class="DESC">Unused code</td><td class="DESC">Dead assignment</td><td>plugins/filebrowser/pluma-file-browser-view.c</td><td class="DESC">key_press_event</td><td class="Q">631</td><td class="Q">1</td><td><a href="report-008555.html#EndPath">View Report</a></td>
+<!-- REPORTBUG id="report-008555.html" -->
+</tr>
+<tr class="bt_unused_code_dead_assignment"><td class="DESC">Unused code</td><td class="DESC">Dead assignment</td><td>plugins/taglist/pluma-taglist-plugin-panel.c</td><td class="DESC">insert_tag</td><td class="Q">194</td><td class="Q">1</td><td><a href="report-1e519c.html#EndPath">View Report</a></td>
+<!-- REPORTBUG id="report-1e519c.html" -->
+</tr>
+<tr class="bt_unused_code_dead_assignment"><td class="DESC">Unused code</td><td class="DESC">Dead assignment</td><td>plugins/filebrowser/pluma-file-browser-store.c</td><td class="DESC">pluma_file_browser_store_get_iter</td><td class="Q">577</td><td class="Q">1</td><td><a href="report-4a60ca.html#EndPath">View Report</a></td>
+<!-- REPORTBUG id="report-4a60ca.html" -->
+</tr>
+<tr class="bt_unused_code_dead_assignment"><td class="DESC">Unused code</td><td class="DESC">Dead assignment</td><td>pluma/plumatextregion.c</td><td class="DESC">pluma_text_region_subtract</td><td class="Q">332</td><td class="Q">1</td><td><a href="report-527848.html#EndPath">View Report</a></td>
+<!-- REPORTBUG id="report-527848.html" -->
+</tr>
+<tr class="bt_unused_code_dead_assignment"><td class="DESC">Unused code</td><td class="DESC">Dead assignment</td><td>pluma/plumatextregion.c</td><td class="DESC">pluma_text_region_add</td><td class="Q">265</td><td class="Q">1</td><td><a href="report-a608c3.html#EndPath">View Report</a></td>
+<!-- REPORTBUG id="report-a608c3.html" -->
+</tr>
+<tr class="bt_unused_code_dead_nested_assignment"><td class="DESC">Unused code</td><td class="DESC">Dead nested assignment</td><td>plugins/filebrowser/pluma-file-browser-store.c</td><td class="DESC">model_add_nodes_from_files</td><td class="Q">2059</td><td class="Q">1</td><td><a href="report-7b3428.html#EndPath">View Report</a></td>
+<!-- REPORTBUG id="report-7b3428.html" -->
+</tr>
+<tr class="bt_logic_error_identical_branches"><td class="DESC">Logic error</td><td class="DESC">Identical branches</td><td>plugins/spell/pluma-spell-checker-language.c</td><td class="DESC">load_iso_entries</td><td class="Q">195</td><td class="Q">1</td><td><a href="report-f2c91f.html#EndPath">View Report</a></td>
+<!-- REPORTBUG id="report-f2c91f.html" -->
+</tr>
+<tr class="bt_logic_error_out-of-bound_access"><td class="DESC">Logic error</td><td class="DESC">Out-of-bound access</td><td>pluma/pluma-document-output-stream.c</td><td class="DESC">pluma_document_output_stream_write</td><td class="Q">332</td><td class="Q">15</td><td><a href="report-13aee1.html#EndPath">View Report</a></td>
+<!-- REPORTBUG id="report-13aee1.html" -->
+</tr>
+<tr class="bt_logic_error_out-of-bound_access"><td class="DESC">Logic error</td><td class="DESC">Out-of-bound access</td><td>plugins/filebrowser/pluma-file-browser-store.c</td><td class="DESC">model_resort_node</td><td class="Q">1110</td><td class="Q">32</td><td><a href="report-731a91.html#EndPath">View Report</a></td>
+<!-- REPORTBUG id="report-731a91.html" -->
+</tr>
+<tr class="bt_logic_error_out-of-bound_access"><td class="DESC">Logic error</td><td class="DESC">Out-of-bound access</td><td>pluma/bacon-message-connection.c</td><td class="DESC">server_cb</td><td class="Q">169</td><td class="Q">26</td><td><a href="report-efdf48.html#EndPath">View Report</a></td>
+<!-- REPORTBUG id="report-efdf48.html" -->
+</tr>
+<tr class="bt_security_potential_insecure_memory_buffer_bounds_restriction_in_call_strcpy_"><td class="DESC">Security</td><td class="DESC">Potential insecure memory buffer bounds restriction in call 'strcpy'</td><td>pluma/pluma-window.c</td><td class="DESC">pluma_window_key_press_event</td><td class="Q">332</td><td class="Q">1</td><td><a href="report-222690.html#EndPath">View Report</a></td>
+<!-- REPORTBUG id="report-222690.html" -->
+</tr>
+<tr class="bt_logic_error_use_fixed_address"><td class="DESC">Logic error</td><td class="DESC">Use fixed address</td><td>tests/document-saver.c</td><td class="DESC">saver_test_data_new</td><td class="Q">68</td><td class="Q">12</td><td><a href="report-6c7faf.html#EndPath">View Report</a></td>
+<!-- REPORTBUG id="report-6c7faf.html" -->
+</tr>
+<tr class="bt_memory_error_use-after-free"><td class="DESC">Memory error</td><td class="DESC">Use-after-free</td><td>plugins/spell/pluma-spell-checker-dialog.c</td><td class="DESC">pluma_spell_checker_dialog_set_misspelled_word</td><td class="Q">411</td><td class="Q">48</td><td><a href="report-5f782a.html#EndPath">View Report</a></td>
+<!-- REPORTBUG id="report-5f782a.html" -->
+</tr>
+</tbody>
+</table>
+
+</body></html>
diff --git a/2023-05-28-030536-6612-1@f643dde74cbd_master/report-008555.html b/2023-05-28-030536-6612-1@f643dde74cbd_master/report-008555.html
new file mode 100644
index 00000000..0c1b2f47
--- /dev/null
+++ b/2023-05-28-030536-6612-1@f643dde74cbd_master/report-008555.html
@@ -0,0 +1,1944 @@
+<!doctype html>
+<html>
+<head>
+<title>pluma-file-browser-view.c</title>
+
+<style type="text/css">
+body { color:#000000; background-color:#ffffff }
+body { font-family:Helvetica, sans-serif; font-size:10pt }
+h1 { font-size:14pt }
+.FileName { margin-top: 5px; margin-bottom: 5px; display: inline; }
+.FileNav { margin-left: 5px; margin-right: 5px; display: inline; }
+.FileNav a { text-decoration:none; font-size: larger; }
+.divider { margin-top: 30px; margin-bottom: 30px; height: 15px; }
+.divider { background-color: gray; }
+.code { border-collapse:collapse; width:100%; }
+.code { font-family: "Monospace", monospace; font-size:10pt }
+.code { line-height: 1.2em }
+.comment { color: green; font-style: oblique }
+.keyword { color: blue }
+.string_literal { color: red }
+.directive { color: darkmagenta }
+
+/* Macros and variables could have pop-up notes hidden by default.
+ - Macro pop-up: expansion of the macro
+ - Variable pop-up: value (table) of the variable */
+.macro_popup, .variable_popup { display: none; }
+
+/* Pop-up appears on mouse-hover event. */
+.macro:hover .macro_popup, .variable:hover .variable_popup {
+ display: block;
+ padding: 2px;
+ -webkit-border-radius:5px;
+ -webkit-box-shadow:1px 1px 7px #000;
+ border-radius:5px;
+ box-shadow:1px 1px 7px #000;
+ position: absolute;
+ top: -1em;
+ left:10em;
+ z-index: 1
+}
+
+.macro_popup {
+ border: 2px solid red;
+ background-color:#FFF0F0;
+ font-weight: normal;
+}
+
+.variable_popup {
+ border: 2px solid blue;
+ background-color:#F0F0FF;
+ font-weight: bold;
+ font-family: Helvetica, sans-serif;
+ font-size: 9pt;
+}
+
+/* Pop-up notes needs a relative position as a base where they pops up. */
+.macro, .variable {
+ background-color: PaleGoldenRod;
+ position: relative;
+}
+.macro { color: DarkMagenta; }
+
+#tooltiphint {
+ position: fixed;
+ width: 50em;
+ margin-left: -25em;
+ left: 50%;
+ padding: 10px;
+ border: 1px solid #b0b0b0;
+ border-radius: 2px;
+ box-shadow: 1px 1px 7px black;
+ background-color: #c0c0c0;
+ z-index: 2;
+}
+
+.num { width:2.5em; padding-right:2ex; background-color:#eeeeee }
+.num { text-align:right; font-size:8pt }
+.num { color:#444444 }
+.line { padding-left: 1ex; border-left: 3px solid #ccc }
+.line { white-space: pre }
+.msg { -webkit-box-shadow:1px 1px 7px #000 }
+.msg { box-shadow:1px 1px 7px #000 }
+.msg { -webkit-border-radius:5px }
+.msg { border-radius:5px }
+.msg { font-family:Helvetica, sans-serif; font-size:8pt }
+.msg { float:left }
+.msg { position:relative }
+.msg { padding:0.25em 1ex 0.25em 1ex }
+.msg { margin-top:10px; margin-bottom:10px }
+.msg { font-weight:bold }
+.msg { max-width:60em; word-wrap: break-word; white-space: pre-wrap }
+.msgT { padding:0x; spacing:0x }
+.msgEvent { background-color:#fff8b4; color:#000000 }
+.msgControl { background-color:#bbbbbb; color:#000000 }
+.msgNote { background-color:#ddeeff; color:#000000 }
+.mrange { background-color:#dfddf3 }
+.mrange { border-bottom:1px solid #6F9DBE }
+.PathIndex { font-weight: bold; padding:0px 5px; margin-right:5px; }
+.PathIndex { -webkit-border-radius:8px }
+.PathIndex { border-radius:8px }
+.PathIndexEvent { background-color:#bfba87 }
+.PathIndexControl { background-color:#8c8c8c }
+.PathIndexPopUp { background-color: #879abc; }
+.PathNav a { text-decoration:none; font-size: larger }
+.CodeInsertionHint { font-weight: bold; background-color: #10dd10 }
+.CodeRemovalHint { background-color:#de1010 }
+.CodeRemovalHint { border-bottom:1px solid #6F9DBE }
+.msg.selected{ background-color:orange !important; }
+
+table.simpletable {
+ padding: 5px;
+ font-size:12pt;
+ margin:20px;
+ border-collapse: collapse; border-spacing: 0px;
+}
+td.rowname {
+ text-align: right;
+ vertical-align: top;
+ font-weight: bold;
+ color:#444444;
+ padding-right:2ex;
+}
+
+/* Hidden text. */
+input.spoilerhider + label {
+ cursor: pointer;
+ text-decoration: underline;
+ display: block;
+}
+input.spoilerhider {
+ display: none;
+}
+input.spoilerhider ~ .spoiler {
+ overflow: hidden;
+ margin: 10px auto 0;
+ height: 0;
+ opacity: 0;
+}
+input.spoilerhider:checked + label + .spoiler{
+ height: auto;
+ opacity: 1;
+}
+</style>
+</head>
+<body>
+<!-- BUGDESC Value stored to 'handled' is never read -->
+
+<!-- BUGTYPE Dead assignment -->
+
+<!-- BUGCATEGORY Unused code -->
+
+<!-- BUGFILE /rootdir/plugins/filebrowser/pluma-file-browser-view.c -->
+
+<!-- FILENAME pluma-file-browser-view.c -->
+
+<!-- FUNCTIONNAME key_press_event -->
+
+<!-- ISSUEHASHCONTENTOFLINEINCONTEXT 00855510bc893ce9341fc765c2b96342 -->
+
+<!-- BUGLINE 631 -->
+
+<!-- BUGCOLUMN 2 -->
+
+<!-- BUGPATHLENGTH 1 -->
+
+<!-- BUGMETAEND -->
+<!-- REPORTHEADER -->
+<h3>Bug Summary</h3>
+<table class="simpletable">
+<tr><td class="rowname">File:</td><td>plugins/filebrowser/pluma-file-browser-view.c</td></tr>
+<tr><td class="rowname">Warning:</td><td><a href="#EndPath">line 631, column 2</a><br />Value stored to 'handled' is never read</td></tr>
+
+</table>
+<!-- REPORTSUMMARYEXTRA -->
+<h3>Annotated Source Code</h3>
+<p>Press <a href="#" onclick="toggleHelp(); return false;">'?'</a>
+ to see keyboard shortcuts</p>
+<input type="checkbox" class="spoilerhider" id="showinvocation" />
+<label for="showinvocation" >Show analyzer invocation</label>
+<div class="spoiler">clang -cc1 -cc1 -triple x86_64-redhat-linux-gnu -analyze -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name pluma-file-browser-view.c -analyzer-checker=core -analyzer-checker=apiModeling -analyzer-checker=unix -analyzer-checker=deadcode -analyzer-checker=security.insecureAPI.UncheckedReturn -analyzer-checker=security.insecureAPI.getpw -analyzer-checker=security.insecureAPI.gets -analyzer-checker=security.insecureAPI.mktemp -analyzer-checker=security.insecureAPI.mkstemp -analyzer-checker=security.insecureAPI.vfork -analyzer-checker=nullability.NullPassedToNonnull -analyzer-checker=nullability.NullReturnedFromNonnull -analyzer-output plist -w -setup-static-analyzer -mrelocation-model pic -pic-level 2 -fhalf-no-semantic-interposition -mframe-pointer=none -fmath-errno -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=2 -target-cpu x86-64 -tune-cpu generic -debugger-tuning=gdb -fcoverage-compilation-dir=/rootdir/plugins/filebrowser -resource-dir /usr/lib64/clang/16 -D HAVE_CONFIG_H -I . -I ../.. -I ../.. -I /usr/include/libxml2 -I /usr/include/glib-2.0 -I /usr/lib64/glib-2.0/include -I /usr/include/sysprof-4 -I /usr/include/libmount -I /usr/include/blkid -I /usr/include/gtk-3.0 -I /usr/include/pango-1.0 -I /usr/include/harfbuzz -I /usr/include/freetype2 -I /usr/include/libpng16 -I /usr/include/fribidi -I /usr/include/cairo -I /usr/include/pixman-1 -I /usr/include/gdk-pixbuf-2.0 -I /usr/include/gio-unix-2.0 -I /usr/include/cloudproviders -I /usr/include/atk-1.0 -I /usr/include/at-spi2-atk/2.0 -I /usr/include/at-spi-2.0 -I /usr/include/dbus-1.0 -I /usr/lib64/dbus-1.0/include -I /usr/include/gtksourceview-4 -I /usr/include/libpeas-1.0 -I /usr/include/gobject-introspection-1.0 -D PIC -internal-isystem /usr/lib64/clang/16/include -internal-isystem /usr/local/include -internal-isystem /usr/bin/../lib/gcc/x86_64-redhat-linux/13/../../../../x86_64-redhat-linux/include -internal-externc-isystem /include -internal-externc-isystem /usr/include -O2 -Wno-unused-parameter -fdebug-compilation-dir=/rootdir/plugins/filebrowser -ferror-limit 19 -fgnuc-version=4.2.1 -vectorize-loops -vectorize-slp -analyzer-checker deadcode.DeadStores -analyzer-checker alpha.deadcode.UnreachableCode -analyzer-checker alpha.core.CastSize -analyzer-checker alpha.core.CastToStruct -analyzer-checker alpha.core.IdenticalExpr -analyzer-checker alpha.core.SizeofPtr -analyzer-checker alpha.security.ArrayBoundV2 -analyzer-checker alpha.security.MallocOverflow -analyzer-checker alpha.security.ReturnPtrRange -analyzer-checker alpha.unix.SimpleStream -analyzer-checker alpha.unix.cstring.BufferOverlap -analyzer-checker alpha.unix.cstring.NotNullTerminated -analyzer-checker alpha.unix.cstring.OutOfBounds -analyzer-checker alpha.core.FixedAddr -analyzer-checker security.insecureAPI.strcpy -analyzer-output=html -faddrsig -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o /rootdir/html-report/2023-05-28-030536-6612-1 -x c pluma-file-browser-view.c
+</div>
+<div id='tooltiphint' hidden="true">
+ <p>Keyboard shortcuts: </p>
+ <ul>
+ <li>Use 'j/k' keys for keyboard navigation</li>
+ <li>Use 'Shift+S' to show/hide relevant lines</li>
+ <li>Use '?' to toggle this window</li>
+ </ul>
+ <a href="#" onclick="toggleHelp(); return false;">Close</a>
+</div>
+<script type='text/javascript'>
+var relevant_lines = {"1": {"631": 1}};
+
+var filterCounterexample = function (hide) {
+ var tables = document.getElementsByClassName("code");
+ for (var t=0; t<tables.length; t++) {
+ var table = tables[t];
+ var file_id = table.getAttribute("data-fileid");
+ var lines_in_fid = relevant_lines[file_id];
+ if (!lines_in_fid) {
+ lines_in_fid = {};
+ }
+ var lines = table.getElementsByClassName("codeline");
+ for (var i=0; i<lines.length; i++) {
+ var el = lines[i];
+ var lineNo = el.getAttribute("data-linenumber");
+ if (!lines_in_fid[lineNo]) {
+ if (hide) {
+ el.setAttribute("hidden", "");
+ } else {
+ el.removeAttribute("hidden");
+ }
+ }
+ }
+ }
+}
+
+window.addEventListener("keydown", function (event) {
+ if (event.defaultPrevented) {
+ return;
+ }
+ // SHIFT + S
+ if (event.shiftKey && event.keyCode == 83) {
+ var checked = document.getElementsByName("showCounterexample")[0].checked;
+ filterCounterexample(!checked);
+ document.getElementsByName("showCounterexample")[0].click();
+ } else {
+ return;
+ }
+ event.preventDefault();
+}, true);
+
+document.addEventListener("DOMContentLoaded", function() {
+ document.querySelector('input[name="showCounterexample"]').onchange=
+ function (event) {
+ filterCounterexample(this.checked);
+ };
+});
+</script>
+
+<form>
+ <input type="checkbox" name="showCounterexample" id="showCounterexample" />
+ <label for="showCounterexample">
+ Show only relevant lines
+ </label>
+ <input type="checkbox" name="showArrows"
+ id="showArrows" style="margin-left: 10px" />
+ <label for="showArrows">
+ Show control flow arrows
+ </label>
+</form>
+
+<script type='text/javascript'>
+// Return range of numbers from a range [lower, upper).
+function range(lower, upper) {
+ var array = [];
+ for (var i = lower; i <= upper; ++i) {
+ array.push(i);
+ }
+ return array;
+}
+
+var getRelatedArrowIndices = function(pathId) {
+ // HTML numeration of events is a bit different than it is in the path.
+ // Everything is rotated one step to the right, so the last element
+ // (error diagnostic) has index 0.
+ if (pathId == 0) {
+ // arrowIndices has at least 2 elements
+ pathId = arrowIndices.length - 1;
+ }
+
+ return range(arrowIndices[pathId], arrowIndices[pathId - 1]);
+}
+
+var highlightArrowsForSelectedEvent = function() {
+ const selectedNum = findNum();
+ const arrowIndicesToHighlight = getRelatedArrowIndices(selectedNum);
+ arrowIndicesToHighlight.forEach((index) => {
+ var arrow = document.querySelector("#arrow" + index);
+ if(arrow) {
+ classListAdd(arrow, "selected")
+ }
+ });
+}
+
+var getAbsoluteBoundingRect = function(element) {
+ const relative = element.getBoundingClientRect();
+ return {
+ left: relative.left + window.pageXOffset,
+ right: relative.right + window.pageXOffset,
+ top: relative.top + window.pageYOffset,
+ bottom: relative.bottom + window.pageYOffset,
+ height: relative.height,
+ width: relative.width
+ };
+}
+
+var drawArrow = function(index) {
+ // This function is based on the great answer from SO:
+ // https://stackoverflow.com/a/39575674/11582326
+ var start = document.querySelector("#start" + index);
+ var end = document.querySelector("#end" + index);
+ var arrow = document.querySelector("#arrow" + index);
+
+ var startRect = getAbsoluteBoundingRect(start);
+ var endRect = getAbsoluteBoundingRect(end);
+
+ // It is an arrow from a token to itself, no need to visualize it.
+ if (startRect.top == endRect.top &&
+ startRect.left == endRect.left)
+ return;
+
+ // Each arrow is a very simple Bézier curve, with two nodes and
+ // two handles. So, we need to calculate four points in the window:
+ // * start node
+ var posStart = { x: 0, y: 0 };
+ // * end node
+ var posEnd = { x: 0, y: 0 };
+ // * handle for the start node
+ var startHandle = { x: 0, y: 0 };
+ // * handle for the end node
+ var endHandle = { x: 0, y: 0 };
+ // One can visualize it as follows:
+ //
+ // start handle
+ // /
+ // X"""_.-""""X
+ // .' \
+ // / start node
+ // |
+ // |
+ // | end node
+ // \ /
+ // `->X
+ // X-'
+ // \
+ // end handle
+ //
+ // NOTE: (0, 0) is the top left corner of the window.
+
+ // We have 3 similar, but still different scenarios to cover:
+ //
+ // 1. Two tokens on different lines.
+ // -xxx
+ // /
+ // \
+ // -> xxx
+ // In this situation, we draw arrow on the left curving to the left.
+ // 2. Two tokens on the same line, and the destination is on the right.
+ // ____
+ // / \
+ // / V
+ // xxx xxx
+ // In this situation, we draw arrow above curving upwards.
+ // 3. Two tokens on the same line, and the destination is on the left.
+ // xxx xxx
+ // ^ /
+ // \____/
+ // In this situation, we draw arrow below curving downwards.
+ const onDifferentLines = startRect.top <= endRect.top - 5 ||
+ startRect.top >= endRect.top + 5;
+ const leftToRight = startRect.left < endRect.left;
+
+ // NOTE: various magic constants are chosen empirically for
+ // better positioning and look
+ if (onDifferentLines) {
+ // Case #1
+ const topToBottom = startRect.top < endRect.top;
+ posStart.x = startRect.left - 1;
+ // We don't want to start it at the top left corner of the token,
+ // it doesn't feel like this is where the arrow comes from.
+ // For this reason, we start it in the middle of the left side
+ // of the token.
+ posStart.y = startRect.top + startRect.height / 2;
+
+ // End node has arrow head and we give it a bit more space.
+ posEnd.x = endRect.left - 4;
+ posEnd.y = endRect.top;
+
+ // Utility object with x and y offsets for handles.
+ var curvature = {
+ // We want bottom-to-top arrow to curve a bit more, so it doesn't
+ // overlap much with top-to-bottom curves (much more frequent).
+ x: topToBottom ? 15 : 25,
+ y: Math.min((posEnd.y - posStart.y) / 3, 10)
+ }
+
+ // When destination is on the different line, we can make a
+ // curvier arrow because we have space for it.
+ // So, instead of using
+ //
+ // startHandle.x = posStart.x - curvature.x
+ // endHandle.x = posEnd.x - curvature.x
+ //
+ // We use the leftmost of these two values for both handles.
+ startHandle.x = Math.min(posStart.x, posEnd.x) - curvature.x;
+ endHandle.x = startHandle.x;
+
+ // Curving downwards from the start node...
+ startHandle.y = posStart.y + curvature.y;
+ // ... and upwards from the end node.
+ endHandle.y = posEnd.y - curvature.y;
+
+ } else if (leftToRight) {
+ // Case #2
+ // Starting from the top right corner...
+ posStart.x = startRect.right - 1;
+ posStart.y = startRect.top;
+
+ // ...and ending at the top left corner of the end token.
+ posEnd.x = endRect.left + 1;
+ posEnd.y = endRect.top - 1;
+
+ // Utility object with x and y offsets for handles.
+ var curvature = {
+ x: Math.min((posEnd.x - posStart.x) / 3, 15),
+ y: 5
+ }
+
+ // Curving to the right...
+ startHandle.x = posStart.x + curvature.x;
+ // ... and upwards from the start node.
+ startHandle.y = posStart.y - curvature.y;
+
+ // And to the left...
+ endHandle.x = posEnd.x - curvature.x;
+ // ... and upwards from the end node.
+ endHandle.y = posEnd.y - curvature.y;
+
+ } else {
+ // Case #3
+ // Starting from the bottom right corner...
+ posStart.x = startRect.right;
+ posStart.y = startRect.bottom;
+
+ // ...and ending also at the bottom right corner, but of the end token.
+ posEnd.x = endRect.right - 1;
+ posEnd.y = endRect.bottom + 1;
+
+ // Utility object with x and y offsets for handles.
+ var curvature = {
+ x: Math.min((posStart.x - posEnd.x) / 3, 15),
+ y: 5
+ }
+
+ // Curving to the left...
+ startHandle.x = posStart.x - curvature.x;
+ // ... and downwards from the start node.
+ startHandle.y = posStart.y + curvature.y;
+
+ // And to the right...
+ endHandle.x = posEnd.x + curvature.x;
+ // ... and downwards from the end node.
+ endHandle.y = posEnd.y + curvature.y;
+ }
+
+ // Put it all together into a path.
+ // More information on the format:
+ // https://developer.mozilla.org/en-US/docs/Web/SVG/Tutorial/Paths
+ var pathStr = "M" + posStart.x + "," + posStart.y + " " +
+ "C" + startHandle.x + "," + startHandle.y + " " +
+ endHandle.x + "," + endHandle.y + " " +
+ posEnd.x + "," + posEnd.y;
+
+ arrow.setAttribute("d", pathStr);
+};
+
+var drawArrows = function() {
+ const numOfArrows = document.querySelectorAll("path[id^=arrow]").length;
+ for (var i = 0; i < numOfArrows; ++i) {
+ drawArrow(i);
+ }
+}
+
+var toggleArrows = function(event) {
+ const arrows = document.querySelector("#arrows");
+ if (event.target.checked) {
+ arrows.setAttribute("visibility", "visible");
+ } else {
+ arrows.setAttribute("visibility", "hidden");
+ }
+}
+
+window.addEventListener("resize", drawArrows);
+document.addEventListener("DOMContentLoaded", function() {
+ // Whenever we show invocation, locations change, i.e. we
+ // need to redraw arrows.
+ document
+ .querySelector('input[id="showinvocation"]')
+ .addEventListener("click", drawArrows);
+ // Hiding irrelevant lines also should cause arrow rerender.
+ document
+ .querySelector('input[name="showCounterexample"]')
+ .addEventListener("change", drawArrows);
+ document
+ .querySelector('input[name="showArrows"]')
+ .addEventListener("change", toggleArrows);
+ drawArrows();
+ // Default highlighting for the last event.
+ highlightArrowsForSelectedEvent();
+});
+</script>
+
+<script type='text/javascript'>
+var digitMatcher = new RegExp("[0-9]+");
+
+var querySelectorAllArray = function(selector) {
+ return Array.prototype.slice.call(
+ document.querySelectorAll(selector));
+}
+
+document.addEventListener("DOMContentLoaded", function() {
+ querySelectorAllArray(".PathNav > a").forEach(
+ function(currentValue, currentIndex) {
+ var hrefValue = currentValue.getAttribute("href");
+ currentValue.onclick = function() {
+ scrollTo(document.querySelector(hrefValue));
+ return false;
+ };
+ });
+});
+
+var findNum = function() {
+ var s = document.querySelector(".msg.selected");
+ if (!s || s.id == "EndPath") {
+ return 0;
+ }
+ var out = parseInt(digitMatcher.exec(s.id)[0]);
+ return out;
+};
+
+var classListAdd = function(el, theClass) {
+ if(!el.className.baseVal)
+ el.className += " " + theClass;
+ else
+ el.className.baseVal += " " + theClass;
+};
+
+var classListRemove = function(el, theClass) {
+ var className = (!el.className.baseVal) ?
+ el.className : el.className.baseVal;
+ className = className.replace(" " + theClass, "");
+ if(!el.className.baseVal)
+ el.className = className;
+ else
+ el.className.baseVal = className;
+};
+
+var scrollTo = function(el) {
+ querySelectorAllArray(".selected").forEach(function(s) {
+ classListRemove(s, "selected");
+ });
+ classListAdd(el, "selected");
+ window.scrollBy(0, el.getBoundingClientRect().top -
+ (window.innerHeight / 2));
+ highlightArrowsForSelectedEvent();
+};
+
+var move = function(num, up, numItems) {
+ if (num == 1 && up || num == numItems - 1 && !up) {
+ return 0;
+ } else if (num == 0 && up) {
+ return numItems - 1;
+ } else if (num == 0 && !up) {
+ return 1 % numItems;
+ }
+ return up ? num - 1 : num + 1;
+}
+
+var numToId = function(num) {
+ if (num == 0) {
+ return document.getElementById("EndPath")
+ }
+ return document.getElementById("Path" + num);
+};
+
+var navigateTo = function(up) {
+ var numItems = document.querySelectorAll(
+ ".line > .msgEvent, .line > .msgControl").length;
+ var currentSelected = findNum();
+ var newSelected = move(currentSelected, up, numItems);
+ var newEl = numToId(newSelected, numItems);
+
+ // Scroll element into center.
+ scrollTo(newEl);
+};
+
+window.addEventListener("keydown", function (event) {
+ if (event.defaultPrevented) {
+ return;
+ }
+ // key 'j'
+ if (event.keyCode == 74) {
+ navigateTo(/*up=*/false);
+ // key 'k'
+ } else if (event.keyCode == 75) {
+ navigateTo(/*up=*/true);
+ } else {
+ return;
+ }
+ event.preventDefault();
+}, true);
+</script>
+
+<script type='text/javascript'>
+
+var toggleHelp = function() {
+ var hint = document.querySelector("#tooltiphint");
+ var attributeName = "hidden";
+ if (hint.hasAttribute(attributeName)) {
+ hint.removeAttribute(attributeName);
+ } else {
+ hint.setAttribute("hidden", "true");
+ }
+};
+window.addEventListener("keydown", function (event) {
+ if (event.defaultPrevented) {
+ return;
+ }
+ if (event.key == "?") {
+ toggleHelp();
+ } else {
+ return;
+ }
+ event.preventDefault();
+});
+</script>
+
+<style type="text/css">
+ svg {
+ position:absolute;
+ top:0;
+ left:0;
+ height:100%;
+ width:100%;
+ pointer-events: none;
+ overflow: visible
+ }
+ .arrow {
+ stroke-opacity: 0.2;
+ stroke-width: 1;
+ marker-end: url(#arrowhead);
+ }
+
+ .arrow.selected {
+ stroke-opacity: 0.6;
+ stroke-width: 2;
+ marker-end: url(#arrowheadSelected);
+ }
+
+ .arrowhead {
+ orient: auto;
+ stroke: none;
+ opacity: 0.6;
+ fill: blue;
+ }
+</style>
+<svg xmlns="http://www.w3.org/2000/svg">
+ <defs>
+ <marker id="arrowheadSelected" class="arrowhead" opacity="0.6"
+ viewBox="0 0 10 10" refX="3" refY="5"
+ markerWidth="4" markerHeight="4">
+ <path d="M 0 0 L 10 5 L 0 10 z" />
+ </marker>
+ <marker id="arrowhead" class="arrowhead" opacity="0.2"
+ viewBox="0 0 10 10" refX="3" refY="5"
+ markerWidth="4" markerHeight="4">
+ <path d="M 0 0 L 10 5 L 0 10 z" />
+ </marker>
+ </defs>
+ <g id="arrows" fill="none" stroke="blue" visibility="hidden">
+
+ </g>
+</svg>
+<script type='text/javascript'>
+const arrowIndices = [ 0,0 ]
+</script>
+<table class="code" data-fileid="1">
+<tr class="codeline" data-linenumber="1"><td class="num" id="LN1">1</td><td class="line"><span class='comment'>/*</span></td></tr>
+<tr class="codeline" data-linenumber="2"><td class="num" id="LN2">2</td><td class="line"> <span class='comment'>* pluma-file-browser-view.c - Pluma plugin providing easy file access</span></td></tr>
+<tr class="codeline" data-linenumber="3"><td class="num" id="LN3">3</td><td class="line"> <span class='comment'>* from the sidepanel</span></td></tr>
+<tr class="codeline" data-linenumber="4"><td class="num" id="LN4">4</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="5"><td class="num" id="LN5">5</td><td class="line"> <span class='comment'>* Copyright (C) 2006 - Jesse van den Kieboom &lt;[email protected]&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="6"><td class="num" id="LN6">6</td><td class="line"> <span class='comment'>* Copyright (C) 2012-2021 MATE Developers</span></td></tr>
+<tr class="codeline" data-linenumber="7"><td class="num" id="LN7">7</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="8"><td class="num" id="LN8">8</td><td class="line"> <span class='comment'>* This program is free software; you can redistribute it and/or modify</span></td></tr>
+<tr class="codeline" data-linenumber="9"><td class="num" id="LN9">9</td><td class="line"> <span class='comment'>* it under the terms of the GNU General Public License as published by</span></td></tr>
+<tr class="codeline" data-linenumber="10"><td class="num" id="LN10">10</td><td class="line"> <span class='comment'>* the Free Software Foundation; either version 2, or (at your option)</span></td></tr>
+<tr class="codeline" data-linenumber="11"><td class="num" id="LN11">11</td><td class="line"> <span class='comment'>* any later version.</span></td></tr>
+<tr class="codeline" data-linenumber="12"><td class="num" id="LN12">12</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="13"><td class="num" id="LN13">13</td><td class="line"> <span class='comment'>* This program is distributed in the hope that it will be useful,</span></td></tr>
+<tr class="codeline" data-linenumber="14"><td class="num" id="LN14">14</td><td class="line"> <span class='comment'>* but WITHOUT ANY WARRANTY; without even the implied warranty of</span></td></tr>
+<tr class="codeline" data-linenumber="15"><td class="num" id="LN15">15</td><td class="line"> <span class='comment'>* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></td></tr>
+<tr class="codeline" data-linenumber="16"><td class="num" id="LN16">16</td><td class="line"> <span class='comment'>* GNU General Public License for more details.</span></td></tr>
+<tr class="codeline" data-linenumber="17"><td class="num" id="LN17">17</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="18"><td class="num" id="LN18">18</td><td class="line"> <span class='comment'>* You should have received a copy of the GNU General Public License</span></td></tr>
+<tr class="codeline" data-linenumber="19"><td class="num" id="LN19">19</td><td class="line"> <span class='comment'>* along with this program; if not, write to the Free Software</span></td></tr>
+<tr class="codeline" data-linenumber="20"><td class="num" id="LN20">20</td><td class="line"> <span class='comment'>* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.</span></td></tr>
+<tr class="codeline" data-linenumber="21"><td class="num" id="LN21">21</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="22"><td class="num" id="LN22">22</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="23"><td class="num" id="LN23">23</td><td class="line"><span class='directive'>#include &lt;string.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="24"><td class="num" id="LN24">24</td><td class="line"><span class='directive'>#include &lt;gio/gio.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="25"><td class="num" id="LN25">25</td><td class="line"><span class='directive'>#include &lt;gtk/gtk.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="26"><td class="num" id="LN26">26</td><td class="line"><span class='directive'>#include &lt;gdk/gdkkeysyms.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="27"><td class="num" id="LN27">27</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="28"><td class="num" id="LN28">28</td><td class="line"><span class='directive'>#include "pluma-file-browser-store.h"</span></td></tr>
+<tr class="codeline" data-linenumber="29"><td class="num" id="LN29">29</td><td class="line"><span class='directive'>#include "pluma-file-bookmarks-store.h"</span></td></tr>
+<tr class="codeline" data-linenumber="30"><td class="num" id="LN30">30</td><td class="line"><span class='directive'>#include "pluma-file-browser-view.h"</span></td></tr>
+<tr class="codeline" data-linenumber="31"><td class="num" id="LN31">31</td><td class="line"><span class='directive'>#include "pluma-file-browser-enum-types.h"</span></td></tr>
+<tr class="codeline" data-linenumber="32"><td class="num" id="LN32">32</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="33"><td class="num" id="LN33">33</td><td class="line"><span class='keyword'>struct</span> _PlumaFileBrowserViewPrivate</td></tr>
+<tr class="codeline" data-linenumber="34"><td class="num" id="LN34">34</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="35"><td class="num" id="LN35">35</td><td class="line"> GtkTreeViewColumn *column;</td></tr>
+<tr class="codeline" data-linenumber="36"><td class="num" id="LN36">36</td><td class="line"> GtkCellRenderer *pixbuf_renderer;</td></tr>
+<tr class="codeline" data-linenumber="37"><td class="num" id="LN37">37</td><td class="line"> GtkCellRenderer *text_renderer;</td></tr>
+<tr class="codeline" data-linenumber="38"><td class="num" id="LN38">38</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="39"><td class="num" id="LN39">39</td><td class="line"> GtkTreeModel *model;</td></tr>
+<tr class="codeline" data-linenumber="40"><td class="num" id="LN40">40</td><td class="line"> GtkTreeRowReference *editable;</td></tr>
+<tr class="codeline" data-linenumber="41"><td class="num" id="LN41">41</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="42"><td class="num" id="LN42">42</td><td class="line"> GdkCursor *busy_cursor;</td></tr>
+<tr class="codeline" data-linenumber="43"><td class="num" id="LN43">43</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="44"><td class="num" id="LN44">44</td><td class="line"> <span class='comment'>/* CLick policy */</span></td></tr>
+<tr class="codeline" data-linenumber="45"><td class="num" id="LN45">45</td><td class="line"> PlumaFileBrowserViewClickPolicy click_policy;</td></tr>
+<tr class="codeline" data-linenumber="46"><td class="num" id="LN46">46</td><td class="line"> GtkTreePath *double_click_path[2]; <span class='comment'>/* Both clicks in a double click need to be on the same row */</span></td></tr>
+<tr class="codeline" data-linenumber="47"><td class="num" id="LN47">47</td><td class="line"> GtkTreePath *hover_path;</td></tr>
+<tr class="codeline" data-linenumber="48"><td class="num" id="LN48">48</td><td class="line"> GdkCursor *hand_cursor;</td></tr>
+<tr class="codeline" data-linenumber="49"><td class="num" id="LN49">49</td><td class="line"> gboolean ignore_release;</td></tr>
+<tr class="codeline" data-linenumber="50"><td class="num" id="LN50">50</td><td class="line"> gboolean selected_on_button_down;</td></tr>
+<tr class="codeline" data-linenumber="51"><td class="num" id="LN51">51</td><td class="line"> gint drag_button;</td></tr>
+<tr class="codeline" data-linenumber="52"><td class="num" id="LN52">52</td><td class="line"> gboolean drag_started;</td></tr>
+<tr class="codeline" data-linenumber="53"><td class="num" id="LN53">53</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="54"><td class="num" id="LN54">54</td><td class="line"> gboolean restore_expand_state;</td></tr>
+<tr class="codeline" data-linenumber="55"><td class="num" id="LN55">55</td><td class="line"> gboolean is_refresh;</td></tr>
+<tr class="codeline" data-linenumber="56"><td class="num" id="LN56">56</td><td class="line"> GHashTable * expand_state;</td></tr>
+<tr class="codeline" data-linenumber="57"><td class="num" id="LN57">57</td><td class="line">};</td></tr>
+<tr class="codeline" data-linenumber="58"><td class="num" id="LN58">58</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="59"><td class="num" id="LN59">59</td><td class="line"><span class='comment'>/* Properties */</span></td></tr>
+<tr class="codeline" data-linenumber="60"><td class="num" id="LN60">60</td><td class="line"><span class='keyword'>enum</span></td></tr>
+<tr class="codeline" data-linenumber="61"><td class="num" id="LN61">61</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="62"><td class="num" id="LN62">62</td><td class="line"> PROP_0,</td></tr>
+<tr class="codeline" data-linenumber="63"><td class="num" id="LN63">63</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="64"><td class="num" id="LN64">64</td><td class="line"> PROP_CLICK_POLICY,</td></tr>
+<tr class="codeline" data-linenumber="65"><td class="num" id="LN65">65</td><td class="line"> PROP_RESTORE_EXPAND_STATE</td></tr>
+<tr class="codeline" data-linenumber="66"><td class="num" id="LN66">66</td><td class="line">};</td></tr>
+<tr class="codeline" data-linenumber="67"><td class="num" id="LN67">67</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="68"><td class="num" id="LN68">68</td><td class="line"><span class='comment'>/* Signals */</span></td></tr>
+<tr class="codeline" data-linenumber="69"><td class="num" id="LN69">69</td><td class="line"><span class='keyword'>enum</span></td></tr>
+<tr class="codeline" data-linenumber="70"><td class="num" id="LN70">70</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="71"><td class="num" id="LN71">71</td><td class="line"> ERROR,</td></tr>
+<tr class="codeline" data-linenumber="72"><td class="num" id="LN72">72</td><td class="line"> FILE_ACTIVATED,</td></tr>
+<tr class="codeline" data-linenumber="73"><td class="num" id="LN73">73</td><td class="line"> DIRECTORY_ACTIVATED,</td></tr>
+<tr class="codeline" data-linenumber="74"><td class="num" id="LN74">74</td><td class="line"> BOOKMARK_ACTIVATED,</td></tr>
+<tr class="codeline" data-linenumber="75"><td class="num" id="LN75">75</td><td class="line"> NUM_SIGNALS</td></tr>
+<tr class="codeline" data-linenumber="76"><td class="num" id="LN76">76</td><td class="line">};</td></tr>
+<tr class="codeline" data-linenumber="77"><td class="num" id="LN77">77</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="78"><td class="num" id="LN78">78</td><td class="line"><span class='keyword'>static</span> guint signals[NUM_SIGNALS] = { 0 };</td></tr>
+<tr class="codeline" data-linenumber="79"><td class="num" id="LN79">79</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="80"><td class="num" id="LN80">80</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>const</span> GtkTargetEntry drag_source_targets[] = {</td></tr>
+<tr class="codeline" data-linenumber="81"><td class="num" id="LN81">81</td><td class="line"> { <span class='string_literal'>"text/uri-list"</span>, 0, 0 }</td></tr>
+<tr class="codeline" data-linenumber="82"><td class="num" id="LN82">82</td><td class="line">};</td></tr>
+<tr class="codeline" data-linenumber="83"><td class="num" id="LN83">83</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="84"><td class="num" id="LN84">84</td><td class="line"><span class='macro'>G_DEFINE_DYNAMIC_TYPE_EXTENDED (PlumaFileBrowserView,<span class='macro_popup'>static void pluma_file_browser_view_init (PlumaFileBrowserView<br> *self); static void pluma_file_browser_view_class_init (PlumaFileBrowserViewClass<br> *klass); static void pluma_file_browser_view_class_finalize (<br>PlumaFileBrowserViewClass *klass); static gpointer pluma_file_browser_view_parent_class<br> = ((void*)0); static GType pluma_file_browser_view_type_id =<br> 0; static gint PlumaFileBrowserView_private_offset; static void<br> pluma_file_browser_view_class_intern_init (gpointer klass) {<br> pluma_file_browser_view_parent_class = g_type_class_peek_parent<br> (klass); if (PlumaFileBrowserView_private_offset != 0) g_type_class_adjust_private_offset<br> (klass, &amp;PlumaFileBrowserView_private_offset); pluma_file_browser_view_class_init<br> ((PlumaFileBrowserViewClass*) klass); } __attribute__ ((__unused__<br>)) static inline gpointer pluma_file_browser_view_get_instance_private<br> (PlumaFileBrowserView *self) { return (((gpointer) ((guint8*<br>) (self) + (glong) (PlumaFileBrowserView_private_offset)))); }<br> GType pluma_file_browser_view_get_type (void) { return pluma_file_browser_view_type_id<br>; } static void pluma_file_browser_view_register_type (GTypeModule<br> *type_module) { GType g_define_type_id __attribute__ ((__unused__<br>)); const GTypeInfo g_define_type_info = { sizeof (PlumaFileBrowserViewClass<br>), (GBaseInitFunc) ((void*)0), (GBaseFinalizeFunc) ((void*)0)<br>, (GClassInitFunc)(void (*)(void)) pluma_file_browser_view_class_intern_init<br>, (GClassFinalizeFunc)(void (*)(void)) pluma_file_browser_view_class_finalize<br>, ((void*)0), sizeof (PlumaFileBrowserView), 0, (GInstanceInitFunc<br>)(void (*)(void)) pluma_file_browser_view_init, ((void*)0) };<br> pluma_file_browser_view_type_id = g_type_module_register_type<br> (type_module, (gtk_tree_view_get_type ()), "PlumaFileBrowserView"<br>, &amp;g_define_type_info, (GTypeFlags) 0); g_define_type_id =<br> pluma_file_browser_view_type_id; { { PlumaFileBrowserView_private_offset<br> = sizeof (PlumaFileBrowserViewPrivate); } ; } }</span></span></td></tr>
+<tr class="codeline" data-linenumber="85"><td class="num" id="LN85">85</td><td class="line"> <span class='macro'>pluma_file_browser_view,<span class='macro_popup'>static void pluma_file_browser_view_init (PlumaFileBrowserView<br> *self); static void pluma_file_browser_view_class_init (PlumaFileBrowserViewClass<br> *klass); static void pluma_file_browser_view_class_finalize (<br>PlumaFileBrowserViewClass *klass); static gpointer pluma_file_browser_view_parent_class<br> = ((void*)0); static GType pluma_file_browser_view_type_id =<br> 0; static gint PlumaFileBrowserView_private_offset; static void<br> pluma_file_browser_view_class_intern_init (gpointer klass) {<br> pluma_file_browser_view_parent_class = g_type_class_peek_parent<br> (klass); if (PlumaFileBrowserView_private_offset != 0) g_type_class_adjust_private_offset<br> (klass, &amp;PlumaFileBrowserView_private_offset); pluma_file_browser_view_class_init<br> ((PlumaFileBrowserViewClass*) klass); } __attribute__ ((__unused__<br>)) static inline gpointer pluma_file_browser_view_get_instance_private<br> (PlumaFileBrowserView *self) { return (((gpointer) ((guint8*<br>) (self) + (glong) (PlumaFileBrowserView_private_offset)))); }<br> GType pluma_file_browser_view_get_type (void) { return pluma_file_browser_view_type_id<br>; } static void pluma_file_browser_view_register_type (GTypeModule<br> *type_module) { GType g_define_type_id __attribute__ ((__unused__<br>)); const GTypeInfo g_define_type_info = { sizeof (PlumaFileBrowserViewClass<br>), (GBaseInitFunc) ((void*)0), (GBaseFinalizeFunc) ((void*)0)<br>, (GClassInitFunc)(void (*)(void)) pluma_file_browser_view_class_intern_init<br>, (GClassFinalizeFunc)(void (*)(void)) pluma_file_browser_view_class_finalize<br>, ((void*)0), sizeof (PlumaFileBrowserView), 0, (GInstanceInitFunc<br>)(void (*)(void)) pluma_file_browser_view_init, ((void*)0) };<br> pluma_file_browser_view_type_id = g_type_module_register_type<br> (type_module, (gtk_tree_view_get_type ()), "PlumaFileBrowserView"<br>, &amp;g_define_type_info, (GTypeFlags) 0); g_define_type_id =<br> pluma_file_browser_view_type_id; { { PlumaFileBrowserView_private_offset<br> = sizeof (PlumaFileBrowserViewPrivate); } ; } }</span></span></td></tr>
+<tr class="codeline" data-linenumber="86"><td class="num" id="LN86">86</td><td class="line"> <span class='macro'>GTK_TYPE_TREE_VIEW,<span class='macro_popup'>static void pluma_file_browser_view_init (PlumaFileBrowserView<br> *self); static void pluma_file_browser_view_class_init (PlumaFileBrowserViewClass<br> *klass); static void pluma_file_browser_view_class_finalize (<br>PlumaFileBrowserViewClass *klass); static gpointer pluma_file_browser_view_parent_class<br> = ((void*)0); static GType pluma_file_browser_view_type_id =<br> 0; static gint PlumaFileBrowserView_private_offset; static void<br> pluma_file_browser_view_class_intern_init (gpointer klass) {<br> pluma_file_browser_view_parent_class = g_type_class_peek_parent<br> (klass); if (PlumaFileBrowserView_private_offset != 0) g_type_class_adjust_private_offset<br> (klass, &amp;PlumaFileBrowserView_private_offset); pluma_file_browser_view_class_init<br> ((PlumaFileBrowserViewClass*) klass); } __attribute__ ((__unused__<br>)) static inline gpointer pluma_file_browser_view_get_instance_private<br> (PlumaFileBrowserView *self) { return (((gpointer) ((guint8*<br>) (self) + (glong) (PlumaFileBrowserView_private_offset)))); }<br> GType pluma_file_browser_view_get_type (void) { return pluma_file_browser_view_type_id<br>; } static void pluma_file_browser_view_register_type (GTypeModule<br> *type_module) { GType g_define_type_id __attribute__ ((__unused__<br>)); const GTypeInfo g_define_type_info = { sizeof (PlumaFileBrowserViewClass<br>), (GBaseInitFunc) ((void*)0), (GBaseFinalizeFunc) ((void*)0)<br>, (GClassInitFunc)(void (*)(void)) pluma_file_browser_view_class_intern_init<br>, (GClassFinalizeFunc)(void (*)(void)) pluma_file_browser_view_class_finalize<br>, ((void*)0), sizeof (PlumaFileBrowserView), 0, (GInstanceInitFunc<br>)(void (*)(void)) pluma_file_browser_view_init, ((void*)0) };<br> pluma_file_browser_view_type_id = g_type_module_register_type<br> (type_module, (gtk_tree_view_get_type ()), "PlumaFileBrowserView"<br>, &amp;g_define_type_info, (GTypeFlags) 0); g_define_type_id =<br> pluma_file_browser_view_type_id; { { PlumaFileBrowserView_private_offset<br> = sizeof (PlumaFileBrowserViewPrivate); } ; } }</span></span></td></tr>
+<tr class="codeline" data-linenumber="87"><td class="num" id="LN87">87</td><td class="line"> <span class='macro'>0,<span class='macro_popup'>static void pluma_file_browser_view_init (PlumaFileBrowserView<br> *self); static void pluma_file_browser_view_class_init (PlumaFileBrowserViewClass<br> *klass); static void pluma_file_browser_view_class_finalize (<br>PlumaFileBrowserViewClass *klass); static gpointer pluma_file_browser_view_parent_class<br> = ((void*)0); static GType pluma_file_browser_view_type_id =<br> 0; static gint PlumaFileBrowserView_private_offset; static void<br> pluma_file_browser_view_class_intern_init (gpointer klass) {<br> pluma_file_browser_view_parent_class = g_type_class_peek_parent<br> (klass); if (PlumaFileBrowserView_private_offset != 0) g_type_class_adjust_private_offset<br> (klass, &amp;PlumaFileBrowserView_private_offset); pluma_file_browser_view_class_init<br> ((PlumaFileBrowserViewClass*) klass); } __attribute__ ((__unused__<br>)) static inline gpointer pluma_file_browser_view_get_instance_private<br> (PlumaFileBrowserView *self) { return (((gpointer) ((guint8*<br>) (self) + (glong) (PlumaFileBrowserView_private_offset)))); }<br> GType pluma_file_browser_view_get_type (void) { return pluma_file_browser_view_type_id<br>; } static void pluma_file_browser_view_register_type (GTypeModule<br> *type_module) { GType g_define_type_id __attribute__ ((__unused__<br>)); const GTypeInfo g_define_type_info = { sizeof (PlumaFileBrowserViewClass<br>), (GBaseInitFunc) ((void*)0), (GBaseFinalizeFunc) ((void*)0)<br>, (GClassInitFunc)(void (*)(void)) pluma_file_browser_view_class_intern_init<br>, (GClassFinalizeFunc)(void (*)(void)) pluma_file_browser_view_class_finalize<br>, ((void*)0), sizeof (PlumaFileBrowserView), 0, (GInstanceInitFunc<br>)(void (*)(void)) pluma_file_browser_view_init, ((void*)0) };<br> pluma_file_browser_view_type_id = g_type_module_register_type<br> (type_module, (gtk_tree_view_get_type ()), "PlumaFileBrowserView"<br>, &amp;g_define_type_info, (GTypeFlags) 0); g_define_type_id =<br> pluma_file_browser_view_type_id; { { PlumaFileBrowserView_private_offset<br> = sizeof (PlumaFileBrowserViewPrivate); } ; } }</span></span></td></tr>
+<tr class="codeline" data-linenumber="88"><td class="num" id="LN88">88</td><td class="line"> <span class='macro'>G_ADD_PRIVATE_DYNAMIC (PlumaFileBrowserView))<span class='macro_popup'>static void pluma_file_browser_view_init (PlumaFileBrowserView<br> *self); static void pluma_file_browser_view_class_init (PlumaFileBrowserViewClass<br> *klass); static void pluma_file_browser_view_class_finalize (<br>PlumaFileBrowserViewClass *klass); static gpointer pluma_file_browser_view_parent_class<br> = ((void*)0); static GType pluma_file_browser_view_type_id =<br> 0; static gint PlumaFileBrowserView_private_offset; static void<br> pluma_file_browser_view_class_intern_init (gpointer klass) {<br> pluma_file_browser_view_parent_class = g_type_class_peek_parent<br> (klass); if (PlumaFileBrowserView_private_offset != 0) g_type_class_adjust_private_offset<br> (klass, &amp;PlumaFileBrowserView_private_offset); pluma_file_browser_view_class_init<br> ((PlumaFileBrowserViewClass*) klass); } __attribute__ ((__unused__<br>)) static inline gpointer pluma_file_browser_view_get_instance_private<br> (PlumaFileBrowserView *self) { return (((gpointer) ((guint8*<br>) (self) + (glong) (PlumaFileBrowserView_private_offset)))); }<br> GType pluma_file_browser_view_get_type (void) { return pluma_file_browser_view_type_id<br>; } static void pluma_file_browser_view_register_type (GTypeModule<br> *type_module) { GType g_define_type_id __attribute__ ((__unused__<br>)); const GTypeInfo g_define_type_info = { sizeof (PlumaFileBrowserViewClass<br>), (GBaseInitFunc) ((void*)0), (GBaseFinalizeFunc) ((void*)0)<br>, (GClassInitFunc)(void (*)(void)) pluma_file_browser_view_class_intern_init<br>, (GClassFinalizeFunc)(void (*)(void)) pluma_file_browser_view_class_finalize<br>, ((void*)0), sizeof (PlumaFileBrowserView), 0, (GInstanceInitFunc<br>)(void (*)(void)) pluma_file_browser_view_init, ((void*)0) };<br> pluma_file_browser_view_type_id = g_type_module_register_type<br> (type_module, (gtk_tree_view_get_type ()), "PlumaFileBrowserView"<br>, &amp;g_define_type_info, (GTypeFlags) 0); g_define_type_id =<br> pluma_file_browser_view_type_id; { { PlumaFileBrowserView_private_offset<br> = sizeof (PlumaFileBrowserViewPrivate); } ; } }</span></span></td></tr>
+<tr class="codeline" data-linenumber="89"><td class="num" id="LN89">89</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="90"><td class="num" id="LN90">90</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span> on_cell_edited (GtkCellRendererText * cell,</td></tr>
+<tr class="codeline" data-linenumber="91"><td class="num" id="LN91">91</td><td class="line"> gchar * path,</td></tr>
+<tr class="codeline" data-linenumber="92"><td class="num" id="LN92">92</td><td class="line"> gchar * new_text,</td></tr>
+<tr class="codeline" data-linenumber="93"><td class="num" id="LN93">93</td><td class="line"> PlumaFileBrowserView * tree_view);</td></tr>
+<tr class="codeline" data-linenumber="94"><td class="num" id="LN94">94</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="95"><td class="num" id="LN95">95</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span> on_begin_refresh (PlumaFileBrowserStore * model,</td></tr>
+<tr class="codeline" data-linenumber="96"><td class="num" id="LN96">96</td><td class="line"> PlumaFileBrowserView * view);</td></tr>
+<tr class="codeline" data-linenumber="97"><td class="num" id="LN97">97</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span> on_end_refresh (PlumaFileBrowserStore * model,</td></tr>
+<tr class="codeline" data-linenumber="98"><td class="num" id="LN98">98</td><td class="line"> PlumaFileBrowserView * view);</td></tr>
+<tr class="codeline" data-linenumber="99"><td class="num" id="LN99">99</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="100"><td class="num" id="LN100">100</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span> on_unload (PlumaFileBrowserStore * model,</td></tr>
+<tr class="codeline" data-linenumber="101"><td class="num" id="LN101">101</td><td class="line"> gchar <span class='keyword'>const</span> * uri,</td></tr>
+<tr class="codeline" data-linenumber="102"><td class="num" id="LN102">102</td><td class="line"> PlumaFileBrowserView * view);</td></tr>
+<tr class="codeline" data-linenumber="103"><td class="num" id="LN103">103</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="104"><td class="num" id="LN104">104</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span> on_row_inserted (PlumaFileBrowserStore * model,</td></tr>
+<tr class="codeline" data-linenumber="105"><td class="num" id="LN105">105</td><td class="line"> GtkTreePath * path,</td></tr>
+<tr class="codeline" data-linenumber="106"><td class="num" id="LN106">106</td><td class="line"> GtkTreeIter * iter,</td></tr>
+<tr class="codeline" data-linenumber="107"><td class="num" id="LN107">107</td><td class="line"> PlumaFileBrowserView * view);</td></tr>
+<tr class="codeline" data-linenumber="108"><td class="num" id="LN108">108</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="109"><td class="num" id="LN109">109</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="110"><td class="num" id="LN110">110</td><td class="line">pluma_file_browser_view_finalize (GObject * object)</td></tr>
+<tr class="codeline" data-linenumber="111"><td class="num" id="LN111">111</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="112"><td class="num" id="LN112">112</td><td class="line"> PlumaFileBrowserView *obj = <span class='macro'>PLUMA_FILE_BROWSER_VIEW(object)<span class='macro_popup'>((((PlumaFileBrowserView*) (void *) ((object)))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="113"><td class="num" id="LN113">113</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="114"><td class="num" id="LN114">114</td><td class="line"> <span class='keyword'>if</span> (obj-&gt;priv-&gt;hand_cursor)</td></tr>
+<tr class="codeline" data-linenumber="115"><td class="num" id="LN115">115</td><td class="line"> g_object_unref (obj-&gt;priv-&gt;hand_cursor);</td></tr>
+<tr class="codeline" data-linenumber="116"><td class="num" id="LN116">116</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="117"><td class="num" id="LN117">117</td><td class="line"> <span class='keyword'>if</span> (obj-&gt;priv-&gt;hover_path)</td></tr>
+<tr class="codeline" data-linenumber="118"><td class="num" id="LN118">118</td><td class="line"> gtk_tree_path_free (obj-&gt;priv-&gt;hover_path);</td></tr>
+<tr class="codeline" data-linenumber="119"><td class="num" id="LN119">119</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="120"><td class="num" id="LN120">120</td><td class="line"> <span class='keyword'>if</span> (obj-&gt;priv-&gt;expand_state)</td></tr>
+<tr class="codeline" data-linenumber="121"><td class="num" id="LN121">121</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="122"><td class="num" id="LN122">122</td><td class="line"> g_hash_table_destroy (obj-&gt;priv-&gt;expand_state);</td></tr>
+<tr class="codeline" data-linenumber="123"><td class="num" id="LN123">123</td><td class="line"> obj-&gt;priv-&gt;expand_state = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="124"><td class="num" id="LN124">124</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="125"><td class="num" id="LN125">125</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="126"><td class="num" id="LN126">126</td><td class="line"> g_object_unref (obj-&gt;priv-&gt;busy_cursor);</td></tr>
+<tr class="codeline" data-linenumber="127"><td class="num" id="LN127">127</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="128"><td class="num" id="LN128">128</td><td class="line"> <span class='macro'>G_OBJECT_CLASS (pluma_file_browser_view_parent_class)<span class='macro_popup'>((((GObjectClass*) (void *) ((pluma_file_browser_view_parent_class<br>)))))</span></span>-&gt;</td></tr>
+<tr class="codeline" data-linenumber="129"><td class="num" id="LN129">129</td><td class="line"> finalize (object);</td></tr>
+<tr class="codeline" data-linenumber="130"><td class="num" id="LN130">130</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="131"><td class="num" id="LN131">131</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="132"><td class="num" id="LN132">132</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="133"><td class="num" id="LN133">133</td><td class="line">add_expand_state (PlumaFileBrowserView * view,</td></tr>
+<tr class="codeline" data-linenumber="134"><td class="num" id="LN134">134</td><td class="line"> gchar <span class='keyword'>const</span> * uri)</td></tr>
+<tr class="codeline" data-linenumber="135"><td class="num" id="LN135">135</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="136"><td class="num" id="LN136">136</td><td class="line"> GFile * file;</td></tr>
+<tr class="codeline" data-linenumber="137"><td class="num" id="LN137">137</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="138"><td class="num" id="LN138">138</td><td class="line"> <span class='keyword'>if</span> (!uri)</td></tr>
+<tr class="codeline" data-linenumber="139"><td class="num" id="LN139">139</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="140"><td class="num" id="LN140">140</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="141"><td class="num" id="LN141">141</td><td class="line"> file = g_file_new_for_uri (uri);</td></tr>
+<tr class="codeline" data-linenumber="142"><td class="num" id="LN142">142</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="143"><td class="num" id="LN143">143</td><td class="line"> <span class='keyword'>if</span> (view-&gt;priv-&gt;expand_state)</td></tr>
+<tr class="codeline" data-linenumber="144"><td class="num" id="LN144">144</td><td class="line"> g_hash_table_insert (view-&gt;priv-&gt;expand_state, file, file);</td></tr>
+<tr class="codeline" data-linenumber="145"><td class="num" id="LN145">145</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="146"><td class="num" id="LN146">146</td><td class="line"> g_object_unref (file);</td></tr>
+<tr class="codeline" data-linenumber="147"><td class="num" id="LN147">147</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="148"><td class="num" id="LN148">148</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="149"><td class="num" id="LN149">149</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="150"><td class="num" id="LN150">150</td><td class="line">remove_expand_state (PlumaFileBrowserView * view,</td></tr>
+<tr class="codeline" data-linenumber="151"><td class="num" id="LN151">151</td><td class="line"> gchar <span class='keyword'>const</span> * uri)</td></tr>
+<tr class="codeline" data-linenumber="152"><td class="num" id="LN152">152</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="153"><td class="num" id="LN153">153</td><td class="line"> GFile * file;</td></tr>
+<tr class="codeline" data-linenumber="154"><td class="num" id="LN154">154</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="155"><td class="num" id="LN155">155</td><td class="line"> <span class='keyword'>if</span> (!uri)</td></tr>
+<tr class="codeline" data-linenumber="156"><td class="num" id="LN156">156</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="157"><td class="num" id="LN157">157</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="158"><td class="num" id="LN158">158</td><td class="line"> file = g_file_new_for_uri (uri);</td></tr>
+<tr class="codeline" data-linenumber="159"><td class="num" id="LN159">159</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="160"><td class="num" id="LN160">160</td><td class="line"> <span class='keyword'>if</span> (view-&gt;priv-&gt;expand_state)</td></tr>
+<tr class="codeline" data-linenumber="161"><td class="num" id="LN161">161</td><td class="line"> g_hash_table_remove (view-&gt;priv-&gt;expand_state, file);</td></tr>
+<tr class="codeline" data-linenumber="162"><td class="num" id="LN162">162</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="163"><td class="num" id="LN163">163</td><td class="line"> g_object_unref (file);</td></tr>
+<tr class="codeline" data-linenumber="164"><td class="num" id="LN164">164</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="165"><td class="num" id="LN165">165</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="166"><td class="num" id="LN166">166</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="167"><td class="num" id="LN167">167</td><td class="line">row_expanded (GtkTreeView * tree_view,</td></tr>
+<tr class="codeline" data-linenumber="168"><td class="num" id="LN168">168</td><td class="line"> GtkTreeIter * iter,</td></tr>
+<tr class="codeline" data-linenumber="169"><td class="num" id="LN169">169</td><td class="line"> GtkTreePath * path)</td></tr>
+<tr class="codeline" data-linenumber="170"><td class="num" id="LN170">170</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="171"><td class="num" id="LN171">171</td><td class="line"> PlumaFileBrowserView *view = <span class='macro'>PLUMA_FILE_BROWSER_VIEW (tree_view)<span class='macro_popup'>((((PlumaFileBrowserView*) (void *) ((tree_view)))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="172"><td class="num" id="LN172">172</td><td class="line"> gchar * uri;</td></tr>
+<tr class="codeline" data-linenumber="173"><td class="num" id="LN173">173</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="174"><td class="num" id="LN174">174</td><td class="line"> <span class='keyword'>if</span> (<span class='macro'>GTK_TREE_VIEW_CLASS (pluma_file_browser_view_parent_class)<span class='macro_popup'>((((GtkTreeViewClass*) (void *) ((pluma_file_browser_view_parent_class<br>)))))</span></span>-&gt;row_expanded)</td></tr>
+<tr class="codeline" data-linenumber="175"><td class="num" id="LN175">175</td><td class="line"> <span class='macro'>GTK_TREE_VIEW_CLASS (pluma_file_browser_view_parent_class)<span class='macro_popup'>((((GtkTreeViewClass*) (void *) ((pluma_file_browser_view_parent_class<br>)))))</span></span>-&gt;row_expanded (tree_view, iter, path);</td></tr>
+<tr class="codeline" data-linenumber="176"><td class="num" id="LN176">176</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="177"><td class="num" id="LN177">177</td><td class="line"> <span class='keyword'>if</span> (!<span class='macro'>PLUMA_IS_FILE_BROWSER_STORE (view-&gt;priv-&gt;model)<span class='macro_popup'>(((__extension__ ({ GTypeInstance *__inst = (GTypeInstance*) (<br>(view-&gt;priv-&gt;model)); GType __t = ((pluma_file_browser_store_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="178"><td class="num" id="LN178">178</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="179"><td class="num" id="LN179">179</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="180"><td class="num" id="LN180">180</td><td class="line"> <span class='keyword'>if</span> (view-&gt;priv-&gt;restore_expand_state)</td></tr>
+<tr class="codeline" data-linenumber="181"><td class="num" id="LN181">181</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="182"><td class="num" id="LN182">182</td><td class="line"> gtk_tree_model_get (view-&gt;priv-&gt;model,</td></tr>
+<tr class="codeline" data-linenumber="183"><td class="num" id="LN183">183</td><td class="line"> iter,</td></tr>
+<tr class="codeline" data-linenumber="184"><td class="num" id="LN184">184</td><td class="line"> PLUMA_FILE_BROWSER_STORE_COLUMN_URI,</td></tr>
+<tr class="codeline" data-linenumber="185"><td class="num" id="LN185">185</td><td class="line"> &amp;uri,</td></tr>
+<tr class="codeline" data-linenumber="186"><td class="num" id="LN186">186</td><td class="line"> -1);</td></tr>
+<tr class="codeline" data-linenumber="187"><td class="num" id="LN187">187</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="188"><td class="num" id="LN188">188</td><td class="line"> add_expand_state (view, uri);</td></tr>
+<tr class="codeline" data-linenumber="189"><td class="num" id="LN189">189</td><td class="line"> g_free (uri);</td></tr>
+<tr class="codeline" data-linenumber="190"><td class="num" id="LN190">190</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="191"><td class="num" id="LN191">191</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="192"><td class="num" id="LN192">192</td><td class="line"> _pluma_file_browser_store_iter_expanded (<span class='macro'>PLUMA_FILE_BROWSER_STORE (view-&gt;priv-&gt;model)<span class='macro_popup'>((((PlumaFileBrowserStore*) (void *) ((view-&gt;priv-&gt;model<br>)))))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="193"><td class="num" id="LN193">193</td><td class="line"> iter);</td></tr>
+<tr class="codeline" data-linenumber="194"><td class="num" id="LN194">194</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="195"><td class="num" id="LN195">195</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="196"><td class="num" id="LN196">196</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="197"><td class="num" id="LN197">197</td><td class="line">row_collapsed (GtkTreeView * tree_view,</td></tr>
+<tr class="codeline" data-linenumber="198"><td class="num" id="LN198">198</td><td class="line"> GtkTreeIter * iter,</td></tr>
+<tr class="codeline" data-linenumber="199"><td class="num" id="LN199">199</td><td class="line"> GtkTreePath * path)</td></tr>
+<tr class="codeline" data-linenumber="200"><td class="num" id="LN200">200</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="201"><td class="num" id="LN201">201</td><td class="line"> PlumaFileBrowserView *view = <span class='macro'>PLUMA_FILE_BROWSER_VIEW (tree_view)<span class='macro_popup'>((((PlumaFileBrowserView*) (void *) ((tree_view)))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="202"><td class="num" id="LN202">202</td><td class="line"> gchar * uri;</td></tr>
+<tr class="codeline" data-linenumber="203"><td class="num" id="LN203">203</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="204"><td class="num" id="LN204">204</td><td class="line"> <span class='keyword'>if</span> (<span class='macro'>GTK_TREE_VIEW_CLASS (pluma_file_browser_view_parent_class)<span class='macro_popup'>((((GtkTreeViewClass*) (void *) ((pluma_file_browser_view_parent_class<br>)))))</span></span>-&gt;row_collapsed)</td></tr>
+<tr class="codeline" data-linenumber="205"><td class="num" id="LN205">205</td><td class="line"> <span class='macro'>GTK_TREE_VIEW_CLASS (pluma_file_browser_view_parent_class)<span class='macro_popup'>((((GtkTreeViewClass*) (void *) ((pluma_file_browser_view_parent_class<br>)))))</span></span>-&gt;row_collapsed (tree_view, iter, path);</td></tr>
+<tr class="codeline" data-linenumber="206"><td class="num" id="LN206">206</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="207"><td class="num" id="LN207">207</td><td class="line"> <span class='keyword'>if</span> (!<span class='macro'>PLUMA_IS_FILE_BROWSER_STORE (view-&gt;priv-&gt;model)<span class='macro_popup'>(((__extension__ ({ GTypeInstance *__inst = (GTypeInstance*) (<br>(view-&gt;priv-&gt;model)); GType __t = ((pluma_file_browser_store_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="208"><td class="num" id="LN208">208</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="209"><td class="num" id="LN209">209</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="210"><td class="num" id="LN210">210</td><td class="line"> <span class='keyword'>if</span> (view-&gt;priv-&gt;restore_expand_state)</td></tr>
+<tr class="codeline" data-linenumber="211"><td class="num" id="LN211">211</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="212"><td class="num" id="LN212">212</td><td class="line"> gtk_tree_model_get (view-&gt;priv-&gt;model,</td></tr>
+<tr class="codeline" data-linenumber="213"><td class="num" id="LN213">213</td><td class="line"> iter,</td></tr>
+<tr class="codeline" data-linenumber="214"><td class="num" id="LN214">214</td><td class="line"> PLUMA_FILE_BROWSER_STORE_COLUMN_URI,</td></tr>
+<tr class="codeline" data-linenumber="215"><td class="num" id="LN215">215</td><td class="line"> &amp;uri,</td></tr>
+<tr class="codeline" data-linenumber="216"><td class="num" id="LN216">216</td><td class="line"> -1);</td></tr>
+<tr class="codeline" data-linenumber="217"><td class="num" id="LN217">217</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="218"><td class="num" id="LN218">218</td><td class="line"> remove_expand_state (view, uri);</td></tr>
+<tr class="codeline" data-linenumber="219"><td class="num" id="LN219">219</td><td class="line"> g_free (uri);</td></tr>
+<tr class="codeline" data-linenumber="220"><td class="num" id="LN220">220</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="221"><td class="num" id="LN221">221</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="222"><td class="num" id="LN222">222</td><td class="line"> _pluma_file_browser_store_iter_collapsed (<span class='macro'>PLUMA_FILE_BROWSER_STORE (view-&gt;priv-&gt;model)<span class='macro_popup'>((((PlumaFileBrowserStore*) (void *) ((view-&gt;priv-&gt;model<br>)))))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="223"><td class="num" id="LN223">223</td><td class="line"> iter);</td></tr>
+<tr class="codeline" data-linenumber="224"><td class="num" id="LN224">224</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="225"><td class="num" id="LN225">225</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="226"><td class="num" id="LN226">226</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="227"><td class="num" id="LN227">227</td><td class="line">leave_notify_event (GtkWidget *widget,</td></tr>
+<tr class="codeline" data-linenumber="228"><td class="num" id="LN228">228</td><td class="line"> GdkEventCrossing *event)</td></tr>
+<tr class="codeline" data-linenumber="229"><td class="num" id="LN229">229</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="230"><td class="num" id="LN230">230</td><td class="line"> PlumaFileBrowserView *view = <span class='macro'>PLUMA_FILE_BROWSER_VIEW (widget)<span class='macro_popup'>((((PlumaFileBrowserView*) (void *) ((widget)))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="231"><td class="num" id="LN231">231</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="232"><td class="num" id="LN232">232</td><td class="line"> <span class='keyword'>if</span> (view-&gt;priv-&gt;click_policy == PLUMA_FILE_BROWSER_VIEW_CLICK_POLICY_SINGLE &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="233"><td class="num" id="LN233">233</td><td class="line"> view-&gt;priv-&gt;hover_path != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="234"><td class="num" id="LN234">234</td><td class="line"> gtk_tree_path_free (view-&gt;priv-&gt;hover_path);</td></tr>
+<tr class="codeline" data-linenumber="235"><td class="num" id="LN235">235</td><td class="line"> view-&gt;priv-&gt;hover_path = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="236"><td class="num" id="LN236">236</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="237"><td class="num" id="LN237">237</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="238"><td class="num" id="LN238">238</td><td class="line"> <span class='comment'>// Chainup</span></td></tr>
+<tr class="codeline" data-linenumber="239"><td class="num" id="LN239">239</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>GTK_WIDGET_CLASS (pluma_file_browser_view_parent_class)<span class='macro_popup'>((((GtkWidgetClass*) (void *) ((pluma_file_browser_view_parent_class<br>)))))</span></span>-&gt;leave_notify_event (widget, event);</td></tr>
+<tr class="codeline" data-linenumber="240"><td class="num" id="LN240">240</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="241"><td class="num" id="LN241">241</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="242"><td class="num" id="LN242">242</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="243"><td class="num" id="LN243">243</td><td class="line">enter_notify_event (GtkWidget *widget,</td></tr>
+<tr class="codeline" data-linenumber="244"><td class="num" id="LN244">244</td><td class="line"> GdkEventCrossing *event)</td></tr>
+<tr class="codeline" data-linenumber="245"><td class="num" id="LN245">245</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="246"><td class="num" id="LN246">246</td><td class="line"> PlumaFileBrowserView *view = <span class='macro'>PLUMA_FILE_BROWSER_VIEW (widget)<span class='macro_popup'>((((PlumaFileBrowserView*) (void *) ((widget)))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="247"><td class="num" id="LN247">247</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="248"><td class="num" id="LN248">248</td><td class="line"> <span class='keyword'>if</span> (view-&gt;priv-&gt;click_policy == PLUMA_FILE_BROWSER_VIEW_CLICK_POLICY_SINGLE) {</td></tr>
+<tr class="codeline" data-linenumber="249"><td class="num" id="LN249">249</td><td class="line"> <span class='keyword'>if</span> (view-&gt;priv-&gt;hover_path != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="250"><td class="num" id="LN250">250</td><td class="line"> gtk_tree_path_free (view-&gt;priv-&gt;hover_path);</td></tr>
+<tr class="codeline" data-linenumber="251"><td class="num" id="LN251">251</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="252"><td class="num" id="LN252">252</td><td class="line"> gtk_tree_view_get_path_at_pos (<span class='macro'>GTK_TREE_VIEW (widget)<span class='macro_popup'>((((GtkTreeView*) (void *) ((widget)))))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="253"><td class="num" id="LN253">253</td><td class="line"> event-&gt;x, event-&gt;y,</td></tr>
+<tr class="codeline" data-linenumber="254"><td class="num" id="LN254">254</td><td class="line"> &amp;view-&gt;priv-&gt;hover_path,</td></tr>
+<tr class="codeline" data-linenumber="255"><td class="num" id="LN255">255</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="256"><td class="num" id="LN256">256</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="257"><td class="num" id="LN257">257</td><td class="line"> <span class='keyword'>if</span> (view-&gt;priv-&gt;hover_path != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="258"><td class="num" id="LN258">258</td><td class="line"> gdk_window_set_cursor (gtk_widget_get_window (widget),</td></tr>
+<tr class="codeline" data-linenumber="259"><td class="num" id="LN259">259</td><td class="line"> view-&gt;priv-&gt;hand_cursor);</td></tr>
+<tr class="codeline" data-linenumber="260"><td class="num" id="LN260">260</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="261"><td class="num" id="LN261">261</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="262"><td class="num" id="LN262">262</td><td class="line"> <span class='comment'>// Chainup</span></td></tr>
+<tr class="codeline" data-linenumber="263"><td class="num" id="LN263">263</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>GTK_WIDGET_CLASS (pluma_file_browser_view_parent_class)<span class='macro_popup'>((((GtkWidgetClass*) (void *) ((pluma_file_browser_view_parent_class<br>)))))</span></span>-&gt;enter_notify_event (widget, event);</td></tr>
+<tr class="codeline" data-linenumber="264"><td class="num" id="LN264">264</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="265"><td class="num" id="LN265">265</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="266"><td class="num" id="LN266">266</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="267"><td class="num" id="LN267">267</td><td class="line">motion_notify_event (GtkWidget * widget,</td></tr>
+<tr class="codeline" data-linenumber="268"><td class="num" id="LN268">268</td><td class="line"> GdkEventMotion * event)</td></tr>
+<tr class="codeline" data-linenumber="269"><td class="num" id="LN269">269</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="270"><td class="num" id="LN270">270</td><td class="line"> GtkTreePath *old_hover_path;</td></tr>
+<tr class="codeline" data-linenumber="271"><td class="num" id="LN271">271</td><td class="line"> PlumaFileBrowserView *view = <span class='macro'>PLUMA_FILE_BROWSER_VIEW (widget)<span class='macro_popup'>((((PlumaFileBrowserView*) (void *) ((widget)))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="272"><td class="num" id="LN272">272</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="273"><td class="num" id="LN273">273</td><td class="line"> <span class='keyword'>if</span> (view-&gt;priv-&gt;click_policy == PLUMA_FILE_BROWSER_VIEW_CLICK_POLICY_SINGLE) {</td></tr>
+<tr class="codeline" data-linenumber="274"><td class="num" id="LN274">274</td><td class="line"> old_hover_path = view-&gt;priv-&gt;hover_path;</td></tr>
+<tr class="codeline" data-linenumber="275"><td class="num" id="LN275">275</td><td class="line"> gtk_tree_view_get_path_at_pos (<span class='macro'>GTK_TREE_VIEW (widget)<span class='macro_popup'>((((GtkTreeView*) (void *) ((widget)))))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="276"><td class="num" id="LN276">276</td><td class="line"> event-&gt;x, event-&gt;y,</td></tr>
+<tr class="codeline" data-linenumber="277"><td class="num" id="LN277">277</td><td class="line"> &amp;view-&gt;priv-&gt;hover_path,</td></tr>
+<tr class="codeline" data-linenumber="278"><td class="num" id="LN278">278</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="279"><td class="num" id="LN279">279</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="280"><td class="num" id="LN280">280</td><td class="line"> <span class='keyword'>if</span> ((old_hover_path != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) != (view-&gt;priv-&gt;hover_path != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)) {</td></tr>
+<tr class="codeline" data-linenumber="281"><td class="num" id="LN281">281</td><td class="line"> <span class='keyword'>if</span> (view-&gt;priv-&gt;hover_path != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="282"><td class="num" id="LN282">282</td><td class="line"> gdk_window_set_cursor (gtk_widget_get_window (widget),</td></tr>
+<tr class="codeline" data-linenumber="283"><td class="num" id="LN283">283</td><td class="line"> view-&gt;priv-&gt;hand_cursor);</td></tr>
+<tr class="codeline" data-linenumber="284"><td class="num" id="LN284">284</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="285"><td class="num" id="LN285">285</td><td class="line"> gdk_window_set_cursor (gtk_widget_get_window (widget),</td></tr>
+<tr class="codeline" data-linenumber="286"><td class="num" id="LN286">286</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="287"><td class="num" id="LN287">287</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="288"><td class="num" id="LN288">288</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="289"><td class="num" id="LN289">289</td><td class="line"> <span class='keyword'>if</span> (old_hover_path != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="290"><td class="num" id="LN290">290</td><td class="line"> gtk_tree_path_free (old_hover_path);</td></tr>
+<tr class="codeline" data-linenumber="291"><td class="num" id="LN291">291</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="292"><td class="num" id="LN292">292</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="293"><td class="num" id="LN293">293</td><td class="line"> <span class='comment'>// Chainup</span></td></tr>
+<tr class="codeline" data-linenumber="294"><td class="num" id="LN294">294</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>GTK_WIDGET_CLASS (pluma_file_browser_view_parent_class)<span class='macro_popup'>((((GtkWidgetClass*) (void *) ((pluma_file_browser_view_parent_class<br>)))))</span></span>-&gt;motion_notify_event (widget, event);</td></tr>
+<tr class="codeline" data-linenumber="295"><td class="num" id="LN295">295</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="296"><td class="num" id="LN296">296</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="297"><td class="num" id="LN297">297</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="298"><td class="num" id="LN298">298</td><td class="line">set_click_policy_property (PlumaFileBrowserView *obj,</td></tr>
+<tr class="codeline" data-linenumber="299"><td class="num" id="LN299">299</td><td class="line"> PlumaFileBrowserViewClickPolicy click_policy)</td></tr>
+<tr class="codeline" data-linenumber="300"><td class="num" id="LN300">300</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="301"><td class="num" id="LN301">301</td><td class="line"> GtkTreeIter iter;</td></tr>
+<tr class="codeline" data-linenumber="302"><td class="num" id="LN302">302</td><td class="line"> GdkDisplay *display;</td></tr>
+<tr class="codeline" data-linenumber="303"><td class="num" id="LN303">303</td><td class="line"> GdkWindow *win;</td></tr>
+<tr class="codeline" data-linenumber="304"><td class="num" id="LN304">304</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="305"><td class="num" id="LN305">305</td><td class="line"> display = gtk_widget_get_display (<span class='macro'>GTK_WIDGET (obj)<span class='macro_popup'>((((GtkWidget*) (void *) ((obj)))))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="306"><td class="num" id="LN306">306</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="307"><td class="num" id="LN307">307</td><td class="line"> obj-&gt;priv-&gt;click_policy = click_policy;</td></tr>
+<tr class="codeline" data-linenumber="308"><td class="num" id="LN308">308</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="309"><td class="num" id="LN309">309</td><td class="line"> <span class='keyword'>if</span> (click_policy == PLUMA_FILE_BROWSER_VIEW_CLICK_POLICY_SINGLE) {</td></tr>
+<tr class="codeline" data-linenumber="310"><td class="num" id="LN310">310</td><td class="line"> <span class='keyword'>if</span> (obj-&gt;priv-&gt;hand_cursor == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="311"><td class="num" id="LN311">311</td><td class="line"> obj-&gt;priv-&gt;hand_cursor = gdk_cursor_new_for_display (display, GDK_HAND2);</td></tr>
+<tr class="codeline" data-linenumber="312"><td class="num" id="LN312">312</td><td class="line"> } <span class='keyword'>else</span> <span class='keyword'>if</span> (click_policy == PLUMA_FILE_BROWSER_VIEW_CLICK_POLICY_DOUBLE) {</td></tr>
+<tr class="codeline" data-linenumber="313"><td class="num" id="LN313">313</td><td class="line"> <span class='keyword'>if</span> (obj-&gt;priv-&gt;hover_path != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="314"><td class="num" id="LN314">314</td><td class="line"> <span class='keyword'>if</span> (gtk_tree_model_get_iter (<span class='macro'>GTK_TREE_MODEL (obj-&gt;priv-&gt;model)<span class='macro_popup'>((((GtkTreeModel*) (void *) ((obj-&gt;priv-&gt;model)))))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="315"><td class="num" id="LN315">315</td><td class="line"> &amp;iter, obj-&gt;priv-&gt;hover_path))</td></tr>
+<tr class="codeline" data-linenumber="316"><td class="num" id="LN316">316</td><td class="line"> gtk_tree_model_row_changed (<span class='macro'>GTK_TREE_MODEL (obj-&gt;priv-&gt;model)<span class='macro_popup'>((((GtkTreeModel*) (void *) ((obj-&gt;priv-&gt;model)))))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="317"><td class="num" id="LN317">317</td><td class="line"> obj-&gt;priv-&gt;hover_path, &amp;iter);</td></tr>
+<tr class="codeline" data-linenumber="318"><td class="num" id="LN318">318</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="319"><td class="num" id="LN319">319</td><td class="line"> gtk_tree_path_free (obj-&gt;priv-&gt;hover_path);</td></tr>
+<tr class="codeline" data-linenumber="320"><td class="num" id="LN320">320</td><td class="line"> obj-&gt;priv-&gt;hover_path = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="321"><td class="num" id="LN321">321</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="322"><td class="num" id="LN322">322</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="323"><td class="num" id="LN323">323</td><td class="line"> <span class='keyword'>if</span> (gtk_widget_get_realized (<span class='macro'>GTK_WIDGET (obj)<span class='macro_popup'>((((GtkWidget*) (void *) ((obj)))))</span></span>)) {</td></tr>
+<tr class="codeline" data-linenumber="324"><td class="num" id="LN324">324</td><td class="line"> win = gtk_widget_get_window (<span class='macro'>GTK_WIDGET (obj)<span class='macro_popup'>((((GtkWidget*) (void *) ((obj)))))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="325"><td class="num" id="LN325">325</td><td class="line"> gdk_window_set_cursor (win, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="326"><td class="num" id="LN326">326</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="327"><td class="num" id="LN327">327</td><td class="line"> display = gtk_widget_get_display (<span class='macro'>GTK_WIDGET (obj)<span class='macro_popup'>((((GtkWidget*) (void *) ((obj)))))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="328"><td class="num" id="LN328">328</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="329"><td class="num" id="LN329">329</td><td class="line"> <span class='keyword'>if</span> (display != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="330"><td class="num" id="LN330">330</td><td class="line"> gdk_display_flush (display);</td></tr>
+<tr class="codeline" data-linenumber="331"><td class="num" id="LN331">331</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="332"><td class="num" id="LN332">332</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="333"><td class="num" id="LN333">333</td><td class="line"> <span class='keyword'>if</span> (obj-&gt;priv-&gt;hand_cursor) {</td></tr>
+<tr class="codeline" data-linenumber="334"><td class="num" id="LN334">334</td><td class="line"> g_object_unref (obj-&gt;priv-&gt;hand_cursor);</td></tr>
+<tr class="codeline" data-linenumber="335"><td class="num" id="LN335">335</td><td class="line"> obj-&gt;priv-&gt;hand_cursor = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="336"><td class="num" id="LN336">336</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="337"><td class="num" id="LN337">337</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="338"><td class="num" id="LN338">338</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="339"><td class="num" id="LN339">339</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="340"><td class="num" id="LN340">340</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="341"><td class="num" id="LN341">341</td><td class="line">directory_activated (PlumaFileBrowserView *view,</td></tr>
+<tr class="codeline" data-linenumber="342"><td class="num" id="LN342">342</td><td class="line"> GtkTreeIter *iter)</td></tr>
+<tr class="codeline" data-linenumber="343"><td class="num" id="LN343">343</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="344"><td class="num" id="LN344">344</td><td class="line"> pluma_file_browser_store_set_virtual_root (<span class='macro'>PLUMA_FILE_BROWSER_STORE (view-&gt;priv-&gt;model)<span class='macro_popup'>((((PlumaFileBrowserStore*) (void *) ((view-&gt;priv-&gt;model<br>)))))</span></span>, iter);</td></tr>
+<tr class="codeline" data-linenumber="345"><td class="num" id="LN345">345</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="346"><td class="num" id="LN346">346</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="347"><td class="num" id="LN347">347</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="348"><td class="num" id="LN348">348</td><td class="line">activate_selected_files (PlumaFileBrowserView *view) {</td></tr>
+<tr class="codeline" data-linenumber="349"><td class="num" id="LN349">349</td><td class="line"> GtkTreeView *tree_view = <span class='macro'>GTK_TREE_VIEW (view)<span class='macro_popup'>((((GtkTreeView*) (void *) ((view)))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="350"><td class="num" id="LN350">350</td><td class="line"> GtkTreeSelection *selection = gtk_tree_view_get_selection (tree_view);</td></tr>
+<tr class="codeline" data-linenumber="351"><td class="num" id="LN351">351</td><td class="line"> GList *rows, *row;</td></tr>
+<tr class="codeline" data-linenumber="352"><td class="num" id="LN352">352</td><td class="line"> GtkTreePath *directory = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="353"><td class="num" id="LN353">353</td><td class="line"> GtkTreePath *path;</td></tr>
+<tr class="codeline" data-linenumber="354"><td class="num" id="LN354">354</td><td class="line"> GtkTreeIter iter;</td></tr>
+<tr class="codeline" data-linenumber="355"><td class="num" id="LN355">355</td><td class="line"> PlumaFileBrowserStoreFlag flags;</td></tr>
+<tr class="codeline" data-linenumber="356"><td class="num" id="LN356">356</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="357"><td class="num" id="LN357">357</td><td class="line"> rows = gtk_tree_selection_get_selected_rows (selection, &amp;view-&gt;priv-&gt;model);</td></tr>
+<tr class="codeline" data-linenumber="358"><td class="num" id="LN358">358</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="359"><td class="num" id="LN359">359</td><td class="line"> <span class='keyword'>for</span> (row = rows; row; row = row-&gt;next) {</td></tr>
+<tr class="codeline" data-linenumber="360"><td class="num" id="LN360">360</td><td class="line"> path = (GtkTreePath *)(row-&gt;data);</td></tr>
+<tr class="codeline" data-linenumber="361"><td class="num" id="LN361">361</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="362"><td class="num" id="LN362">362</td><td class="line"> <span class='comment'>/* Get iter from path */</span></td></tr>
+<tr class="codeline" data-linenumber="363"><td class="num" id="LN363">363</td><td class="line"> <span class='keyword'>if</span> (!gtk_tree_model_get_iter (view-&gt;priv-&gt;model, &amp;iter, path))</td></tr>
+<tr class="codeline" data-linenumber="364"><td class="num" id="LN364">364</td><td class="line"> <span class='keyword'>continue</span>;</td></tr>
+<tr class="codeline" data-linenumber="365"><td class="num" id="LN365">365</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="366"><td class="num" id="LN366">366</td><td class="line"> gtk_tree_model_get (view-&gt;priv-&gt;model, &amp;iter, PLUMA_FILE_BROWSER_STORE_COLUMN_FLAGS, &amp;flags, -1);</td></tr>
+<tr class="codeline" data-linenumber="367"><td class="num" id="LN367">367</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="368"><td class="num" id="LN368">368</td><td class="line"> <span class='keyword'>if</span> (<span class='macro'>FILE_IS_DIR (flags)<span class='macro_popup'>(flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_DIRECTORY)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="369"><td class="num" id="LN369">369</td><td class="line"> <span class='keyword'>if</span> (directory == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="370"><td class="num" id="LN370">370</td><td class="line"> directory = path;</td></tr>
+<tr class="codeline" data-linenumber="371"><td class="num" id="LN371">371</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="372"><td class="num" id="LN372">372</td><td class="line"> } <span class='keyword'>else</span> <span class='keyword'>if</span> (!<span class='macro'>FILE_IS_DUMMY (flags)<span class='macro_popup'>(flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_DUMMY)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="373"><td class="num" id="LN373">373</td><td class="line"> g_signal_emit (view, signals[FILE_ACTIVATED], 0, &amp;iter);</td></tr>
+<tr class="codeline" data-linenumber="374"><td class="num" id="LN374">374</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="375"><td class="num" id="LN375">375</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="376"><td class="num" id="LN376">376</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="377"><td class="num" id="LN377">377</td><td class="line"> <span class='keyword'>if</span> (directory != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="378"><td class="num" id="LN378">378</td><td class="line"> <span class='keyword'>if</span> (gtk_tree_model_get_iter (view-&gt;priv-&gt;model, &amp;iter, directory))</td></tr>
+<tr class="codeline" data-linenumber="379"><td class="num" id="LN379">379</td><td class="line"> g_signal_emit (view, signals[DIRECTORY_ACTIVATED], 0, &amp;iter);</td></tr>
+<tr class="codeline" data-linenumber="380"><td class="num" id="LN380">380</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="381"><td class="num" id="LN381">381</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="382"><td class="num" id="LN382">382</td><td class="line"> g_list_free_full (rows, (GDestroyNotify) gtk_tree_path_free);</td></tr>
+<tr class="codeline" data-linenumber="383"><td class="num" id="LN383">383</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="384"><td class="num" id="LN384">384</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="385"><td class="num" id="LN385">385</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="386"><td class="num" id="LN386">386</td><td class="line">activate_selected_bookmark (PlumaFileBrowserView *view) {</td></tr>
+<tr class="codeline" data-linenumber="387"><td class="num" id="LN387">387</td><td class="line"> GtkTreeView *tree_view = <span class='macro'>GTK_TREE_VIEW (view)<span class='macro_popup'>((((GtkTreeView*) (void *) ((view)))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="388"><td class="num" id="LN388">388</td><td class="line"> GtkTreeSelection *selection = gtk_tree_view_get_selection (tree_view);</td></tr>
+<tr class="codeline" data-linenumber="389"><td class="num" id="LN389">389</td><td class="line"> GtkTreeIter iter;</td></tr>
+<tr class="codeline" data-linenumber="390"><td class="num" id="LN390">390</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="391"><td class="num" id="LN391">391</td><td class="line"> <span class='keyword'>if</span> (gtk_tree_selection_get_selected (selection, &amp;view-&gt;priv-&gt;model, &amp;iter))</td></tr>
+<tr class="codeline" data-linenumber="392"><td class="num" id="LN392">392</td><td class="line"> g_signal_emit (view, signals[BOOKMARK_ACTIVATED], 0, &amp;iter);</td></tr>
+<tr class="codeline" data-linenumber="393"><td class="num" id="LN393">393</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="394"><td class="num" id="LN394">394</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="395"><td class="num" id="LN395">395</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="396"><td class="num" id="LN396">396</td><td class="line">activate_selected_items (PlumaFileBrowserView *view)</td></tr>
+<tr class="codeline" data-linenumber="397"><td class="num" id="LN397">397</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="398"><td class="num" id="LN398">398</td><td class="line"> <span class='keyword'>if</span> (<span class='macro'>PLUMA_IS_FILE_BROWSER_STORE (view-&gt;priv-&gt;model)<span class='macro_popup'>(((__extension__ ({ GTypeInstance *__inst = (GTypeInstance*) (<br>(view-&gt;priv-&gt;model)); GType __t = ((pluma_file_browser_store_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="399"><td class="num" id="LN399">399</td><td class="line"> activate_selected_files (view);</td></tr>
+<tr class="codeline" data-linenumber="400"><td class="num" id="LN400">400</td><td class="line"> <span class='keyword'>else</span> <span class='keyword'>if</span> (<span class='macro'>PLUMA_IS_FILE_BOOKMARKS_STORE (view-&gt;priv-&gt;model)<span class='macro_popup'>(((__extension__ ({ GTypeInstance *__inst = (GTypeInstance*) (<br>(view-&gt;priv-&gt;model)); GType __t = ((pluma_file_bookmarks_store_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="401"><td class="num" id="LN401">401</td><td class="line"> activate_selected_bookmark (view);</td></tr>
+<tr class="codeline" data-linenumber="402"><td class="num" id="LN402">402</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="403"><td class="num" id="LN403">403</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="404"><td class="num" id="LN404">404</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="405"><td class="num" id="LN405">405</td><td class="line">toggle_hidden_filter (PlumaFileBrowserView *view)</td></tr>
+<tr class="codeline" data-linenumber="406"><td class="num" id="LN406">406</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="407"><td class="num" id="LN407">407</td><td class="line"> PlumaFileBrowserStoreFilterMode mode;</td></tr>
+<tr class="codeline" data-linenumber="408"><td class="num" id="LN408">408</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="409"><td class="num" id="LN409">409</td><td class="line"> <span class='keyword'>if</span> (<span class='macro'>PLUMA_IS_FILE_BROWSER_STORE (view-&gt;priv-&gt;model)<span class='macro_popup'>(((__extension__ ({ GTypeInstance *__inst = (GTypeInstance*) (<br>(view-&gt;priv-&gt;model)); GType __t = ((pluma_file_browser_store_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="410"><td class="num" id="LN410">410</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="411"><td class="num" id="LN411">411</td><td class="line"> mode = pluma_file_browser_store_get_filter_mode</td></tr>
+<tr class="codeline" data-linenumber="412"><td class="num" id="LN412">412</td><td class="line"> (<span class='macro'>PLUMA_FILE_BROWSER_STORE (view-&gt;priv-&gt;model)<span class='macro_popup'>((((PlumaFileBrowserStore*) (void *) ((view-&gt;priv-&gt;model<br>)))))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="413"><td class="num" id="LN413">413</td><td class="line"> mode ^= PLUMA_FILE_BROWSER_STORE_FILTER_MODE_HIDE_HIDDEN;</td></tr>
+<tr class="codeline" data-linenumber="414"><td class="num" id="LN414">414</td><td class="line"> pluma_file_browser_store_set_filter_mode</td></tr>
+<tr class="codeline" data-linenumber="415"><td class="num" id="LN415">415</td><td class="line"> (<span class='macro'>PLUMA_FILE_BROWSER_STORE (view-&gt;priv-&gt;model)<span class='macro_popup'>((((PlumaFileBrowserStore*) (void *) ((view-&gt;priv-&gt;model<br>)))))</span></span>, mode);</td></tr>
+<tr class="codeline" data-linenumber="416"><td class="num" id="LN416">416</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="417"><td class="num" id="LN417">417</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="418"><td class="num" id="LN418">418</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="419"><td class="num" id="LN419">419</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="420"><td class="num" id="LN420">420</td><td class="line">button_event_modifies_selection (GdkEventButton *event)</td></tr>
+<tr class="codeline" data-linenumber="421"><td class="num" id="LN421">421</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="422"><td class="num" id="LN422">422</td><td class="line"> <span class='keyword'>return</span> (event-&gt;state &amp; (GDK_CONTROL_MASK | GDK_SHIFT_MASK)) != 0;</td></tr>
+<tr class="codeline" data-linenumber="423"><td class="num" id="LN423">423</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="424"><td class="num" id="LN424">424</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="425"><td class="num" id="LN425">425</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="426"><td class="num" id="LN426">426</td><td class="line">drag_begin (GtkWidget *widget,</td></tr>
+<tr class="codeline" data-linenumber="427"><td class="num" id="LN427">427</td><td class="line"> GdkDragContext *context)</td></tr>
+<tr class="codeline" data-linenumber="428"><td class="num" id="LN428">428</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="429"><td class="num" id="LN429">429</td><td class="line"> PlumaFileBrowserView *view = <span class='macro'>PLUMA_FILE_BROWSER_VIEW (widget)<span class='macro_popup'>((((PlumaFileBrowserView*) (void *) ((widget)))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="430"><td class="num" id="LN430">430</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="431"><td class="num" id="LN431">431</td><td class="line"> view-&gt;priv-&gt;drag_button = 0;</td></tr>
+<tr class="codeline" data-linenumber="432"><td class="num" id="LN432">432</td><td class="line"> view-&gt;priv-&gt;drag_started = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="433"><td class="num" id="LN433">433</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="434"><td class="num" id="LN434">434</td><td class="line"> <span class='comment'>/* Chain up */</span></td></tr>
+<tr class="codeline" data-linenumber="435"><td class="num" id="LN435">435</td><td class="line"> <span class='macro'>GTK_WIDGET_CLASS (pluma_file_browser_view_parent_class)<span class='macro_popup'>((((GtkWidgetClass*) (void *) ((pluma_file_browser_view_parent_class<br>)))))</span></span>-&gt;drag_begin (widget, context);</td></tr>
+<tr class="codeline" data-linenumber="436"><td class="num" id="LN436">436</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="437"><td class="num" id="LN437">437</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="438"><td class="num" id="LN438">438</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="439"><td class="num" id="LN439">439</td><td class="line">did_not_drag (PlumaFileBrowserView *view,</td></tr>
+<tr class="codeline" data-linenumber="440"><td class="num" id="LN440">440</td><td class="line"> GdkEventButton *event)</td></tr>
+<tr class="codeline" data-linenumber="441"><td class="num" id="LN441">441</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="442"><td class="num" id="LN442">442</td><td class="line"> GtkTreeView *tree_view;</td></tr>
+<tr class="codeline" data-linenumber="443"><td class="num" id="LN443">443</td><td class="line"> GtkTreeSelection *selection;</td></tr>
+<tr class="codeline" data-linenumber="444"><td class="num" id="LN444">444</td><td class="line"> GtkTreePath *path;</td></tr>
+<tr class="codeline" data-linenumber="445"><td class="num" id="LN445">445</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="446"><td class="num" id="LN446">446</td><td class="line"> tree_view = <span class='macro'>GTK_TREE_VIEW (view)<span class='macro_popup'>((((GtkTreeView*) (void *) ((view)))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="447"><td class="num" id="LN447">447</td><td class="line"> selection = gtk_tree_view_get_selection (tree_view);</td></tr>
+<tr class="codeline" data-linenumber="448"><td class="num" id="LN448">448</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="449"><td class="num" id="LN449">449</td><td class="line"> <span class='keyword'>if</span> (gtk_tree_view_get_path_at_pos (tree_view, event-&gt;x, event-&gt;y,</td></tr>
+<tr class="codeline" data-linenumber="450"><td class="num" id="LN450">450</td><td class="line"> &amp;path, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)) {</td></tr>
+<tr class="codeline" data-linenumber="451"><td class="num" id="LN451">451</td><td class="line"> <span class='keyword'>if</span> ((view-&gt;priv-&gt;click_policy == PLUMA_FILE_BROWSER_VIEW_CLICK_POLICY_SINGLE)</td></tr>
+<tr class="codeline" data-linenumber="452"><td class="num" id="LN452">452</td><td class="line"> &amp;&amp; !button_event_modifies_selection(event)</td></tr>
+<tr class="codeline" data-linenumber="453"><td class="num" id="LN453">453</td><td class="line"> &amp;&amp; (event-&gt;button == 1 || event-&gt;button == 2)) {</td></tr>
+<tr class="codeline" data-linenumber="454"><td class="num" id="LN454">454</td><td class="line"> <span class='comment'>/* Activate all selected items, and leave them selected */</span></td></tr>
+<tr class="codeline" data-linenumber="455"><td class="num" id="LN455">455</td><td class="line"> activate_selected_items (view);</td></tr>
+<tr class="codeline" data-linenumber="456"><td class="num" id="LN456">456</td><td class="line"> } <span class='keyword'>else</span> <span class='keyword'>if</span> ((event-&gt;button == 1 || event-&gt;button == 2)</td></tr>
+<tr class="codeline" data-linenumber="457"><td class="num" id="LN457">457</td><td class="line"> &amp;&amp; ((event-&gt;state &amp; GDK_CONTROL_MASK) != 0 ||</td></tr>
+<tr class="codeline" data-linenumber="458"><td class="num" id="LN458">458</td><td class="line"> (event-&gt;state &amp; GDK_SHIFT_MASK) == 0)</td></tr>
+<tr class="codeline" data-linenumber="459"><td class="num" id="LN459">459</td><td class="line"> &amp;&amp; view-&gt;priv-&gt;selected_on_button_down) {</td></tr>
+<tr class="codeline" data-linenumber="460"><td class="num" id="LN460">460</td><td class="line"> <span class='keyword'>if</span> (!button_event_modifies_selection (event)) {</td></tr>
+<tr class="codeline" data-linenumber="461"><td class="num" id="LN461">461</td><td class="line"> gtk_tree_selection_unselect_all (selection);</td></tr>
+<tr class="codeline" data-linenumber="462"><td class="num" id="LN462">462</td><td class="line"> gtk_tree_selection_select_path (selection, path);</td></tr>
+<tr class="codeline" data-linenumber="463"><td class="num" id="LN463">463</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="464"><td class="num" id="LN464">464</td><td class="line"> gtk_tree_selection_unselect_path (selection, path);</td></tr>
+<tr class="codeline" data-linenumber="465"><td class="num" id="LN465">465</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="466"><td class="num" id="LN466">466</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="467"><td class="num" id="LN467">467</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="468"><td class="num" id="LN468">468</td><td class="line"> gtk_tree_path_free (path);</td></tr>
+<tr class="codeline" data-linenumber="469"><td class="num" id="LN469">469</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="470"><td class="num" id="LN470">470</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="471"><td class="num" id="LN471">471</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="472"><td class="num" id="LN472">472</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="473"><td class="num" id="LN473">473</td><td class="line">button_release_event (GtkWidget *widget,</td></tr>
+<tr class="codeline" data-linenumber="474"><td class="num" id="LN474">474</td><td class="line"> GdkEventButton *event)</td></tr>
+<tr class="codeline" data-linenumber="475"><td class="num" id="LN475">475</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="476"><td class="num" id="LN476">476</td><td class="line"> PlumaFileBrowserView *view = <span class='macro'>PLUMA_FILE_BROWSER_VIEW (widget)<span class='macro_popup'>((((PlumaFileBrowserView*) (void *) ((widget)))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="477"><td class="num" id="LN477">477</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="478"><td class="num" id="LN478">478</td><td class="line"> <span class='keyword'>if</span> (event-&gt;button == view-&gt;priv-&gt;drag_button) {</td></tr>
+<tr class="codeline" data-linenumber="479"><td class="num" id="LN479">479</td><td class="line"> view-&gt;priv-&gt;drag_button = 0;</td></tr>
+<tr class="codeline" data-linenumber="480"><td class="num" id="LN480">480</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="481"><td class="num" id="LN481">481</td><td class="line"> <span class='keyword'>if</span> (!view-&gt;priv-&gt;drag_started &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="482"><td class="num" id="LN482">482</td><td class="line"> !view-&gt;priv-&gt;ignore_release)</td></tr>
+<tr class="codeline" data-linenumber="483"><td class="num" id="LN483">483</td><td class="line"> did_not_drag (view, event);</td></tr>
+<tr class="codeline" data-linenumber="484"><td class="num" id="LN484">484</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="485"><td class="num" id="LN485">485</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="486"><td class="num" id="LN486">486</td><td class="line"> <span class='comment'>/* Chain up */</span></td></tr>
+<tr class="codeline" data-linenumber="487"><td class="num" id="LN487">487</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>GTK_WIDGET_CLASS (pluma_file_browser_view_parent_class)<span class='macro_popup'>((((GtkWidgetClass*) (void *) ((pluma_file_browser_view_parent_class<br>)))))</span></span>-&gt;button_release_event (widget, event);</td></tr>
+<tr class="codeline" data-linenumber="488"><td class="num" id="LN488">488</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="489"><td class="num" id="LN489">489</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="490"><td class="num" id="LN490">490</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="491"><td class="num" id="LN491">491</td><td class="line">button_press_event (GtkWidget *widget,</td></tr>
+<tr class="codeline" data-linenumber="492"><td class="num" id="LN492">492</td><td class="line"> GdkEventButton *event)</td></tr>
+<tr class="codeline" data-linenumber="493"><td class="num" id="LN493">493</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="494"><td class="num" id="LN494">494</td><td class="line"> <span class='keyword'>int</span> double_click_time;</td></tr>
+<tr class="codeline" data-linenumber="495"><td class="num" id="LN495">495</td><td class="line"> <span class='keyword'>static</span> <span class='keyword'>int</span> click_count = 0;</td></tr>
+<tr class="codeline" data-linenumber="496"><td class="num" id="LN496">496</td><td class="line"> <span class='keyword'>static</span> guint32 last_click_time = 0;</td></tr>
+<tr class="codeline" data-linenumber="497"><td class="num" id="LN497">497</td><td class="line"> PlumaFileBrowserView *view;</td></tr>
+<tr class="codeline" data-linenumber="498"><td class="num" id="LN498">498</td><td class="line"> GtkTreeView *tree_view;</td></tr>
+<tr class="codeline" data-linenumber="499"><td class="num" id="LN499">499</td><td class="line"> GtkTreeSelection *selection;</td></tr>
+<tr class="codeline" data-linenumber="500"><td class="num" id="LN500">500</td><td class="line"> GtkTreePath *path;</td></tr>
+<tr class="codeline" data-linenumber="501"><td class="num" id="LN501">501</td><td class="line"> <span class='keyword'>int</span> expander_size;</td></tr>
+<tr class="codeline" data-linenumber="502"><td class="num" id="LN502">502</td><td class="line"> <span class='keyword'>int</span> horizontal_separator;</td></tr>
+<tr class="codeline" data-linenumber="503"><td class="num" id="LN503">503</td><td class="line"> gboolean on_expander;</td></tr>
+<tr class="codeline" data-linenumber="504"><td class="num" id="LN504">504</td><td class="line"> gboolean call_parent;</td></tr>
+<tr class="codeline" data-linenumber="505"><td class="num" id="LN505">505</td><td class="line"> gboolean selected;</td></tr>
+<tr class="codeline" data-linenumber="506"><td class="num" id="LN506">506</td><td class="line"> GtkWidgetClass *widget_parent = <span class='macro'>GTK_WIDGET_CLASS(pluma_file_browser_view_parent_class)<span class='macro_popup'>((((GtkWidgetClass*) (void *) ((pluma_file_browser_view_parent_class<br>)))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="507"><td class="num" id="LN507">507</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="508"><td class="num" id="LN508">508</td><td class="line"> tree_view = <span class='macro'>GTK_TREE_VIEW (widget)<span class='macro_popup'>((((GtkTreeView*) (void *) ((widget)))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="509"><td class="num" id="LN509">509</td><td class="line"> view = <span class='macro'>PLUMA_FILE_BROWSER_VIEW (widget)<span class='macro_popup'>((((PlumaFileBrowserView*) (void *) ((widget)))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="510"><td class="num" id="LN510">510</td><td class="line"> selection = gtk_tree_view_get_selection (tree_view);</td></tr>
+<tr class="codeline" data-linenumber="511"><td class="num" id="LN511">511</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="512"><td class="num" id="LN512">512</td><td class="line"> <span class='comment'>/* Get double click time */</span></td></tr>
+<tr class="codeline" data-linenumber="513"><td class="num" id="LN513">513</td><td class="line"> g_object_get (<span class='macro'>G_OBJECT (gtk_widget_get_settings (widget))<span class='macro_popup'>((((GObject*) (void *) ((gtk_widget_get_settings (widget)))))<br>)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="514"><td class="num" id="LN514">514</td><td class="line"> <span class='string_literal'>"gtk-double-click-time"</span>, &amp;double_click_time,</td></tr>
+<tr class="codeline" data-linenumber="515"><td class="num" id="LN515">515</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="516"><td class="num" id="LN516">516</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="517"><td class="num" id="LN517">517</td><td class="line"> <span class='comment'>/* Determine click count */</span></td></tr>
+<tr class="codeline" data-linenumber="518"><td class="num" id="LN518">518</td><td class="line"> <span class='keyword'>if</span> (event-&gt;time - last_click_time &lt; double_click_time)</td></tr>
+<tr class="codeline" data-linenumber="519"><td class="num" id="LN519">519</td><td class="line"> click_count++;</td></tr>
+<tr class="codeline" data-linenumber="520"><td class="num" id="LN520">520</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="521"><td class="num" id="LN521">521</td><td class="line"> click_count = 0;</td></tr>
+<tr class="codeline" data-linenumber="522"><td class="num" id="LN522">522</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="523"><td class="num" id="LN523">523</td><td class="line"> last_click_time = event-&gt;time;</td></tr>
+<tr class="codeline" data-linenumber="524"><td class="num" id="LN524">524</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="525"><td class="num" id="LN525">525</td><td class="line"> <span class='comment'>/* Ignore double click if we are in single click mode */</span></td></tr>
+<tr class="codeline" data-linenumber="526"><td class="num" id="LN526">526</td><td class="line"> <span class='keyword'>if</span> (view-&gt;priv-&gt;click_policy == PLUMA_FILE_BROWSER_VIEW_CLICK_POLICY_SINGLE &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="527"><td class="num" id="LN527">527</td><td class="line"> click_count &gt;= 2) {</td></tr>
+<tr class="codeline" data-linenumber="528"><td class="num" id="LN528">528</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="529"><td class="num" id="LN529">529</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="530"><td class="num" id="LN530">530</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="531"><td class="num" id="LN531">531</td><td class="line"> view-&gt;priv-&gt;ignore_release = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="532"><td class="num" id="LN532">532</td><td class="line"> call_parent = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="533"><td class="num" id="LN533">533</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="534"><td class="num" id="LN534">534</td><td class="line"> <span class='keyword'>if</span> (gtk_tree_view_get_path_at_pos (tree_view, event-&gt;x, event-&gt;y,</td></tr>
+<tr class="codeline" data-linenumber="535"><td class="num" id="LN535">535</td><td class="line"> &amp;path, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)) {</td></tr>
+<tr class="codeline" data-linenumber="536"><td class="num" id="LN536">536</td><td class="line"> <span class='comment'>/* Keep track of path of last click so double clicks only happen</span></td></tr>
+<tr class="codeline" data-linenumber="537"><td class="num" id="LN537">537</td><td class="line"> <span class='comment'>* on the same item */</span></td></tr>
+<tr class="codeline" data-linenumber="538"><td class="num" id="LN538">538</td><td class="line"> <span class='keyword'>if</span> ((event-&gt;button == 1 || event-&gt;button == 2) &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="539"><td class="num" id="LN539">539</td><td class="line"> event-&gt;type == GDK_BUTTON_PRESS) {</td></tr>
+<tr class="codeline" data-linenumber="540"><td class="num" id="LN540">540</td><td class="line"> <span class='keyword'>if</span> (view-&gt;priv-&gt;double_click_path[1])</td></tr>
+<tr class="codeline" data-linenumber="541"><td class="num" id="LN541">541</td><td class="line"> gtk_tree_path_free (view-&gt;priv-&gt;double_click_path[1]);</td></tr>
+<tr class="codeline" data-linenumber="542"><td class="num" id="LN542">542</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="543"><td class="num" id="LN543">543</td><td class="line"> view-&gt;priv-&gt;double_click_path[1] = view-&gt;priv-&gt;double_click_path[0];</td></tr>
+<tr class="codeline" data-linenumber="544"><td class="num" id="LN544">544</td><td class="line"> view-&gt;priv-&gt;double_click_path[0] = gtk_tree_path_copy (path);</td></tr>
+<tr class="codeline" data-linenumber="545"><td class="num" id="LN545">545</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="546"><td class="num" id="LN546">546</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="547"><td class="num" id="LN547">547</td><td class="line"> <span class='keyword'>if</span> (event-&gt;type == GDK_2BUTTON_PRESS) {</td></tr>
+<tr class="codeline" data-linenumber="548"><td class="num" id="LN548">548</td><td class="line"> <span class='keyword'>if</span> (view-&gt;priv-&gt;double_click_path[1] &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="549"><td class="num" id="LN549">549</td><td class="line"> gtk_tree_path_compare (view-&gt;priv-&gt;double_click_path[0], view-&gt;priv-&gt;double_click_path[1]) == 0)</td></tr>
+<tr class="codeline" data-linenumber="550"><td class="num" id="LN550">550</td><td class="line"> activate_selected_items (view);</td></tr>
+<tr class="codeline" data-linenumber="551"><td class="num" id="LN551">551</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="552"><td class="num" id="LN552">552</td><td class="line"> <span class='comment'>/* Chain up */</span></td></tr>
+<tr class="codeline" data-linenumber="553"><td class="num" id="LN553">553</td><td class="line"> widget_parent-&gt;button_press_event (widget, event);</td></tr>
+<tr class="codeline" data-linenumber="554"><td class="num" id="LN554">554</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="555"><td class="num" id="LN555">555</td><td class="line"> <span class='comment'>/* We're going to filter out some situations where</span></td></tr>
+<tr class="codeline" data-linenumber="556"><td class="num" id="LN556">556</td><td class="line"> <span class='comment'>* we can't let the default code run because all</span></td></tr>
+<tr class="codeline" data-linenumber="557"><td class="num" id="LN557">557</td><td class="line"> <span class='comment'>* but one row would be would be deselected. We don't</span></td></tr>
+<tr class="codeline" data-linenumber="558"><td class="num" id="LN558">558</td><td class="line"> <span class='comment'>* want that; we want the right click menu or single</span></td></tr>
+<tr class="codeline" data-linenumber="559"><td class="num" id="LN559">559</td><td class="line"> <span class='comment'>* click to apply to everything that's currently selected. */</span></td></tr>
+<tr class="codeline" data-linenumber="560"><td class="num" id="LN560">560</td><td class="line"> selected = gtk_tree_selection_path_is_selected (selection, path);</td></tr>
+<tr class="codeline" data-linenumber="561"><td class="num" id="LN561">561</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="562"><td class="num" id="LN562">562</td><td class="line"> <span class='keyword'>if</span> (event-&gt;button == 3 &amp;&amp; selected)</td></tr>
+<tr class="codeline" data-linenumber="563"><td class="num" id="LN563">563</td><td class="line"> call_parent = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="564"><td class="num" id="LN564">564</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="565"><td class="num" id="LN565">565</td><td class="line"> <span class='keyword'>if</span> ((event-&gt;button == 1 || event-&gt;button == 2) &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="566"><td class="num" id="LN566">566</td><td class="line"> ((event-&gt;state &amp; GDK_CONTROL_MASK) != 0 ||</td></tr>
+<tr class="codeline" data-linenumber="567"><td class="num" id="LN567">567</td><td class="line"> (event-&gt;state &amp; GDK_SHIFT_MASK) == 0)) {</td></tr>
+<tr class="codeline" data-linenumber="568"><td class="num" id="LN568">568</td><td class="line"> gtk_widget_style_get (widget,</td></tr>
+<tr class="codeline" data-linenumber="569"><td class="num" id="LN569">569</td><td class="line"> <span class='string_literal'>"expander-size"</span>, &amp;expander_size,</td></tr>
+<tr class="codeline" data-linenumber="570"><td class="num" id="LN570">570</td><td class="line"> <span class='string_literal'>"horizontal-separator"</span>, &amp;horizontal_separator,</td></tr>
+<tr class="codeline" data-linenumber="571"><td class="num" id="LN571">571</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="572"><td class="num" id="LN572">572</td><td class="line"> on_expander = (event-&gt;x &lt;= horizontal_separator / 2 +</td></tr>
+<tr class="codeline" data-linenumber="573"><td class="num" id="LN573">573</td><td class="line"> gtk_tree_path_get_depth (path) * expander_size);</td></tr>
+<tr class="codeline" data-linenumber="574"><td class="num" id="LN574">574</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="575"><td class="num" id="LN575">575</td><td class="line"> view-&gt;priv-&gt;selected_on_button_down = selected;</td></tr>
+<tr class="codeline" data-linenumber="576"><td class="num" id="LN576">576</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="577"><td class="num" id="LN577">577</td><td class="line"> <span class='keyword'>if</span> (selected) {</td></tr>
+<tr class="codeline" data-linenumber="578"><td class="num" id="LN578">578</td><td class="line"> call_parent = on_expander || gtk_tree_selection_count_selected_rows (selection) == 1;</td></tr>
+<tr class="codeline" data-linenumber="579"><td class="num" id="LN579">579</td><td class="line"> view-&gt;priv-&gt;ignore_release = call_parent &amp;&amp; view-&gt;priv-&gt;click_policy != PLUMA_FILE_BROWSER_VIEW_CLICK_POLICY_SINGLE;</td></tr>
+<tr class="codeline" data-linenumber="580"><td class="num" id="LN580">580</td><td class="line"> } <span class='keyword'>else</span> <span class='keyword'>if</span> ((event-&gt;state &amp; GDK_CONTROL_MASK) != 0) {</td></tr>
+<tr class="codeline" data-linenumber="581"><td class="num" id="LN581">581</td><td class="line"> call_parent = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="582"><td class="num" id="LN582">582</td><td class="line"> gtk_tree_selection_select_path (selection, path);</td></tr>
+<tr class="codeline" data-linenumber="583"><td class="num" id="LN583">583</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="584"><td class="num" id="LN584">584</td><td class="line"> view-&gt;priv-&gt;ignore_release = on_expander;</td></tr>
+<tr class="codeline" data-linenumber="585"><td class="num" id="LN585">585</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="586"><td class="num" id="LN586">586</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="587"><td class="num" id="LN587">587</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="588"><td class="num" id="LN588">588</td><td class="line"> <span class='keyword'>if</span> (call_parent) {</td></tr>
+<tr class="codeline" data-linenumber="589"><td class="num" id="LN589">589</td><td class="line"> <span class='comment'>/* Chain up */</span></td></tr>
+<tr class="codeline" data-linenumber="590"><td class="num" id="LN590">590</td><td class="line"> widget_parent-&gt;button_press_event (widget, event);</td></tr>
+<tr class="codeline" data-linenumber="591"><td class="num" id="LN591">591</td><td class="line"> } <span class='keyword'>else</span> <span class='keyword'>if</span> (selected) {</td></tr>
+<tr class="codeline" data-linenumber="592"><td class="num" id="LN592">592</td><td class="line"> gtk_widget_grab_focus (widget);</td></tr>
+<tr class="codeline" data-linenumber="593"><td class="num" id="LN593">593</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="594"><td class="num" id="LN594">594</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="595"><td class="num" id="LN595">595</td><td class="line"> <span class='keyword'>if</span> ((event-&gt;button == 1 || event-&gt;button == 2) &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="596"><td class="num" id="LN596">596</td><td class="line"> event-&gt;type == GDK_BUTTON_PRESS) {</td></tr>
+<tr class="codeline" data-linenumber="597"><td class="num" id="LN597">597</td><td class="line"> view-&gt;priv-&gt;drag_started = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="598"><td class="num" id="LN598">598</td><td class="line"> view-&gt;priv-&gt;drag_button = event-&gt;button;</td></tr>
+<tr class="codeline" data-linenumber="599"><td class="num" id="LN599">599</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="600"><td class="num" id="LN600">600</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="601"><td class="num" id="LN601">601</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="602"><td class="num" id="LN602">602</td><td class="line"> gtk_tree_path_free (path);</td></tr>
+<tr class="codeline" data-linenumber="603"><td class="num" id="LN603">603</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="604"><td class="num" id="LN604">604</td><td class="line"> <span class='keyword'>if</span> ((event-&gt;button == 1 || event-&gt;button == 2) &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="605"><td class="num" id="LN605">605</td><td class="line"> event-&gt;type == GDK_BUTTON_PRESS) {</td></tr>
+<tr class="codeline" data-linenumber="606"><td class="num" id="LN606">606</td><td class="line"> <span class='keyword'>if</span> (view-&gt;priv-&gt;double_click_path[1])</td></tr>
+<tr class="codeline" data-linenumber="607"><td class="num" id="LN607">607</td><td class="line"> gtk_tree_path_free (view-&gt;priv-&gt;double_click_path[1]);</td></tr>
+<tr class="codeline" data-linenumber="608"><td class="num" id="LN608">608</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="609"><td class="num" id="LN609">609</td><td class="line"> view-&gt;priv-&gt;double_click_path[1] = view-&gt;priv-&gt;double_click_path[0];</td></tr>
+<tr class="codeline" data-linenumber="610"><td class="num" id="LN610">610</td><td class="line"> view-&gt;priv-&gt;double_click_path[0] = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="611"><td class="num" id="LN611">611</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="612"><td class="num" id="LN612">612</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="613"><td class="num" id="LN613">613</td><td class="line"> gtk_tree_selection_unselect_all (selection);</td></tr>
+<tr class="codeline" data-linenumber="614"><td class="num" id="LN614">614</td><td class="line"> <span class='comment'>/* Chain up */</span></td></tr>
+<tr class="codeline" data-linenumber="615"><td class="num" id="LN615">615</td><td class="line"> widget_parent-&gt;button_press_event (widget, event);</td></tr>
+<tr class="codeline" data-linenumber="616"><td class="num" id="LN616">616</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="617"><td class="num" id="LN617">617</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="618"><td class="num" id="LN618">618</td><td class="line"> <span class='comment'>/* We already chained up if nescessary, so just return TRUE */</span></td></tr>
+<tr class="codeline" data-linenumber="619"><td class="num" id="LN619">619</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="620"><td class="num" id="LN620">620</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="621"><td class="num" id="LN621">621</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="622"><td class="num" id="LN622">622</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="623"><td class="num" id="LN623">623</td><td class="line">key_press_event (GtkWidget *widget,</td></tr>
+<tr class="codeline" data-linenumber="624"><td class="num" id="LN624">624</td><td class="line"> GdkEventKey *event)</td></tr>
+<tr class="codeline" data-linenumber="625"><td class="num" id="LN625">625</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="626"><td class="num" id="LN626">626</td><td class="line"> PlumaFileBrowserView *view;</td></tr>
+<tr class="codeline" data-linenumber="627"><td class="num" id="LN627">627</td><td class="line"> guint modifiers;</td></tr>
+<tr class="codeline" data-linenumber="628"><td class="num" id="LN628">628</td><td class="line"> gboolean handled;</td></tr>
+<tr class="codeline" data-linenumber="629"><td class="num" id="LN629">629</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="630"><td class="num" id="LN630">630</td><td class="line"> view = <span class='macro'>PLUMA_FILE_BROWSER_VIEW (widget)<span class='macro_popup'>((((PlumaFileBrowserView*) (void *) ((widget)))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="631"><td class="num" id="LN631">631</td><td class="line"> handled = <span class="mrange"><span class='macro'>FALSE<span class='macro_popup'>(0)</span></span></span>;</td></tr>
+<tr><td class="num"></td><td class="line"><div id="EndPath" class="msg msgEvent" style="margin-left:9ex">Value stored to 'handled' is never read</div></td></tr>
+<tr class="codeline" data-linenumber="632"><td class="num" id="LN632">632</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="633"><td class="num" id="LN633">633</td><td class="line"> modifiers = gtk_accelerator_get_default_mod_mask ();</td></tr>
+<tr class="codeline" data-linenumber="634"><td class="num" id="LN634">634</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="635"><td class="num" id="LN635">635</td><td class="line"> <span class='keyword'>switch</span> (event-&gt;keyval) {</td></tr>
+<tr class="codeline" data-linenumber="636"><td class="num" id="LN636">636</td><td class="line"> <span class='keyword'>case</span> <span class='macro'>GDK_KEY_space<span class='macro_popup'>0x020</span></span>:</td></tr>
+<tr class="codeline" data-linenumber="637"><td class="num" id="LN637">637</td><td class="line"> <span class='keyword'>if</span> (event-&gt;state &amp; GDK_CONTROL_MASK) {</td></tr>
+<tr class="codeline" data-linenumber="638"><td class="num" id="LN638">638</td><td class="line"> handled = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="639"><td class="num" id="LN639">639</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="640"><td class="num" id="LN640">640</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="641"><td class="num" id="LN641">641</td><td class="line"> <span class='keyword'>if</span> (!gtk_widget_has_focus (widget)) {</td></tr>
+<tr class="codeline" data-linenumber="642"><td class="num" id="LN642">642</td><td class="line"> handled = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="643"><td class="num" id="LN643">643</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="644"><td class="num" id="LN644">644</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="645"><td class="num" id="LN645">645</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="646"><td class="num" id="LN646">646</td><td class="line"> activate_selected_items (view);</td></tr>
+<tr class="codeline" data-linenumber="647"><td class="num" id="LN647">647</td><td class="line"> handled = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="648"><td class="num" id="LN648">648</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="649"><td class="num" id="LN649">649</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="650"><td class="num" id="LN650">650</td><td class="line"> <span class='keyword'>case</span> <span class='macro'>GDK_KEY_Return<span class='macro_popup'>0xff0d</span></span>:</td></tr>
+<tr class="codeline" data-linenumber="651"><td class="num" id="LN651">651</td><td class="line"> <span class='keyword'>case</span> <span class='macro'>GDK_KEY_KP_Enter<span class='macro_popup'>0xff8d</span></span>:</td></tr>
+<tr class="codeline" data-linenumber="652"><td class="num" id="LN652">652</td><td class="line"> activate_selected_items (view);</td></tr>
+<tr class="codeline" data-linenumber="653"><td class="num" id="LN653">653</td><td class="line"> handled = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="654"><td class="num" id="LN654">654</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="655"><td class="num" id="LN655">655</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="656"><td class="num" id="LN656">656</td><td class="line"> <span class='keyword'>case</span> <span class='macro'>GDK_KEY_h<span class='macro_popup'>0x068</span></span>:</td></tr>
+<tr class="codeline" data-linenumber="657"><td class="num" id="LN657">657</td><td class="line"> <span class='keyword'>if</span> ((event-&gt;state &amp; modifiers) == GDK_CONTROL_MASK) {</td></tr>
+<tr class="codeline" data-linenumber="658"><td class="num" id="LN658">658</td><td class="line"> toggle_hidden_filter (view);</td></tr>
+<tr class="codeline" data-linenumber="659"><td class="num" id="LN659">659</td><td class="line"> handled = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="660"><td class="num" id="LN660">660</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="661"><td class="num" id="LN661">661</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="662"><td class="num" id="LN662">662</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="663"><td class="num" id="LN663">663</td><td class="line"> <span class='keyword'>default</span>:</td></tr>
+<tr class="codeline" data-linenumber="664"><td class="num" id="LN664">664</td><td class="line"> handled = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="665"><td class="num" id="LN665">665</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="666"><td class="num" id="LN666">666</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="667"><td class="num" id="LN667">667</td><td class="line"> <span class='comment'>/* Chain up */</span></td></tr>
+<tr class="codeline" data-linenumber="668"><td class="num" id="LN668">668</td><td class="line"> <span class='keyword'>if</span> (!handled)</td></tr>
+<tr class="codeline" data-linenumber="669"><td class="num" id="LN669">669</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>GTK_WIDGET_CLASS (pluma_file_browser_view_parent_class)<span class='macro_popup'>((((GtkWidgetClass*) (void *) ((pluma_file_browser_view_parent_class<br>)))))</span></span>-&gt;key_press_event (widget, event);</td></tr>
+<tr class="codeline" data-linenumber="670"><td class="num" id="LN670">670</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="671"><td class="num" id="LN671">671</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="672"><td class="num" id="LN672">672</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="673"><td class="num" id="LN673">673</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="674"><td class="num" id="LN674">674</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="675"><td class="num" id="LN675">675</td><td class="line">fill_expand_state (PlumaFileBrowserView * view, GtkTreeIter * iter)</td></tr>
+<tr class="codeline" data-linenumber="676"><td class="num" id="LN676">676</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="677"><td class="num" id="LN677">677</td><td class="line"> GtkTreePath * path;</td></tr>
+<tr class="codeline" data-linenumber="678"><td class="num" id="LN678">678</td><td class="line"> GtkTreeIter child;</td></tr>
+<tr class="codeline" data-linenumber="679"><td class="num" id="LN679">679</td><td class="line"> gchar * uri;</td></tr>
+<tr class="codeline" data-linenumber="680"><td class="num" id="LN680">680</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="681"><td class="num" id="LN681">681</td><td class="line"> <span class='keyword'>if</span> (!gtk_tree_model_iter_has_child (view-&gt;priv-&gt;model, iter))</td></tr>
+<tr class="codeline" data-linenumber="682"><td class="num" id="LN682">682</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="683"><td class="num" id="LN683">683</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="684"><td class="num" id="LN684">684</td><td class="line"> path = gtk_tree_model_get_path (view-&gt;priv-&gt;model, iter);</td></tr>
+<tr class="codeline" data-linenumber="685"><td class="num" id="LN685">685</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="686"><td class="num" id="LN686">686</td><td class="line"> <span class='keyword'>if</span> (gtk_tree_view_row_expanded (<span class='macro'>GTK_TREE_VIEW (view)<span class='macro_popup'>((((GtkTreeView*) (void *) ((view)))))</span></span>, path))</td></tr>
+<tr class="codeline" data-linenumber="687"><td class="num" id="LN687">687</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="688"><td class="num" id="LN688">688</td><td class="line"> gtk_tree_model_get (view-&gt;priv-&gt;model,</td></tr>
+<tr class="codeline" data-linenumber="689"><td class="num" id="LN689">689</td><td class="line"> iter,</td></tr>
+<tr class="codeline" data-linenumber="690"><td class="num" id="LN690">690</td><td class="line"> PLUMA_FILE_BROWSER_STORE_COLUMN_URI,</td></tr>
+<tr class="codeline" data-linenumber="691"><td class="num" id="LN691">691</td><td class="line"> &amp;uri,</td></tr>
+<tr class="codeline" data-linenumber="692"><td class="num" id="LN692">692</td><td class="line"> -1);</td></tr>
+<tr class="codeline" data-linenumber="693"><td class="num" id="LN693">693</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="694"><td class="num" id="LN694">694</td><td class="line"> add_expand_state (view, uri);</td></tr>
+<tr class="codeline" data-linenumber="695"><td class="num" id="LN695">695</td><td class="line"> g_free (uri);</td></tr>
+<tr class="codeline" data-linenumber="696"><td class="num" id="LN696">696</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="697"><td class="num" id="LN697">697</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="698"><td class="num" id="LN698">698</td><td class="line"> <span class='keyword'>if</span> (gtk_tree_model_iter_children (view-&gt;priv-&gt;model, &amp;child, iter))</td></tr>
+<tr class="codeline" data-linenumber="699"><td class="num" id="LN699">699</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="700"><td class="num" id="LN700">700</td><td class="line"> <span class='keyword'>do</span> {</td></tr>
+<tr class="codeline" data-linenumber="701"><td class="num" id="LN701">701</td><td class="line"> fill_expand_state (view, &amp;child);</td></tr>
+<tr class="codeline" data-linenumber="702"><td class="num" id="LN702">702</td><td class="line"> } <span class='keyword'>while</span> (gtk_tree_model_iter_next (view-&gt;priv-&gt;model, &amp;child));</td></tr>
+<tr class="codeline" data-linenumber="703"><td class="num" id="LN703">703</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="704"><td class="num" id="LN704">704</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="705"><td class="num" id="LN705">705</td><td class="line"> gtk_tree_path_free (path);</td></tr>
+<tr class="codeline" data-linenumber="706"><td class="num" id="LN706">706</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="707"><td class="num" id="LN707">707</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="708"><td class="num" id="LN708">708</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="709"><td class="num" id="LN709">709</td><td class="line">uninstall_restore_signals (PlumaFileBrowserView * tree_view,</td></tr>
+<tr class="codeline" data-linenumber="710"><td class="num" id="LN710">710</td><td class="line"> GtkTreeModel * model)</td></tr>
+<tr class="codeline" data-linenumber="711"><td class="num" id="LN711">711</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="712"><td class="num" id="LN712">712</td><td class="line"> <span class='macro'>g_signal_handlers_disconnect_by_func (model,<span class='macro_popup'>g_signal_handlers_disconnect_matched ((model), (GSignalMatchType<br>) (G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA), 0, 0, ((void*)<br>0), (on_begin_refresh), (tree_view))</span></span></td></tr>
+<tr class="codeline" data-linenumber="713"><td class="num" id="LN713">713</td><td class="line"> <span class='macro'>on_begin_refresh,<span class='macro_popup'>g_signal_handlers_disconnect_matched ((model), (GSignalMatchType<br>) (G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA), 0, 0, ((void*)<br>0), (on_begin_refresh), (tree_view))</span></span></td></tr>
+<tr class="codeline" data-linenumber="714"><td class="num" id="LN714">714</td><td class="line"> <span class='macro'>tree_view)<span class='macro_popup'>g_signal_handlers_disconnect_matched ((model), (GSignalMatchType<br>) (G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA), 0, 0, ((void*)<br>0), (on_begin_refresh), (tree_view))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="715"><td class="num" id="LN715">715</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="716"><td class="num" id="LN716">716</td><td class="line"> <span class='macro'>g_signal_handlers_disconnect_by_func (model,<span class='macro_popup'>g_signal_handlers_disconnect_matched ((model), (GSignalMatchType<br>) (G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA), 0, 0, ((void*)<br>0), (on_end_refresh), (tree_view))</span></span></td></tr>
+<tr class="codeline" data-linenumber="717"><td class="num" id="LN717">717</td><td class="line"> <span class='macro'>on_end_refresh,<span class='macro_popup'>g_signal_handlers_disconnect_matched ((model), (GSignalMatchType<br>) (G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA), 0, 0, ((void*)<br>0), (on_end_refresh), (tree_view))</span></span></td></tr>
+<tr class="codeline" data-linenumber="718"><td class="num" id="LN718">718</td><td class="line"> <span class='macro'>tree_view)<span class='macro_popup'>g_signal_handlers_disconnect_matched ((model), (GSignalMatchType<br>) (G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA), 0, 0, ((void*)<br>0), (on_end_refresh), (tree_view))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="719"><td class="num" id="LN719">719</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="720"><td class="num" id="LN720">720</td><td class="line"> <span class='macro'>g_signal_handlers_disconnect_by_func (model,<span class='macro_popup'>g_signal_handlers_disconnect_matched ((model), (GSignalMatchType<br>) (G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA), 0, 0, ((void*)<br>0), (on_unload), (tree_view))</span></span></td></tr>
+<tr class="codeline" data-linenumber="721"><td class="num" id="LN721">721</td><td class="line"> <span class='macro'>on_unload,<span class='macro_popup'>g_signal_handlers_disconnect_matched ((model), (GSignalMatchType<br>) (G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA), 0, 0, ((void*)<br>0), (on_unload), (tree_view))</span></span></td></tr>
+<tr class="codeline" data-linenumber="722"><td class="num" id="LN722">722</td><td class="line"> <span class='macro'>tree_view)<span class='macro_popup'>g_signal_handlers_disconnect_matched ((model), (GSignalMatchType<br>) (G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA), 0, 0, ((void*)<br>0), (on_unload), (tree_view))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="723"><td class="num" id="LN723">723</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="724"><td class="num" id="LN724">724</td><td class="line"> <span class='macro'>g_signal_handlers_disconnect_by_func (model,<span class='macro_popup'>g_signal_handlers_disconnect_matched ((model), (GSignalMatchType<br>) (G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA), 0, 0, ((void*)<br>0), (on_row_inserted), (tree_view))</span></span></td></tr>
+<tr class="codeline" data-linenumber="725"><td class="num" id="LN725">725</td><td class="line"> <span class='macro'>on_row_inserted,<span class='macro_popup'>g_signal_handlers_disconnect_matched ((model), (GSignalMatchType<br>) (G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA), 0, 0, ((void*)<br>0), (on_row_inserted), (tree_view))</span></span></td></tr>
+<tr class="codeline" data-linenumber="726"><td class="num" id="LN726">726</td><td class="line"> <span class='macro'>tree_view)<span class='macro_popup'>g_signal_handlers_disconnect_matched ((model), (GSignalMatchType<br>) (G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA), 0, 0, ((void*)<br>0), (on_row_inserted), (tree_view))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="727"><td class="num" id="LN727">727</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="728"><td class="num" id="LN728">728</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="729"><td class="num" id="LN729">729</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="730"><td class="num" id="LN730">730</td><td class="line">install_restore_signals (PlumaFileBrowserView * tree_view,</td></tr>
+<tr class="codeline" data-linenumber="731"><td class="num" id="LN731">731</td><td class="line"> GtkTreeModel * model)</td></tr>
+<tr class="codeline" data-linenumber="732"><td class="num" id="LN732">732</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="733"><td class="num" id="LN733">733</td><td class="line"> <span class='macro'>g_signal_connect (model,<span class='macro_popup'>g_signal_connect_data ((model), ("begin-refresh"), (((GCallback<br>) (on_begin_refresh))), (tree_view), ((void*)0), (GConnectFlags<br>) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="734"><td class="num" id="LN734">734</td><td class="line"> <span class='string_literal'><span class='macro'>"begin-refresh"</span>,<span class='macro_popup'>g_signal_connect_data ((model), ("begin-refresh"), (((GCallback<br>) (on_begin_refresh))), (tree_view), ((void*)0), (GConnectFlags<br>) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="735"><td class="num" id="LN735">735</td><td class="line"> <span class='macro'>G_CALLBACK (on_begin_refresh),<span class='macro_popup'>g_signal_connect_data ((model), ("begin-refresh"), (((GCallback<br>) (on_begin_refresh))), (tree_view), ((void*)0), (GConnectFlags<br>) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="736"><td class="num" id="LN736">736</td><td class="line"> <span class='macro'>tree_view)<span class='macro_popup'>g_signal_connect_data ((model), ("begin-refresh"), (((GCallback<br>) (on_begin_refresh))), (tree_view), ((void*)0), (GConnectFlags<br>) 0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="737"><td class="num" id="LN737">737</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="738"><td class="num" id="LN738">738</td><td class="line"> <span class='macro'>g_signal_connect (model,<span class='macro_popup'>g_signal_connect_data ((model), ("end-refresh"), (((GCallback<br>) (on_end_refresh))), (tree_view), ((void*)0), (GConnectFlags<br>) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="739"><td class="num" id="LN739">739</td><td class="line"> <span class='string_literal'><span class='macro'>"end-refresh"</span>,<span class='macro_popup'>g_signal_connect_data ((model), ("end-refresh"), (((GCallback<br>) (on_end_refresh))), (tree_view), ((void*)0), (GConnectFlags<br>) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="740"><td class="num" id="LN740">740</td><td class="line"> <span class='macro'>G_CALLBACK (on_end_refresh),<span class='macro_popup'>g_signal_connect_data ((model), ("end-refresh"), (((GCallback<br>) (on_end_refresh))), (tree_view), ((void*)0), (GConnectFlags<br>) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="741"><td class="num" id="LN741">741</td><td class="line"> <span class='macro'>tree_view)<span class='macro_popup'>g_signal_connect_data ((model), ("end-refresh"), (((GCallback<br>) (on_end_refresh))), (tree_view), ((void*)0), (GConnectFlags<br>) 0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="742"><td class="num" id="LN742">742</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="743"><td class="num" id="LN743">743</td><td class="line"> <span class='macro'>g_signal_connect (model,<span class='macro_popup'>g_signal_connect_data ((model), ("unload"), (((GCallback) (on_unload<br>))), (tree_view), ((void*)0), (GConnectFlags) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="744"><td class="num" id="LN744">744</td><td class="line"> <span class='string_literal'><span class='macro'>"unload"</span>,<span class='macro_popup'>g_signal_connect_data ((model), ("unload"), (((GCallback) (on_unload<br>))), (tree_view), ((void*)0), (GConnectFlags) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="745"><td class="num" id="LN745">745</td><td class="line"> <span class='macro'>G_CALLBACK (on_unload),<span class='macro_popup'>g_signal_connect_data ((model), ("unload"), (((GCallback) (on_unload<br>))), (tree_view), ((void*)0), (GConnectFlags) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="746"><td class="num" id="LN746">746</td><td class="line"> <span class='macro'>tree_view)<span class='macro_popup'>g_signal_connect_data ((model), ("unload"), (((GCallback) (on_unload<br>))), (tree_view), ((void*)0), (GConnectFlags) 0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="747"><td class="num" id="LN747">747</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="748"><td class="num" id="LN748">748</td><td class="line"> <span class='macro'>g_signal_connect_after (model,<span class='macro_popup'>g_signal_connect_data ((model), ("row-inserted"), (((GCallback<br>) (on_row_inserted))), (tree_view), ((void*)0), G_CONNECT_AFTER<br>)</span></span></td></tr>
+<tr class="codeline" data-linenumber="749"><td class="num" id="LN749">749</td><td class="line"> <span class='string_literal'><span class='macro'>"row-inserted"</span>,<span class='macro_popup'>g_signal_connect_data ((model), ("row-inserted"), (((GCallback<br>) (on_row_inserted))), (tree_view), ((void*)0), G_CONNECT_AFTER<br>)</span></span></td></tr>
+<tr class="codeline" data-linenumber="750"><td class="num" id="LN750">750</td><td class="line"> <span class='macro'>G_CALLBACK (on_row_inserted),<span class='macro_popup'>g_signal_connect_data ((model), ("row-inserted"), (((GCallback<br>) (on_row_inserted))), (tree_view), ((void*)0), G_CONNECT_AFTER<br>)</span></span></td></tr>
+<tr class="codeline" data-linenumber="751"><td class="num" id="LN751">751</td><td class="line"> <span class='macro'>tree_view)<span class='macro_popup'>g_signal_connect_data ((model), ("row-inserted"), (((GCallback<br>) (on_row_inserted))), (tree_view), ((void*)0), G_CONNECT_AFTER<br>)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="752"><td class="num" id="LN752">752</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="753"><td class="num" id="LN753">753</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="754"><td class="num" id="LN754">754</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="755"><td class="num" id="LN755">755</td><td class="line">set_restore_expand_state (PlumaFileBrowserView * view,</td></tr>
+<tr class="codeline" data-linenumber="756"><td class="num" id="LN756">756</td><td class="line"> gboolean state)</td></tr>
+<tr class="codeline" data-linenumber="757"><td class="num" id="LN757">757</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="758"><td class="num" id="LN758">758</td><td class="line"> <span class='keyword'>if</span> (state == view-&gt;priv-&gt;restore_expand_state)</td></tr>
+<tr class="codeline" data-linenumber="759"><td class="num" id="LN759">759</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="760"><td class="num" id="LN760">760</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="761"><td class="num" id="LN761">761</td><td class="line"> <span class='keyword'>if</span> (view-&gt;priv-&gt;expand_state)</td></tr>
+<tr class="codeline" data-linenumber="762"><td class="num" id="LN762">762</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="763"><td class="num" id="LN763">763</td><td class="line"> g_hash_table_destroy (view-&gt;priv-&gt;expand_state);</td></tr>
+<tr class="codeline" data-linenumber="764"><td class="num" id="LN764">764</td><td class="line"> view-&gt;priv-&gt;expand_state = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="765"><td class="num" id="LN765">765</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="766"><td class="num" id="LN766">766</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="767"><td class="num" id="LN767">767</td><td class="line"> <span class='keyword'>if</span> (state)</td></tr>
+<tr class="codeline" data-linenumber="768"><td class="num" id="LN768">768</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="769"><td class="num" id="LN769">769</td><td class="line"> view-&gt;priv-&gt;expand_state = g_hash_table_new_full (g_file_hash,</td></tr>
+<tr class="codeline" data-linenumber="770"><td class="num" id="LN770">770</td><td class="line"> (GEqualFunc)g_file_equal,</td></tr>
+<tr class="codeline" data-linenumber="771"><td class="num" id="LN771">771</td><td class="line"> g_object_unref,</td></tr>
+<tr class="codeline" data-linenumber="772"><td class="num" id="LN772">772</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="773"><td class="num" id="LN773">773</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="774"><td class="num" id="LN774">774</td><td class="line"> <span class='keyword'>if</span> (view-&gt;priv-&gt;model &amp;&amp; <span class='macro'>PLUMA_IS_FILE_BROWSER_STORE (view-&gt;priv-&gt;model)<span class='macro_popup'>(((__extension__ ({ GTypeInstance *__inst = (GTypeInstance*) (<br>(view-&gt;priv-&gt;model)); GType __t = ((pluma_file_browser_store_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="775"><td class="num" id="LN775">775</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="776"><td class="num" id="LN776">776</td><td class="line"> fill_expand_state (view, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="777"><td class="num" id="LN777">777</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="778"><td class="num" id="LN778">778</td><td class="line"> install_restore_signals (view, view-&gt;priv-&gt;model);</td></tr>
+<tr class="codeline" data-linenumber="779"><td class="num" id="LN779">779</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="780"><td class="num" id="LN780">780</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="781"><td class="num" id="LN781">781</td><td class="line"> <span class='keyword'>else</span> <span class='keyword'>if</span> (view-&gt;priv-&gt;model &amp;&amp; <span class='macro'>PLUMA_IS_FILE_BROWSER_STORE (view-&gt;priv-&gt;model)<span class='macro_popup'>(((__extension__ ({ GTypeInstance *__inst = (GTypeInstance*) (<br>(view-&gt;priv-&gt;model)); GType __t = ((pluma_file_browser_store_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="782"><td class="num" id="LN782">782</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="783"><td class="num" id="LN783">783</td><td class="line"> uninstall_restore_signals (view, view-&gt;priv-&gt;model);</td></tr>
+<tr class="codeline" data-linenumber="784"><td class="num" id="LN784">784</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="785"><td class="num" id="LN785">785</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="786"><td class="num" id="LN786">786</td><td class="line"> view-&gt;priv-&gt;restore_expand_state = state;</td></tr>
+<tr class="codeline" data-linenumber="787"><td class="num" id="LN787">787</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="788"><td class="num" id="LN788">788</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="789"><td class="num" id="LN789">789</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="790"><td class="num" id="LN790">790</td><td class="line">get_property (GObject *object,</td></tr>
+<tr class="codeline" data-linenumber="791"><td class="num" id="LN791">791</td><td class="line"> guint prop_id,</td></tr>
+<tr class="codeline" data-linenumber="792"><td class="num" id="LN792">792</td><td class="line"> GValue *value,</td></tr>
+<tr class="codeline" data-linenumber="793"><td class="num" id="LN793">793</td><td class="line"> GParamSpec *pspec)</td></tr>
+<tr class="codeline" data-linenumber="794"><td class="num" id="LN794">794</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="795"><td class="num" id="LN795">795</td><td class="line"> PlumaFileBrowserView *obj = <span class='macro'>PLUMA_FILE_BROWSER_VIEW (object)<span class='macro_popup'>((((PlumaFileBrowserView*) (void *) ((object)))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="796"><td class="num" id="LN796">796</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="797"><td class="num" id="LN797">797</td><td class="line"> <span class='keyword'>switch</span> (prop_id)</td></tr>
+<tr class="codeline" data-linenumber="798"><td class="num" id="LN798">798</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="799"><td class="num" id="LN799">799</td><td class="line"> <span class='keyword'>case</span> PROP_CLICK_POLICY:</td></tr>
+<tr class="codeline" data-linenumber="800"><td class="num" id="LN800">800</td><td class="line"> g_value_set_enum (value, obj-&gt;priv-&gt;click_policy);</td></tr>
+<tr class="codeline" data-linenumber="801"><td class="num" id="LN801">801</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="802"><td class="num" id="LN802">802</td><td class="line"> <span class='keyword'>case</span> PROP_RESTORE_EXPAND_STATE:</td></tr>
+<tr class="codeline" data-linenumber="803"><td class="num" id="LN803">803</td><td class="line"> g_value_set_boolean (value, obj-&gt;priv-&gt;restore_expand_state);</td></tr>
+<tr class="codeline" data-linenumber="804"><td class="num" id="LN804">804</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="805"><td class="num" id="LN805">805</td><td class="line"> <span class='keyword'>default</span>:</td></tr>
+<tr class="codeline" data-linenumber="806"><td class="num" id="LN806">806</td><td class="line"> <span class='macro'>G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec)<span class='macro_popup'>do { GObject *_glib__object = (GObject*) ((object)); GParamSpec<br> *_glib__pspec = (GParamSpec*) ((pspec)); guint _glib__property_id<br> = ((prop_id)); g_warning ("%s:%d: invalid %s id %u for \"%s\" of type '%s' in '%s'"<br>, "pluma-file-browser-view.c", 806, ("property"), _glib__property_id<br>, _glib__pspec-&gt;name, g_type_name ((((((GTypeClass*) (((GTypeInstance<br>*) (_glib__pspec))-&gt;g_class))-&gt;g_type)))), (g_type_name<br> ((((((GTypeClass*) (((GTypeInstance*) (_glib__object))-&gt;g_class<br>))-&gt;g_type)))))); } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="807"><td class="num" id="LN807">807</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="808"><td class="num" id="LN808">808</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="809"><td class="num" id="LN809">809</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="810"><td class="num" id="LN810">810</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="811"><td class="num" id="LN811">811</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="812"><td class="num" id="LN812">812</td><td class="line">set_property (GObject *object,</td></tr>
+<tr class="codeline" data-linenumber="813"><td class="num" id="LN813">813</td><td class="line"> guint prop_id,</td></tr>
+<tr class="codeline" data-linenumber="814"><td class="num" id="LN814">814</td><td class="line"> <span class='keyword'>const</span> GValue *value,</td></tr>
+<tr class="codeline" data-linenumber="815"><td class="num" id="LN815">815</td><td class="line"> GParamSpec *pspec)</td></tr>
+<tr class="codeline" data-linenumber="816"><td class="num" id="LN816">816</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="817"><td class="num" id="LN817">817</td><td class="line"> PlumaFileBrowserView *obj = <span class='macro'>PLUMA_FILE_BROWSER_VIEW (object)<span class='macro_popup'>((((PlumaFileBrowserView*) (void *) ((object)))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="818"><td class="num" id="LN818">818</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="819"><td class="num" id="LN819">819</td><td class="line"> <span class='keyword'>switch</span> (prop_id)</td></tr>
+<tr class="codeline" data-linenumber="820"><td class="num" id="LN820">820</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="821"><td class="num" id="LN821">821</td><td class="line"> <span class='keyword'>case</span> PROP_CLICK_POLICY:</td></tr>
+<tr class="codeline" data-linenumber="822"><td class="num" id="LN822">822</td><td class="line"> set_click_policy_property (obj, g_value_get_enum (value));</td></tr>
+<tr class="codeline" data-linenumber="823"><td class="num" id="LN823">823</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="824"><td class="num" id="LN824">824</td><td class="line"> <span class='keyword'>case</span> PROP_RESTORE_EXPAND_STATE:</td></tr>
+<tr class="codeline" data-linenumber="825"><td class="num" id="LN825">825</td><td class="line"> set_restore_expand_state (obj, g_value_get_boolean (value));</td></tr>
+<tr class="codeline" data-linenumber="826"><td class="num" id="LN826">826</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="827"><td class="num" id="LN827">827</td><td class="line"> <span class='keyword'>default</span>:</td></tr>
+<tr class="codeline" data-linenumber="828"><td class="num" id="LN828">828</td><td class="line"> <span class='macro'>G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec)<span class='macro_popup'>do { GObject *_glib__object = (GObject*) ((object)); GParamSpec<br> *_glib__pspec = (GParamSpec*) ((pspec)); guint _glib__property_id<br> = ((prop_id)); g_warning ("%s:%d: invalid %s id %u for \"%s\" of type '%s' in '%s'"<br>, "pluma-file-browser-view.c", 828, ("property"), _glib__property_id<br>, _glib__pspec-&gt;name, g_type_name ((((((GTypeClass*) (((GTypeInstance<br>*) (_glib__pspec))-&gt;g_class))-&gt;g_type)))), (g_type_name<br> ((((((GTypeClass*) (((GTypeInstance*) (_glib__object))-&gt;g_class<br>))-&gt;g_type)))))); } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="829"><td class="num" id="LN829">829</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="830"><td class="num" id="LN830">830</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="831"><td class="num" id="LN831">831</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="832"><td class="num" id="LN832">832</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="833"><td class="num" id="LN833">833</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="834"><td class="num" id="LN834">834</td><td class="line">pluma_file_browser_view_class_init (PlumaFileBrowserViewClass * klass)</td></tr>
+<tr class="codeline" data-linenumber="835"><td class="num" id="LN835">835</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="836"><td class="num" id="LN836">836</td><td class="line"> GObjectClass *object_class = <span class='macro'>G_OBJECT_CLASS (klass)<span class='macro_popup'>((((GObjectClass*) (void *) ((klass)))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="837"><td class="num" id="LN837">837</td><td class="line"> GtkTreeViewClass *tree_view_class = <span class='macro'>GTK_TREE_VIEW_CLASS (klass)<span class='macro_popup'>((((GtkTreeViewClass*) (void *) ((klass)))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="838"><td class="num" id="LN838">838</td><td class="line"> GtkWidgetClass *widget_class = <span class='macro'>GTK_WIDGET_CLASS (klass)<span class='macro_popup'>((((GtkWidgetClass*) (void *) ((klass)))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="839"><td class="num" id="LN839">839</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="840"><td class="num" id="LN840">840</td><td class="line"> object_class-&gt;finalize = pluma_file_browser_view_finalize;</td></tr>
+<tr class="codeline" data-linenumber="841"><td class="num" id="LN841">841</td><td class="line"> object_class-&gt;get_property = get_property;</td></tr>
+<tr class="codeline" data-linenumber="842"><td class="num" id="LN842">842</td><td class="line"> object_class-&gt;set_property = set_property;</td></tr>
+<tr class="codeline" data-linenumber="843"><td class="num" id="LN843">843</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="844"><td class="num" id="LN844">844</td><td class="line"> <span class='comment'>/* Event handlers */</span></td></tr>
+<tr class="codeline" data-linenumber="845"><td class="num" id="LN845">845</td><td class="line"> widget_class-&gt;motion_notify_event = motion_notify_event;</td></tr>
+<tr class="codeline" data-linenumber="846"><td class="num" id="LN846">846</td><td class="line"> widget_class-&gt;enter_notify_event = enter_notify_event;</td></tr>
+<tr class="codeline" data-linenumber="847"><td class="num" id="LN847">847</td><td class="line"> widget_class-&gt;leave_notify_event = leave_notify_event;</td></tr>
+<tr class="codeline" data-linenumber="848"><td class="num" id="LN848">848</td><td class="line"> widget_class-&gt;button_press_event = button_press_event;</td></tr>
+<tr class="codeline" data-linenumber="849"><td class="num" id="LN849">849</td><td class="line"> widget_class-&gt;button_release_event = button_release_event;</td></tr>
+<tr class="codeline" data-linenumber="850"><td class="num" id="LN850">850</td><td class="line"> widget_class-&gt;drag_begin = drag_begin;</td></tr>
+<tr class="codeline" data-linenumber="851"><td class="num" id="LN851">851</td><td class="line"> widget_class-&gt;key_press_event = key_press_event;</td></tr>
+<tr class="codeline" data-linenumber="852"><td class="num" id="LN852">852</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="853"><td class="num" id="LN853">853</td><td class="line"> <span class='comment'>/* Tree view handlers */</span></td></tr>
+<tr class="codeline" data-linenumber="854"><td class="num" id="LN854">854</td><td class="line"> tree_view_class-&gt;row_expanded = row_expanded;</td></tr>
+<tr class="codeline" data-linenumber="855"><td class="num" id="LN855">855</td><td class="line"> tree_view_class-&gt;row_collapsed = row_collapsed;</td></tr>
+<tr class="codeline" data-linenumber="856"><td class="num" id="LN856">856</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="857"><td class="num" id="LN857">857</td><td class="line"> <span class='comment'>/* Default handlers */</span></td></tr>
+<tr class="codeline" data-linenumber="858"><td class="num" id="LN858">858</td><td class="line"> klass-&gt;directory_activated = directory_activated;</td></tr>
+<tr class="codeline" data-linenumber="859"><td class="num" id="LN859">859</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="860"><td class="num" id="LN860">860</td><td class="line"> g_object_class_install_property (object_class, PROP_CLICK_POLICY,</td></tr>
+<tr class="codeline" data-linenumber="861"><td class="num" id="LN861">861</td><td class="line"> g_param_spec_enum (<span class='string_literal'>"click-policy"</span>,</td></tr>
+<tr class="codeline" data-linenumber="862"><td class="num" id="LN862">862</td><td class="line"> <span class='string_literal'>"Click Policy"</span>,</td></tr>
+<tr class="codeline" data-linenumber="863"><td class="num" id="LN863">863</td><td class="line"> <span class='string_literal'>"The click policy"</span>,</td></tr>
+<tr class="codeline" data-linenumber="864"><td class="num" id="LN864">864</td><td class="line"> <span class='macro'>PLUMA_TYPE_FILE_BROWSER_VIEW_CLICK_POLICY<span class='macro_popup'>(pluma_file_browser_view_click_policy_get_type())</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="865"><td class="num" id="LN865">865</td><td class="line"> PLUMA_FILE_BROWSER_VIEW_CLICK_POLICY_DOUBLE,</td></tr>
+<tr class="codeline" data-linenumber="866"><td class="num" id="LN866">866</td><td class="line"> G_PARAM_READWRITE | G_PARAM_CONSTRUCT));</td></tr>
+<tr class="codeline" data-linenumber="867"><td class="num" id="LN867">867</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="868"><td class="num" id="LN868">868</td><td class="line"> g_object_class_install_property (object_class, PROP_RESTORE_EXPAND_STATE,</td></tr>
+<tr class="codeline" data-linenumber="869"><td class="num" id="LN869">869</td><td class="line"> g_param_spec_boolean (<span class='string_literal'>"restore-expand-state"</span>,</td></tr>
+<tr class="codeline" data-linenumber="870"><td class="num" id="LN870">870</td><td class="line"> <span class='string_literal'>"Restore Expand State"</span>,</td></tr>
+<tr class="codeline" data-linenumber="871"><td class="num" id="LN871">871</td><td class="line"> <span class='string_literal'>"Restore expanded state of loaded directories"</span>,</td></tr>
+<tr class="codeline" data-linenumber="872"><td class="num" id="LN872">872</td><td class="line"> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="873"><td class="num" id="LN873">873</td><td class="line"> G_PARAM_READWRITE | G_PARAM_CONSTRUCT));</td></tr>
+<tr class="codeline" data-linenumber="874"><td class="num" id="LN874">874</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="875"><td class="num" id="LN875">875</td><td class="line"> signals[ERROR] =</td></tr>
+<tr class="codeline" data-linenumber="876"><td class="num" id="LN876">876</td><td class="line"> g_signal_new (<span class='string_literal'>"error"</span>,</td></tr>
+<tr class="codeline" data-linenumber="877"><td class="num" id="LN877">877</td><td class="line"> <span class='macro'>G_OBJECT_CLASS_TYPE (object_class)<span class='macro_popup'>((((GTypeClass*) (object_class))-&gt;g_type))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="878"><td class="num" id="LN878">878</td><td class="line"> G_SIGNAL_RUN_LAST,</td></tr>
+<tr class="codeline" data-linenumber="879"><td class="num" id="LN879">879</td><td class="line"> <span class='macro'>G_STRUCT_OFFSET (PlumaFileBrowserViewClass, error)<span class='macro_popup'>((glong) __builtin_offsetof(PlumaFileBrowserViewClass, error)<br>)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="880"><td class="num" id="LN880">880</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="881"><td class="num" id="LN881">881</td><td class="line"> <span class='macro'>G_TYPE_NONE<span class='macro_popup'>((GType) ((1) &lt;&lt; (2)))</span></span>, 2, <span class='macro'>G_TYPE_UINT<span class='macro_popup'>((GType) ((7) &lt;&lt; (2)))</span></span>, <span class='macro'>G_TYPE_STRING<span class='macro_popup'>((GType) ((16) &lt;&lt; (2)))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="882"><td class="num" id="LN882">882</td><td class="line"> signals[FILE_ACTIVATED] =</td></tr>
+<tr class="codeline" data-linenumber="883"><td class="num" id="LN883">883</td><td class="line"> g_signal_new (<span class='string_literal'>"file-activated"</span>,</td></tr>
+<tr class="codeline" data-linenumber="884"><td class="num" id="LN884">884</td><td class="line"> <span class='macro'>G_OBJECT_CLASS_TYPE (object_class)<span class='macro_popup'>((((GTypeClass*) (object_class))-&gt;g_type))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="885"><td class="num" id="LN885">885</td><td class="line"> G_SIGNAL_RUN_LAST,</td></tr>
+<tr class="codeline" data-linenumber="886"><td class="num" id="LN886">886</td><td class="line"> <span class='macro'>G_STRUCT_OFFSET (PlumaFileBrowserViewClass, file_activated)<span class='macro_popup'>((glong) __builtin_offsetof(PlumaFileBrowserViewClass, file_activated<br>))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="887"><td class="num" id="LN887">887</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="888"><td class="num" id="LN888">888</td><td class="line"> <span class='macro'>G_TYPE_NONE<span class='macro_popup'>((GType) ((1) &lt;&lt; (2)))</span></span>, 1, <span class='macro'>GTK_TYPE_TREE_ITER<span class='macro_popup'>(gtk_tree_iter_get_type ())</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="889"><td class="num" id="LN889">889</td><td class="line"> signals[DIRECTORY_ACTIVATED] =</td></tr>
+<tr class="codeline" data-linenumber="890"><td class="num" id="LN890">890</td><td class="line"> g_signal_new (<span class='string_literal'>"directory-activated"</span>,</td></tr>
+<tr class="codeline" data-linenumber="891"><td class="num" id="LN891">891</td><td class="line"> <span class='macro'>G_OBJECT_CLASS_TYPE (object_class)<span class='macro_popup'>((((GTypeClass*) (object_class))-&gt;g_type))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="892"><td class="num" id="LN892">892</td><td class="line"> G_SIGNAL_RUN_LAST,</td></tr>
+<tr class="codeline" data-linenumber="893"><td class="num" id="LN893">893</td><td class="line"> <span class='macro'>G_STRUCT_OFFSET (PlumaFileBrowserViewClass, directory_activated)<span class='macro_popup'>((glong) __builtin_offsetof(PlumaFileBrowserViewClass, directory_activated<br>))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="894"><td class="num" id="LN894">894</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="895"><td class="num" id="LN895">895</td><td class="line"> <span class='macro'>G_TYPE_NONE<span class='macro_popup'>((GType) ((1) &lt;&lt; (2)))</span></span>, 1, <span class='macro'>GTK_TYPE_TREE_ITER<span class='macro_popup'>(gtk_tree_iter_get_type ())</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="896"><td class="num" id="LN896">896</td><td class="line"> signals[BOOKMARK_ACTIVATED] =</td></tr>
+<tr class="codeline" data-linenumber="897"><td class="num" id="LN897">897</td><td class="line"> g_signal_new (<span class='string_literal'>"bookmark-activated"</span>,</td></tr>
+<tr class="codeline" data-linenumber="898"><td class="num" id="LN898">898</td><td class="line"> <span class='macro'>G_OBJECT_CLASS_TYPE (object_class)<span class='macro_popup'>((((GTypeClass*) (object_class))-&gt;g_type))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="899"><td class="num" id="LN899">899</td><td class="line"> G_SIGNAL_RUN_LAST,</td></tr>
+<tr class="codeline" data-linenumber="900"><td class="num" id="LN900">900</td><td class="line"> <span class='macro'>G_STRUCT_OFFSET (PlumaFileBrowserViewClass, bookmark_activated)<span class='macro_popup'>((glong) __builtin_offsetof(PlumaFileBrowserViewClass, bookmark_activated<br>))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="901"><td class="num" id="LN901">901</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="902"><td class="num" id="LN902">902</td><td class="line"> <span class='macro'>G_TYPE_NONE<span class='macro_popup'>((GType) ((1) &lt;&lt; (2)))</span></span>, 1, <span class='macro'>GTK_TYPE_TREE_ITER<span class='macro_popup'>(gtk_tree_iter_get_type ())</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="903"><td class="num" id="LN903">903</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="904"><td class="num" id="LN904">904</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="905"><td class="num" id="LN905">905</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="906"><td class="num" id="LN906">906</td><td class="line">pluma_file_browser_view_class_finalize (PlumaFileBrowserViewClass *klass)</td></tr>
+<tr class="codeline" data-linenumber="907"><td class="num" id="LN907">907</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="908"><td class="num" id="LN908">908</td><td class="line"> <span class='comment'>/* dummy function - used by G_DEFINE_DYNAMIC_TYPE_EXTENDED */</span></td></tr>
+<tr class="codeline" data-linenumber="909"><td class="num" id="LN909">909</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="910"><td class="num" id="LN910">910</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="911"><td class="num" id="LN911">911</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="912"><td class="num" id="LN912">912</td><td class="line">cell_data_cb (GtkTreeViewColumn * tree_column, GtkCellRenderer * cell,</td></tr>
+<tr class="codeline" data-linenumber="913"><td class="num" id="LN913">913</td><td class="line"> GtkTreeModel * tree_model, GtkTreeIter * iter,</td></tr>
+<tr class="codeline" data-linenumber="914"><td class="num" id="LN914">914</td><td class="line"> PlumaFileBrowserView * obj)</td></tr>
+<tr class="codeline" data-linenumber="915"><td class="num" id="LN915">915</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="916"><td class="num" id="LN916">916</td><td class="line"> GtkTreePath *path;</td></tr>
+<tr class="codeline" data-linenumber="917"><td class="num" id="LN917">917</td><td class="line"> PangoUnderline underline = PANGO_UNDERLINE_NONE;</td></tr>
+<tr class="codeline" data-linenumber="918"><td class="num" id="LN918">918</td><td class="line"> gboolean editable = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="919"><td class="num" id="LN919">919</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="920"><td class="num" id="LN920">920</td><td class="line"> path = gtk_tree_model_get_path (tree_model, iter);</td></tr>
+<tr class="codeline" data-linenumber="921"><td class="num" id="LN921">921</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="922"><td class="num" id="LN922">922</td><td class="line"> <span class='keyword'>if</span> (obj-&gt;priv-&gt;click_policy == PLUMA_FILE_BROWSER_VIEW_CLICK_POLICY_SINGLE) {</td></tr>
+<tr class="codeline" data-linenumber="923"><td class="num" id="LN923">923</td><td class="line"> <span class='keyword'>if</span> (obj-&gt;priv-&gt;hover_path != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="924"><td class="num" id="LN924">924</td><td class="line"> gtk_tree_path_compare (path, obj-&gt;priv-&gt;hover_path) == 0)</td></tr>
+<tr class="codeline" data-linenumber="925"><td class="num" id="LN925">925</td><td class="line"> underline = PANGO_UNDERLINE_SINGLE;</td></tr>
+<tr class="codeline" data-linenumber="926"><td class="num" id="LN926">926</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="927"><td class="num" id="LN927">927</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="928"><td class="num" id="LN928">928</td><td class="line"> <span class='keyword'>if</span> (<span class='macro'>PLUMA_IS_FILE_BROWSER_STORE (tree_model)<span class='macro_popup'>(((__extension__ ({ GTypeInstance *__inst = (GTypeInstance*) (<br>(tree_model)); GType __t = ((pluma_file_browser_store_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="929"><td class="num" id="LN929">929</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="930"><td class="num" id="LN930">930</td><td class="line"> <span class='keyword'>if</span> (obj-&gt;priv-&gt;editable != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="931"><td class="num" id="LN931">931</td><td class="line"> gtk_tree_row_reference_valid (obj-&gt;priv-&gt;editable))</td></tr>
+<tr class="codeline" data-linenumber="932"><td class="num" id="LN932">932</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="933"><td class="num" id="LN933">933</td><td class="line"> GtkTreePath *edpath = gtk_tree_row_reference_get_path (obj-&gt;priv-&gt;editable);</td></tr>
+<tr class="codeline" data-linenumber="934"><td class="num" id="LN934">934</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="935"><td class="num" id="LN935">935</td><td class="line"> editable = edpath &amp;&amp; gtk_tree_path_compare (path, edpath) == 0;</td></tr>
+<tr class="codeline" data-linenumber="936"><td class="num" id="LN936">936</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="937"><td class="num" id="LN937">937</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="938"><td class="num" id="LN938">938</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="939"><td class="num" id="LN939">939</td><td class="line"> gtk_tree_path_free (path);</td></tr>
+<tr class="codeline" data-linenumber="940"><td class="num" id="LN940">940</td><td class="line"> g_object_set (cell, <span class='string_literal'>"editable"</span>, editable, <span class='string_literal'>"underline"</span>, underline, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="941"><td class="num" id="LN941">941</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="942"><td class="num" id="LN942">942</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="943"><td class="num" id="LN943">943</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="944"><td class="num" id="LN944">944</td><td class="line">pluma_file_browser_view_init (PlumaFileBrowserView * obj)</td></tr>
+<tr class="codeline" data-linenumber="945"><td class="num" id="LN945">945</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="946"><td class="num" id="LN946">946</td><td class="line"> GdkDisplay *display;</td></tr>
+<tr class="codeline" data-linenumber="947"><td class="num" id="LN947">947</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="948"><td class="num" id="LN948">948</td><td class="line"> obj-&gt;priv = pluma_file_browser_view_get_instance_private (obj);</td></tr>
+<tr class="codeline" data-linenumber="949"><td class="num" id="LN949">949</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="950"><td class="num" id="LN950">950</td><td class="line"> obj-&gt;priv-&gt;column = gtk_tree_view_column_new ();</td></tr>
+<tr class="codeline" data-linenumber="951"><td class="num" id="LN951">951</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="952"><td class="num" id="LN952">952</td><td class="line"> obj-&gt;priv-&gt;pixbuf_renderer = gtk_cell_renderer_pixbuf_new ();</td></tr>
+<tr class="codeline" data-linenumber="953"><td class="num" id="LN953">953</td><td class="line"> gtk_tree_view_column_pack_start (obj-&gt;priv-&gt;column,</td></tr>
+<tr class="codeline" data-linenumber="954"><td class="num" id="LN954">954</td><td class="line"> obj-&gt;priv-&gt;pixbuf_renderer,</td></tr>
+<tr class="codeline" data-linenumber="955"><td class="num" id="LN955">955</td><td class="line"> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="956"><td class="num" id="LN956">956</td><td class="line"> gtk_tree_view_column_add_attribute (obj-&gt;priv-&gt;column,</td></tr>
+<tr class="codeline" data-linenumber="957"><td class="num" id="LN957">957</td><td class="line"> obj-&gt;priv-&gt;pixbuf_renderer,</td></tr>
+<tr class="codeline" data-linenumber="958"><td class="num" id="LN958">958</td><td class="line"> <span class='string_literal'>"pixbuf"</span>,</td></tr>
+<tr class="codeline" data-linenumber="959"><td class="num" id="LN959">959</td><td class="line"> PLUMA_FILE_BROWSER_STORE_COLUMN_ICON);</td></tr>
+<tr class="codeline" data-linenumber="960"><td class="num" id="LN960">960</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="961"><td class="num" id="LN961">961</td><td class="line"> obj-&gt;priv-&gt;text_renderer = gtk_cell_renderer_text_new ();</td></tr>
+<tr class="codeline" data-linenumber="962"><td class="num" id="LN962">962</td><td class="line"> gtk_tree_view_column_pack_start (obj-&gt;priv-&gt;column,</td></tr>
+<tr class="codeline" data-linenumber="963"><td class="num" id="LN963">963</td><td class="line"> obj-&gt;priv-&gt;text_renderer, <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="964"><td class="num" id="LN964">964</td><td class="line"> gtk_tree_view_column_add_attribute (obj-&gt;priv-&gt;column,</td></tr>
+<tr class="codeline" data-linenumber="965"><td class="num" id="LN965">965</td><td class="line"> obj-&gt;priv-&gt;text_renderer,</td></tr>
+<tr class="codeline" data-linenumber="966"><td class="num" id="LN966">966</td><td class="line"> <span class='string_literal'>"text"</span>,</td></tr>
+<tr class="codeline" data-linenumber="967"><td class="num" id="LN967">967</td><td class="line"> PLUMA_FILE_BROWSER_STORE_COLUMN_NAME);</td></tr>
+<tr class="codeline" data-linenumber="968"><td class="num" id="LN968">968</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="969"><td class="num" id="LN969">969</td><td class="line"> <span class='macro'>g_signal_connect (obj-&gt;priv-&gt;text_renderer, <span class='string_literal'>"edited"</span>,<span class='macro_popup'>g_signal_connect_data ((obj-&gt;priv-&gt;text_renderer), ("edited"<br>), (((GCallback) (on_cell_edited))), (obj), ((void*)0), (GConnectFlags<br>) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="970"><td class="num" id="LN970">970</td><td class="line"> <span class='macro'>G_CALLBACK (on_cell_edited), obj)<span class='macro_popup'>g_signal_connect_data ((obj-&gt;priv-&gt;text_renderer), ("edited"<br>), (((GCallback) (on_cell_edited))), (obj), ((void*)0), (GConnectFlags<br>) 0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="971"><td class="num" id="LN971">971</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="972"><td class="num" id="LN972">972</td><td class="line"> gtk_tree_view_append_column (<span class='macro'>GTK_TREE_VIEW (obj)<span class='macro_popup'>((((GtkTreeView*) (void *) ((obj)))))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="973"><td class="num" id="LN973">973</td><td class="line"> obj-&gt;priv-&gt;column);</td></tr>
+<tr class="codeline" data-linenumber="974"><td class="num" id="LN974">974</td><td class="line"> gtk_tree_view_set_headers_visible (<span class='macro'>GTK_TREE_VIEW (obj)<span class='macro_popup'>((((GtkTreeView*) (void *) ((obj)))))</span></span>, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="975"><td class="num" id="LN975">975</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="976"><td class="num" id="LN976">976</td><td class="line"> gtk_tree_view_enable_model_drag_source (<span class='macro'>GTK_TREE_VIEW (obj)<span class='macro_popup'>((((GtkTreeView*) (void *) ((obj)))))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="977"><td class="num" id="LN977">977</td><td class="line"> GDK_BUTTON1_MASK,</td></tr>
+<tr class="codeline" data-linenumber="978"><td class="num" id="LN978">978</td><td class="line"> drag_source_targets,</td></tr>
+<tr class="codeline" data-linenumber="979"><td class="num" id="LN979">979</td><td class="line"> <span class='macro'>G_N_ELEMENTS (drag_source_targets)<span class='macro_popup'>(sizeof (drag_source_targets) / sizeof ((drag_source_targets)<br>[0]))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="980"><td class="num" id="LN980">980</td><td class="line"> GDK_ACTION_COPY);</td></tr>
+<tr class="codeline" data-linenumber="981"><td class="num" id="LN981">981</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="982"><td class="num" id="LN982">982</td><td class="line"> display = gtk_widget_get_display (<span class='macro'>GTK_WIDGET (obj)<span class='macro_popup'>((((GtkWidget*) (void *) ((obj)))))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="983"><td class="num" id="LN983">983</td><td class="line"> obj-&gt;priv-&gt;busy_cursor = gdk_cursor_new_for_display (display, GDK_WATCH);</td></tr>
+<tr class="codeline" data-linenumber="984"><td class="num" id="LN984">984</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="985"><td class="num" id="LN985">985</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="986"><td class="num" id="LN986">986</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="987"><td class="num" id="LN987">987</td><td class="line">bookmarks_separator_func (GtkTreeModel * model, GtkTreeIter * iter,</td></tr>
+<tr class="codeline" data-linenumber="988"><td class="num" id="LN988">988</td><td class="line"> gpointer user_data)</td></tr>
+<tr class="codeline" data-linenumber="989"><td class="num" id="LN989">989</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="990"><td class="num" id="LN990">990</td><td class="line"> guint flags;</td></tr>
+<tr class="codeline" data-linenumber="991"><td class="num" id="LN991">991</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="992"><td class="num" id="LN992">992</td><td class="line"> gtk_tree_model_get (model, iter,</td></tr>
+<tr class="codeline" data-linenumber="993"><td class="num" id="LN993">993</td><td class="line"> PLUMA_FILE_BOOKMARKS_STORE_COLUMN_FLAGS,</td></tr>
+<tr class="codeline" data-linenumber="994"><td class="num" id="LN994">994</td><td class="line"> &amp;flags, -1);</td></tr>
+<tr class="codeline" data-linenumber="995"><td class="num" id="LN995">995</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="996"><td class="num" id="LN996">996</td><td class="line"> <span class='keyword'>return</span> (flags &amp; PLUMA_FILE_BOOKMARKS_STORE_IS_SEPARATOR);</td></tr>
+<tr class="codeline" data-linenumber="997"><td class="num" id="LN997">997</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="998"><td class="num" id="LN998">998</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="999"><td class="num" id="LN999">999</td><td class="line"><span class='comment'>/* Public */</span></td></tr>
+<tr class="codeline" data-linenumber="1000"><td class="num" id="LN1000">1000</td><td class="line">GtkWidget *</td></tr>
+<tr class="codeline" data-linenumber="1001"><td class="num" id="LN1001">1001</td><td class="line">pluma_file_browser_view_new (<span class='keyword'>void</span>)</td></tr>
+<tr class="codeline" data-linenumber="1002"><td class="num" id="LN1002">1002</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1003"><td class="num" id="LN1003">1003</td><td class="line"> PlumaFileBrowserView *obj =</td></tr>
+<tr class="codeline" data-linenumber="1004"><td class="num" id="LN1004">1004</td><td class="line"> <span class='macro'>PLUMA_FILE_BROWSER_VIEW (g_object_new<span class='macro_popup'>((((PlumaFileBrowserView*) (void *) ((g_object_new ((pluma_file_browser_view_get_type<br> ()), ((void*)0)))))))</span></span></td></tr>
+<tr class="codeline" data-linenumber="1005"><td class="num" id="LN1005">1005</td><td class="line"> <span class='macro'>(PLUMA_TYPE_FILE_BROWSER_VIEW, NULL))<span class='macro_popup'>((((PlumaFileBrowserView*) (void *) ((g_object_new ((pluma_file_browser_view_get_type<br> ()), ((void*)0)))))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1006"><td class="num" id="LN1006">1006</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1007"><td class="num" id="LN1007">1007</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>GTK_WIDGET (obj)<span class='macro_popup'>((((GtkWidget*) (void *) ((obj)))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1008"><td class="num" id="LN1008">1008</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1009"><td class="num" id="LN1009">1009</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1010"><td class="num" id="LN1010">1010</td><td class="line"><span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1011"><td class="num" id="LN1011">1011</td><td class="line">pluma_file_browser_view_set_model (PlumaFileBrowserView * tree_view,</td></tr>
+<tr class="codeline" data-linenumber="1012"><td class="num" id="LN1012">1012</td><td class="line"> GtkTreeModel * model)</td></tr>
+<tr class="codeline" data-linenumber="1013"><td class="num" id="LN1013">1013</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1014"><td class="num" id="LN1014">1014</td><td class="line"> GtkTreeSelection *selection;</td></tr>
+<tr class="codeline" data-linenumber="1015"><td class="num" id="LN1015">1015</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1016"><td class="num" id="LN1016">1016</td><td class="line"> <span class='keyword'>if</span> (tree_view-&gt;priv-&gt;model == model)</td></tr>
+<tr class="codeline" data-linenumber="1017"><td class="num" id="LN1017">1017</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="1018"><td class="num" id="LN1018">1018</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1019"><td class="num" id="LN1019">1019</td><td class="line"> selection = gtk_tree_view_get_selection (<span class='macro'>GTK_TREE_VIEW (tree_view)<span class='macro_popup'>((((GtkTreeView*) (void *) ((tree_view)))))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1020"><td class="num" id="LN1020">1020</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1021"><td class="num" id="LN1021">1021</td><td class="line"> <span class='keyword'>if</span> (<span class='macro'>PLUMA_IS_FILE_BOOKMARKS_STORE (model)<span class='macro_popup'>(((__extension__ ({ GTypeInstance *__inst = (GTypeInstance*) (<br>(model)); GType __t = ((pluma_file_bookmarks_store_get_type (<br>))); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1022"><td class="num" id="LN1022">1022</td><td class="line"> gtk_tree_selection_set_mode (selection, GTK_SELECTION_BROWSE);</td></tr>
+<tr class="codeline" data-linenumber="1023"><td class="num" id="LN1023">1023</td><td class="line"> gtk_tree_view_set_row_separator_func (<span class='macro'>GTK_TREE_VIEW<span class='macro_popup'>((((GtkTreeView*) (void *) ((tree_view)))))</span></span></td></tr>
+<tr class="codeline" data-linenumber="1024"><td class="num" id="LN1024">1024</td><td class="line"> <span class='macro'>(tree_view)<span class='macro_popup'>((((GtkTreeView*) (void *) ((tree_view)))))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="1025"><td class="num" id="LN1025">1025</td><td class="line"> bookmarks_separator_func,</td></tr>
+<tr class="codeline" data-linenumber="1026"><td class="num" id="LN1026">1026</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1027"><td class="num" id="LN1027">1027</td><td class="line"> gtk_tree_view_column_set_cell_data_func (tree_view-&gt;priv-&gt;</td></tr>
+<tr class="codeline" data-linenumber="1028"><td class="num" id="LN1028">1028</td><td class="line"> column,</td></tr>
+<tr class="codeline" data-linenumber="1029"><td class="num" id="LN1029">1029</td><td class="line"> tree_view-&gt;priv-&gt;</td></tr>
+<tr class="codeline" data-linenumber="1030"><td class="num" id="LN1030">1030</td><td class="line"> text_renderer,</td></tr>
+<tr class="codeline" data-linenumber="1031"><td class="num" id="LN1031">1031</td><td class="line"> (GtkTreeCellDataFunc)</td></tr>
+<tr class="codeline" data-linenumber="1032"><td class="num" id="LN1032">1032</td><td class="line"> cell_data_cb,</td></tr>
+<tr class="codeline" data-linenumber="1033"><td class="num" id="LN1033">1033</td><td class="line"> tree_view, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1034"><td class="num" id="LN1034">1034</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="1035"><td class="num" id="LN1035">1035</td><td class="line"> gtk_tree_selection_set_mode (selection, GTK_SELECTION_MULTIPLE);</td></tr>
+<tr class="codeline" data-linenumber="1036"><td class="num" id="LN1036">1036</td><td class="line"> gtk_tree_view_set_row_separator_func (<span class='macro'>GTK_TREE_VIEW<span class='macro_popup'>((((GtkTreeView*) (void *) ((tree_view)))))</span></span></td></tr>
+<tr class="codeline" data-linenumber="1037"><td class="num" id="LN1037">1037</td><td class="line"> <span class='macro'>(tree_view)<span class='macro_popup'>((((GtkTreeView*) (void *) ((tree_view)))))</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="1038"><td class="num" id="LN1038">1038</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1039"><td class="num" id="LN1039">1039</td><td class="line"> gtk_tree_view_column_set_cell_data_func (tree_view-&gt;priv-&gt;</td></tr>
+<tr class="codeline" data-linenumber="1040"><td class="num" id="LN1040">1040</td><td class="line"> column,</td></tr>
+<tr class="codeline" data-linenumber="1041"><td class="num" id="LN1041">1041</td><td class="line"> tree_view-&gt;priv-&gt;</td></tr>
+<tr class="codeline" data-linenumber="1042"><td class="num" id="LN1042">1042</td><td class="line"> text_renderer,</td></tr>
+<tr class="codeline" data-linenumber="1043"><td class="num" id="LN1043">1043</td><td class="line"> (GtkTreeCellDataFunc)</td></tr>
+<tr class="codeline" data-linenumber="1044"><td class="num" id="LN1044">1044</td><td class="line"> cell_data_cb,</td></tr>
+<tr class="codeline" data-linenumber="1045"><td class="num" id="LN1045">1045</td><td class="line"> tree_view, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1046"><td class="num" id="LN1046">1046</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1047"><td class="num" id="LN1047">1047</td><td class="line"> <span class='keyword'>if</span> (tree_view-&gt;priv-&gt;restore_expand_state)</td></tr>
+<tr class="codeline" data-linenumber="1048"><td class="num" id="LN1048">1048</td><td class="line"> install_restore_signals (tree_view, model);</td></tr>
+<tr class="codeline" data-linenumber="1049"><td class="num" id="LN1049">1049</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1050"><td class="num" id="LN1050">1050</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1051"><td class="num" id="LN1051">1051</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1052"><td class="num" id="LN1052">1052</td><td class="line"> <span class='keyword'>if</span> (tree_view-&gt;priv-&gt;hover_path != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1053"><td class="num" id="LN1053">1053</td><td class="line"> gtk_tree_path_free (tree_view-&gt;priv-&gt;hover_path);</td></tr>
+<tr class="codeline" data-linenumber="1054"><td class="num" id="LN1054">1054</td><td class="line"> tree_view-&gt;priv-&gt;hover_path = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1055"><td class="num" id="LN1055">1055</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1056"><td class="num" id="LN1056">1056</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1057"><td class="num" id="LN1057">1057</td><td class="line"> <span class='keyword'>if</span> (<span class='macro'>PLUMA_IS_FILE_BROWSER_STORE (tree_view-&gt;priv-&gt;model)<span class='macro_popup'>(((__extension__ ({ GTypeInstance *__inst = (GTypeInstance*) (<br>(tree_view-&gt;priv-&gt;model)); GType __t = ((pluma_file_browser_store_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1058"><td class="num" id="LN1058">1058</td><td class="line"> <span class='keyword'>if</span> (tree_view-&gt;priv-&gt;restore_expand_state)</td></tr>
+<tr class="codeline" data-linenumber="1059"><td class="num" id="LN1059">1059</td><td class="line"> uninstall_restore_signals (tree_view,</td></tr>
+<tr class="codeline" data-linenumber="1060"><td class="num" id="LN1060">1060</td><td class="line"> tree_view-&gt;priv-&gt;model);</td></tr>
+<tr class="codeline" data-linenumber="1061"><td class="num" id="LN1061">1061</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1062"><td class="num" id="LN1062">1062</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1063"><td class="num" id="LN1063">1063</td><td class="line"> tree_view-&gt;priv-&gt;model = model;</td></tr>
+<tr class="codeline" data-linenumber="1064"><td class="num" id="LN1064">1064</td><td class="line"> gtk_tree_view_set_model (<span class='macro'>GTK_TREE_VIEW (tree_view)<span class='macro_popup'>((((GtkTreeView*) (void *) ((tree_view)))))</span></span>, model);</td></tr>
+<tr class="codeline" data-linenumber="1065"><td class="num" id="LN1065">1065</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1066"><td class="num" id="LN1066">1066</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1067"><td class="num" id="LN1067">1067</td><td class="line"><span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1068"><td class="num" id="LN1068">1068</td><td class="line">pluma_file_browser_view_start_rename (PlumaFileBrowserView * tree_view,</td></tr>
+<tr class="codeline" data-linenumber="1069"><td class="num" id="LN1069">1069</td><td class="line"> GtkTreeIter * iter)</td></tr>
+<tr class="codeline" data-linenumber="1070"><td class="num" id="LN1070">1070</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1071"><td class="num" id="LN1071">1071</td><td class="line"> guint flags;</td></tr>
+<tr class="codeline" data-linenumber="1072"><td class="num" id="LN1072">1072</td><td class="line"> GtkTreeRowReference *rowref;</td></tr>
+<tr class="codeline" data-linenumber="1073"><td class="num" id="LN1073">1073</td><td class="line"> GtkTreePath *path;</td></tr>
+<tr class="codeline" data-linenumber="1074"><td class="num" id="LN1074">1074</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1075"><td class="num" id="LN1075">1075</td><td class="line"> <span class='macro'>g_return_if_fail (PLUMA_IS_FILE_BROWSER_VIEW (tree_view))<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_15<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((tree_view)); GType __t = ((pluma_file_browser_view_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_15 = 1; else _g_boolean_var_15 = 0<br>; _g_boolean_var_15; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "PLUMA_IS_FILE_BROWSER_VIEW (tree_view)"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1076"><td class="num" id="LN1076">1076</td><td class="line"> <span class='macro'>g_return_if_fail (PLUMA_IS_FILE_BROWSER_STORE<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_16<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((tree_view-&gt;priv-&gt;model)); GType __t = ((pluma_file_browser_store_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_16 = 1; else _g_boolean_var_16 = 0<br>; _g_boolean_var_16; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "PLUMA_IS_FILE_BROWSER_STORE (tree_view-&gt;priv-&gt;model)"<br>); return; } } while (0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="1077"><td class="num" id="LN1077">1077</td><td class="line"> <span class='macro'>(tree_view-&gt;priv-&gt;model))<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_16<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((tree_view-&gt;priv-&gt;model)); GType __t = ((pluma_file_browser_store_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_16 = 1; else _g_boolean_var_16 = 0<br>; _g_boolean_var_16; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "PLUMA_IS_FILE_BROWSER_STORE (tree_view-&gt;priv-&gt;model)"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1078"><td class="num" id="LN1078">1078</td><td class="line"> <span class='macro'>g_return_if_fail (iter != NULL)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_17<br>; if (iter != ((void*)0)) _g_boolean_var_17 = 1; else _g_boolean_var_17<br> = 0; _g_boolean_var_17; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "iter != NULL"); return<br>; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1079"><td class="num" id="LN1079">1079</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1080"><td class="num" id="LN1080">1080</td><td class="line"> gtk_tree_model_get (tree_view-&gt;priv-&gt;model, iter,</td></tr>
+<tr class="codeline" data-linenumber="1081"><td class="num" id="LN1081">1081</td><td class="line"> PLUMA_FILE_BROWSER_STORE_COLUMN_FLAGS, &amp;flags,</td></tr>
+<tr class="codeline" data-linenumber="1082"><td class="num" id="LN1082">1082</td><td class="line"> -1);</td></tr>
+<tr class="codeline" data-linenumber="1083"><td class="num" id="LN1083">1083</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1084"><td class="num" id="LN1084">1084</td><td class="line"> <span class='keyword'>if</span> (!(<span class='macro'>FILE_IS_DIR (flags)<span class='macro_popup'>(flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_DIRECTORY)</span></span> || !<span class='macro'>FILE_IS_DUMMY (flags)<span class='macro_popup'>(flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_DUMMY)</span></span>))</td></tr>
+<tr class="codeline" data-linenumber="1085"><td class="num" id="LN1085">1085</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="1086"><td class="num" id="LN1086">1086</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1087"><td class="num" id="LN1087">1087</td><td class="line"> path = gtk_tree_model_get_path (tree_view-&gt;priv-&gt;model, iter);</td></tr>
+<tr class="codeline" data-linenumber="1088"><td class="num" id="LN1088">1088</td><td class="line"> rowref = gtk_tree_row_reference_new (tree_view-&gt;priv-&gt;model, path);</td></tr>
+<tr class="codeline" data-linenumber="1089"><td class="num" id="LN1089">1089</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1090"><td class="num" id="LN1090">1090</td><td class="line"> <span class='comment'>/* Start editing */</span></td></tr>
+<tr class="codeline" data-linenumber="1091"><td class="num" id="LN1091">1091</td><td class="line"> gtk_widget_grab_focus (<span class='macro'>GTK_WIDGET (tree_view)<span class='macro_popup'>((((GtkWidget*) (void *) ((tree_view)))))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1092"><td class="num" id="LN1092">1092</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1093"><td class="num" id="LN1093">1093</td><td class="line"> <span class='keyword'>if</span> (gtk_tree_path_up (path))</td></tr>
+<tr class="codeline" data-linenumber="1094"><td class="num" id="LN1094">1094</td><td class="line"> gtk_tree_view_expand_to_path (<span class='macro'>GTK_TREE_VIEW (tree_view)<span class='macro_popup'>((((GtkTreeView*) (void *) ((tree_view)))))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="1095"><td class="num" id="LN1095">1095</td><td class="line"> path);</td></tr>
+<tr class="codeline" data-linenumber="1096"><td class="num" id="LN1096">1096</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1097"><td class="num" id="LN1097">1097</td><td class="line"> gtk_tree_path_free (path);</td></tr>
+<tr class="codeline" data-linenumber="1098"><td class="num" id="LN1098">1098</td><td class="line"> tree_view-&gt;priv-&gt;editable = rowref;</td></tr>
+<tr class="codeline" data-linenumber="1099"><td class="num" id="LN1099">1099</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1100"><td class="num" id="LN1100">1100</td><td class="line"> gtk_tree_view_set_cursor (<span class='macro'>GTK_TREE_VIEW (tree_view)<span class='macro_popup'>((((GtkTreeView*) (void *) ((tree_view)))))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="1101"><td class="num" id="LN1101">1101</td><td class="line"> gtk_tree_row_reference_get_path (tree_view-&gt;priv-&gt;editable),</td></tr>
+<tr class="codeline" data-linenumber="1102"><td class="num" id="LN1102">1102</td><td class="line"> tree_view-&gt;priv-&gt;column, <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1103"><td class="num" id="LN1103">1103</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1104"><td class="num" id="LN1104">1104</td><td class="line"> gtk_tree_view_scroll_to_cell (<span class='macro'>GTK_TREE_VIEW (tree_view)<span class='macro_popup'>((((GtkTreeView*) (void *) ((tree_view)))))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="1105"><td class="num" id="LN1105">1105</td><td class="line"> gtk_tree_row_reference_get_path (tree_view-&gt;priv-&gt;editable),</td></tr>
+<tr class="codeline" data-linenumber="1106"><td class="num" id="LN1106">1106</td><td class="line"> tree_view-&gt;priv-&gt;column,</td></tr>
+<tr class="codeline" data-linenumber="1107"><td class="num" id="LN1107">1107</td><td class="line"> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>, 0.0, 0.0);</td></tr>
+<tr class="codeline" data-linenumber="1108"><td class="num" id="LN1108">1108</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1109"><td class="num" id="LN1109">1109</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1110"><td class="num" id="LN1110">1110</td><td class="line"><span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1111"><td class="num" id="LN1111">1111</td><td class="line">pluma_file_browser_view_set_click_policy (PlumaFileBrowserView *tree_view,</td></tr>
+<tr class="codeline" data-linenumber="1112"><td class="num" id="LN1112">1112</td><td class="line"> PlumaFileBrowserViewClickPolicy policy)</td></tr>
+<tr class="codeline" data-linenumber="1113"><td class="num" id="LN1113">1113</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1114"><td class="num" id="LN1114">1114</td><td class="line"> <span class='macro'>g_return_if_fail (PLUMA_IS_FILE_BROWSER_VIEW (tree_view))<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_18<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((tree_view)); GType __t = ((pluma_file_browser_view_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_18 = 1; else _g_boolean_var_18 = 0<br>; _g_boolean_var_18; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "PLUMA_IS_FILE_BROWSER_VIEW (tree_view)"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1115"><td class="num" id="LN1115">1115</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1116"><td class="num" id="LN1116">1116</td><td class="line"> set_click_policy_property (tree_view, policy);</td></tr>
+<tr class="codeline" data-linenumber="1117"><td class="num" id="LN1117">1117</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1118"><td class="num" id="LN1118">1118</td><td class="line"> g_object_notify (<span class='macro'>G_OBJECT (tree_view)<span class='macro_popup'>((((GObject*) (void *) ((tree_view)))))</span></span>, <span class='string_literal'>"click-policy"</span>);</td></tr>
+<tr class="codeline" data-linenumber="1119"><td class="num" id="LN1119">1119</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1120"><td class="num" id="LN1120">1120</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1121"><td class="num" id="LN1121">1121</td><td class="line"><span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1122"><td class="num" id="LN1122">1122</td><td class="line">pluma_file_browser_view_set_restore_expand_state (PlumaFileBrowserView * tree_view,</td></tr>
+<tr class="codeline" data-linenumber="1123"><td class="num" id="LN1123">1123</td><td class="line"> gboolean restore_expand_state)</td></tr>
+<tr class="codeline" data-linenumber="1124"><td class="num" id="LN1124">1124</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1125"><td class="num" id="LN1125">1125</td><td class="line"> <span class='macro'>g_return_if_fail (PLUMA_IS_FILE_BROWSER_VIEW (tree_view))<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_19<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((tree_view)); GType __t = ((pluma_file_browser_view_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_19 = 1; else _g_boolean_var_19 = 0<br>; _g_boolean_var_19; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "PLUMA_IS_FILE_BROWSER_VIEW (tree_view)"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1126"><td class="num" id="LN1126">1126</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1127"><td class="num" id="LN1127">1127</td><td class="line"> set_restore_expand_state (tree_view, restore_expand_state);</td></tr>
+<tr class="codeline" data-linenumber="1128"><td class="num" id="LN1128">1128</td><td class="line"> g_object_notify (<span class='macro'>G_OBJECT (tree_view)<span class='macro_popup'>((((GObject*) (void *) ((tree_view)))))</span></span>, <span class='string_literal'>"restore-expand-state"</span>);</td></tr>
+<tr class="codeline" data-linenumber="1129"><td class="num" id="LN1129">1129</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1130"><td class="num" id="LN1130">1130</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1131"><td class="num" id="LN1131">1131</td><td class="line"><span class='comment'>/* Signal handlers */</span></td></tr>
+<tr class="codeline" data-linenumber="1132"><td class="num" id="LN1132">1132</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1133"><td class="num" id="LN1133">1133</td><td class="line">on_cell_edited (GtkCellRendererText * cell, gchar * path, gchar * new_text,</td></tr>
+<tr class="codeline" data-linenumber="1134"><td class="num" id="LN1134">1134</td><td class="line"> PlumaFileBrowserView * tree_view)</td></tr>
+<tr class="codeline" data-linenumber="1135"><td class="num" id="LN1135">1135</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1136"><td class="num" id="LN1136">1136</td><td class="line"> GtkTreePath * treepath;</td></tr>
+<tr class="codeline" data-linenumber="1137"><td class="num" id="LN1137">1137</td><td class="line"> GtkTreeIter iter;</td></tr>
+<tr class="codeline" data-linenumber="1138"><td class="num" id="LN1138">1138</td><td class="line"> gboolean ret;</td></tr>
+<tr class="codeline" data-linenumber="1139"><td class="num" id="LN1139">1139</td><td class="line"> GError * error = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1140"><td class="num" id="LN1140">1140</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1141"><td class="num" id="LN1141">1141</td><td class="line"> gtk_tree_row_reference_free (tree_view-&gt;priv-&gt;editable);</td></tr>
+<tr class="codeline" data-linenumber="1142"><td class="num" id="LN1142">1142</td><td class="line"> tree_view-&gt;priv-&gt;editable = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1143"><td class="num" id="LN1143">1143</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1144"><td class="num" id="LN1144">1144</td><td class="line"> <span class='keyword'>if</span> (new_text == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> || *new_text == '\0')</td></tr>
+<tr class="codeline" data-linenumber="1145"><td class="num" id="LN1145">1145</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="1146"><td class="num" id="LN1146">1146</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1147"><td class="num" id="LN1147">1147</td><td class="line"> treepath = gtk_tree_path_new_from_string (path);</td></tr>
+<tr class="codeline" data-linenumber="1148"><td class="num" id="LN1148">1148</td><td class="line"> ret = gtk_tree_model_get_iter (<span class='macro'>GTK_TREE_MODEL (tree_view-&gt;priv-&gt;model)<span class='macro_popup'>((((GtkTreeModel*) (void *) ((tree_view-&gt;priv-&gt;model)))<br>))</span></span>, &amp;iter, treepath);</td></tr>
+<tr class="codeline" data-linenumber="1149"><td class="num" id="LN1149">1149</td><td class="line"> gtk_tree_path_free (treepath);</td></tr>
+<tr class="codeline" data-linenumber="1150"><td class="num" id="LN1150">1150</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1151"><td class="num" id="LN1151">1151</td><td class="line"> <span class='keyword'>if</span> (ret) {</td></tr>
+<tr class="codeline" data-linenumber="1152"><td class="num" id="LN1152">1152</td><td class="line"> <span class='keyword'>if</span> (pluma_file_browser_store_rename (<span class='macro'>PLUMA_FILE_BROWSER_STORE (tree_view-&gt;priv-&gt;model)<span class='macro_popup'>((((PlumaFileBrowserStore*) (void *) ((tree_view-&gt;priv-&gt;<br>model)))))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="1153"><td class="num" id="LN1153">1153</td><td class="line"> &amp;iter, new_text, &amp;error)) {</td></tr>
+<tr class="codeline" data-linenumber="1154"><td class="num" id="LN1154">1154</td><td class="line"> treepath = gtk_tree_model_get_path (<span class='macro'>GTK_TREE_MODEL (tree_view-&gt;priv-&gt;model)<span class='macro_popup'>((((GtkTreeModel*) (void *) ((tree_view-&gt;priv-&gt;model)))<br>))</span></span>, &amp;iter);</td></tr>
+<tr class="codeline" data-linenumber="1155"><td class="num" id="LN1155">1155</td><td class="line"> gtk_tree_view_scroll_to_cell (<span class='macro'>GTK_TREE_VIEW (tree_view)<span class='macro_popup'>((((GtkTreeView*) (void *) ((tree_view)))))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="1156"><td class="num" id="LN1156">1156</td><td class="line"> treepath, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="1157"><td class="num" id="LN1157">1157</td><td class="line"> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>, 0.0, 0.0);</td></tr>
+<tr class="codeline" data-linenumber="1158"><td class="num" id="LN1158">1158</td><td class="line"> gtk_tree_path_free (treepath);</td></tr>
+<tr class="codeline" data-linenumber="1159"><td class="num" id="LN1159">1159</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1160"><td class="num" id="LN1160">1160</td><td class="line"> <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="1161"><td class="num" id="LN1161">1161</td><td class="line"> <span class='keyword'>if</span> (error) {</td></tr>
+<tr class="codeline" data-linenumber="1162"><td class="num" id="LN1162">1162</td><td class="line"> g_signal_emit (tree_view, signals[ERROR], 0,</td></tr>
+<tr class="codeline" data-linenumber="1163"><td class="num" id="LN1163">1163</td><td class="line"> error-&gt;code, error-&gt;message);</td></tr>
+<tr class="codeline" data-linenumber="1164"><td class="num" id="LN1164">1164</td><td class="line"> g_error_free (error);</td></tr>
+<tr class="codeline" data-linenumber="1165"><td class="num" id="LN1165">1165</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1166"><td class="num" id="LN1166">1166</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1167"><td class="num" id="LN1167">1167</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1168"><td class="num" id="LN1168">1168</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1169"><td class="num" id="LN1169">1169</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1170"><td class="num" id="LN1170">1170</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1171"><td class="num" id="LN1171">1171</td><td class="line">on_begin_refresh (PlumaFileBrowserStore * model,</td></tr>
+<tr class="codeline" data-linenumber="1172"><td class="num" id="LN1172">1172</td><td class="line"> PlumaFileBrowserView * view)</td></tr>
+<tr class="codeline" data-linenumber="1173"><td class="num" id="LN1173">1173</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1174"><td class="num" id="LN1174">1174</td><td class="line"> <span class='comment'>/* Store the refresh state, so we can handle unloading of nodes while</span></td></tr>
+<tr class="codeline" data-linenumber="1175"><td class="num" id="LN1175">1175</td><td class="line"> <span class='comment'>refreshing properly */</span></td></tr>
+<tr class="codeline" data-linenumber="1176"><td class="num" id="LN1176">1176</td><td class="line"> view-&gt;priv-&gt;is_refresh = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1177"><td class="num" id="LN1177">1177</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1178"><td class="num" id="LN1178">1178</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1179"><td class="num" id="LN1179">1179</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1180"><td class="num" id="LN1180">1180</td><td class="line">on_end_refresh (PlumaFileBrowserStore * model,</td></tr>
+<tr class="codeline" data-linenumber="1181"><td class="num" id="LN1181">1181</td><td class="line"> PlumaFileBrowserView * view)</td></tr>
+<tr class="codeline" data-linenumber="1182"><td class="num" id="LN1182">1182</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1183"><td class="num" id="LN1183">1183</td><td class="line"> <span class='comment'>/* Store the refresh state, so we can handle unloading of nodes while</span></td></tr>
+<tr class="codeline" data-linenumber="1184"><td class="num" id="LN1184">1184</td><td class="line"> <span class='comment'>refreshing properly */</span></td></tr>
+<tr class="codeline" data-linenumber="1185"><td class="num" id="LN1185">1185</td><td class="line"> view-&gt;priv-&gt;is_refresh = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1186"><td class="num" id="LN1186">1186</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1187"><td class="num" id="LN1187">1187</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1188"><td class="num" id="LN1188">1188</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1189"><td class="num" id="LN1189">1189</td><td class="line">on_unload (PlumaFileBrowserStore * model,</td></tr>
+<tr class="codeline" data-linenumber="1190"><td class="num" id="LN1190">1190</td><td class="line"> gchar <span class='keyword'>const</span> * uri,</td></tr>
+<tr class="codeline" data-linenumber="1191"><td class="num" id="LN1191">1191</td><td class="line"> PlumaFileBrowserView * view)</td></tr>
+<tr class="codeline" data-linenumber="1192"><td class="num" id="LN1192">1192</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1193"><td class="num" id="LN1193">1193</td><td class="line"> <span class='comment'>/* Don't remove the expand state if we are refreshing */</span></td></tr>
+<tr class="codeline" data-linenumber="1194"><td class="num" id="LN1194">1194</td><td class="line"> <span class='keyword'>if</span> (!view-&gt;priv-&gt;restore_expand_state || view-&gt;priv-&gt;is_refresh)</td></tr>
+<tr class="codeline" data-linenumber="1195"><td class="num" id="LN1195">1195</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="1196"><td class="num" id="LN1196">1196</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1197"><td class="num" id="LN1197">1197</td><td class="line"> remove_expand_state (view, uri);</td></tr>
+<tr class="codeline" data-linenumber="1198"><td class="num" id="LN1198">1198</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1199"><td class="num" id="LN1199">1199</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1200"><td class="num" id="LN1200">1200</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1201"><td class="num" id="LN1201">1201</td><td class="line">restore_expand_state (PlumaFileBrowserView * view,</td></tr>
+<tr class="codeline" data-linenumber="1202"><td class="num" id="LN1202">1202</td><td class="line"> PlumaFileBrowserStore * model,</td></tr>
+<tr class="codeline" data-linenumber="1203"><td class="num" id="LN1203">1203</td><td class="line"> GtkTreeIter * iter)</td></tr>
+<tr class="codeline" data-linenumber="1204"><td class="num" id="LN1204">1204</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1205"><td class="num" id="LN1205">1205</td><td class="line"> gchar * uri;</td></tr>
+<tr class="codeline" data-linenumber="1206"><td class="num" id="LN1206">1206</td><td class="line"> GFile * file;</td></tr>
+<tr class="codeline" data-linenumber="1207"><td class="num" id="LN1207">1207</td><td class="line"> GtkTreePath * path;</td></tr>
+<tr class="codeline" data-linenumber="1208"><td class="num" id="LN1208">1208</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1209"><td class="num" id="LN1209">1209</td><td class="line"> gtk_tree_model_get (<span class='macro'>GTK_TREE_MODEL (model)<span class='macro_popup'>((((GtkTreeModel*) (void *) ((model)))))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="1210"><td class="num" id="LN1210">1210</td><td class="line"> iter,</td></tr>
+<tr class="codeline" data-linenumber="1211"><td class="num" id="LN1211">1211</td><td class="line"> PLUMA_FILE_BROWSER_STORE_COLUMN_URI,</td></tr>
+<tr class="codeline" data-linenumber="1212"><td class="num" id="LN1212">1212</td><td class="line"> &amp;uri,</td></tr>
+<tr class="codeline" data-linenumber="1213"><td class="num" id="LN1213">1213</td><td class="line"> -1);</td></tr>
+<tr class="codeline" data-linenumber="1214"><td class="num" id="LN1214">1214</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1215"><td class="num" id="LN1215">1215</td><td class="line"> <span class='keyword'>if</span> (!uri)</td></tr>
+<tr class="codeline" data-linenumber="1216"><td class="num" id="LN1216">1216</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="1217"><td class="num" id="LN1217">1217</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1218"><td class="num" id="LN1218">1218</td><td class="line"> file = g_file_new_for_uri (uri);</td></tr>
+<tr class="codeline" data-linenumber="1219"><td class="num" id="LN1219">1219</td><td class="line"> path = gtk_tree_model_get_path (<span class='macro'>GTK_TREE_MODEL (model)<span class='macro_popup'>((((GtkTreeModel*) (void *) ((model)))))</span></span>, iter);</td></tr>
+<tr class="codeline" data-linenumber="1220"><td class="num" id="LN1220">1220</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1221"><td class="num" id="LN1221">1221</td><td class="line"> <span class='keyword'>if</span> (g_hash_table_lookup (view-&gt;priv-&gt;expand_state, file))</td></tr>
+<tr class="codeline" data-linenumber="1222"><td class="num" id="LN1222">1222</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="1223"><td class="num" id="LN1223">1223</td><td class="line"> gtk_tree_view_expand_row (<span class='macro'>GTK_TREE_VIEW (view)<span class='macro_popup'>((((GtkTreeView*) (void *) ((view)))))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="1224"><td class="num" id="LN1224">1224</td><td class="line"> path,</td></tr>
+<tr class="codeline" data-linenumber="1225"><td class="num" id="LN1225">1225</td><td class="line"> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1226"><td class="num" id="LN1226">1226</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1227"><td class="num" id="LN1227">1227</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1228"><td class="num" id="LN1228">1228</td><td class="line"> gtk_tree_path_free (path);</td></tr>
+<tr class="codeline" data-linenumber="1229"><td class="num" id="LN1229">1229</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1230"><td class="num" id="LN1230">1230</td><td class="line"> g_object_unref (file);</td></tr>
+<tr class="codeline" data-linenumber="1231"><td class="num" id="LN1231">1231</td><td class="line"> g_free (uri);</td></tr>
+<tr class="codeline" data-linenumber="1232"><td class="num" id="LN1232">1232</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1233"><td class="num" id="LN1233">1233</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1234"><td class="num" id="LN1234">1234</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1235"><td class="num" id="LN1235">1235</td><td class="line">on_row_inserted (PlumaFileBrowserStore * model,</td></tr>
+<tr class="codeline" data-linenumber="1236"><td class="num" id="LN1236">1236</td><td class="line"> GtkTreePath * path,</td></tr>
+<tr class="codeline" data-linenumber="1237"><td class="num" id="LN1237">1237</td><td class="line"> GtkTreeIter * iter,</td></tr>
+<tr class="codeline" data-linenumber="1238"><td class="num" id="LN1238">1238</td><td class="line"> PlumaFileBrowserView * view)</td></tr>
+<tr class="codeline" data-linenumber="1239"><td class="num" id="LN1239">1239</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1240"><td class="num" id="LN1240">1240</td><td class="line"> GtkTreeIter parent;</td></tr>
+<tr class="codeline" data-linenumber="1241"><td class="num" id="LN1241">1241</td><td class="line"> GtkTreePath * copy;</td></tr>
+<tr class="codeline" data-linenumber="1242"><td class="num" id="LN1242">1242</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1243"><td class="num" id="LN1243">1243</td><td class="line"> <span class='keyword'>if</span> (gtk_tree_model_iter_has_child (<span class='macro'>GTK_TREE_MODEL (model)<span class='macro_popup'>((((GtkTreeModel*) (void *) ((model)))))</span></span>, iter))</td></tr>
+<tr class="codeline" data-linenumber="1244"><td class="num" id="LN1244">1244</td><td class="line"> restore_expand_state (view, model, iter);</td></tr>
+<tr class="codeline" data-linenumber="1245"><td class="num" id="LN1245">1245</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1246"><td class="num" id="LN1246">1246</td><td class="line"> copy = gtk_tree_path_copy (path);</td></tr>
+<tr class="codeline" data-linenumber="1247"><td class="num" id="LN1247">1247</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1248"><td class="num" id="LN1248">1248</td><td class="line"> <span class='keyword'>if</span> (gtk_tree_path_up (copy) &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="1249"><td class="num" id="LN1249">1249</td><td class="line"> (gtk_tree_path_get_depth (copy) != 0) &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="1250"><td class="num" id="LN1250">1250</td><td class="line"> gtk_tree_model_get_iter (<span class='macro'>GTK_TREE_MODEL (model)<span class='macro_popup'>((((GtkTreeModel*) (void *) ((model)))))</span></span>, &amp;parent, copy))</td></tr>
+<tr class="codeline" data-linenumber="1251"><td class="num" id="LN1251">1251</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="1252"><td class="num" id="LN1252">1252</td><td class="line"> restore_expand_state (view, model, &amp;parent);</td></tr>
+<tr class="codeline" data-linenumber="1253"><td class="num" id="LN1253">1253</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1254"><td class="num" id="LN1254">1254</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1255"><td class="num" id="LN1255">1255</td><td class="line"> gtk_tree_path_free (copy);</td></tr>
+<tr class="codeline" data-linenumber="1256"><td class="num" id="LN1256">1256</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1257"><td class="num" id="LN1257">1257</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1258"><td class="num" id="LN1258">1258</td><td class="line"><span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1259"><td class="num" id="LN1259">1259</td><td class="line">_pluma_file_browser_view_register_type (GTypeModule *type_module)</td></tr>
+<tr class="codeline" data-linenumber="1260"><td class="num" id="LN1260">1260</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1261"><td class="num" id="LN1261">1261</td><td class="line"> pluma_file_browser_view_register_type (type_module);</td></tr>
+<tr class="codeline" data-linenumber="1262"><td class="num" id="LN1262">1262</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1263"><td class="num" id="LN1263">1263</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1264"><td class="num" id="LN1264">1264</td><td class="line"><span class='comment'>// ex:ts=8:noet:</span></td></tr>
+</table></body></html>
diff --git a/2023-05-28-030536-6612-1@f643dde74cbd_master/report-13aee1.html b/2023-05-28-030536-6612-1@f643dde74cbd_master/report-13aee1.html
new file mode 100644
index 00000000..33e8c259
--- /dev/null
+++ b/2023-05-28-030536-6612-1@f643dde74cbd_master/report-13aee1.html
@@ -0,0 +1,1139 @@
+<!doctype html>
+<html>
+<head>
+<title>pluma-document-output-stream.c</title>
+
+<style type="text/css">
+body { color:#000000; background-color:#ffffff }
+body { font-family:Helvetica, sans-serif; font-size:10pt }
+h1 { font-size:14pt }
+.FileName { margin-top: 5px; margin-bottom: 5px; display: inline; }
+.FileNav { margin-left: 5px; margin-right: 5px; display: inline; }
+.FileNav a { text-decoration:none; font-size: larger; }
+.divider { margin-top: 30px; margin-bottom: 30px; height: 15px; }
+.divider { background-color: gray; }
+.code { border-collapse:collapse; width:100%; }
+.code { font-family: "Monospace", monospace; font-size:10pt }
+.code { line-height: 1.2em }
+.comment { color: green; font-style: oblique }
+.keyword { color: blue }
+.string_literal { color: red }
+.directive { color: darkmagenta }
+
+/* Macros and variables could have pop-up notes hidden by default.
+ - Macro pop-up: expansion of the macro
+ - Variable pop-up: value (table) of the variable */
+.macro_popup, .variable_popup { display: none; }
+
+/* Pop-up appears on mouse-hover event. */
+.macro:hover .macro_popup, .variable:hover .variable_popup {
+ display: block;
+ padding: 2px;
+ -webkit-border-radius:5px;
+ -webkit-box-shadow:1px 1px 7px #000;
+ border-radius:5px;
+ box-shadow:1px 1px 7px #000;
+ position: absolute;
+ top: -1em;
+ left:10em;
+ z-index: 1
+}
+
+.macro_popup {
+ border: 2px solid red;
+ background-color:#FFF0F0;
+ font-weight: normal;
+}
+
+.variable_popup {
+ border: 2px solid blue;
+ background-color:#F0F0FF;
+ font-weight: bold;
+ font-family: Helvetica, sans-serif;
+ font-size: 9pt;
+}
+
+/* Pop-up notes needs a relative position as a base where they pops up. */
+.macro, .variable {
+ background-color: PaleGoldenRod;
+ position: relative;
+}
+.macro { color: DarkMagenta; }
+
+#tooltiphint {
+ position: fixed;
+ width: 50em;
+ margin-left: -25em;
+ left: 50%;
+ padding: 10px;
+ border: 1px solid #b0b0b0;
+ border-radius: 2px;
+ box-shadow: 1px 1px 7px black;
+ background-color: #c0c0c0;
+ z-index: 2;
+}
+
+.num { width:2.5em; padding-right:2ex; background-color:#eeeeee }
+.num { text-align:right; font-size:8pt }
+.num { color:#444444 }
+.line { padding-left: 1ex; border-left: 3px solid #ccc }
+.line { white-space: pre }
+.msg { -webkit-box-shadow:1px 1px 7px #000 }
+.msg { box-shadow:1px 1px 7px #000 }
+.msg { -webkit-border-radius:5px }
+.msg { border-radius:5px }
+.msg { font-family:Helvetica, sans-serif; font-size:8pt }
+.msg { float:left }
+.msg { position:relative }
+.msg { padding:0.25em 1ex 0.25em 1ex }
+.msg { margin-top:10px; margin-bottom:10px }
+.msg { font-weight:bold }
+.msg { max-width:60em; word-wrap: break-word; white-space: pre-wrap }
+.msgT { padding:0x; spacing:0x }
+.msgEvent { background-color:#fff8b4; color:#000000 }
+.msgControl { background-color:#bbbbbb; color:#000000 }
+.msgNote { background-color:#ddeeff; color:#000000 }
+.mrange { background-color:#dfddf3 }
+.mrange { border-bottom:1px solid #6F9DBE }
+.PathIndex { font-weight: bold; padding:0px 5px; margin-right:5px; }
+.PathIndex { -webkit-border-radius:8px }
+.PathIndex { border-radius:8px }
+.PathIndexEvent { background-color:#bfba87 }
+.PathIndexControl { background-color:#8c8c8c }
+.PathIndexPopUp { background-color: #879abc; }
+.PathNav a { text-decoration:none; font-size: larger }
+.CodeInsertionHint { font-weight: bold; background-color: #10dd10 }
+.CodeRemovalHint { background-color:#de1010 }
+.CodeRemovalHint { border-bottom:1px solid #6F9DBE }
+.msg.selected{ background-color:orange !important; }
+
+table.simpletable {
+ padding: 5px;
+ font-size:12pt;
+ margin:20px;
+ border-collapse: collapse; border-spacing: 0px;
+}
+td.rowname {
+ text-align: right;
+ vertical-align: top;
+ font-weight: bold;
+ color:#444444;
+ padding-right:2ex;
+}
+
+/* Hidden text. */
+input.spoilerhider + label {
+ cursor: pointer;
+ text-decoration: underline;
+ display: block;
+}
+input.spoilerhider {
+ display: none;
+}
+input.spoilerhider ~ .spoiler {
+ overflow: hidden;
+ margin: 10px auto 0;
+ height: 0;
+ opacity: 0;
+}
+input.spoilerhider:checked + label + .spoiler{
+ height: auto;
+ opacity: 1;
+}
+</style>
+</head>
+<body>
+<!-- BUGDESC Out of bound memory access (access exceeds upper limit of memory block) -->
+
+<!-- BUGTYPE Out-of-bound access -->
+
+<!-- BUGCATEGORY Logic error -->
+
+<!-- BUGFILE /rootdir/pluma/pluma-document-output-stream.c -->
+
+<!-- FILENAME pluma-document-output-stream.c -->
+
+<!-- FUNCTIONNAME pluma_document_output_stream_write -->
+
+<!-- ISSUEHASHCONTENTOFLINEINCONTEXT 13aee171db33f7044f4d76d47ffc9662 -->
+
+<!-- BUGLINE 332 -->
+
+<!-- BUGCOLUMN 26 -->
+
+<!-- BUGPATHLENGTH 15 -->
+
+<!-- BUGMETAEND -->
+<!-- REPORTHEADER -->
+<h3>Bug Summary</h3>
+<table class="simpletable">
+<tr><td class="rowname">File:</td><td>pluma/pluma-document-output-stream.c</td></tr>
+<tr><td class="rowname">Warning:</td><td><a href="#EndPath">line 332, column 26</a><br />Out of bound memory access (access exceeds upper limit of memory block)</td></tr>
+
+</table>
+<!-- REPORTSUMMARYEXTRA -->
+<h3>Annotated Source Code</h3>
+<p>Press <a href="#" onclick="toggleHelp(); return false;">'?'</a>
+ to see keyboard shortcuts</p>
+<input type="checkbox" class="spoilerhider" id="showinvocation" />
+<label for="showinvocation" >Show analyzer invocation</label>
+<div class="spoiler">clang -cc1 -cc1 -triple x86_64-redhat-linux-gnu -analyze -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name pluma-document-output-stream.c -analyzer-checker=core -analyzer-checker=apiModeling -analyzer-checker=unix -analyzer-checker=deadcode -analyzer-checker=security.insecureAPI.UncheckedReturn -analyzer-checker=security.insecureAPI.getpw -analyzer-checker=security.insecureAPI.gets -analyzer-checker=security.insecureAPI.mktemp -analyzer-checker=security.insecureAPI.mkstemp -analyzer-checker=security.insecureAPI.vfork -analyzer-checker=nullability.NullPassedToNonnull -analyzer-checker=nullability.NullReturnedFromNonnull -analyzer-output plist -w -setup-static-analyzer -mrelocation-model pic -pic-level 2 -fhalf-no-semantic-interposition -mframe-pointer=none -fmath-errno -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=2 -target-cpu x86-64 -tune-cpu generic -debugger-tuning=gdb -fcoverage-compilation-dir=/rootdir/pluma -resource-dir /usr/lib64/clang/16 -D HAVE_CONFIG_H -I . -I .. -I .. -I . -I ./mate-submodules/libegg -I /usr/include/libxml2 -I /usr/include/glib-2.0 -I /usr/lib64/glib-2.0/include -I /usr/include/sysprof-4 -I /usr/include/libmount -I /usr/include/blkid -I /usr/include/gtk-3.0 -I /usr/include/pango-1.0 -I /usr/include/harfbuzz -I /usr/include/freetype2 -I /usr/include/libpng16 -I /usr/include/fribidi -I /usr/include/cairo -I /usr/include/pixman-1 -I /usr/include/gdk-pixbuf-2.0 -I /usr/include/gio-unix-2.0 -I /usr/include/cloudproviders -I /usr/include/atk-1.0 -I /usr/include/at-spi2-atk/2.0 -I /usr/include/at-spi-2.0 -I /usr/include/dbus-1.0 -I /usr/lib64/dbus-1.0/include -I /usr/include/gtksourceview-4 -I /usr/include/libpeas-1.0 -I /usr/include/gobject-introspection-1.0 -I /usr/include/gobject-introspection-1.0 -I /usr/include/glib-2.0 -I /usr/lib64/glib-2.0/include -I /usr/include/sysprof-4 -D DATADIR="/usr/local/share" -D PLUMA_DATADIR="/usr/local/share/pluma" -D PLUMA_LOCALEDIR="/usr/local/share/locale/" -D LIBDIR="/usr/local/lib" -D PLUMA_LIBDIR="/usr/local/lib/pluma" -D PIC -internal-isystem /usr/lib64/clang/16/include -internal-isystem /usr/local/include -internal-isystem /usr/bin/../lib/gcc/x86_64-redhat-linux/13/../../../../x86_64-redhat-linux/include -internal-externc-isystem /include -internal-externc-isystem /usr/include -O2 -Wno-unused-parameter -fdebug-compilation-dir=/rootdir/pluma -ferror-limit 19 -fgnuc-version=4.2.1 -vectorize-loops -vectorize-slp -analyzer-checker deadcode.DeadStores -analyzer-checker alpha.deadcode.UnreachableCode -analyzer-checker alpha.core.CastSize -analyzer-checker alpha.core.CastToStruct -analyzer-checker alpha.core.IdenticalExpr -analyzer-checker alpha.core.SizeofPtr -analyzer-checker alpha.security.ArrayBoundV2 -analyzer-checker alpha.security.MallocOverflow -analyzer-checker alpha.security.ReturnPtrRange -analyzer-checker alpha.unix.SimpleStream -analyzer-checker alpha.unix.cstring.BufferOverlap -analyzer-checker alpha.unix.cstring.NotNullTerminated -analyzer-checker alpha.unix.cstring.OutOfBounds -analyzer-checker alpha.core.FixedAddr -analyzer-checker security.insecureAPI.strcpy -analyzer-output=html -faddrsig -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o /rootdir/html-report/2023-05-28-030536-6612-1 -x c pluma-document-output-stream.c
+</div>
+<div id='tooltiphint' hidden="true">
+ <p>Keyboard shortcuts: </p>
+ <ul>
+ <li>Use 'j/k' keys for keyboard navigation</li>
+ <li>Use 'Shift+S' to show/hide relevant lines</li>
+ <li>Use '?' to toggle this window</li>
+ </ul>
+ <a href="#" onclick="toggleHelp(); return false;">Close</a>
+</div>
+<script type='text/javascript'>
+var relevant_lines = {"1": {"281": 1, "282": 1, "283": 1, "284": 1, "285": 1, "286": 1, "287": 1, "288": 1, "289": 1, "290": 1, "291": 1, "292": 1, "293": 1, "295": 1, "298": 1, "300": 1, "310": 1, "312": 1, "313": 1, "314": 1, "315": 1, "316": 1, "317": 1, "318": 1, "319": 1, "320": 1, "329": 1, "332": 1, "376": 1, "377": 1, "378": 1, "379": 1, "380": 1, "381": 1, "384": 1, "385": 1, "386": 1, "387": 1}};
+
+var filterCounterexample = function (hide) {
+ var tables = document.getElementsByClassName("code");
+ for (var t=0; t<tables.length; t++) {
+ var table = tables[t];
+ var file_id = table.getAttribute("data-fileid");
+ var lines_in_fid = relevant_lines[file_id];
+ if (!lines_in_fid) {
+ lines_in_fid = {};
+ }
+ var lines = table.getElementsByClassName("codeline");
+ for (var i=0; i<lines.length; i++) {
+ var el = lines[i];
+ var lineNo = el.getAttribute("data-linenumber");
+ if (!lines_in_fid[lineNo]) {
+ if (hide) {
+ el.setAttribute("hidden", "");
+ } else {
+ el.removeAttribute("hidden");
+ }
+ }
+ }
+ }
+}
+
+window.addEventListener("keydown", function (event) {
+ if (event.defaultPrevented) {
+ return;
+ }
+ // SHIFT + S
+ if (event.shiftKey && event.keyCode == 83) {
+ var checked = document.getElementsByName("showCounterexample")[0].checked;
+ filterCounterexample(!checked);
+ document.getElementsByName("showCounterexample")[0].click();
+ } else {
+ return;
+ }
+ event.preventDefault();
+}, true);
+
+document.addEventListener("DOMContentLoaded", function() {
+ document.querySelector('input[name="showCounterexample"]').onchange=
+ function (event) {
+ filterCounterexample(this.checked);
+ };
+});
+</script>
+
+<form>
+ <input type="checkbox" name="showCounterexample" id="showCounterexample" />
+ <label for="showCounterexample">
+ Show only relevant lines
+ </label>
+ <input type="checkbox" name="showArrows"
+ id="showArrows" style="margin-left: 10px" />
+ <label for="showArrows">
+ Show control flow arrows
+ </label>
+</form>
+
+<script type='text/javascript'>
+// Return range of numbers from a range [lower, upper).
+function range(lower, upper) {
+ var array = [];
+ for (var i = lower; i <= upper; ++i) {
+ array.push(i);
+ }
+ return array;
+}
+
+var getRelatedArrowIndices = function(pathId) {
+ // HTML numeration of events is a bit different than it is in the path.
+ // Everything is rotated one step to the right, so the last element
+ // (error diagnostic) has index 0.
+ if (pathId == 0) {
+ // arrowIndices has at least 2 elements
+ pathId = arrowIndices.length - 1;
+ }
+
+ return range(arrowIndices[pathId], arrowIndices[pathId - 1]);
+}
+
+var highlightArrowsForSelectedEvent = function() {
+ const selectedNum = findNum();
+ const arrowIndicesToHighlight = getRelatedArrowIndices(selectedNum);
+ arrowIndicesToHighlight.forEach((index) => {
+ var arrow = document.querySelector("#arrow" + index);
+ if(arrow) {
+ classListAdd(arrow, "selected")
+ }
+ });
+}
+
+var getAbsoluteBoundingRect = function(element) {
+ const relative = element.getBoundingClientRect();
+ return {
+ left: relative.left + window.pageXOffset,
+ right: relative.right + window.pageXOffset,
+ top: relative.top + window.pageYOffset,
+ bottom: relative.bottom + window.pageYOffset,
+ height: relative.height,
+ width: relative.width
+ };
+}
+
+var drawArrow = function(index) {
+ // This function is based on the great answer from SO:
+ // https://stackoverflow.com/a/39575674/11582326
+ var start = document.querySelector("#start" + index);
+ var end = document.querySelector("#end" + index);
+ var arrow = document.querySelector("#arrow" + index);
+
+ var startRect = getAbsoluteBoundingRect(start);
+ var endRect = getAbsoluteBoundingRect(end);
+
+ // It is an arrow from a token to itself, no need to visualize it.
+ if (startRect.top == endRect.top &&
+ startRect.left == endRect.left)
+ return;
+
+ // Each arrow is a very simple Bézier curve, with two nodes and
+ // two handles. So, we need to calculate four points in the window:
+ // * start node
+ var posStart = { x: 0, y: 0 };
+ // * end node
+ var posEnd = { x: 0, y: 0 };
+ // * handle for the start node
+ var startHandle = { x: 0, y: 0 };
+ // * handle for the end node
+ var endHandle = { x: 0, y: 0 };
+ // One can visualize it as follows:
+ //
+ // start handle
+ // /
+ // X"""_.-""""X
+ // .' \
+ // / start node
+ // |
+ // |
+ // | end node
+ // \ /
+ // `->X
+ // X-'
+ // \
+ // end handle
+ //
+ // NOTE: (0, 0) is the top left corner of the window.
+
+ // We have 3 similar, but still different scenarios to cover:
+ //
+ // 1. Two tokens on different lines.
+ // -xxx
+ // /
+ // \
+ // -> xxx
+ // In this situation, we draw arrow on the left curving to the left.
+ // 2. Two tokens on the same line, and the destination is on the right.
+ // ____
+ // / \
+ // / V
+ // xxx xxx
+ // In this situation, we draw arrow above curving upwards.
+ // 3. Two tokens on the same line, and the destination is on the left.
+ // xxx xxx
+ // ^ /
+ // \____/
+ // In this situation, we draw arrow below curving downwards.
+ const onDifferentLines = startRect.top <= endRect.top - 5 ||
+ startRect.top >= endRect.top + 5;
+ const leftToRight = startRect.left < endRect.left;
+
+ // NOTE: various magic constants are chosen empirically for
+ // better positioning and look
+ if (onDifferentLines) {
+ // Case #1
+ const topToBottom = startRect.top < endRect.top;
+ posStart.x = startRect.left - 1;
+ // We don't want to start it at the top left corner of the token,
+ // it doesn't feel like this is where the arrow comes from.
+ // For this reason, we start it in the middle of the left side
+ // of the token.
+ posStart.y = startRect.top + startRect.height / 2;
+
+ // End node has arrow head and we give it a bit more space.
+ posEnd.x = endRect.left - 4;
+ posEnd.y = endRect.top;
+
+ // Utility object with x and y offsets for handles.
+ var curvature = {
+ // We want bottom-to-top arrow to curve a bit more, so it doesn't
+ // overlap much with top-to-bottom curves (much more frequent).
+ x: topToBottom ? 15 : 25,
+ y: Math.min((posEnd.y - posStart.y) / 3, 10)
+ }
+
+ // When destination is on the different line, we can make a
+ // curvier arrow because we have space for it.
+ // So, instead of using
+ //
+ // startHandle.x = posStart.x - curvature.x
+ // endHandle.x = posEnd.x - curvature.x
+ //
+ // We use the leftmost of these two values for both handles.
+ startHandle.x = Math.min(posStart.x, posEnd.x) - curvature.x;
+ endHandle.x = startHandle.x;
+
+ // Curving downwards from the start node...
+ startHandle.y = posStart.y + curvature.y;
+ // ... and upwards from the end node.
+ endHandle.y = posEnd.y - curvature.y;
+
+ } else if (leftToRight) {
+ // Case #2
+ // Starting from the top right corner...
+ posStart.x = startRect.right - 1;
+ posStart.y = startRect.top;
+
+ // ...and ending at the top left corner of the end token.
+ posEnd.x = endRect.left + 1;
+ posEnd.y = endRect.top - 1;
+
+ // Utility object with x and y offsets for handles.
+ var curvature = {
+ x: Math.min((posEnd.x - posStart.x) / 3, 15),
+ y: 5
+ }
+
+ // Curving to the right...
+ startHandle.x = posStart.x + curvature.x;
+ // ... and upwards from the start node.
+ startHandle.y = posStart.y - curvature.y;
+
+ // And to the left...
+ endHandle.x = posEnd.x - curvature.x;
+ // ... and upwards from the end node.
+ endHandle.y = posEnd.y - curvature.y;
+
+ } else {
+ // Case #3
+ // Starting from the bottom right corner...
+ posStart.x = startRect.right;
+ posStart.y = startRect.bottom;
+
+ // ...and ending also at the bottom right corner, but of the end token.
+ posEnd.x = endRect.right - 1;
+ posEnd.y = endRect.bottom + 1;
+
+ // Utility object with x and y offsets for handles.
+ var curvature = {
+ x: Math.min((posStart.x - posEnd.x) / 3, 15),
+ y: 5
+ }
+
+ // Curving to the left...
+ startHandle.x = posStart.x - curvature.x;
+ // ... and downwards from the start node.
+ startHandle.y = posStart.y + curvature.y;
+
+ // And to the right...
+ endHandle.x = posEnd.x + curvature.x;
+ // ... and downwards from the end node.
+ endHandle.y = posEnd.y + curvature.y;
+ }
+
+ // Put it all together into a path.
+ // More information on the format:
+ // https://developer.mozilla.org/en-US/docs/Web/SVG/Tutorial/Paths
+ var pathStr = "M" + posStart.x + "," + posStart.y + " " +
+ "C" + startHandle.x + "," + startHandle.y + " " +
+ endHandle.x + "," + endHandle.y + " " +
+ posEnd.x + "," + posEnd.y;
+
+ arrow.setAttribute("d", pathStr);
+};
+
+var drawArrows = function() {
+ const numOfArrows = document.querySelectorAll("path[id^=arrow]").length;
+ for (var i = 0; i < numOfArrows; ++i) {
+ drawArrow(i);
+ }
+}
+
+var toggleArrows = function(event) {
+ const arrows = document.querySelector("#arrows");
+ if (event.target.checked) {
+ arrows.setAttribute("visibility", "visible");
+ } else {
+ arrows.setAttribute("visibility", "hidden");
+ }
+}
+
+window.addEventListener("resize", drawArrows);
+document.addEventListener("DOMContentLoaded", function() {
+ // Whenever we show invocation, locations change, i.e. we
+ // need to redraw arrows.
+ document
+ .querySelector('input[id="showinvocation"]')
+ .addEventListener("click", drawArrows);
+ // Hiding irrelevant lines also should cause arrow rerender.
+ document
+ .querySelector('input[name="showCounterexample"]')
+ .addEventListener("change", drawArrows);
+ document
+ .querySelector('input[name="showArrows"]')
+ .addEventListener("change", toggleArrows);
+ drawArrows();
+ // Default highlighting for the last event.
+ highlightArrowsForSelectedEvent();
+});
+</script>
+
+<script type='text/javascript'>
+var digitMatcher = new RegExp("[0-9]+");
+
+var querySelectorAllArray = function(selector) {
+ return Array.prototype.slice.call(
+ document.querySelectorAll(selector));
+}
+
+document.addEventListener("DOMContentLoaded", function() {
+ querySelectorAllArray(".PathNav > a").forEach(
+ function(currentValue, currentIndex) {
+ var hrefValue = currentValue.getAttribute("href");
+ currentValue.onclick = function() {
+ scrollTo(document.querySelector(hrefValue));
+ return false;
+ };
+ });
+});
+
+var findNum = function() {
+ var s = document.querySelector(".msg.selected");
+ if (!s || s.id == "EndPath") {
+ return 0;
+ }
+ var out = parseInt(digitMatcher.exec(s.id)[0]);
+ return out;
+};
+
+var classListAdd = function(el, theClass) {
+ if(!el.className.baseVal)
+ el.className += " " + theClass;
+ else
+ el.className.baseVal += " " + theClass;
+};
+
+var classListRemove = function(el, theClass) {
+ var className = (!el.className.baseVal) ?
+ el.className : el.className.baseVal;
+ className = className.replace(" " + theClass, "");
+ if(!el.className.baseVal)
+ el.className = className;
+ else
+ el.className.baseVal = className;
+};
+
+var scrollTo = function(el) {
+ querySelectorAllArray(".selected").forEach(function(s) {
+ classListRemove(s, "selected");
+ });
+ classListAdd(el, "selected");
+ window.scrollBy(0, el.getBoundingClientRect().top -
+ (window.innerHeight / 2));
+ highlightArrowsForSelectedEvent();
+};
+
+var move = function(num, up, numItems) {
+ if (num == 1 && up || num == numItems - 1 && !up) {
+ return 0;
+ } else if (num == 0 && up) {
+ return numItems - 1;
+ } else if (num == 0 && !up) {
+ return 1 % numItems;
+ }
+ return up ? num - 1 : num + 1;
+}
+
+var numToId = function(num) {
+ if (num == 0) {
+ return document.getElementById("EndPath")
+ }
+ return document.getElementById("Path" + num);
+};
+
+var navigateTo = function(up) {
+ var numItems = document.querySelectorAll(
+ ".line > .msgEvent, .line > .msgControl").length;
+ var currentSelected = findNum();
+ var newSelected = move(currentSelected, up, numItems);
+ var newEl = numToId(newSelected, numItems);
+
+ // Scroll element into center.
+ scrollTo(newEl);
+};
+
+window.addEventListener("keydown", function (event) {
+ if (event.defaultPrevented) {
+ return;
+ }
+ // key 'j'
+ if (event.keyCode == 74) {
+ navigateTo(/*up=*/false);
+ // key 'k'
+ } else if (event.keyCode == 75) {
+ navigateTo(/*up=*/true);
+ } else {
+ return;
+ }
+ event.preventDefault();
+}, true);
+</script>
+
+<script type='text/javascript'>
+
+var toggleHelp = function() {
+ var hint = document.querySelector("#tooltiphint");
+ var attributeName = "hidden";
+ if (hint.hasAttribute(attributeName)) {
+ hint.removeAttribute(attributeName);
+ } else {
+ hint.setAttribute("hidden", "true");
+ }
+};
+window.addEventListener("keydown", function (event) {
+ if (event.defaultPrevented) {
+ return;
+ }
+ if (event.key == "?") {
+ toggleHelp();
+ } else {
+ return;
+ }
+ event.preventDefault();
+});
+</script>
+
+<style type="text/css">
+ svg {
+ position:absolute;
+ top:0;
+ left:0;
+ height:100%;
+ width:100%;
+ pointer-events: none;
+ overflow: visible
+ }
+ .arrow {
+ stroke-opacity: 0.2;
+ stroke-width: 1;
+ marker-end: url(#arrowhead);
+ }
+
+ .arrow.selected {
+ stroke-opacity: 0.6;
+ stroke-width: 2;
+ marker-end: url(#arrowheadSelected);
+ }
+
+ .arrowhead {
+ orient: auto;
+ stroke: none;
+ opacity: 0.6;
+ fill: blue;
+ }
+</style>
+<svg xmlns="http://www.w3.org/2000/svg">
+ <defs>
+ <marker id="arrowheadSelected" class="arrowhead" opacity="0.6"
+ viewBox="0 0 10 10" refX="3" refY="5"
+ markerWidth="4" markerHeight="4">
+ <path d="M 0 0 L 10 5 L 0 10 z" />
+ </marker>
+ <marker id="arrowhead" class="arrowhead" opacity="0.2"
+ viewBox="0 0 10 10" refX="3" refY="5"
+ markerWidth="4" markerHeight="4">
+ <path d="M 0 0 L 10 5 L 0 10 z" />
+ </marker>
+ </defs>
+ <g id="arrows" fill="none" stroke="blue" visibility="hidden">
+ <path class="arrow" id="arrow0"/>
+ <path class="arrow" id="arrow1"/>
+ <path class="arrow" id="arrow2"/>
+ <path class="arrow" id="arrow3"/>
+ <path class="arrow" id="arrow4"/>
+ <path class="arrow" id="arrow5"/>
+ <path class="arrow" id="arrow6"/>
+ <path class="arrow" id="arrow7"/>
+ <path class="arrow" id="arrow8"/>
+ <path class="arrow" id="arrow9"/>
+ <path class="arrow" id="arrow10"/>
+ <path class="arrow" id="arrow11"/>
+ <path class="arrow" id="arrow12"/>
+ <path class="arrow" id="arrow13"/>
+ <path class="arrow" id="arrow14"/>
+ <path class="arrow" id="arrow15"/>
+ <path class="arrow" id="arrow16"/>
+ <path class="arrow" id="arrow17"/>
+ <path class="arrow" id="arrow18"/>
+ <path class="arrow" id="arrow19"/>
+ <path class="arrow" id="arrow20"/>
+ <path class="arrow" id="arrow21"/>
+ <path class="arrow" id="arrow22"/>
+ <path class="arrow" id="arrow23"/>
+ <path class="arrow" id="arrow24"/>
+ <path class="arrow" id="arrow25"/>
+ <path class="arrow" id="arrow26"/>
+ <path class="arrow" id="arrow27"/>
+ <path class="arrow" id="arrow28"/>
+ <path class="arrow" id="arrow29"/>
+ <path class="arrow" id="arrow30"/>
+ <path class="arrow" id="arrow31"/>
+ <path class="arrow" id="arrow32"/>
+ <path class="arrow" id="arrow33"/>
+
+ </g>
+</svg>
+<script type='text/javascript'>
+const arrowIndices = [ 34,32,31,30,29,26,24,17,13,7,2,1,0 ]
+</script>
+<table class="code" data-fileid="1">
+<tr class="codeline" data-linenumber="1"><td class="num" id="LN1">1</td><td class="line"><span class='comment'>/*</span></td></tr>
+<tr class="codeline" data-linenumber="2"><td class="num" id="LN2">2</td><td class="line"> <span class='comment'>* pluma-document-output-stream.c</span></td></tr>
+<tr class="codeline" data-linenumber="3"><td class="num" id="LN3">3</td><td class="line"> <span class='comment'>* This file is part of pluma</span></td></tr>
+<tr class="codeline" data-linenumber="4"><td class="num" id="LN4">4</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="5"><td class="num" id="LN5">5</td><td class="line"> <span class='comment'>* Copyright (C) 2010 - Ignacio Casal Quinteiro</span></td></tr>
+<tr class="codeline" data-linenumber="6"><td class="num" id="LN6">6</td><td class="line"> <span class='comment'>* Copyright (C) 2012-2021 MATE Developers</span></td></tr>
+<tr class="codeline" data-linenumber="7"><td class="num" id="LN7">7</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="8"><td class="num" id="LN8">8</td><td class="line"> <span class='comment'>* pluma is free software; you can redistribute it and/or modify</span></td></tr>
+<tr class="codeline" data-linenumber="9"><td class="num" id="LN9">9</td><td class="line"> <span class='comment'>* it under the terms of the GNU General Public License as published by</span></td></tr>
+<tr class="codeline" data-linenumber="10"><td class="num" id="LN10">10</td><td class="line"> <span class='comment'>* the Free Software Foundation; either version 2 of the License, or</span></td></tr>
+<tr class="codeline" data-linenumber="11"><td class="num" id="LN11">11</td><td class="line"> <span class='comment'>* (at your option) any later version.</span></td></tr>
+<tr class="codeline" data-linenumber="12"><td class="num" id="LN12">12</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="13"><td class="num" id="LN13">13</td><td class="line"> <span class='comment'>* pluma is distributed in the hope that it will be useful,</span></td></tr>
+<tr class="codeline" data-linenumber="14"><td class="num" id="LN14">14</td><td class="line"> <span class='comment'>* but WITHOUT ANY WARRANTY; without even the implied warranty of</span></td></tr>
+<tr class="codeline" data-linenumber="15"><td class="num" id="LN15">15</td><td class="line"> <span class='comment'>* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></td></tr>
+<tr class="codeline" data-linenumber="16"><td class="num" id="LN16">16</td><td class="line"> <span class='comment'>* GNU General Public License for more details.</span></td></tr>
+<tr class="codeline" data-linenumber="17"><td class="num" id="LN17">17</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="18"><td class="num" id="LN18">18</td><td class="line"> <span class='comment'>* You should have received a copy of the GNU General Public License</span></td></tr>
+<tr class="codeline" data-linenumber="19"><td class="num" id="LN19">19</td><td class="line"> <span class='comment'>* along with pluma; if not, write to the Free Software</span></td></tr>
+<tr class="codeline" data-linenumber="20"><td class="num" id="LN20">20</td><td class="line"> <span class='comment'>* Foundation, Inc., 51 Franklin St, Fifth Floor,</span></td></tr>
+<tr class="codeline" data-linenumber="21"><td class="num" id="LN21">21</td><td class="line"> <span class='comment'>* Boston, MA 02110-1301 USA</span></td></tr>
+<tr class="codeline" data-linenumber="22"><td class="num" id="LN22">22</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="23"><td class="num" id="LN23">23</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="24"><td class="num" id="LN24">24</td><td class="line"><span class='directive'>#include "config.h"</span></td></tr>
+<tr class="codeline" data-linenumber="25"><td class="num" id="LN25">25</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="26"><td class="num" id="LN26">26</td><td class="line"><span class='directive'>#include &lt;string.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="27"><td class="num" id="LN27">27</td><td class="line"><span class='directive'>#include &lt;glib.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="28"><td class="num" id="LN28">28</td><td class="line"><span class='directive'>#include &lt;glib/gi18n.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="29"><td class="num" id="LN29">29</td><td class="line"><span class='directive'>#include &lt;gio/gio.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="30"><td class="num" id="LN30">30</td><td class="line"><span class='directive'>#include "pluma-document-output-stream.h"</span></td></tr>
+<tr class="codeline" data-linenumber="31"><td class="num" id="LN31">31</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="32"><td class="num" id="LN32">32</td><td class="line"><span class='comment'>/* NOTE: never use async methods on this stream, the stream is just</span></td></tr>
+<tr class="codeline" data-linenumber="33"><td class="num" id="LN33">33</td><td class="line"> <span class='comment'>* a wrapper around GtkTextBuffer api so that we can use GIO Stream</span></td></tr>
+<tr class="codeline" data-linenumber="34"><td class="num" id="LN34">34</td><td class="line"> <span class='comment'>* methods, but the undelying code operates on a GtkTextBuffer, so</span></td></tr>
+<tr class="codeline" data-linenumber="35"><td class="num" id="LN35">35</td><td class="line"> <span class='comment'>* there is no I/O involved and should be accessed only by the main</span></td></tr>
+<tr class="codeline" data-linenumber="36"><td class="num" id="LN36">36</td><td class="line"> <span class='comment'>* thread */</span></td></tr>
+<tr class="codeline" data-linenumber="37"><td class="num" id="LN37">37</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="38"><td class="num" id="LN38">38</td><td class="line"><span class='directive'>#define <span class='macro'>MAX_UNICHAR_LEN<span class='macro_popup'>6</span></span> 6</span></td></tr>
+<tr class="codeline" data-linenumber="39"><td class="num" id="LN39">39</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="40"><td class="num" id="LN40">40</td><td class="line"><span class='keyword'>struct</span> _PlumaDocumentOutputStreamPrivate</td></tr>
+<tr class="codeline" data-linenumber="41"><td class="num" id="LN41">41</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="42"><td class="num" id="LN42">42</td><td class="line"> PlumaDocument *doc;</td></tr>
+<tr class="codeline" data-linenumber="43"><td class="num" id="LN43">43</td><td class="line"> GtkTextIter pos;</td></tr>
+<tr class="codeline" data-linenumber="44"><td class="num" id="LN44">44</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="45"><td class="num" id="LN45">45</td><td class="line"> gchar *buffer;</td></tr>
+<tr class="codeline" data-linenumber="46"><td class="num" id="LN46">46</td><td class="line"> gsize buflen;</td></tr>
+<tr class="codeline" data-linenumber="47"><td class="num" id="LN47">47</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="48"><td class="num" id="LN48">48</td><td class="line"> guint is_initialized : 1;</td></tr>
+<tr class="codeline" data-linenumber="49"><td class="num" id="LN49">49</td><td class="line"> guint is_closed : 1;</td></tr>
+<tr class="codeline" data-linenumber="50"><td class="num" id="LN50">50</td><td class="line">};</td></tr>
+<tr class="codeline" data-linenumber="51"><td class="num" id="LN51">51</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="52"><td class="num" id="LN52">52</td><td class="line"><span class='keyword'>enum</span></td></tr>
+<tr class="codeline" data-linenumber="53"><td class="num" id="LN53">53</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="54"><td class="num" id="LN54">54</td><td class="line"> PROP_0,</td></tr>
+<tr class="codeline" data-linenumber="55"><td class="num" id="LN55">55</td><td class="line"> PROP_DOCUMENT</td></tr>
+<tr class="codeline" data-linenumber="56"><td class="num" id="LN56">56</td><td class="line">};</td></tr>
+<tr class="codeline" data-linenumber="57"><td class="num" id="LN57">57</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="58"><td class="num" id="LN58">58</td><td class="line"><span class='macro'>G_DEFINE_TYPE_WITH_PRIVATE (PlumaDocumentOutputStream, pluma_document_output_stream, G_TYPE_OUTPUT_STREAM)<span class='macro_popup'>static void pluma_document_output_stream_init (PlumaDocumentOutputStream<br> *self); static void pluma_document_output_stream_class_init (<br>PlumaDocumentOutputStreamClass *klass); static GType pluma_document_output_stream_get_type_once<br> (void); static gpointer pluma_document_output_stream_parent_class<br> = ((void*)0); static gint PlumaDocumentOutputStream_private_offset<br>; static void pluma_document_output_stream_class_intern_init (<br>gpointer klass) { pluma_document_output_stream_parent_class =<br> g_type_class_peek_parent (klass); if (PlumaDocumentOutputStream_private_offset<br> != 0) g_type_class_adjust_private_offset (klass, &amp;PlumaDocumentOutputStream_private_offset<br>); pluma_document_output_stream_class_init ((PlumaDocumentOutputStreamClass<br>*) klass); } __attribute__ ((__unused__)) static inline gpointer<br> pluma_document_output_stream_get_instance_private (PlumaDocumentOutputStream<br> *self) { return (((gpointer) ((guint8*) (self) + (glong) (PlumaDocumentOutputStream_private_offset<br>)))); } GType pluma_document_output_stream_get_type (void) { static<br> gsize static_g_define_type_id = 0; if ((__extension__ ({ _Static_assert<br> (sizeof *(&amp;static_g_define_type_id) == sizeof (gpointer)<br>, "Expression evaluates to false"); (void) (0 ? (gpointer) *(<br>&amp;static_g_define_type_id) : ((void*)0)); (!(__extension__<br> ({ _Static_assert (sizeof *(&amp;static_g_define_type_id) ==<br> sizeof (gpointer), "Expression evaluates to false"); __typeof__<br> (*(&amp;static_g_define_type_id)) gapg_temp_newval; __typeof__<br> ((&amp;static_g_define_type_id)) gapg_temp_atomic = (&amp;static_g_define_type_id<br>); __atomic_load (gapg_temp_atomic, &amp;gapg_temp_newval, 5)<br>; gapg_temp_newval; })) &amp;&amp; g_once_init_enter (&amp;static_g_define_type_id<br>)); }))) { GType g_define_type_id = pluma_document_output_stream_get_type_once<br> (); (__extension__ ({ _Static_assert (sizeof *(&amp;static_g_define_type_id<br>) == sizeof (gpointer), "Expression evaluates to false"); 0 ?<br> (void) (*(&amp;static_g_define_type_id) = (g_define_type_id)<br>) : (void) 0; g_once_init_leave ((&amp;static_g_define_type_id<br>), (gsize) (g_define_type_id)); })); } return static_g_define_type_id<br>; } __attribute__ ((__noinline__)) static GType pluma_document_output_stream_get_type_once<br> (void) { GType g_define_type_id = g_type_register_static_simple<br> ((g_output_stream_get_type ()), g_intern_static_string ("PlumaDocumentOutputStream"<br>), sizeof (PlumaDocumentOutputStreamClass), (GClassInitFunc)(<br>void (*)(void)) pluma_document_output_stream_class_intern_init<br>, sizeof (PlumaDocumentOutputStream), (GInstanceInitFunc)(void<br> (*)(void)) pluma_document_output_stream_init, (GTypeFlags) 0<br>); { {{ PlumaDocumentOutputStream_private_offset = g_type_add_instance_private<br> (g_define_type_id, sizeof (PlumaDocumentOutputStreamPrivate)<br>); };} } return g_define_type_id; }</span></span></td></tr>
+<tr class="codeline" data-linenumber="59"><td class="num" id="LN59">59</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="60"><td class="num" id="LN60">60</td><td class="line"><span class='keyword'>static</span> gssize pluma_document_output_stream_write (GOutputStream *stream,</td></tr>
+<tr class="codeline" data-linenumber="61"><td class="num" id="LN61">61</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>void</span> *buffer,</td></tr>
+<tr class="codeline" data-linenumber="62"><td class="num" id="LN62">62</td><td class="line"> gsize count,</td></tr>
+<tr class="codeline" data-linenumber="63"><td class="num" id="LN63">63</td><td class="line"> GCancellable *cancellable,</td></tr>
+<tr class="codeline" data-linenumber="64"><td class="num" id="LN64">64</td><td class="line"> GError **error);</td></tr>
+<tr class="codeline" data-linenumber="65"><td class="num" id="LN65">65</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="66"><td class="num" id="LN66">66</td><td class="line"><span class='keyword'>static</span> gboolean pluma_document_output_stream_flush (GOutputStream *stream,</td></tr>
+<tr class="codeline" data-linenumber="67"><td class="num" id="LN67">67</td><td class="line"> GCancellable *cancellable,</td></tr>
+<tr class="codeline" data-linenumber="68"><td class="num" id="LN68">68</td><td class="line"> GError **error);</td></tr>
+<tr class="codeline" data-linenumber="69"><td class="num" id="LN69">69</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="70"><td class="num" id="LN70">70</td><td class="line"><span class='keyword'>static</span> gboolean pluma_document_output_stream_close (GOutputStream *stream,</td></tr>
+<tr class="codeline" data-linenumber="71"><td class="num" id="LN71">71</td><td class="line"> GCancellable *cancellable,</td></tr>
+<tr class="codeline" data-linenumber="72"><td class="num" id="LN72">72</td><td class="line"> GError **error);</td></tr>
+<tr class="codeline" data-linenumber="73"><td class="num" id="LN73">73</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="74"><td class="num" id="LN74">74</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="75"><td class="num" id="LN75">75</td><td class="line">pluma_document_output_stream_set_property (GObject *object,</td></tr>
+<tr class="codeline" data-linenumber="76"><td class="num" id="LN76">76</td><td class="line"> guint prop_id,</td></tr>
+<tr class="codeline" data-linenumber="77"><td class="num" id="LN77">77</td><td class="line"> <span class='keyword'>const</span> GValue *value,</td></tr>
+<tr class="codeline" data-linenumber="78"><td class="num" id="LN78">78</td><td class="line"> GParamSpec *pspec)</td></tr>
+<tr class="codeline" data-linenumber="79"><td class="num" id="LN79">79</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="80"><td class="num" id="LN80">80</td><td class="line"> PlumaDocumentOutputStream *stream = <span class='macro'>PLUMA_DOCUMENT_OUTPUT_STREAM (object)<span class='macro_popup'>((((PlumaDocumentOutputStream*) (void *) ((object)))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="81"><td class="num" id="LN81">81</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="82"><td class="num" id="LN82">82</td><td class="line"> <span class='keyword'>switch</span> (prop_id)</td></tr>
+<tr class="codeline" data-linenumber="83"><td class="num" id="LN83">83</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="84"><td class="num" id="LN84">84</td><td class="line"> <span class='keyword'>case</span> PROP_DOCUMENT:</td></tr>
+<tr class="codeline" data-linenumber="85"><td class="num" id="LN85">85</td><td class="line"> stream-&gt;priv-&gt;doc = <span class='macro'>PLUMA_DOCUMENT (g_value_get_object (value))<span class='macro_popup'>((((PlumaDocument*) (void *) ((g_value_get_object (value)))))<br>)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="86"><td class="num" id="LN86">86</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="87"><td class="num" id="LN87">87</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="88"><td class="num" id="LN88">88</td><td class="line"> <span class='keyword'>default</span>:</td></tr>
+<tr class="codeline" data-linenumber="89"><td class="num" id="LN89">89</td><td class="line"> <span class='macro'>G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec)<span class='macro_popup'>do { GObject *_glib__object = (GObject*) ((object)); GParamSpec<br> *_glib__pspec = (GParamSpec*) ((pspec)); guint _glib__property_id<br> = ((prop_id)); g_warning ("%s:%d: invalid %s id %u for \"%s\" of type '%s' in '%s'"<br>, "pluma-document-output-stream.c", 89, ("property"), _glib__property_id<br>, _glib__pspec-&gt;name, g_type_name ((((((GTypeClass*) (((GTypeInstance<br>*) (_glib__pspec))-&gt;g_class))-&gt;g_type)))), (g_type_name<br> ((((((GTypeClass*) (((GTypeInstance*) (_glib__object))-&gt;g_class<br>))-&gt;g_type)))))); } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="90"><td class="num" id="LN90">90</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="91"><td class="num" id="LN91">91</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="92"><td class="num" id="LN92">92</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="93"><td class="num" id="LN93">93</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="94"><td class="num" id="LN94">94</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="95"><td class="num" id="LN95">95</td><td class="line">pluma_document_output_stream_get_property (GObject *object,</td></tr>
+<tr class="codeline" data-linenumber="96"><td class="num" id="LN96">96</td><td class="line"> guint prop_id,</td></tr>
+<tr class="codeline" data-linenumber="97"><td class="num" id="LN97">97</td><td class="line"> GValue *value,</td></tr>
+<tr class="codeline" data-linenumber="98"><td class="num" id="LN98">98</td><td class="line"> GParamSpec *pspec)</td></tr>
+<tr class="codeline" data-linenumber="99"><td class="num" id="LN99">99</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="100"><td class="num" id="LN100">100</td><td class="line"> PlumaDocumentOutputStream *stream = <span class='macro'>PLUMA_DOCUMENT_OUTPUT_STREAM (object)<span class='macro_popup'>((((PlumaDocumentOutputStream*) (void *) ((object)))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="101"><td class="num" id="LN101">101</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="102"><td class="num" id="LN102">102</td><td class="line"> <span class='keyword'>switch</span> (prop_id)</td></tr>
+<tr class="codeline" data-linenumber="103"><td class="num" id="LN103">103</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="104"><td class="num" id="LN104">104</td><td class="line"> <span class='keyword'>case</span> PROP_DOCUMENT:</td></tr>
+<tr class="codeline" data-linenumber="105"><td class="num" id="LN105">105</td><td class="line"> g_value_set_object (value, stream-&gt;priv-&gt;doc);</td></tr>
+<tr class="codeline" data-linenumber="106"><td class="num" id="LN106">106</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="107"><td class="num" id="LN107">107</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="108"><td class="num" id="LN108">108</td><td class="line"> <span class='keyword'>default</span>:</td></tr>
+<tr class="codeline" data-linenumber="109"><td class="num" id="LN109">109</td><td class="line"> <span class='macro'>G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec)<span class='macro_popup'>do { GObject *_glib__object = (GObject*) ((object)); GParamSpec<br> *_glib__pspec = (GParamSpec*) ((pspec)); guint _glib__property_id<br> = ((prop_id)); g_warning ("%s:%d: invalid %s id %u for \"%s\" of type '%s' in '%s'"<br>, "pluma-document-output-stream.c", 109, ("property"), _glib__property_id<br>, _glib__pspec-&gt;name, g_type_name ((((((GTypeClass*) (((GTypeInstance<br>*) (_glib__pspec))-&gt;g_class))-&gt;g_type)))), (g_type_name<br> ((((((GTypeClass*) (((GTypeInstance*) (_glib__object))-&gt;g_class<br>))-&gt;g_type)))))); } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="110"><td class="num" id="LN110">110</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="111"><td class="num" id="LN111">111</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="112"><td class="num" id="LN112">112</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="113"><td class="num" id="LN113">113</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="114"><td class="num" id="LN114">114</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="115"><td class="num" id="LN115">115</td><td class="line">pluma_document_output_stream_finalize (GObject *object)</td></tr>
+<tr class="codeline" data-linenumber="116"><td class="num" id="LN116">116</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="117"><td class="num" id="LN117">117</td><td class="line"> PlumaDocumentOutputStream *stream = <span class='macro'>PLUMA_DOCUMENT_OUTPUT_STREAM (object)<span class='macro_popup'>((((PlumaDocumentOutputStream*) (void *) ((object)))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="118"><td class="num" id="LN118">118</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="119"><td class="num" id="LN119">119</td><td class="line"> g_free (stream-&gt;priv-&gt;buffer);</td></tr>
+<tr class="codeline" data-linenumber="120"><td class="num" id="LN120">120</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="121"><td class="num" id="LN121">121</td><td class="line"> <span class='macro'>G_OBJECT_CLASS (pluma_document_output_stream_parent_class)<span class='macro_popup'>((((GObjectClass*) (void *) ((pluma_document_output_stream_parent_class<br>)))))</span></span>-&gt;finalize (object);</td></tr>
+<tr class="codeline" data-linenumber="122"><td class="num" id="LN122">122</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="123"><td class="num" id="LN123">123</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="124"><td class="num" id="LN124">124</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="125"><td class="num" id="LN125">125</td><td class="line">pluma_document_output_stream_constructed (GObject *object)</td></tr>
+<tr class="codeline" data-linenumber="126"><td class="num" id="LN126">126</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="127"><td class="num" id="LN127">127</td><td class="line"> PlumaDocumentOutputStream *stream = <span class='macro'>PLUMA_DOCUMENT_OUTPUT_STREAM (object)<span class='macro_popup'>((((PlumaDocumentOutputStream*) (void *) ((object)))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="128"><td class="num" id="LN128">128</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="129"><td class="num" id="LN129">129</td><td class="line"> <span class='keyword'>if</span> (!stream-&gt;priv-&gt;doc)</td></tr>
+<tr class="codeline" data-linenumber="130"><td class="num" id="LN130">130</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="131"><td class="num" id="LN131">131</td><td class="line"> g_critical (<span class='string_literal'>"This should never happen, a problem happened constructing the Document Output Stream!"</span>);</td></tr>
+<tr class="codeline" data-linenumber="132"><td class="num" id="LN132">132</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="133"><td class="num" id="LN133">133</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="134"><td class="num" id="LN134">134</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="135"><td class="num" id="LN135">135</td><td class="line"> <span class='comment'>/* Init the undoable action */</span></td></tr>
+<tr class="codeline" data-linenumber="136"><td class="num" id="LN136">136</td><td class="line"> gtk_source_buffer_begin_not_undoable_action (<span class='macro'>GTK_SOURCE_BUFFER (stream-&gt;priv-&gt;doc)<span class='macro_popup'>((((GtkSourceBuffer*) (void *) ((stream-&gt;priv-&gt;doc)))))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="137"><td class="num" id="LN137">137</td><td class="line"> <span class='comment'>/* clear the buffer */</span></td></tr>
+<tr class="codeline" data-linenumber="138"><td class="num" id="LN138">138</td><td class="line"> gtk_text_buffer_set_text (<span class='macro'>GTK_TEXT_BUFFER (stream-&gt;priv-&gt;doc)<span class='macro_popup'>((((GtkTextBuffer*) (void *) ((stream-&gt;priv-&gt;doc)))))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="139"><td class="num" id="LN139">139</td><td class="line"> <span class='string_literal'>""</span>, 0);</td></tr>
+<tr class="codeline" data-linenumber="140"><td class="num" id="LN140">140</td><td class="line"> gtk_text_buffer_set_modified (<span class='macro'>GTK_TEXT_BUFFER (stream-&gt;priv-&gt;doc)<span class='macro_popup'>((((GtkTextBuffer*) (void *) ((stream-&gt;priv-&gt;doc)))))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="141"><td class="num" id="LN141">141</td><td class="line"> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="142"><td class="num" id="LN142">142</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="143"><td class="num" id="LN143">143</td><td class="line"> gtk_source_buffer_end_not_undoable_action (<span class='macro'>GTK_SOURCE_BUFFER (stream-&gt;priv-&gt;doc)<span class='macro_popup'>((((GtkSourceBuffer*) (void *) ((stream-&gt;priv-&gt;doc)))))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="144"><td class="num" id="LN144">144</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="145"><td class="num" id="LN145">145</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="146"><td class="num" id="LN146">146</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="147"><td class="num" id="LN147">147</td><td class="line">pluma_document_output_stream_class_init (PlumaDocumentOutputStreamClass *klass)</td></tr>
+<tr class="codeline" data-linenumber="148"><td class="num" id="LN148">148</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="149"><td class="num" id="LN149">149</td><td class="line"> GObjectClass *object_class = <span class='macro'>G_OBJECT_CLASS (klass)<span class='macro_popup'>((((GObjectClass*) (void *) ((klass)))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="150"><td class="num" id="LN150">150</td><td class="line"> GOutputStreamClass *stream_class = <span class='macro'>G_OUTPUT_STREAM_CLASS (klass)<span class='macro_popup'>((((GOutputStreamClass*) (void *) ((klass)))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="151"><td class="num" id="LN151">151</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="152"><td class="num" id="LN152">152</td><td class="line"> object_class-&gt;get_property = pluma_document_output_stream_get_property;</td></tr>
+<tr class="codeline" data-linenumber="153"><td class="num" id="LN153">153</td><td class="line"> object_class-&gt;set_property = pluma_document_output_stream_set_property;</td></tr>
+<tr class="codeline" data-linenumber="154"><td class="num" id="LN154">154</td><td class="line"> object_class-&gt;finalize = pluma_document_output_stream_finalize;</td></tr>
+<tr class="codeline" data-linenumber="155"><td class="num" id="LN155">155</td><td class="line"> object_class-&gt;constructed = pluma_document_output_stream_constructed;</td></tr>
+<tr class="codeline" data-linenumber="156"><td class="num" id="LN156">156</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="157"><td class="num" id="LN157">157</td><td class="line"> stream_class-&gt;write_fn = pluma_document_output_stream_write;</td></tr>
+<tr class="codeline" data-linenumber="158"><td class="num" id="LN158">158</td><td class="line"> stream_class-&gt;flush = pluma_document_output_stream_flush;</td></tr>
+<tr class="codeline" data-linenumber="159"><td class="num" id="LN159">159</td><td class="line"> stream_class-&gt;close_fn = pluma_document_output_stream_close;</td></tr>
+<tr class="codeline" data-linenumber="160"><td class="num" id="LN160">160</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="161"><td class="num" id="LN161">161</td><td class="line"> g_object_class_install_property (object_class,</td></tr>
+<tr class="codeline" data-linenumber="162"><td class="num" id="LN162">162</td><td class="line"> PROP_DOCUMENT,</td></tr>
+<tr class="codeline" data-linenumber="163"><td class="num" id="LN163">163</td><td class="line"> g_param_spec_object (<span class='string_literal'>"document"</span>,</td></tr>
+<tr class="codeline" data-linenumber="164"><td class="num" id="LN164">164</td><td class="line"> <span class='string_literal'>"Document"</span>,</td></tr>
+<tr class="codeline" data-linenumber="165"><td class="num" id="LN165">165</td><td class="line"> <span class='string_literal'>"The document which is written"</span>,</td></tr>
+<tr class="codeline" data-linenumber="166"><td class="num" id="LN166">166</td><td class="line"> <span class='macro'>PLUMA_TYPE_DOCUMENT<span class='macro_popup'>(pluma_document_get_type())</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="167"><td class="num" id="LN167">167</td><td class="line"> G_PARAM_READWRITE |</td></tr>
+<tr class="codeline" data-linenumber="168"><td class="num" id="LN168">168</td><td class="line"> G_PARAM_CONSTRUCT_ONLY));</td></tr>
+<tr class="codeline" data-linenumber="169"><td class="num" id="LN169">169</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="170"><td class="num" id="LN170">170</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="171"><td class="num" id="LN171">171</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="172"><td class="num" id="LN172">172</td><td class="line">pluma_document_output_stream_init (PlumaDocumentOutputStream *stream)</td></tr>
+<tr class="codeline" data-linenumber="173"><td class="num" id="LN173">173</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="174"><td class="num" id="LN174">174</td><td class="line"> stream-&gt;priv = pluma_document_output_stream_get_instance_private (stream);</td></tr>
+<tr class="codeline" data-linenumber="175"><td class="num" id="LN175">175</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="176"><td class="num" id="LN176">176</td><td class="line"> stream-&gt;priv-&gt;buffer = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="177"><td class="num" id="LN177">177</td><td class="line"> stream-&gt;priv-&gt;buflen = 0;</td></tr>
+<tr class="codeline" data-linenumber="178"><td class="num" id="LN178">178</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="179"><td class="num" id="LN179">179</td><td class="line"> stream-&gt;priv-&gt;is_initialized = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="180"><td class="num" id="LN180">180</td><td class="line"> stream-&gt;priv-&gt;is_closed = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="181"><td class="num" id="LN181">181</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="182"><td class="num" id="LN182">182</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="183"><td class="num" id="LN183">183</td><td class="line"><span class='keyword'>static</span> PlumaDocumentNewlineType</td></tr>
+<tr class="codeline" data-linenumber="184"><td class="num" id="LN184">184</td><td class="line">get_newline_type (GtkTextIter *end)</td></tr>
+<tr class="codeline" data-linenumber="185"><td class="num" id="LN185">185</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="186"><td class="num" id="LN186">186</td><td class="line"> PlumaDocumentNewlineType res;</td></tr>
+<tr class="codeline" data-linenumber="187"><td class="num" id="LN187">187</td><td class="line"> GtkTextIter copy;</td></tr>
+<tr class="codeline" data-linenumber="188"><td class="num" id="LN188">188</td><td class="line"> gunichar c;</td></tr>
+<tr class="codeline" data-linenumber="189"><td class="num" id="LN189">189</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="190"><td class="num" id="LN190">190</td><td class="line"> copy = *end;</td></tr>
+<tr class="codeline" data-linenumber="191"><td class="num" id="LN191">191</td><td class="line"> c = gtk_text_iter_get_char (&amp;copy);</td></tr>
+<tr class="codeline" data-linenumber="192"><td class="num" id="LN192">192</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="193"><td class="num" id="LN193">193</td><td class="line"> <span class='keyword'>if</span> (g_unichar_break_type (c) == G_UNICODE_BREAK_CARRIAGE_RETURN)</td></tr>
+<tr class="codeline" data-linenumber="194"><td class="num" id="LN194">194</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="195"><td class="num" id="LN195">195</td><td class="line"> <span class='keyword'>if</span> (gtk_text_iter_forward_char (&amp;copy) &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="196"><td class="num" id="LN196">196</td><td class="line"> g_unichar_break_type (gtk_text_iter_get_char (&amp;copy)) == G_UNICODE_BREAK_LINE_FEED)</td></tr>
+<tr class="codeline" data-linenumber="197"><td class="num" id="LN197">197</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="198"><td class="num" id="LN198">198</td><td class="line"> res = PLUMA_DOCUMENT_NEWLINE_TYPE_CR_LF;</td></tr>
+<tr class="codeline" data-linenumber="199"><td class="num" id="LN199">199</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="200"><td class="num" id="LN200">200</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="201"><td class="num" id="LN201">201</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="202"><td class="num" id="LN202">202</td><td class="line"> res = PLUMA_DOCUMENT_NEWLINE_TYPE_CR;</td></tr>
+<tr class="codeline" data-linenumber="203"><td class="num" id="LN203">203</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="204"><td class="num" id="LN204">204</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="205"><td class="num" id="LN205">205</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="206"><td class="num" id="LN206">206</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="207"><td class="num" id="LN207">207</td><td class="line"> res = PLUMA_DOCUMENT_NEWLINE_TYPE_LF;</td></tr>
+<tr class="codeline" data-linenumber="208"><td class="num" id="LN208">208</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="209"><td class="num" id="LN209">209</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="210"><td class="num" id="LN210">210</td><td class="line"> <span class='keyword'>return</span> res;</td></tr>
+<tr class="codeline" data-linenumber="211"><td class="num" id="LN211">211</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="212"><td class="num" id="LN212">212</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="213"><td class="num" id="LN213">213</td><td class="line">GOutputStream *</td></tr>
+<tr class="codeline" data-linenumber="214"><td class="num" id="LN214">214</td><td class="line">pluma_document_output_stream_new (PlumaDocument *doc)</td></tr>
+<tr class="codeline" data-linenumber="215"><td class="num" id="LN215">215</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="216"><td class="num" id="LN216">216</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>G_OUTPUT_STREAM (g_object_new (PLUMA_TYPE_DOCUMENT_OUTPUT_STREAM,<span class='macro_popup'>((((GOutputStream*) (void *) ((g_object_new ((pluma_document_output_stream_get_type<br> ()), "document", doc, ((void*)0)))))))</span></span></td></tr>
+<tr class="codeline" data-linenumber="217"><td class="num" id="LN217">217</td><td class="line"> <span class='string_literal'><span class='macro'>"document"</span>, doc, NULL))<span class='macro_popup'>((((GOutputStream*) (void *) ((g_object_new ((pluma_document_output_stream_get_type<br> ()), "document", doc, ((void*)0)))))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="218"><td class="num" id="LN218">218</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="219"><td class="num" id="LN219">219</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="220"><td class="num" id="LN220">220</td><td class="line">PlumaDocumentNewlineType</td></tr>
+<tr class="codeline" data-linenumber="221"><td class="num" id="LN221">221</td><td class="line">pluma_document_output_stream_detect_newline_type (PlumaDocumentOutputStream *stream)</td></tr>
+<tr class="codeline" data-linenumber="222"><td class="num" id="LN222">222</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="223"><td class="num" id="LN223">223</td><td class="line"> PlumaDocumentNewlineType type;</td></tr>
+<tr class="codeline" data-linenumber="224"><td class="num" id="LN224">224</td><td class="line"> GtkTextIter iter;</td></tr>
+<tr class="codeline" data-linenumber="225"><td class="num" id="LN225">225</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="226"><td class="num" id="LN226">226</td><td class="line"> <span class='macro'>g_return_val_if_fail (PLUMA_IS_DOCUMENT_OUTPUT_STREAM (stream),<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_11<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((stream)); GType __t = ((pluma_document_output_stream_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_11 = 1; else _g_boolean_var_11 = 0<br>; _g_boolean_var_11; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "PLUMA_IS_DOCUMENT_OUTPUT_STREAM (stream)"<br>); return (PLUMA_DOCUMENT_NEWLINE_TYPE_LF); } } while (0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="227"><td class="num" id="LN227">227</td><td class="line"> <span class='macro'>PLUMA_DOCUMENT_NEWLINE_TYPE_DEFAULT)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_11<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((stream)); GType __t = ((pluma_document_output_stream_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_11 = 1; else _g_boolean_var_11 = 0<br>; _g_boolean_var_11; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "PLUMA_IS_DOCUMENT_OUTPUT_STREAM (stream)"<br>); return (PLUMA_DOCUMENT_NEWLINE_TYPE_LF); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="228"><td class="num" id="LN228">228</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="229"><td class="num" id="LN229">229</td><td class="line"> type = <span class='macro'>PLUMA_DOCUMENT_NEWLINE_TYPE_DEFAULT<span class='macro_popup'>PLUMA_DOCUMENT_NEWLINE_TYPE_LF</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="230"><td class="num" id="LN230">230</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="231"><td class="num" id="LN231">231</td><td class="line"> gtk_text_buffer_get_start_iter (<span class='macro'>GTK_TEXT_BUFFER (stream-&gt;priv-&gt;doc)<span class='macro_popup'>((((GtkTextBuffer*) (void *) ((stream-&gt;priv-&gt;doc)))))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="232"><td class="num" id="LN232">232</td><td class="line"> &amp;iter);</td></tr>
+<tr class="codeline" data-linenumber="233"><td class="num" id="LN233">233</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="234"><td class="num" id="LN234">234</td><td class="line"> <span class='keyword'>if</span> (gtk_text_iter_ends_line (&amp;iter) || gtk_text_iter_forward_to_line_end (&amp;iter))</td></tr>
+<tr class="codeline" data-linenumber="235"><td class="num" id="LN235">235</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="236"><td class="num" id="LN236">236</td><td class="line"> type = get_newline_type (&amp;iter);</td></tr>
+<tr class="codeline" data-linenumber="237"><td class="num" id="LN237">237</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="238"><td class="num" id="LN238">238</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="239"><td class="num" id="LN239">239</td><td class="line"> <span class='keyword'>return</span> type;</td></tr>
+<tr class="codeline" data-linenumber="240"><td class="num" id="LN240">240</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="241"><td class="num" id="LN241">241</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="242"><td class="num" id="LN242">242</td><td class="line"><span class='comment'>/* If the last char is a newline, remove it from the buffer (otherwise</span></td></tr>
+<tr class="codeline" data-linenumber="243"><td class="num" id="LN243">243</td><td class="line"> <span class='comment'>GtkTextView shows it as an empty line). See bug #324942. */</span></td></tr>
+<tr class="codeline" data-linenumber="244"><td class="num" id="LN244">244</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="245"><td class="num" id="LN245">245</td><td class="line">remove_ending_newline (PlumaDocumentOutputStream *stream)</td></tr>
+<tr class="codeline" data-linenumber="246"><td class="num" id="LN246">246</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="247"><td class="num" id="LN247">247</td><td class="line"> GtkTextIter end;</td></tr>
+<tr class="codeline" data-linenumber="248"><td class="num" id="LN248">248</td><td class="line"> GtkTextIter start;</td></tr>
+<tr class="codeline" data-linenumber="249"><td class="num" id="LN249">249</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="250"><td class="num" id="LN250">250</td><td class="line"> gtk_text_buffer_get_end_iter (<span class='macro'>GTK_TEXT_BUFFER (stream-&gt;priv-&gt;doc)<span class='macro_popup'>((((GtkTextBuffer*) (void *) ((stream-&gt;priv-&gt;doc)))))</span></span>, &amp;end);</td></tr>
+<tr class="codeline" data-linenumber="251"><td class="num" id="LN251">251</td><td class="line"> start = end;</td></tr>
+<tr class="codeline" data-linenumber="252"><td class="num" id="LN252">252</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="253"><td class="num" id="LN253">253</td><td class="line"> gtk_text_iter_set_line_offset (&amp;start, 0);</td></tr>
+<tr class="codeline" data-linenumber="254"><td class="num" id="LN254">254</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="255"><td class="num" id="LN255">255</td><td class="line"> <span class='keyword'>if</span> (gtk_text_iter_ends_line (&amp;start) &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="256"><td class="num" id="LN256">256</td><td class="line"> gtk_text_iter_backward_line (&amp;start))</td></tr>
+<tr class="codeline" data-linenumber="257"><td class="num" id="LN257">257</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="258"><td class="num" id="LN258">258</td><td class="line"> <span class='keyword'>if</span> (!gtk_text_iter_ends_line (&amp;start))</td></tr>
+<tr class="codeline" data-linenumber="259"><td class="num" id="LN259">259</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="260"><td class="num" id="LN260">260</td><td class="line"> gtk_text_iter_forward_to_line_end (&amp;start);</td></tr>
+<tr class="codeline" data-linenumber="261"><td class="num" id="LN261">261</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="262"><td class="num" id="LN262">262</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="263"><td class="num" id="LN263">263</td><td class="line"> <span class='comment'>/* Delete the empty line which is from 'start' to 'end' */</span></td></tr>
+<tr class="codeline" data-linenumber="264"><td class="num" id="LN264">264</td><td class="line"> gtk_text_buffer_delete (<span class='macro'>GTK_TEXT_BUFFER (stream-&gt;priv-&gt;doc)<span class='macro_popup'>((((GtkTextBuffer*) (void *) ((stream-&gt;priv-&gt;doc)))))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="265"><td class="num" id="LN265">265</td><td class="line"> &amp;start,</td></tr>
+<tr class="codeline" data-linenumber="266"><td class="num" id="LN266">266</td><td class="line"> &amp;end);</td></tr>
+<tr class="codeline" data-linenumber="267"><td class="num" id="LN267">267</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="268"><td class="num" id="LN268">268</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="269"><td class="num" id="LN269">269</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="270"><td class="num" id="LN270">270</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="271"><td class="num" id="LN271">271</td><td class="line">end_append_text_to_document (PlumaDocumentOutputStream *stream)</td></tr>
+<tr class="codeline" data-linenumber="272"><td class="num" id="LN272">272</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="273"><td class="num" id="LN273">273</td><td class="line"> remove_ending_newline (stream);</td></tr>
+<tr class="codeline" data-linenumber="274"><td class="num" id="LN274">274</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="275"><td class="num" id="LN275">275</td><td class="line"> gtk_text_buffer_set_modified (<span class='macro'>GTK_TEXT_BUFFER (stream-&gt;priv-&gt;doc)<span class='macro_popup'>((((GtkTextBuffer*) (void *) ((stream-&gt;priv-&gt;doc)))))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="276"><td class="num" id="LN276">276</td><td class="line"> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="277"><td class="num" id="LN277">277</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="278"><td class="num" id="LN278">278</td><td class="line"> gtk_source_buffer_end_not_undoable_action (<span class='macro'>GTK_SOURCE_BUFFER (stream-&gt;priv-&gt;doc)<span class='macro_popup'>((((GtkSourceBuffer*) (void *) ((stream-&gt;priv-&gt;doc)))))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="279"><td class="num" id="LN279">279</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="280"><td class="num" id="LN280">280</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="281"><td class="num" id="LN281">281</td><td class="line"><span id="start28"><span class='keyword'>static</span></span> gssize</td></tr>
+<tr class="codeline" data-linenumber="282"><td class="num" id="LN282">282</td><td class="line">pluma_document_output_stream_write (GOutputStream *stream,</td></tr>
+<tr class="codeline" data-linenumber="283"><td class="num" id="LN283">283</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>void</span> *buffer,</td></tr>
+<tr class="codeline" data-linenumber="284"><td class="num" id="LN284">284</td><td class="line"> gsize count,</td></tr>
+<tr class="codeline" data-linenumber="285"><td class="num" id="LN285">285</td><td class="line"> GCancellable *cancellable,</td></tr>
+<tr class="codeline" data-linenumber="286"><td class="num" id="LN286">286</td><td class="line"> GError **error)</td></tr>
+<tr class="codeline" data-linenumber="287"><td class="num" id="LN287">287</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="288"><td class="num" id="LN288">288</td><td class="line"> <span id="start27"><span id="end28">PlumaDocumentOutputStream</span></span> *ostream;</td></tr>
+<tr class="codeline" data-linenumber="289"><td class="num" id="LN289">289</td><td class="line"> gchar *text;</td></tr>
+<tr class="codeline" data-linenumber="290"><td class="num" id="LN290">290</td><td class="line"> gsize len;</td></tr>
+<tr class="codeline" data-linenumber="291"><td class="num" id="LN291">291</td><td class="line"> gboolean freetext = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="292"><td class="num" id="LN292">292</td><td class="line"> <span class='keyword'>const</span> gchar *end;</td></tr>
+<tr class="codeline" data-linenumber="293"><td class="num" id="LN293">293</td><td class="line"> gboolean valid;</td></tr>
+<tr class="codeline" data-linenumber="294"><td class="num" id="LN294">294</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="295"><td class="num" id="LN295">295</td><td class="line"> <span id="start26"><span id="end27"><span class='keyword'>if</span></span></span> (<span id="start25"><span class="mrange"><span id="end26">g_cancellable_set_error_if_cancelled</span></span> (cancellable, error)</span>)</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path5" class="msg msgEvent" style="margin-left:13ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexEvent">5</div></td><td><div class="PathNav"><a href="#Path4" title="Previous event (4)">&#x2190;</a></div></td><td>Assuming the condition is false</td><td><div class="PathNav"><a href="#Path6" title="Next event (6)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path6" class="msg msgControl" style="margin-left:9ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">6</div></td><td><div class="PathNav"><a href="#Path5" title="Previous event (5)">&#x2190;</a></div></td><td>Taking false branch</td><td><div class="PathNav"><a href="#Path7" title="Next event (7)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="296"><td class="num" id="LN296">296</td><td class="line"> <span class='keyword'>return</span> -1;</td></tr>
+<tr class="codeline" data-linenumber="297"><td class="num" id="LN297">297</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="298"><td class="num" id="LN298">298</td><td class="line"> <span id="start22"><span id="end23"><span id="start24"><span id="end25">ostream</span></span></span></span> = <span id="start23"><span id="end24"><span class='macro'>PLUMA_DOCUMENT_OUTPUT_STREAM</span></span> (stream)<span class='macro_popup'>((((PlumaDocumentOutputStream*) (void *) ((stream)))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="299"><td class="num" id="LN299">299</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="300"><td class="num" id="LN300">300</td><td class="line"> <span id="start18"><span id="end19"><span id="start21"><span id="end22"><span class='keyword'>if</span></span></span></span></span> (<span id="start20"><span id="end21">!</span></span>ostream-&gt;priv-&gt;<span id="start19"><span id="end20"><span class='variable'>is_initialized<table class='variable_popup'><tbody><tr><td valign='top'><div class='PathIndex PathIndexPopUp'>6.1</div></td><td>Field 'is_initialized' is not equal to 0</td></tr></tbody></table></span></span></span>)</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path7" class="msg msgControl" style="margin-left:9ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">7</div></td><td><div class="PathNav"><a href="#Path6" title="Previous event (6)">&#x2190;</a></div></td><td>Taking false branch</td><td><div class="PathNav"><a href="#Path8" title="Next event (8)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="301"><td class="num" id="LN301">301</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="302"><td class="num" id="LN302">302</td><td class="line"> <span class='comment'>/* Init the undoable action */</span></td></tr>
+<tr class="codeline" data-linenumber="303"><td class="num" id="LN303">303</td><td class="line"> gtk_source_buffer_begin_not_undoable_action (<span class='macro'>GTK_SOURCE_BUFFER (ostream-&gt;priv-&gt;doc)<span class='macro_popup'>((((GtkSourceBuffer*) (void *) ((ostream-&gt;priv-&gt;doc))))<br>)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="304"><td class="num" id="LN304">304</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="305"><td class="num" id="LN305">305</td><td class="line"> gtk_text_buffer_get_start_iter (<span class='macro'>GTK_TEXT_BUFFER (ostream-&gt;priv-&gt;doc)<span class='macro_popup'>((((GtkTextBuffer*) (void *) ((ostream-&gt;priv-&gt;doc)))))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="306"><td class="num" id="LN306">306</td><td class="line"> &amp;ostream-&gt;priv-&gt;pos);</td></tr>
+<tr class="codeline" data-linenumber="307"><td class="num" id="LN307">307</td><td class="line"> ostream-&gt;priv-&gt;is_initialized = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="308"><td class="num" id="LN308">308</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="309"><td class="num" id="LN309">309</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="310"><td class="num" id="LN310">310</td><td class="line"> <span id="start14"><span id="end15"><span id="start17"><span id="end18"><span class='keyword'>if</span></span></span></span></span> (<span id="start16"><span id="end17">ostream</span></span>-&gt;priv-&gt;<span id="start15"><span id="end16"><span class='variable'>buflen<table class='variable_popup'><tbody><tr><td valign='top'><div class='PathIndex PathIndexPopUp'>7.1</div></td><td>Field 'buflen' is > 0</td></tr></tbody></table></span></span></span> &gt; 0)</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path8" class="msg msgControl" style="margin-left:9ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">8</div></td><td><div class="PathNav"><a href="#Path7" title="Previous event (7)">&#x2190;</a></div></td><td>Taking true branch</td><td><div class="PathNav"><a href="#Path9" title="Next event (9)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="311"><td class="num" id="LN311">311</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="312"><td class="num" id="LN312">312</td><td class="line"> <span id="start11"><span id="end12"><span id="start13"><span id="end14">len</span></span></span></span> = <span id="start12"><span id="end13">ostream</span></span>-&gt;priv-&gt;buflen + count;</td></tr>
+<tr class="codeline" data-linenumber="313"><td class="num" id="LN313">313</td><td class="line"> <span id="start5"><span id="end6">text</span></span> = <span id="start6"><span id="start7"><span id="end7"><span id="start8"><span id="end8"><span id="start9"><span id="end9"><span id="start10"><span id="end10"><span id="end11"><span class='macro'>g_new</span></span></span></span></span></span></span></span></span></span> (gchar , len + 1)<span class='macro_popup'>(gchar *) (__extension__ ({ gsize __n = (gsize) (len + 1); gsize<br> __s = sizeof (gchar); gpointer __p; if (__s == 1) __p = g_malloc<br> (__n); else if (__builtin_constant_p (__n) &amp;&amp; (__s ==<br> 0 || __n &lt;= (9223372036854775807L *2UL+1UL) / __s)) __p =<br> g_malloc (__n * __s); else __p = g_malloc_n (__n, __s); __p;<br> }))</span></span>;</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path9" class="msg msgControl" style="margin-left:24ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">9</div></td><td><div class="PathNav"><a href="#Path8" title="Previous event (8)">&#x2190;</a></div></td><td>Taking true branch</td><td><div class="PathNav"><a href="#Path10" title="Next event (10)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="314"><td class="num" id="LN314">314</td><td class="line"> memcpy (text, ostream-&gt;priv-&gt;buffer, ostream-&gt;priv-&gt;buflen);</td></tr>
+<tr class="codeline" data-linenumber="315"><td class="num" id="LN315">315</td><td class="line"> memcpy (text + ostream-&gt;priv-&gt;buflen, buffer, count);</td></tr>
+<tr class="codeline" data-linenumber="316"><td class="num" id="LN316">316</td><td class="line"> text[len] = '\0';</td></tr>
+<tr class="codeline" data-linenumber="317"><td class="num" id="LN317">317</td><td class="line"> g_free (ostream-&gt;priv-&gt;buffer);</td></tr>
+<tr class="codeline" data-linenumber="318"><td class="num" id="LN318">318</td><td class="line"> ostream-&gt;priv-&gt;buffer = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="319"><td class="num" id="LN319">319</td><td class="line"> ostream-&gt;priv-&gt;buflen = 0;</td></tr>
+<tr class="codeline" data-linenumber="320"><td class="num" id="LN320">320</td><td class="line"> <span id="start4"><span id="end5">freetext</span></span> = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="321"><td class="num" id="LN321">321</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="322"><td class="num" id="LN322">322</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="323"><td class="num" id="LN323">323</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="324"><td class="num" id="LN324">324</td><td class="line"> text = (gchar *) buffer;</td></tr>
+<tr class="codeline" data-linenumber="325"><td class="num" id="LN325">325</td><td class="line"> len = count;</td></tr>
+<tr class="codeline" data-linenumber="326"><td class="num" id="LN326">326</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="327"><td class="num" id="LN327">327</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="328"><td class="num" id="LN328">328</td><td class="line"> <span class='comment'>/* validate */</span></td></tr>
+<tr class="codeline" data-linenumber="329"><td class="num" id="LN329">329</td><td class="line"> <span id="start3"><span id="end4">valid</span></span> = g_utf8_validate (text, len, &amp;end);</td></tr>
+<tr class="codeline" data-linenumber="330"><td class="num" id="LN330">330</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="331"><td class="num" id="LN331">331</td><td class="line"> <span class='comment'>/* Avoid keeping a CRLF across two buffers. */</span></td></tr>
+<tr class="codeline" data-linenumber="332"><td class="num" id="LN332">332</td><td class="line"> <span id="start2"><span id="end3"><span class='keyword'>if</span></span></span> (<span id="start1"><span class="mrange"><span id="end2">valid</span></span></span> &amp;&amp; <span id="start0"><span class="mrange"><span id="end1">len</span></span> &gt; 1</span> &amp;&amp; <span class="mrange"><span id="end0">end</span>[-1]</span> == '\r')</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path10" class="msg msgEvent" style="margin-left:13ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexEvent">10</div></td><td><div class="PathNav"><a href="#Path9" title="Previous event (9)">&#x2190;</a></div></td><td>Assuming 'valid' is not equal to 0</td><td><div class="PathNav"><a href="#Path11" title="Next event (11)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path11" class="msg msgEvent" style="margin-left:22ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexEvent">11</div></td><td><div class="PathNav"><a href="#Path10" title="Previous event (10)">&#x2190;</a></div></td><td>Assuming 'len' is &gt; 1</td><td><div class="PathNav"><a href="#EndPath" title="Next event (12)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="EndPath" class="msg msgEvent" style="margin-left:33ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexEvent">12</div></td><td><div class="PathNav"><a href="#Path11" title="Previous event (11)">&#x2190;</a></div></td><td>Out of bound memory access (access exceeds upper limit of memory block)</td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="333"><td class="num" id="LN333">333</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="334"><td class="num" id="LN334">334</td><td class="line"> valid = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="335"><td class="num" id="LN335">335</td><td class="line"> end--;</td></tr>
+<tr class="codeline" data-linenumber="336"><td class="num" id="LN336">336</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="337"><td class="num" id="LN337">337</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="338"><td class="num" id="LN338">338</td><td class="line"> <span class='keyword'>if</span> (!valid)</td></tr>
+<tr class="codeline" data-linenumber="339"><td class="num" id="LN339">339</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="340"><td class="num" id="LN340">340</td><td class="line"> gsize nvalid = end - text;</td></tr>
+<tr class="codeline" data-linenumber="341"><td class="num" id="LN341">341</td><td class="line"> gsize remainder = len - nvalid;</td></tr>
+<tr class="codeline" data-linenumber="342"><td class="num" id="LN342">342</td><td class="line"> gunichar ch;</td></tr>
+<tr class="codeline" data-linenumber="343"><td class="num" id="LN343">343</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="344"><td class="num" id="LN344">344</td><td class="line"> <span class='keyword'>if</span> ((remainder &lt; <span class='macro'>MAX_UNICHAR_LEN<span class='macro_popup'>6</span></span>) &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="345"><td class="num" id="LN345">345</td><td class="line"> ((ch = g_utf8_get_char_validated (text + nvalid, remainder)) == (gunichar)-2 ||</td></tr>
+<tr class="codeline" data-linenumber="346"><td class="num" id="LN346">346</td><td class="line"> ch == (gunichar)'\r'))</td></tr>
+<tr class="codeline" data-linenumber="347"><td class="num" id="LN347">347</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="348"><td class="num" id="LN348">348</td><td class="line"> ostream-&gt;priv-&gt;buffer = g_strndup (end, remainder);</td></tr>
+<tr class="codeline" data-linenumber="349"><td class="num" id="LN349">349</td><td class="line"> ostream-&gt;priv-&gt;buflen = remainder;</td></tr>
+<tr class="codeline" data-linenumber="350"><td class="num" id="LN350">350</td><td class="line"> len -= remainder;</td></tr>
+<tr class="codeline" data-linenumber="351"><td class="num" id="LN351">351</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="352"><td class="num" id="LN352">352</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="353"><td class="num" id="LN353">353</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="354"><td class="num" id="LN354">354</td><td class="line"> <span class='comment'>/* TODO: we could escape invalid text and tag it in red</span></td></tr>
+<tr class="codeline" data-linenumber="355"><td class="num" id="LN355">355</td><td class="line"> <span class='comment'>* and make the doc readonly.</span></td></tr>
+<tr class="codeline" data-linenumber="356"><td class="num" id="LN356">356</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="357"><td class="num" id="LN357">357</td><td class="line"> g_set_error (error, <span class='macro'>G_IO_ERROR<span class='macro_popup'>g_io_error_quark()</span></span>, G_IO_ERROR_INVALID_DATA,</td></tr>
+<tr class="codeline" data-linenumber="358"><td class="num" id="LN358">358</td><td class="line"> <span class='macro'>_(<span class='string_literal'>"Invalid UTF-8 sequence in input"</span>)<span class='macro_popup'>dcgettext (((void*)0), "Invalid UTF-8 sequence in input", 5)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="359"><td class="num" id="LN359">359</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="360"><td class="num" id="LN360">360</td><td class="line"> <span class='keyword'>if</span> (freetext)</td></tr>
+<tr class="codeline" data-linenumber="361"><td class="num" id="LN361">361</td><td class="line"> g_free (text);</td></tr>
+<tr class="codeline" data-linenumber="362"><td class="num" id="LN362">362</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="363"><td class="num" id="LN363">363</td><td class="line"> <span class='keyword'>return</span> -1;</td></tr>
+<tr class="codeline" data-linenumber="364"><td class="num" id="LN364">364</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="365"><td class="num" id="LN365">365</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="366"><td class="num" id="LN366">366</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="367"><td class="num" id="LN367">367</td><td class="line"> gtk_text_buffer_insert (<span class='macro'>GTK_TEXT_BUFFER (ostream-&gt;priv-&gt;doc)<span class='macro_popup'>((((GtkTextBuffer*) (void *) ((ostream-&gt;priv-&gt;doc)))))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="368"><td class="num" id="LN368">368</td><td class="line"> &amp;ostream-&gt;priv-&gt;pos, text, len);</td></tr>
+<tr class="codeline" data-linenumber="369"><td class="num" id="LN369">369</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="370"><td class="num" id="LN370">370</td><td class="line"> <span class='keyword'>if</span> (freetext)</td></tr>
+<tr class="codeline" data-linenumber="371"><td class="num" id="LN371">371</td><td class="line"> g_free (text);</td></tr>
+<tr class="codeline" data-linenumber="372"><td class="num" id="LN372">372</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="373"><td class="num" id="LN373">373</td><td class="line"> <span class='keyword'>return</span> count;</td></tr>
+<tr class="codeline" data-linenumber="374"><td class="num" id="LN374">374</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="375"><td class="num" id="LN375">375</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="376"><td class="num" id="LN376">376</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="377"><td class="num" id="LN377">377</td><td class="line">pluma_document_output_stream_flush (GOutputStream *stream,</td></tr>
+<tr class="codeline" data-linenumber="378"><td class="num" id="LN378">378</td><td class="line"> GCancellable *cancellable,</td></tr>
+<tr class="codeline" data-linenumber="379"><td class="num" id="LN379">379</td><td class="line"> GError **error)</td></tr>
+<tr class="codeline" data-linenumber="380"><td class="num" id="LN380">380</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="381"><td class="num" id="LN381">381</td><td class="line"> <span id="start33">PlumaDocumentOutputStream</span> *ostream = <span class='macro'>PLUMA_DOCUMENT_OUTPUT_STREAM (stream)<span class='macro_popup'>((((PlumaDocumentOutputStream*) (void *) ((stream)))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="382"><td class="num" id="LN382">382</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="383"><td class="num" id="LN383">383</td><td class="line"> <span class='comment'>/* Flush deferred data if some. */</span></td></tr>
+<tr class="codeline" data-linenumber="384"><td class="num" id="LN384">384</td><td class="line"> <span id="start32"><span id="end33"><span class='keyword'>if</span></span></span> (<span id="start31"><span class="mrange"><span id="end32">!</span></span>ostream-&gt;priv-&gt;is_closed</span> &amp;&amp; <span id="start30"><span class="mrange"><span id="end31">ostream</span></span>-&gt;priv-&gt;is_initialized</span> &amp;&amp;</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path1" class="msg msgEvent" style="margin-left:13ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexEvent">1</div></td><td>Assuming field 'is_closed' is 0</td><td><div class="PathNav"><a href="#Path2" title="Next event (2)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path2" class="msg msgEvent" style="margin-left:42ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexEvent">2</div></td><td><div class="PathNav"><a href="#Path1" title="Previous event (1)">&#x2190;</a></div></td><td>Assuming field 'is_initialized' is not equal to 0</td><td><div class="PathNav"><a href="#Path3" title="Next event (3)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="385"><td class="num" id="LN385">385</td><td class="line"> <span id="start29"><span class="mrange"><span id="end30">ostream</span></span>-&gt;priv-&gt;buflen &gt; 0</span> &amp;&amp;</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path3" class="msg msgEvent" style="margin-left:13ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexEvent">3</div></td><td><div class="PathNav"><a href="#Path2" title="Previous event (2)">&#x2190;</a></div></td><td>Assuming field 'buflen' is &gt; 0</td><td><div class="PathNav"><a href="#Path4" title="Next event (4)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="386"><td class="num" id="LN386">386</td><td class="line"> <span class="mrange"><span id="end29">pluma_document_output_stream_write</span> (stream, <span class='string_literal'>""</span>, 0, cancellable,</td></tr></span>
+<tr><td class="num"></td><td class="line"><div id="Path4" class="msg msgEvent" style="margin-left:13ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexEvent">4</div></td><td><div class="PathNav"><a href="#Path3" title="Previous event (3)">&#x2190;</a></div></td><td>Calling 'pluma_document_output_stream_write'</td><td><div class="PathNav"><a href="#Path5" title="Next event (5)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="387"><td class="num" id="LN387">387</td><td class="line"> <span class="mrange">error)</span> == -1)</td></tr>
+<tr class="codeline" data-linenumber="388"><td class="num" id="LN388">388</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="389"><td class="num" id="LN389">389</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="390"><td class="num" id="LN390">390</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="391"><td class="num" id="LN391">391</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="392"><td class="num" id="LN392">392</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="393"><td class="num" id="LN393">393</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="394"><td class="num" id="LN394">394</td><td class="line">pluma_document_output_stream_close (GOutputStream *stream,</td></tr>
+<tr class="codeline" data-linenumber="395"><td class="num" id="LN395">395</td><td class="line"> GCancellable *cancellable,</td></tr>
+<tr class="codeline" data-linenumber="396"><td class="num" id="LN396">396</td><td class="line"> GError **error)</td></tr>
+<tr class="codeline" data-linenumber="397"><td class="num" id="LN397">397</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="398"><td class="num" id="LN398">398</td><td class="line"> PlumaDocumentOutputStream *ostream = <span class='macro'>PLUMA_DOCUMENT_OUTPUT_STREAM (stream)<span class='macro_popup'>((((PlumaDocumentOutputStream*) (void *) ((stream)))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="399"><td class="num" id="LN399">399</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="400"><td class="num" id="LN400">400</td><td class="line"> <span class='keyword'>if</span> (!ostream-&gt;priv-&gt;is_closed &amp;&amp; ostream-&gt;priv-&gt;is_initialized)</td></tr>
+<tr class="codeline" data-linenumber="401"><td class="num" id="LN401">401</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="402"><td class="num" id="LN402">402</td><td class="line"> end_append_text_to_document (ostream);</td></tr>
+<tr class="codeline" data-linenumber="403"><td class="num" id="LN403">403</td><td class="line"> ostream-&gt;priv-&gt;is_closed = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="404"><td class="num" id="LN404">404</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="405"><td class="num" id="LN405">405</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="406"><td class="num" id="LN406">406</td><td class="line"> <span class='keyword'>if</span> (ostream-&gt;priv-&gt;buflen &gt; 0)</td></tr>
+<tr class="codeline" data-linenumber="407"><td class="num" id="LN407">407</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="408"><td class="num" id="LN408">408</td><td class="line"> g_set_error (error, <span class='macro'>G_IO_ERROR<span class='macro_popup'>g_io_error_quark()</span></span>, G_IO_ERROR_INVALID_DATA,</td></tr>
+<tr class="codeline" data-linenumber="409"><td class="num" id="LN409">409</td><td class="line"> <span class='macro'>_(<span class='string_literal'>"Incomplete UTF-8 sequence in input"</span>)<span class='macro_popup'>dcgettext (((void*)0), "Incomplete UTF-8 sequence in input", 5<br>)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="410"><td class="num" id="LN410">410</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="411"><td class="num" id="LN411">411</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="412"><td class="num" id="LN412">412</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="413"><td class="num" id="LN413">413</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="414"><td class="num" id="LN414">414</td><td class="line">}</td></tr>
+</table></body></html>
diff --git a/2023-05-28-030536-6612-1@f643dde74cbd_master/report-1e519c.html b/2023-05-28-030536-6612-1@f643dde74cbd_master/report-1e519c.html
new file mode 100644
index 00000000..fd388474
--- /dev/null
+++ b/2023-05-28-030536-6612-1@f643dde74cbd_master/report-1e519c.html
@@ -0,0 +1,1475 @@
+<!doctype html>
+<html>
+<head>
+<title>pluma-taglist-plugin-panel.c</title>
+
+<style type="text/css">
+body { color:#000000; background-color:#ffffff }
+body { font-family:Helvetica, sans-serif; font-size:10pt }
+h1 { font-size:14pt }
+.FileName { margin-top: 5px; margin-bottom: 5px; display: inline; }
+.FileNav { margin-left: 5px; margin-right: 5px; display: inline; }
+.FileNav a { text-decoration:none; font-size: larger; }
+.divider { margin-top: 30px; margin-bottom: 30px; height: 15px; }
+.divider { background-color: gray; }
+.code { border-collapse:collapse; width:100%; }
+.code { font-family: "Monospace", monospace; font-size:10pt }
+.code { line-height: 1.2em }
+.comment { color: green; font-style: oblique }
+.keyword { color: blue }
+.string_literal { color: red }
+.directive { color: darkmagenta }
+
+/* Macros and variables could have pop-up notes hidden by default.
+ - Macro pop-up: expansion of the macro
+ - Variable pop-up: value (table) of the variable */
+.macro_popup, .variable_popup { display: none; }
+
+/* Pop-up appears on mouse-hover event. */
+.macro:hover .macro_popup, .variable:hover .variable_popup {
+ display: block;
+ padding: 2px;
+ -webkit-border-radius:5px;
+ -webkit-box-shadow:1px 1px 7px #000;
+ border-radius:5px;
+ box-shadow:1px 1px 7px #000;
+ position: absolute;
+ top: -1em;
+ left:10em;
+ z-index: 1
+}
+
+.macro_popup {
+ border: 2px solid red;
+ background-color:#FFF0F0;
+ font-weight: normal;
+}
+
+.variable_popup {
+ border: 2px solid blue;
+ background-color:#F0F0FF;
+ font-weight: bold;
+ font-family: Helvetica, sans-serif;
+ font-size: 9pt;
+}
+
+/* Pop-up notes needs a relative position as a base where they pops up. */
+.macro, .variable {
+ background-color: PaleGoldenRod;
+ position: relative;
+}
+.macro { color: DarkMagenta; }
+
+#tooltiphint {
+ position: fixed;
+ width: 50em;
+ margin-left: -25em;
+ left: 50%;
+ padding: 10px;
+ border: 1px solid #b0b0b0;
+ border-radius: 2px;
+ box-shadow: 1px 1px 7px black;
+ background-color: #c0c0c0;
+ z-index: 2;
+}
+
+.num { width:2.5em; padding-right:2ex; background-color:#eeeeee }
+.num { text-align:right; font-size:8pt }
+.num { color:#444444 }
+.line { padding-left: 1ex; border-left: 3px solid #ccc }
+.line { white-space: pre }
+.msg { -webkit-box-shadow:1px 1px 7px #000 }
+.msg { box-shadow:1px 1px 7px #000 }
+.msg { -webkit-border-radius:5px }
+.msg { border-radius:5px }
+.msg { font-family:Helvetica, sans-serif; font-size:8pt }
+.msg { float:left }
+.msg { position:relative }
+.msg { padding:0.25em 1ex 0.25em 1ex }
+.msg { margin-top:10px; margin-bottom:10px }
+.msg { font-weight:bold }
+.msg { max-width:60em; word-wrap: break-word; white-space: pre-wrap }
+.msgT { padding:0x; spacing:0x }
+.msgEvent { background-color:#fff8b4; color:#000000 }
+.msgControl { background-color:#bbbbbb; color:#000000 }
+.msgNote { background-color:#ddeeff; color:#000000 }
+.mrange { background-color:#dfddf3 }
+.mrange { border-bottom:1px solid #6F9DBE }
+.PathIndex { font-weight: bold; padding:0px 5px; margin-right:5px; }
+.PathIndex { -webkit-border-radius:8px }
+.PathIndex { border-radius:8px }
+.PathIndexEvent { background-color:#bfba87 }
+.PathIndexControl { background-color:#8c8c8c }
+.PathIndexPopUp { background-color: #879abc; }
+.PathNav a { text-decoration:none; font-size: larger }
+.CodeInsertionHint { font-weight: bold; background-color: #10dd10 }
+.CodeRemovalHint { background-color:#de1010 }
+.CodeRemovalHint { border-bottom:1px solid #6F9DBE }
+.msg.selected{ background-color:orange !important; }
+
+table.simpletable {
+ padding: 5px;
+ font-size:12pt;
+ margin:20px;
+ border-collapse: collapse; border-spacing: 0px;
+}
+td.rowname {
+ text-align: right;
+ vertical-align: top;
+ font-weight: bold;
+ color:#444444;
+ padding-right:2ex;
+}
+
+/* Hidden text. */
+input.spoilerhider + label {
+ cursor: pointer;
+ text-decoration: underline;
+ display: block;
+}
+input.spoilerhider {
+ display: none;
+}
+input.spoilerhider ~ .spoiler {
+ overflow: hidden;
+ margin: 10px auto 0;
+ height: 0;
+ opacity: 0;
+}
+input.spoilerhider:checked + label + .spoiler{
+ height: auto;
+ opacity: 1;
+}
+</style>
+</head>
+<body>
+<!-- BUGDESC Value stored to 'sel' is never read -->
+
+<!-- BUGTYPE Dead assignment -->
+
+<!-- BUGCATEGORY Unused code -->
+
+<!-- BUGFILE /rootdir/plugins/taglist/pluma-taglist-plugin-panel.c -->
+
+<!-- FILENAME pluma-taglist-plugin-panel.c -->
+
+<!-- FUNCTIONNAME insert_tag -->
+
+<!-- ISSUEHASHCONTENTOFLINEINCONTEXT 1e519c03a889e323411c272a3535e35e -->
+
+<!-- BUGLINE 194 -->
+
+<!-- BUGCOLUMN 3 -->
+
+<!-- BUGPATHLENGTH 1 -->
+
+<!-- BUGMETAEND -->
+<!-- REPORTHEADER -->
+<h3>Bug Summary</h3>
+<table class="simpletable">
+<tr><td class="rowname">File:</td><td>plugins/taglist/pluma-taglist-plugin-panel.c</td></tr>
+<tr><td class="rowname">Warning:</td><td><a href="#EndPath">line 194, column 3</a><br />Value stored to 'sel' is never read</td></tr>
+
+</table>
+<!-- REPORTSUMMARYEXTRA -->
+<h3>Annotated Source Code</h3>
+<p>Press <a href="#" onclick="toggleHelp(); return false;">'?'</a>
+ to see keyboard shortcuts</p>
+<input type="checkbox" class="spoilerhider" id="showinvocation" />
+<label for="showinvocation" >Show analyzer invocation</label>
+<div class="spoiler">clang -cc1 -cc1 -triple x86_64-redhat-linux-gnu -analyze -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name pluma-taglist-plugin-panel.c -analyzer-checker=core -analyzer-checker=apiModeling -analyzer-checker=unix -analyzer-checker=deadcode -analyzer-checker=security.insecureAPI.UncheckedReturn -analyzer-checker=security.insecureAPI.getpw -analyzer-checker=security.insecureAPI.gets -analyzer-checker=security.insecureAPI.mktemp -analyzer-checker=security.insecureAPI.mkstemp -analyzer-checker=security.insecureAPI.vfork -analyzer-checker=nullability.NullPassedToNonnull -analyzer-checker=nullability.NullReturnedFromNonnull -analyzer-output plist -w -setup-static-analyzer -mrelocation-model pic -pic-level 2 -fhalf-no-semantic-interposition -mframe-pointer=none -fmath-errno -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=2 -target-cpu x86-64 -tune-cpu generic -debugger-tuning=gdb -fcoverage-compilation-dir=/rootdir/plugins/taglist -resource-dir /usr/lib64/clang/16 -D HAVE_CONFIG_H -I . -I ../.. -I ../.. -I /usr/include/libxml2 -I /usr/include/glib-2.0 -I /usr/lib64/glib-2.0/include -I /usr/include/sysprof-4 -I /usr/include/libmount -I /usr/include/blkid -I /usr/include/gtk-3.0 -I /usr/include/pango-1.0 -I /usr/include/harfbuzz -I /usr/include/freetype2 -I /usr/include/libpng16 -I /usr/include/fribidi -I /usr/include/cairo -I /usr/include/pixman-1 -I /usr/include/gdk-pixbuf-2.0 -I /usr/include/gio-unix-2.0 -I /usr/include/cloudproviders -I /usr/include/atk-1.0 -I /usr/include/at-spi2-atk/2.0 -I /usr/include/at-spi-2.0 -I /usr/include/dbus-1.0 -I /usr/lib64/dbus-1.0/include -I /usr/include/gtksourceview-4 -I /usr/include/libpeas-1.0 -I /usr/include/gobject-introspection-1.0 -D PIC -internal-isystem /usr/lib64/clang/16/include -internal-isystem /usr/local/include -internal-isystem /usr/bin/../lib/gcc/x86_64-redhat-linux/13/../../../../x86_64-redhat-linux/include -internal-externc-isystem /include -internal-externc-isystem /usr/include -O2 -Wno-unused-parameter -fdebug-compilation-dir=/rootdir/plugins/taglist -ferror-limit 19 -fgnuc-version=4.2.1 -vectorize-loops -vectorize-slp -analyzer-checker deadcode.DeadStores -analyzer-checker alpha.deadcode.UnreachableCode -analyzer-checker alpha.core.CastSize -analyzer-checker alpha.core.CastToStruct -analyzer-checker alpha.core.IdenticalExpr -analyzer-checker alpha.core.SizeofPtr -analyzer-checker alpha.security.ArrayBoundV2 -analyzer-checker alpha.security.MallocOverflow -analyzer-checker alpha.security.ReturnPtrRange -analyzer-checker alpha.unix.SimpleStream -analyzer-checker alpha.unix.cstring.BufferOverlap -analyzer-checker alpha.unix.cstring.NotNullTerminated -analyzer-checker alpha.unix.cstring.OutOfBounds -analyzer-checker alpha.core.FixedAddr -analyzer-checker security.insecureAPI.strcpy -analyzer-output=html -faddrsig -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o /rootdir/html-report/2023-05-28-030536-6612-1 -x c pluma-taglist-plugin-panel.c
+</div>
+<div id='tooltiphint' hidden="true">
+ <p>Keyboard shortcuts: </p>
+ <ul>
+ <li>Use 'j/k' keys for keyboard navigation</li>
+ <li>Use 'Shift+S' to show/hide relevant lines</li>
+ <li>Use '?' to toggle this window</li>
+ </ul>
+ <a href="#" onclick="toggleHelp(); return false;">Close</a>
+</div>
+<script type='text/javascript'>
+var relevant_lines = {"1": {"194": 1}};
+
+var filterCounterexample = function (hide) {
+ var tables = document.getElementsByClassName("code");
+ for (var t=0; t<tables.length; t++) {
+ var table = tables[t];
+ var file_id = table.getAttribute("data-fileid");
+ var lines_in_fid = relevant_lines[file_id];
+ if (!lines_in_fid) {
+ lines_in_fid = {};
+ }
+ var lines = table.getElementsByClassName("codeline");
+ for (var i=0; i<lines.length; i++) {
+ var el = lines[i];
+ var lineNo = el.getAttribute("data-linenumber");
+ if (!lines_in_fid[lineNo]) {
+ if (hide) {
+ el.setAttribute("hidden", "");
+ } else {
+ el.removeAttribute("hidden");
+ }
+ }
+ }
+ }
+}
+
+window.addEventListener("keydown", function (event) {
+ if (event.defaultPrevented) {
+ return;
+ }
+ // SHIFT + S
+ if (event.shiftKey && event.keyCode == 83) {
+ var checked = document.getElementsByName("showCounterexample")[0].checked;
+ filterCounterexample(!checked);
+ document.getElementsByName("showCounterexample")[0].click();
+ } else {
+ return;
+ }
+ event.preventDefault();
+}, true);
+
+document.addEventListener("DOMContentLoaded", function() {
+ document.querySelector('input[name="showCounterexample"]').onchange=
+ function (event) {
+ filterCounterexample(this.checked);
+ };
+});
+</script>
+
+<form>
+ <input type="checkbox" name="showCounterexample" id="showCounterexample" />
+ <label for="showCounterexample">
+ Show only relevant lines
+ </label>
+ <input type="checkbox" name="showArrows"
+ id="showArrows" style="margin-left: 10px" />
+ <label for="showArrows">
+ Show control flow arrows
+ </label>
+</form>
+
+<script type='text/javascript'>
+// Return range of numbers from a range [lower, upper).
+function range(lower, upper) {
+ var array = [];
+ for (var i = lower; i <= upper; ++i) {
+ array.push(i);
+ }
+ return array;
+}
+
+var getRelatedArrowIndices = function(pathId) {
+ // HTML numeration of events is a bit different than it is in the path.
+ // Everything is rotated one step to the right, so the last element
+ // (error diagnostic) has index 0.
+ if (pathId == 0) {
+ // arrowIndices has at least 2 elements
+ pathId = arrowIndices.length - 1;
+ }
+
+ return range(arrowIndices[pathId], arrowIndices[pathId - 1]);
+}
+
+var highlightArrowsForSelectedEvent = function() {
+ const selectedNum = findNum();
+ const arrowIndicesToHighlight = getRelatedArrowIndices(selectedNum);
+ arrowIndicesToHighlight.forEach((index) => {
+ var arrow = document.querySelector("#arrow" + index);
+ if(arrow) {
+ classListAdd(arrow, "selected")
+ }
+ });
+}
+
+var getAbsoluteBoundingRect = function(element) {
+ const relative = element.getBoundingClientRect();
+ return {
+ left: relative.left + window.pageXOffset,
+ right: relative.right + window.pageXOffset,
+ top: relative.top + window.pageYOffset,
+ bottom: relative.bottom + window.pageYOffset,
+ height: relative.height,
+ width: relative.width
+ };
+}
+
+var drawArrow = function(index) {
+ // This function is based on the great answer from SO:
+ // https://stackoverflow.com/a/39575674/11582326
+ var start = document.querySelector("#start" + index);
+ var end = document.querySelector("#end" + index);
+ var arrow = document.querySelector("#arrow" + index);
+
+ var startRect = getAbsoluteBoundingRect(start);
+ var endRect = getAbsoluteBoundingRect(end);
+
+ // It is an arrow from a token to itself, no need to visualize it.
+ if (startRect.top == endRect.top &&
+ startRect.left == endRect.left)
+ return;
+
+ // Each arrow is a very simple Bézier curve, with two nodes and
+ // two handles. So, we need to calculate four points in the window:
+ // * start node
+ var posStart = { x: 0, y: 0 };
+ // * end node
+ var posEnd = { x: 0, y: 0 };
+ // * handle for the start node
+ var startHandle = { x: 0, y: 0 };
+ // * handle for the end node
+ var endHandle = { x: 0, y: 0 };
+ // One can visualize it as follows:
+ //
+ // start handle
+ // /
+ // X"""_.-""""X
+ // .' \
+ // / start node
+ // |
+ // |
+ // | end node
+ // \ /
+ // `->X
+ // X-'
+ // \
+ // end handle
+ //
+ // NOTE: (0, 0) is the top left corner of the window.
+
+ // We have 3 similar, but still different scenarios to cover:
+ //
+ // 1. Two tokens on different lines.
+ // -xxx
+ // /
+ // \
+ // -> xxx
+ // In this situation, we draw arrow on the left curving to the left.
+ // 2. Two tokens on the same line, and the destination is on the right.
+ // ____
+ // / \
+ // / V
+ // xxx xxx
+ // In this situation, we draw arrow above curving upwards.
+ // 3. Two tokens on the same line, and the destination is on the left.
+ // xxx xxx
+ // ^ /
+ // \____/
+ // In this situation, we draw arrow below curving downwards.
+ const onDifferentLines = startRect.top <= endRect.top - 5 ||
+ startRect.top >= endRect.top + 5;
+ const leftToRight = startRect.left < endRect.left;
+
+ // NOTE: various magic constants are chosen empirically for
+ // better positioning and look
+ if (onDifferentLines) {
+ // Case #1
+ const topToBottom = startRect.top < endRect.top;
+ posStart.x = startRect.left - 1;
+ // We don't want to start it at the top left corner of the token,
+ // it doesn't feel like this is where the arrow comes from.
+ // For this reason, we start it in the middle of the left side
+ // of the token.
+ posStart.y = startRect.top + startRect.height / 2;
+
+ // End node has arrow head and we give it a bit more space.
+ posEnd.x = endRect.left - 4;
+ posEnd.y = endRect.top;
+
+ // Utility object with x and y offsets for handles.
+ var curvature = {
+ // We want bottom-to-top arrow to curve a bit more, so it doesn't
+ // overlap much with top-to-bottom curves (much more frequent).
+ x: topToBottom ? 15 : 25,
+ y: Math.min((posEnd.y - posStart.y) / 3, 10)
+ }
+
+ // When destination is on the different line, we can make a
+ // curvier arrow because we have space for it.
+ // So, instead of using
+ //
+ // startHandle.x = posStart.x - curvature.x
+ // endHandle.x = posEnd.x - curvature.x
+ //
+ // We use the leftmost of these two values for both handles.
+ startHandle.x = Math.min(posStart.x, posEnd.x) - curvature.x;
+ endHandle.x = startHandle.x;
+
+ // Curving downwards from the start node...
+ startHandle.y = posStart.y + curvature.y;
+ // ... and upwards from the end node.
+ endHandle.y = posEnd.y - curvature.y;
+
+ } else if (leftToRight) {
+ // Case #2
+ // Starting from the top right corner...
+ posStart.x = startRect.right - 1;
+ posStart.y = startRect.top;
+
+ // ...and ending at the top left corner of the end token.
+ posEnd.x = endRect.left + 1;
+ posEnd.y = endRect.top - 1;
+
+ // Utility object with x and y offsets for handles.
+ var curvature = {
+ x: Math.min((posEnd.x - posStart.x) / 3, 15),
+ y: 5
+ }
+
+ // Curving to the right...
+ startHandle.x = posStart.x + curvature.x;
+ // ... and upwards from the start node.
+ startHandle.y = posStart.y - curvature.y;
+
+ // And to the left...
+ endHandle.x = posEnd.x - curvature.x;
+ // ... and upwards from the end node.
+ endHandle.y = posEnd.y - curvature.y;
+
+ } else {
+ // Case #3
+ // Starting from the bottom right corner...
+ posStart.x = startRect.right;
+ posStart.y = startRect.bottom;
+
+ // ...and ending also at the bottom right corner, but of the end token.
+ posEnd.x = endRect.right - 1;
+ posEnd.y = endRect.bottom + 1;
+
+ // Utility object with x and y offsets for handles.
+ var curvature = {
+ x: Math.min((posStart.x - posEnd.x) / 3, 15),
+ y: 5
+ }
+
+ // Curving to the left...
+ startHandle.x = posStart.x - curvature.x;
+ // ... and downwards from the start node.
+ startHandle.y = posStart.y + curvature.y;
+
+ // And to the right...
+ endHandle.x = posEnd.x + curvature.x;
+ // ... and downwards from the end node.
+ endHandle.y = posEnd.y + curvature.y;
+ }
+
+ // Put it all together into a path.
+ // More information on the format:
+ // https://developer.mozilla.org/en-US/docs/Web/SVG/Tutorial/Paths
+ var pathStr = "M" + posStart.x + "," + posStart.y + " " +
+ "C" + startHandle.x + "," + startHandle.y + " " +
+ endHandle.x + "," + endHandle.y + " " +
+ posEnd.x + "," + posEnd.y;
+
+ arrow.setAttribute("d", pathStr);
+};
+
+var drawArrows = function() {
+ const numOfArrows = document.querySelectorAll("path[id^=arrow]").length;
+ for (var i = 0; i < numOfArrows; ++i) {
+ drawArrow(i);
+ }
+}
+
+var toggleArrows = function(event) {
+ const arrows = document.querySelector("#arrows");
+ if (event.target.checked) {
+ arrows.setAttribute("visibility", "visible");
+ } else {
+ arrows.setAttribute("visibility", "hidden");
+ }
+}
+
+window.addEventListener("resize", drawArrows);
+document.addEventListener("DOMContentLoaded", function() {
+ // Whenever we show invocation, locations change, i.e. we
+ // need to redraw arrows.
+ document
+ .querySelector('input[id="showinvocation"]')
+ .addEventListener("click", drawArrows);
+ // Hiding irrelevant lines also should cause arrow rerender.
+ document
+ .querySelector('input[name="showCounterexample"]')
+ .addEventListener("change", drawArrows);
+ document
+ .querySelector('input[name="showArrows"]')
+ .addEventListener("change", toggleArrows);
+ drawArrows();
+ // Default highlighting for the last event.
+ highlightArrowsForSelectedEvent();
+});
+</script>
+
+<script type='text/javascript'>
+var digitMatcher = new RegExp("[0-9]+");
+
+var querySelectorAllArray = function(selector) {
+ return Array.prototype.slice.call(
+ document.querySelectorAll(selector));
+}
+
+document.addEventListener("DOMContentLoaded", function() {
+ querySelectorAllArray(".PathNav > a").forEach(
+ function(currentValue, currentIndex) {
+ var hrefValue = currentValue.getAttribute("href");
+ currentValue.onclick = function() {
+ scrollTo(document.querySelector(hrefValue));
+ return false;
+ };
+ });
+});
+
+var findNum = function() {
+ var s = document.querySelector(".msg.selected");
+ if (!s || s.id == "EndPath") {
+ return 0;
+ }
+ var out = parseInt(digitMatcher.exec(s.id)[0]);
+ return out;
+};
+
+var classListAdd = function(el, theClass) {
+ if(!el.className.baseVal)
+ el.className += " " + theClass;
+ else
+ el.className.baseVal += " " + theClass;
+};
+
+var classListRemove = function(el, theClass) {
+ var className = (!el.className.baseVal) ?
+ el.className : el.className.baseVal;
+ className = className.replace(" " + theClass, "");
+ if(!el.className.baseVal)
+ el.className = className;
+ else
+ el.className.baseVal = className;
+};
+
+var scrollTo = function(el) {
+ querySelectorAllArray(".selected").forEach(function(s) {
+ classListRemove(s, "selected");
+ });
+ classListAdd(el, "selected");
+ window.scrollBy(0, el.getBoundingClientRect().top -
+ (window.innerHeight / 2));
+ highlightArrowsForSelectedEvent();
+};
+
+var move = function(num, up, numItems) {
+ if (num == 1 && up || num == numItems - 1 && !up) {
+ return 0;
+ } else if (num == 0 && up) {
+ return numItems - 1;
+ } else if (num == 0 && !up) {
+ return 1 % numItems;
+ }
+ return up ? num - 1 : num + 1;
+}
+
+var numToId = function(num) {
+ if (num == 0) {
+ return document.getElementById("EndPath")
+ }
+ return document.getElementById("Path" + num);
+};
+
+var navigateTo = function(up) {
+ var numItems = document.querySelectorAll(
+ ".line > .msgEvent, .line > .msgControl").length;
+ var currentSelected = findNum();
+ var newSelected = move(currentSelected, up, numItems);
+ var newEl = numToId(newSelected, numItems);
+
+ // Scroll element into center.
+ scrollTo(newEl);
+};
+
+window.addEventListener("keydown", function (event) {
+ if (event.defaultPrevented) {
+ return;
+ }
+ // key 'j'
+ if (event.keyCode == 74) {
+ navigateTo(/*up=*/false);
+ // key 'k'
+ } else if (event.keyCode == 75) {
+ navigateTo(/*up=*/true);
+ } else {
+ return;
+ }
+ event.preventDefault();
+}, true);
+</script>
+
+<script type='text/javascript'>
+
+var toggleHelp = function() {
+ var hint = document.querySelector("#tooltiphint");
+ var attributeName = "hidden";
+ if (hint.hasAttribute(attributeName)) {
+ hint.removeAttribute(attributeName);
+ } else {
+ hint.setAttribute("hidden", "true");
+ }
+};
+window.addEventListener("keydown", function (event) {
+ if (event.defaultPrevented) {
+ return;
+ }
+ if (event.key == "?") {
+ toggleHelp();
+ } else {
+ return;
+ }
+ event.preventDefault();
+});
+</script>
+
+<style type="text/css">
+ svg {
+ position:absolute;
+ top:0;
+ left:0;
+ height:100%;
+ width:100%;
+ pointer-events: none;
+ overflow: visible
+ }
+ .arrow {
+ stroke-opacity: 0.2;
+ stroke-width: 1;
+ marker-end: url(#arrowhead);
+ }
+
+ .arrow.selected {
+ stroke-opacity: 0.6;
+ stroke-width: 2;
+ marker-end: url(#arrowheadSelected);
+ }
+
+ .arrowhead {
+ orient: auto;
+ stroke: none;
+ opacity: 0.6;
+ fill: blue;
+ }
+</style>
+<svg xmlns="http://www.w3.org/2000/svg">
+ <defs>
+ <marker id="arrowheadSelected" class="arrowhead" opacity="0.6"
+ viewBox="0 0 10 10" refX="3" refY="5"
+ markerWidth="4" markerHeight="4">
+ <path d="M 0 0 L 10 5 L 0 10 z" />
+ </marker>
+ <marker id="arrowhead" class="arrowhead" opacity="0.2"
+ viewBox="0 0 10 10" refX="3" refY="5"
+ markerWidth="4" markerHeight="4">
+ <path d="M 0 0 L 10 5 L 0 10 z" />
+ </marker>
+ </defs>
+ <g id="arrows" fill="none" stroke="blue" visibility="hidden">
+
+ </g>
+</svg>
+<script type='text/javascript'>
+const arrowIndices = [ 0,0 ]
+</script>
+<table class="code" data-fileid="1">
+<tr class="codeline" data-linenumber="1"><td class="num" id="LN1">1</td><td class="line"><span class='comment'>/*</span></td></tr>
+<tr class="codeline" data-linenumber="2"><td class="num" id="LN2">2</td><td class="line"> <span class='comment'>* pluma-taglist-plugin-panel.c</span></td></tr>
+<tr class="codeline" data-linenumber="3"><td class="num" id="LN3">3</td><td class="line"> <span class='comment'>* This file is part of pluma</span></td></tr>
+<tr class="codeline" data-linenumber="4"><td class="num" id="LN4">4</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="5"><td class="num" id="LN5">5</td><td class="line"> <span class='comment'>* Copyright (C) 2005 - Paolo Maggi</span></td></tr>
+<tr class="codeline" data-linenumber="6"><td class="num" id="LN6">6</td><td class="line"> <span class='comment'>* Copyright (C) 2012-2021 MATE Developers</span></td></tr>
+<tr class="codeline" data-linenumber="7"><td class="num" id="LN7">7</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="8"><td class="num" id="LN8">8</td><td class="line"> <span class='comment'>* This program is free software; you can redistribute it and/or modify</span></td></tr>
+<tr class="codeline" data-linenumber="9"><td class="num" id="LN9">9</td><td class="line"> <span class='comment'>* it under the terms of the GNU General Public License as published by</span></td></tr>
+<tr class="codeline" data-linenumber="10"><td class="num" id="LN10">10</td><td class="line"> <span class='comment'>* the Free Software Foundation; either version 2 of the License, or</span></td></tr>
+<tr class="codeline" data-linenumber="11"><td class="num" id="LN11">11</td><td class="line"> <span class='comment'>* (at your option) any later version.</span></td></tr>
+<tr class="codeline" data-linenumber="12"><td class="num" id="LN12">12</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="13"><td class="num" id="LN13">13</td><td class="line"> <span class='comment'>* This program is distributed in the hope that it will be useful,</span></td></tr>
+<tr class="codeline" data-linenumber="14"><td class="num" id="LN14">14</td><td class="line"> <span class='comment'>* but WITHOUT ANY WARRANTY; without even the implied warranty of</span></td></tr>
+<tr class="codeline" data-linenumber="15"><td class="num" id="LN15">15</td><td class="line"> <span class='comment'>* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></td></tr>
+<tr class="codeline" data-linenumber="16"><td class="num" id="LN16">16</td><td class="line"> <span class='comment'>* GNU General Public License for more details.</span></td></tr>
+<tr class="codeline" data-linenumber="17"><td class="num" id="LN17">17</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="18"><td class="num" id="LN18">18</td><td class="line"> <span class='comment'>* You should have received a copy of the GNU General Public License</span></td></tr>
+<tr class="codeline" data-linenumber="19"><td class="num" id="LN19">19</td><td class="line"> <span class='comment'>* along with this program; if not, write to the Free Software</span></td></tr>
+<tr class="codeline" data-linenumber="20"><td class="num" id="LN20">20</td><td class="line"> <span class='comment'>* Foundation, Inc., 51 Franklin St, Fifth Floor,</span></td></tr>
+<tr class="codeline" data-linenumber="21"><td class="num" id="LN21">21</td><td class="line"> <span class='comment'>* Boston, MA 02110-1301, USA.</span></td></tr>
+<tr class="codeline" data-linenumber="22"><td class="num" id="LN22">22</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="23"><td class="num" id="LN23">23</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="24"><td class="num" id="LN24">24</td><td class="line"><span class='comment'>/*</span></td></tr>
+<tr class="codeline" data-linenumber="25"><td class="num" id="LN25">25</td><td class="line"> <span class='comment'>* Modified by the pluma Team, 2005. See the AUTHORS file for a</span></td></tr>
+<tr class="codeline" data-linenumber="26"><td class="num" id="LN26">26</td><td class="line"> <span class='comment'>* list of people on the pluma Team.</span></td></tr>
+<tr class="codeline" data-linenumber="27"><td class="num" id="LN27">27</td><td class="line"> <span class='comment'>* See the ChangeLog files for a list of changes.</span></td></tr>
+<tr class="codeline" data-linenumber="28"><td class="num" id="LN28">28</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="29"><td class="num" id="LN29">29</td><td class="line"> <span class='comment'>* $Id$</span></td></tr>
+<tr class="codeline" data-linenumber="30"><td class="num" id="LN30">30</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="31"><td class="num" id="LN31">31</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="32"><td class="num" id="LN32">32</td><td class="line"><span class='directive'>#ifdef <span class='macro'>HAVE_CONFIG_H<span class='macro_popup'>1</span></span></span></td></tr>
+<tr class="codeline" data-linenumber="33"><td class="num" id="LN33">33</td><td class="line"><span class='directive'>#include &lt;config.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="34"><td class="num" id="LN34">34</td><td class="line"><span class='directive'>#endif</span></td></tr>
+<tr class="codeline" data-linenumber="35"><td class="num" id="LN35">35</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="36"><td class="num" id="LN36">36</td><td class="line"><span class='directive'>#include &lt;string.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="37"><td class="num" id="LN37">37</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="38"><td class="num" id="LN38">38</td><td class="line"><span class='directive'>#include "pluma-taglist-plugin-panel.h"</span></td></tr>
+<tr class="codeline" data-linenumber="39"><td class="num" id="LN39">39</td><td class="line"><span class='directive'>#include "pluma-taglist-plugin-parser.h"</span></td></tr>
+<tr class="codeline" data-linenumber="40"><td class="num" id="LN40">40</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="41"><td class="num" id="LN41">41</td><td class="line"><span class='directive'>#include &lt;pluma/pluma-utils.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="42"><td class="num" id="LN42">42</td><td class="line"><span class='directive'>#include &lt;pluma/pluma-debug.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="43"><td class="num" id="LN43">43</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="44"><td class="num" id="LN44">44</td><td class="line"><span class='directive'>#include &lt;gtk/gtk.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="45"><td class="num" id="LN45">45</td><td class="line"><span class='directive'>#include &lt;gdk/gdkkeysyms.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="46"><td class="num" id="LN46">46</td><td class="line"><span class='directive'>#include &lt;glib/gi18n.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="47"><td class="num" id="LN47">47</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="48"><td class="num" id="LN48">48</td><td class="line"><span class='keyword'>enum</span></td></tr>
+<tr class="codeline" data-linenumber="49"><td class="num" id="LN49">49</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="50"><td class="num" id="LN50">50</td><td class="line"> COLUMN_TAG_NAME,</td></tr>
+<tr class="codeline" data-linenumber="51"><td class="num" id="LN51">51</td><td class="line"> COLUMN_TAG_INDEX_IN_GROUP,</td></tr>
+<tr class="codeline" data-linenumber="52"><td class="num" id="LN52">52</td><td class="line"> NUM_COLUMNS</td></tr>
+<tr class="codeline" data-linenumber="53"><td class="num" id="LN53">53</td><td class="line">};</td></tr>
+<tr class="codeline" data-linenumber="54"><td class="num" id="LN54">54</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="55"><td class="num" id="LN55">55</td><td class="line"><span class='keyword'>struct</span> _PlumaTaglistPluginPanelPrivate</td></tr>
+<tr class="codeline" data-linenumber="56"><td class="num" id="LN56">56</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="57"><td class="num" id="LN57">57</td><td class="line"> PlumaWindow *window;</td></tr>
+<tr class="codeline" data-linenumber="58"><td class="num" id="LN58">58</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="59"><td class="num" id="LN59">59</td><td class="line"> GtkWidget *tag_groups_combo;</td></tr>
+<tr class="codeline" data-linenumber="60"><td class="num" id="LN60">60</td><td class="line"> GtkWidget *tags_list;</td></tr>
+<tr class="codeline" data-linenumber="61"><td class="num" id="LN61">61</td><td class="line"> GtkWidget *preview;</td></tr>
+<tr class="codeline" data-linenumber="62"><td class="num" id="LN62">62</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="63"><td class="num" id="LN63">63</td><td class="line"> TagGroup *selected_tag_group;</td></tr>
+<tr class="codeline" data-linenumber="64"><td class="num" id="LN64">64</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="65"><td class="num" id="LN65">65</td><td class="line"> gchar *data_dir;</td></tr>
+<tr class="codeline" data-linenumber="66"><td class="num" id="LN66">66</td><td class="line">};</td></tr>
+<tr class="codeline" data-linenumber="67"><td class="num" id="LN67">67</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="68"><td class="num" id="LN68">68</td><td class="line"><span class='macro'>G_DEFINE_DYNAMIC_TYPE_EXTENDED (PlumaTaglistPluginPanel,<span class='macro_popup'>static void pluma_taglist_plugin_panel_init (PlumaTaglistPluginPanel<br> *self); static void pluma_taglist_plugin_panel_class_init (PlumaTaglistPluginPanelClass<br> *klass); static void pluma_taglist_plugin_panel_class_finalize<br> (PlumaTaglistPluginPanelClass *klass); static gpointer pluma_taglist_plugin_panel_parent_class<br> = ((void*)0); static GType pluma_taglist_plugin_panel_type_id<br> = 0; static gint PlumaTaglistPluginPanel_private_offset; static<br> void pluma_taglist_plugin_panel_class_intern_init (gpointer klass<br>) { pluma_taglist_plugin_panel_parent_class = g_type_class_peek_parent<br> (klass); if (PlumaTaglistPluginPanel_private_offset != 0) g_type_class_adjust_private_offset<br> (klass, &amp;PlumaTaglistPluginPanel_private_offset); pluma_taglist_plugin_panel_class_init<br> ((PlumaTaglistPluginPanelClass*) klass); } __attribute__ ((__unused__<br>)) static inline gpointer pluma_taglist_plugin_panel_get_instance_private<br> (PlumaTaglistPluginPanel *self) { return (((gpointer) ((guint8<br>*) (self) + (glong) (PlumaTaglistPluginPanel_private_offset))<br>)); } GType pluma_taglist_plugin_panel_get_type (void) { return<br> pluma_taglist_plugin_panel_type_id; } static void pluma_taglist_plugin_panel_register_type<br> (GTypeModule *type_module) { GType g_define_type_id __attribute__<br> ((__unused__)); const GTypeInfo g_define_type_info = { sizeof<br> (PlumaTaglistPluginPanelClass), (GBaseInitFunc) ((void*)0), (<br>GBaseFinalizeFunc) ((void*)0), (GClassInitFunc)(void (*)(void<br>)) pluma_taglist_plugin_panel_class_intern_init, (GClassFinalizeFunc<br>)(void (*)(void)) pluma_taglist_plugin_panel_class_finalize, (<br>(void*)0), sizeof (PlumaTaglistPluginPanel), 0, (GInstanceInitFunc<br>)(void (*)(void)) pluma_taglist_plugin_panel_init, ((void*)0)<br> }; pluma_taglist_plugin_panel_type_id = g_type_module_register_type<br> (type_module, (gtk_box_get_type ()), "PlumaTaglistPluginPanel"<br>, &amp;g_define_type_info, (GTypeFlags) 0); g_define_type_id =<br> pluma_taglist_plugin_panel_type_id; { { PlumaTaglistPluginPanel_private_offset<br> = sizeof (PlumaTaglistPluginPanelPrivate); } ; } }</span></span></td></tr>
+<tr class="codeline" data-linenumber="69"><td class="num" id="LN69">69</td><td class="line"> <span class='macro'>pluma_taglist_plugin_panel,<span class='macro_popup'>static void pluma_taglist_plugin_panel_init (PlumaTaglistPluginPanel<br> *self); static void pluma_taglist_plugin_panel_class_init (PlumaTaglistPluginPanelClass<br> *klass); static void pluma_taglist_plugin_panel_class_finalize<br> (PlumaTaglistPluginPanelClass *klass); static gpointer pluma_taglist_plugin_panel_parent_class<br> = ((void*)0); static GType pluma_taglist_plugin_panel_type_id<br> = 0; static gint PlumaTaglistPluginPanel_private_offset; static<br> void pluma_taglist_plugin_panel_class_intern_init (gpointer klass<br>) { pluma_taglist_plugin_panel_parent_class = g_type_class_peek_parent<br> (klass); if (PlumaTaglistPluginPanel_private_offset != 0) g_type_class_adjust_private_offset<br> (klass, &amp;PlumaTaglistPluginPanel_private_offset); pluma_taglist_plugin_panel_class_init<br> ((PlumaTaglistPluginPanelClass*) klass); } __attribute__ ((__unused__<br>)) static inline gpointer pluma_taglist_plugin_panel_get_instance_private<br> (PlumaTaglistPluginPanel *self) { return (((gpointer) ((guint8<br>*) (self) + (glong) (PlumaTaglistPluginPanel_private_offset))<br>)); } GType pluma_taglist_plugin_panel_get_type (void) { return<br> pluma_taglist_plugin_panel_type_id; } static void pluma_taglist_plugin_panel_register_type<br> (GTypeModule *type_module) { GType g_define_type_id __attribute__<br> ((__unused__)); const GTypeInfo g_define_type_info = { sizeof<br> (PlumaTaglistPluginPanelClass), (GBaseInitFunc) ((void*)0), (<br>GBaseFinalizeFunc) ((void*)0), (GClassInitFunc)(void (*)(void<br>)) pluma_taglist_plugin_panel_class_intern_init, (GClassFinalizeFunc<br>)(void (*)(void)) pluma_taglist_plugin_panel_class_finalize, (<br>(void*)0), sizeof (PlumaTaglistPluginPanel), 0, (GInstanceInitFunc<br>)(void (*)(void)) pluma_taglist_plugin_panel_init, ((void*)0)<br> }; pluma_taglist_plugin_panel_type_id = g_type_module_register_type<br> (type_module, (gtk_box_get_type ()), "PlumaTaglistPluginPanel"<br>, &amp;g_define_type_info, (GTypeFlags) 0); g_define_type_id =<br> pluma_taglist_plugin_panel_type_id; { { PlumaTaglistPluginPanel_private_offset<br> = sizeof (PlumaTaglistPluginPanelPrivate); } ; } }</span></span></td></tr>
+<tr class="codeline" data-linenumber="70"><td class="num" id="LN70">70</td><td class="line"> <span class='macro'>GTK_TYPE_BOX,<span class='macro_popup'>static void pluma_taglist_plugin_panel_init (PlumaTaglistPluginPanel<br> *self); static void pluma_taglist_plugin_panel_class_init (PlumaTaglistPluginPanelClass<br> *klass); static void pluma_taglist_plugin_panel_class_finalize<br> (PlumaTaglistPluginPanelClass *klass); static gpointer pluma_taglist_plugin_panel_parent_class<br> = ((void*)0); static GType pluma_taglist_plugin_panel_type_id<br> = 0; static gint PlumaTaglistPluginPanel_private_offset; static<br> void pluma_taglist_plugin_panel_class_intern_init (gpointer klass<br>) { pluma_taglist_plugin_panel_parent_class = g_type_class_peek_parent<br> (klass); if (PlumaTaglistPluginPanel_private_offset != 0) g_type_class_adjust_private_offset<br> (klass, &amp;PlumaTaglistPluginPanel_private_offset); pluma_taglist_plugin_panel_class_init<br> ((PlumaTaglistPluginPanelClass*) klass); } __attribute__ ((__unused__<br>)) static inline gpointer pluma_taglist_plugin_panel_get_instance_private<br> (PlumaTaglistPluginPanel *self) { return (((gpointer) ((guint8<br>*) (self) + (glong) (PlumaTaglistPluginPanel_private_offset))<br>)); } GType pluma_taglist_plugin_panel_get_type (void) { return<br> pluma_taglist_plugin_panel_type_id; } static void pluma_taglist_plugin_panel_register_type<br> (GTypeModule *type_module) { GType g_define_type_id __attribute__<br> ((__unused__)); const GTypeInfo g_define_type_info = { sizeof<br> (PlumaTaglistPluginPanelClass), (GBaseInitFunc) ((void*)0), (<br>GBaseFinalizeFunc) ((void*)0), (GClassInitFunc)(void (*)(void<br>)) pluma_taglist_plugin_panel_class_intern_init, (GClassFinalizeFunc<br>)(void (*)(void)) pluma_taglist_plugin_panel_class_finalize, (<br>(void*)0), sizeof (PlumaTaglistPluginPanel), 0, (GInstanceInitFunc<br>)(void (*)(void)) pluma_taglist_plugin_panel_init, ((void*)0)<br> }; pluma_taglist_plugin_panel_type_id = g_type_module_register_type<br> (type_module, (gtk_box_get_type ()), "PlumaTaglistPluginPanel"<br>, &amp;g_define_type_info, (GTypeFlags) 0); g_define_type_id =<br> pluma_taglist_plugin_panel_type_id; { { PlumaTaglistPluginPanel_private_offset<br> = sizeof (PlumaTaglistPluginPanelPrivate); } ; } }</span></span></td></tr>
+<tr class="codeline" data-linenumber="71"><td class="num" id="LN71">71</td><td class="line"> <span class='macro'>0,<span class='macro_popup'>static void pluma_taglist_plugin_panel_init (PlumaTaglistPluginPanel<br> *self); static void pluma_taglist_plugin_panel_class_init (PlumaTaglistPluginPanelClass<br> *klass); static void pluma_taglist_plugin_panel_class_finalize<br> (PlumaTaglistPluginPanelClass *klass); static gpointer pluma_taglist_plugin_panel_parent_class<br> = ((void*)0); static GType pluma_taglist_plugin_panel_type_id<br> = 0; static gint PlumaTaglistPluginPanel_private_offset; static<br> void pluma_taglist_plugin_panel_class_intern_init (gpointer klass<br>) { pluma_taglist_plugin_panel_parent_class = g_type_class_peek_parent<br> (klass); if (PlumaTaglistPluginPanel_private_offset != 0) g_type_class_adjust_private_offset<br> (klass, &amp;PlumaTaglistPluginPanel_private_offset); pluma_taglist_plugin_panel_class_init<br> ((PlumaTaglistPluginPanelClass*) klass); } __attribute__ ((__unused__<br>)) static inline gpointer pluma_taglist_plugin_panel_get_instance_private<br> (PlumaTaglistPluginPanel *self) { return (((gpointer) ((guint8<br>*) (self) + (glong) (PlumaTaglistPluginPanel_private_offset))<br>)); } GType pluma_taglist_plugin_panel_get_type (void) { return<br> pluma_taglist_plugin_panel_type_id; } static void pluma_taglist_plugin_panel_register_type<br> (GTypeModule *type_module) { GType g_define_type_id __attribute__<br> ((__unused__)); const GTypeInfo g_define_type_info = { sizeof<br> (PlumaTaglistPluginPanelClass), (GBaseInitFunc) ((void*)0), (<br>GBaseFinalizeFunc) ((void*)0), (GClassInitFunc)(void (*)(void<br>)) pluma_taglist_plugin_panel_class_intern_init, (GClassFinalizeFunc<br>)(void (*)(void)) pluma_taglist_plugin_panel_class_finalize, (<br>(void*)0), sizeof (PlumaTaglistPluginPanel), 0, (GInstanceInitFunc<br>)(void (*)(void)) pluma_taglist_plugin_panel_init, ((void*)0)<br> }; pluma_taglist_plugin_panel_type_id = g_type_module_register_type<br> (type_module, (gtk_box_get_type ()), "PlumaTaglistPluginPanel"<br>, &amp;g_define_type_info, (GTypeFlags) 0); g_define_type_id =<br> pluma_taglist_plugin_panel_type_id; { { PlumaTaglistPluginPanel_private_offset<br> = sizeof (PlumaTaglistPluginPanelPrivate); } ; } }</span></span></td></tr>
+<tr class="codeline" data-linenumber="72"><td class="num" id="LN72">72</td><td class="line"> <span class='macro'>G_ADD_PRIVATE_DYNAMIC(PlumaTaglistPluginPanel))<span class='macro_popup'>static void pluma_taglist_plugin_panel_init (PlumaTaglistPluginPanel<br> *self); static void pluma_taglist_plugin_panel_class_init (PlumaTaglistPluginPanelClass<br> *klass); static void pluma_taglist_plugin_panel_class_finalize<br> (PlumaTaglistPluginPanelClass *klass); static gpointer pluma_taglist_plugin_panel_parent_class<br> = ((void*)0); static GType pluma_taglist_plugin_panel_type_id<br> = 0; static gint PlumaTaglistPluginPanel_private_offset; static<br> void pluma_taglist_plugin_panel_class_intern_init (gpointer klass<br>) { pluma_taglist_plugin_panel_parent_class = g_type_class_peek_parent<br> (klass); if (PlumaTaglistPluginPanel_private_offset != 0) g_type_class_adjust_private_offset<br> (klass, &amp;PlumaTaglistPluginPanel_private_offset); pluma_taglist_plugin_panel_class_init<br> ((PlumaTaglistPluginPanelClass*) klass); } __attribute__ ((__unused__<br>)) static inline gpointer pluma_taglist_plugin_panel_get_instance_private<br> (PlumaTaglistPluginPanel *self) { return (((gpointer) ((guint8<br>*) (self) + (glong) (PlumaTaglistPluginPanel_private_offset))<br>)); } GType pluma_taglist_plugin_panel_get_type (void) { return<br> pluma_taglist_plugin_panel_type_id; } static void pluma_taglist_plugin_panel_register_type<br> (GTypeModule *type_module) { GType g_define_type_id __attribute__<br> ((__unused__)); const GTypeInfo g_define_type_info = { sizeof<br> (PlumaTaglistPluginPanelClass), (GBaseInitFunc) ((void*)0), (<br>GBaseFinalizeFunc) ((void*)0), (GClassInitFunc)(void (*)(void<br>)) pluma_taglist_plugin_panel_class_intern_init, (GClassFinalizeFunc<br>)(void (*)(void)) pluma_taglist_plugin_panel_class_finalize, (<br>(void*)0), sizeof (PlumaTaglistPluginPanel), 0, (GInstanceInitFunc<br>)(void (*)(void)) pluma_taglist_plugin_panel_init, ((void*)0)<br> }; pluma_taglist_plugin_panel_type_id = g_type_module_register_type<br> (type_module, (gtk_box_get_type ()), "PlumaTaglistPluginPanel"<br>, &amp;g_define_type_info, (GTypeFlags) 0); g_define_type_id =<br> pluma_taglist_plugin_panel_type_id; { { PlumaTaglistPluginPanel_private_offset<br> = sizeof (PlumaTaglistPluginPanelPrivate); } ; } }</span></span></td></tr>
+<tr class="codeline" data-linenumber="73"><td class="num" id="LN73">73</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="74"><td class="num" id="LN74">74</td><td class="line"><span class='keyword'>enum</span></td></tr>
+<tr class="codeline" data-linenumber="75"><td class="num" id="LN75">75</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="76"><td class="num" id="LN76">76</td><td class="line"> PROP_0,</td></tr>
+<tr class="codeline" data-linenumber="77"><td class="num" id="LN77">77</td><td class="line"> PROP_WINDOW,</td></tr>
+<tr class="codeline" data-linenumber="78"><td class="num" id="LN78">78</td><td class="line">};</td></tr>
+<tr class="codeline" data-linenumber="79"><td class="num" id="LN79">79</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="80"><td class="num" id="LN80">80</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="81"><td class="num" id="LN81">81</td><td class="line">set_window (PlumaTaglistPluginPanel *panel,</td></tr>
+<tr class="codeline" data-linenumber="82"><td class="num" id="LN82">82</td><td class="line"> PlumaWindow *window)</td></tr>
+<tr class="codeline" data-linenumber="83"><td class="num" id="LN83">83</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="84"><td class="num" id="LN84">84</td><td class="line"> <span class='macro'>g_return_if_fail (panel-&gt;priv-&gt;window == NULL)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_21<br>; if (panel-&gt;priv-&gt;window == ((void*)0)) _g_boolean_var_21<br> = 1; else _g_boolean_var_21 = 0; _g_boolean_var_21; }), 1)))<br> { } else { g_return_if_fail_warning (((gchar*) 0), ((const char<br>*) (__func__)), "panel-&gt;priv-&gt;window == NULL"); return;<br> } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="85"><td class="num" id="LN85">85</td><td class="line"> <span class='macro'>g_return_if_fail (PLUMA_IS_WINDOW (window))<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_22<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((window)); GType __t = ((pluma_window_get_type())); gboolean<br> __r; if (!__inst) __r = (0); else if (__inst-&gt;g_class &amp;&amp;<br> __inst-&gt;g_class-&gt;g_type == __t) __r = (!(0)); else __r<br> = g_type_check_instance_is_a (__inst, __t); __r; }))))) _g_boolean_var_22<br> = 1; else _g_boolean_var_22 = 0; _g_boolean_var_22; }), 1)))<br> { } else { g_return_if_fail_warning (((gchar*) 0), ((const char<br>*) (__func__)), "PLUMA_IS_WINDOW (window)"); return; } } while<br> (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="86"><td class="num" id="LN86">86</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="87"><td class="num" id="LN87">87</td><td class="line"> panel-&gt;priv-&gt;window = window;</td></tr>
+<tr class="codeline" data-linenumber="88"><td class="num" id="LN88">88</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="89"><td class="num" id="LN89">89</td><td class="line"> <span class='comment'>/* TODO */</span></td></tr>
+<tr class="codeline" data-linenumber="90"><td class="num" id="LN90">90</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="91"><td class="num" id="LN91">91</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="92"><td class="num" id="LN92">92</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="93"><td class="num" id="LN93">93</td><td class="line">pluma_taglist_plugin_panel_set_property (GObject *object,</td></tr>
+<tr class="codeline" data-linenumber="94"><td class="num" id="LN94">94</td><td class="line"> guint prop_id,</td></tr>
+<tr class="codeline" data-linenumber="95"><td class="num" id="LN95">95</td><td class="line"> <span class='keyword'>const</span> GValue *value,</td></tr>
+<tr class="codeline" data-linenumber="96"><td class="num" id="LN96">96</td><td class="line"> GParamSpec *pspec)</td></tr>
+<tr class="codeline" data-linenumber="97"><td class="num" id="LN97">97</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="98"><td class="num" id="LN98">98</td><td class="line"> PlumaTaglistPluginPanel *panel = <span class='macro'>PLUMA_TAGLIST_PLUGIN_PANEL (object)<span class='macro_popup'>((((PlumaTaglistPluginPanel*) (void *) ((object)))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="99"><td class="num" id="LN99">99</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="100"><td class="num" id="LN100">100</td><td class="line"> <span class='keyword'>switch</span> (prop_id)</td></tr>
+<tr class="codeline" data-linenumber="101"><td class="num" id="LN101">101</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="102"><td class="num" id="LN102">102</td><td class="line"> <span class='keyword'>case</span> PROP_WINDOW:</td></tr>
+<tr class="codeline" data-linenumber="103"><td class="num" id="LN103">103</td><td class="line"> set_window (panel, g_value_get_object (value));</td></tr>
+<tr class="codeline" data-linenumber="104"><td class="num" id="LN104">104</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="105"><td class="num" id="LN105">105</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="106"><td class="num" id="LN106">106</td><td class="line"> <span class='keyword'>default</span>:</td></tr>
+<tr class="codeline" data-linenumber="107"><td class="num" id="LN107">107</td><td class="line"> <span class='macro'>G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec)<span class='macro_popup'>do { GObject *_glib__object = (GObject*) ((object)); GParamSpec<br> *_glib__pspec = (GParamSpec*) ((pspec)); guint _glib__property_id<br> = ((prop_id)); g_warning ("%s:%d: invalid %s id %u for \"%s\" of type '%s' in '%s'"<br>, "pluma-taglist-plugin-panel.c", 107, ("property"), _glib__property_id<br>, _glib__pspec-&gt;name, g_type_name ((((((GTypeClass*) (((GTypeInstance<br>*) (_glib__pspec))-&gt;g_class))-&gt;g_type)))), (g_type_name<br> ((((((GTypeClass*) (((GTypeInstance*) (_glib__object))-&gt;g_class<br>))-&gt;g_type)))))); } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="108"><td class="num" id="LN108">108</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="109"><td class="num" id="LN109">109</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="110"><td class="num" id="LN110">110</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="111"><td class="num" id="LN111">111</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="112"><td class="num" id="LN112">112</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="113"><td class="num" id="LN113">113</td><td class="line">pluma_taglist_plugin_panel_get_property (GObject *object,</td></tr>
+<tr class="codeline" data-linenumber="114"><td class="num" id="LN114">114</td><td class="line"> guint prop_id,</td></tr>
+<tr class="codeline" data-linenumber="115"><td class="num" id="LN115">115</td><td class="line"> GValue *value,</td></tr>
+<tr class="codeline" data-linenumber="116"><td class="num" id="LN116">116</td><td class="line"> GParamSpec *pspec)</td></tr>
+<tr class="codeline" data-linenumber="117"><td class="num" id="LN117">117</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="118"><td class="num" id="LN118">118</td><td class="line"> PlumaTaglistPluginPanel *panel = <span class='macro'>PLUMA_TAGLIST_PLUGIN_PANEL (object)<span class='macro_popup'>((((PlumaTaglistPluginPanel*) (void *) ((object)))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="119"><td class="num" id="LN119">119</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="120"><td class="num" id="LN120">120</td><td class="line"> <span class='keyword'>switch</span> (prop_id)</td></tr>
+<tr class="codeline" data-linenumber="121"><td class="num" id="LN121">121</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="122"><td class="num" id="LN122">122</td><td class="line"> <span class='keyword'>case</span> PROP_WINDOW:</td></tr>
+<tr class="codeline" data-linenumber="123"><td class="num" id="LN123">123</td><td class="line"> panel-&gt;priv = pluma_taglist_plugin_panel_get_instance_private (panel);</td></tr>
+<tr class="codeline" data-linenumber="124"><td class="num" id="LN124">124</td><td class="line"> g_value_set_object (value, panel-&gt;priv-&gt;window);</td></tr>
+<tr class="codeline" data-linenumber="125"><td class="num" id="LN125">125</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="126"><td class="num" id="LN126">126</td><td class="line"> <span class='keyword'>default</span>:</td></tr>
+<tr class="codeline" data-linenumber="127"><td class="num" id="LN127">127</td><td class="line"> <span class='macro'>G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec)<span class='macro_popup'>do { GObject *_glib__object = (GObject*) ((object)); GParamSpec<br> *_glib__pspec = (GParamSpec*) ((pspec)); guint _glib__property_id<br> = ((prop_id)); g_warning ("%s:%d: invalid %s id %u for \"%s\" of type '%s' in '%s'"<br>, "pluma-taglist-plugin-panel.c", 127, ("property"), _glib__property_id<br>, _glib__pspec-&gt;name, g_type_name ((((((GTypeClass*) (((GTypeInstance<br>*) (_glib__pspec))-&gt;g_class))-&gt;g_type)))), (g_type_name<br> ((((((GTypeClass*) (((GTypeInstance*) (_glib__object))-&gt;g_class<br>))-&gt;g_type)))))); } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="128"><td class="num" id="LN128">128</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="129"><td class="num" id="LN129">129</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="130"><td class="num" id="LN130">130</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="131"><td class="num" id="LN131">131</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="132"><td class="num" id="LN132">132</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="133"><td class="num" id="LN133">133</td><td class="line">pluma_taglist_plugin_panel_finalize (GObject *object)</td></tr>
+<tr class="codeline" data-linenumber="134"><td class="num" id="LN134">134</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="135"><td class="num" id="LN135">135</td><td class="line"> PlumaTaglistPluginPanel *panel = <span class='macro'>PLUMA_TAGLIST_PLUGIN_PANEL (object)<span class='macro_popup'>((((PlumaTaglistPluginPanel*) (void *) ((object)))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="136"><td class="num" id="LN136">136</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="137"><td class="num" id="LN137">137</td><td class="line"> g_free (panel-&gt;priv-&gt;data_dir);</td></tr>
+<tr class="codeline" data-linenumber="138"><td class="num" id="LN138">138</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="139"><td class="num" id="LN139">139</td><td class="line"> <span class='macro'>G_OBJECT_CLASS (pluma_taglist_plugin_panel_parent_class)<span class='macro_popup'>((((GObjectClass*) (void *) ((pluma_taglist_plugin_panel_parent_class<br>)))))</span></span>-&gt;finalize (object);</td></tr>
+<tr class="codeline" data-linenumber="140"><td class="num" id="LN140">140</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="141"><td class="num" id="LN141">141</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="142"><td class="num" id="LN142">142</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="143"><td class="num" id="LN143">143</td><td class="line">pluma_taglist_plugin_panel_class_init (PlumaTaglistPluginPanelClass *klass)</td></tr>
+<tr class="codeline" data-linenumber="144"><td class="num" id="LN144">144</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="145"><td class="num" id="LN145">145</td><td class="line"> GObjectClass *object_class = <span class='macro'>G_OBJECT_CLASS (klass)<span class='macro_popup'>((((GObjectClass*) (void *) ((klass)))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="146"><td class="num" id="LN146">146</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="147"><td class="num" id="LN147">147</td><td class="line"> object_class-&gt;finalize = pluma_taglist_plugin_panel_finalize;</td></tr>
+<tr class="codeline" data-linenumber="148"><td class="num" id="LN148">148</td><td class="line"> object_class-&gt;get_property = pluma_taglist_plugin_panel_get_property;</td></tr>
+<tr class="codeline" data-linenumber="149"><td class="num" id="LN149">149</td><td class="line"> object_class-&gt;set_property = pluma_taglist_plugin_panel_set_property;</td></tr>
+<tr class="codeline" data-linenumber="150"><td class="num" id="LN150">150</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="151"><td class="num" id="LN151">151</td><td class="line"> g_object_class_install_property (object_class,</td></tr>
+<tr class="codeline" data-linenumber="152"><td class="num" id="LN152">152</td><td class="line"> PROP_WINDOW,</td></tr>
+<tr class="codeline" data-linenumber="153"><td class="num" id="LN153">153</td><td class="line"> g_param_spec_object (<span class='string_literal'>"window"</span>,</td></tr>
+<tr class="codeline" data-linenumber="154"><td class="num" id="LN154">154</td><td class="line"> <span class='string_literal'>"Window"</span>,</td></tr>
+<tr class="codeline" data-linenumber="155"><td class="num" id="LN155">155</td><td class="line"> <span class='string_literal'>"The PlumaWindow this PlumaTaglistPluginPanel is associated with"</span>,</td></tr>
+<tr class="codeline" data-linenumber="156"><td class="num" id="LN156">156</td><td class="line"> <span class='macro'>PLUMA_TYPE_WINDOW<span class='macro_popup'>(pluma_window_get_type())</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="157"><td class="num" id="LN157">157</td><td class="line"> G_PARAM_READWRITE |</td></tr>
+<tr class="codeline" data-linenumber="158"><td class="num" id="LN158">158</td><td class="line"> G_PARAM_CONSTRUCT_ONLY));</td></tr>
+<tr class="codeline" data-linenumber="159"><td class="num" id="LN159">159</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="160"><td class="num" id="LN160">160</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="161"><td class="num" id="LN161">161</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="162"><td class="num" id="LN162">162</td><td class="line">pluma_taglist_plugin_panel_class_finalize (PlumaTaglistPluginPanelClass *klass)</td></tr>
+<tr class="codeline" data-linenumber="163"><td class="num" id="LN163">163</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="164"><td class="num" id="LN164">164</td><td class="line"> <span class='comment'>/* dummy function - used by G_DEFINE_DYNAMIC_TYPE_EXTENDED */</span></td></tr>
+<tr class="codeline" data-linenumber="165"><td class="num" id="LN165">165</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="166"><td class="num" id="LN166">166</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="167"><td class="num" id="LN167">167</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="168"><td class="num" id="LN168">168</td><td class="line">insert_tag (PlumaTaglistPluginPanel *panel,</td></tr>
+<tr class="codeline" data-linenumber="169"><td class="num" id="LN169">169</td><td class="line"> Tag *tag,</td></tr>
+<tr class="codeline" data-linenumber="170"><td class="num" id="LN170">170</td><td class="line"> gboolean grab_focus)</td></tr>
+<tr class="codeline" data-linenumber="171"><td class="num" id="LN171">171</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="172"><td class="num" id="LN172">172</td><td class="line"> PlumaView *view;</td></tr>
+<tr class="codeline" data-linenumber="173"><td class="num" id="LN173">173</td><td class="line"> GtkTextBuffer *buffer;</td></tr>
+<tr class="codeline" data-linenumber="174"><td class="num" id="LN174">174</td><td class="line"> GtkTextIter start, end;</td></tr>
+<tr class="codeline" data-linenumber="175"><td class="num" id="LN175">175</td><td class="line"> GtkTextIter cursor;</td></tr>
+<tr class="codeline" data-linenumber="176"><td class="num" id="LN176">176</td><td class="line"> gboolean sel = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="177"><td class="num" id="LN177">177</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="178"><td class="num" id="LN178">178</td><td class="line"> pluma_debug (<span class='macro'>DEBUG_PLUGINS<span class='macro_popup'>PLUMA_DEBUG_PLUGINS, "pluma-taglist-plugin-panel.c", 178, ((const<br> char*) (__func__))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="179"><td class="num" id="LN179">179</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="180"><td class="num" id="LN180">180</td><td class="line"> view = pluma_window_get_active_view (panel-&gt;priv-&gt;window);</td></tr>
+<tr class="codeline" data-linenumber="181"><td class="num" id="LN181">181</td><td class="line"> <span class='macro'>g_return_if_fail (view != NULL)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_23<br>; if (view != ((void*)0)) _g_boolean_var_23 = 1; else _g_boolean_var_23<br> = 0; _g_boolean_var_23; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "view != NULL"); return<br>; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="182"><td class="num" id="LN182">182</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="183"><td class="num" id="LN183">183</td><td class="line"> buffer = gtk_text_view_get_buffer (<span class='macro'>GTK_TEXT_VIEW (view)<span class='macro_popup'>((((GtkTextView*) (void *) ((view)))))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="184"><td class="num" id="LN184">184</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="185"><td class="num" id="LN185">185</td><td class="line"> gtk_text_buffer_begin_user_action (buffer);</td></tr>
+<tr class="codeline" data-linenumber="186"><td class="num" id="LN186">186</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="187"><td class="num" id="LN187">187</td><td class="line"> <span class='comment'>/* always insert the begin tag at the beginning of the selection</span></td></tr>
+<tr class="codeline" data-linenumber="188"><td class="num" id="LN188">188</td><td class="line"> <span class='comment'>* and the end tag at the end, if there is no selection they will</span></td></tr>
+<tr class="codeline" data-linenumber="189"><td class="num" id="LN189">189</td><td class="line"> <span class='comment'>* be automatically inserted at the cursor position.</span></td></tr>
+<tr class="codeline" data-linenumber="190"><td class="num" id="LN190">190</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="191"><td class="num" id="LN191">191</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="192"><td class="num" id="LN192">192</td><td class="line"> <span class='keyword'>if</span> (tag-&gt;begin != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="193"><td class="num" id="LN193">193</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="194"><td class="num" id="LN194">194</td><td class="line"> sel = <span class="mrange">gtk_text_buffer_get_selection_bounds (buffer,</td></tr></span>
+<tr><td class="num"></td><td class="line"><div id="EndPath" class="msg msgEvent" style="margin-left:17ex">Value stored to 'sel' is never read</div></td></tr>
+<tr class="codeline" data-linenumber="195"><td class="num" id="LN195">195</td><td class="line"> <span class="mrange">&amp;start,</td></tr></span>
+<tr class="codeline" data-linenumber="196"><td class="num" id="LN196">196</td><td class="line"> <span class="mrange">&amp;end)</span>;</td></tr>
+<tr class="codeline" data-linenumber="197"><td class="num" id="LN197">197</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="198"><td class="num" id="LN198">198</td><td class="line"> gtk_text_buffer_insert (buffer,</td></tr>
+<tr class="codeline" data-linenumber="199"><td class="num" id="LN199">199</td><td class="line"> &amp;start,</td></tr>
+<tr class="codeline" data-linenumber="200"><td class="num" id="LN200">200</td><td class="line"> (gchar *)tag-&gt;begin,</td></tr>
+<tr class="codeline" data-linenumber="201"><td class="num" id="LN201">201</td><td class="line"> -1);</td></tr>
+<tr class="codeline" data-linenumber="202"><td class="num" id="LN202">202</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="203"><td class="num" id="LN203">203</td><td class="line"> <span class='comment'>/* get iterators again since they have been invalidated and move</span></td></tr>
+<tr class="codeline" data-linenumber="204"><td class="num" id="LN204">204</td><td class="line"> <span class='comment'>* the cursor after the selection */</span></td></tr>
+<tr class="codeline" data-linenumber="205"><td class="num" id="LN205">205</td><td class="line"> gtk_text_buffer_get_selection_bounds (buffer,</td></tr>
+<tr class="codeline" data-linenumber="206"><td class="num" id="LN206">206</td><td class="line"> &amp;start,</td></tr>
+<tr class="codeline" data-linenumber="207"><td class="num" id="LN207">207</td><td class="line"> &amp;cursor);</td></tr>
+<tr class="codeline" data-linenumber="208"><td class="num" id="LN208">208</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="209"><td class="num" id="LN209">209</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="210"><td class="num" id="LN210">210</td><td class="line"> <span class='keyword'>if</span> (tag-&gt;end != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="211"><td class="num" id="LN211">211</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="212"><td class="num" id="LN212">212</td><td class="line"> sel = gtk_text_buffer_get_selection_bounds (buffer,</td></tr>
+<tr class="codeline" data-linenumber="213"><td class="num" id="LN213">213</td><td class="line"> &amp;start,</td></tr>
+<tr class="codeline" data-linenumber="214"><td class="num" id="LN214">214</td><td class="line"> &amp;end);</td></tr>
+<tr class="codeline" data-linenumber="215"><td class="num" id="LN215">215</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="216"><td class="num" id="LN216">216</td><td class="line"> gtk_text_buffer_insert (buffer,</td></tr>
+<tr class="codeline" data-linenumber="217"><td class="num" id="LN217">217</td><td class="line"> &amp;end,</td></tr>
+<tr class="codeline" data-linenumber="218"><td class="num" id="LN218">218</td><td class="line"> (gchar *)tag-&gt;end,</td></tr>
+<tr class="codeline" data-linenumber="219"><td class="num" id="LN219">219</td><td class="line"> -1);</td></tr>
+<tr class="codeline" data-linenumber="220"><td class="num" id="LN220">220</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="221"><td class="num" id="LN221">221</td><td class="line"> <span class='comment'>/* if there is no selection and we have a paired tag, move the</span></td></tr>
+<tr class="codeline" data-linenumber="222"><td class="num" id="LN222">222</td><td class="line"> <span class='comment'>* cursor between the pair, otherwise move it at the end */</span></td></tr>
+<tr class="codeline" data-linenumber="223"><td class="num" id="LN223">223</td><td class="line"> <span class='keyword'>if</span> (!sel)</td></tr>
+<tr class="codeline" data-linenumber="224"><td class="num" id="LN224">224</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="225"><td class="num" id="LN225">225</td><td class="line"> gint offset;</td></tr>
+<tr class="codeline" data-linenumber="226"><td class="num" id="LN226">226</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="227"><td class="num" id="LN227">227</td><td class="line"> offset = gtk_text_iter_get_offset (&amp;end) -</td></tr>
+<tr class="codeline" data-linenumber="228"><td class="num" id="LN228">228</td><td class="line"> g_utf8_strlen ((gchar *)tag-&gt;end, -1);</td></tr>
+<tr class="codeline" data-linenumber="229"><td class="num" id="LN229">229</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="230"><td class="num" id="LN230">230</td><td class="line"> gtk_text_buffer_get_iter_at_offset (buffer,</td></tr>
+<tr class="codeline" data-linenumber="231"><td class="num" id="LN231">231</td><td class="line"> &amp;end,</td></tr>
+<tr class="codeline" data-linenumber="232"><td class="num" id="LN232">232</td><td class="line"> offset);</td></tr>
+<tr class="codeline" data-linenumber="233"><td class="num" id="LN233">233</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="234"><td class="num" id="LN234">234</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="235"><td class="num" id="LN235">235</td><td class="line"> cursor = end;</td></tr>
+<tr class="codeline" data-linenumber="236"><td class="num" id="LN236">236</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="237"><td class="num" id="LN237">237</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="238"><td class="num" id="LN238">238</td><td class="line"> gtk_text_buffer_place_cursor (buffer, &amp;cursor);</td></tr>
+<tr class="codeline" data-linenumber="239"><td class="num" id="LN239">239</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="240"><td class="num" id="LN240">240</td><td class="line"> gtk_text_buffer_end_user_action (buffer);</td></tr>
+<tr class="codeline" data-linenumber="241"><td class="num" id="LN241">241</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="242"><td class="num" id="LN242">242</td><td class="line"> <span class='keyword'>if</span> (grab_focus)</td></tr>
+<tr class="codeline" data-linenumber="243"><td class="num" id="LN243">243</td><td class="line"> gtk_widget_grab_focus (<span class='macro'>GTK_WIDGET (view)<span class='macro_popup'>((((GtkWidget*) (void *) ((view)))))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="244"><td class="num" id="LN244">244</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="245"><td class="num" id="LN245">245</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="246"><td class="num" id="LN246">246</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="247"><td class="num" id="LN247">247</td><td class="line">tag_list_row_activated_cb (GtkTreeView *tag_list,</td></tr>
+<tr class="codeline" data-linenumber="248"><td class="num" id="LN248">248</td><td class="line"> GtkTreePath *path,</td></tr>
+<tr class="codeline" data-linenumber="249"><td class="num" id="LN249">249</td><td class="line"> GtkTreeViewColumn *column,</td></tr>
+<tr class="codeline" data-linenumber="250"><td class="num" id="LN250">250</td><td class="line"> PlumaTaglistPluginPanel *panel)</td></tr>
+<tr class="codeline" data-linenumber="251"><td class="num" id="LN251">251</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="252"><td class="num" id="LN252">252</td><td class="line"> GtkTreeIter iter;</td></tr>
+<tr class="codeline" data-linenumber="253"><td class="num" id="LN253">253</td><td class="line"> GtkTreeModel *model;</td></tr>
+<tr class="codeline" data-linenumber="254"><td class="num" id="LN254">254</td><td class="line"> gint index;</td></tr>
+<tr class="codeline" data-linenumber="255"><td class="num" id="LN255">255</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="256"><td class="num" id="LN256">256</td><td class="line"> pluma_debug (<span class='macro'>DEBUG_PLUGINS<span class='macro_popup'>PLUMA_DEBUG_PLUGINS, "pluma-taglist-plugin-panel.c", 256, ((const<br> char*) (__func__))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="257"><td class="num" id="LN257">257</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="258"><td class="num" id="LN258">258</td><td class="line"> model = gtk_tree_view_get_model (tag_list);</td></tr>
+<tr class="codeline" data-linenumber="259"><td class="num" id="LN259">259</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="260"><td class="num" id="LN260">260</td><td class="line"> gtk_tree_model_get_iter (model, &amp;iter, path);</td></tr>
+<tr class="codeline" data-linenumber="261"><td class="num" id="LN261">261</td><td class="line"> <span class='macro'>g_return_if_fail (&amp;iter != NULL)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_24<br>; if (&amp;iter != ((void*)0)) _g_boolean_var_24 = 1; else _g_boolean_var_24<br> = 0; _g_boolean_var_24; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "&amp;iter != NULL"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="262"><td class="num" id="LN262">262</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="263"><td class="num" id="LN263">263</td><td class="line"> gtk_tree_model_get (model, &amp;iter, COLUMN_TAG_INDEX_IN_GROUP, &amp;index, -1);</td></tr>
+<tr class="codeline" data-linenumber="264"><td class="num" id="LN264">264</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="265"><td class="num" id="LN265">265</td><td class="line"> pluma_debug_message (<span class='macro'>DEBUG_PLUGINS<span class='macro_popup'>PLUMA_DEBUG_PLUGINS, "pluma-taglist-plugin-panel.c", 265, ((const<br> char*) (__func__))</span></span>, <span class='string_literal'>"Index: %d"</span>, index);</td></tr>
+<tr class="codeline" data-linenumber="266"><td class="num" id="LN266">266</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="267"><td class="num" id="LN267">267</td><td class="line"> insert_tag (panel,</td></tr>
+<tr class="codeline" data-linenumber="268"><td class="num" id="LN268">268</td><td class="line"> (Tag*)g_list_nth_data (panel-&gt;priv-&gt;selected_tag_group-&gt;tags, index),</td></tr>
+<tr class="codeline" data-linenumber="269"><td class="num" id="LN269">269</td><td class="line"> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="270"><td class="num" id="LN270">270</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="271"><td class="num" id="LN271">271</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="272"><td class="num" id="LN272">272</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="273"><td class="num" id="LN273">273</td><td class="line">tag_list_key_press_event_cb (GtkTreeView *tag_list,</td></tr>
+<tr class="codeline" data-linenumber="274"><td class="num" id="LN274">274</td><td class="line"> GdkEventKey *event,</td></tr>
+<tr class="codeline" data-linenumber="275"><td class="num" id="LN275">275</td><td class="line"> PlumaTaglistPluginPanel *panel)</td></tr>
+<tr class="codeline" data-linenumber="276"><td class="num" id="LN276">276</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="277"><td class="num" id="LN277">277</td><td class="line"> gboolean grab_focus;</td></tr>
+<tr class="codeline" data-linenumber="278"><td class="num" id="LN278">278</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="279"><td class="num" id="LN279">279</td><td class="line"> grab_focus = (event-&gt;state &amp; GDK_CONTROL_MASK) != 0;</td></tr>
+<tr class="codeline" data-linenumber="280"><td class="num" id="LN280">280</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="281"><td class="num" id="LN281">281</td><td class="line"> <span class='keyword'>if</span> (event-&gt;keyval == <span class='macro'>GDK_KEY_Return<span class='macro_popup'>0xff0d</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="282"><td class="num" id="LN282">282</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="283"><td class="num" id="LN283">283</td><td class="line"> GtkTreeModel *model;</td></tr>
+<tr class="codeline" data-linenumber="284"><td class="num" id="LN284">284</td><td class="line"> GtkTreeSelection *selection;</td></tr>
+<tr class="codeline" data-linenumber="285"><td class="num" id="LN285">285</td><td class="line"> GtkTreeIter iter;</td></tr>
+<tr class="codeline" data-linenumber="286"><td class="num" id="LN286">286</td><td class="line"> gint index;</td></tr>
+<tr class="codeline" data-linenumber="287"><td class="num" id="LN287">287</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="288"><td class="num" id="LN288">288</td><td class="line"> pluma_debug_message (<span class='macro'>DEBUG_PLUGINS<span class='macro_popup'>PLUMA_DEBUG_PLUGINS, "pluma-taglist-plugin-panel.c", 288, ((const<br> char*) (__func__))</span></span>, <span class='string_literal'>"RETURN Pressed"</span>);</td></tr>
+<tr class="codeline" data-linenumber="289"><td class="num" id="LN289">289</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="290"><td class="num" id="LN290">290</td><td class="line"> model = gtk_tree_view_get_model (tag_list);</td></tr>
+<tr class="codeline" data-linenumber="291"><td class="num" id="LN291">291</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="292"><td class="num" id="LN292">292</td><td class="line"> selection = gtk_tree_view_get_selection (tag_list);</td></tr>
+<tr class="codeline" data-linenumber="293"><td class="num" id="LN293">293</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="294"><td class="num" id="LN294">294</td><td class="line"> <span class='keyword'>if</span> (gtk_tree_selection_get_selected (selection, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, &amp;iter))</td></tr>
+<tr class="codeline" data-linenumber="295"><td class="num" id="LN295">295</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="296"><td class="num" id="LN296">296</td><td class="line"> gtk_tree_model_get (model, &amp;iter, COLUMN_TAG_INDEX_IN_GROUP, &amp;index, -1);</td></tr>
+<tr class="codeline" data-linenumber="297"><td class="num" id="LN297">297</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="298"><td class="num" id="LN298">298</td><td class="line"> pluma_debug_message (<span class='macro'>DEBUG_PLUGINS<span class='macro_popup'>PLUMA_DEBUG_PLUGINS, "pluma-taglist-plugin-panel.c", 298, ((const<br> char*) (__func__))</span></span>, <span class='string_literal'>"Index: %d"</span>, index);</td></tr>
+<tr class="codeline" data-linenumber="299"><td class="num" id="LN299">299</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="300"><td class="num" id="LN300">300</td><td class="line"> insert_tag (panel,</td></tr>
+<tr class="codeline" data-linenumber="301"><td class="num" id="LN301">301</td><td class="line"> (Tag*)g_list_nth_data (panel-&gt;priv-&gt;selected_tag_group-&gt;tags, index),</td></tr>
+<tr class="codeline" data-linenumber="302"><td class="num" id="LN302">302</td><td class="line"> grab_focus);</td></tr>
+<tr class="codeline" data-linenumber="303"><td class="num" id="LN303">303</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="304"><td class="num" id="LN304">304</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="305"><td class="num" id="LN305">305</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="306"><td class="num" id="LN306">306</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="307"><td class="num" id="LN307">307</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="308"><td class="num" id="LN308">308</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="309"><td class="num" id="LN309">309</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="310"><td class="num" id="LN310">310</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="311"><td class="num" id="LN311">311</td><td class="line"><span class='keyword'>static</span> GtkTreeModel*</td></tr>
+<tr class="codeline" data-linenumber="312"><td class="num" id="LN312">312</td><td class="line">create_model (PlumaTaglistPluginPanel *panel)</td></tr>
+<tr class="codeline" data-linenumber="313"><td class="num" id="LN313">313</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="314"><td class="num" id="LN314">314</td><td class="line"> gint i = 0;</td></tr>
+<tr class="codeline" data-linenumber="315"><td class="num" id="LN315">315</td><td class="line"> GtkListStore *store;</td></tr>
+<tr class="codeline" data-linenumber="316"><td class="num" id="LN316">316</td><td class="line"> GtkTreeIter iter;</td></tr>
+<tr class="codeline" data-linenumber="317"><td class="num" id="LN317">317</td><td class="line"> GList *list;</td></tr>
+<tr class="codeline" data-linenumber="318"><td class="num" id="LN318">318</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="319"><td class="num" id="LN319">319</td><td class="line"> pluma_debug (<span class='macro'>DEBUG_PLUGINS<span class='macro_popup'>PLUMA_DEBUG_PLUGINS, "pluma-taglist-plugin-panel.c", 319, ((const<br> char*) (__func__))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="320"><td class="num" id="LN320">320</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="321"><td class="num" id="LN321">321</td><td class="line"> <span class='comment'>/* create list store */</span></td></tr>
+<tr class="codeline" data-linenumber="322"><td class="num" id="LN322">322</td><td class="line"> store = gtk_list_store_new (NUM_COLUMNS, <span class='macro'>G_TYPE_STRING<span class='macro_popup'>((GType) ((16) &lt;&lt; (2)))</span></span>, <span class='macro'>G_TYPE_INT<span class='macro_popup'>((GType) ((6) &lt;&lt; (2)))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="323"><td class="num" id="LN323">323</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="324"><td class="num" id="LN324">324</td><td class="line"> <span class='comment'>/* add data to the list store */</span></td></tr>
+<tr class="codeline" data-linenumber="325"><td class="num" id="LN325">325</td><td class="line"> list = panel-&gt;priv-&gt;selected_tag_group-&gt;tags;</td></tr>
+<tr class="codeline" data-linenumber="326"><td class="num" id="LN326">326</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="327"><td class="num" id="LN327">327</td><td class="line"> <span class='keyword'>while</span> (list != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="328"><td class="num" id="LN328">328</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="329"><td class="num" id="LN329">329</td><td class="line"> <span class='keyword'>const</span> gchar* tag_name;</td></tr>
+<tr class="codeline" data-linenumber="330"><td class="num" id="LN330">330</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="331"><td class="num" id="LN331">331</td><td class="line"> tag_name = (gchar *)((Tag*)list-&gt;data)-&gt;name;</td></tr>
+<tr class="codeline" data-linenumber="332"><td class="num" id="LN332">332</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="333"><td class="num" id="LN333">333</td><td class="line"> pluma_debug_message (<span class='macro'>DEBUG_PLUGINS<span class='macro_popup'>PLUMA_DEBUG_PLUGINS, "pluma-taglist-plugin-panel.c", 333, ((const<br> char*) (__func__))</span></span>, <span class='string_literal'>"%d : %s"</span>, i, tag_name);</td></tr>
+<tr class="codeline" data-linenumber="334"><td class="num" id="LN334">334</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="335"><td class="num" id="LN335">335</td><td class="line"> gtk_list_store_append (store, &amp;iter);</td></tr>
+<tr class="codeline" data-linenumber="336"><td class="num" id="LN336">336</td><td class="line"> gtk_list_store_set (store, &amp;iter,</td></tr>
+<tr class="codeline" data-linenumber="337"><td class="num" id="LN337">337</td><td class="line"> COLUMN_TAG_NAME, tag_name,</td></tr>
+<tr class="codeline" data-linenumber="338"><td class="num" id="LN338">338</td><td class="line"> COLUMN_TAG_INDEX_IN_GROUP, i,</td></tr>
+<tr class="codeline" data-linenumber="339"><td class="num" id="LN339">339</td><td class="line"> -1);</td></tr>
+<tr class="codeline" data-linenumber="340"><td class="num" id="LN340">340</td><td class="line"> ++i;</td></tr>
+<tr class="codeline" data-linenumber="341"><td class="num" id="LN341">341</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="342"><td class="num" id="LN342">342</td><td class="line"> list = <span class='macro'>g_list_next (list)<span class='macro_popup'>((list) ? (((GList *)(list))-&gt;next) : ((void*)0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="343"><td class="num" id="LN343">343</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="344"><td class="num" id="LN344">344</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="345"><td class="num" id="LN345">345</td><td class="line"> pluma_debug_message (<span class='macro'>DEBUG_PLUGINS<span class='macro_popup'>PLUMA_DEBUG_PLUGINS, "pluma-taglist-plugin-panel.c", 345, ((const<br> char*) (__func__))</span></span>, <span class='string_literal'>"Rows: %d "</span>,</td></tr>
+<tr class="codeline" data-linenumber="346"><td class="num" id="LN346">346</td><td class="line"> gtk_tree_model_iter_n_children (<span class='macro'>GTK_TREE_MODEL (store)<span class='macro_popup'>((((GtkTreeModel*) (void *) ((store)))))</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>));</td></tr>
+<tr class="codeline" data-linenumber="347"><td class="num" id="LN347">347</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="348"><td class="num" id="LN348">348</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>GTK_TREE_MODEL (store)<span class='macro_popup'>((((GtkTreeModel*) (void *) ((store)))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="349"><td class="num" id="LN349">349</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="350"><td class="num" id="LN350">350</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="351"><td class="num" id="LN351">351</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="352"><td class="num" id="LN352">352</td><td class="line">populate_tags_list (PlumaTaglistPluginPanel *panel)</td></tr>
+<tr class="codeline" data-linenumber="353"><td class="num" id="LN353">353</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="354"><td class="num" id="LN354">354</td><td class="line"> GtkTreeModel* model;</td></tr>
+<tr class="codeline" data-linenumber="355"><td class="num" id="LN355">355</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="356"><td class="num" id="LN356">356</td><td class="line"> pluma_debug (<span class='macro'>DEBUG_PLUGINS<span class='macro_popup'>PLUMA_DEBUG_PLUGINS, "pluma-taglist-plugin-panel.c", 356, ((const<br> char*) (__func__))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="357"><td class="num" id="LN357">357</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="358"><td class="num" id="LN358">358</td><td class="line"> <span class='macro'>g_return_if_fail (taglist != NULL)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_25<br>; if (taglist != ((void*)0)) _g_boolean_var_25 = 1; else _g_boolean_var_25<br> = 0; _g_boolean_var_25; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "taglist != NULL"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="359"><td class="num" id="LN359">359</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="360"><td class="num" id="LN360">360</td><td class="line"> model = create_model (panel);</td></tr>
+<tr class="codeline" data-linenumber="361"><td class="num" id="LN361">361</td><td class="line"> gtk_tree_view_set_model (<span class='macro'>GTK_TREE_VIEW (panel-&gt;priv-&gt;tags_list)<span class='macro_popup'>((((GtkTreeView*) (void *) ((panel-&gt;priv-&gt;tags_list))))<br>)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="362"><td class="num" id="LN362">362</td><td class="line"> model);</td></tr>
+<tr class="codeline" data-linenumber="363"><td class="num" id="LN363">363</td><td class="line"> g_object_unref (model);</td></tr>
+<tr class="codeline" data-linenumber="364"><td class="num" id="LN364">364</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="365"><td class="num" id="LN365">365</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="366"><td class="num" id="LN366">366</td><td class="line"><span class='keyword'>static</span> TagGroup *</td></tr>
+<tr class="codeline" data-linenumber="367"><td class="num" id="LN367">367</td><td class="line">find_tag_group (<span class='keyword'>const</span> gchar *name)</td></tr>
+<tr class="codeline" data-linenumber="368"><td class="num" id="LN368">368</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="369"><td class="num" id="LN369">369</td><td class="line"> GList *l;</td></tr>
+<tr class="codeline" data-linenumber="370"><td class="num" id="LN370">370</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="371"><td class="num" id="LN371">371</td><td class="line"> pluma_debug (<span class='macro'>DEBUG_PLUGINS<span class='macro_popup'>PLUMA_DEBUG_PLUGINS, "pluma-taglist-plugin-panel.c", 371, ((const<br> char*) (__func__))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="372"><td class="num" id="LN372">372</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="373"><td class="num" id="LN373">373</td><td class="line"> <span class='macro'>g_return_val_if_fail (taglist != NULL, NULL)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_26<br>; if (taglist != ((void*)0)) _g_boolean_var_26 = 1; else _g_boolean_var_26<br> = 0; _g_boolean_var_26; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "taglist != NULL"<br>); return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="374"><td class="num" id="LN374">374</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="375"><td class="num" id="LN375">375</td><td class="line"> <span class='keyword'>for</span> (l = taglist-&gt;tag_groups; l != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>; l = <span class='macro'>g_list_next (l)<span class='macro_popup'>((l) ? (((GList *)(l))-&gt;next) : ((void*)0))</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="376"><td class="num" id="LN376">376</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="377"><td class="num" id="LN377">377</td><td class="line"> <span class='keyword'>if</span> (strcmp (name, (gchar *)((TagGroup*)l-&gt;data)-&gt;name) == 0)</td></tr>
+<tr class="codeline" data-linenumber="378"><td class="num" id="LN378">378</td><td class="line"> <span class='keyword'>return</span> (TagGroup*)l-&gt;data;</td></tr>
+<tr class="codeline" data-linenumber="379"><td class="num" id="LN379">379</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="380"><td class="num" id="LN380">380</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="381"><td class="num" id="LN381">381</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="382"><td class="num" id="LN382">382</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="383"><td class="num" id="LN383">383</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="384"><td class="num" id="LN384">384</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="385"><td class="num" id="LN385">385</td><td class="line">populate_tag_groups_combo (PlumaTaglistPluginPanel *panel)</td></tr>
+<tr class="codeline" data-linenumber="386"><td class="num" id="LN386">386</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="387"><td class="num" id="LN387">387</td><td class="line"> GList *l;</td></tr>
+<tr class="codeline" data-linenumber="388"><td class="num" id="LN388">388</td><td class="line"> GtkComboBox *combo;</td></tr>
+<tr class="codeline" data-linenumber="389"><td class="num" id="LN389">389</td><td class="line"> GtkComboBoxText *combotext;</td></tr>
+<tr class="codeline" data-linenumber="390"><td class="num" id="LN390">390</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="391"><td class="num" id="LN391">391</td><td class="line"> pluma_debug (<span class='macro'>DEBUG_PLUGINS<span class='macro_popup'>PLUMA_DEBUG_PLUGINS, "pluma-taglist-plugin-panel.c", 391, ((const<br> char*) (__func__))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="392"><td class="num" id="LN392">392</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="393"><td class="num" id="LN393">393</td><td class="line"> combo = <span class='macro'>GTK_COMBO_BOX (panel-&gt;priv-&gt;tag_groups_combo)<span class='macro_popup'>((((GtkComboBox*) (void *) ((panel-&gt;priv-&gt;tag_groups_combo<br>)))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="394"><td class="num" id="LN394">394</td><td class="line"> combotext = <span class='macro'>GTK_COMBO_BOX_TEXT (panel-&gt;priv-&gt;tag_groups_combo)<span class='macro_popup'>((((GtkComboBoxText*) (void *) ((panel-&gt;priv-&gt;tag_groups_combo<br>)))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="395"><td class="num" id="LN395">395</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="396"><td class="num" id="LN396">396</td><td class="line"> <span class='keyword'>if</span> (taglist == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="397"><td class="num" id="LN397">397</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="398"><td class="num" id="LN398">398</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="399"><td class="num" id="LN399">399</td><td class="line"> <span class='keyword'>for</span> (l = taglist-&gt;tag_groups; l != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>; l = <span class='macro'>g_list_next (l)<span class='macro_popup'>((l) ? (((GList *)(l))-&gt;next) : ((void*)0))</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="400"><td class="num" id="LN400">400</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="401"><td class="num" id="LN401">401</td><td class="line"> gtk_combo_box_text_append_text (combotext,</td></tr>
+<tr class="codeline" data-linenumber="402"><td class="num" id="LN402">402</td><td class="line"> (gchar *)((TagGroup*)l-&gt;data)-&gt;name);</td></tr>
+<tr class="codeline" data-linenumber="403"><td class="num" id="LN403">403</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="404"><td class="num" id="LN404">404</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="405"><td class="num" id="LN405">405</td><td class="line"> gtk_combo_box_set_active (combo, 0);</td></tr>
+<tr class="codeline" data-linenumber="406"><td class="num" id="LN406">406</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="407"><td class="num" id="LN407">407</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="408"><td class="num" id="LN408">408</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="409"><td class="num" id="LN409">409</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="410"><td class="num" id="LN410">410</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="411"><td class="num" id="LN411">411</td><td class="line">selected_group_changed (GtkComboBox *combo,</td></tr>
+<tr class="codeline" data-linenumber="412"><td class="num" id="LN412">412</td><td class="line"> PlumaTaglistPluginPanel *panel)</td></tr>
+<tr class="codeline" data-linenumber="413"><td class="num" id="LN413">413</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="414"><td class="num" id="LN414">414</td><td class="line"> gchar* group_name;</td></tr>
+<tr class="codeline" data-linenumber="415"><td class="num" id="LN415">415</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="416"><td class="num" id="LN416">416</td><td class="line"> pluma_debug (<span class='macro'>DEBUG_PLUGINS<span class='macro_popup'>PLUMA_DEBUG_PLUGINS, "pluma-taglist-plugin-panel.c", 416, ((const<br> char*) (__func__))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="417"><td class="num" id="LN417">417</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="418"><td class="num" id="LN418">418</td><td class="line"> group_name = gtk_combo_box_text_get_active_text (<span class='macro'>GTK_COMBO_BOX_TEXT (combo)<span class='macro_popup'>((((GtkComboBoxText*) (void *) ((combo)))))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="419"><td class="num" id="LN419">419</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="420"><td class="num" id="LN420">420</td><td class="line"> <span class='keyword'>if</span> ((group_name == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) || (*group_name == '\0'))</td></tr>
+<tr class="codeline" data-linenumber="421"><td class="num" id="LN421">421</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="422"><td class="num" id="LN422">422</td><td class="line"> g_free (group_name);</td></tr>
+<tr class="codeline" data-linenumber="423"><td class="num" id="LN423">423</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="424"><td class="num" id="LN424">424</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="425"><td class="num" id="LN425">425</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="426"><td class="num" id="LN426">426</td><td class="line"> <span class='keyword'>if</span> ((panel-&gt;priv-&gt;selected_tag_group == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) ||</td></tr>
+<tr class="codeline" data-linenumber="427"><td class="num" id="LN427">427</td><td class="line"> (strcmp (group_name, (gchar *)panel-&gt;priv-&gt;selected_tag_group-&gt;name) != 0))</td></tr>
+<tr class="codeline" data-linenumber="428"><td class="num" id="LN428">428</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="429"><td class="num" id="LN429">429</td><td class="line"> panel-&gt;priv-&gt;selected_tag_group = find_tag_group (group_name);</td></tr>
+<tr class="codeline" data-linenumber="430"><td class="num" id="LN430">430</td><td class="line"> <span class='macro'>g_return_if_fail (panel-&gt;priv-&gt;selected_tag_group != NULL)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_27<br>; if (panel-&gt;priv-&gt;selected_tag_group != ((void*)0)) _g_boolean_var_27<br> = 1; else _g_boolean_var_27 = 0; _g_boolean_var_27; }), 1)))<br> { } else { g_return_if_fail_warning (((gchar*) 0), ((const char<br>*) (__func__)), "panel-&gt;priv-&gt;selected_tag_group != NULL"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="431"><td class="num" id="LN431">431</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="432"><td class="num" id="LN432">432</td><td class="line"> pluma_debug_message (<span class='macro'>DEBUG_PLUGINS<span class='macro_popup'>PLUMA_DEBUG_PLUGINS, "pluma-taglist-plugin-panel.c", 432, ((const<br> char*) (__func__))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="433"><td class="num" id="LN433">433</td><td class="line"> <span class='string_literal'>"New selected group: %s"</span>,</td></tr>
+<tr class="codeline" data-linenumber="434"><td class="num" id="LN434">434</td><td class="line"> panel-&gt;priv-&gt;selected_tag_group-&gt;name);</td></tr>
+<tr class="codeline" data-linenumber="435"><td class="num" id="LN435">435</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="436"><td class="num" id="LN436">436</td><td class="line"> populate_tags_list (panel);</td></tr>
+<tr class="codeline" data-linenumber="437"><td class="num" id="LN437">437</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="438"><td class="num" id="LN438">438</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="439"><td class="num" id="LN439">439</td><td class="line"> <span class='comment'>/* Clean up preview */</span></td></tr>
+<tr class="codeline" data-linenumber="440"><td class="num" id="LN440">440</td><td class="line"> gtk_label_set_text (<span class='macro'>GTK_LABEL (panel-&gt;priv-&gt;preview)<span class='macro_popup'>((((GtkLabel*) (void *) ((panel-&gt;priv-&gt;preview)))))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="441"><td class="num" id="LN441">441</td><td class="line"> <span class='string_literal'>""</span>);</td></tr>
+<tr class="codeline" data-linenumber="442"><td class="num" id="LN442">442</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="443"><td class="num" id="LN443">443</td><td class="line"> g_free (group_name);</td></tr>
+<tr class="codeline" data-linenumber="444"><td class="num" id="LN444">444</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="445"><td class="num" id="LN445">445</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="446"><td class="num" id="LN446">446</td><td class="line"><span class='keyword'>static</span> gchar *</td></tr>
+<tr class="codeline" data-linenumber="447"><td class="num" id="LN447">447</td><td class="line">create_preview_string (Tag *tag)</td></tr>
+<tr class="codeline" data-linenumber="448"><td class="num" id="LN448">448</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="449"><td class="num" id="LN449">449</td><td class="line"> GString *str;</td></tr>
+<tr class="codeline" data-linenumber="450"><td class="num" id="LN450">450</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="451"><td class="num" id="LN451">451</td><td class="line"> str = g_string_new (<span class='string_literal'>"&lt;tt&gt;&lt;small&gt;"</span>);</td></tr>
+<tr class="codeline" data-linenumber="452"><td class="num" id="LN452">452</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="453"><td class="num" id="LN453">453</td><td class="line"> <span class='keyword'>if</span> (tag-&gt;begin != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="454"><td class="num" id="LN454">454</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="455"><td class="num" id="LN455">455</td><td class="line"> gchar *markup;</td></tr>
+<tr class="codeline" data-linenumber="456"><td class="num" id="LN456">456</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="457"><td class="num" id="LN457">457</td><td class="line"> markup = g_markup_escape_text ((gchar *)tag-&gt;begin, -1);</td></tr>
+<tr class="codeline" data-linenumber="458"><td class="num" id="LN458">458</td><td class="line"> <span class='macro'>g_string_append (str, markup)<span class='macro_popup'>(__builtin_constant_p (markup) ? __extension__ ({ const char *<br> const __val = (markup); g_string_append_len_inline (str, __val<br>, (__builtin_expect (__extension__ ({ int _g_boolean_var_28; if<br> (__val != ((void*)0)) _g_boolean_var_28 = 1; else _g_boolean_var_28<br> = 0; _g_boolean_var_28; }), 1)) ? (gssize) strlen (((__val) +<br> !(__val))) : (gssize) -1); }) : g_string_append_len_inline (<br>str, markup, (gssize) -1))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="459"><td class="num" id="LN459">459</td><td class="line"> g_free (markup);</td></tr>
+<tr class="codeline" data-linenumber="460"><td class="num" id="LN460">460</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="461"><td class="num" id="LN461">461</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="462"><td class="num" id="LN462">462</td><td class="line"> <span class='keyword'>if</span> (tag-&gt;end != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="463"><td class="num" id="LN463">463</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="464"><td class="num" id="LN464">464</td><td class="line"> gchar *markup;</td></tr>
+<tr class="codeline" data-linenumber="465"><td class="num" id="LN465">465</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="466"><td class="num" id="LN466">466</td><td class="line"> markup = g_markup_escape_text ((gchar *)tag-&gt;end, -1);</td></tr>
+<tr class="codeline" data-linenumber="467"><td class="num" id="LN467">467</td><td class="line"> <span class='macro'>g_string_append (str, markup)<span class='macro_popup'>(__builtin_constant_p (markup) ? __extension__ ({ const char *<br> const __val = (markup); g_string_append_len_inline (str, __val<br>, (__builtin_expect (__extension__ ({ int _g_boolean_var_29; if<br> (__val != ((void*)0)) _g_boolean_var_29 = 1; else _g_boolean_var_29<br> = 0; _g_boolean_var_29; }), 1)) ? (gssize) strlen (((__val) +<br> !(__val))) : (gssize) -1); }) : g_string_append_len_inline (<br>str, markup, (gssize) -1))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="468"><td class="num" id="LN468">468</td><td class="line"> g_free (markup);</td></tr>
+<tr class="codeline" data-linenumber="469"><td class="num" id="LN469">469</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="470"><td class="num" id="LN470">470</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="471"><td class="num" id="LN471">471</td><td class="line"> <span class='macro'>g_string_append (str, <span class='string_literal'>"&lt;/small&gt;&lt;/tt&gt;"</span>)<span class='macro_popup'>(__builtin_constant_p ("&lt;/small&gt;&lt;/tt&gt;") ? __extension__<br> ({ const char * const __val = ("&lt;/small&gt;&lt;/tt&gt;");<br> g_string_append_len_inline (str, __val, (__builtin_expect (__extension__<br> ({ int _g_boolean_var_30; if (__val != ((void*)0)) _g_boolean_var_30<br> = 1; else _g_boolean_var_30 = 0; _g_boolean_var_30; }), 1)) ?<br> (gssize) strlen (((__val) + !(__val))) : (gssize) -1); }) : g_string_append_len_inline<br> (str, "&lt;/small&gt;&lt;/tt&gt;", (gssize) -1))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="472"><td class="num" id="LN472">472</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="473"><td class="num" id="LN473">473</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>g_string_free (str, FALSE)<span class='macro_popup'>(__builtin_constant_p ((0)) ? (((0)) ? (g_string_free) ((str)<br>, ((0))) : g_string_free_and_steal (str)) : (g_string_free) (<br>(str), ((0))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="474"><td class="num" id="LN474">474</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="475"><td class="num" id="LN475">475</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="476"><td class="num" id="LN476">476</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="477"><td class="num" id="LN477">477</td><td class="line">update_preview (PlumaTaglistPluginPanel *panel,</td></tr>
+<tr class="codeline" data-linenumber="478"><td class="num" id="LN478">478</td><td class="line"> Tag *tag)</td></tr>
+<tr class="codeline" data-linenumber="479"><td class="num" id="LN479">479</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="480"><td class="num" id="LN480">480</td><td class="line"> gchar *str;</td></tr>
+<tr class="codeline" data-linenumber="481"><td class="num" id="LN481">481</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="482"><td class="num" id="LN482">482</td><td class="line"> str = create_preview_string (tag);</td></tr>
+<tr class="codeline" data-linenumber="483"><td class="num" id="LN483">483</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="484"><td class="num" id="LN484">484</td><td class="line"> gtk_label_set_markup (<span class='macro'>GTK_LABEL (panel-&gt;priv-&gt;preview)<span class='macro_popup'>((((GtkLabel*) (void *) ((panel-&gt;priv-&gt;preview)))))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="485"><td class="num" id="LN485">485</td><td class="line"> str);</td></tr>
+<tr class="codeline" data-linenumber="486"><td class="num" id="LN486">486</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="487"><td class="num" id="LN487">487</td><td class="line"> g_free (str);</td></tr>
+<tr class="codeline" data-linenumber="488"><td class="num" id="LN488">488</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="489"><td class="num" id="LN489">489</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="490"><td class="num" id="LN490">490</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="491"><td class="num" id="LN491">491</td><td class="line">tag_list_cursor_changed_cb (GtkTreeView *tag_list,</td></tr>
+<tr class="codeline" data-linenumber="492"><td class="num" id="LN492">492</td><td class="line"> gpointer data)</td></tr>
+<tr class="codeline" data-linenumber="493"><td class="num" id="LN493">493</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="494"><td class="num" id="LN494">494</td><td class="line"> GtkTreeModel *model;</td></tr>
+<tr class="codeline" data-linenumber="495"><td class="num" id="LN495">495</td><td class="line"> GtkTreeSelection *selection;</td></tr>
+<tr class="codeline" data-linenumber="496"><td class="num" id="LN496">496</td><td class="line"> GtkTreeIter iter;</td></tr>
+<tr class="codeline" data-linenumber="497"><td class="num" id="LN497">497</td><td class="line"> gint index;</td></tr>
+<tr class="codeline" data-linenumber="498"><td class="num" id="LN498">498</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="499"><td class="num" id="LN499">499</td><td class="line"> PlumaTaglistPluginPanel *panel = (PlumaTaglistPluginPanel *)data;</td></tr>
+<tr class="codeline" data-linenumber="500"><td class="num" id="LN500">500</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="501"><td class="num" id="LN501">501</td><td class="line"> model = gtk_tree_view_get_model (tag_list);</td></tr>
+<tr class="codeline" data-linenumber="502"><td class="num" id="LN502">502</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="503"><td class="num" id="LN503">503</td><td class="line"> selection = gtk_tree_view_get_selection (tag_list);</td></tr>
+<tr class="codeline" data-linenumber="504"><td class="num" id="LN504">504</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="505"><td class="num" id="LN505">505</td><td class="line"> <span class='keyword'>if</span> (gtk_tree_selection_get_selected (selection, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, &amp;iter))</td></tr>
+<tr class="codeline" data-linenumber="506"><td class="num" id="LN506">506</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="507"><td class="num" id="LN507">507</td><td class="line"> gtk_tree_model_get (model, &amp;iter, COLUMN_TAG_INDEX_IN_GROUP, &amp;index, -1);</td></tr>
+<tr class="codeline" data-linenumber="508"><td class="num" id="LN508">508</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="509"><td class="num" id="LN509">509</td><td class="line"> pluma_debug_message (<span class='macro'>DEBUG_PLUGINS<span class='macro_popup'>PLUMA_DEBUG_PLUGINS, "pluma-taglist-plugin-panel.c", 509, ((const<br> char*) (__func__))</span></span>, <span class='string_literal'>"Index: %d"</span>, index);</td></tr>
+<tr class="codeline" data-linenumber="510"><td class="num" id="LN510">510</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="511"><td class="num" id="LN511">511</td><td class="line"> update_preview (panel,</td></tr>
+<tr class="codeline" data-linenumber="512"><td class="num" id="LN512">512</td><td class="line"> (Tag*)g_list_nth_data (panel-&gt;priv-&gt;selected_tag_group-&gt;tags, index));</td></tr>
+<tr class="codeline" data-linenumber="513"><td class="num" id="LN513">513</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="514"><td class="num" id="LN514">514</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="515"><td class="num" id="LN515">515</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="516"><td class="num" id="LN516">516</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="517"><td class="num" id="LN517">517</td><td class="line">tags_list_query_tooltip_cb (GtkWidget *widget,</td></tr>
+<tr class="codeline" data-linenumber="518"><td class="num" id="LN518">518</td><td class="line"> gint x,</td></tr>
+<tr class="codeline" data-linenumber="519"><td class="num" id="LN519">519</td><td class="line"> gint y,</td></tr>
+<tr class="codeline" data-linenumber="520"><td class="num" id="LN520">520</td><td class="line"> gboolean keyboard_tip,</td></tr>
+<tr class="codeline" data-linenumber="521"><td class="num" id="LN521">521</td><td class="line"> GtkTooltip *tooltip,</td></tr>
+<tr class="codeline" data-linenumber="522"><td class="num" id="LN522">522</td><td class="line"> PlumaTaglistPluginPanel *panel)</td></tr>
+<tr class="codeline" data-linenumber="523"><td class="num" id="LN523">523</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="524"><td class="num" id="LN524">524</td><td class="line"> GtkTreeIter iter;</td></tr>
+<tr class="codeline" data-linenumber="525"><td class="num" id="LN525">525</td><td class="line"> GtkTreeModel *model;</td></tr>
+<tr class="codeline" data-linenumber="526"><td class="num" id="LN526">526</td><td class="line"> GtkTreePath *path = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="527"><td class="num" id="LN527">527</td><td class="line"> gint index;</td></tr>
+<tr class="codeline" data-linenumber="528"><td class="num" id="LN528">528</td><td class="line"> Tag *tag;</td></tr>
+<tr class="codeline" data-linenumber="529"><td class="num" id="LN529">529</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="530"><td class="num" id="LN530">530</td><td class="line"> model = gtk_tree_view_get_model (<span class='macro'>GTK_TREE_VIEW (widget)<span class='macro_popup'>((((GtkTreeView*) (void *) ((widget)))))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="531"><td class="num" id="LN531">531</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="532"><td class="num" id="LN532">532</td><td class="line"> <span class='keyword'>if</span> (keyboard_tip)</td></tr>
+<tr class="codeline" data-linenumber="533"><td class="num" id="LN533">533</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="534"><td class="num" id="LN534">534</td><td class="line"> gtk_tree_view_get_cursor (<span class='macro'>GTK_TREE_VIEW (widget)<span class='macro_popup'>((((GtkTreeView*) (void *) ((widget)))))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="535"><td class="num" id="LN535">535</td><td class="line"> &amp;path,</td></tr>
+<tr class="codeline" data-linenumber="536"><td class="num" id="LN536">536</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="537"><td class="num" id="LN537">537</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="538"><td class="num" id="LN538">538</td><td class="line"> <span class='keyword'>if</span> (path == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="539"><td class="num" id="LN539">539</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="540"><td class="num" id="LN540">540</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="541"><td class="num" id="LN541">541</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="542"><td class="num" id="LN542">542</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="543"><td class="num" id="LN543">543</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="544"><td class="num" id="LN544">544</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="545"><td class="num" id="LN545">545</td><td class="line"> gint bin_x, bin_y;</td></tr>
+<tr class="codeline" data-linenumber="546"><td class="num" id="LN546">546</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="547"><td class="num" id="LN547">547</td><td class="line"> gtk_tree_view_convert_widget_to_bin_window_coords (<span class='macro'>GTK_TREE_VIEW (widget)<span class='macro_popup'>((((GtkTreeView*) (void *) ((widget)))))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="548"><td class="num" id="LN548">548</td><td class="line"> x, y,</td></tr>
+<tr class="codeline" data-linenumber="549"><td class="num" id="LN549">549</td><td class="line"> &amp;bin_x, &amp;bin_y);</td></tr>
+<tr class="codeline" data-linenumber="550"><td class="num" id="LN550">550</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="551"><td class="num" id="LN551">551</td><td class="line"> <span class='keyword'>if</span> (!gtk_tree_view_get_path_at_pos (<span class='macro'>GTK_TREE_VIEW (widget)<span class='macro_popup'>((((GtkTreeView*) (void *) ((widget)))))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="552"><td class="num" id="LN552">552</td><td class="line"> bin_x, bin_y,</td></tr>
+<tr class="codeline" data-linenumber="553"><td class="num" id="LN553">553</td><td class="line"> &amp;path,</td></tr>
+<tr class="codeline" data-linenumber="554"><td class="num" id="LN554">554</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>))</td></tr>
+<tr class="codeline" data-linenumber="555"><td class="num" id="LN555">555</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="556"><td class="num" id="LN556">556</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="557"><td class="num" id="LN557">557</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="558"><td class="num" id="LN558">558</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="559"><td class="num" id="LN559">559</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="560"><td class="num" id="LN560">560</td><td class="line"> gtk_tree_model_get_iter (model, &amp;iter, path);</td></tr>
+<tr class="codeline" data-linenumber="561"><td class="num" id="LN561">561</td><td class="line"> gtk_tree_model_get (model, &amp;iter,</td></tr>
+<tr class="codeline" data-linenumber="562"><td class="num" id="LN562">562</td><td class="line"> COLUMN_TAG_INDEX_IN_GROUP, &amp;index,</td></tr>
+<tr class="codeline" data-linenumber="563"><td class="num" id="LN563">563</td><td class="line"> -1);</td></tr>
+<tr class="codeline" data-linenumber="564"><td class="num" id="LN564">564</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="565"><td class="num" id="LN565">565</td><td class="line"> tag = g_list_nth_data (panel-&gt;priv-&gt;selected_tag_group-&gt;tags, index);</td></tr>
+<tr class="codeline" data-linenumber="566"><td class="num" id="LN566">566</td><td class="line"> <span class='keyword'>if</span> (tag != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="567"><td class="num" id="LN567">567</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="568"><td class="num" id="LN568">568</td><td class="line"> gchar *tip;</td></tr>
+<tr class="codeline" data-linenumber="569"><td class="num" id="LN569">569</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="570"><td class="num" id="LN570">570</td><td class="line"> tip = create_preview_string (tag);</td></tr>
+<tr class="codeline" data-linenumber="571"><td class="num" id="LN571">571</td><td class="line"> gtk_tooltip_set_markup (tooltip, tip);</td></tr>
+<tr class="codeline" data-linenumber="572"><td class="num" id="LN572">572</td><td class="line"> g_free (tip);</td></tr>
+<tr class="codeline" data-linenumber="573"><td class="num" id="LN573">573</td><td class="line"> gtk_tree_path_free (path);</td></tr>
+<tr class="codeline" data-linenumber="574"><td class="num" id="LN574">574</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="575"><td class="num" id="LN575">575</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="576"><td class="num" id="LN576">576</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="577"><td class="num" id="LN577">577</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="578"><td class="num" id="LN578">578</td><td class="line"> gtk_tree_path_free (path);</td></tr>
+<tr class="codeline" data-linenumber="579"><td class="num" id="LN579">579</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="580"><td class="num" id="LN580">580</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="581"><td class="num" id="LN581">581</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="582"><td class="num" id="LN582">582</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="583"><td class="num" id="LN583">583</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="584"><td class="num" id="LN584">584</td><td class="line">draw_event_cb (GtkWidget *panel,</td></tr>
+<tr class="codeline" data-linenumber="585"><td class="num" id="LN585">585</td><td class="line"> cairo_t *cr,</td></tr>
+<tr class="codeline" data-linenumber="586"><td class="num" id="LN586">586</td><td class="line"> gpointer user_data)</td></tr>
+<tr class="codeline" data-linenumber="587"><td class="num" id="LN587">587</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="588"><td class="num" id="LN588">588</td><td class="line"> PlumaTaglistPluginPanel *ppanel = <span class='macro'>PLUMA_TAGLIST_PLUGIN_PANEL (panel)<span class='macro_popup'>((((PlumaTaglistPluginPanel*) (void *) ((panel)))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="589"><td class="num" id="LN589">589</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="590"><td class="num" id="LN590">590</td><td class="line"> pluma_debug (<span class='macro'>DEBUG_PLUGINS<span class='macro_popup'>PLUMA_DEBUG_PLUGINS, "pluma-taglist-plugin-panel.c", 590, ((const<br> char*) (__func__))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="591"><td class="num" id="LN591">591</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="592"><td class="num" id="LN592">592</td><td class="line"> <span class='comment'>/* If needed load taglists from files at the first expose */</span></td></tr>
+<tr class="codeline" data-linenumber="593"><td class="num" id="LN593">593</td><td class="line"> <span class='keyword'>if</span> (taglist == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="594"><td class="num" id="LN594">594</td><td class="line"> create_taglist (ppanel-&gt;priv-&gt;data_dir);</td></tr>
+<tr class="codeline" data-linenumber="595"><td class="num" id="LN595">595</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="596"><td class="num" id="LN596">596</td><td class="line"> <span class='comment'>/* And populate combo box */</span></td></tr>
+<tr class="codeline" data-linenumber="597"><td class="num" id="LN597">597</td><td class="line"> populate_tag_groups_combo (<span class='macro'>PLUMA_TAGLIST_PLUGIN_PANEL (panel)<span class='macro_popup'>((((PlumaTaglistPluginPanel*) (void *) ((panel)))))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="598"><td class="num" id="LN598">598</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="599"><td class="num" id="LN599">599</td><td class="line"> <span class='comment'>/* We need to manage only the first draw -&gt; disconnect */</span></td></tr>
+<tr class="codeline" data-linenumber="600"><td class="num" id="LN600">600</td><td class="line"> <span class='macro'>g_signal_handlers_disconnect_by_func (panel, draw_event_cb, NULL)<span class='macro_popup'>g_signal_handlers_disconnect_matched ((panel), (GSignalMatchType<br>) (G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA), 0, 0, ((void*)<br>0), (draw_event_cb), (((void*)0)))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="601"><td class="num" id="LN601">601</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="602"><td class="num" id="LN602">602</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="603"><td class="num" id="LN603">603</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="604"><td class="num" id="LN604">604</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="605"><td class="num" id="LN605">605</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="606"><td class="num" id="LN606">606</td><td class="line">set_combo_tooltip (GtkWidget *widget,</td></tr>
+<tr class="codeline" data-linenumber="607"><td class="num" id="LN607">607</td><td class="line"> gpointer data)</td></tr>
+<tr class="codeline" data-linenumber="608"><td class="num" id="LN608">608</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="609"><td class="num" id="LN609">609</td><td class="line"> <span class='keyword'>if</span> (<span class='macro'>GTK_IS_BUTTON (widget)<span class='macro_popup'>(((__extension__ ({ GTypeInstance *__inst = (GTypeInstance*) (<br>(widget)); GType __t = ((gtk_button_get_type ())); gboolean __r<br>; if (!__inst) __r = (0); else if (__inst-&gt;g_class &amp;&amp;<br> __inst-&gt;g_class-&gt;g_type == __t) __r = (!(0)); else __r<br> = g_type_check_instance_is_a (__inst, __t); __r; }))))</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="610"><td class="num" id="LN610">610</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="611"><td class="num" id="LN611">611</td><td class="line"> gtk_widget_set_tooltip_text (widget,</td></tr>
+<tr class="codeline" data-linenumber="612"><td class="num" id="LN612">612</td><td class="line"> <span class='macro'>_(<span class='string_literal'>"Select the group of tags you want to use"</span>)<span class='macro_popup'>dcgettext (((void*)0), "Select the group of tags you want to use"<br>, 5)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="613"><td class="num" id="LN613">613</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="614"><td class="num" id="LN614">614</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="615"><td class="num" id="LN615">615</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="616"><td class="num" id="LN616">616</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="617"><td class="num" id="LN617">617</td><td class="line">realize_tag_groups_combo (GtkWidget *combo,</td></tr>
+<tr class="codeline" data-linenumber="618"><td class="num" id="LN618">618</td><td class="line"> gpointer data)</td></tr>
+<tr class="codeline" data-linenumber="619"><td class="num" id="LN619">619</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="620"><td class="num" id="LN620">620</td><td class="line"> gtk_container_forall (<span class='macro'>GTK_CONTAINER (combo)<span class='macro_popup'>((((GtkContainer*) (void *) ((combo)))))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="621"><td class="num" id="LN621">621</td><td class="line"> set_combo_tooltip,</td></tr>
+<tr class="codeline" data-linenumber="622"><td class="num" id="LN622">622</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="623"><td class="num" id="LN623">623</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="624"><td class="num" id="LN624">624</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="625"><td class="num" id="LN625">625</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="626"><td class="num" id="LN626">626</td><td class="line">add_preview_widget (PlumaTaglistPluginPanel *panel)</td></tr>
+<tr class="codeline" data-linenumber="627"><td class="num" id="LN627">627</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="628"><td class="num" id="LN628">628</td><td class="line"> GtkWidget *expander;</td></tr>
+<tr class="codeline" data-linenumber="629"><td class="num" id="LN629">629</td><td class="line"> GtkWidget *frame;</td></tr>
+<tr class="codeline" data-linenumber="630"><td class="num" id="LN630">630</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="631"><td class="num" id="LN631">631</td><td class="line"> expander = gtk_expander_new_with_mnemonic (<span class='macro'>_(<span class='string_literal'>"_Preview"</span>)<span class='macro_popup'>dcgettext (((void*)0), "_Preview", 5)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="632"><td class="num" id="LN632">632</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="633"><td class="num" id="LN633">633</td><td class="line"> panel-&gt;priv-&gt;preview = gtk_label_new (<span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="634"><td class="num" id="LN634">634</td><td class="line"> gtk_widget_set_size_request (panel-&gt;priv-&gt;preview, -1, 80);</td></tr>
+<tr class="codeline" data-linenumber="635"><td class="num" id="LN635">635</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="636"><td class="num" id="LN636">636</td><td class="line"> gtk_label_set_line_wrap (<span class='macro'>GTK_LABEL (panel-&gt;priv-&gt;preview)<span class='macro_popup'>((((GtkLabel*) (void *) ((panel-&gt;priv-&gt;preview)))))</span></span>, <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="637"><td class="num" id="LN637">637</td><td class="line"> gtk_label_set_use_markup (<span class='macro'>GTK_LABEL (panel-&gt;priv-&gt;preview)<span class='macro_popup'>((((GtkLabel*) (void *) ((panel-&gt;priv-&gt;preview)))))</span></span>, <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="638"><td class="num" id="LN638">638</td><td class="line"> gtk_widget_set_halign (panel-&gt;priv-&gt;preview, GTK_ALIGN_START);</td></tr>
+<tr class="codeline" data-linenumber="639"><td class="num" id="LN639">639</td><td class="line"> gtk_widget_set_valign (panel-&gt;priv-&gt;preview, GTK_ALIGN_START);</td></tr>
+<tr class="codeline" data-linenumber="640"><td class="num" id="LN640">640</td><td class="line"> gtk_widget_set_margin_start (panel-&gt;priv-&gt;preview, 6);</td></tr>
+<tr class="codeline" data-linenumber="641"><td class="num" id="LN641">641</td><td class="line"> gtk_widget_set_margin_end (panel-&gt;priv-&gt;preview, 6);</td></tr>
+<tr class="codeline" data-linenumber="642"><td class="num" id="LN642">642</td><td class="line"> gtk_widget_set_margin_top (panel-&gt;priv-&gt;preview, 6);</td></tr>
+<tr class="codeline" data-linenumber="643"><td class="num" id="LN643">643</td><td class="line"> gtk_widget_set_margin_bottom (panel-&gt;priv-&gt;preview, 6);</td></tr>
+<tr class="codeline" data-linenumber="644"><td class="num" id="LN644">644</td><td class="line"> gtk_label_set_selectable (<span class='macro'>GTK_LABEL (panel-&gt;priv-&gt;preview)<span class='macro_popup'>((((GtkLabel*) (void *) ((panel-&gt;priv-&gt;preview)))))</span></span>, <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="645"><td class="num" id="LN645">645</td><td class="line"> gtk_label_set_selectable (<span class='macro'>GTK_LABEL (panel-&gt;priv-&gt;preview)<span class='macro_popup'>((((GtkLabel*) (void *) ((panel-&gt;priv-&gt;preview)))))</span></span>, <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="646"><td class="num" id="LN646">646</td><td class="line"> gtk_label_set_ellipsize (<span class='macro'>GTK_LABEL (panel-&gt;priv-&gt;preview)<span class='macro_popup'>((((GtkLabel*) (void *) ((panel-&gt;priv-&gt;preview)))))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="647"><td class="num" id="LN647">647</td><td class="line"> PANGO_ELLIPSIZE_END);</td></tr>
+<tr class="codeline" data-linenumber="648"><td class="num" id="LN648">648</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="649"><td class="num" id="LN649">649</td><td class="line"> frame = gtk_frame_new (0);</td></tr>
+<tr class="codeline" data-linenumber="650"><td class="num" id="LN650">650</td><td class="line"> gtk_frame_set_shadow_type (<span class='macro'>GTK_FRAME (frame)<span class='macro_popup'>((((GtkFrame*) (void *) ((frame)))))</span></span>, GTK_SHADOW_IN);</td></tr>
+<tr class="codeline" data-linenumber="651"><td class="num" id="LN651">651</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="652"><td class="num" id="LN652">652</td><td class="line"> gtk_container_add (<span class='macro'>GTK_CONTAINER (frame)<span class='macro_popup'>((((GtkContainer*) (void *) ((frame)))))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="653"><td class="num" id="LN653">653</td><td class="line"> panel-&gt;priv-&gt;preview);</td></tr>
+<tr class="codeline" data-linenumber="654"><td class="num" id="LN654">654</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="655"><td class="num" id="LN655">655</td><td class="line"> gtk_container_add (<span class='macro'>GTK_CONTAINER (expander)<span class='macro_popup'>((((GtkContainer*) (void *) ((expander)))))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="656"><td class="num" id="LN656">656</td><td class="line"> frame);</td></tr>
+<tr class="codeline" data-linenumber="657"><td class="num" id="LN657">657</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="658"><td class="num" id="LN658">658</td><td class="line"> gtk_box_pack_start (<span class='macro'>GTK_BOX (panel)<span class='macro_popup'>((((GtkBox*) (void *) ((panel)))))</span></span>, expander, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>, 0);</td></tr>
+<tr class="codeline" data-linenumber="659"><td class="num" id="LN659">659</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="660"><td class="num" id="LN660">660</td><td class="line"> gtk_widget_show_all (expander);</td></tr>
+<tr class="codeline" data-linenumber="661"><td class="num" id="LN661">661</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="662"><td class="num" id="LN662">662</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="663"><td class="num" id="LN663">663</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="664"><td class="num" id="LN664">664</td><td class="line">pluma_taglist_plugin_panel_init (PlumaTaglistPluginPanel *panel)</td></tr>
+<tr class="codeline" data-linenumber="665"><td class="num" id="LN665">665</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="666"><td class="num" id="LN666">666</td><td class="line"> GtkWidget *sw;</td></tr>
+<tr class="codeline" data-linenumber="667"><td class="num" id="LN667">667</td><td class="line"> GtkTreeViewColumn *column;</td></tr>
+<tr class="codeline" data-linenumber="668"><td class="num" id="LN668">668</td><td class="line"> GtkCellRenderer *cell;</td></tr>
+<tr class="codeline" data-linenumber="669"><td class="num" id="LN669">669</td><td class="line"> GList *focus_chain = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="670"><td class="num" id="LN670">670</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="671"><td class="num" id="LN671">671</td><td class="line"> pluma_debug (<span class='macro'>DEBUG_PLUGINS<span class='macro_popup'>PLUMA_DEBUG_PLUGINS, "pluma-taglist-plugin-panel.c", 671, ((const<br> char*) (__func__))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="672"><td class="num" id="LN672">672</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="673"><td class="num" id="LN673">673</td><td class="line"> panel-&gt;priv = pluma_taglist_plugin_panel_get_instance_private (panel);</td></tr>
+<tr class="codeline" data-linenumber="674"><td class="num" id="LN674">674</td><td class="line"> panel-&gt;priv-&gt;data_dir = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="675"><td class="num" id="LN675">675</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="676"><td class="num" id="LN676">676</td><td class="line"> gtk_orientable_set_orientation (<span class='macro'>GTK_ORIENTABLE (panel)<span class='macro_popup'>((((GtkOrientable*) (void *) ((panel)))))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="677"><td class="num" id="LN677">677</td><td class="line"> GTK_ORIENTATION_VERTICAL);</td></tr>
+<tr class="codeline" data-linenumber="678"><td class="num" id="LN678">678</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="679"><td class="num" id="LN679">679</td><td class="line"> <span class='comment'>/* Build the window content */</span></td></tr>
+<tr class="codeline" data-linenumber="680"><td class="num" id="LN680">680</td><td class="line"> panel-&gt;priv-&gt;tag_groups_combo = gtk_combo_box_text_new ();</td></tr>
+<tr class="codeline" data-linenumber="681"><td class="num" id="LN681">681</td><td class="line"> gtk_box_pack_start (<span class='macro'>GTK_BOX (panel)<span class='macro_popup'>((((GtkBox*) (void *) ((panel)))))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="682"><td class="num" id="LN682">682</td><td class="line"> panel-&gt;priv-&gt;tag_groups_combo,</td></tr>
+<tr class="codeline" data-linenumber="683"><td class="num" id="LN683">683</td><td class="line"> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="684"><td class="num" id="LN684">684</td><td class="line"> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="685"><td class="num" id="LN685">685</td><td class="line"> 0);</td></tr>
+<tr class="codeline" data-linenumber="686"><td class="num" id="LN686">686</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="687"><td class="num" id="LN687">687</td><td class="line"> <span class='macro'>g_signal_connect (panel-&gt;priv-&gt;tag_groups_combo,<span class='macro_popup'>g_signal_connect_data ((panel-&gt;priv-&gt;tag_groups_combo),<br> ("realize"), (((GCallback) (realize_tag_groups_combo))), (panel<br>), ((void*)0), (GConnectFlags) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="688"><td class="num" id="LN688">688</td><td class="line"> <span class='string_literal'><span class='macro'>"realize"</span>,<span class='macro_popup'>g_signal_connect_data ((panel-&gt;priv-&gt;tag_groups_combo),<br> ("realize"), (((GCallback) (realize_tag_groups_combo))), (panel<br>), ((void*)0), (GConnectFlags) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="689"><td class="num" id="LN689">689</td><td class="line"> <span class='macro'>G_CALLBACK (realize_tag_groups_combo),<span class='macro_popup'>g_signal_connect_data ((panel-&gt;priv-&gt;tag_groups_combo),<br> ("realize"), (((GCallback) (realize_tag_groups_combo))), (panel<br>), ((void*)0), (GConnectFlags) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="690"><td class="num" id="LN690">690</td><td class="line"> <span class='macro'>panel)<span class='macro_popup'>g_signal_connect_data ((panel-&gt;priv-&gt;tag_groups_combo),<br> ("realize"), (((GCallback) (realize_tag_groups_combo))), (panel<br>), ((void*)0), (GConnectFlags) 0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="691"><td class="num" id="LN691">691</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="692"><td class="num" id="LN692">692</td><td class="line"> sw = gtk_scrolled_window_new (<span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="693"><td class="num" id="LN693">693</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="694"><td class="num" id="LN694">694</td><td class="line"> gtk_scrolled_window_set_policy (<span class='macro'>GTK_SCROLLED_WINDOW (sw)<span class='macro_popup'>((((GtkScrolledWindow*) (void *) ((sw)))))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="695"><td class="num" id="LN695">695</td><td class="line"> GTK_POLICY_AUTOMATIC,</td></tr>
+<tr class="codeline" data-linenumber="696"><td class="num" id="LN696">696</td><td class="line"> GTK_POLICY_AUTOMATIC);</td></tr>
+<tr class="codeline" data-linenumber="697"><td class="num" id="LN697">697</td><td class="line"> gtk_scrolled_window_set_shadow_type (<span class='macro'>GTK_SCROLLED_WINDOW (sw)<span class='macro_popup'>((((GtkScrolledWindow*) (void *) ((sw)))))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="698"><td class="num" id="LN698">698</td><td class="line"> GTK_SHADOW_IN);</td></tr>
+<tr class="codeline" data-linenumber="699"><td class="num" id="LN699">699</td><td class="line"> gtk_box_pack_start (<span class='macro'>GTK_BOX (panel)<span class='macro_popup'>((((GtkBox*) (void *) ((panel)))))</span></span>, sw, <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>, <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>, 0);</td></tr>
+<tr class="codeline" data-linenumber="700"><td class="num" id="LN700">700</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="701"><td class="num" id="LN701">701</td><td class="line"> <span class='comment'>/* Create tree view */</span></td></tr>
+<tr class="codeline" data-linenumber="702"><td class="num" id="LN702">702</td><td class="line"> panel-&gt;priv-&gt;tags_list = gtk_tree_view_new ();</td></tr>
+<tr class="codeline" data-linenumber="703"><td class="num" id="LN703">703</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="704"><td class="num" id="LN704">704</td><td class="line"> pluma_utils_set_atk_name_description (panel-&gt;priv-&gt;tag_groups_combo,</td></tr>
+<tr class="codeline" data-linenumber="705"><td class="num" id="LN705">705</td><td class="line"> <span class='macro'>_(<span class='string_literal'>"Available Tag Lists"</span>)<span class='macro_popup'>dcgettext (((void*)0), "Available Tag Lists", 5)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="706"><td class="num" id="LN706">706</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="707"><td class="num" id="LN707">707</td><td class="line"> pluma_utils_set_atk_name_description (panel-&gt;priv-&gt;tags_list,</td></tr>
+<tr class="codeline" data-linenumber="708"><td class="num" id="LN708">708</td><td class="line"> <span class='macro'>_(<span class='string_literal'>"Tags"</span>)<span class='macro_popup'>dcgettext (((void*)0), "Tags", 5)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="709"><td class="num" id="LN709">709</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="710"><td class="num" id="LN710">710</td><td class="line"> pluma_utils_set_atk_relation (panel-&gt;priv-&gt;tag_groups_combo,</td></tr>
+<tr class="codeline" data-linenumber="711"><td class="num" id="LN711">711</td><td class="line"> panel-&gt;priv-&gt;tags_list,</td></tr>
+<tr class="codeline" data-linenumber="712"><td class="num" id="LN712">712</td><td class="line"> ATK_RELATION_CONTROLLER_FOR);</td></tr>
+<tr class="codeline" data-linenumber="713"><td class="num" id="LN713">713</td><td class="line"> pluma_utils_set_atk_relation (panel-&gt;priv-&gt;tags_list,</td></tr>
+<tr class="codeline" data-linenumber="714"><td class="num" id="LN714">714</td><td class="line"> panel-&gt;priv-&gt;tag_groups_combo,</td></tr>
+<tr class="codeline" data-linenumber="715"><td class="num" id="LN715">715</td><td class="line"> ATK_RELATION_CONTROLLED_BY);</td></tr>
+<tr class="codeline" data-linenumber="716"><td class="num" id="LN716">716</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="717"><td class="num" id="LN717">717</td><td class="line"> gtk_tree_view_set_headers_visible (<span class='macro'>GTK_TREE_VIEW (panel-&gt;priv-&gt;tags_list)<span class='macro_popup'>((((GtkTreeView*) (void *) ((panel-&gt;priv-&gt;tags_list))))<br>)</span></span>, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="718"><td class="num" id="LN718">718</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="719"><td class="num" id="LN719">719</td><td class="line"> g_object_set (panel-&gt;priv-&gt;tags_list, <span class='string_literal'>"has-tooltip"</span>, <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="720"><td class="num" id="LN720">720</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="721"><td class="num" id="LN721">721</td><td class="line"> <span class='comment'>/* Add the tags column */</span></td></tr>
+<tr class="codeline" data-linenumber="722"><td class="num" id="LN722">722</td><td class="line"> cell = gtk_cell_renderer_text_new ();</td></tr>
+<tr class="codeline" data-linenumber="723"><td class="num" id="LN723">723</td><td class="line"> column = gtk_tree_view_column_new_with_attributes (<span class='macro'>_(<span class='string_literal'>"Tags"</span>)<span class='macro_popup'>dcgettext (((void*)0), "Tags", 5)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="724"><td class="num" id="LN724">724</td><td class="line"> cell,</td></tr>
+<tr class="codeline" data-linenumber="725"><td class="num" id="LN725">725</td><td class="line"> <span class='string_literal'>"text"</span>,</td></tr>
+<tr class="codeline" data-linenumber="726"><td class="num" id="LN726">726</td><td class="line"> COLUMN_TAG_NAME,</td></tr>
+<tr class="codeline" data-linenumber="727"><td class="num" id="LN727">727</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="728"><td class="num" id="LN728">728</td><td class="line"> gtk_tree_view_append_column (<span class='macro'>GTK_TREE_VIEW (panel-&gt;priv-&gt;tags_list)<span class='macro_popup'>((((GtkTreeView*) (void *) ((panel-&gt;priv-&gt;tags_list))))<br>)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="729"><td class="num" id="LN729">729</td><td class="line"> column);</td></tr>
+<tr class="codeline" data-linenumber="730"><td class="num" id="LN730">730</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="731"><td class="num" id="LN731">731</td><td class="line"> gtk_tree_view_set_search_column (<span class='macro'>GTK_TREE_VIEW (panel-&gt;priv-&gt;tags_list)<span class='macro_popup'>((((GtkTreeView*) (void *) ((panel-&gt;priv-&gt;tags_list))))<br>)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="732"><td class="num" id="LN732">732</td><td class="line"> COLUMN_TAG_NAME);</td></tr>
+<tr class="codeline" data-linenumber="733"><td class="num" id="LN733">733</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="734"><td class="num" id="LN734">734</td><td class="line"> gtk_container_add (<span class='macro'>GTK_CONTAINER (sw)<span class='macro_popup'>((((GtkContainer*) (void *) ((sw)))))</span></span>, panel-&gt;priv-&gt;tags_list);</td></tr>
+<tr class="codeline" data-linenumber="735"><td class="num" id="LN735">735</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="736"><td class="num" id="LN736">736</td><td class="line"> focus_chain = g_list_prepend (focus_chain, panel-&gt;priv-&gt;tags_list);</td></tr>
+<tr class="codeline" data-linenumber="737"><td class="num" id="LN737">737</td><td class="line"> focus_chain = g_list_prepend (focus_chain, panel-&gt;priv-&gt;tag_groups_combo);</td></tr>
+<tr class="codeline" data-linenumber="738"><td class="num" id="LN738">738</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="739"><td class="num" id="LN739">739</td><td class="line"> gtk_container_set_focus_chain (<span class='macro'>GTK_CONTAINER (panel)<span class='macro_popup'>((((GtkContainer*) (void *) ((panel)))))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="740"><td class="num" id="LN740">740</td><td class="line"> focus_chain);</td></tr>
+<tr class="codeline" data-linenumber="741"><td class="num" id="LN741">741</td><td class="line"> g_list_free (focus_chain);</td></tr>
+<tr class="codeline" data-linenumber="742"><td class="num" id="LN742">742</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="743"><td class="num" id="LN743">743</td><td class="line"> add_preview_widget (panel);</td></tr>
+<tr class="codeline" data-linenumber="744"><td class="num" id="LN744">744</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="745"><td class="num" id="LN745">745</td><td class="line"> gtk_widget_show_all (<span class='macro'>GTK_WIDGET (sw)<span class='macro_popup'>((((GtkWidget*) (void *) ((sw)))))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="746"><td class="num" id="LN746">746</td><td class="line"> gtk_widget_show (<span class='macro'>GTK_WIDGET (panel-&gt;priv-&gt;tag_groups_combo)<span class='macro_popup'>((((GtkWidget*) (void *) ((panel-&gt;priv-&gt;tag_groups_combo<br>)))))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="747"><td class="num" id="LN747">747</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="748"><td class="num" id="LN748">748</td><td class="line"> <span class='macro'>g_signal_connect_after (panel-&gt;priv-&gt;tags_list,<span class='macro_popup'>g_signal_connect_data ((panel-&gt;priv-&gt;tags_list), ("row_activated"<br>), (((GCallback) (tag_list_row_activated_cb))), (panel), ((void<br>*)0), G_CONNECT_AFTER)</span></span></td></tr>
+<tr class="codeline" data-linenumber="749"><td class="num" id="LN749">749</td><td class="line"> <span class='string_literal'><span class='macro'>"row_activated"</span>,<span class='macro_popup'>g_signal_connect_data ((panel-&gt;priv-&gt;tags_list), ("row_activated"<br>), (((GCallback) (tag_list_row_activated_cb))), (panel), ((void<br>*)0), G_CONNECT_AFTER)</span></span></td></tr>
+<tr class="codeline" data-linenumber="750"><td class="num" id="LN750">750</td><td class="line"> <span class='macro'>G_CALLBACK (tag_list_row_activated_cb),<span class='macro_popup'>g_signal_connect_data ((panel-&gt;priv-&gt;tags_list), ("row_activated"<br>), (((GCallback) (tag_list_row_activated_cb))), (panel), ((void<br>*)0), G_CONNECT_AFTER)</span></span></td></tr>
+<tr class="codeline" data-linenumber="751"><td class="num" id="LN751">751</td><td class="line"> <span class='macro'>panel)<span class='macro_popup'>g_signal_connect_data ((panel-&gt;priv-&gt;tags_list), ("row_activated"<br>), (((GCallback) (tag_list_row_activated_cb))), (panel), ((void<br>*)0), G_CONNECT_AFTER)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="752"><td class="num" id="LN752">752</td><td class="line"> <span class='macro'>g_signal_connect (panel-&gt;priv-&gt;tags_list,<span class='macro_popup'>g_signal_connect_data ((panel-&gt;priv-&gt;tags_list), ("key_press_event"<br>), (((GCallback) (tag_list_key_press_event_cb))), (panel), ((<br>void*)0), (GConnectFlags) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="753"><td class="num" id="LN753">753</td><td class="line"> <span class='string_literal'><span class='macro'>"key_press_event"</span>,<span class='macro_popup'>g_signal_connect_data ((panel-&gt;priv-&gt;tags_list), ("key_press_event"<br>), (((GCallback) (tag_list_key_press_event_cb))), (panel), ((<br>void*)0), (GConnectFlags) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="754"><td class="num" id="LN754">754</td><td class="line"> <span class='macro'>G_CALLBACK (tag_list_key_press_event_cb),<span class='macro_popup'>g_signal_connect_data ((panel-&gt;priv-&gt;tags_list), ("key_press_event"<br>), (((GCallback) (tag_list_key_press_event_cb))), (panel), ((<br>void*)0), (GConnectFlags) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="755"><td class="num" id="LN755">755</td><td class="line"> <span class='macro'>panel)<span class='macro_popup'>g_signal_connect_data ((panel-&gt;priv-&gt;tags_list), ("key_press_event"<br>), (((GCallback) (tag_list_key_press_event_cb))), (panel), ((<br>void*)0), (GConnectFlags) 0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="756"><td class="num" id="LN756">756</td><td class="line"> <span class='macro'>g_signal_connect (panel-&gt;priv-&gt;tags_list,<span class='macro_popup'>g_signal_connect_data ((panel-&gt;priv-&gt;tags_list), ("query-tooltip"<br>), (((GCallback) (tags_list_query_tooltip_cb))), (panel), ((void<br>*)0), (GConnectFlags) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="757"><td class="num" id="LN757">757</td><td class="line"> <span class='string_literal'><span class='macro'>"query-tooltip"</span>,<span class='macro_popup'>g_signal_connect_data ((panel-&gt;priv-&gt;tags_list), ("query-tooltip"<br>), (((GCallback) (tags_list_query_tooltip_cb))), (panel), ((void<br>*)0), (GConnectFlags) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="758"><td class="num" id="LN758">758</td><td class="line"> <span class='macro'>G_CALLBACK (tags_list_query_tooltip_cb),<span class='macro_popup'>g_signal_connect_data ((panel-&gt;priv-&gt;tags_list), ("query-tooltip"<br>), (((GCallback) (tags_list_query_tooltip_cb))), (panel), ((void<br>*)0), (GConnectFlags) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="759"><td class="num" id="LN759">759</td><td class="line"> <span class='macro'>panel)<span class='macro_popup'>g_signal_connect_data ((panel-&gt;priv-&gt;tags_list), ("query-tooltip"<br>), (((GCallback) (tags_list_query_tooltip_cb))), (panel), ((void<br>*)0), (GConnectFlags) 0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="760"><td class="num" id="LN760">760</td><td class="line"> <span class='macro'>g_signal_connect (panel-&gt;priv-&gt;tags_list,<span class='macro_popup'>g_signal_connect_data ((panel-&gt;priv-&gt;tags_list), ("cursor_changed"<br>), (((GCallback) (tag_list_cursor_changed_cb))), (panel), ((void<br>*)0), (GConnectFlags) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="761"><td class="num" id="LN761">761</td><td class="line"> <span class='string_literal'><span class='macro'>"cursor_changed"</span>,<span class='macro_popup'>g_signal_connect_data ((panel-&gt;priv-&gt;tags_list), ("cursor_changed"<br>), (((GCallback) (tag_list_cursor_changed_cb))), (panel), ((void<br>*)0), (GConnectFlags) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="762"><td class="num" id="LN762">762</td><td class="line"> <span class='macro'>G_CALLBACK (tag_list_cursor_changed_cb),<span class='macro_popup'>g_signal_connect_data ((panel-&gt;priv-&gt;tags_list), ("cursor_changed"<br>), (((GCallback) (tag_list_cursor_changed_cb))), (panel), ((void<br>*)0), (GConnectFlags) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="763"><td class="num" id="LN763">763</td><td class="line"> <span class='macro'>panel)<span class='macro_popup'>g_signal_connect_data ((panel-&gt;priv-&gt;tags_list), ("cursor_changed"<br>), (((GCallback) (tag_list_cursor_changed_cb))), (panel), ((void<br>*)0), (GConnectFlags) 0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="764"><td class="num" id="LN764">764</td><td class="line"> <span class='macro'>g_signal_connect (panel-&gt;priv-&gt;tag_groups_combo,<span class='macro_popup'>g_signal_connect_data ((panel-&gt;priv-&gt;tag_groups_combo),<br> ("changed"), (((GCallback) (selected_group_changed))), (panel<br>), ((void*)0), (GConnectFlags) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="765"><td class="num" id="LN765">765</td><td class="line"> <span class='string_literal'><span class='macro'>"changed"</span>,<span class='macro_popup'>g_signal_connect_data ((panel-&gt;priv-&gt;tag_groups_combo),<br> ("changed"), (((GCallback) (selected_group_changed))), (panel<br>), ((void*)0), (GConnectFlags) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="766"><td class="num" id="LN766">766</td><td class="line"> <span class='macro'>G_CALLBACK (selected_group_changed),<span class='macro_popup'>g_signal_connect_data ((panel-&gt;priv-&gt;tag_groups_combo),<br> ("changed"), (((GCallback) (selected_group_changed))), (panel<br>), ((void*)0), (GConnectFlags) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="767"><td class="num" id="LN767">767</td><td class="line"> <span class='macro'>panel)<span class='macro_popup'>g_signal_connect_data ((panel-&gt;priv-&gt;tag_groups_combo),<br> ("changed"), (((GCallback) (selected_group_changed))), (panel<br>), ((void*)0), (GConnectFlags) 0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="768"><td class="num" id="LN768">768</td><td class="line"> <span class='macro'>g_signal_connect (panel,<span class='macro_popup'>g_signal_connect_data ((panel), ("draw"), (((GCallback) (draw_event_cb<br>))), (((void*)0)), ((void*)0), (GConnectFlags) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="769"><td class="num" id="LN769">769</td><td class="line"> <span class='string_literal'><span class='macro'>"draw"</span>,<span class='macro_popup'>g_signal_connect_data ((panel), ("draw"), (((GCallback) (draw_event_cb<br>))), (((void*)0)), ((void*)0), (GConnectFlags) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="770"><td class="num" id="LN770">770</td><td class="line"> <span class='macro'>G_CALLBACK (draw_event_cb),<span class='macro_popup'>g_signal_connect_data ((panel), ("draw"), (((GCallback) (draw_event_cb<br>))), (((void*)0)), ((void*)0), (GConnectFlags) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="771"><td class="num" id="LN771">771</td><td class="line"> <span class='macro'>NULL)<span class='macro_popup'>g_signal_connect_data ((panel), ("draw"), (((GCallback) (draw_event_cb<br>))), (((void*)0)), ((void*)0), (GConnectFlags) 0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="772"><td class="num" id="LN772">772</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="773"><td class="num" id="LN773">773</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="774"><td class="num" id="LN774">774</td><td class="line">GtkWidget *</td></tr>
+<tr class="codeline" data-linenumber="775"><td class="num" id="LN775">775</td><td class="line">pluma_taglist_plugin_panel_new (PlumaWindow *window,</td></tr>
+<tr class="codeline" data-linenumber="776"><td class="num" id="LN776">776</td><td class="line"> <span class='keyword'>const</span> gchar *data_dir)</td></tr>
+<tr class="codeline" data-linenumber="777"><td class="num" id="LN777">777</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="778"><td class="num" id="LN778">778</td><td class="line"> PlumaTaglistPluginPanel *panel;</td></tr>
+<tr class="codeline" data-linenumber="779"><td class="num" id="LN779">779</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="780"><td class="num" id="LN780">780</td><td class="line"> <span class='macro'>g_return_val_if_fail (PLUMA_IS_WINDOW (window), NULL)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_31<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((window)); GType __t = ((pluma_window_get_type())); gboolean<br> __r; if (!__inst) __r = (0); else if (__inst-&gt;g_class &amp;&amp;<br> __inst-&gt;g_class-&gt;g_type == __t) __r = (!(0)); else __r<br> = g_type_check_instance_is_a (__inst, __t); __r; }))))) _g_boolean_var_31<br> = 1; else _g_boolean_var_31 = 0; _g_boolean_var_31; }), 1)))<br> { } else { g_return_if_fail_warning (((gchar*) 0), ((const char<br>*) (__func__)), "PLUMA_IS_WINDOW (window)"); return (((void*)<br>0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="781"><td class="num" id="LN781">781</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="782"><td class="num" id="LN782">782</td><td class="line"> panel = g_object_new (<span class='macro'>PLUMA_TYPE_TAGLIST_PLUGIN_PANEL<span class='macro_popup'>(pluma_taglist_plugin_panel_get_type())</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="783"><td class="num" id="LN783">783</td><td class="line"> <span class='string_literal'>"window"</span>, window,</td></tr>
+<tr class="codeline" data-linenumber="784"><td class="num" id="LN784">784</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="785"><td class="num" id="LN785">785</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="786"><td class="num" id="LN786">786</td><td class="line"> panel-&gt;priv-&gt;data_dir = <span class='macro'>g_strdup (data_dir)<span class='macro_popup'>g_strdup_inline (data_dir)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="787"><td class="num" id="LN787">787</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="788"><td class="num" id="LN788">788</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>GTK_WIDGET (panel)<span class='macro_popup'>((((GtkWidget*) (void *) ((panel)))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="789"><td class="num" id="LN789">789</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="790"><td class="num" id="LN790">790</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="791"><td class="num" id="LN791">791</td><td class="line"><span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="792"><td class="num" id="LN792">792</td><td class="line">_pluma_taglist_plugin_panel_register_type (GTypeModule *type_module)</td></tr>
+<tr class="codeline" data-linenumber="793"><td class="num" id="LN793">793</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="794"><td class="num" id="LN794">794</td><td class="line"> pluma_taglist_plugin_panel_register_type (type_module);</td></tr>
+<tr class="codeline" data-linenumber="795"><td class="num" id="LN795">795</td><td class="line">}</td></tr>
+</table></body></html>
diff --git a/2023-05-28-030536-6612-1@f643dde74cbd_master/report-222690.html b/2023-05-28-030536-6612-1@f643dde74cbd_master/report-222690.html
new file mode 100644
index 00000000..563854ec
--- /dev/null
+++ b/2023-05-28-030536-6612-1@f643dde74cbd_master/report-222690.html
@@ -0,0 +1,5495 @@
+<!doctype html>
+<html>
+<head>
+<title>pluma-window.c</title>
+
+<style type="text/css">
+body { color:#000000; background-color:#ffffff }
+body { font-family:Helvetica, sans-serif; font-size:10pt }
+h1 { font-size:14pt }
+.FileName { margin-top: 5px; margin-bottom: 5px; display: inline; }
+.FileNav { margin-left: 5px; margin-right: 5px; display: inline; }
+.FileNav a { text-decoration:none; font-size: larger; }
+.divider { margin-top: 30px; margin-bottom: 30px; height: 15px; }
+.divider { background-color: gray; }
+.code { border-collapse:collapse; width:100%; }
+.code { font-family: "Monospace", monospace; font-size:10pt }
+.code { line-height: 1.2em }
+.comment { color: green; font-style: oblique }
+.keyword { color: blue }
+.string_literal { color: red }
+.directive { color: darkmagenta }
+
+/* Macros and variables could have pop-up notes hidden by default.
+ - Macro pop-up: expansion of the macro
+ - Variable pop-up: value (table) of the variable */
+.macro_popup, .variable_popup { display: none; }
+
+/* Pop-up appears on mouse-hover event. */
+.macro:hover .macro_popup, .variable:hover .variable_popup {
+ display: block;
+ padding: 2px;
+ -webkit-border-radius:5px;
+ -webkit-box-shadow:1px 1px 7px #000;
+ border-radius:5px;
+ box-shadow:1px 1px 7px #000;
+ position: absolute;
+ top: -1em;
+ left:10em;
+ z-index: 1
+}
+
+.macro_popup {
+ border: 2px solid red;
+ background-color:#FFF0F0;
+ font-weight: normal;
+}
+
+.variable_popup {
+ border: 2px solid blue;
+ background-color:#F0F0FF;
+ font-weight: bold;
+ font-family: Helvetica, sans-serif;
+ font-size: 9pt;
+}
+
+/* Pop-up notes needs a relative position as a base where they pops up. */
+.macro, .variable {
+ background-color: PaleGoldenRod;
+ position: relative;
+}
+.macro { color: DarkMagenta; }
+
+#tooltiphint {
+ position: fixed;
+ width: 50em;
+ margin-left: -25em;
+ left: 50%;
+ padding: 10px;
+ border: 1px solid #b0b0b0;
+ border-radius: 2px;
+ box-shadow: 1px 1px 7px black;
+ background-color: #c0c0c0;
+ z-index: 2;
+}
+
+.num { width:2.5em; padding-right:2ex; background-color:#eeeeee }
+.num { text-align:right; font-size:8pt }
+.num { color:#444444 }
+.line { padding-left: 1ex; border-left: 3px solid #ccc }
+.line { white-space: pre }
+.msg { -webkit-box-shadow:1px 1px 7px #000 }
+.msg { box-shadow:1px 1px 7px #000 }
+.msg { -webkit-border-radius:5px }
+.msg { border-radius:5px }
+.msg { font-family:Helvetica, sans-serif; font-size:8pt }
+.msg { float:left }
+.msg { position:relative }
+.msg { padding:0.25em 1ex 0.25em 1ex }
+.msg { margin-top:10px; margin-bottom:10px }
+.msg { font-weight:bold }
+.msg { max-width:60em; word-wrap: break-word; white-space: pre-wrap }
+.msgT { padding:0x; spacing:0x }
+.msgEvent { background-color:#fff8b4; color:#000000 }
+.msgControl { background-color:#bbbbbb; color:#000000 }
+.msgNote { background-color:#ddeeff; color:#000000 }
+.mrange { background-color:#dfddf3 }
+.mrange { border-bottom:1px solid #6F9DBE }
+.PathIndex { font-weight: bold; padding:0px 5px; margin-right:5px; }
+.PathIndex { -webkit-border-radius:8px }
+.PathIndex { border-radius:8px }
+.PathIndexEvent { background-color:#bfba87 }
+.PathIndexControl { background-color:#8c8c8c }
+.PathIndexPopUp { background-color: #879abc; }
+.PathNav a { text-decoration:none; font-size: larger }
+.CodeInsertionHint { font-weight: bold; background-color: #10dd10 }
+.CodeRemovalHint { background-color:#de1010 }
+.CodeRemovalHint { border-bottom:1px solid #6F9DBE }
+.msg.selected{ background-color:orange !important; }
+
+table.simpletable {
+ padding: 5px;
+ font-size:12pt;
+ margin:20px;
+ border-collapse: collapse; border-spacing: 0px;
+}
+td.rowname {
+ text-align: right;
+ vertical-align: top;
+ font-weight: bold;
+ color:#444444;
+ padding-right:2ex;
+}
+
+/* Hidden text. */
+input.spoilerhider + label {
+ cursor: pointer;
+ text-decoration: underline;
+ display: block;
+}
+input.spoilerhider {
+ display: none;
+}
+input.spoilerhider ~ .spoiler {
+ overflow: hidden;
+ margin: 10px auto 0;
+ height: 0;
+ opacity: 0;
+}
+input.spoilerhider:checked + label + .spoiler{
+ height: auto;
+ opacity: 1;
+}
+</style>
+</head>
+<body>
+<!-- BUGDESC Call to function 'strcpy' is insecure as it does not provide bounding of the memory buffer. Replace unbounded copy functions with analogous functions that support length arguments such as 'strlcpy'. CWE-119 -->
+
+<!-- BUGTYPE Potential insecure memory buffer bounds restriction in call 'strcpy' -->
+
+<!-- BUGCATEGORY Security -->
+
+<!-- BUGFILE /rootdir/pluma/pluma-window.c -->
+
+<!-- FILENAME pluma-window.c -->
+
+<!-- FUNCTIONNAME pluma_window_key_press_event -->
+
+<!-- ISSUEHASHCONTENTOFLINEINCONTEXT 2226901a3d21a840e40e175aa89a7085 -->
+
+<!-- BUGLINE 332 -->
+
+<!-- BUGCOLUMN 9 -->
+
+<!-- BUGPATHLENGTH 1 -->
+
+<!-- BUGMETAEND -->
+<!-- REPORTHEADER -->
+<h3>Bug Summary</h3>
+<table class="simpletable">
+<tr><td class="rowname">File:</td><td>pluma/pluma-window.c</td></tr>
+<tr><td class="rowname">Warning:</td><td><a href="#EndPath">line 332, column 9</a><br />Call to function 'strcpy' is insecure as it does not provide bounding of the memory buffer. Replace unbounded copy functions with analogous functions that support length arguments such as 'strlcpy'. CWE-119</td></tr>
+
+</table>
+<!-- REPORTSUMMARYEXTRA -->
+<h3>Annotated Source Code</h3>
+<p>Press <a href="#" onclick="toggleHelp(); return false;">'?'</a>
+ to see keyboard shortcuts</p>
+<input type="checkbox" class="spoilerhider" id="showinvocation" />
+<label for="showinvocation" >Show analyzer invocation</label>
+<div class="spoiler">clang -cc1 -cc1 -triple x86_64-redhat-linux-gnu -analyze -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name pluma-window.c -analyzer-checker=core -analyzer-checker=apiModeling -analyzer-checker=unix -analyzer-checker=deadcode -analyzer-checker=security.insecureAPI.UncheckedReturn -analyzer-checker=security.insecureAPI.getpw -analyzer-checker=security.insecureAPI.gets -analyzer-checker=security.insecureAPI.mktemp -analyzer-checker=security.insecureAPI.mkstemp -analyzer-checker=security.insecureAPI.vfork -analyzer-checker=nullability.NullPassedToNonnull -analyzer-checker=nullability.NullReturnedFromNonnull -analyzer-output plist -w -setup-static-analyzer -mrelocation-model pic -pic-level 2 -fhalf-no-semantic-interposition -mframe-pointer=none -fmath-errno -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=2 -target-cpu x86-64 -tune-cpu generic -debugger-tuning=gdb -fcoverage-compilation-dir=/rootdir/pluma -resource-dir /usr/lib64/clang/16 -D HAVE_CONFIG_H -I . -I .. -I .. -I . -I ./mate-submodules/libegg -I /usr/include/libxml2 -I /usr/include/glib-2.0 -I /usr/lib64/glib-2.0/include -I /usr/include/sysprof-4 -I /usr/include/libmount -I /usr/include/blkid -I /usr/include/gtk-3.0 -I /usr/include/pango-1.0 -I /usr/include/harfbuzz -I /usr/include/freetype2 -I /usr/include/libpng16 -I /usr/include/fribidi -I /usr/include/cairo -I /usr/include/pixman-1 -I /usr/include/gdk-pixbuf-2.0 -I /usr/include/gio-unix-2.0 -I /usr/include/cloudproviders -I /usr/include/atk-1.0 -I /usr/include/at-spi2-atk/2.0 -I /usr/include/at-spi-2.0 -I /usr/include/dbus-1.0 -I /usr/lib64/dbus-1.0/include -I /usr/include/gtksourceview-4 -I /usr/include/libpeas-1.0 -I /usr/include/gobject-introspection-1.0 -I /usr/include/gobject-introspection-1.0 -I /usr/include/glib-2.0 -I /usr/lib64/glib-2.0/include -I /usr/include/sysprof-4 -D DATADIR="/usr/local/share" -D PLUMA_DATADIR="/usr/local/share/pluma" -D PLUMA_LOCALEDIR="/usr/local/share/locale/" -D LIBDIR="/usr/local/lib" -D PLUMA_LIBDIR="/usr/local/lib/pluma" -D PIC -internal-isystem /usr/lib64/clang/16/include -internal-isystem /usr/local/include -internal-isystem /usr/bin/../lib/gcc/x86_64-redhat-linux/13/../../../../x86_64-redhat-linux/include -internal-externc-isystem /include -internal-externc-isystem /usr/include -O2 -Wno-unused-parameter -fdebug-compilation-dir=/rootdir/pluma -ferror-limit 19 -fgnuc-version=4.2.1 -vectorize-loops -vectorize-slp -analyzer-checker deadcode.DeadStores -analyzer-checker alpha.deadcode.UnreachableCode -analyzer-checker alpha.core.CastSize -analyzer-checker alpha.core.CastToStruct -analyzer-checker alpha.core.IdenticalExpr -analyzer-checker alpha.core.SizeofPtr -analyzer-checker alpha.security.ArrayBoundV2 -analyzer-checker alpha.security.MallocOverflow -analyzer-checker alpha.security.ReturnPtrRange -analyzer-checker alpha.unix.SimpleStream -analyzer-checker alpha.unix.cstring.BufferOverlap -analyzer-checker alpha.unix.cstring.NotNullTerminated -analyzer-checker alpha.unix.cstring.OutOfBounds -analyzer-checker alpha.core.FixedAddr -analyzer-checker security.insecureAPI.strcpy -analyzer-output=html -faddrsig -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o /rootdir/html-report/2023-05-28-030536-6612-1 -x c pluma-window.c
+</div>
+<div id='tooltiphint' hidden="true">
+ <p>Keyboard shortcuts: </p>
+ <ul>
+ <li>Use 'j/k' keys for keyboard navigation</li>
+ <li>Use 'Shift+S' to show/hide relevant lines</li>
+ <li>Use '?' to toggle this window</li>
+ </ul>
+ <a href="#" onclick="toggleHelp(); return false;">Close</a>
+</div>
+<script type='text/javascript'>
+var relevant_lines = {"1": {"332": 1}};
+
+var filterCounterexample = function (hide) {
+ var tables = document.getElementsByClassName("code");
+ for (var t=0; t<tables.length; t++) {
+ var table = tables[t];
+ var file_id = table.getAttribute("data-fileid");
+ var lines_in_fid = relevant_lines[file_id];
+ if (!lines_in_fid) {
+ lines_in_fid = {};
+ }
+ var lines = table.getElementsByClassName("codeline");
+ for (var i=0; i<lines.length; i++) {
+ var el = lines[i];
+ var lineNo = el.getAttribute("data-linenumber");
+ if (!lines_in_fid[lineNo]) {
+ if (hide) {
+ el.setAttribute("hidden", "");
+ } else {
+ el.removeAttribute("hidden");
+ }
+ }
+ }
+ }
+}
+
+window.addEventListener("keydown", function (event) {
+ if (event.defaultPrevented) {
+ return;
+ }
+ // SHIFT + S
+ if (event.shiftKey && event.keyCode == 83) {
+ var checked = document.getElementsByName("showCounterexample")[0].checked;
+ filterCounterexample(!checked);
+ document.getElementsByName("showCounterexample")[0].click();
+ } else {
+ return;
+ }
+ event.preventDefault();
+}, true);
+
+document.addEventListener("DOMContentLoaded", function() {
+ document.querySelector('input[name="showCounterexample"]').onchange=
+ function (event) {
+ filterCounterexample(this.checked);
+ };
+});
+</script>
+
+<form>
+ <input type="checkbox" name="showCounterexample" id="showCounterexample" />
+ <label for="showCounterexample">
+ Show only relevant lines
+ </label>
+ <input type="checkbox" name="showArrows"
+ id="showArrows" style="margin-left: 10px" />
+ <label for="showArrows">
+ Show control flow arrows
+ </label>
+</form>
+
+<script type='text/javascript'>
+// Return range of numbers from a range [lower, upper).
+function range(lower, upper) {
+ var array = [];
+ for (var i = lower; i <= upper; ++i) {
+ array.push(i);
+ }
+ return array;
+}
+
+var getRelatedArrowIndices = function(pathId) {
+ // HTML numeration of events is a bit different than it is in the path.
+ // Everything is rotated one step to the right, so the last element
+ // (error diagnostic) has index 0.
+ if (pathId == 0) {
+ // arrowIndices has at least 2 elements
+ pathId = arrowIndices.length - 1;
+ }
+
+ return range(arrowIndices[pathId], arrowIndices[pathId - 1]);
+}
+
+var highlightArrowsForSelectedEvent = function() {
+ const selectedNum = findNum();
+ const arrowIndicesToHighlight = getRelatedArrowIndices(selectedNum);
+ arrowIndicesToHighlight.forEach((index) => {
+ var arrow = document.querySelector("#arrow" + index);
+ if(arrow) {
+ classListAdd(arrow, "selected")
+ }
+ });
+}
+
+var getAbsoluteBoundingRect = function(element) {
+ const relative = element.getBoundingClientRect();
+ return {
+ left: relative.left + window.pageXOffset,
+ right: relative.right + window.pageXOffset,
+ top: relative.top + window.pageYOffset,
+ bottom: relative.bottom + window.pageYOffset,
+ height: relative.height,
+ width: relative.width
+ };
+}
+
+var drawArrow = function(index) {
+ // This function is based on the great answer from SO:
+ // https://stackoverflow.com/a/39575674/11582326
+ var start = document.querySelector("#start" + index);
+ var end = document.querySelector("#end" + index);
+ var arrow = document.querySelector("#arrow" + index);
+
+ var startRect = getAbsoluteBoundingRect(start);
+ var endRect = getAbsoluteBoundingRect(end);
+
+ // It is an arrow from a token to itself, no need to visualize it.
+ if (startRect.top == endRect.top &&
+ startRect.left == endRect.left)
+ return;
+
+ // Each arrow is a very simple Bézier curve, with two nodes and
+ // two handles. So, we need to calculate four points in the window:
+ // * start node
+ var posStart = { x: 0, y: 0 };
+ // * end node
+ var posEnd = { x: 0, y: 0 };
+ // * handle for the start node
+ var startHandle = { x: 0, y: 0 };
+ // * handle for the end node
+ var endHandle = { x: 0, y: 0 };
+ // One can visualize it as follows:
+ //
+ // start handle
+ // /
+ // X"""_.-""""X
+ // .' \
+ // / start node
+ // |
+ // |
+ // | end node
+ // \ /
+ // `->X
+ // X-'
+ // \
+ // end handle
+ //
+ // NOTE: (0, 0) is the top left corner of the window.
+
+ // We have 3 similar, but still different scenarios to cover:
+ //
+ // 1. Two tokens on different lines.
+ // -xxx
+ // /
+ // \
+ // -> xxx
+ // In this situation, we draw arrow on the left curving to the left.
+ // 2. Two tokens on the same line, and the destination is on the right.
+ // ____
+ // / \
+ // / V
+ // xxx xxx
+ // In this situation, we draw arrow above curving upwards.
+ // 3. Two tokens on the same line, and the destination is on the left.
+ // xxx xxx
+ // ^ /
+ // \____/
+ // In this situation, we draw arrow below curving downwards.
+ const onDifferentLines = startRect.top <= endRect.top - 5 ||
+ startRect.top >= endRect.top + 5;
+ const leftToRight = startRect.left < endRect.left;
+
+ // NOTE: various magic constants are chosen empirically for
+ // better positioning and look
+ if (onDifferentLines) {
+ // Case #1
+ const topToBottom = startRect.top < endRect.top;
+ posStart.x = startRect.left - 1;
+ // We don't want to start it at the top left corner of the token,
+ // it doesn't feel like this is where the arrow comes from.
+ // For this reason, we start it in the middle of the left side
+ // of the token.
+ posStart.y = startRect.top + startRect.height / 2;
+
+ // End node has arrow head and we give it a bit more space.
+ posEnd.x = endRect.left - 4;
+ posEnd.y = endRect.top;
+
+ // Utility object with x and y offsets for handles.
+ var curvature = {
+ // We want bottom-to-top arrow to curve a bit more, so it doesn't
+ // overlap much with top-to-bottom curves (much more frequent).
+ x: topToBottom ? 15 : 25,
+ y: Math.min((posEnd.y - posStart.y) / 3, 10)
+ }
+
+ // When destination is on the different line, we can make a
+ // curvier arrow because we have space for it.
+ // So, instead of using
+ //
+ // startHandle.x = posStart.x - curvature.x
+ // endHandle.x = posEnd.x - curvature.x
+ //
+ // We use the leftmost of these two values for both handles.
+ startHandle.x = Math.min(posStart.x, posEnd.x) - curvature.x;
+ endHandle.x = startHandle.x;
+
+ // Curving downwards from the start node...
+ startHandle.y = posStart.y + curvature.y;
+ // ... and upwards from the end node.
+ endHandle.y = posEnd.y - curvature.y;
+
+ } else if (leftToRight) {
+ // Case #2
+ // Starting from the top right corner...
+ posStart.x = startRect.right - 1;
+ posStart.y = startRect.top;
+
+ // ...and ending at the top left corner of the end token.
+ posEnd.x = endRect.left + 1;
+ posEnd.y = endRect.top - 1;
+
+ // Utility object with x and y offsets for handles.
+ var curvature = {
+ x: Math.min((posEnd.x - posStart.x) / 3, 15),
+ y: 5
+ }
+
+ // Curving to the right...
+ startHandle.x = posStart.x + curvature.x;
+ // ... and upwards from the start node.
+ startHandle.y = posStart.y - curvature.y;
+
+ // And to the left...
+ endHandle.x = posEnd.x - curvature.x;
+ // ... and upwards from the end node.
+ endHandle.y = posEnd.y - curvature.y;
+
+ } else {
+ // Case #3
+ // Starting from the bottom right corner...
+ posStart.x = startRect.right;
+ posStart.y = startRect.bottom;
+
+ // ...and ending also at the bottom right corner, but of the end token.
+ posEnd.x = endRect.right - 1;
+ posEnd.y = endRect.bottom + 1;
+
+ // Utility object with x and y offsets for handles.
+ var curvature = {
+ x: Math.min((posStart.x - posEnd.x) / 3, 15),
+ y: 5
+ }
+
+ // Curving to the left...
+ startHandle.x = posStart.x - curvature.x;
+ // ... and downwards from the start node.
+ startHandle.y = posStart.y + curvature.y;
+
+ // And to the right...
+ endHandle.x = posEnd.x + curvature.x;
+ // ... and downwards from the end node.
+ endHandle.y = posEnd.y + curvature.y;
+ }
+
+ // Put it all together into a path.
+ // More information on the format:
+ // https://developer.mozilla.org/en-US/docs/Web/SVG/Tutorial/Paths
+ var pathStr = "M" + posStart.x + "," + posStart.y + " " +
+ "C" + startHandle.x + "," + startHandle.y + " " +
+ endHandle.x + "," + endHandle.y + " " +
+ posEnd.x + "," + posEnd.y;
+
+ arrow.setAttribute("d", pathStr);
+};
+
+var drawArrows = function() {
+ const numOfArrows = document.querySelectorAll("path[id^=arrow]").length;
+ for (var i = 0; i < numOfArrows; ++i) {
+ drawArrow(i);
+ }
+}
+
+var toggleArrows = function(event) {
+ const arrows = document.querySelector("#arrows");
+ if (event.target.checked) {
+ arrows.setAttribute("visibility", "visible");
+ } else {
+ arrows.setAttribute("visibility", "hidden");
+ }
+}
+
+window.addEventListener("resize", drawArrows);
+document.addEventListener("DOMContentLoaded", function() {
+ // Whenever we show invocation, locations change, i.e. we
+ // need to redraw arrows.
+ document
+ .querySelector('input[id="showinvocation"]')
+ .addEventListener("click", drawArrows);
+ // Hiding irrelevant lines also should cause arrow rerender.
+ document
+ .querySelector('input[name="showCounterexample"]')
+ .addEventListener("change", drawArrows);
+ document
+ .querySelector('input[name="showArrows"]')
+ .addEventListener("change", toggleArrows);
+ drawArrows();
+ // Default highlighting for the last event.
+ highlightArrowsForSelectedEvent();
+});
+</script>
+
+<script type='text/javascript'>
+var digitMatcher = new RegExp("[0-9]+");
+
+var querySelectorAllArray = function(selector) {
+ return Array.prototype.slice.call(
+ document.querySelectorAll(selector));
+}
+
+document.addEventListener("DOMContentLoaded", function() {
+ querySelectorAllArray(".PathNav > a").forEach(
+ function(currentValue, currentIndex) {
+ var hrefValue = currentValue.getAttribute("href");
+ currentValue.onclick = function() {
+ scrollTo(document.querySelector(hrefValue));
+ return false;
+ };
+ });
+});
+
+var findNum = function() {
+ var s = document.querySelector(".msg.selected");
+ if (!s || s.id == "EndPath") {
+ return 0;
+ }
+ var out = parseInt(digitMatcher.exec(s.id)[0]);
+ return out;
+};
+
+var classListAdd = function(el, theClass) {
+ if(!el.className.baseVal)
+ el.className += " " + theClass;
+ else
+ el.className.baseVal += " " + theClass;
+};
+
+var classListRemove = function(el, theClass) {
+ var className = (!el.className.baseVal) ?
+ el.className : el.className.baseVal;
+ className = className.replace(" " + theClass, "");
+ if(!el.className.baseVal)
+ el.className = className;
+ else
+ el.className.baseVal = className;
+};
+
+var scrollTo = function(el) {
+ querySelectorAllArray(".selected").forEach(function(s) {
+ classListRemove(s, "selected");
+ });
+ classListAdd(el, "selected");
+ window.scrollBy(0, el.getBoundingClientRect().top -
+ (window.innerHeight / 2));
+ highlightArrowsForSelectedEvent();
+};
+
+var move = function(num, up, numItems) {
+ if (num == 1 && up || num == numItems - 1 && !up) {
+ return 0;
+ } else if (num == 0 && up) {
+ return numItems - 1;
+ } else if (num == 0 && !up) {
+ return 1 % numItems;
+ }
+ return up ? num - 1 : num + 1;
+}
+
+var numToId = function(num) {
+ if (num == 0) {
+ return document.getElementById("EndPath")
+ }
+ return document.getElementById("Path" + num);
+};
+
+var navigateTo = function(up) {
+ var numItems = document.querySelectorAll(
+ ".line > .msgEvent, .line > .msgControl").length;
+ var currentSelected = findNum();
+ var newSelected = move(currentSelected, up, numItems);
+ var newEl = numToId(newSelected, numItems);
+
+ // Scroll element into center.
+ scrollTo(newEl);
+};
+
+window.addEventListener("keydown", function (event) {
+ if (event.defaultPrevented) {
+ return;
+ }
+ // key 'j'
+ if (event.keyCode == 74) {
+ navigateTo(/*up=*/false);
+ // key 'k'
+ } else if (event.keyCode == 75) {
+ navigateTo(/*up=*/true);
+ } else {
+ return;
+ }
+ event.preventDefault();
+}, true);
+</script>
+
+<script type='text/javascript'>
+
+var toggleHelp = function() {
+ var hint = document.querySelector("#tooltiphint");
+ var attributeName = "hidden";
+ if (hint.hasAttribute(attributeName)) {
+ hint.removeAttribute(attributeName);
+ } else {
+ hint.setAttribute("hidden", "true");
+ }
+};
+window.addEventListener("keydown", function (event) {
+ if (event.defaultPrevented) {
+ return;
+ }
+ if (event.key == "?") {
+ toggleHelp();
+ } else {
+ return;
+ }
+ event.preventDefault();
+});
+</script>
+
+<style type="text/css">
+ svg {
+ position:absolute;
+ top:0;
+ left:0;
+ height:100%;
+ width:100%;
+ pointer-events: none;
+ overflow: visible
+ }
+ .arrow {
+ stroke-opacity: 0.2;
+ stroke-width: 1;
+ marker-end: url(#arrowhead);
+ }
+
+ .arrow.selected {
+ stroke-opacity: 0.6;
+ stroke-width: 2;
+ marker-end: url(#arrowheadSelected);
+ }
+
+ .arrowhead {
+ orient: auto;
+ stroke: none;
+ opacity: 0.6;
+ fill: blue;
+ }
+</style>
+<svg xmlns="http://www.w3.org/2000/svg">
+ <defs>
+ <marker id="arrowheadSelected" class="arrowhead" opacity="0.6"
+ viewBox="0 0 10 10" refX="3" refY="5"
+ markerWidth="4" markerHeight="4">
+ <path d="M 0 0 L 10 5 L 0 10 z" />
+ </marker>
+ <marker id="arrowhead" class="arrowhead" opacity="0.2"
+ viewBox="0 0 10 10" refX="3" refY="5"
+ markerWidth="4" markerHeight="4">
+ <path d="M 0 0 L 10 5 L 0 10 z" />
+ </marker>
+ </defs>
+ <g id="arrows" fill="none" stroke="blue" visibility="hidden">
+
+ </g>
+</svg>
+<script type='text/javascript'>
+const arrowIndices = [ 0,0 ]
+</script>
+<table class="code" data-fileid="1">
+<tr class="codeline" data-linenumber="1"><td class="num" id="LN1">1</td><td class="line"><span class='comment'>/*</span></td></tr>
+<tr class="codeline" data-linenumber="2"><td class="num" id="LN2">2</td><td class="line"> <span class='comment'>* pluma-window.c</span></td></tr>
+<tr class="codeline" data-linenumber="3"><td class="num" id="LN3">3</td><td class="line"> <span class='comment'>* This file is part of pluma</span></td></tr>
+<tr class="codeline" data-linenumber="4"><td class="num" id="LN4">4</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="5"><td class="num" id="LN5">5</td><td class="line"> <span class='comment'>* Copyright (C) 2005 - Paolo Maggi</span></td></tr>
+<tr class="codeline" data-linenumber="6"><td class="num" id="LN6">6</td><td class="line"> <span class='comment'>* Copyright (C) 2012-2021 MATE Developers</span></td></tr>
+<tr class="codeline" data-linenumber="7"><td class="num" id="LN7">7</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="8"><td class="num" id="LN8">8</td><td class="line"> <span class='comment'>* This program is free software; you can redistribute it and/or modify</span></td></tr>
+<tr class="codeline" data-linenumber="9"><td class="num" id="LN9">9</td><td class="line"> <span class='comment'>* it under the terms of the GNU General Public License as published by</span></td></tr>
+<tr class="codeline" data-linenumber="10"><td class="num" id="LN10">10</td><td class="line"> <span class='comment'>* the Free Software Foundation; either version 2 of the License, or</span></td></tr>
+<tr class="codeline" data-linenumber="11"><td class="num" id="LN11">11</td><td class="line"> <span class='comment'>* (at your option) any later version.</span></td></tr>
+<tr class="codeline" data-linenumber="12"><td class="num" id="LN12">12</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="13"><td class="num" id="LN13">13</td><td class="line"> <span class='comment'>* This program is distributed in the hope that it will be useful,</span></td></tr>
+<tr class="codeline" data-linenumber="14"><td class="num" id="LN14">14</td><td class="line"> <span class='comment'>* but WITHOUT ANY WARRANTY; without even the implied warranty of</span></td></tr>
+<tr class="codeline" data-linenumber="15"><td class="num" id="LN15">15</td><td class="line"> <span class='comment'>* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></td></tr>
+<tr class="codeline" data-linenumber="16"><td class="num" id="LN16">16</td><td class="line"> <span class='comment'>* GNU General Public License for more details.</span></td></tr>
+<tr class="codeline" data-linenumber="17"><td class="num" id="LN17">17</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="18"><td class="num" id="LN18">18</td><td class="line"> <span class='comment'>* You should have received a copy of the GNU General Public License</span></td></tr>
+<tr class="codeline" data-linenumber="19"><td class="num" id="LN19">19</td><td class="line"> <span class='comment'>* along with this program; if not, write to the Free Software</span></td></tr>
+<tr class="codeline" data-linenumber="20"><td class="num" id="LN20">20</td><td class="line"> <span class='comment'>* Foundation, Inc., 51 Franklin St, Fifth Floor,</span></td></tr>
+<tr class="codeline" data-linenumber="21"><td class="num" id="LN21">21</td><td class="line"> <span class='comment'>* Boston, MA 02110-1301, USA.</span></td></tr>
+<tr class="codeline" data-linenumber="22"><td class="num" id="LN22">22</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="23"><td class="num" id="LN23">23</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="24"><td class="num" id="LN24">24</td><td class="line"><span class='comment'>/*</span></td></tr>
+<tr class="codeline" data-linenumber="25"><td class="num" id="LN25">25</td><td class="line"> <span class='comment'>* Modified by the pluma Team, 2005. See the AUTHORS file for a</span></td></tr>
+<tr class="codeline" data-linenumber="26"><td class="num" id="LN26">26</td><td class="line"> <span class='comment'>* list of people on the pluma Team.</span></td></tr>
+<tr class="codeline" data-linenumber="27"><td class="num" id="LN27">27</td><td class="line"> <span class='comment'>* See the ChangeLog files for a list of changes.</span></td></tr>
+<tr class="codeline" data-linenumber="28"><td class="num" id="LN28">28</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="29"><td class="num" id="LN29">29</td><td class="line"> <span class='comment'>* $Id$</span></td></tr>
+<tr class="codeline" data-linenumber="30"><td class="num" id="LN30">30</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="31"><td class="num" id="LN31">31</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="32"><td class="num" id="LN32">32</td><td class="line"><span class='directive'>#ifdef <span class='macro'>HAVE_CONFIG_H<span class='macro_popup'>1</span></span></span></td></tr>
+<tr class="codeline" data-linenumber="33"><td class="num" id="LN33">33</td><td class="line"><span class='directive'>#include &lt;config.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="34"><td class="num" id="LN34">34</td><td class="line"><span class='directive'>#endif</span></td></tr>
+<tr class="codeline" data-linenumber="35"><td class="num" id="LN35">35</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="36"><td class="num" id="LN36">36</td><td class="line"><span class='directive'>#include &lt;time.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="37"><td class="num" id="LN37">37</td><td class="line"><span class='directive'>#include &lt;sys/types.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="38"><td class="num" id="LN38">38</td><td class="line"><span class='directive'>#include &lt;string.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="39"><td class="num" id="LN39">39</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="40"><td class="num" id="LN40">40</td><td class="line"><span class='directive'>#include &lt;gdk/gdk.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="41"><td class="num" id="LN41">41</td><td class="line"><span class='directive'>#include &lt;glib/gi18n.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="42"><td class="num" id="LN42">42</td><td class="line"><span class='directive'>#include &lt;gio/gio.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="43"><td class="num" id="LN43">43</td><td class="line"><span class='directive'>#include &lt;gtk/gtk.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="44"><td class="num" id="LN44">44</td><td class="line"><span class='directive'>#include &lt;gtksourceview/gtksource.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="45"><td class="num" id="LN45">45</td><td class="line"><span class='directive'>#include &lt;libpeas/peas-extension-set.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="46"><td class="num" id="LN46">46</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="47"><td class="num" id="LN47">47</td><td class="line"><span class='directive'>#include "pluma-ui.h"</span></td></tr>
+<tr class="codeline" data-linenumber="48"><td class="num" id="LN48">48</td><td class="line"><span class='directive'>#include "pluma-window.h"</span></td></tr>
+<tr class="codeline" data-linenumber="49"><td class="num" id="LN49">49</td><td class="line"><span class='directive'>#include "pluma-window-private.h"</span></td></tr>
+<tr class="codeline" data-linenumber="50"><td class="num" id="LN50">50</td><td class="line"><span class='directive'>#include "pluma-app.h"</span></td></tr>
+<tr class="codeline" data-linenumber="51"><td class="num" id="LN51">51</td><td class="line"><span class='directive'>#include "pluma-notebook.h"</span></td></tr>
+<tr class="codeline" data-linenumber="52"><td class="num" id="LN52">52</td><td class="line"><span class='directive'>#include "pluma-statusbar.h"</span></td></tr>
+<tr class="codeline" data-linenumber="53"><td class="num" id="LN53">53</td><td class="line"><span class='directive'>#include "pluma-utils.h"</span></td></tr>
+<tr class="codeline" data-linenumber="54"><td class="num" id="LN54">54</td><td class="line"><span class='directive'>#include "pluma-commands.h"</span></td></tr>
+<tr class="codeline" data-linenumber="55"><td class="num" id="LN55">55</td><td class="line"><span class='directive'>#include "pluma-debug.h"</span></td></tr>
+<tr class="codeline" data-linenumber="56"><td class="num" id="LN56">56</td><td class="line"><span class='directive'>#include "pluma-language-manager.h"</span></td></tr>
+<tr class="codeline" data-linenumber="57"><td class="num" id="LN57">57</td><td class="line"><span class='directive'>#include "pluma-panel.h"</span></td></tr>
+<tr class="codeline" data-linenumber="58"><td class="num" id="LN58">58</td><td class="line"><span class='directive'>#include "pluma-documents-panel.h"</span></td></tr>
+<tr class="codeline" data-linenumber="59"><td class="num" id="LN59">59</td><td class="line"><span class='directive'>#include "pluma-plugins-engine.h"</span></td></tr>
+<tr class="codeline" data-linenumber="60"><td class="num" id="LN60">60</td><td class="line"><span class='directive'>#include "pluma-window-activatable.h"</span></td></tr>
+<tr class="codeline" data-linenumber="61"><td class="num" id="LN61">61</td><td class="line"><span class='directive'>#include "pluma-enum-types.h"</span></td></tr>
+<tr class="codeline" data-linenumber="62"><td class="num" id="LN62">62</td><td class="line"><span class='directive'>#include "pluma-dirs.h"</span></td></tr>
+<tr class="codeline" data-linenumber="63"><td class="num" id="LN63">63</td><td class="line"><span class='directive'>#include "pluma-status-combo-box.h"</span></td></tr>
+<tr class="codeline" data-linenumber="64"><td class="num" id="LN64">64</td><td class="line"><span class='directive'>#include "pluma-settings.h"</span></td></tr>
+<tr class="codeline" data-linenumber="65"><td class="num" id="LN65">65</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="66"><td class="num" id="LN66">66</td><td class="line"><span class='directive'>#define <span class='macro'>LANGUAGE_NONE<span class='macro_popup'>(const gchar *)"LangNone"</span></span> (const gchar *)"LangNone"</span></td></tr>
+<tr class="codeline" data-linenumber="67"><td class="num" id="LN67">67</td><td class="line"><span class='directive'>#define <span class='macro'>TAB_WIDTH_DATA<span class='macro_popup'>"PlumaWindowTabWidthData"</span></span> "PlumaWindowTabWidthData"</span></td></tr>
+<tr class="codeline" data-linenumber="68"><td class="num" id="LN68">68</td><td class="line"><span class='directive'>#define <span class='macro'>LANGUAGE_DATA<span class='macro_popup'>"PlumaWindowLanguageData"</span></span> "PlumaWindowLanguageData"</span></td></tr>
+<tr class="codeline" data-linenumber="69"><td class="num" id="LN69">69</td><td class="line"><span class='directive'>#define <span class='macro'>FULLSCREEN_ANIMATION_SPEED<span class='macro_popup'>4</span></span> 4</span></td></tr>
+<tr class="codeline" data-linenumber="70"><td class="num" id="LN70">70</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="71"><td class="num" id="LN71">71</td><td class="line"><span class='directive'>#define <span class='macro'>PLUMA_WINDOW_DEFAULT_WIDTH<span class='macro_popup'>650</span></span> 650</span></td></tr>
+<tr class="codeline" data-linenumber="72"><td class="num" id="LN72">72</td><td class="line"><span class='directive'>#define <span class='macro'>PLUMA_WINDOW_DEFAULT_HEIGHT<span class='macro_popup'>500</span></span> 500</span></td></tr>
+<tr class="codeline" data-linenumber="73"><td class="num" id="LN73">73</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="74"><td class="num" id="LN74">74</td><td class="line"><span class='comment'>/* Local variables */</span></td></tr>
+<tr class="codeline" data-linenumber="75"><td class="num" id="LN75">75</td><td class="line"><span class='keyword'>static</span> gboolean cansave = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="76"><td class="num" id="LN76">76</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="77"><td class="num" id="LN77">77</td><td class="line"><span class='comment'>/* Signals */</span></td></tr>
+<tr class="codeline" data-linenumber="78"><td class="num" id="LN78">78</td><td class="line"><span class='keyword'>enum</span></td></tr>
+<tr class="codeline" data-linenumber="79"><td class="num" id="LN79">79</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="80"><td class="num" id="LN80">80</td><td class="line"> TAB_ADDED,</td></tr>
+<tr class="codeline" data-linenumber="81"><td class="num" id="LN81">81</td><td class="line"> TAB_REMOVED,</td></tr>
+<tr class="codeline" data-linenumber="82"><td class="num" id="LN82">82</td><td class="line"> TABS_REORDERED,</td></tr>
+<tr class="codeline" data-linenumber="83"><td class="num" id="LN83">83</td><td class="line"> ACTIVE_TAB_CHANGED,</td></tr>
+<tr class="codeline" data-linenumber="84"><td class="num" id="LN84">84</td><td class="line"> ACTIVE_TAB_STATE_CHANGED,</td></tr>
+<tr class="codeline" data-linenumber="85"><td class="num" id="LN85">85</td><td class="line"> LAST_SIGNAL</td></tr>
+<tr class="codeline" data-linenumber="86"><td class="num" id="LN86">86</td><td class="line">};</td></tr>
+<tr class="codeline" data-linenumber="87"><td class="num" id="LN87">87</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="88"><td class="num" id="LN88">88</td><td class="line"><span class='keyword'>static</span> guint signals[LAST_SIGNAL] = { 0 };</td></tr>
+<tr class="codeline" data-linenumber="89"><td class="num" id="LN89">89</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="90"><td class="num" id="LN90">90</td><td class="line"><span class='keyword'>enum</span></td></tr>
+<tr class="codeline" data-linenumber="91"><td class="num" id="LN91">91</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="92"><td class="num" id="LN92">92</td><td class="line"> PROP_0,</td></tr>
+<tr class="codeline" data-linenumber="93"><td class="num" id="LN93">93</td><td class="line"> PROP_STATE</td></tr>
+<tr class="codeline" data-linenumber="94"><td class="num" id="LN94">94</td><td class="line">};</td></tr>
+<tr class="codeline" data-linenumber="95"><td class="num" id="LN95">95</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="96"><td class="num" id="LN96">96</td><td class="line"><span class='keyword'>enum</span></td></tr>
+<tr class="codeline" data-linenumber="97"><td class="num" id="LN97">97</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="98"><td class="num" id="LN98">98</td><td class="line"> TARGET_URI_LIST = 100</td></tr>
+<tr class="codeline" data-linenumber="99"><td class="num" id="LN99">99</td><td class="line">};</td></tr>
+<tr class="codeline" data-linenumber="100"><td class="num" id="LN100">100</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="101"><td class="num" id="LN101">101</td><td class="line"><span class='macro'>G_DEFINE_TYPE_WITH_PRIVATE (PlumaWindow, pluma_window, GTK_TYPE_WINDOW)<span class='macro_popup'>static void pluma_window_init (PlumaWindow *self); static void<br> pluma_window_class_init (PlumaWindowClass *klass); static GType<br> pluma_window_get_type_once (void); static gpointer pluma_window_parent_class<br> = ((void*)0); static gint PlumaWindow_private_offset; static<br> void pluma_window_class_intern_init (gpointer klass) { pluma_window_parent_class<br> = g_type_class_peek_parent (klass); if (PlumaWindow_private_offset<br> != 0) g_type_class_adjust_private_offset (klass, &amp;PlumaWindow_private_offset<br>); pluma_window_class_init ((PlumaWindowClass*) klass); } __attribute__<br> ((__unused__)) static inline gpointer pluma_window_get_instance_private<br> (PlumaWindow *self) { return (((gpointer) ((guint8*) (self) +<br> (glong) (PlumaWindow_private_offset)))); } GType pluma_window_get_type<br> (void) { static gsize static_g_define_type_id = 0; if ((__extension__<br> ({ _Static_assert (sizeof *(&amp;static_g_define_type_id) ==<br> sizeof (gpointer), "Expression evaluates to false"); (void) (<br>0 ? (gpointer) *(&amp;static_g_define_type_id) : ((void*)0));<br> (!(__extension__ ({ _Static_assert (sizeof *(&amp;static_g_define_type_id<br>) == sizeof (gpointer), "Expression evaluates to false"); __typeof__<br> (*(&amp;static_g_define_type_id)) gapg_temp_newval; __typeof__<br> ((&amp;static_g_define_type_id)) gapg_temp_atomic = (&amp;static_g_define_type_id<br>); __atomic_load (gapg_temp_atomic, &amp;gapg_temp_newval, 5)<br>; gapg_temp_newval; })) &amp;&amp; g_once_init_enter (&amp;static_g_define_type_id<br>)); }))) { GType g_define_type_id = pluma_window_get_type_once<br> (); (__extension__ ({ _Static_assert (sizeof *(&amp;static_g_define_type_id<br>) == sizeof (gpointer), "Expression evaluates to false"); 0 ?<br> (void) (*(&amp;static_g_define_type_id) = (g_define_type_id)<br>) : (void) 0; g_once_init_leave ((&amp;static_g_define_type_id<br>), (gsize) (g_define_type_id)); })); } return static_g_define_type_id<br>; } __attribute__ ((__noinline__)) static GType pluma_window_get_type_once<br> (void) { GType g_define_type_id = g_type_register_static_simple<br> ((gtk_window_get_type ()), g_intern_static_string ("PlumaWindow"<br>), sizeof (PlumaWindowClass), (GClassInitFunc)(void (*)(void)<br>) pluma_window_class_intern_init, sizeof (PlumaWindow), (GInstanceInitFunc<br>)(void (*)(void)) pluma_window_init, (GTypeFlags) 0); { {{ PlumaWindow_private_offset<br> = g_type_add_instance_private (g_define_type_id, sizeof (PlumaWindowPrivate<br>)); };} } return g_define_type_id; }</span></span></td></tr>
+<tr class="codeline" data-linenumber="102"><td class="num" id="LN102">102</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="103"><td class="num" id="LN103">103</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span> recent_manager_changed (GtkRecentManager *manager,</td></tr>
+<tr class="codeline" data-linenumber="104"><td class="num" id="LN104">104</td><td class="line"> PlumaWindow *window);</td></tr>
+<tr class="codeline" data-linenumber="105"><td class="num" id="LN105">105</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="106"><td class="num" id="LN106">106</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="107"><td class="num" id="LN107">107</td><td class="line">pluma_window_get_property (GObject *object,</td></tr>
+<tr class="codeline" data-linenumber="108"><td class="num" id="LN108">108</td><td class="line"> guint prop_id,</td></tr>
+<tr class="codeline" data-linenumber="109"><td class="num" id="LN109">109</td><td class="line"> GValue *value,</td></tr>
+<tr class="codeline" data-linenumber="110"><td class="num" id="LN110">110</td><td class="line"> GParamSpec *pspec)</td></tr>
+<tr class="codeline" data-linenumber="111"><td class="num" id="LN111">111</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="112"><td class="num" id="LN112">112</td><td class="line"> PlumaWindow *window = <span class='macro'>PLUMA_WINDOW (object)<span class='macro_popup'>((((PlumaWindow*) (void *) ((object)))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="113"><td class="num" id="LN113">113</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="114"><td class="num" id="LN114">114</td><td class="line"> <span class='keyword'>switch</span> (prop_id)</td></tr>
+<tr class="codeline" data-linenumber="115"><td class="num" id="LN115">115</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="116"><td class="num" id="LN116">116</td><td class="line"> <span class='keyword'>case</span> PROP_STATE:</td></tr>
+<tr class="codeline" data-linenumber="117"><td class="num" id="LN117">117</td><td class="line"> g_value_set_enum (value,</td></tr>
+<tr class="codeline" data-linenumber="118"><td class="num" id="LN118">118</td><td class="line"> pluma_window_get_state (window));</td></tr>
+<tr class="codeline" data-linenumber="119"><td class="num" id="LN119">119</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="120"><td class="num" id="LN120">120</td><td class="line"> <span class='keyword'>default</span>:</td></tr>
+<tr class="codeline" data-linenumber="121"><td class="num" id="LN121">121</td><td class="line"> <span class='macro'>G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec)<span class='macro_popup'>do { GObject *_glib__object = (GObject*) ((object)); GParamSpec<br> *_glib__pspec = (GParamSpec*) ((pspec)); guint _glib__property_id<br> = ((prop_id)); g_warning ("%s:%d: invalid %s id %u for \"%s\" of type '%s' in '%s'"<br>, "pluma-window.c", 121, ("property"), _glib__property_id, _glib__pspec<br>-&gt;name, g_type_name ((((((GTypeClass*) (((GTypeInstance*) (<br>_glib__pspec))-&gt;g_class))-&gt;g_type)))), (g_type_name (((<br>(((GTypeClass*) (((GTypeInstance*) (_glib__object))-&gt;g_class<br>))-&gt;g_type)))))); } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="122"><td class="num" id="LN122">122</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="123"><td class="num" id="LN123">123</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="124"><td class="num" id="LN124">124</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="125"><td class="num" id="LN125">125</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="126"><td class="num" id="LN126">126</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="127"><td class="num" id="LN127">127</td><td class="line">save_panes_state (PlumaWindow *window)</td></tr>
+<tr class="codeline" data-linenumber="128"><td class="num" id="LN128">128</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="129"><td class="num" id="LN129">129</td><td class="line"> gint pane_page;</td></tr>
+<tr class="codeline" data-linenumber="130"><td class="num" id="LN130">130</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="131"><td class="num" id="LN131">131</td><td class="line"> pluma_debug (<span class='macro'>DEBUG_WINDOW<span class='macro_popup'>PLUMA_DEBUG_WINDOW, "pluma-window.c", 131, ((const char*) (__func__<br>))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="132"><td class="num" id="LN132">132</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="133"><td class="num" id="LN133">133</td><td class="line"> g_settings_set (window-&gt;priv-&gt;editor_settings, <span class='macro'>PLUMA_SETTINGS_WINDOW_SIZE<span class='macro_popup'>"size"</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="134"><td class="num" id="LN134">134</td><td class="line"> <span class='string_literal'>"(ii)"</span>, window-&gt;priv-&gt;width, window-&gt;priv-&gt;height);</td></tr>
+<tr class="codeline" data-linenumber="135"><td class="num" id="LN135">135</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="136"><td class="num" id="LN136">136</td><td class="line"> g_settings_set_int (window-&gt;priv-&gt;editor_settings, <span class='macro'>PLUMA_SETTINGS_WINDOW_STATE<span class='macro_popup'>"state"</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="137"><td class="num" id="LN137">137</td><td class="line"> window-&gt;priv-&gt;window_state);</td></tr>
+<tr class="codeline" data-linenumber="138"><td class="num" id="LN138">138</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="139"><td class="num" id="LN139">139</td><td class="line"> <span class='keyword'>if</span> (window-&gt;priv-&gt;side_panel_size &gt; 0)</td></tr>
+<tr class="codeline" data-linenumber="140"><td class="num" id="LN140">140</td><td class="line"> g_settings_set_int (window-&gt;priv-&gt;editor_settings,</td></tr>
+<tr class="codeline" data-linenumber="141"><td class="num" id="LN141">141</td><td class="line"> <span class='macro'>PLUMA_SETTINGS_SIDE_PANEL_SIZE<span class='macro_popup'>"side-panel-size"</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="142"><td class="num" id="LN142">142</td><td class="line"> window-&gt;priv-&gt;side_panel_size);</td></tr>
+<tr class="codeline" data-linenumber="143"><td class="num" id="LN143">143</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="144"><td class="num" id="LN144">144</td><td class="line"> pane_page = _pluma_panel_get_active_item_id (<span class='macro'>PLUMA_PANEL (window-&gt;priv-&gt;side_panel)<span class='macro_popup'>((((PlumaPanel*) (void *) ((window-&gt;priv-&gt;side_panel)))<br>))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="145"><td class="num" id="LN145">145</td><td class="line"> <span class='keyword'>if</span> (pane_page != 0)</td></tr>
+<tr class="codeline" data-linenumber="146"><td class="num" id="LN146">146</td><td class="line"> g_settings_set_int (window-&gt;priv-&gt;editor_settings,</td></tr>
+<tr class="codeline" data-linenumber="147"><td class="num" id="LN147">147</td><td class="line"> <span class='macro'>PLUMA_SETTINGS_SIDE_PANEL_ACTIVE_PAGE<span class='macro_popup'>"side-panel-active-page"</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="148"><td class="num" id="LN148">148</td><td class="line"> pane_page);</td></tr>
+<tr class="codeline" data-linenumber="149"><td class="num" id="LN149">149</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="150"><td class="num" id="LN150">150</td><td class="line"> <span class='keyword'>if</span> (window-&gt;priv-&gt;bottom_panel_size &gt; 0)</td></tr>
+<tr class="codeline" data-linenumber="151"><td class="num" id="LN151">151</td><td class="line"> g_settings_set_int (window-&gt;priv-&gt;editor_settings,</td></tr>
+<tr class="codeline" data-linenumber="152"><td class="num" id="LN152">152</td><td class="line"> <span class='macro'>PLUMA_SETTINGS_BOTTOM_PANEL_SIZE<span class='macro_popup'>"bottom-panel-size"</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="153"><td class="num" id="LN153">153</td><td class="line"> window-&gt;priv-&gt;bottom_panel_size);</td></tr>
+<tr class="codeline" data-linenumber="154"><td class="num" id="LN154">154</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="155"><td class="num" id="LN155">155</td><td class="line"> pane_page = _pluma_panel_get_active_item_id (<span class='macro'>PLUMA_PANEL (window-&gt;priv-&gt;bottom_panel)<span class='macro_popup'>((((PlumaPanel*) (void *) ((window-&gt;priv-&gt;bottom_panel)<br>))))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="156"><td class="num" id="LN156">156</td><td class="line"> <span class='keyword'>if</span> (pane_page != 0)</td></tr>
+<tr class="codeline" data-linenumber="157"><td class="num" id="LN157">157</td><td class="line"> g_settings_set_int (window-&gt;priv-&gt;editor_settings,</td></tr>
+<tr class="codeline" data-linenumber="158"><td class="num" id="LN158">158</td><td class="line"> <span class='macro'>PLUMA_SETTINGS_BOTTOM_PANEL_ACTIVE_PAGE<span class='macro_popup'>"bottom-panel-active-page"</span></span>, pane_page);</td></tr>
+<tr class="codeline" data-linenumber="159"><td class="num" id="LN159">159</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="160"><td class="num" id="LN160">160</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="161"><td class="num" id="LN161">161</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="162"><td class="num" id="LN162">162</td><td class="line">pluma_window_dispose (GObject *object)</td></tr>
+<tr class="codeline" data-linenumber="163"><td class="num" id="LN163">163</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="164"><td class="num" id="LN164">164</td><td class="line"> PlumaWindow *window;</td></tr>
+<tr class="codeline" data-linenumber="165"><td class="num" id="LN165">165</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="166"><td class="num" id="LN166">166</td><td class="line"> pluma_debug (<span class='macro'>DEBUG_WINDOW<span class='macro_popup'>PLUMA_DEBUG_WINDOW, "pluma-window.c", 166, ((const char*) (__func__<br>))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="167"><td class="num" id="LN167">167</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="168"><td class="num" id="LN168">168</td><td class="line"> window = <span class='macro'>PLUMA_WINDOW (object)<span class='macro_popup'>((((PlumaWindow*) (void *) ((object)))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="169"><td class="num" id="LN169">169</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="170"><td class="num" id="LN170">170</td><td class="line"> <span class='comment'>/* Stop tracking removal of panes otherwise we always</span></td></tr>
+<tr class="codeline" data-linenumber="171"><td class="num" id="LN171">171</td><td class="line"> <span class='comment'>* end up with thinking we had no pane active, since they</span></td></tr>
+<tr class="codeline" data-linenumber="172"><td class="num" id="LN172">172</td><td class="line"> <span class='comment'>* should all be removed below */</span></td></tr>
+<tr class="codeline" data-linenumber="173"><td class="num" id="LN173">173</td><td class="line"><span class='directive'>#if <span class='macro'>GLIB_CHECK_VERSION(2,62,0)<span class='macro_popup'>(2 &gt; (2) || (2 == (2) &amp;&amp; 76 &gt; (62)) || (2 == (2<br>) &amp;&amp; 76 == (62) &amp;&amp; 3 &gt;= (0)))</span></span></span></td></tr>
+<tr class="codeline" data-linenumber="174"><td class="num" id="LN174">174</td><td class="line"> <span class='macro'>g_clear_signal_handler (&amp;window-&gt;priv-&gt;bottom_panel_item_removed_handler_id,<span class='macro_popup'>do { gpointer const _instance = (window-&gt;priv-&gt;bottom_panel<br>); gulong *const _handler_id_ptr = (&amp;window-&gt;priv-&gt;<br>bottom_panel_item_removed_handler_id); const gulong _handler_id<br> = *_handler_id_ptr; if (_handler_id &gt; 0) { *_handler_id_ptr<br> = 0; g_signal_handler_disconnect (_instance, _handler_id); }<br> } while (0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="175"><td class="num" id="LN175">175</td><td class="line"> <span class='macro'>window-&gt;priv-&gt;bottom_panel)<span class='macro_popup'>do { gpointer const _instance = (window-&gt;priv-&gt;bottom_panel<br>); gulong *const _handler_id_ptr = (&amp;window-&gt;priv-&gt;<br>bottom_panel_item_removed_handler_id); const gulong _handler_id<br> = *_handler_id_ptr; if (_handler_id &gt; 0) { *_handler_id_ptr<br> = 0; g_signal_handler_disconnect (_instance, _handler_id); }<br> } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="176"><td class="num" id="LN176">176</td><td class="line"><span class='directive'>#else</span></td></tr>
+<tr class="codeline" data-linenumber="177"><td class="num" id="LN177">177</td><td class="line"> <span class='keyword'>if</span> (window-&gt;priv-&gt;bottom_panel_item_removed_handler_id != 0)</td></tr>
+<tr class="codeline" data-linenumber="178"><td class="num" id="LN178">178</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="179"><td class="num" id="LN179">179</td><td class="line"> g_signal_handler_disconnect (window-&gt;priv-&gt;bottom_panel,</td></tr>
+<tr class="codeline" data-linenumber="180"><td class="num" id="LN180">180</td><td class="line"> window-&gt;priv-&gt;bottom_panel_item_removed_handler_id);</td></tr>
+<tr class="codeline" data-linenumber="181"><td class="num" id="LN181">181</td><td class="line"> window-&gt;priv-&gt;bottom_panel_item_removed_handler_id = 0;</td></tr>
+<tr class="codeline" data-linenumber="182"><td class="num" id="LN182">182</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="183"><td class="num" id="LN183">183</td><td class="line"><span class='directive'>#endif</span></td></tr>
+<tr class="codeline" data-linenumber="184"><td class="num" id="LN184">184</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="185"><td class="num" id="LN185">185</td><td class="line"> <span class='comment'>/* First of all, force collection so that plugins</span></td></tr>
+<tr class="codeline" data-linenumber="186"><td class="num" id="LN186">186</td><td class="line"> <span class='comment'>* really drop some of the references.</span></td></tr>
+<tr class="codeline" data-linenumber="187"><td class="num" id="LN187">187</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="188"><td class="num" id="LN188">188</td><td class="line"> peas_engine_garbage_collect (<span class='macro'>PEAS_ENGINE (pluma_plugins_engine_get_default ())<span class='macro_popup'>((((PeasEngine*) (void *) ((pluma_plugins_engine_get_default (<br>))))))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="189"><td class="num" id="LN189">189</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="190"><td class="num" id="LN190">190</td><td class="line"> <span class='comment'>/* save the panes position and make sure to deactivate plugins</span></td></tr>
+<tr class="codeline" data-linenumber="191"><td class="num" id="LN191">191</td><td class="line"> <span class='comment'>* for this window, but only once */</span></td></tr>
+<tr class="codeline" data-linenumber="192"><td class="num" id="LN192">192</td><td class="line"> <span class='keyword'>if</span> (!window-&gt;priv-&gt;dispose_has_run)</td></tr>
+<tr class="codeline" data-linenumber="193"><td class="num" id="LN193">193</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="194"><td class="num" id="LN194">194</td><td class="line"> save_panes_state (window);</td></tr>
+<tr class="codeline" data-linenumber="195"><td class="num" id="LN195">195</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="196"><td class="num" id="LN196">196</td><td class="line"> <span class='comment'>/* Note that unreffing the extensions will automatically remove</span></td></tr>
+<tr class="codeline" data-linenumber="197"><td class="num" id="LN197">197</td><td class="line"> <span class='comment'>all extensions which in turn will deactivate the extension */</span></td></tr>
+<tr class="codeline" data-linenumber="198"><td class="num" id="LN198">198</td><td class="line"> g_object_unref (window-&gt;priv-&gt;extensions);</td></tr>
+<tr class="codeline" data-linenumber="199"><td class="num" id="LN199">199</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="200"><td class="num" id="LN200">200</td><td class="line"> peas_engine_garbage_collect (<span class='macro'>PEAS_ENGINE (pluma_plugins_engine_get_default ())<span class='macro_popup'>((((PeasEngine*) (void *) ((pluma_plugins_engine_get_default (<br>))))))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="201"><td class="num" id="LN201">201</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="202"><td class="num" id="LN202">202</td><td class="line"> window-&gt;priv-&gt;dispose_has_run = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="203"><td class="num" id="LN203">203</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="204"><td class="num" id="LN204">204</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="205"><td class="num" id="LN205">205</td><td class="line"> <span class='keyword'>if</span> (window-&gt;priv-&gt;fullscreen_animation_timeout_id != 0)</td></tr>
+<tr class="codeline" data-linenumber="206"><td class="num" id="LN206">206</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="207"><td class="num" id="LN207">207</td><td class="line"> g_source_remove (window-&gt;priv-&gt;fullscreen_animation_timeout_id);</td></tr>
+<tr class="codeline" data-linenumber="208"><td class="num" id="LN208">208</td><td class="line"> window-&gt;priv-&gt;fullscreen_animation_timeout_id = 0;</td></tr>
+<tr class="codeline" data-linenumber="209"><td class="num" id="LN209">209</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="210"><td class="num" id="LN210">210</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="211"><td class="num" id="LN211">211</td><td class="line"> <span class='keyword'>if</span> (window-&gt;priv-&gt;fullscreen_controls != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="212"><td class="num" id="LN212">212</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="213"><td class="num" id="LN213">213</td><td class="line"> gtk_widget_destroy (window-&gt;priv-&gt;fullscreen_controls);</td></tr>
+<tr class="codeline" data-linenumber="214"><td class="num" id="LN214">214</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="215"><td class="num" id="LN215">215</td><td class="line"> window-&gt;priv-&gt;fullscreen_controls = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="216"><td class="num" id="LN216">216</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="217"><td class="num" id="LN217">217</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="218"><td class="num" id="LN218">218</td><td class="line"> <span class='keyword'>if</span> (window-&gt;priv-&gt;recents_handler_id != 0)</td></tr>
+<tr class="codeline" data-linenumber="219"><td class="num" id="LN219">219</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="220"><td class="num" id="LN220">220</td><td class="line"> GtkRecentManager *recent_manager;</td></tr>
+<tr class="codeline" data-linenumber="221"><td class="num" id="LN221">221</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="222"><td class="num" id="LN222">222</td><td class="line"> recent_manager = gtk_recent_manager_get_default ();</td></tr>
+<tr class="codeline" data-linenumber="223"><td class="num" id="LN223">223</td><td class="line"><span class='directive'>#if <span class='macro'>GLIB_CHECK_VERSION(2,62,0)<span class='macro_popup'>(2 &gt; (2) || (2 == (2) &amp;&amp; 76 &gt; (62)) || (2 == (2<br>) &amp;&amp; 76 == (62) &amp;&amp; 3 &gt;= (0)))</span></span></span></td></tr>
+<tr class="codeline" data-linenumber="224"><td class="num" id="LN224">224</td><td class="line"> <span class='macro'>g_clear_signal_handler (&amp;window-&gt;priv-&gt;recents_handler_id,<span class='macro_popup'>do { gpointer const _instance = (recent_manager); gulong *const<br> _handler_id_ptr = (&amp;window-&gt;priv-&gt;recents_handler_id<br>); const gulong _handler_id = *_handler_id_ptr; if (_handler_id<br> &gt; 0) { *_handler_id_ptr = 0; g_signal_handler_disconnect (<br>_instance, _handler_id); } } while (0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="225"><td class="num" id="LN225">225</td><td class="line"> <span class='macro'>recent_manager)<span class='macro_popup'>do { gpointer const _instance = (recent_manager); gulong *const<br> _handler_id_ptr = (&amp;window-&gt;priv-&gt;recents_handler_id<br>); const gulong _handler_id = *_handler_id_ptr; if (_handler_id<br> &gt; 0) { *_handler_id_ptr = 0; g_signal_handler_disconnect (<br>_instance, _handler_id); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="226"><td class="num" id="LN226">226</td><td class="line"><span class='directive'>#else</span></td></tr>
+<tr class="codeline" data-linenumber="227"><td class="num" id="LN227">227</td><td class="line"> g_signal_handler_disconnect (recent_manager,</td></tr>
+<tr class="codeline" data-linenumber="228"><td class="num" id="LN228">228</td><td class="line"> window-&gt;priv-&gt;recents_handler_id);</td></tr>
+<tr class="codeline" data-linenumber="229"><td class="num" id="LN229">229</td><td class="line"> window-&gt;priv-&gt;recents_handler_id = 0;</td></tr>
+<tr class="codeline" data-linenumber="230"><td class="num" id="LN230">230</td><td class="line"><span class='directive'>#endif</span></td></tr>
+<tr class="codeline" data-linenumber="231"><td class="num" id="LN231">231</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="232"><td class="num" id="LN232">232</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="233"><td class="num" id="LN233">233</td><td class="line"> <span class='keyword'>if</span> (window-&gt;priv-&gt;manager != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="234"><td class="num" id="LN234">234</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="235"><td class="num" id="LN235">235</td><td class="line"> g_object_unref (window-&gt;priv-&gt;manager);</td></tr>
+<tr class="codeline" data-linenumber="236"><td class="num" id="LN236">236</td><td class="line"> window-&gt;priv-&gt;manager = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="237"><td class="num" id="LN237">237</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="238"><td class="num" id="LN238">238</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="239"><td class="num" id="LN239">239</td><td class="line"> <span class='keyword'>if</span> (window-&gt;priv-&gt;message_bus != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="240"><td class="num" id="LN240">240</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="241"><td class="num" id="LN241">241</td><td class="line"> g_object_unref (window-&gt;priv-&gt;message_bus);</td></tr>
+<tr class="codeline" data-linenumber="242"><td class="num" id="LN242">242</td><td class="line"> window-&gt;priv-&gt;message_bus = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="243"><td class="num" id="LN243">243</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="244"><td class="num" id="LN244">244</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="245"><td class="num" id="LN245">245</td><td class="line"> <span class='keyword'>if</span> (window-&gt;priv-&gt;window_group != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="246"><td class="num" id="LN246">246</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="247"><td class="num" id="LN247">247</td><td class="line"> g_object_unref (window-&gt;priv-&gt;window_group);</td></tr>
+<tr class="codeline" data-linenumber="248"><td class="num" id="LN248">248</td><td class="line"> window-&gt;priv-&gt;window_group = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="249"><td class="num" id="LN249">249</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="250"><td class="num" id="LN250">250</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="251"><td class="num" id="LN251">251</td><td class="line"> <span class='comment'>/* We must free the settings after saving the panels */</span></td></tr>
+<tr class="codeline" data-linenumber="252"><td class="num" id="LN252">252</td><td class="line"> <span class='macro'>g_clear_object (&amp;window-&gt;priv-&gt;editor_settings)<span class='macro_popup'>do { _Static_assert (sizeof *((&amp;window-&gt;priv-&gt;editor_settings<br>)) == sizeof (gpointer), "Expression evaluates to false"); __typeof__<br> (((&amp;window-&gt;priv-&gt;editor_settings))) _pp = ((&amp;<br>window-&gt;priv-&gt;editor_settings)); __typeof__ (*((&amp;window<br>-&gt;priv-&gt;editor_settings))) _ptr = *_pp; *_pp = ((void*)<br>0); if (_ptr) (g_object_unref) (_ptr); } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="253"><td class="num" id="LN253">253</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="254"><td class="num" id="LN254">254</td><td class="line"> <span class='comment'>/* Now that there have broken some reference loops,</span></td></tr>
+<tr class="codeline" data-linenumber="255"><td class="num" id="LN255">255</td><td class="line"> <span class='comment'>* force collection again.</span></td></tr>
+<tr class="codeline" data-linenumber="256"><td class="num" id="LN256">256</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="257"><td class="num" id="LN257">257</td><td class="line"> peas_engine_garbage_collect (<span class='macro'>PEAS_ENGINE (pluma_plugins_engine_get_default ())<span class='macro_popup'>((((PeasEngine*) (void *) ((pluma_plugins_engine_get_default (<br>))))))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="258"><td class="num" id="LN258">258</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="259"><td class="num" id="LN259">259</td><td class="line"> <span class='macro'>G_OBJECT_CLASS (pluma_window_parent_class)<span class='macro_popup'>((((GObjectClass*) (void *) ((pluma_window_parent_class)))))</span></span>-&gt;dispose (object);</td></tr>
+<tr class="codeline" data-linenumber="260"><td class="num" id="LN260">260</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="261"><td class="num" id="LN261">261</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="262"><td class="num" id="LN262">262</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="263"><td class="num" id="LN263">263</td><td class="line">pluma_window_finalize (GObject *object)</td></tr>
+<tr class="codeline" data-linenumber="264"><td class="num" id="LN264">264</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="265"><td class="num" id="LN265">265</td><td class="line"> PlumaWindow *window;</td></tr>
+<tr class="codeline" data-linenumber="266"><td class="num" id="LN266">266</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="267"><td class="num" id="LN267">267</td><td class="line"> pluma_debug (<span class='macro'>DEBUG_WINDOW<span class='macro_popup'>PLUMA_DEBUG_WINDOW, "pluma-window.c", 267, ((const char*) (__func__<br>))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="268"><td class="num" id="LN268">268</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="269"><td class="num" id="LN269">269</td><td class="line"> window = <span class='macro'>PLUMA_WINDOW (object)<span class='macro_popup'>((((PlumaWindow*) (void *) ((object)))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="270"><td class="num" id="LN270">270</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="271"><td class="num" id="LN271">271</td><td class="line"> <span class='keyword'>if</span> (window-&gt;priv-&gt;default_location != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="272"><td class="num" id="LN272">272</td><td class="line"> g_object_unref (window-&gt;priv-&gt;default_location);</td></tr>
+<tr class="codeline" data-linenumber="273"><td class="num" id="LN273">273</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="274"><td class="num" id="LN274">274</td><td class="line"> <span class='macro'>G_OBJECT_CLASS (pluma_window_parent_class)<span class='macro_popup'>((((GObjectClass*) (void *) ((pluma_window_parent_class)))))</span></span>-&gt;finalize (object);</td></tr>
+<tr class="codeline" data-linenumber="275"><td class="num" id="LN275">275</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="276"><td class="num" id="LN276">276</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="277"><td class="num" id="LN277">277</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="278"><td class="num" id="LN278">278</td><td class="line">pluma_window_window_state_event (GtkWidget *widget,</td></tr>
+<tr class="codeline" data-linenumber="279"><td class="num" id="LN279">279</td><td class="line"> GdkEventWindowState *event)</td></tr>
+<tr class="codeline" data-linenumber="280"><td class="num" id="LN280">280</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="281"><td class="num" id="LN281">281</td><td class="line"> PlumaWindow *window = <span class='macro'>PLUMA_WINDOW (widget)<span class='macro_popup'>((((PlumaWindow*) (void *) ((widget)))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="282"><td class="num" id="LN282">282</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="283"><td class="num" id="LN283">283</td><td class="line"> window-&gt;priv-&gt;window_state = event-&gt;new_window_state;</td></tr>
+<tr class="codeline" data-linenumber="284"><td class="num" id="LN284">284</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="285"><td class="num" id="LN285">285</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>GTK_WIDGET_CLASS (pluma_window_parent_class)<span class='macro_popup'>((((GtkWidgetClass*) (void *) ((pluma_window_parent_class))))<br>)</span></span>-&gt;window_state_event (widget, event);</td></tr>
+<tr class="codeline" data-linenumber="286"><td class="num" id="LN286">286</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="287"><td class="num" id="LN287">287</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="288"><td class="num" id="LN288">288</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="289"><td class="num" id="LN289">289</td><td class="line">pluma_window_configure_event (GtkWidget *widget,</td></tr>
+<tr class="codeline" data-linenumber="290"><td class="num" id="LN290">290</td><td class="line"> GdkEventConfigure *event)</td></tr>
+<tr class="codeline" data-linenumber="291"><td class="num" id="LN291">291</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="292"><td class="num" id="LN292">292</td><td class="line"> PlumaWindow *window = <span class='macro'>PLUMA_WINDOW (widget)<span class='macro_popup'>((((PlumaWindow*) (void *) ((widget)))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="293"><td class="num" id="LN293">293</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="294"><td class="num" id="LN294">294</td><td class="line"> window-&gt;priv-&gt;width = event-&gt;width;</td></tr>
+<tr class="codeline" data-linenumber="295"><td class="num" id="LN295">295</td><td class="line"> window-&gt;priv-&gt;height = event-&gt;height;</td></tr>
+<tr class="codeline" data-linenumber="296"><td class="num" id="LN296">296</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="297"><td class="num" id="LN297">297</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>GTK_WIDGET_CLASS (pluma_window_parent_class)<span class='macro_popup'>((((GtkWidgetClass*) (void *) ((pluma_window_parent_class))))<br>)</span></span>-&gt;configure_event (widget, event);</td></tr>
+<tr class="codeline" data-linenumber="298"><td class="num" id="LN298">298</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="299"><td class="num" id="LN299">299</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="300"><td class="num" id="LN300">300</td><td class="line"><span class='comment'>/*</span></td></tr>
+<tr class="codeline" data-linenumber="301"><td class="num" id="LN301">301</td><td class="line"> <span class='comment'>* GtkWindow catches keybindings for the menu items _before_ passing them to</span></td></tr>
+<tr class="codeline" data-linenumber="302"><td class="num" id="LN302">302</td><td class="line"> <span class='comment'>* the focused widget. This is unfortunate and means that pressing ctrl+V</span></td></tr>
+<tr class="codeline" data-linenumber="303"><td class="num" id="LN303">303</td><td class="line"> <span class='comment'>* in an entry on a panel ends up pasting text in the TextView.</span></td></tr>
+<tr class="codeline" data-linenumber="304"><td class="num" id="LN304">304</td><td class="line"> <span class='comment'>* Here we override GtkWindow's handler to do the same things that it</span></td></tr>
+<tr class="codeline" data-linenumber="305"><td class="num" id="LN305">305</td><td class="line"> <span class='comment'>* does, but in the opposite order and then we chain up to the grand</span></td></tr>
+<tr class="codeline" data-linenumber="306"><td class="num" id="LN306">306</td><td class="line"> <span class='comment'>* parent handler, skipping gtk_window_key_press_event.</span></td></tr>
+<tr class="codeline" data-linenumber="307"><td class="num" id="LN307">307</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="308"><td class="num" id="LN308">308</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="309"><td class="num" id="LN309">309</td><td class="line">pluma_window_key_press_event (GtkWidget *widget,</td></tr>
+<tr class="codeline" data-linenumber="310"><td class="num" id="LN310">310</td><td class="line"> GdkEventKey *event)</td></tr>
+<tr class="codeline" data-linenumber="311"><td class="num" id="LN311">311</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="312"><td class="num" id="LN312">312</td><td class="line"> <span class='keyword'>static</span> gpointer grand_parent_class = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="313"><td class="num" id="LN313">313</td><td class="line"> GtkWindow *window = <span class='macro'>GTK_WINDOW (widget)<span class='macro_popup'>((((GtkWindow*) (void *) ((widget)))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="314"><td class="num" id="LN314">314</td><td class="line"> gboolean handled = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="315"><td class="num" id="LN315">315</td><td class="line"> <span class='comment'>/* FIXME: avoid making a new gsettings variable here */</span></td></tr>
+<tr class="codeline" data-linenumber="316"><td class="num" id="LN316">316</td><td class="line"> GSettings *settings = g_settings_new (<span class='macro'>PLUMA_SCHEMA_ID<span class='macro_popup'>"org.mate.pluma"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="317"><td class="num" id="LN317">317</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="318"><td class="num" id="LN318">318</td><td class="line"> <span class='keyword'>if</span> (event-&gt;state &amp; GDK_CONTROL_MASK)</td></tr>
+<tr class="codeline" data-linenumber="319"><td class="num" id="LN319">319</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="320"><td class="num" id="LN320">320</td><td class="line"> gchar *font;</td></tr>
+<tr class="codeline" data-linenumber="321"><td class="num" id="LN321">321</td><td class="line"> gchar *tempsize;</td></tr>
+<tr class="codeline" data-linenumber="322"><td class="num" id="LN322">322</td><td class="line"> gint nsize;</td></tr>
+<tr class="codeline" data-linenumber="323"><td class="num" id="LN323">323</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="324"><td class="num" id="LN324">324</td><td class="line"> font = g_settings_get_string (settings, <span class='macro'>PLUMA_SETTINGS_EDITOR_FONT<span class='macro_popup'>"editor-font"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="325"><td class="num" id="LN325">325</td><td class="line"> tempsize = <span class='macro'>g_strdup (font)<span class='macro_popup'>g_strdup_inline (font)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="326"><td class="num" id="LN326">326</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="327"><td class="num" id="LN327">327</td><td class="line"> g_strreverse (tempsize);</td></tr>
+<tr class="codeline" data-linenumber="328"><td class="num" id="LN328">328</td><td class="line"> g_strcanon (tempsize, <span class='string_literal'>"1234567890"</span>, '\0');</td></tr>
+<tr class="codeline" data-linenumber="329"><td class="num" id="LN329">329</td><td class="line"> g_strreverse (tempsize);</td></tr>
+<tr class="codeline" data-linenumber="330"><td class="num" id="LN330">330</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="331"><td class="num" id="LN331">331</td><td class="line"> gchar tempfont [strlen (font) + 1];</td></tr>
+<tr class="codeline" data-linenumber="332"><td class="num" id="LN332">332</td><td class="line"> <span class="mrange">strcpy</span> (tempfont, font);</td></tr>
+<tr><td class="num"></td><td class="line"><div id="EndPath" class="msg msgEvent" style="margin-left:9ex; max-width:52em">Call to function 'strcpy' is insecure as it does not provide bounding of the memory buffer. Replace unbounded copy functions with analogous functions that support length arguments such as 'strlcpy'. CWE-119</div></td></tr>
+<tr class="codeline" data-linenumber="333"><td class="num" id="LN333">333</td><td class="line"> tempfont [strlen (font) - strlen (tempsize)] = 0;</td></tr>
+<tr class="codeline" data-linenumber="334"><td class="num" id="LN334">334</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="335"><td class="num" id="LN335">335</td><td class="line"> sscanf (tempsize, <span class='string_literal'>"%d"</span>, &amp;nsize);</td></tr>
+<tr class="codeline" data-linenumber="336"><td class="num" id="LN336">336</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="337"><td class="num" id="LN337">337</td><td class="line"> <span class='keyword'>if</span> ((event-&gt;keyval == <span class='macro'>GDK_KEY_plus<span class='macro_popup'>0x02b</span></span>) || (event-&gt;keyval == <span class='macro'>GDK_KEY_KP_Add<span class='macro_popup'>0xffab</span></span>))</td></tr>
+<tr class="codeline" data-linenumber="338"><td class="num" id="LN338">338</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="339"><td class="num" id="LN339">339</td><td class="line"> nsize = nsize + 1;</td></tr>
+<tr class="codeline" data-linenumber="340"><td class="num" id="LN340">340</td><td class="line"> sprintf (tempsize, <span class='string_literal'>"%d"</span>, nsize);</td></tr>
+<tr class="codeline" data-linenumber="341"><td class="num" id="LN341">341</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="342"><td class="num" id="LN342">342</td><td class="line"> <span class='keyword'>if</span> (!g_settings_get_boolean (settings, <span class='macro'>PLUMA_SETTINGS_USE_DEFAULT_FONT<span class='macro_popup'>"use-default-font"</span></span>) &amp;&amp; (nsize &lt; 73))</td></tr>
+<tr class="codeline" data-linenumber="343"><td class="num" id="LN343">343</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="344"><td class="num" id="LN344">344</td><td class="line"> gchar *tmp = g_strconcat (tempfont, tempsize, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="345"><td class="num" id="LN345">345</td><td class="line"> g_settings_set_string (settings, <span class='macro'>PLUMA_SETTINGS_EDITOR_FONT<span class='macro_popup'>"editor-font"</span></span>, tmp);</td></tr>
+<tr class="codeline" data-linenumber="346"><td class="num" id="LN346">346</td><td class="line"> g_free (tmp);</td></tr>
+<tr class="codeline" data-linenumber="347"><td class="num" id="LN347">347</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="348"><td class="num" id="LN348">348</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="349"><td class="num" id="LN349">349</td><td class="line"> <span class='keyword'>else</span> <span class='keyword'>if</span> ((event-&gt;keyval == <span class='macro'>GDK_KEY_minus<span class='macro_popup'>0x02d</span></span>) || (event-&gt;keyval == <span class='macro'>GDK_KEY_KP_Subtract<span class='macro_popup'>0xffad</span></span>))</td></tr>
+<tr class="codeline" data-linenumber="350"><td class="num" id="LN350">350</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="351"><td class="num" id="LN351">351</td><td class="line"> nsize = nsize - 1;</td></tr>
+<tr class="codeline" data-linenumber="352"><td class="num" id="LN352">352</td><td class="line"> sprintf (tempsize, <span class='string_literal'>"%d"</span>, nsize);</td></tr>
+<tr class="codeline" data-linenumber="353"><td class="num" id="LN353">353</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="354"><td class="num" id="LN354">354</td><td class="line"> <span class='keyword'>if</span> (!g_settings_get_boolean (settings, <span class='macro'>PLUMA_SETTINGS_USE_DEFAULT_FONT<span class='macro_popup'>"use-default-font"</span></span>) &amp;&amp; (nsize &gt; 5))</td></tr>
+<tr class="codeline" data-linenumber="355"><td class="num" id="LN355">355</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="356"><td class="num" id="LN356">356</td><td class="line"> gchar *tmp = g_strconcat (tempfont, tempsize, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="357"><td class="num" id="LN357">357</td><td class="line"> g_settings_set_string (settings, <span class='macro'>PLUMA_SETTINGS_EDITOR_FONT<span class='macro_popup'>"editor-font"</span></span>, tmp);</td></tr>
+<tr class="codeline" data-linenumber="358"><td class="num" id="LN358">358</td><td class="line"> g_free (tmp);</td></tr>
+<tr class="codeline" data-linenumber="359"><td class="num" id="LN359">359</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="360"><td class="num" id="LN360">360</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="361"><td class="num" id="LN361">361</td><td class="line"> <span class='keyword'>else</span> <span class='keyword'>if</span> (event-&gt;keyval == <span class='macro'>GDK_KEY_y<span class='macro_popup'>0x079</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="362"><td class="num" id="LN362">362</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="363"><td class="num" id="LN363">363</td><td class="line"> g_settings_set_boolean (settings, <span class='macro'>PLUMA_SETTINGS_DISPLAY_LINE_NUMBERS<span class='macro_popup'>"display-line-numbers"</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="364"><td class="num" id="LN364">364</td><td class="line"> !g_settings_get_boolean (settings, <span class='macro'>PLUMA_SETTINGS_DISPLAY_LINE_NUMBERS<span class='macro_popup'>"display-line-numbers"</span></span>));</td></tr>
+<tr class="codeline" data-linenumber="365"><td class="num" id="LN365">365</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="366"><td class="num" id="LN366">366</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="367"><td class="num" id="LN367">367</td><td class="line"> <span class='keyword'>if</span> (g_settings_get_boolean (settings, <span class='macro'>PLUMA_SETTINGS_CTRL_TABS_SWITCH_TABS<span class='macro_popup'>"ctrl-tab-switch-tabs"</span></span>))</td></tr>
+<tr class="codeline" data-linenumber="368"><td class="num" id="LN368">368</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="369"><td class="num" id="LN369">369</td><td class="line"> GtkNotebook *notebook = <span class='macro'>GTK_NOTEBOOK (_pluma_window_get_notebook (PLUMA_WINDOW (window)))<span class='macro_popup'>((((GtkNotebook*) (void *) ((_pluma_window_get_notebook (((((<br>PlumaWindow*) (void *) ((window)))))))))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="370"><td class="num" id="LN370">370</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="371"><td class="num" id="LN371">371</td><td class="line"> <span class='keyword'>int</span> pages = gtk_notebook_get_n_pages (notebook);</td></tr>
+<tr class="codeline" data-linenumber="372"><td class="num" id="LN372">372</td><td class="line"> <span class='keyword'>int</span> page_num = gtk_notebook_get_current_page (notebook);</td></tr>
+<tr class="codeline" data-linenumber="373"><td class="num" id="LN373">373</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="374"><td class="num" id="LN374">374</td><td class="line"> <span class='keyword'>if</span> (event-&gt;keyval == <span class='macro'>GDK_KEY_ISO_Left_Tab<span class='macro_popup'>0xfe20</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="375"><td class="num" id="LN375">375</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="376"><td class="num" id="LN376">376</td><td class="line"> <span class='keyword'>if</span> (page_num != 0)</td></tr>
+<tr class="codeline" data-linenumber="377"><td class="num" id="LN377">377</td><td class="line"> gtk_notebook_prev_page (notebook);</td></tr>
+<tr class="codeline" data-linenumber="378"><td class="num" id="LN378">378</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="379"><td class="num" id="LN379">379</td><td class="line"> gtk_notebook_set_current_page (notebook, (pages - 1));</td></tr>
+<tr class="codeline" data-linenumber="380"><td class="num" id="LN380">380</td><td class="line"> handled = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="381"><td class="num" id="LN381">381</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="382"><td class="num" id="LN382">382</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="383"><td class="num" id="LN383">383</td><td class="line"> <span class='keyword'>if</span> (event-&gt;keyval == <span class='macro'>GDK_KEY_Tab<span class='macro_popup'>0xff09</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="384"><td class="num" id="LN384">384</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="385"><td class="num" id="LN385">385</td><td class="line"> <span class='keyword'>if</span> (page_num != (pages -1))</td></tr>
+<tr class="codeline" data-linenumber="386"><td class="num" id="LN386">386</td><td class="line"> gtk_notebook_next_page (notebook);</td></tr>
+<tr class="codeline" data-linenumber="387"><td class="num" id="LN387">387</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="388"><td class="num" id="LN388">388</td><td class="line"> gtk_notebook_set_current_page (notebook, 0);</td></tr>
+<tr class="codeline" data-linenumber="389"><td class="num" id="LN389">389</td><td class="line"> handled = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="390"><td class="num" id="LN390">390</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="391"><td class="num" id="LN391">391</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="392"><td class="num" id="LN392">392</td><td class="line"> g_free (font);</td></tr>
+<tr class="codeline" data-linenumber="393"><td class="num" id="LN393">393</td><td class="line"> g_free (tempsize);</td></tr>
+<tr class="codeline" data-linenumber="394"><td class="num" id="LN394">394</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="395"><td class="num" id="LN395">395</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="396"><td class="num" id="LN396">396</td><td class="line"> g_object_unref (settings);</td></tr>
+<tr class="codeline" data-linenumber="397"><td class="num" id="LN397">397</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="398"><td class="num" id="LN398">398</td><td class="line"> <span class='keyword'>if</span> (grand_parent_class == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="399"><td class="num" id="LN399">399</td><td class="line"> grand_parent_class = g_type_class_peek_parent (pluma_window_parent_class);</td></tr>
+<tr class="codeline" data-linenumber="400"><td class="num" id="LN400">400</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="401"><td class="num" id="LN401">401</td><td class="line"> <span class='comment'>/* handle focus widget key events */</span></td></tr>
+<tr class="codeline" data-linenumber="402"><td class="num" id="LN402">402</td><td class="line"> <span class='keyword'>if</span> (!handled)</td></tr>
+<tr class="codeline" data-linenumber="403"><td class="num" id="LN403">403</td><td class="line"> handled = gtk_window_propagate_key_event (window, event);</td></tr>
+<tr class="codeline" data-linenumber="404"><td class="num" id="LN404">404</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="405"><td class="num" id="LN405">405</td><td class="line"> <span class='comment'>/* handle mnemonics and accelerators */</span></td></tr>
+<tr class="codeline" data-linenumber="406"><td class="num" id="LN406">406</td><td class="line"> <span class='keyword'>if</span> (!handled)</td></tr>
+<tr class="codeline" data-linenumber="407"><td class="num" id="LN407">407</td><td class="line"> handled = gtk_window_activate_key (window, event);</td></tr>
+<tr class="codeline" data-linenumber="408"><td class="num" id="LN408">408</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="409"><td class="num" id="LN409">409</td><td class="line"> <span class='comment'>/* Chain up, invokes binding set */</span></td></tr>
+<tr class="codeline" data-linenumber="410"><td class="num" id="LN410">410</td><td class="line"> <span class='keyword'>if</span> (!handled)</td></tr>
+<tr class="codeline" data-linenumber="411"><td class="num" id="LN411">411</td><td class="line"> handled = <span class='macro'>GTK_WIDGET_CLASS (grand_parent_class)<span class='macro_popup'>((((GtkWidgetClass*) (void *) ((grand_parent_class)))))</span></span>-&gt;key_press_event (widget, event);</td></tr>
+<tr class="codeline" data-linenumber="412"><td class="num" id="LN412">412</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="413"><td class="num" id="LN413">413</td><td class="line"> <span class='keyword'>return</span> handled;</td></tr>
+<tr class="codeline" data-linenumber="414"><td class="num" id="LN414">414</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="415"><td class="num" id="LN415">415</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="416"><td class="num" id="LN416">416</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="417"><td class="num" id="LN417">417</td><td class="line">pluma_window_tab_removed (PlumaWindow *window,</td></tr>
+<tr class="codeline" data-linenumber="418"><td class="num" id="LN418">418</td><td class="line"> PlumaTab *tab)</td></tr>
+<tr class="codeline" data-linenumber="419"><td class="num" id="LN419">419</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="420"><td class="num" id="LN420">420</td><td class="line"> peas_engine_garbage_collect (<span class='macro'>PEAS_ENGINE (pluma_plugins_engine_get_default ())<span class='macro_popup'>((((PeasEngine*) (void *) ((pluma_plugins_engine_get_default (<br>))))))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="421"><td class="num" id="LN421">421</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="422"><td class="num" id="LN422">422</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="423"><td class="num" id="LN423">423</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="424"><td class="num" id="LN424">424</td><td class="line">pluma_window_class_init (PlumaWindowClass *klass)</td></tr>
+<tr class="codeline" data-linenumber="425"><td class="num" id="LN425">425</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="426"><td class="num" id="LN426">426</td><td class="line"> GObjectClass *object_class = <span class='macro'>G_OBJECT_CLASS (klass)<span class='macro_popup'>((((GObjectClass*) (void *) ((klass)))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="427"><td class="num" id="LN427">427</td><td class="line"> GtkWidgetClass *widget_class = <span class='macro'>GTK_WIDGET_CLASS (klass)<span class='macro_popup'>((((GtkWidgetClass*) (void *) ((klass)))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="428"><td class="num" id="LN428">428</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="429"><td class="num" id="LN429">429</td><td class="line"> klass-&gt;tab_removed = pluma_window_tab_removed;</td></tr>
+<tr class="codeline" data-linenumber="430"><td class="num" id="LN430">430</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="431"><td class="num" id="LN431">431</td><td class="line"> object_class-&gt;dispose = pluma_window_dispose;</td></tr>
+<tr class="codeline" data-linenumber="432"><td class="num" id="LN432">432</td><td class="line"> object_class-&gt;finalize = pluma_window_finalize;</td></tr>
+<tr class="codeline" data-linenumber="433"><td class="num" id="LN433">433</td><td class="line"> object_class-&gt;get_property = pluma_window_get_property;</td></tr>
+<tr class="codeline" data-linenumber="434"><td class="num" id="LN434">434</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="435"><td class="num" id="LN435">435</td><td class="line"> widget_class-&gt;window_state_event = pluma_window_window_state_event;</td></tr>
+<tr class="codeline" data-linenumber="436"><td class="num" id="LN436">436</td><td class="line"> widget_class-&gt;configure_event = pluma_window_configure_event;</td></tr>
+<tr class="codeline" data-linenumber="437"><td class="num" id="LN437">437</td><td class="line"> widget_class-&gt;key_press_event = pluma_window_key_press_event;</td></tr>
+<tr class="codeline" data-linenumber="438"><td class="num" id="LN438">438</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="439"><td class="num" id="LN439">439</td><td class="line"> signals[TAB_ADDED] =</td></tr>
+<tr class="codeline" data-linenumber="440"><td class="num" id="LN440">440</td><td class="line"> g_signal_new (<span class='string_literal'>"tab_added"</span>,</td></tr>
+<tr class="codeline" data-linenumber="441"><td class="num" id="LN441">441</td><td class="line"> <span class='macro'>G_OBJECT_CLASS_TYPE (object_class)<span class='macro_popup'>((((GTypeClass*) (object_class))-&gt;g_type))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="442"><td class="num" id="LN442">442</td><td class="line"> G_SIGNAL_RUN_FIRST,</td></tr>
+<tr class="codeline" data-linenumber="443"><td class="num" id="LN443">443</td><td class="line"> <span class='macro'>G_STRUCT_OFFSET (PlumaWindowClass, tab_added)<span class='macro_popup'>((glong) __builtin_offsetof(PlumaWindowClass, tab_added))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="444"><td class="num" id="LN444">444</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="445"><td class="num" id="LN445">445</td><td class="line"> <span class='macro'>G_TYPE_NONE<span class='macro_popup'>((GType) ((1) &lt;&lt; (2)))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="446"><td class="num" id="LN446">446</td><td class="line"> 1,</td></tr>
+<tr class="codeline" data-linenumber="447"><td class="num" id="LN447">447</td><td class="line"> <span class='macro'>PLUMA_TYPE_TAB<span class='macro_popup'>(pluma_tab_get_type())</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="448"><td class="num" id="LN448">448</td><td class="line"> signals[TAB_REMOVED] =</td></tr>
+<tr class="codeline" data-linenumber="449"><td class="num" id="LN449">449</td><td class="line"> g_signal_new (<span class='string_literal'>"tab_removed"</span>,</td></tr>
+<tr class="codeline" data-linenumber="450"><td class="num" id="LN450">450</td><td class="line"> <span class='macro'>G_OBJECT_CLASS_TYPE (object_class)<span class='macro_popup'>((((GTypeClass*) (object_class))-&gt;g_type))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="451"><td class="num" id="LN451">451</td><td class="line"> G_SIGNAL_RUN_FIRST,</td></tr>
+<tr class="codeline" data-linenumber="452"><td class="num" id="LN452">452</td><td class="line"> <span class='macro'>G_STRUCT_OFFSET (PlumaWindowClass, tab_removed)<span class='macro_popup'>((glong) __builtin_offsetof(PlumaWindowClass, tab_removed))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="453"><td class="num" id="LN453">453</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="454"><td class="num" id="LN454">454</td><td class="line"> <span class='macro'>G_TYPE_NONE<span class='macro_popup'>((GType) ((1) &lt;&lt; (2)))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="455"><td class="num" id="LN455">455</td><td class="line"> 1,</td></tr>
+<tr class="codeline" data-linenumber="456"><td class="num" id="LN456">456</td><td class="line"> <span class='macro'>PLUMA_TYPE_TAB<span class='macro_popup'>(pluma_tab_get_type())</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="457"><td class="num" id="LN457">457</td><td class="line"> signals[TABS_REORDERED] =</td></tr>
+<tr class="codeline" data-linenumber="458"><td class="num" id="LN458">458</td><td class="line"> g_signal_new (<span class='string_literal'>"tabs_reordered"</span>,</td></tr>
+<tr class="codeline" data-linenumber="459"><td class="num" id="LN459">459</td><td class="line"> <span class='macro'>G_OBJECT_CLASS_TYPE (object_class)<span class='macro_popup'>((((GTypeClass*) (object_class))-&gt;g_type))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="460"><td class="num" id="LN460">460</td><td class="line"> G_SIGNAL_RUN_FIRST,</td></tr>
+<tr class="codeline" data-linenumber="461"><td class="num" id="LN461">461</td><td class="line"> <span class='macro'>G_STRUCT_OFFSET (PlumaWindowClass, tabs_reordered)<span class='macro_popup'>((glong) __builtin_offsetof(PlumaWindowClass, tabs_reordered)<br>)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="462"><td class="num" id="LN462">462</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="463"><td class="num" id="LN463">463</td><td class="line"> <span class='macro'>G_TYPE_NONE<span class='macro_popup'>((GType) ((1) &lt;&lt; (2)))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="464"><td class="num" id="LN464">464</td><td class="line"> 0);</td></tr>
+<tr class="codeline" data-linenumber="465"><td class="num" id="LN465">465</td><td class="line"> signals[ACTIVE_TAB_CHANGED] =</td></tr>
+<tr class="codeline" data-linenumber="466"><td class="num" id="LN466">466</td><td class="line"> g_signal_new (<span class='string_literal'>"active_tab_changed"</span>,</td></tr>
+<tr class="codeline" data-linenumber="467"><td class="num" id="LN467">467</td><td class="line"> <span class='macro'>G_OBJECT_CLASS_TYPE (object_class)<span class='macro_popup'>((((GTypeClass*) (object_class))-&gt;g_type))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="468"><td class="num" id="LN468">468</td><td class="line"> G_SIGNAL_RUN_FIRST,</td></tr>
+<tr class="codeline" data-linenumber="469"><td class="num" id="LN469">469</td><td class="line"> <span class='macro'>G_STRUCT_OFFSET (PlumaWindowClass, active_tab_changed)<span class='macro_popup'>((glong) __builtin_offsetof(PlumaWindowClass, active_tab_changed<br>))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="470"><td class="num" id="LN470">470</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="471"><td class="num" id="LN471">471</td><td class="line"> <span class='macro'>G_TYPE_NONE<span class='macro_popup'>((GType) ((1) &lt;&lt; (2)))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="472"><td class="num" id="LN472">472</td><td class="line"> 1,</td></tr>
+<tr class="codeline" data-linenumber="473"><td class="num" id="LN473">473</td><td class="line"> <span class='macro'>PLUMA_TYPE_TAB<span class='macro_popup'>(pluma_tab_get_type())</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="474"><td class="num" id="LN474">474</td><td class="line"> signals[ACTIVE_TAB_STATE_CHANGED] =</td></tr>
+<tr class="codeline" data-linenumber="475"><td class="num" id="LN475">475</td><td class="line"> g_signal_new (<span class='string_literal'>"active_tab_state_changed"</span>,</td></tr>
+<tr class="codeline" data-linenumber="476"><td class="num" id="LN476">476</td><td class="line"> <span class='macro'>G_OBJECT_CLASS_TYPE (object_class)<span class='macro_popup'>((((GTypeClass*) (object_class))-&gt;g_type))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="477"><td class="num" id="LN477">477</td><td class="line"> G_SIGNAL_RUN_FIRST,</td></tr>
+<tr class="codeline" data-linenumber="478"><td class="num" id="LN478">478</td><td class="line"> <span class='macro'>G_STRUCT_OFFSET (PlumaWindowClass, active_tab_state_changed)<span class='macro_popup'>((glong) __builtin_offsetof(PlumaWindowClass, active_tab_state_changed<br>))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="479"><td class="num" id="LN479">479</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="480"><td class="num" id="LN480">480</td><td class="line"> <span class='macro'>G_TYPE_NONE<span class='macro_popup'>((GType) ((1) &lt;&lt; (2)))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="481"><td class="num" id="LN481">481</td><td class="line"> 0);</td></tr>
+<tr class="codeline" data-linenumber="482"><td class="num" id="LN482">482</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="483"><td class="num" id="LN483">483</td><td class="line"> g_object_class_install_property (object_class,</td></tr>
+<tr class="codeline" data-linenumber="484"><td class="num" id="LN484">484</td><td class="line"> PROP_STATE,</td></tr>
+<tr class="codeline" data-linenumber="485"><td class="num" id="LN485">485</td><td class="line"> g_param_spec_flags (<span class='string_literal'>"state"</span>,</td></tr>
+<tr class="codeline" data-linenumber="486"><td class="num" id="LN486">486</td><td class="line"> <span class='string_literal'>"State"</span>,</td></tr>
+<tr class="codeline" data-linenumber="487"><td class="num" id="LN487">487</td><td class="line"> <span class='string_literal'>"The window's state"</span>,</td></tr>
+<tr class="codeline" data-linenumber="488"><td class="num" id="LN488">488</td><td class="line"> <span class='macro'>PLUMA_TYPE_WINDOW_STATE<span class='macro_popup'>(pluma_window_state_get_type())</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="489"><td class="num" id="LN489">489</td><td class="line"> PLUMA_WINDOW_STATE_NORMAL,</td></tr>
+<tr class="codeline" data-linenumber="490"><td class="num" id="LN490">490</td><td class="line"> G_PARAM_READABLE |</td></tr>
+<tr class="codeline" data-linenumber="491"><td class="num" id="LN491">491</td><td class="line"> <span class='macro'>G_PARAM_STATIC_STRINGS<span class='macro_popup'>(G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB<br>)</span></span>));</td></tr>
+<tr class="codeline" data-linenumber="492"><td class="num" id="LN492">492</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="493"><td class="num" id="LN493">493</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="494"><td class="num" id="LN494">494</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="495"><td class="num" id="LN495">495</td><td class="line">menu_item_select_cb (GtkMenuItem *proxy,</td></tr>
+<tr class="codeline" data-linenumber="496"><td class="num" id="LN496">496</td><td class="line"> PlumaWindow *window)</td></tr>
+<tr class="codeline" data-linenumber="497"><td class="num" id="LN497">497</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="498"><td class="num" id="LN498">498</td><td class="line"> GtkAction *action;</td></tr>
+<tr class="codeline" data-linenumber="499"><td class="num" id="LN499">499</td><td class="line"> <span class='keyword'>char</span> *message;</td></tr>
+<tr class="codeline" data-linenumber="500"><td class="num" id="LN500">500</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="501"><td class="num" id="LN501">501</td><td class="line"> action = gtk_activatable_get_related_action (<span class='macro'>GTK_ACTIVATABLE (proxy)<span class='macro_popup'>((((GtkActivatable*) (void *) ((proxy)))))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="502"><td class="num" id="LN502">502</td><td class="line"> <span class='macro'>g_return_if_fail (action != NULL)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_67<br>; if (action != ((void*)0)) _g_boolean_var_67 = 1; else _g_boolean_var_67<br> = 0; _g_boolean_var_67; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "action != NULL")<br>; return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="503"><td class="num" id="LN503">503</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="504"><td class="num" id="LN504">504</td><td class="line"> g_object_get (<span class='macro'>G_OBJECT (action)<span class='macro_popup'>((((GObject*) (void *) ((action)))))</span></span>, <span class='string_literal'>"tooltip"</span>, &amp;message, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="505"><td class="num" id="LN505">505</td><td class="line"> <span class='keyword'>if</span> (message)</td></tr>
+<tr class="codeline" data-linenumber="506"><td class="num" id="LN506">506</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="507"><td class="num" id="LN507">507</td><td class="line"> gtk_statusbar_push (<span class='macro'>GTK_STATUSBAR (window-&gt;priv-&gt;statusbar)<span class='macro_popup'>((((GtkStatusbar*) (void *) ((window-&gt;priv-&gt;statusbar))<br>)))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="508"><td class="num" id="LN508">508</td><td class="line"> window-&gt;priv-&gt;tip_message_cid, message);</td></tr>
+<tr class="codeline" data-linenumber="509"><td class="num" id="LN509">509</td><td class="line"> g_free (message);</td></tr>
+<tr class="codeline" data-linenumber="510"><td class="num" id="LN510">510</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="511"><td class="num" id="LN511">511</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="512"><td class="num" id="LN512">512</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="513"><td class="num" id="LN513">513</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="514"><td class="num" id="LN514">514</td><td class="line">menu_item_deselect_cb (GtkMenuItem *proxy,</td></tr>
+<tr class="codeline" data-linenumber="515"><td class="num" id="LN515">515</td><td class="line"> PlumaWindow *window)</td></tr>
+<tr class="codeline" data-linenumber="516"><td class="num" id="LN516">516</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="517"><td class="num" id="LN517">517</td><td class="line"> gtk_statusbar_pop (<span class='macro'>GTK_STATUSBAR (window-&gt;priv-&gt;statusbar)<span class='macro_popup'>((((GtkStatusbar*) (void *) ((window-&gt;priv-&gt;statusbar))<br>)))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="518"><td class="num" id="LN518">518</td><td class="line"> window-&gt;priv-&gt;tip_message_cid);</td></tr>
+<tr class="codeline" data-linenumber="519"><td class="num" id="LN519">519</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="520"><td class="num" id="LN520">520</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="521"><td class="num" id="LN521">521</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="522"><td class="num" id="LN522">522</td><td class="line">connect_proxy_cb (GtkUIManager *manager,</td></tr>
+<tr class="codeline" data-linenumber="523"><td class="num" id="LN523">523</td><td class="line"> GtkAction *action,</td></tr>
+<tr class="codeline" data-linenumber="524"><td class="num" id="LN524">524</td><td class="line"> GtkWidget *proxy,</td></tr>
+<tr class="codeline" data-linenumber="525"><td class="num" id="LN525">525</td><td class="line"> PlumaWindow *window)</td></tr>
+<tr class="codeline" data-linenumber="526"><td class="num" id="LN526">526</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="527"><td class="num" id="LN527">527</td><td class="line"> <span class='keyword'>if</span> (<span class='macro'>GTK_IS_MENU_ITEM (proxy)<span class='macro_popup'>(((__extension__ ({ GTypeInstance *__inst = (GTypeInstance*) (<br>(proxy)); GType __t = ((gtk_menu_item_get_type ())); gboolean<br> __r; if (!__inst) __r = (0); else if (__inst-&gt;g_class &amp;&amp;<br> __inst-&gt;g_class-&gt;g_type == __t) __r = (!(0)); else __r<br> = g_type_check_instance_is_a (__inst, __t); __r; }))))</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="528"><td class="num" id="LN528">528</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="529"><td class="num" id="LN529">529</td><td class="line"> <span class='macro'>g_signal_connect (proxy, <span class='string_literal'>"select"</span>,<span class='macro_popup'>g_signal_connect_data ((proxy), ("select"), (((GCallback) (menu_item_select_cb<br>))), (window), ((void*)0), (GConnectFlags) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="530"><td class="num" id="LN530">530</td><td class="line"> <span class='macro'>G_CALLBACK (menu_item_select_cb), window)<span class='macro_popup'>g_signal_connect_data ((proxy), ("select"), (((GCallback) (menu_item_select_cb<br>))), (window), ((void*)0), (GConnectFlags) 0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="531"><td class="num" id="LN531">531</td><td class="line"> <span class='macro'>g_signal_connect (proxy, <span class='string_literal'>"deselect"</span>,<span class='macro_popup'>g_signal_connect_data ((proxy), ("deselect"), (((GCallback) (<br>menu_item_deselect_cb))), (window), ((void*)0), (GConnectFlags<br>) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="532"><td class="num" id="LN532">532</td><td class="line"> <span class='macro'>G_CALLBACK (menu_item_deselect_cb), window)<span class='macro_popup'>g_signal_connect_data ((proxy), ("deselect"), (((GCallback) (<br>menu_item_deselect_cb))), (window), ((void*)0), (GConnectFlags<br>) 0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="533"><td class="num" id="LN533">533</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="534"><td class="num" id="LN534">534</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="535"><td class="num" id="LN535">535</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="536"><td class="num" id="LN536">536</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="537"><td class="num" id="LN537">537</td><td class="line">disconnect_proxy_cb (GtkUIManager *manager,</td></tr>
+<tr class="codeline" data-linenumber="538"><td class="num" id="LN538">538</td><td class="line"> GtkAction *action,</td></tr>
+<tr class="codeline" data-linenumber="539"><td class="num" id="LN539">539</td><td class="line"> GtkWidget *proxy,</td></tr>
+<tr class="codeline" data-linenumber="540"><td class="num" id="LN540">540</td><td class="line"> PlumaWindow *window)</td></tr>
+<tr class="codeline" data-linenumber="541"><td class="num" id="LN541">541</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="542"><td class="num" id="LN542">542</td><td class="line"> <span class='keyword'>if</span> (<span class='macro'>GTK_IS_MENU_ITEM (proxy)<span class='macro_popup'>(((__extension__ ({ GTypeInstance *__inst = (GTypeInstance*) (<br>(proxy)); GType __t = ((gtk_menu_item_get_type ())); gboolean<br> __r; if (!__inst) __r = (0); else if (__inst-&gt;g_class &amp;&amp;<br> __inst-&gt;g_class-&gt;g_type == __t) __r = (!(0)); else __r<br> = g_type_check_instance_is_a (__inst, __t); __r; }))))</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="543"><td class="num" id="LN543">543</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="544"><td class="num" id="LN544">544</td><td class="line"> <span class='macro'>g_signal_handlers_disconnect_by_func<span class='macro_popup'>g_signal_handlers_disconnect_matched ((proxy), (GSignalMatchType<br>) (G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA), 0, 0, ((void*)<br>0), (((GCallback) (menu_item_select_cb))), (window))</span></span></td></tr>
+<tr class="codeline" data-linenumber="545"><td class="num" id="LN545">545</td><td class="line"> <span class='macro'>(proxy, G_CALLBACK (menu_item_select_cb), window)<span class='macro_popup'>g_signal_handlers_disconnect_matched ((proxy), (GSignalMatchType<br>) (G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA), 0, 0, ((void*)<br>0), (((GCallback) (menu_item_select_cb))), (window))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="546"><td class="num" id="LN546">546</td><td class="line"> <span class='macro'>g_signal_handlers_disconnect_by_func<span class='macro_popup'>g_signal_handlers_disconnect_matched ((proxy), (GSignalMatchType<br>) (G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA), 0, 0, ((void*)<br>0), (((GCallback) (menu_item_deselect_cb))), (window))</span></span></td></tr>
+<tr class="codeline" data-linenumber="547"><td class="num" id="LN547">547</td><td class="line"> <span class='macro'>(proxy, G_CALLBACK (menu_item_deselect_cb), window)<span class='macro_popup'>g_signal_handlers_disconnect_matched ((proxy), (GSignalMatchType<br>) (G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA), 0, 0, ((void*)<br>0), (((GCallback) (menu_item_deselect_cb))), (window))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="548"><td class="num" id="LN548">548</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="549"><td class="num" id="LN549">549</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="550"><td class="num" id="LN550">550</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="551"><td class="num" id="LN551">551</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="552"><td class="num" id="LN552">552</td><td class="line">apply_toolbar_style (PlumaWindow *window,</td></tr>
+<tr class="codeline" data-linenumber="553"><td class="num" id="LN553">553</td><td class="line"> GtkWidget *toolbar)</td></tr>
+<tr class="codeline" data-linenumber="554"><td class="num" id="LN554">554</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="555"><td class="num" id="LN555">555</td><td class="line"> <span class='keyword'>switch</span> (window-&gt;priv-&gt;toolbar_style)</td></tr>
+<tr class="codeline" data-linenumber="556"><td class="num" id="LN556">556</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="557"><td class="num" id="LN557">557</td><td class="line"> <span class='keyword'>case</span> PLUMA_TOOLBAR_SYSTEM:</td></tr>
+<tr class="codeline" data-linenumber="558"><td class="num" id="LN558">558</td><td class="line"> pluma_debug_message (<span class='macro'>DEBUG_WINDOW<span class='macro_popup'>PLUMA_DEBUG_WINDOW, "pluma-window.c", 558, ((const char*) (__func__<br>))</span></span>, <span class='string_literal'>"PLUMA: SYSTEM"</span>);</td></tr>
+<tr class="codeline" data-linenumber="559"><td class="num" id="LN559">559</td><td class="line"> gtk_toolbar_unset_style (<span class='macro'>GTK_TOOLBAR (toolbar)<span class='macro_popup'>((((GtkToolbar*) (void *) ((toolbar)))))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="560"><td class="num" id="LN560">560</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="561"><td class="num" id="LN561">561</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="562"><td class="num" id="LN562">562</td><td class="line"> <span class='keyword'>case</span> PLUMA_TOOLBAR_ICONS:</td></tr>
+<tr class="codeline" data-linenumber="563"><td class="num" id="LN563">563</td><td class="line"> pluma_debug_message (<span class='macro'>DEBUG_WINDOW<span class='macro_popup'>PLUMA_DEBUG_WINDOW, "pluma-window.c", 563, ((const char*) (__func__<br>))</span></span>, <span class='string_literal'>"PLUMA: ICONS"</span>);</td></tr>
+<tr class="codeline" data-linenumber="564"><td class="num" id="LN564">564</td><td class="line"> gtk_toolbar_set_style (<span class='macro'>GTK_TOOLBAR (toolbar)<span class='macro_popup'>((((GtkToolbar*) (void *) ((toolbar)))))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="565"><td class="num" id="LN565">565</td><td class="line"> GTK_TOOLBAR_ICONS);</td></tr>
+<tr class="codeline" data-linenumber="566"><td class="num" id="LN566">566</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="567"><td class="num" id="LN567">567</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="568"><td class="num" id="LN568">568</td><td class="line"> <span class='keyword'>case</span> PLUMA_TOOLBAR_ICONS_AND_TEXT:</td></tr>
+<tr class="codeline" data-linenumber="569"><td class="num" id="LN569">569</td><td class="line"> pluma_debug_message (<span class='macro'>DEBUG_WINDOW<span class='macro_popup'>PLUMA_DEBUG_WINDOW, "pluma-window.c", 569, ((const char*) (__func__<br>))</span></span>, <span class='string_literal'>"PLUMA: ICONS_AND_TEXT"</span>);</td></tr>
+<tr class="codeline" data-linenumber="570"><td class="num" id="LN570">570</td><td class="line"> gtk_toolbar_set_style (<span class='macro'>GTK_TOOLBAR (toolbar)<span class='macro_popup'>((((GtkToolbar*) (void *) ((toolbar)))))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="571"><td class="num" id="LN571">571</td><td class="line"> GTK_TOOLBAR_BOTH);</td></tr>
+<tr class="codeline" data-linenumber="572"><td class="num" id="LN572">572</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="573"><td class="num" id="LN573">573</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="574"><td class="num" id="LN574">574</td><td class="line"> <span class='keyword'>case</span> PLUMA_TOOLBAR_ICONS_BOTH_HORIZ:</td></tr>
+<tr class="codeline" data-linenumber="575"><td class="num" id="LN575">575</td><td class="line"> pluma_debug_message (<span class='macro'>DEBUG_WINDOW<span class='macro_popup'>PLUMA_DEBUG_WINDOW, "pluma-window.c", 575, ((const char*) (__func__<br>))</span></span>, <span class='string_literal'>"PLUMA: ICONS_BOTH_HORIZ"</span>);</td></tr>
+<tr class="codeline" data-linenumber="576"><td class="num" id="LN576">576</td><td class="line"> gtk_toolbar_set_style (<span class='macro'>GTK_TOOLBAR (toolbar)<span class='macro_popup'>((((GtkToolbar*) (void *) ((toolbar)))))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="577"><td class="num" id="LN577">577</td><td class="line"> GTK_TOOLBAR_BOTH_HORIZ);</td></tr>
+<tr class="codeline" data-linenumber="578"><td class="num" id="LN578">578</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="579"><td class="num" id="LN579">579</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="580"><td class="num" id="LN580">580</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="581"><td class="num" id="LN581">581</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="582"><td class="num" id="LN582">582</td><td class="line"><span class='comment'>/* Returns TRUE if toolbar is visible */</span></td></tr>
+<tr class="codeline" data-linenumber="583"><td class="num" id="LN583">583</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="584"><td class="num" id="LN584">584</td><td class="line">set_toolbar_style (PlumaWindow *window,</td></tr>
+<tr class="codeline" data-linenumber="585"><td class="num" id="LN585">585</td><td class="line"> PlumaWindow *origin)</td></tr>
+<tr class="codeline" data-linenumber="586"><td class="num" id="LN586">586</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="587"><td class="num" id="LN587">587</td><td class="line"> gboolean visible;</td></tr>
+<tr class="codeline" data-linenumber="588"><td class="num" id="LN588">588</td><td class="line"> PlumaToolbarSetting style;</td></tr>
+<tr class="codeline" data-linenumber="589"><td class="num" id="LN589">589</td><td class="line"> GtkAction *action;</td></tr>
+<tr class="codeline" data-linenumber="590"><td class="num" id="LN590">590</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="591"><td class="num" id="LN591">591</td><td class="line"> <span class='keyword'>if</span> (origin == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="592"><td class="num" id="LN592">592</td><td class="line"> visible = g_settings_get_boolean (window-&gt;priv-&gt;editor_settings,</td></tr>
+<tr class="codeline" data-linenumber="593"><td class="num" id="LN593">593</td><td class="line"> <span class='macro'>PLUMA_SETTINGS_TOOLBAR_VISIBLE<span class='macro_popup'>"toolbar-visible"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="594"><td class="num" id="LN594">594</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="595"><td class="num" id="LN595">595</td><td class="line"> visible = gtk_widget_get_visible (origin-&gt;priv-&gt;toolbar);</td></tr>
+<tr class="codeline" data-linenumber="596"><td class="num" id="LN596">596</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="597"><td class="num" id="LN597">597</td><td class="line"> <span class='comment'>/* Set visibility */</span></td></tr>
+<tr class="codeline" data-linenumber="598"><td class="num" id="LN598">598</td><td class="line"> <span class='keyword'>if</span> (visible)</td></tr>
+<tr class="codeline" data-linenumber="599"><td class="num" id="LN599">599</td><td class="line"> gtk_widget_show (window-&gt;priv-&gt;toolbar);</td></tr>
+<tr class="codeline" data-linenumber="600"><td class="num" id="LN600">600</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="601"><td class="num" id="LN601">601</td><td class="line"> gtk_widget_hide (window-&gt;priv-&gt;toolbar);</td></tr>
+<tr class="codeline" data-linenumber="602"><td class="num" id="LN602">602</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="603"><td class="num" id="LN603">603</td><td class="line"> action = gtk_action_group_get_action (window-&gt;priv-&gt;always_sensitive_action_group,</td></tr>
+<tr class="codeline" data-linenumber="604"><td class="num" id="LN604">604</td><td class="line"> <span class='string_literal'>"ViewToolbar"</span>);</td></tr>
+<tr class="codeline" data-linenumber="605"><td class="num" id="LN605">605</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="606"><td class="num" id="LN606">606</td><td class="line"> <span class='keyword'>if</span> (gtk_toggle_action_get_active (<span class='macro'>GTK_TOGGLE_ACTION (action)<span class='macro_popup'>((((GtkToggleAction*) (void *) ((action)))))</span></span>) != visible)</td></tr>
+<tr class="codeline" data-linenumber="607"><td class="num" id="LN607">607</td><td class="line"> gtk_toggle_action_set_active (<span class='macro'>GTK_TOGGLE_ACTION (action)<span class='macro_popup'>((((GtkToggleAction*) (void *) ((action)))))</span></span>, visible);</td></tr>
+<tr class="codeline" data-linenumber="608"><td class="num" id="LN608">608</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="609"><td class="num" id="LN609">609</td><td class="line"> <span class='comment'>/* Set style */</span></td></tr>
+<tr class="codeline" data-linenumber="610"><td class="num" id="LN610">610</td><td class="line"> <span class='keyword'>if</span> (origin == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="611"><td class="num" id="LN611">611</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="612"><td class="num" id="LN612">612</td><td class="line"> PlumaSettings *settings;</td></tr>
+<tr class="codeline" data-linenumber="613"><td class="num" id="LN613">613</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="614"><td class="num" id="LN614">614</td><td class="line"> settings = _pluma_settings_get_singleton ();</td></tr>
+<tr class="codeline" data-linenumber="615"><td class="num" id="LN615">615</td><td class="line"> style = pluma_settings_get_toolbar_style (settings);</td></tr>
+<tr class="codeline" data-linenumber="616"><td class="num" id="LN616">616</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="617"><td class="num" id="LN617">617</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="618"><td class="num" id="LN618">618</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="619"><td class="num" id="LN619">619</td><td class="line"> style = origin-&gt;priv-&gt;toolbar_style;</td></tr>
+<tr class="codeline" data-linenumber="620"><td class="num" id="LN620">620</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="621"><td class="num" id="LN621">621</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="622"><td class="num" id="LN622">622</td><td class="line"> window-&gt;priv-&gt;toolbar_style = style;</td></tr>
+<tr class="codeline" data-linenumber="623"><td class="num" id="LN623">623</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="624"><td class="num" id="LN624">624</td><td class="line"> apply_toolbar_style (window, window-&gt;priv-&gt;toolbar);</td></tr>
+<tr class="codeline" data-linenumber="625"><td class="num" id="LN625">625</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="626"><td class="num" id="LN626">626</td><td class="line"> <span class='keyword'>return</span> visible;</td></tr>
+<tr class="codeline" data-linenumber="627"><td class="num" id="LN627">627</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="628"><td class="num" id="LN628">628</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="629"><td class="num" id="LN629">629</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="630"><td class="num" id="LN630">630</td><td class="line">update_next_prev_doc_sensitivity (PlumaWindow *window,</td></tr>
+<tr class="codeline" data-linenumber="631"><td class="num" id="LN631">631</td><td class="line"> PlumaTab *tab)</td></tr>
+<tr class="codeline" data-linenumber="632"><td class="num" id="LN632">632</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="633"><td class="num" id="LN633">633</td><td class="line"> gint tab_number;</td></tr>
+<tr class="codeline" data-linenumber="634"><td class="num" id="LN634">634</td><td class="line"> GtkNotebook *notebook;</td></tr>
+<tr class="codeline" data-linenumber="635"><td class="num" id="LN635">635</td><td class="line"> GtkAction *action;</td></tr>
+<tr class="codeline" data-linenumber="636"><td class="num" id="LN636">636</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="637"><td class="num" id="LN637">637</td><td class="line"> pluma_debug (<span class='macro'>DEBUG_WINDOW<span class='macro_popup'>PLUMA_DEBUG_WINDOW, "pluma-window.c", 637, ((const char*) (__func__<br>))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="638"><td class="num" id="LN638">638</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="639"><td class="num" id="LN639">639</td><td class="line"> notebook = <span class='macro'>GTK_NOTEBOOK (_pluma_window_get_notebook (window))<span class='macro_popup'>((((GtkNotebook*) (void *) ((_pluma_window_get_notebook (window<br>))))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="640"><td class="num" id="LN640">640</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="641"><td class="num" id="LN641">641</td><td class="line"> tab_number = gtk_notebook_page_num (notebook, <span class='macro'>GTK_WIDGET (tab)<span class='macro_popup'>((((GtkWidget*) (void *) ((tab)))))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="642"><td class="num" id="LN642">642</td><td class="line"> <span class='macro'>g_return_if_fail (tab_number &gt;= 0)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_68<br>; if (tab_number &gt;= 0) _g_boolean_var_68 = 1; else _g_boolean_var_68<br> = 0; _g_boolean_var_68; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "tab_number &gt;= 0"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="643"><td class="num" id="LN643">643</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="644"><td class="num" id="LN644">644</td><td class="line"> action = gtk_action_group_get_action (window-&gt;priv-&gt;action_group,</td></tr>
+<tr class="codeline" data-linenumber="645"><td class="num" id="LN645">645</td><td class="line"> <span class='string_literal'>"DocumentsPreviousDocument"</span>);</td></tr>
+<tr class="codeline" data-linenumber="646"><td class="num" id="LN646">646</td><td class="line"> gtk_action_set_sensitive (action, tab_number != 0);</td></tr>
+<tr class="codeline" data-linenumber="647"><td class="num" id="LN647">647</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="648"><td class="num" id="LN648">648</td><td class="line"> action = gtk_action_group_get_action (window-&gt;priv-&gt;action_group,</td></tr>
+<tr class="codeline" data-linenumber="649"><td class="num" id="LN649">649</td><td class="line"> <span class='string_literal'>"DocumentsNextDocument"</span>);</td></tr>
+<tr class="codeline" data-linenumber="650"><td class="num" id="LN650">650</td><td class="line"> gtk_action_set_sensitive (action,</td></tr>
+<tr class="codeline" data-linenumber="651"><td class="num" id="LN651">651</td><td class="line"> tab_number &lt; gtk_notebook_get_n_pages (notebook) - 1);</td></tr>
+<tr class="codeline" data-linenumber="652"><td class="num" id="LN652">652</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="653"><td class="num" id="LN653">653</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="654"><td class="num" id="LN654">654</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="655"><td class="num" id="LN655">655</td><td class="line">update_next_prev_doc_sensitivity_per_window (PlumaWindow *window)</td></tr>
+<tr class="codeline" data-linenumber="656"><td class="num" id="LN656">656</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="657"><td class="num" id="LN657">657</td><td class="line"> PlumaTab *tab;</td></tr>
+<tr class="codeline" data-linenumber="658"><td class="num" id="LN658">658</td><td class="line"> GtkAction *action;</td></tr>
+<tr class="codeline" data-linenumber="659"><td class="num" id="LN659">659</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="660"><td class="num" id="LN660">660</td><td class="line"> pluma_debug (<span class='macro'>DEBUG_WINDOW<span class='macro_popup'>PLUMA_DEBUG_WINDOW, "pluma-window.c", 660, ((const char*) (__func__<br>))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="661"><td class="num" id="LN661">661</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="662"><td class="num" id="LN662">662</td><td class="line"> tab = pluma_window_get_active_tab (window);</td></tr>
+<tr class="codeline" data-linenumber="663"><td class="num" id="LN663">663</td><td class="line"> <span class='keyword'>if</span> (tab != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="664"><td class="num" id="LN664">664</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="665"><td class="num" id="LN665">665</td><td class="line"> update_next_prev_doc_sensitivity (window, tab);</td></tr>
+<tr class="codeline" data-linenumber="666"><td class="num" id="LN666">666</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="667"><td class="num" id="LN667">667</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="668"><td class="num" id="LN668">668</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="669"><td class="num" id="LN669">669</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="670"><td class="num" id="LN670">670</td><td class="line"> action = gtk_action_group_get_action (window-&gt;priv-&gt;action_group,</td></tr>
+<tr class="codeline" data-linenumber="671"><td class="num" id="LN671">671</td><td class="line"> <span class='string_literal'>"DocumentsPreviousDocument"</span>);</td></tr>
+<tr class="codeline" data-linenumber="672"><td class="num" id="LN672">672</td><td class="line"> gtk_action_set_sensitive (action, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="673"><td class="num" id="LN673">673</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="674"><td class="num" id="LN674">674</td><td class="line"> action = gtk_action_group_get_action (window-&gt;priv-&gt;action_group,</td></tr>
+<tr class="codeline" data-linenumber="675"><td class="num" id="LN675">675</td><td class="line"> <span class='string_literal'>"DocumentsNextDocument"</span>);</td></tr>
+<tr class="codeline" data-linenumber="676"><td class="num" id="LN676">676</td><td class="line"> gtk_action_set_sensitive (action, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="677"><td class="num" id="LN677">677</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="678"><td class="num" id="LN678">678</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="679"><td class="num" id="LN679">679</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="680"><td class="num" id="LN680">680</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="681"><td class="num" id="LN681">681</td><td class="line">received_clipboard_contents (GtkClipboard *clipboard,</td></tr>
+<tr class="codeline" data-linenumber="682"><td class="num" id="LN682">682</td><td class="line"> GtkSelectionData *selection_data,</td></tr>
+<tr class="codeline" data-linenumber="683"><td class="num" id="LN683">683</td><td class="line"> PlumaWindow *window)</td></tr>
+<tr class="codeline" data-linenumber="684"><td class="num" id="LN684">684</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="685"><td class="num" id="LN685">685</td><td class="line"> gboolean sens;</td></tr>
+<tr class="codeline" data-linenumber="686"><td class="num" id="LN686">686</td><td class="line"> GtkAction *action;</td></tr>
+<tr class="codeline" data-linenumber="687"><td class="num" id="LN687">687</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="688"><td class="num" id="LN688">688</td><td class="line"> <span class='comment'>/* getting clipboard contents is async, so we need to</span></td></tr>
+<tr class="codeline" data-linenumber="689"><td class="num" id="LN689">689</td><td class="line"> <span class='comment'>* get the current tab and its state */</span></td></tr>
+<tr class="codeline" data-linenumber="690"><td class="num" id="LN690">690</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="691"><td class="num" id="LN691">691</td><td class="line"> <span class='keyword'>if</span> (window-&gt;priv-&gt;active_tab != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="692"><td class="num" id="LN692">692</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="693"><td class="num" id="LN693">693</td><td class="line"> PlumaTabState state;</td></tr>
+<tr class="codeline" data-linenumber="694"><td class="num" id="LN694">694</td><td class="line"> gboolean state_normal;</td></tr>
+<tr class="codeline" data-linenumber="695"><td class="num" id="LN695">695</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="696"><td class="num" id="LN696">696</td><td class="line"> state = pluma_tab_get_state (window-&gt;priv-&gt;active_tab);</td></tr>
+<tr class="codeline" data-linenumber="697"><td class="num" id="LN697">697</td><td class="line"> state_normal = (state == PLUMA_TAB_STATE_NORMAL);</td></tr>
+<tr class="codeline" data-linenumber="698"><td class="num" id="LN698">698</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="699"><td class="num" id="LN699">699</td><td class="line"> sens = state_normal &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="700"><td class="num" id="LN700">700</td><td class="line"> gtk_selection_data_targets_include_text (selection_data);</td></tr>
+<tr class="codeline" data-linenumber="701"><td class="num" id="LN701">701</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="702"><td class="num" id="LN702">702</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="703"><td class="num" id="LN703">703</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="704"><td class="num" id="LN704">704</td><td class="line"> sens = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="705"><td class="num" id="LN705">705</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="706"><td class="num" id="LN706">706</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="707"><td class="num" id="LN707">707</td><td class="line"> action = gtk_action_group_get_action (window-&gt;priv-&gt;action_group, <span class='string_literal'>"EditPaste"</span>);</td></tr>
+<tr class="codeline" data-linenumber="708"><td class="num" id="LN708">708</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="709"><td class="num" id="LN709">709</td><td class="line"> gtk_action_set_sensitive (action, sens);</td></tr>
+<tr class="codeline" data-linenumber="710"><td class="num" id="LN710">710</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="711"><td class="num" id="LN711">711</td><td class="line"> g_object_unref (window);</td></tr>
+<tr class="codeline" data-linenumber="712"><td class="num" id="LN712">712</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="713"><td class="num" id="LN713">713</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="714"><td class="num" id="LN714">714</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="715"><td class="num" id="LN715">715</td><td class="line">set_paste_sensitivity_according_to_clipboard (PlumaWindow *window,</td></tr>
+<tr class="codeline" data-linenumber="716"><td class="num" id="LN716">716</td><td class="line"> GtkClipboard *clipboard)</td></tr>
+<tr class="codeline" data-linenumber="717"><td class="num" id="LN717">717</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="718"><td class="num" id="LN718">718</td><td class="line"> GdkDisplay *display;</td></tr>
+<tr class="codeline" data-linenumber="719"><td class="num" id="LN719">719</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="720"><td class="num" id="LN720">720</td><td class="line"> display = gtk_clipboard_get_display (clipboard);</td></tr>
+<tr class="codeline" data-linenumber="721"><td class="num" id="LN721">721</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="722"><td class="num" id="LN722">722</td><td class="line"> <span class='keyword'>if</span> (gdk_display_supports_selection_notification (display))</td></tr>
+<tr class="codeline" data-linenumber="723"><td class="num" id="LN723">723</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="724"><td class="num" id="LN724">724</td><td class="line"> gtk_clipboard_request_contents (clipboard,</td></tr>
+<tr class="codeline" data-linenumber="725"><td class="num" id="LN725">725</td><td class="line"> gdk_atom_intern_static_string (<span class='string_literal'>"TARGETS"</span>),</td></tr>
+<tr class="codeline" data-linenumber="726"><td class="num" id="LN726">726</td><td class="line"> (GtkClipboardReceivedFunc) received_clipboard_contents,</td></tr>
+<tr class="codeline" data-linenumber="727"><td class="num" id="LN727">727</td><td class="line"> <span class='macro'>g_object_ref (window)<span class='macro_popup'>((__typeof__ (window)) (g_object_ref) (window))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="728"><td class="num" id="LN728">728</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="729"><td class="num" id="LN729">729</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="730"><td class="num" id="LN730">730</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="731"><td class="num" id="LN731">731</td><td class="line"> GtkAction *action;</td></tr>
+<tr class="codeline" data-linenumber="732"><td class="num" id="LN732">732</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="733"><td class="num" id="LN733">733</td><td class="line"> action = gtk_action_group_get_action (window-&gt;priv-&gt;action_group,</td></tr>
+<tr class="codeline" data-linenumber="734"><td class="num" id="LN734">734</td><td class="line"> <span class='string_literal'>"EditPaste"</span>);</td></tr>
+<tr class="codeline" data-linenumber="735"><td class="num" id="LN735">735</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="736"><td class="num" id="LN736">736</td><td class="line"> <span class='comment'>/* XFIXES extension not availbale, make</span></td></tr>
+<tr class="codeline" data-linenumber="737"><td class="num" id="LN737">737</td><td class="line"> <span class='comment'>* Paste always sensitive */</span></td></tr>
+<tr class="codeline" data-linenumber="738"><td class="num" id="LN738">738</td><td class="line"> gtk_action_set_sensitive (action, <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="739"><td class="num" id="LN739">739</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="740"><td class="num" id="LN740">740</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="741"><td class="num" id="LN741">741</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="742"><td class="num" id="LN742">742</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="743"><td class="num" id="LN743">743</td><td class="line">set_sensitivity_according_to_tab (PlumaWindow *window,</td></tr>
+<tr class="codeline" data-linenumber="744"><td class="num" id="LN744">744</td><td class="line"> PlumaTab *tab)</td></tr>
+<tr class="codeline" data-linenumber="745"><td class="num" id="LN745">745</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="746"><td class="num" id="LN746">746</td><td class="line"> PlumaDocument *doc;</td></tr>
+<tr class="codeline" data-linenumber="747"><td class="num" id="LN747">747</td><td class="line"> PlumaView *view;</td></tr>
+<tr class="codeline" data-linenumber="748"><td class="num" id="LN748">748</td><td class="line"> GtkAction *action;</td></tr>
+<tr class="codeline" data-linenumber="749"><td class="num" id="LN749">749</td><td class="line"> gboolean b;</td></tr>
+<tr class="codeline" data-linenumber="750"><td class="num" id="LN750">750</td><td class="line"> gboolean state_normal;</td></tr>
+<tr class="codeline" data-linenumber="751"><td class="num" id="LN751">751</td><td class="line"> gboolean editable;</td></tr>
+<tr class="codeline" data-linenumber="752"><td class="num" id="LN752">752</td><td class="line"> PlumaTabState state;</td></tr>
+<tr class="codeline" data-linenumber="753"><td class="num" id="LN753">753</td><td class="line"> GtkClipboard *clipboard;</td></tr>
+<tr class="codeline" data-linenumber="754"><td class="num" id="LN754">754</td><td class="line"> PlumaLockdownMask lockdown;</td></tr>
+<tr class="codeline" data-linenumber="755"><td class="num" id="LN755">755</td><td class="line"> gboolean enable_syntax_highlighting;</td></tr>
+<tr class="codeline" data-linenumber="756"><td class="num" id="LN756">756</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="757"><td class="num" id="LN757">757</td><td class="line"> <span class='macro'>g_return_if_fail (PLUMA_TAB (tab))<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_69<br>; if (((((PlumaTab*) (void *) ((tab)))))) _g_boolean_var_69 =<br> 1; else _g_boolean_var_69 = 0; _g_boolean_var_69; }), 1))) {<br> } else { g_return_if_fail_warning (((gchar*) 0), ((const char<br>*) (__func__)), "PLUMA_TAB (tab)"); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="758"><td class="num" id="LN758">758</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="759"><td class="num" id="LN759">759</td><td class="line"> pluma_debug (<span class='macro'>DEBUG_WINDOW<span class='macro_popup'>PLUMA_DEBUG_WINDOW, "pluma-window.c", 759, ((const char*) (__func__<br>))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="760"><td class="num" id="LN760">760</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="761"><td class="num" id="LN761">761</td><td class="line"> enable_syntax_highlighting = g_settings_get_boolean (window-&gt;priv-&gt;editor_settings,</td></tr>
+<tr class="codeline" data-linenumber="762"><td class="num" id="LN762">762</td><td class="line"> <span class='macro'>PLUMA_SETTINGS_SYNTAX_HIGHLIGHTING<span class='macro_popup'>"syntax-highlighting"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="763"><td class="num" id="LN763">763</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="764"><td class="num" id="LN764">764</td><td class="line"> lockdown = pluma_app_get_lockdown (pluma_app_get_default ());</td></tr>
+<tr class="codeline" data-linenumber="765"><td class="num" id="LN765">765</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="766"><td class="num" id="LN766">766</td><td class="line"> state = pluma_tab_get_state (tab);</td></tr>
+<tr class="codeline" data-linenumber="767"><td class="num" id="LN767">767</td><td class="line"> state_normal = (state == PLUMA_TAB_STATE_NORMAL);</td></tr>
+<tr class="codeline" data-linenumber="768"><td class="num" id="LN768">768</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="769"><td class="num" id="LN769">769</td><td class="line"> view = pluma_tab_get_view (tab);</td></tr>
+<tr class="codeline" data-linenumber="770"><td class="num" id="LN770">770</td><td class="line"> editable = gtk_text_view_get_editable (<span class='macro'>GTK_TEXT_VIEW (view)<span class='macro_popup'>((((GtkTextView*) (void *) ((view)))))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="771"><td class="num" id="LN771">771</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="772"><td class="num" id="LN772">772</td><td class="line"> doc = <span class='macro'>PLUMA_DOCUMENT (gtk_text_view_get_buffer (GTK_TEXT_VIEW (view)))<span class='macro_popup'>((((PlumaDocument*) (void *) ((gtk_text_view_get_buffer (((((<br>GtkTextView*) (void *) ((view)))))))))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="773"><td class="num" id="LN773">773</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="774"><td class="num" id="LN774">774</td><td class="line"> clipboard = gtk_widget_get_clipboard (<span class='macro'>GTK_WIDGET (window)<span class='macro_popup'>((((GtkWidget*) (void *) ((window)))))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="775"><td class="num" id="LN775">775</td><td class="line"> <span class='macro'>GDK_SELECTION_CLIPBOARD<span class='macro_popup'>((GdkAtom)((gpointer) (gulong) (69)))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="776"><td class="num" id="LN776">776</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="777"><td class="num" id="LN777">777</td><td class="line"> action = gtk_action_group_get_action (window-&gt;priv-&gt;action_group,</td></tr>
+<tr class="codeline" data-linenumber="778"><td class="num" id="LN778">778</td><td class="line"> <span class='string_literal'>"FileSave"</span>);</td></tr>
+<tr class="codeline" data-linenumber="779"><td class="num" id="LN779">779</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="780"><td class="num" id="LN780">780</td><td class="line"> <span class='keyword'>if</span> (state == PLUMA_TAB_STATE_EXTERNALLY_MODIFIED_NOTIFICATION) {</td></tr>
+<tr class="codeline" data-linenumber="781"><td class="num" id="LN781">781</td><td class="line"> gtk_text_buffer_set_modified (<span class='macro'>GTK_TEXT_BUFFER (doc)<span class='macro_popup'>((((GtkTextBuffer*) (void *) ((doc)))))</span></span>, <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="782"><td class="num" id="LN782">782</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="783"><td class="num" id="LN783">783</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="784"><td class="num" id="LN784">784</td><td class="line"> gtk_action_set_sensitive (action,</td></tr>
+<tr class="codeline" data-linenumber="785"><td class="num" id="LN785">785</td><td class="line"> (state_normal ||</td></tr>
+<tr class="codeline" data-linenumber="786"><td class="num" id="LN786">786</td><td class="line"> (state == PLUMA_TAB_STATE_EXTERNALLY_MODIFIED_NOTIFICATION) ||</td></tr>
+<tr class="codeline" data-linenumber="787"><td class="num" id="LN787">787</td><td class="line"> (state == PLUMA_TAB_STATE_SHOWING_PRINT_PREVIEW)) &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="788"><td class="num" id="LN788">788</td><td class="line"> !pluma_document_get_readonly (doc) &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="789"><td class="num" id="LN789">789</td><td class="line"> !(lockdown &amp; PLUMA_LOCKDOWN_SAVE_TO_DISK) &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="790"><td class="num" id="LN790">790</td><td class="line"> (cansave) &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="791"><td class="num" id="LN791">791</td><td class="line"> (editable));</td></tr>
+<tr class="codeline" data-linenumber="792"><td class="num" id="LN792">792</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="793"><td class="num" id="LN793">793</td><td class="line"> action = gtk_action_group_get_action (window-&gt;priv-&gt;action_group,</td></tr>
+<tr class="codeline" data-linenumber="794"><td class="num" id="LN794">794</td><td class="line"> <span class='string_literal'>"FileSaveAs"</span>);</td></tr>
+<tr class="codeline" data-linenumber="795"><td class="num" id="LN795">795</td><td class="line"> gtk_action_set_sensitive (action,</td></tr>
+<tr class="codeline" data-linenumber="796"><td class="num" id="LN796">796</td><td class="line"> (state_normal ||</td></tr>
+<tr class="codeline" data-linenumber="797"><td class="num" id="LN797">797</td><td class="line"> (state == PLUMA_TAB_STATE_SAVING_ERROR) ||</td></tr>
+<tr class="codeline" data-linenumber="798"><td class="num" id="LN798">798</td><td class="line"> (state == PLUMA_TAB_STATE_EXTERNALLY_MODIFIED_NOTIFICATION) ||</td></tr>
+<tr class="codeline" data-linenumber="799"><td class="num" id="LN799">799</td><td class="line"> (state == PLUMA_TAB_STATE_SHOWING_PRINT_PREVIEW)) &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="800"><td class="num" id="LN800">800</td><td class="line"> !(lockdown &amp; PLUMA_LOCKDOWN_SAVE_TO_DISK));</td></tr>
+<tr class="codeline" data-linenumber="801"><td class="num" id="LN801">801</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="802"><td class="num" id="LN802">802</td><td class="line"> action = gtk_action_group_get_action (window-&gt;priv-&gt;action_group,</td></tr>
+<tr class="codeline" data-linenumber="803"><td class="num" id="LN803">803</td><td class="line"> <span class='string_literal'>"FileRevert"</span>);</td></tr>
+<tr class="codeline" data-linenumber="804"><td class="num" id="LN804">804</td><td class="line"> gtk_action_set_sensitive (action,</td></tr>
+<tr class="codeline" data-linenumber="805"><td class="num" id="LN805">805</td><td class="line"> (state_normal ||</td></tr>
+<tr class="codeline" data-linenumber="806"><td class="num" id="LN806">806</td><td class="line"> (state == PLUMA_TAB_STATE_EXTERNALLY_MODIFIED_NOTIFICATION)) &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="807"><td class="num" id="LN807">807</td><td class="line"> !pluma_document_is_untitled (doc));</td></tr>
+<tr class="codeline" data-linenumber="808"><td class="num" id="LN808">808</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="809"><td class="num" id="LN809">809</td><td class="line"> action = gtk_action_group_get_action (window-&gt;priv-&gt;action_group,</td></tr>
+<tr class="codeline" data-linenumber="810"><td class="num" id="LN810">810</td><td class="line"> <span class='string_literal'>"FilePrintPreview"</span>);</td></tr>
+<tr class="codeline" data-linenumber="811"><td class="num" id="LN811">811</td><td class="line"> gtk_action_set_sensitive (action,</td></tr>
+<tr class="codeline" data-linenumber="812"><td class="num" id="LN812">812</td><td class="line"> state_normal &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="813"><td class="num" id="LN813">813</td><td class="line"> !(lockdown &amp; PLUMA_LOCKDOWN_PRINTING));</td></tr>
+<tr class="codeline" data-linenumber="814"><td class="num" id="LN814">814</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="815"><td class="num" id="LN815">815</td><td class="line"> action = gtk_action_group_get_action (window-&gt;priv-&gt;action_group,</td></tr>
+<tr class="codeline" data-linenumber="816"><td class="num" id="LN816">816</td><td class="line"> <span class='string_literal'>"FilePrint"</span>);</td></tr>
+<tr class="codeline" data-linenumber="817"><td class="num" id="LN817">817</td><td class="line"> gtk_action_set_sensitive (action,</td></tr>
+<tr class="codeline" data-linenumber="818"><td class="num" id="LN818">818</td><td class="line"> (state_normal ||</td></tr>
+<tr class="codeline" data-linenumber="819"><td class="num" id="LN819">819</td><td class="line"> (state == PLUMA_TAB_STATE_SHOWING_PRINT_PREVIEW)) &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="820"><td class="num" id="LN820">820</td><td class="line"> !(lockdown &amp; PLUMA_LOCKDOWN_PRINTING));</td></tr>
+<tr class="codeline" data-linenumber="821"><td class="num" id="LN821">821</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="822"><td class="num" id="LN822">822</td><td class="line"> action = gtk_action_group_get_action (window-&gt;priv-&gt;close_action_group,</td></tr>
+<tr class="codeline" data-linenumber="823"><td class="num" id="LN823">823</td><td class="line"> <span class='string_literal'>"FileClose"</span>);</td></tr>
+<tr class="codeline" data-linenumber="824"><td class="num" id="LN824">824</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="825"><td class="num" id="LN825">825</td><td class="line"> gtk_action_set_sensitive (action,</td></tr>
+<tr class="codeline" data-linenumber="826"><td class="num" id="LN826">826</td><td class="line"> (state != PLUMA_TAB_STATE_CLOSING) &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="827"><td class="num" id="LN827">827</td><td class="line"> (state != PLUMA_TAB_STATE_SAVING) &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="828"><td class="num" id="LN828">828</td><td class="line"> (state != PLUMA_TAB_STATE_SHOWING_PRINT_PREVIEW) &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="829"><td class="num" id="LN829">829</td><td class="line"> (state != PLUMA_TAB_STATE_PRINTING) &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="830"><td class="num" id="LN830">830</td><td class="line"> (state != PLUMA_TAB_STATE_PRINT_PREVIEWING) &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="831"><td class="num" id="LN831">831</td><td class="line"> (state != PLUMA_TAB_STATE_SAVING_ERROR));</td></tr>
+<tr class="codeline" data-linenumber="832"><td class="num" id="LN832">832</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="833"><td class="num" id="LN833">833</td><td class="line"> action = gtk_action_group_get_action (window-&gt;priv-&gt;action_group,</td></tr>
+<tr class="codeline" data-linenumber="834"><td class="num" id="LN834">834</td><td class="line"> <span class='string_literal'>"EditUndo"</span>);</td></tr>
+<tr class="codeline" data-linenumber="835"><td class="num" id="LN835">835</td><td class="line"> gtk_action_set_sensitive (action,</td></tr>
+<tr class="codeline" data-linenumber="836"><td class="num" id="LN836">836</td><td class="line"> state_normal &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="837"><td class="num" id="LN837">837</td><td class="line"> gtk_source_buffer_can_undo (<span class='macro'>GTK_SOURCE_BUFFER (doc)<span class='macro_popup'>((((GtkSourceBuffer*) (void *) ((doc)))))</span></span>));</td></tr>
+<tr class="codeline" data-linenumber="838"><td class="num" id="LN838">838</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="839"><td class="num" id="LN839">839</td><td class="line"> action = gtk_action_group_get_action (window-&gt;priv-&gt;action_group,</td></tr>
+<tr class="codeline" data-linenumber="840"><td class="num" id="LN840">840</td><td class="line"> <span class='string_literal'>"EditRedo"</span>);</td></tr>
+<tr class="codeline" data-linenumber="841"><td class="num" id="LN841">841</td><td class="line"> gtk_action_set_sensitive (action,</td></tr>
+<tr class="codeline" data-linenumber="842"><td class="num" id="LN842">842</td><td class="line"> state_normal &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="843"><td class="num" id="LN843">843</td><td class="line"> gtk_source_buffer_can_redo (<span class='macro'>GTK_SOURCE_BUFFER (doc)<span class='macro_popup'>((((GtkSourceBuffer*) (void *) ((doc)))))</span></span>));</td></tr>
+<tr class="codeline" data-linenumber="844"><td class="num" id="LN844">844</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="845"><td class="num" id="LN845">845</td><td class="line"> action = gtk_action_group_get_action (window-&gt;priv-&gt;action_group,</td></tr>
+<tr class="codeline" data-linenumber="846"><td class="num" id="LN846">846</td><td class="line"> <span class='string_literal'>"EditCut"</span>);</td></tr>
+<tr class="codeline" data-linenumber="847"><td class="num" id="LN847">847</td><td class="line"> gtk_action_set_sensitive (action,</td></tr>
+<tr class="codeline" data-linenumber="848"><td class="num" id="LN848">848</td><td class="line"> state_normal &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="849"><td class="num" id="LN849">849</td><td class="line"> editable &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="850"><td class="num" id="LN850">850</td><td class="line"> gtk_text_buffer_get_has_selection (<span class='macro'>GTK_TEXT_BUFFER (doc)<span class='macro_popup'>((((GtkTextBuffer*) (void *) ((doc)))))</span></span>));</td></tr>
+<tr class="codeline" data-linenumber="851"><td class="num" id="LN851">851</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="852"><td class="num" id="LN852">852</td><td class="line"> action = gtk_action_group_get_action (window-&gt;priv-&gt;action_group,</td></tr>
+<tr class="codeline" data-linenumber="853"><td class="num" id="LN853">853</td><td class="line"> <span class='string_literal'>"EditCopy"</span>);</td></tr>
+<tr class="codeline" data-linenumber="854"><td class="num" id="LN854">854</td><td class="line"> gtk_action_set_sensitive (action,</td></tr>
+<tr class="codeline" data-linenumber="855"><td class="num" id="LN855">855</td><td class="line"> (state_normal ||</td></tr>
+<tr class="codeline" data-linenumber="856"><td class="num" id="LN856">856</td><td class="line"> state == PLUMA_TAB_STATE_EXTERNALLY_MODIFIED_NOTIFICATION) &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="857"><td class="num" id="LN857">857</td><td class="line"> gtk_text_buffer_get_has_selection (<span class='macro'>GTK_TEXT_BUFFER (doc)<span class='macro_popup'>((((GtkTextBuffer*) (void *) ((doc)))))</span></span>));</td></tr>
+<tr class="codeline" data-linenumber="858"><td class="num" id="LN858">858</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="859"><td class="num" id="LN859">859</td><td class="line"> action = gtk_action_group_get_action (window-&gt;priv-&gt;action_group,</td></tr>
+<tr class="codeline" data-linenumber="860"><td class="num" id="LN860">860</td><td class="line"> <span class='string_literal'>"EditPaste"</span>);</td></tr>
+<tr class="codeline" data-linenumber="861"><td class="num" id="LN861">861</td><td class="line"> <span class='keyword'>if</span> (state_normal &amp;&amp; editable)</td></tr>
+<tr class="codeline" data-linenumber="862"><td class="num" id="LN862">862</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="863"><td class="num" id="LN863">863</td><td class="line"> set_paste_sensitivity_according_to_clipboard (window, clipboard);</td></tr>
+<tr class="codeline" data-linenumber="864"><td class="num" id="LN864">864</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="865"><td class="num" id="LN865">865</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="866"><td class="num" id="LN866">866</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="867"><td class="num" id="LN867">867</td><td class="line"> gtk_action_set_sensitive (action, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="868"><td class="num" id="LN868">868</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="869"><td class="num" id="LN869">869</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="870"><td class="num" id="LN870">870</td><td class="line"> action = gtk_action_group_get_action (window-&gt;priv-&gt;action_group,</td></tr>
+<tr class="codeline" data-linenumber="871"><td class="num" id="LN871">871</td><td class="line"> <span class='string_literal'>"EditDelete"</span>);</td></tr>
+<tr class="codeline" data-linenumber="872"><td class="num" id="LN872">872</td><td class="line"> gtk_action_set_sensitive (action,</td></tr>
+<tr class="codeline" data-linenumber="873"><td class="num" id="LN873">873</td><td class="line"> state_normal &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="874"><td class="num" id="LN874">874</td><td class="line"> editable &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="875"><td class="num" id="LN875">875</td><td class="line"> gtk_text_buffer_get_has_selection (<span class='macro'>GTK_TEXT_BUFFER (doc)<span class='macro_popup'>((((GtkTextBuffer*) (void *) ((doc)))))</span></span>));</td></tr>
+<tr class="codeline" data-linenumber="876"><td class="num" id="LN876">876</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="877"><td class="num" id="LN877">877</td><td class="line"> action = gtk_action_group_get_action (window-&gt;priv-&gt;action_group,</td></tr>
+<tr class="codeline" data-linenumber="878"><td class="num" id="LN878">878</td><td class="line"> <span class='string_literal'>"SearchFind"</span>);</td></tr>
+<tr class="codeline" data-linenumber="879"><td class="num" id="LN879">879</td><td class="line"> gtk_action_set_sensitive (action,</td></tr>
+<tr class="codeline" data-linenumber="880"><td class="num" id="LN880">880</td><td class="line"> (state_normal ||</td></tr>
+<tr class="codeline" data-linenumber="881"><td class="num" id="LN881">881</td><td class="line"> state == PLUMA_TAB_STATE_EXTERNALLY_MODIFIED_NOTIFICATION));</td></tr>
+<tr class="codeline" data-linenumber="882"><td class="num" id="LN882">882</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="883"><td class="num" id="LN883">883</td><td class="line"> action = gtk_action_group_get_action (window-&gt;priv-&gt;action_group,</td></tr>
+<tr class="codeline" data-linenumber="884"><td class="num" id="LN884">884</td><td class="line"> <span class='string_literal'>"SearchIncrementalSearch"</span>);</td></tr>
+<tr class="codeline" data-linenumber="885"><td class="num" id="LN885">885</td><td class="line"> gtk_action_set_sensitive (action,</td></tr>
+<tr class="codeline" data-linenumber="886"><td class="num" id="LN886">886</td><td class="line"> (state_normal ||</td></tr>
+<tr class="codeline" data-linenumber="887"><td class="num" id="LN887">887</td><td class="line"> state == PLUMA_TAB_STATE_EXTERNALLY_MODIFIED_NOTIFICATION));</td></tr>
+<tr class="codeline" data-linenumber="888"><td class="num" id="LN888">888</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="889"><td class="num" id="LN889">889</td><td class="line"> action = gtk_action_group_get_action (window-&gt;priv-&gt;action_group,</td></tr>
+<tr class="codeline" data-linenumber="890"><td class="num" id="LN890">890</td><td class="line"> <span class='string_literal'>"SearchReplace"</span>);</td></tr>
+<tr class="codeline" data-linenumber="891"><td class="num" id="LN891">891</td><td class="line"> gtk_action_set_sensitive (action,</td></tr>
+<tr class="codeline" data-linenumber="892"><td class="num" id="LN892">892</td><td class="line"> state_normal &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="893"><td class="num" id="LN893">893</td><td class="line"> editable);</td></tr>
+<tr class="codeline" data-linenumber="894"><td class="num" id="LN894">894</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="895"><td class="num" id="LN895">895</td><td class="line"> b = pluma_document_get_can_search_again (doc);</td></tr>
+<tr class="codeline" data-linenumber="896"><td class="num" id="LN896">896</td><td class="line"> action = gtk_action_group_get_action (window-&gt;priv-&gt;action_group,</td></tr>
+<tr class="codeline" data-linenumber="897"><td class="num" id="LN897">897</td><td class="line"> <span class='string_literal'>"SearchFindNext"</span>);</td></tr>
+<tr class="codeline" data-linenumber="898"><td class="num" id="LN898">898</td><td class="line"> gtk_action_set_sensitive (action,</td></tr>
+<tr class="codeline" data-linenumber="899"><td class="num" id="LN899">899</td><td class="line"> (state_normal ||</td></tr>
+<tr class="codeline" data-linenumber="900"><td class="num" id="LN900">900</td><td class="line"> state == PLUMA_TAB_STATE_EXTERNALLY_MODIFIED_NOTIFICATION) &amp;&amp; b);</td></tr>
+<tr class="codeline" data-linenumber="901"><td class="num" id="LN901">901</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="902"><td class="num" id="LN902">902</td><td class="line"> action = gtk_action_group_get_action (window-&gt;priv-&gt;action_group,</td></tr>
+<tr class="codeline" data-linenumber="903"><td class="num" id="LN903">903</td><td class="line"> <span class='string_literal'>"SearchFindPrevious"</span>);</td></tr>
+<tr class="codeline" data-linenumber="904"><td class="num" id="LN904">904</td><td class="line"> gtk_action_set_sensitive (action,</td></tr>
+<tr class="codeline" data-linenumber="905"><td class="num" id="LN905">905</td><td class="line"> (state_normal ||</td></tr>
+<tr class="codeline" data-linenumber="906"><td class="num" id="LN906">906</td><td class="line"> state == PLUMA_TAB_STATE_EXTERNALLY_MODIFIED_NOTIFICATION) &amp;&amp; b);</td></tr>
+<tr class="codeline" data-linenumber="907"><td class="num" id="LN907">907</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="908"><td class="num" id="LN908">908</td><td class="line"> action = gtk_action_group_get_action (window-&gt;priv-&gt;action_group,</td></tr>
+<tr class="codeline" data-linenumber="909"><td class="num" id="LN909">909</td><td class="line"> <span class='string_literal'>"SearchClearHighlight"</span>);</td></tr>
+<tr class="codeline" data-linenumber="910"><td class="num" id="LN910">910</td><td class="line"> gtk_action_set_sensitive (action,</td></tr>
+<tr class="codeline" data-linenumber="911"><td class="num" id="LN911">911</td><td class="line"> (state_normal ||</td></tr>
+<tr class="codeline" data-linenumber="912"><td class="num" id="LN912">912</td><td class="line"> state == PLUMA_TAB_STATE_EXTERNALLY_MODIFIED_NOTIFICATION) &amp;&amp; b);</td></tr>
+<tr class="codeline" data-linenumber="913"><td class="num" id="LN913">913</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="914"><td class="num" id="LN914">914</td><td class="line"> action = gtk_action_group_get_action (window-&gt;priv-&gt;action_group,</td></tr>
+<tr class="codeline" data-linenumber="915"><td class="num" id="LN915">915</td><td class="line"> <span class='string_literal'>"SearchGoToLine"</span>);</td></tr>
+<tr class="codeline" data-linenumber="916"><td class="num" id="LN916">916</td><td class="line"> gtk_action_set_sensitive (action,</td></tr>
+<tr class="codeline" data-linenumber="917"><td class="num" id="LN917">917</td><td class="line"> (state_normal ||</td></tr>
+<tr class="codeline" data-linenumber="918"><td class="num" id="LN918">918</td><td class="line"> state == PLUMA_TAB_STATE_EXTERNALLY_MODIFIED_NOTIFICATION));</td></tr>
+<tr class="codeline" data-linenumber="919"><td class="num" id="LN919">919</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="920"><td class="num" id="LN920">920</td><td class="line"> action = gtk_action_group_get_action (window-&gt;priv-&gt;action_group,</td></tr>
+<tr class="codeline" data-linenumber="921"><td class="num" id="LN921">921</td><td class="line"> <span class='string_literal'>"ViewHighlightMode"</span>);</td></tr>
+<tr class="codeline" data-linenumber="922"><td class="num" id="LN922">922</td><td class="line"> gtk_action_set_sensitive (action,</td></tr>
+<tr class="codeline" data-linenumber="923"><td class="num" id="LN923">923</td><td class="line"> (state != PLUMA_TAB_STATE_CLOSING) &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="924"><td class="num" id="LN924">924</td><td class="line"> enable_syntax_highlighting);</td></tr>
+<tr class="codeline" data-linenumber="925"><td class="num" id="LN925">925</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="926"><td class="num" id="LN926">926</td><td class="line"> update_next_prev_doc_sensitivity (window, tab);</td></tr>
+<tr class="codeline" data-linenumber="927"><td class="num" id="LN927">927</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="928"><td class="num" id="LN928">928</td><td class="line"> peas_extension_set_call (window-&gt;priv-&gt;extensions, <span class='string_literal'>"update_state"</span>);</td></tr>
+<tr class="codeline" data-linenumber="929"><td class="num" id="LN929">929</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="930"><td class="num" id="LN930">930</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="931"><td class="num" id="LN931">931</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="932"><td class="num" id="LN932">932</td><td class="line">language_toggled (GtkToggleAction *action,</td></tr>
+<tr class="codeline" data-linenumber="933"><td class="num" id="LN933">933</td><td class="line"> PlumaWindow *window)</td></tr>
+<tr class="codeline" data-linenumber="934"><td class="num" id="LN934">934</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="935"><td class="num" id="LN935">935</td><td class="line"> PlumaDocument *doc;</td></tr>
+<tr class="codeline" data-linenumber="936"><td class="num" id="LN936">936</td><td class="line"> GtkSourceLanguage *lang;</td></tr>
+<tr class="codeline" data-linenumber="937"><td class="num" id="LN937">937</td><td class="line"> <span class='keyword'>const</span> gchar *lang_id;</td></tr>
+<tr class="codeline" data-linenumber="938"><td class="num" id="LN938">938</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="939"><td class="num" id="LN939">939</td><td class="line"> <span class='keyword'>if</span> (gtk_toggle_action_get_active (action) == <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="940"><td class="num" id="LN940">940</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="941"><td class="num" id="LN941">941</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="942"><td class="num" id="LN942">942</td><td class="line"> doc = pluma_window_get_active_document (window);</td></tr>
+<tr class="codeline" data-linenumber="943"><td class="num" id="LN943">943</td><td class="line"> <span class='keyword'>if</span> (doc == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="944"><td class="num" id="LN944">944</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="945"><td class="num" id="LN945">945</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="946"><td class="num" id="LN946">946</td><td class="line"> lang_id = gtk_action_get_name (<span class='macro'>GTK_ACTION (action)<span class='macro_popup'>((((GtkAction*) (void *) ((action)))))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="947"><td class="num" id="LN947">947</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="948"><td class="num" id="LN948">948</td><td class="line"> <span class='keyword'>if</span> (strcmp (lang_id, <span class='macro'>LANGUAGE_NONE<span class='macro_popup'>(const gchar *)"LangNone"</span></span>) == 0)</td></tr>
+<tr class="codeline" data-linenumber="949"><td class="num" id="LN949">949</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="950"><td class="num" id="LN950">950</td><td class="line"> <span class='comment'>/* Normal (no highlighting) */</span></td></tr>
+<tr class="codeline" data-linenumber="951"><td class="num" id="LN951">951</td><td class="line"> lang = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="952"><td class="num" id="LN952">952</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="953"><td class="num" id="LN953">953</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="954"><td class="num" id="LN954">954</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="955"><td class="num" id="LN955">955</td><td class="line"> lang = gtk_source_language_manager_get_language (pluma_get_language_manager (),</td></tr>
+<tr class="codeline" data-linenumber="956"><td class="num" id="LN956">956</td><td class="line"> lang_id);</td></tr>
+<tr class="codeline" data-linenumber="957"><td class="num" id="LN957">957</td><td class="line"> <span class='keyword'>if</span> (lang == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="958"><td class="num" id="LN958">958</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="959"><td class="num" id="LN959">959</td><td class="line"> g_warning (<span class='string_literal'>"Could not get language %s\n"</span>, lang_id);</td></tr>
+<tr class="codeline" data-linenumber="960"><td class="num" id="LN960">960</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="961"><td class="num" id="LN961">961</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="962"><td class="num" id="LN962">962</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="963"><td class="num" id="LN963">963</td><td class="line"> pluma_document_set_language (doc, lang);</td></tr>
+<tr class="codeline" data-linenumber="964"><td class="num" id="LN964">964</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="965"><td class="num" id="LN965">965</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="966"><td class="num" id="LN966">966</td><td class="line"><span class='keyword'>static</span> gchar *</td></tr>
+<tr class="codeline" data-linenumber="967"><td class="num" id="LN967">967</td><td class="line">escape_section_name (<span class='keyword'>const</span> gchar *name)</td></tr>
+<tr class="codeline" data-linenumber="968"><td class="num" id="LN968">968</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="969"><td class="num" id="LN969">969</td><td class="line"> gchar *ret;</td></tr>
+<tr class="codeline" data-linenumber="970"><td class="num" id="LN970">970</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="971"><td class="num" id="LN971">971</td><td class="line"> ret = g_markup_escape_text (name, -1);</td></tr>
+<tr class="codeline" data-linenumber="972"><td class="num" id="LN972">972</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="973"><td class="num" id="LN973">973</td><td class="line"> <span class='comment'>/* Replace '/' with '-' to avoid problems in xml paths */</span></td></tr>
+<tr class="codeline" data-linenumber="974"><td class="num" id="LN974">974</td><td class="line"> g_strdelimit (ret, <span class='string_literal'>"/"</span>, '-');</td></tr>
+<tr class="codeline" data-linenumber="975"><td class="num" id="LN975">975</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="976"><td class="num" id="LN976">976</td><td class="line"> <span class='keyword'>return</span> ret;</td></tr>
+<tr class="codeline" data-linenumber="977"><td class="num" id="LN977">977</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="978"><td class="num" id="LN978">978</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="979"><td class="num" id="LN979">979</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="980"><td class="num" id="LN980">980</td><td class="line">create_language_menu_item (GtkSourceLanguage *lang,</td></tr>
+<tr class="codeline" data-linenumber="981"><td class="num" id="LN981">981</td><td class="line"> gint index,</td></tr>
+<tr class="codeline" data-linenumber="982"><td class="num" id="LN982">982</td><td class="line"> guint ui_id,</td></tr>
+<tr class="codeline" data-linenumber="983"><td class="num" id="LN983">983</td><td class="line"> PlumaWindow *window)</td></tr>
+<tr class="codeline" data-linenumber="984"><td class="num" id="LN984">984</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="985"><td class="num" id="LN985">985</td><td class="line"> GtkAction *section_action;</td></tr>
+<tr class="codeline" data-linenumber="986"><td class="num" id="LN986">986</td><td class="line"> GtkRadioAction *action;</td></tr>
+<tr class="codeline" data-linenumber="987"><td class="num" id="LN987">987</td><td class="line"> GtkAction *normal_action;</td></tr>
+<tr class="codeline" data-linenumber="988"><td class="num" id="LN988">988</td><td class="line"> GSList *group;</td></tr>
+<tr class="codeline" data-linenumber="989"><td class="num" id="LN989">989</td><td class="line"> <span class='keyword'>const</span> gchar *section;</td></tr>
+<tr class="codeline" data-linenumber="990"><td class="num" id="LN990">990</td><td class="line"> gchar *escaped_section;</td></tr>
+<tr class="codeline" data-linenumber="991"><td class="num" id="LN991">991</td><td class="line"> <span class='keyword'>const</span> gchar *lang_id;</td></tr>
+<tr class="codeline" data-linenumber="992"><td class="num" id="LN992">992</td><td class="line"> <span class='keyword'>const</span> gchar *lang_name;</td></tr>
+<tr class="codeline" data-linenumber="993"><td class="num" id="LN993">993</td><td class="line"> gchar *escaped_lang_name;</td></tr>
+<tr class="codeline" data-linenumber="994"><td class="num" id="LN994">994</td><td class="line"> gchar *tip;</td></tr>
+<tr class="codeline" data-linenumber="995"><td class="num" id="LN995">995</td><td class="line"> gchar *path;</td></tr>
+<tr class="codeline" data-linenumber="996"><td class="num" id="LN996">996</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="997"><td class="num" id="LN997">997</td><td class="line"> section = gtk_source_language_get_section (lang);</td></tr>
+<tr class="codeline" data-linenumber="998"><td class="num" id="LN998">998</td><td class="line"> escaped_section = escape_section_name (section);</td></tr>
+<tr class="codeline" data-linenumber="999"><td class="num" id="LN999">999</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1000"><td class="num" id="LN1000">1000</td><td class="line"> <span class='comment'>/* check if the section submenu exists or create it */</span></td></tr>
+<tr class="codeline" data-linenumber="1001"><td class="num" id="LN1001">1001</td><td class="line"> section_action = gtk_action_group_get_action (window-&gt;priv-&gt;languages_action_group,</td></tr>
+<tr class="codeline" data-linenumber="1002"><td class="num" id="LN1002">1002</td><td class="line"> escaped_section);</td></tr>
+<tr class="codeline" data-linenumber="1003"><td class="num" id="LN1003">1003</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1004"><td class="num" id="LN1004">1004</td><td class="line"> <span class='keyword'>if</span> (section_action == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="1005"><td class="num" id="LN1005">1005</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="1006"><td class="num" id="LN1006">1006</td><td class="line"> gchar *section_name;</td></tr>
+<tr class="codeline" data-linenumber="1007"><td class="num" id="LN1007">1007</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1008"><td class="num" id="LN1008">1008</td><td class="line"> section_name = pluma_utils_escape_underscores (section, -1);</td></tr>
+<tr class="codeline" data-linenumber="1009"><td class="num" id="LN1009">1009</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1010"><td class="num" id="LN1010">1010</td><td class="line"> section_action = gtk_action_new (escaped_section,</td></tr>
+<tr class="codeline" data-linenumber="1011"><td class="num" id="LN1011">1011</td><td class="line"> section_name,</td></tr>
+<tr class="codeline" data-linenumber="1012"><td class="num" id="LN1012">1012</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="1013"><td class="num" id="LN1013">1013</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1014"><td class="num" id="LN1014">1014</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1015"><td class="num" id="LN1015">1015</td><td class="line"> g_free (section_name);</td></tr>
+<tr class="codeline" data-linenumber="1016"><td class="num" id="LN1016">1016</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1017"><td class="num" id="LN1017">1017</td><td class="line"> gtk_action_group_add_action (window-&gt;priv-&gt;languages_action_group,</td></tr>
+<tr class="codeline" data-linenumber="1018"><td class="num" id="LN1018">1018</td><td class="line"> section_action);</td></tr>
+<tr class="codeline" data-linenumber="1019"><td class="num" id="LN1019">1019</td><td class="line"> g_object_unref (section_action);</td></tr>
+<tr class="codeline" data-linenumber="1020"><td class="num" id="LN1020">1020</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1021"><td class="num" id="LN1021">1021</td><td class="line"> gtk_ui_manager_add_ui (window-&gt;priv-&gt;manager,</td></tr>
+<tr class="codeline" data-linenumber="1022"><td class="num" id="LN1022">1022</td><td class="line"> ui_id,</td></tr>
+<tr class="codeline" data-linenumber="1023"><td class="num" id="LN1023">1023</td><td class="line"> <span class='string_literal'>"/MenuBar/ViewMenu/ViewHighlightModeMenu/LanguagesMenuPlaceholder"</span>,</td></tr>
+<tr class="codeline" data-linenumber="1024"><td class="num" id="LN1024">1024</td><td class="line"> escaped_section,</td></tr>
+<tr class="codeline" data-linenumber="1025"><td class="num" id="LN1025">1025</td><td class="line"> escaped_section,</td></tr>
+<tr class="codeline" data-linenumber="1026"><td class="num" id="LN1026">1026</td><td class="line"> GTK_UI_MANAGER_MENU,</td></tr>
+<tr class="codeline" data-linenumber="1027"><td class="num" id="LN1027">1027</td><td class="line"> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1028"><td class="num" id="LN1028">1028</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1029"><td class="num" id="LN1029">1029</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1030"><td class="num" id="LN1030">1030</td><td class="line"> <span class='comment'>/* now add the language item to the section */</span></td></tr>
+<tr class="codeline" data-linenumber="1031"><td class="num" id="LN1031">1031</td><td class="line"> lang_name = gtk_source_language_get_name (lang);</td></tr>
+<tr class="codeline" data-linenumber="1032"><td class="num" id="LN1032">1032</td><td class="line"> lang_id = gtk_source_language_get_id (lang);</td></tr>
+<tr class="codeline" data-linenumber="1033"><td class="num" id="LN1033">1033</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1034"><td class="num" id="LN1034">1034</td><td class="line"> escaped_lang_name = pluma_utils_escape_underscores (lang_name, -1);</td></tr>
+<tr class="codeline" data-linenumber="1035"><td class="num" id="LN1035">1035</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1036"><td class="num" id="LN1036">1036</td><td class="line"> tip = g_strdup_printf (<span class='macro'>_(<span class='string_literal'>"Use %s highlight mode"</span>)<span class='macro_popup'>dcgettext (((void*)0), "Use %s highlight mode", 5)</span></span>, lang_name);</td></tr>
+<tr class="codeline" data-linenumber="1037"><td class="num" id="LN1037">1037</td><td class="line"> path = g_strdup_printf (<span class='string_literal'>"/MenuBar/ViewMenu/ViewHighlightModeMenu/LanguagesMenuPlaceholder/%s"</span>,</td></tr>
+<tr class="codeline" data-linenumber="1038"><td class="num" id="LN1038">1038</td><td class="line"> escaped_section);</td></tr>
+<tr class="codeline" data-linenumber="1039"><td class="num" id="LN1039">1039</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1040"><td class="num" id="LN1040">1040</td><td class="line"> action = gtk_radio_action_new (lang_id,</td></tr>
+<tr class="codeline" data-linenumber="1041"><td class="num" id="LN1041">1041</td><td class="line"> escaped_lang_name,</td></tr>
+<tr class="codeline" data-linenumber="1042"><td class="num" id="LN1042">1042</td><td class="line"> tip,</td></tr>
+<tr class="codeline" data-linenumber="1043"><td class="num" id="LN1043">1043</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="1044"><td class="num" id="LN1044">1044</td><td class="line"> index);</td></tr>
+<tr class="codeline" data-linenumber="1045"><td class="num" id="LN1045">1045</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1046"><td class="num" id="LN1046">1046</td><td class="line"> g_free (escaped_lang_name);</td></tr>
+<tr class="codeline" data-linenumber="1047"><td class="num" id="LN1047">1047</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1048"><td class="num" id="LN1048">1048</td><td class="line"> <span class='comment'>/* Action is added with a NULL accel to make the accel overridable */</span></td></tr>
+<tr class="codeline" data-linenumber="1049"><td class="num" id="LN1049">1049</td><td class="line"> gtk_action_group_add_action_with_accel (window-&gt;priv-&gt;languages_action_group,</td></tr>
+<tr class="codeline" data-linenumber="1050"><td class="num" id="LN1050">1050</td><td class="line"> <span class='macro'>GTK_ACTION (action)<span class='macro_popup'>((((GtkAction*) (void *) ((action)))))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="1051"><td class="num" id="LN1051">1051</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1052"><td class="num" id="LN1052">1052</td><td class="line"> g_object_unref (action);</td></tr>
+<tr class="codeline" data-linenumber="1053"><td class="num" id="LN1053">1053</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1054"><td class="num" id="LN1054">1054</td><td class="line"> <span class='comment'>/* add the action to the same radio group of the "Normal" action */</span></td></tr>
+<tr class="codeline" data-linenumber="1055"><td class="num" id="LN1055">1055</td><td class="line"> normal_action = gtk_action_group_get_action (window-&gt;priv-&gt;languages_action_group,</td></tr>
+<tr class="codeline" data-linenumber="1056"><td class="num" id="LN1056">1056</td><td class="line"> <span class='macro'>LANGUAGE_NONE<span class='macro_popup'>(const gchar *)"LangNone"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1057"><td class="num" id="LN1057">1057</td><td class="line"> group = gtk_radio_action_get_group (<span class='macro'>GTK_RADIO_ACTION (normal_action)<span class='macro_popup'>((((GtkRadioAction*) (void *) ((normal_action)))))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1058"><td class="num" id="LN1058">1058</td><td class="line"> gtk_radio_action_set_group (action, group);</td></tr>
+<tr class="codeline" data-linenumber="1059"><td class="num" id="LN1059">1059</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1060"><td class="num" id="LN1060">1060</td><td class="line"> <span class='macro'>g_signal_connect (action,<span class='macro_popup'>g_signal_connect_data ((action), ("activate"), (((GCallback) (<br>language_toggled))), (window), ((void*)0), (GConnectFlags) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="1061"><td class="num" id="LN1061">1061</td><td class="line"> <span class='string_literal'><span class='macro'>"activate"</span>,<span class='macro_popup'>g_signal_connect_data ((action), ("activate"), (((GCallback) (<br>language_toggled))), (window), ((void*)0), (GConnectFlags) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="1062"><td class="num" id="LN1062">1062</td><td class="line"> <span class='macro'>G_CALLBACK (language_toggled),<span class='macro_popup'>g_signal_connect_data ((action), ("activate"), (((GCallback) (<br>language_toggled))), (window), ((void*)0), (GConnectFlags) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="1063"><td class="num" id="LN1063">1063</td><td class="line"> <span class='macro'>window)<span class='macro_popup'>g_signal_connect_data ((action), ("activate"), (((GCallback) (<br>language_toggled))), (window), ((void*)0), (GConnectFlags) 0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1064"><td class="num" id="LN1064">1064</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1065"><td class="num" id="LN1065">1065</td><td class="line"> gtk_ui_manager_add_ui (window-&gt;priv-&gt;manager,</td></tr>
+<tr class="codeline" data-linenumber="1066"><td class="num" id="LN1066">1066</td><td class="line"> ui_id,</td></tr>
+<tr class="codeline" data-linenumber="1067"><td class="num" id="LN1067">1067</td><td class="line"> path,</td></tr>
+<tr class="codeline" data-linenumber="1068"><td class="num" id="LN1068">1068</td><td class="line"> lang_id,</td></tr>
+<tr class="codeline" data-linenumber="1069"><td class="num" id="LN1069">1069</td><td class="line"> lang_id,</td></tr>
+<tr class="codeline" data-linenumber="1070"><td class="num" id="LN1070">1070</td><td class="line"> GTK_UI_MANAGER_MENUITEM,</td></tr>
+<tr class="codeline" data-linenumber="1071"><td class="num" id="LN1071">1071</td><td class="line"> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1072"><td class="num" id="LN1072">1072</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1073"><td class="num" id="LN1073">1073</td><td class="line"> g_free (path);</td></tr>
+<tr class="codeline" data-linenumber="1074"><td class="num" id="LN1074">1074</td><td class="line"> g_free (tip);</td></tr>
+<tr class="codeline" data-linenumber="1075"><td class="num" id="LN1075">1075</td><td class="line"> g_free (escaped_section);</td></tr>
+<tr class="codeline" data-linenumber="1076"><td class="num" id="LN1076">1076</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1077"><td class="num" id="LN1077">1077</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1078"><td class="num" id="LN1078">1078</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1079"><td class="num" id="LN1079">1079</td><td class="line">create_languages_menu (PlumaWindow *window)</td></tr>
+<tr class="codeline" data-linenumber="1080"><td class="num" id="LN1080">1080</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1081"><td class="num" id="LN1081">1081</td><td class="line"> GtkRadioAction *action_none;</td></tr>
+<tr class="codeline" data-linenumber="1082"><td class="num" id="LN1082">1082</td><td class="line"> GSList *languages;</td></tr>
+<tr class="codeline" data-linenumber="1083"><td class="num" id="LN1083">1083</td><td class="line"> GSList *l;</td></tr>
+<tr class="codeline" data-linenumber="1084"><td class="num" id="LN1084">1084</td><td class="line"> guint id;</td></tr>
+<tr class="codeline" data-linenumber="1085"><td class="num" id="LN1085">1085</td><td class="line"> gint i;</td></tr>
+<tr class="codeline" data-linenumber="1086"><td class="num" id="LN1086">1086</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1087"><td class="num" id="LN1087">1087</td><td class="line"> pluma_debug (<span class='macro'>DEBUG_WINDOW<span class='macro_popup'>PLUMA_DEBUG_WINDOW, "pluma-window.c", 1087, ((const char*) (__func__<br>))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1088"><td class="num" id="LN1088">1088</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1089"><td class="num" id="LN1089">1089</td><td class="line"> <span class='comment'>/* add the "Plain Text" item before all the others */</span></td></tr>
+<tr class="codeline" data-linenumber="1090"><td class="num" id="LN1090">1090</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1091"><td class="num" id="LN1091">1091</td><td class="line"> <span class='comment'>/* Translators: "Plain Text" means that no highlight mode is selected in the</span></td></tr>
+<tr class="codeline" data-linenumber="1092"><td class="num" id="LN1092">1092</td><td class="line"> <span class='comment'>* "View-&gt;Highlight Mode" submenu and so syntax highlighting is disabled */</span></td></tr>
+<tr class="codeline" data-linenumber="1093"><td class="num" id="LN1093">1093</td><td class="line"> action_none = gtk_radio_action_new (<span class='macro'>LANGUAGE_NONE<span class='macro_popup'>(const gchar *)"LangNone"</span></span>, <span class='macro'>_(<span class='string_literal'>"Plain Text"</span>)<span class='macro_popup'>dcgettext (((void*)0), "Plain Text", 5)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="1094"><td class="num" id="LN1094">1094</td><td class="line"> <span class='macro'>_(<span class='string_literal'>"Disable syntax highlighting"</span>)<span class='macro_popup'>dcgettext (((void*)0), "Disable syntax highlighting", 5)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="1095"><td class="num" id="LN1095">1095</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="1096"><td class="num" id="LN1096">1096</td><td class="line"> -1);</td></tr>
+<tr class="codeline" data-linenumber="1097"><td class="num" id="LN1097">1097</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1098"><td class="num" id="LN1098">1098</td><td class="line"> gtk_action_group_add_action (window-&gt;priv-&gt;languages_action_group,</td></tr>
+<tr class="codeline" data-linenumber="1099"><td class="num" id="LN1099">1099</td><td class="line"> <span class='macro'>GTK_ACTION (action_none)<span class='macro_popup'>((((GtkAction*) (void *) ((action_none)))))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1100"><td class="num" id="LN1100">1100</td><td class="line"> g_object_unref (action_none);</td></tr>
+<tr class="codeline" data-linenumber="1101"><td class="num" id="LN1101">1101</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1102"><td class="num" id="LN1102">1102</td><td class="line"> <span class='macro'>g_signal_connect (action_none,<span class='macro_popup'>g_signal_connect_data ((action_none), ("activate"), (((GCallback<br>) (language_toggled))), (window), ((void*)0), (GConnectFlags)<br> 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="1103"><td class="num" id="LN1103">1103</td><td class="line"> <span class='string_literal'><span class='macro'>"activate"</span>,<span class='macro_popup'>g_signal_connect_data ((action_none), ("activate"), (((GCallback<br>) (language_toggled))), (window), ((void*)0), (GConnectFlags)<br> 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="1104"><td class="num" id="LN1104">1104</td><td class="line"> <span class='macro'>G_CALLBACK (language_toggled),<span class='macro_popup'>g_signal_connect_data ((action_none), ("activate"), (((GCallback<br>) (language_toggled))), (window), ((void*)0), (GConnectFlags)<br> 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="1105"><td class="num" id="LN1105">1105</td><td class="line"> <span class='macro'>window)<span class='macro_popup'>g_signal_connect_data ((action_none), ("activate"), (((GCallback<br>) (language_toggled))), (window), ((void*)0), (GConnectFlags)<br> 0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1106"><td class="num" id="LN1106">1106</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1107"><td class="num" id="LN1107">1107</td><td class="line"> id = gtk_ui_manager_new_merge_id (window-&gt;priv-&gt;manager);</td></tr>
+<tr class="codeline" data-linenumber="1108"><td class="num" id="LN1108">1108</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1109"><td class="num" id="LN1109">1109</td><td class="line"> gtk_ui_manager_add_ui (window-&gt;priv-&gt;manager,</td></tr>
+<tr class="codeline" data-linenumber="1110"><td class="num" id="LN1110">1110</td><td class="line"> id,</td></tr>
+<tr class="codeline" data-linenumber="1111"><td class="num" id="LN1111">1111</td><td class="line"> <span class='string_literal'>"/MenuBar/ViewMenu/ViewHighlightModeMenu/LanguagesMenuPlaceholder"</span>,</td></tr>
+<tr class="codeline" data-linenumber="1112"><td class="num" id="LN1112">1112</td><td class="line"> <span class='macro'>LANGUAGE_NONE<span class='macro_popup'>(const gchar *)"LangNone"</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="1113"><td class="num" id="LN1113">1113</td><td class="line"> <span class='macro'>LANGUAGE_NONE<span class='macro_popup'>(const gchar *)"LangNone"</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="1114"><td class="num" id="LN1114">1114</td><td class="line"> GTK_UI_MANAGER_MENUITEM,</td></tr>
+<tr class="codeline" data-linenumber="1115"><td class="num" id="LN1115">1115</td><td class="line"> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1116"><td class="num" id="LN1116">1116</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1117"><td class="num" id="LN1117">1117</td><td class="line"> gtk_toggle_action_set_active (<span class='macro'>GTK_TOGGLE_ACTION (action_none)<span class='macro_popup'>((((GtkToggleAction*) (void *) ((action_none)))))</span></span>, <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1118"><td class="num" id="LN1118">1118</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1119"><td class="num" id="LN1119">1119</td><td class="line"> <span class='comment'>/* now add all the known languages */</span></td></tr>
+<tr class="codeline" data-linenumber="1120"><td class="num" id="LN1120">1120</td><td class="line"> languages = pluma_language_manager_list_languages_sorted (pluma_get_language_manager (),</td></tr>
+<tr class="codeline" data-linenumber="1121"><td class="num" id="LN1121">1121</td><td class="line"> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1122"><td class="num" id="LN1122">1122</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1123"><td class="num" id="LN1123">1123</td><td class="line"> <span class='keyword'>for</span> (l = languages, i = 0; l != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>; l = l-&gt;next, ++i)</td></tr>
+<tr class="codeline" data-linenumber="1124"><td class="num" id="LN1124">1124</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="1125"><td class="num" id="LN1125">1125</td><td class="line"> create_language_menu_item (l-&gt;data,</td></tr>
+<tr class="codeline" data-linenumber="1126"><td class="num" id="LN1126">1126</td><td class="line"> i,</td></tr>
+<tr class="codeline" data-linenumber="1127"><td class="num" id="LN1127">1127</td><td class="line"> id,</td></tr>
+<tr class="codeline" data-linenumber="1128"><td class="num" id="LN1128">1128</td><td class="line"> window);</td></tr>
+<tr class="codeline" data-linenumber="1129"><td class="num" id="LN1129">1129</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1130"><td class="num" id="LN1130">1130</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1131"><td class="num" id="LN1131">1131</td><td class="line"> g_slist_free (languages);</td></tr>
+<tr class="codeline" data-linenumber="1132"><td class="num" id="LN1132">1132</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1133"><td class="num" id="LN1133">1133</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1134"><td class="num" id="LN1134">1134</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1135"><td class="num" id="LN1135">1135</td><td class="line">update_languages_menu (PlumaWindow *window)</td></tr>
+<tr class="codeline" data-linenumber="1136"><td class="num" id="LN1136">1136</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1137"><td class="num" id="LN1137">1137</td><td class="line"> PlumaDocument *doc;</td></tr>
+<tr class="codeline" data-linenumber="1138"><td class="num" id="LN1138">1138</td><td class="line"> GList *actions;</td></tr>
+<tr class="codeline" data-linenumber="1139"><td class="num" id="LN1139">1139</td><td class="line"> GList *l;</td></tr>
+<tr class="codeline" data-linenumber="1140"><td class="num" id="LN1140">1140</td><td class="line"> GtkAction *action;</td></tr>
+<tr class="codeline" data-linenumber="1141"><td class="num" id="LN1141">1141</td><td class="line"> GtkSourceLanguage *lang;</td></tr>
+<tr class="codeline" data-linenumber="1142"><td class="num" id="LN1142">1142</td><td class="line"> <span class='keyword'>const</span> gchar *lang_id;</td></tr>
+<tr class="codeline" data-linenumber="1143"><td class="num" id="LN1143">1143</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1144"><td class="num" id="LN1144">1144</td><td class="line"> doc = pluma_window_get_active_document (window);</td></tr>
+<tr class="codeline" data-linenumber="1145"><td class="num" id="LN1145">1145</td><td class="line"> <span class='keyword'>if</span> (doc == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="1146"><td class="num" id="LN1146">1146</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="1147"><td class="num" id="LN1147">1147</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1148"><td class="num" id="LN1148">1148</td><td class="line"> lang = pluma_document_get_language (doc);</td></tr>
+<tr class="codeline" data-linenumber="1149"><td class="num" id="LN1149">1149</td><td class="line"> <span class='keyword'>if</span> (lang != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="1150"><td class="num" id="LN1150">1150</td><td class="line"> lang_id = gtk_source_language_get_id (lang);</td></tr>
+<tr class="codeline" data-linenumber="1151"><td class="num" id="LN1151">1151</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="1152"><td class="num" id="LN1152">1152</td><td class="line"> lang_id = <span class='macro'>LANGUAGE_NONE<span class='macro_popup'>(const gchar *)"LangNone"</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1153"><td class="num" id="LN1153">1153</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1154"><td class="num" id="LN1154">1154</td><td class="line"> actions = gtk_action_group_list_actions (window-&gt;priv-&gt;languages_action_group);</td></tr>
+<tr class="codeline" data-linenumber="1155"><td class="num" id="LN1155">1155</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1156"><td class="num" id="LN1156">1156</td><td class="line"> <span class='comment'>/* prevent recursion */</span></td></tr>
+<tr class="codeline" data-linenumber="1157"><td class="num" id="LN1157">1157</td><td class="line"> <span class='keyword'>for</span> (l = actions; l != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>; l = l-&gt;next)</td></tr>
+<tr class="codeline" data-linenumber="1158"><td class="num" id="LN1158">1158</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="1159"><td class="num" id="LN1159">1159</td><td class="line"> <span class='macro'>g_signal_handlers_block_by_func (GTK_ACTION (l-&gt;data),<span class='macro_popup'>g_signal_handlers_block_matched ((((((GtkAction*) (void *) ((<br>l-&gt;data)))))), (GSignalMatchType) (G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA<br>), 0, 0, ((void*)0), (((GCallback) (language_toggled))), (window<br>))</span></span></td></tr>
+<tr class="codeline" data-linenumber="1160"><td class="num" id="LN1160">1160</td><td class="line"> <span class='macro'>G_CALLBACK (language_toggled),<span class='macro_popup'>g_signal_handlers_block_matched ((((((GtkAction*) (void *) ((<br>l-&gt;data)))))), (GSignalMatchType) (G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA<br>), 0, 0, ((void*)0), (((GCallback) (language_toggled))), (window<br>))</span></span></td></tr>
+<tr class="codeline" data-linenumber="1161"><td class="num" id="LN1161">1161</td><td class="line"> <span class='macro'>window)<span class='macro_popup'>g_signal_handlers_block_matched ((((((GtkAction*) (void *) ((<br>l-&gt;data)))))), (GSignalMatchType) (G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA<br>), 0, 0, ((void*)0), (((GCallback) (language_toggled))), (window<br>))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1162"><td class="num" id="LN1162">1162</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1163"><td class="num" id="LN1163">1163</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1164"><td class="num" id="LN1164">1164</td><td class="line"> action = gtk_action_group_get_action (window-&gt;priv-&gt;languages_action_group,</td></tr>
+<tr class="codeline" data-linenumber="1165"><td class="num" id="LN1165">1165</td><td class="line"> lang_id);</td></tr>
+<tr class="codeline" data-linenumber="1166"><td class="num" id="LN1166">1166</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1167"><td class="num" id="LN1167">1167</td><td class="line"> gtk_toggle_action_set_active (<span class='macro'>GTK_TOGGLE_ACTION (action)<span class='macro_popup'>((((GtkToggleAction*) (void *) ((action)))))</span></span>, <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1168"><td class="num" id="LN1168">1168</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1169"><td class="num" id="LN1169">1169</td><td class="line"> <span class='keyword'>for</span> (l = actions; l != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>; l = l-&gt;next)</td></tr>
+<tr class="codeline" data-linenumber="1170"><td class="num" id="LN1170">1170</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="1171"><td class="num" id="LN1171">1171</td><td class="line"> <span class='macro'>g_signal_handlers_unblock_by_func (GTK_ACTION (l-&gt;data),<span class='macro_popup'>g_signal_handlers_unblock_matched ((((((GtkAction*) (void *) (<br>(l-&gt;data)))))), (GSignalMatchType) (G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA<br>), 0, 0, ((void*)0), (((GCallback) (language_toggled))), (window<br>))</span></span></td></tr>
+<tr class="codeline" data-linenumber="1172"><td class="num" id="LN1172">1172</td><td class="line"> <span class='macro'>G_CALLBACK (language_toggled),<span class='macro_popup'>g_signal_handlers_unblock_matched ((((((GtkAction*) (void *) (<br>(l-&gt;data)))))), (GSignalMatchType) (G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA<br>), 0, 0, ((void*)0), (((GCallback) (language_toggled))), (window<br>))</span></span></td></tr>
+<tr class="codeline" data-linenumber="1173"><td class="num" id="LN1173">1173</td><td class="line"> <span class='macro'>window)<span class='macro_popup'>g_signal_handlers_unblock_matched ((((((GtkAction*) (void *) (<br>(l-&gt;data)))))), (GSignalMatchType) (G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA<br>), 0, 0, ((void*)0), (((GCallback) (language_toggled))), (window<br>))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1174"><td class="num" id="LN1174">1174</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1175"><td class="num" id="LN1175">1175</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1176"><td class="num" id="LN1176">1176</td><td class="line"> g_list_free (actions);</td></tr>
+<tr class="codeline" data-linenumber="1177"><td class="num" id="LN1177">1177</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1178"><td class="num" id="LN1178">1178</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1179"><td class="num" id="LN1179">1179</td><td class="line"><span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1180"><td class="num" id="LN1180">1180</td><td class="line">_pluma_recent_add (PlumaWindow *window,</td></tr>
+<tr class="codeline" data-linenumber="1181"><td class="num" id="LN1181">1181</td><td class="line"> <span class='keyword'>const</span> gchar *uri,</td></tr>
+<tr class="codeline" data-linenumber="1182"><td class="num" id="LN1182">1182</td><td class="line"> <span class='keyword'>const</span> gchar *mime)</td></tr>
+<tr class="codeline" data-linenumber="1183"><td class="num" id="LN1183">1183</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1184"><td class="num" id="LN1184">1184</td><td class="line"> GtkRecentManager *recent_manager;</td></tr>
+<tr class="codeline" data-linenumber="1185"><td class="num" id="LN1185">1185</td><td class="line"> GtkRecentData recent_data;</td></tr>
+<tr class="codeline" data-linenumber="1186"><td class="num" id="LN1186">1186</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1187"><td class="num" id="LN1187">1187</td><td class="line"> <span class='keyword'>static</span> gchar *groups[2] = {</td></tr>
+<tr class="codeline" data-linenumber="1188"><td class="num" id="LN1188">1188</td><td class="line"> <span class='string_literal'>"pluma"</span>,</td></tr>
+<tr class="codeline" data-linenumber="1189"><td class="num" id="LN1189">1189</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="1190"><td class="num" id="LN1190">1190</td><td class="line"> };</td></tr>
+<tr class="codeline" data-linenumber="1191"><td class="num" id="LN1191">1191</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1192"><td class="num" id="LN1192">1192</td><td class="line"> recent_manager = gtk_recent_manager_get_default ();</td></tr>
+<tr class="codeline" data-linenumber="1193"><td class="num" id="LN1193">1193</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1194"><td class="num" id="LN1194">1194</td><td class="line"> recent_data.display_name = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1195"><td class="num" id="LN1195">1195</td><td class="line"> recent_data.description = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1196"><td class="num" id="LN1196">1196</td><td class="line"> recent_data.mime_type = (gchar *) mime;</td></tr>
+<tr class="codeline" data-linenumber="1197"><td class="num" id="LN1197">1197</td><td class="line"> recent_data.app_name = (gchar *) g_get_application_name ();</td></tr>
+<tr class="codeline" data-linenumber="1198"><td class="num" id="LN1198">1198</td><td class="line"> recent_data.app_exec = g_strjoin (<span class='string_literal'>" "</span>, g_get_prgname (), <span class='string_literal'>"%u"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1199"><td class="num" id="LN1199">1199</td><td class="line"> recent_data.groups = groups;</td></tr>
+<tr class="codeline" data-linenumber="1200"><td class="num" id="LN1200">1200</td><td class="line"> recent_data.is_private = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1201"><td class="num" id="LN1201">1201</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1202"><td class="num" id="LN1202">1202</td><td class="line"> gtk_recent_manager_add_full (recent_manager,</td></tr>
+<tr class="codeline" data-linenumber="1203"><td class="num" id="LN1203">1203</td><td class="line"> uri,</td></tr>
+<tr class="codeline" data-linenumber="1204"><td class="num" id="LN1204">1204</td><td class="line"> &amp;recent_data);</td></tr>
+<tr class="codeline" data-linenumber="1205"><td class="num" id="LN1205">1205</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1206"><td class="num" id="LN1206">1206</td><td class="line"> g_free (recent_data.app_exec);</td></tr>
+<tr class="codeline" data-linenumber="1207"><td class="num" id="LN1207">1207</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1208"><td class="num" id="LN1208">1208</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1209"><td class="num" id="LN1209">1209</td><td class="line"><span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1210"><td class="num" id="LN1210">1210</td><td class="line">_pluma_recent_remove (PlumaWindow *window,</td></tr>
+<tr class="codeline" data-linenumber="1211"><td class="num" id="LN1211">1211</td><td class="line"> <span class='keyword'>const</span> gchar *uri)</td></tr>
+<tr class="codeline" data-linenumber="1212"><td class="num" id="LN1212">1212</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1213"><td class="num" id="LN1213">1213</td><td class="line"> GtkRecentManager *recent_manager;</td></tr>
+<tr class="codeline" data-linenumber="1214"><td class="num" id="LN1214">1214</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1215"><td class="num" id="LN1215">1215</td><td class="line"> recent_manager = gtk_recent_manager_get_default ();</td></tr>
+<tr class="codeline" data-linenumber="1216"><td class="num" id="LN1216">1216</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1217"><td class="num" id="LN1217">1217</td><td class="line"> gtk_recent_manager_remove_item (recent_manager, uri, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1218"><td class="num" id="LN1218">1218</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1219"><td class="num" id="LN1219">1219</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1220"><td class="num" id="LN1220">1220</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1221"><td class="num" id="LN1221">1221</td><td class="line">open_recent_file (<span class='keyword'>const</span> gchar *uri,</td></tr>
+<tr class="codeline" data-linenumber="1222"><td class="num" id="LN1222">1222</td><td class="line"> PlumaWindow *window)</td></tr>
+<tr class="codeline" data-linenumber="1223"><td class="num" id="LN1223">1223</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1224"><td class="num" id="LN1224">1224</td><td class="line"> GSList *uris = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1225"><td class="num" id="LN1225">1225</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1226"><td class="num" id="LN1226">1226</td><td class="line"> uris = g_slist_prepend (uris, (gpointer) uri);</td></tr>
+<tr class="codeline" data-linenumber="1227"><td class="num" id="LN1227">1227</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1228"><td class="num" id="LN1228">1228</td><td class="line"> <span class='keyword'>if</span> (pluma_commands_load_uris (window, uris, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, 0) != 1)</td></tr>
+<tr class="codeline" data-linenumber="1229"><td class="num" id="LN1229">1229</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="1230"><td class="num" id="LN1230">1230</td><td class="line"> _pluma_recent_remove (window, uri);</td></tr>
+<tr class="codeline" data-linenumber="1231"><td class="num" id="LN1231">1231</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1232"><td class="num" id="LN1232">1232</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1233"><td class="num" id="LN1233">1233</td><td class="line"> g_slist_free (uris);</td></tr>
+<tr class="codeline" data-linenumber="1234"><td class="num" id="LN1234">1234</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1235"><td class="num" id="LN1235">1235</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1236"><td class="num" id="LN1236">1236</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1237"><td class="num" id="LN1237">1237</td><td class="line">recent_chooser_item_activated (GtkRecentChooser *chooser,</td></tr>
+<tr class="codeline" data-linenumber="1238"><td class="num" id="LN1238">1238</td><td class="line"> PlumaWindow *window)</td></tr>
+<tr class="codeline" data-linenumber="1239"><td class="num" id="LN1239">1239</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1240"><td class="num" id="LN1240">1240</td><td class="line"> gchar *uri;</td></tr>
+<tr class="codeline" data-linenumber="1241"><td class="num" id="LN1241">1241</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1242"><td class="num" id="LN1242">1242</td><td class="line"> uri = gtk_recent_chooser_get_current_uri (chooser);</td></tr>
+<tr class="codeline" data-linenumber="1243"><td class="num" id="LN1243">1243</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1244"><td class="num" id="LN1244">1244</td><td class="line"> open_recent_file (uri, window);</td></tr>
+<tr class="codeline" data-linenumber="1245"><td class="num" id="LN1245">1245</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1246"><td class="num" id="LN1246">1246</td><td class="line"> g_free (uri);</td></tr>
+<tr class="codeline" data-linenumber="1247"><td class="num" id="LN1247">1247</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1248"><td class="num" id="LN1248">1248</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1249"><td class="num" id="LN1249">1249</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1250"><td class="num" id="LN1250">1250</td><td class="line">recents_menu_activate (GtkAction *action,</td></tr>
+<tr class="codeline" data-linenumber="1251"><td class="num" id="LN1251">1251</td><td class="line"> PlumaWindow *window)</td></tr>
+<tr class="codeline" data-linenumber="1252"><td class="num" id="LN1252">1252</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1253"><td class="num" id="LN1253">1253</td><td class="line"> GtkRecentInfo *info;</td></tr>
+<tr class="codeline" data-linenumber="1254"><td class="num" id="LN1254">1254</td><td class="line"> <span class='keyword'>const</span> gchar *uri;</td></tr>
+<tr class="codeline" data-linenumber="1255"><td class="num" id="LN1255">1255</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1256"><td class="num" id="LN1256">1256</td><td class="line"> info = g_object_get_data (<span class='macro'>G_OBJECT (action)<span class='macro_popup'>((((GObject*) (void *) ((action)))))</span></span>, <span class='string_literal'>"gtk-recent-info"</span>);</td></tr>
+<tr class="codeline" data-linenumber="1257"><td class="num" id="LN1257">1257</td><td class="line"> <span class='macro'>g_return_if_fail (info != NULL)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_70<br>; if (info != ((void*)0)) _g_boolean_var_70 = 1; else _g_boolean_var_70<br> = 0; _g_boolean_var_70; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "info != NULL"); return<br>; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1258"><td class="num" id="LN1258">1258</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1259"><td class="num" id="LN1259">1259</td><td class="line"> uri = gtk_recent_info_get_uri (info);</td></tr>
+<tr class="codeline" data-linenumber="1260"><td class="num" id="LN1260">1260</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1261"><td class="num" id="LN1261">1261</td><td class="line"> open_recent_file (uri, window);</td></tr>
+<tr class="codeline" data-linenumber="1262"><td class="num" id="LN1262">1262</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1263"><td class="num" id="LN1263">1263</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1264"><td class="num" id="LN1264">1264</td><td class="line"><span class='keyword'>static</span> gint</td></tr>
+<tr class="codeline" data-linenumber="1265"><td class="num" id="LN1265">1265</td><td class="line">sort_recents_mru (GtkRecentInfo *a, GtkRecentInfo *b)</td></tr>
+<tr class="codeline" data-linenumber="1266"><td class="num" id="LN1266">1266</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1267"><td class="num" id="LN1267">1267</td><td class="line"> <span class='keyword'>return</span> (gtk_recent_info_get_modified (b) - gtk_recent_info_get_modified (a));</td></tr>
+<tr class="codeline" data-linenumber="1268"><td class="num" id="LN1268">1268</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1269"><td class="num" id="LN1269">1269</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1270"><td class="num" id="LN1270">1270</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span> update_recent_files_menu (PlumaWindow *window);</td></tr>
+<tr class="codeline" data-linenumber="1271"><td class="num" id="LN1271">1271</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1272"><td class="num" id="LN1272">1272</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1273"><td class="num" id="LN1273">1273</td><td class="line">recent_manager_changed (GtkRecentManager *manager,</td></tr>
+<tr class="codeline" data-linenumber="1274"><td class="num" id="LN1274">1274</td><td class="line"> PlumaWindow *window)</td></tr>
+<tr class="codeline" data-linenumber="1275"><td class="num" id="LN1275">1275</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1276"><td class="num" id="LN1276">1276</td><td class="line"> <span class='comment'>/* regenerate the menu when the model changes */</span></td></tr>
+<tr class="codeline" data-linenumber="1277"><td class="num" id="LN1277">1277</td><td class="line"> update_recent_files_menu (window);</td></tr>
+<tr class="codeline" data-linenumber="1278"><td class="num" id="LN1278">1278</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1279"><td class="num" id="LN1279">1279</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1280"><td class="num" id="LN1280">1280</td><td class="line"><span class='comment'>/*</span></td></tr>
+<tr class="codeline" data-linenumber="1281"><td class="num" id="LN1281">1281</td><td class="line"> <span class='comment'>* Manually construct the inline recents list in the File menu.</span></td></tr>
+<tr class="codeline" data-linenumber="1282"><td class="num" id="LN1282">1282</td><td class="line"> <span class='comment'>* Hopefully gtk 2.12 will add support for it.</span></td></tr>
+<tr class="codeline" data-linenumber="1283"><td class="num" id="LN1283">1283</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="1284"><td class="num" id="LN1284">1284</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1285"><td class="num" id="LN1285">1285</td><td class="line">update_recent_files_menu (PlumaWindow *window)</td></tr>
+<tr class="codeline" data-linenumber="1286"><td class="num" id="LN1286">1286</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1287"><td class="num" id="LN1287">1287</td><td class="line"> PlumaWindowPrivate *p = window-&gt;priv;</td></tr>
+<tr class="codeline" data-linenumber="1288"><td class="num" id="LN1288">1288</td><td class="line"> GtkRecentManager *recent_manager;</td></tr>
+<tr class="codeline" data-linenumber="1289"><td class="num" id="LN1289">1289</td><td class="line"> guint max_recents;</td></tr>
+<tr class="codeline" data-linenumber="1290"><td class="num" id="LN1290">1290</td><td class="line"> GList *actions, *l, *items;</td></tr>
+<tr class="codeline" data-linenumber="1291"><td class="num" id="LN1291">1291</td><td class="line"> GList *filtered_items = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1292"><td class="num" id="LN1292">1292</td><td class="line"> gint i;</td></tr>
+<tr class="codeline" data-linenumber="1293"><td class="num" id="LN1293">1293</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1294"><td class="num" id="LN1294">1294</td><td class="line"> pluma_debug (<span class='macro'>DEBUG_WINDOW<span class='macro_popup'>PLUMA_DEBUG_WINDOW, "pluma-window.c", 1294, ((const char*) (__func__<br>))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1295"><td class="num" id="LN1295">1295</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1296"><td class="num" id="LN1296">1296</td><td class="line"> max_recents = g_settings_get_uint (window-&gt;priv-&gt;editor_settings, <span class='macro'>PLUMA_SETTINGS_MAX_RECENTS<span class='macro_popup'>"max-recents"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1297"><td class="num" id="LN1297">1297</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1298"><td class="num" id="LN1298">1298</td><td class="line"> <span class='macro'>g_return_if_fail (p-&gt;recents_action_group != NULL)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_71<br>; if (p-&gt;recents_action_group != ((void*)0)) _g_boolean_var_71<br> = 1; else _g_boolean_var_71 = 0; _g_boolean_var_71; }), 1)))<br> { } else { g_return_if_fail_warning (((gchar*) 0), ((const char<br>*) (__func__)), "p-&gt;recents_action_group != NULL"); return<br>; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1299"><td class="num" id="LN1299">1299</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1300"><td class="num" id="LN1300">1300</td><td class="line"> <span class='keyword'>if</span> (p-&gt;recents_menu_ui_id != 0)</td></tr>
+<tr class="codeline" data-linenumber="1301"><td class="num" id="LN1301">1301</td><td class="line"> gtk_ui_manager_remove_ui (p-&gt;manager, p-&gt;recents_menu_ui_id);</td></tr>
+<tr class="codeline" data-linenumber="1302"><td class="num" id="LN1302">1302</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1303"><td class="num" id="LN1303">1303</td><td class="line"> actions = gtk_action_group_list_actions (p-&gt;recents_action_group);</td></tr>
+<tr class="codeline" data-linenumber="1304"><td class="num" id="LN1304">1304</td><td class="line"> <span class='keyword'>for</span> (l = actions; l != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>; l = l-&gt;next)</td></tr>
+<tr class="codeline" data-linenumber="1305"><td class="num" id="LN1305">1305</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="1306"><td class="num" id="LN1306">1306</td><td class="line"> <span class='macro'>g_signal_handlers_disconnect_by_func (GTK_ACTION (l-&gt;data),<span class='macro_popup'>g_signal_handlers_disconnect_matched ((((((GtkAction*) (void *<br>) ((l-&gt;data)))))), (GSignalMatchType) (G_SIGNAL_MATCH_FUNC<br> | G_SIGNAL_MATCH_DATA), 0, 0, ((void*)0), (((GCallback) (recents_menu_activate<br>))), (window))</span></span></td></tr>
+<tr class="codeline" data-linenumber="1307"><td class="num" id="LN1307">1307</td><td class="line"> <span class='macro'>G_CALLBACK (recents_menu_activate),<span class='macro_popup'>g_signal_handlers_disconnect_matched ((((((GtkAction*) (void *<br>) ((l-&gt;data)))))), (GSignalMatchType) (G_SIGNAL_MATCH_FUNC<br> | G_SIGNAL_MATCH_DATA), 0, 0, ((void*)0), (((GCallback) (recents_menu_activate<br>))), (window))</span></span></td></tr>
+<tr class="codeline" data-linenumber="1308"><td class="num" id="LN1308">1308</td><td class="line"> <span class='macro'>window)<span class='macro_popup'>g_signal_handlers_disconnect_matched ((((((GtkAction*) (void *<br>) ((l-&gt;data)))))), (GSignalMatchType) (G_SIGNAL_MATCH_FUNC<br> | G_SIGNAL_MATCH_DATA), 0, 0, ((void*)0), (((GCallback) (recents_menu_activate<br>))), (window))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1309"><td class="num" id="LN1309">1309</td><td class="line"> gtk_action_group_remove_action (p-&gt;recents_action_group,</td></tr>
+<tr class="codeline" data-linenumber="1310"><td class="num" id="LN1310">1310</td><td class="line"> <span class='macro'>GTK_ACTION (l-&gt;data)<span class='macro_popup'>((((GtkAction*) (void *) ((l-&gt;data)))))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1311"><td class="num" id="LN1311">1311</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1312"><td class="num" id="LN1312">1312</td><td class="line"> g_list_free (actions);</td></tr>
+<tr class="codeline" data-linenumber="1313"><td class="num" id="LN1313">1313</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1314"><td class="num" id="LN1314">1314</td><td class="line"> p-&gt;recents_menu_ui_id = gtk_ui_manager_new_merge_id (p-&gt;manager);</td></tr>
+<tr class="codeline" data-linenumber="1315"><td class="num" id="LN1315">1315</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1316"><td class="num" id="LN1316">1316</td><td class="line"> recent_manager = gtk_recent_manager_get_default ();</td></tr>
+<tr class="codeline" data-linenumber="1317"><td class="num" id="LN1317">1317</td><td class="line"> items = gtk_recent_manager_get_items (recent_manager);</td></tr>
+<tr class="codeline" data-linenumber="1318"><td class="num" id="LN1318">1318</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1319"><td class="num" id="LN1319">1319</td><td class="line"> <span class='comment'>/* filter */</span></td></tr>
+<tr class="codeline" data-linenumber="1320"><td class="num" id="LN1320">1320</td><td class="line"> <span class='keyword'>for</span> (l = items; l != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>; l = l-&gt;next)</td></tr>
+<tr class="codeline" data-linenumber="1321"><td class="num" id="LN1321">1321</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="1322"><td class="num" id="LN1322">1322</td><td class="line"> GtkRecentInfo *info = l-&gt;data;</td></tr>
+<tr class="codeline" data-linenumber="1323"><td class="num" id="LN1323">1323</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1324"><td class="num" id="LN1324">1324</td><td class="line"> <span class='keyword'>if</span> (!gtk_recent_info_has_group (info, <span class='string_literal'>"pluma"</span>))</td></tr>
+<tr class="codeline" data-linenumber="1325"><td class="num" id="LN1325">1325</td><td class="line"> <span class='keyword'>continue</span>;</td></tr>
+<tr class="codeline" data-linenumber="1326"><td class="num" id="LN1326">1326</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1327"><td class="num" id="LN1327">1327</td><td class="line"> filtered_items = g_list_prepend (filtered_items, info);</td></tr>
+<tr class="codeline" data-linenumber="1328"><td class="num" id="LN1328">1328</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1329"><td class="num" id="LN1329">1329</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1330"><td class="num" id="LN1330">1330</td><td class="line"> <span class='comment'>/* sort */</span></td></tr>
+<tr class="codeline" data-linenumber="1331"><td class="num" id="LN1331">1331</td><td class="line"> filtered_items = g_list_sort (filtered_items,</td></tr>
+<tr class="codeline" data-linenumber="1332"><td class="num" id="LN1332">1332</td><td class="line"> (GCompareFunc) sort_recents_mru);</td></tr>
+<tr class="codeline" data-linenumber="1333"><td class="num" id="LN1333">1333</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1334"><td class="num" id="LN1334">1334</td><td class="line"> i = 0;</td></tr>
+<tr class="codeline" data-linenumber="1335"><td class="num" id="LN1335">1335</td><td class="line"> <span class='keyword'>for</span> (l = filtered_items; l != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>; l = l-&gt;next)</td></tr>
+<tr class="codeline" data-linenumber="1336"><td class="num" id="LN1336">1336</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="1337"><td class="num" id="LN1337">1337</td><td class="line"> gchar *action_name;</td></tr>
+<tr class="codeline" data-linenumber="1338"><td class="num" id="LN1338">1338</td><td class="line"> <span class='keyword'>const</span> gchar *display_name;</td></tr>
+<tr class="codeline" data-linenumber="1339"><td class="num" id="LN1339">1339</td><td class="line"> gchar *escaped;</td></tr>
+<tr class="codeline" data-linenumber="1340"><td class="num" id="LN1340">1340</td><td class="line"> gchar *label;</td></tr>
+<tr class="codeline" data-linenumber="1341"><td class="num" id="LN1341">1341</td><td class="line"> gchar *uri;</td></tr>
+<tr class="codeline" data-linenumber="1342"><td class="num" id="LN1342">1342</td><td class="line"> gchar *ruri;</td></tr>
+<tr class="codeline" data-linenumber="1343"><td class="num" id="LN1343">1343</td><td class="line"> gchar *tip;</td></tr>
+<tr class="codeline" data-linenumber="1344"><td class="num" id="LN1344">1344</td><td class="line"> GtkAction *action;</td></tr>
+<tr class="codeline" data-linenumber="1345"><td class="num" id="LN1345">1345</td><td class="line"> GtkRecentInfo *info = l-&gt;data;</td></tr>
+<tr class="codeline" data-linenumber="1346"><td class="num" id="LN1346">1346</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1347"><td class="num" id="LN1347">1347</td><td class="line"> <span class='comment'>/* clamp */</span></td></tr>
+<tr class="codeline" data-linenumber="1348"><td class="num" id="LN1348">1348</td><td class="line"> <span class='keyword'>if</span> (i &gt;= max_recents)</td></tr>
+<tr class="codeline" data-linenumber="1349"><td class="num" id="LN1349">1349</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1350"><td class="num" id="LN1350">1350</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1351"><td class="num" id="LN1351">1351</td><td class="line"> i++;</td></tr>
+<tr class="codeline" data-linenumber="1352"><td class="num" id="LN1352">1352</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1353"><td class="num" id="LN1353">1353</td><td class="line"> action_name = g_strdup_printf (<span class='string_literal'>"recent-info-%d"</span>, i);</td></tr>
+<tr class="codeline" data-linenumber="1354"><td class="num" id="LN1354">1354</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1355"><td class="num" id="LN1355">1355</td><td class="line"> display_name = gtk_recent_info_get_display_name (info);</td></tr>
+<tr class="codeline" data-linenumber="1356"><td class="num" id="LN1356">1356</td><td class="line"> escaped = pluma_utils_escape_underscores (display_name, -1);</td></tr>
+<tr class="codeline" data-linenumber="1357"><td class="num" id="LN1357">1357</td><td class="line"> <span class='keyword'>if</span> (i &gt;= 10)</td></tr>
+<tr class="codeline" data-linenumber="1358"><td class="num" id="LN1358">1358</td><td class="line"> label = g_strdup_printf (<span class='string_literal'>"%d. %s"</span>,</td></tr>
+<tr class="codeline" data-linenumber="1359"><td class="num" id="LN1359">1359</td><td class="line"> i,</td></tr>
+<tr class="codeline" data-linenumber="1360"><td class="num" id="LN1360">1360</td><td class="line"> escaped);</td></tr>
+<tr class="codeline" data-linenumber="1361"><td class="num" id="LN1361">1361</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="1362"><td class="num" id="LN1362">1362</td><td class="line"> label = g_strdup_printf (<span class='string_literal'>"_%d. %s"</span>,</td></tr>
+<tr class="codeline" data-linenumber="1363"><td class="num" id="LN1363">1363</td><td class="line"> i,</td></tr>
+<tr class="codeline" data-linenumber="1364"><td class="num" id="LN1364">1364</td><td class="line"> escaped);</td></tr>
+<tr class="codeline" data-linenumber="1365"><td class="num" id="LN1365">1365</td><td class="line"> g_free (escaped);</td></tr>
+<tr class="codeline" data-linenumber="1366"><td class="num" id="LN1366">1366</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1367"><td class="num" id="LN1367">1367</td><td class="line"> <span class='comment'>/* gtk_recent_info_get_uri_display (info) is buggy and</span></td></tr>
+<tr class="codeline" data-linenumber="1368"><td class="num" id="LN1368">1368</td><td class="line"> <span class='comment'>* works only for local files */</span></td></tr>
+<tr class="codeline" data-linenumber="1369"><td class="num" id="LN1369">1369</td><td class="line"> uri = pluma_utils_uri_for_display (gtk_recent_info_get_uri (info));</td></tr>
+<tr class="codeline" data-linenumber="1370"><td class="num" id="LN1370">1370</td><td class="line"> ruri = pluma_utils_replace_home_dir_with_tilde (uri);</td></tr>
+<tr class="codeline" data-linenumber="1371"><td class="num" id="LN1371">1371</td><td class="line"> g_free (uri);</td></tr>
+<tr class="codeline" data-linenumber="1372"><td class="num" id="LN1372">1372</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1373"><td class="num" id="LN1373">1373</td><td class="line"> <span class='comment'>/* Translators: %s is a URI */</span></td></tr>
+<tr class="codeline" data-linenumber="1374"><td class="num" id="LN1374">1374</td><td class="line"> tip = g_strdup_printf (<span class='macro'>_(<span class='string_literal'>"Open '%s'"</span>)<span class='macro_popup'>dcgettext (((void*)0), "Open '%s'", 5)</span></span>, ruri);</td></tr>
+<tr class="codeline" data-linenumber="1375"><td class="num" id="LN1375">1375</td><td class="line"> g_free (ruri);</td></tr>
+<tr class="codeline" data-linenumber="1376"><td class="num" id="LN1376">1376</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1377"><td class="num" id="LN1377">1377</td><td class="line"> action = gtk_action_new (action_name,</td></tr>
+<tr class="codeline" data-linenumber="1378"><td class="num" id="LN1378">1378</td><td class="line"> label,</td></tr>
+<tr class="codeline" data-linenumber="1379"><td class="num" id="LN1379">1379</td><td class="line"> tip,</td></tr>
+<tr class="codeline" data-linenumber="1380"><td class="num" id="LN1380">1380</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1381"><td class="num" id="LN1381">1381</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1382"><td class="num" id="LN1382">1382</td><td class="line"> g_object_set_data_full (<span class='macro'>G_OBJECT (action)<span class='macro_popup'>((((GObject*) (void *) ((action)))))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="1383"><td class="num" id="LN1383">1383</td><td class="line"> <span class='string_literal'>"gtk-recent-info"</span>,</td></tr>
+<tr class="codeline" data-linenumber="1384"><td class="num" id="LN1384">1384</td><td class="line"> gtk_recent_info_ref (info),</td></tr>
+<tr class="codeline" data-linenumber="1385"><td class="num" id="LN1385">1385</td><td class="line"> (GDestroyNotify) gtk_recent_info_unref);</td></tr>
+<tr class="codeline" data-linenumber="1386"><td class="num" id="LN1386">1386</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1387"><td class="num" id="LN1387">1387</td><td class="line"> <span class='macro'>g_signal_connect (action,<span class='macro_popup'>g_signal_connect_data ((action), ("activate"), (((GCallback) (<br>recents_menu_activate))), (window), ((void*)0), (GConnectFlags<br>) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="1388"><td class="num" id="LN1388">1388</td><td class="line"> <span class='string_literal'><span class='macro'>"activate"</span>,<span class='macro_popup'>g_signal_connect_data ((action), ("activate"), (((GCallback) (<br>recents_menu_activate))), (window), ((void*)0), (GConnectFlags<br>) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="1389"><td class="num" id="LN1389">1389</td><td class="line"> <span class='macro'>G_CALLBACK (recents_menu_activate),<span class='macro_popup'>g_signal_connect_data ((action), ("activate"), (((GCallback) (<br>recents_menu_activate))), (window), ((void*)0), (GConnectFlags<br>) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="1390"><td class="num" id="LN1390">1390</td><td class="line"> <span class='macro'>window)<span class='macro_popup'>g_signal_connect_data ((action), ("activate"), (((GCallback) (<br>recents_menu_activate))), (window), ((void*)0), (GConnectFlags<br>) 0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1391"><td class="num" id="LN1391">1391</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1392"><td class="num" id="LN1392">1392</td><td class="line"> gtk_action_group_add_action (p-&gt;recents_action_group,</td></tr>
+<tr class="codeline" data-linenumber="1393"><td class="num" id="LN1393">1393</td><td class="line"> action);</td></tr>
+<tr class="codeline" data-linenumber="1394"><td class="num" id="LN1394">1394</td><td class="line"> g_object_unref (action);</td></tr>
+<tr class="codeline" data-linenumber="1395"><td class="num" id="LN1395">1395</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1396"><td class="num" id="LN1396">1396</td><td class="line"> gtk_ui_manager_add_ui (p-&gt;manager,</td></tr>
+<tr class="codeline" data-linenumber="1397"><td class="num" id="LN1397">1397</td><td class="line"> p-&gt;recents_menu_ui_id,</td></tr>
+<tr class="codeline" data-linenumber="1398"><td class="num" id="LN1398">1398</td><td class="line"> <span class='string_literal'>"/MenuBar/FileMenu/FileRecentsPlaceholder"</span>,</td></tr>
+<tr class="codeline" data-linenumber="1399"><td class="num" id="LN1399">1399</td><td class="line"> action_name,</td></tr>
+<tr class="codeline" data-linenumber="1400"><td class="num" id="LN1400">1400</td><td class="line"> action_name,</td></tr>
+<tr class="codeline" data-linenumber="1401"><td class="num" id="LN1401">1401</td><td class="line"> GTK_UI_MANAGER_MENUITEM,</td></tr>
+<tr class="codeline" data-linenumber="1402"><td class="num" id="LN1402">1402</td><td class="line"> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1403"><td class="num" id="LN1403">1403</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1404"><td class="num" id="LN1404">1404</td><td class="line"> g_free (action_name);</td></tr>
+<tr class="codeline" data-linenumber="1405"><td class="num" id="LN1405">1405</td><td class="line"> g_free (label);</td></tr>
+<tr class="codeline" data-linenumber="1406"><td class="num" id="LN1406">1406</td><td class="line"> g_free (tip);</td></tr>
+<tr class="codeline" data-linenumber="1407"><td class="num" id="LN1407">1407</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1408"><td class="num" id="LN1408">1408</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1409"><td class="num" id="LN1409">1409</td><td class="line"> g_list_free (filtered_items);</td></tr>
+<tr class="codeline" data-linenumber="1410"><td class="num" id="LN1410">1410</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1411"><td class="num" id="LN1411">1411</td><td class="line"> g_list_free_full (items, (GDestroyNotify) gtk_recent_info_unref);</td></tr>
+<tr class="codeline" data-linenumber="1412"><td class="num" id="LN1412">1412</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1413"><td class="num" id="LN1413">1413</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1414"><td class="num" id="LN1414">1414</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1415"><td class="num" id="LN1415">1415</td><td class="line">set_non_homogeneus (GtkWidget *widget, gpointer data)</td></tr>
+<tr class="codeline" data-linenumber="1416"><td class="num" id="LN1416">1416</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1417"><td class="num" id="LN1417">1417</td><td class="line"> gtk_tool_item_set_homogeneous (<span class='macro'>GTK_TOOL_ITEM (widget)<span class='macro_popup'>((((GtkToolItem*) (void *) ((widget)))))</span></span>, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1418"><td class="num" id="LN1418">1418</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1419"><td class="num" id="LN1419">1419</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1420"><td class="num" id="LN1420">1420</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1421"><td class="num" id="LN1421">1421</td><td class="line">toolbar_visibility_changed (GtkWidget *toolbar,</td></tr>
+<tr class="codeline" data-linenumber="1422"><td class="num" id="LN1422">1422</td><td class="line"> PlumaWindow *window)</td></tr>
+<tr class="codeline" data-linenumber="1423"><td class="num" id="LN1423">1423</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1424"><td class="num" id="LN1424">1424</td><td class="line"> gboolean visible;</td></tr>
+<tr class="codeline" data-linenumber="1425"><td class="num" id="LN1425">1425</td><td class="line"> GtkAction *action;</td></tr>
+<tr class="codeline" data-linenumber="1426"><td class="num" id="LN1426">1426</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1427"><td class="num" id="LN1427">1427</td><td class="line"> visible = gtk_widget_get_visible (toolbar);</td></tr>
+<tr class="codeline" data-linenumber="1428"><td class="num" id="LN1428">1428</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1429"><td class="num" id="LN1429">1429</td><td class="line"> g_settings_set_boolean (window-&gt;priv-&gt;editor_settings,</td></tr>
+<tr class="codeline" data-linenumber="1430"><td class="num" id="LN1430">1430</td><td class="line"> <span class='macro'>PLUMA_SETTINGS_TOOLBAR_VISIBLE<span class='macro_popup'>"toolbar-visible"</span></span>, visible);</td></tr>
+<tr class="codeline" data-linenumber="1431"><td class="num" id="LN1431">1431</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1432"><td class="num" id="LN1432">1432</td><td class="line"> action = gtk_action_group_get_action (window-&gt;priv-&gt;always_sensitive_action_group,</td></tr>
+<tr class="codeline" data-linenumber="1433"><td class="num" id="LN1433">1433</td><td class="line"> <span class='string_literal'>"ViewToolbar"</span>);</td></tr>
+<tr class="codeline" data-linenumber="1434"><td class="num" id="LN1434">1434</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1435"><td class="num" id="LN1435">1435</td><td class="line"> <span class='keyword'>if</span> (gtk_toggle_action_get_active (<span class='macro'>GTK_TOGGLE_ACTION (action)<span class='macro_popup'>((((GtkToggleAction*) (void *) ((action)))))</span></span>) != visible)</td></tr>
+<tr class="codeline" data-linenumber="1436"><td class="num" id="LN1436">1436</td><td class="line"> gtk_toggle_action_set_active (<span class='macro'>GTK_TOGGLE_ACTION (action)<span class='macro_popup'>((((GtkToggleAction*) (void *) ((action)))))</span></span>, visible);</td></tr>
+<tr class="codeline" data-linenumber="1437"><td class="num" id="LN1437">1437</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1438"><td class="num" id="LN1438">1438</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1439"><td class="num" id="LN1439">1439</td><td class="line"><span class='keyword'>static</span> GtkWidget *</td></tr>
+<tr class="codeline" data-linenumber="1440"><td class="num" id="LN1440">1440</td><td class="line">setup_toolbar_open_button (PlumaWindow *window,</td></tr>
+<tr class="codeline" data-linenumber="1441"><td class="num" id="LN1441">1441</td><td class="line"> GtkWidget *toolbar)</td></tr>
+<tr class="codeline" data-linenumber="1442"><td class="num" id="LN1442">1442</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1443"><td class="num" id="LN1443">1443</td><td class="line"> GtkRecentManager *recent_manager;</td></tr>
+<tr class="codeline" data-linenumber="1444"><td class="num" id="LN1444">1444</td><td class="line"> GtkRecentFilter *filter;</td></tr>
+<tr class="codeline" data-linenumber="1445"><td class="num" id="LN1445">1445</td><td class="line"> GtkWidget *toolbar_recent_menu;</td></tr>
+<tr class="codeline" data-linenumber="1446"><td class="num" id="LN1446">1446</td><td class="line"> GtkToolItem *open_button;</td></tr>
+<tr class="codeline" data-linenumber="1447"><td class="num" id="LN1447">1447</td><td class="line"> GtkAction *action;</td></tr>
+<tr class="codeline" data-linenumber="1448"><td class="num" id="LN1448">1448</td><td class="line"> guint max_recents;</td></tr>
+<tr class="codeline" data-linenumber="1449"><td class="num" id="LN1449">1449</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1450"><td class="num" id="LN1450">1450</td><td class="line"> recent_manager = gtk_recent_manager_get_default ();</td></tr>
+<tr class="codeline" data-linenumber="1451"><td class="num" id="LN1451">1451</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1452"><td class="num" id="LN1452">1452</td><td class="line"> max_recents = g_settings_get_uint (window-&gt;priv-&gt;editor_settings, <span class='macro'>PLUMA_SETTINGS_MAX_RECENTS<span class='macro_popup'>"max-recents"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1453"><td class="num" id="LN1453">1453</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1454"><td class="num" id="LN1454">1454</td><td class="line"> <span class='comment'>/* recent files menu tool button */</span></td></tr>
+<tr class="codeline" data-linenumber="1455"><td class="num" id="LN1455">1455</td><td class="line"> toolbar_recent_menu = gtk_recent_chooser_menu_new_for_manager (recent_manager);</td></tr>
+<tr class="codeline" data-linenumber="1456"><td class="num" id="LN1456">1456</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1457"><td class="num" id="LN1457">1457</td><td class="line"> gtk_recent_chooser_set_local_only (<span class='macro'>GTK_RECENT_CHOOSER (toolbar_recent_menu)<span class='macro_popup'>((((GtkRecentChooser*) (void *) ((toolbar_recent_menu)))))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="1458"><td class="num" id="LN1458">1458</td><td class="line"> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1459"><td class="num" id="LN1459">1459</td><td class="line"> gtk_recent_chooser_set_sort_type (<span class='macro'>GTK_RECENT_CHOOSER (toolbar_recent_menu)<span class='macro_popup'>((((GtkRecentChooser*) (void *) ((toolbar_recent_menu)))))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="1460"><td class="num" id="LN1460">1460</td><td class="line"> GTK_RECENT_SORT_MRU);</td></tr>
+<tr class="codeline" data-linenumber="1461"><td class="num" id="LN1461">1461</td><td class="line"> gtk_recent_chooser_set_limit (<span class='macro'>GTK_RECENT_CHOOSER (toolbar_recent_menu)<span class='macro_popup'>((((GtkRecentChooser*) (void *) ((toolbar_recent_menu)))))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="1462"><td class="num" id="LN1462">1462</td><td class="line"> max_recents);</td></tr>
+<tr class="codeline" data-linenumber="1463"><td class="num" id="LN1463">1463</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1464"><td class="num" id="LN1464">1464</td><td class="line"> filter = gtk_recent_filter_new ();</td></tr>
+<tr class="codeline" data-linenumber="1465"><td class="num" id="LN1465">1465</td><td class="line"> gtk_recent_filter_add_group (filter, <span class='string_literal'>"pluma"</span>);</td></tr>
+<tr class="codeline" data-linenumber="1466"><td class="num" id="LN1466">1466</td><td class="line"> gtk_recent_chooser_set_filter (<span class='macro'>GTK_RECENT_CHOOSER (toolbar_recent_menu)<span class='macro_popup'>((((GtkRecentChooser*) (void *) ((toolbar_recent_menu)))))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="1467"><td class="num" id="LN1467">1467</td><td class="line"> filter);</td></tr>
+<tr class="codeline" data-linenumber="1468"><td class="num" id="LN1468">1468</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1469"><td class="num" id="LN1469">1469</td><td class="line"> <span class='macro'>g_signal_connect (toolbar_recent_menu,<span class='macro_popup'>g_signal_connect_data ((toolbar_recent_menu), ("item_activated"<br>), (((GCallback) (recent_chooser_item_activated))), (window),<br> ((void*)0), (GConnectFlags) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="1470"><td class="num" id="LN1470">1470</td><td class="line"> <span class='string_literal'><span class='macro'>"item_activated"</span>,<span class='macro_popup'>g_signal_connect_data ((toolbar_recent_menu), ("item_activated"<br>), (((GCallback) (recent_chooser_item_activated))), (window),<br> ((void*)0), (GConnectFlags) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="1471"><td class="num" id="LN1471">1471</td><td class="line"> <span class='macro'>G_CALLBACK (recent_chooser_item_activated),<span class='macro_popup'>g_signal_connect_data ((toolbar_recent_menu), ("item_activated"<br>), (((GCallback) (recent_chooser_item_activated))), (window),<br> ((void*)0), (GConnectFlags) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="1472"><td class="num" id="LN1472">1472</td><td class="line"> <span class='macro'>window)<span class='macro_popup'>g_signal_connect_data ((toolbar_recent_menu), ("item_activated"<br>), (((GCallback) (recent_chooser_item_activated))), (window),<br> ((void*)0), (GConnectFlags) 0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1473"><td class="num" id="LN1473">1473</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1474"><td class="num" id="LN1474">1474</td><td class="line"> <span class='comment'>/* add the custom Open button to the toolbar */</span></td></tr>
+<tr class="codeline" data-linenumber="1475"><td class="num" id="LN1475">1475</td><td class="line"> open_button = gtk_menu_tool_button_new (gtk_image_new_from_icon_name (<span class='string_literal'>"document-open"</span>,</td></tr>
+<tr class="codeline" data-linenumber="1476"><td class="num" id="LN1476">1476</td><td class="line"> GTK_ICON_SIZE_MENU),</td></tr>
+<tr class="codeline" data-linenumber="1477"><td class="num" id="LN1477">1477</td><td class="line"> <span class='macro'>_(<span class='string_literal'>"Open a file"</span>)<span class='macro_popup'>dcgettext (((void*)0), "Open a file", 5)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1478"><td class="num" id="LN1478">1478</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1479"><td class="num" id="LN1479">1479</td><td class="line"> gtk_menu_tool_button_set_menu (<span class='macro'>GTK_MENU_TOOL_BUTTON (open_button)<span class='macro_popup'>((((GtkMenuToolButton*) (void *) ((open_button)))))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="1480"><td class="num" id="LN1480">1480</td><td class="line"> toolbar_recent_menu);</td></tr>
+<tr class="codeline" data-linenumber="1481"><td class="num" id="LN1481">1481</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1482"><td class="num" id="LN1482">1482</td><td class="line"> gtk_menu_tool_button_set_arrow_tooltip_text (<span class='macro'>GTK_MENU_TOOL_BUTTON (open_button)<span class='macro_popup'>((((GtkMenuToolButton*) (void *) ((open_button)))))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="1483"><td class="num" id="LN1483">1483</td><td class="line"> <span class='macro'>_(<span class='string_literal'>"Open a recently used file"</span>)<span class='macro_popup'>dcgettext (((void*)0), "Open a recently used file", 5)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1484"><td class="num" id="LN1484">1484</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1485"><td class="num" id="LN1485">1485</td><td class="line"> action = gtk_action_group_get_action (window-&gt;priv-&gt;always_sensitive_action_group,</td></tr>
+<tr class="codeline" data-linenumber="1486"><td class="num" id="LN1486">1486</td><td class="line"> <span class='string_literal'>"FileOpen"</span>);</td></tr>
+<tr class="codeline" data-linenumber="1487"><td class="num" id="LN1487">1487</td><td class="line"> g_object_set (action,</td></tr>
+<tr class="codeline" data-linenumber="1488"><td class="num" id="LN1488">1488</td><td class="line"> <span class='string_literal'>"is_important"</span>, <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="1489"><td class="num" id="LN1489">1489</td><td class="line"> <span class='string_literal'>"short_label"</span>, <span class='macro'>_(<span class='string_literal'>"Open"</span>)<span class='macro_popup'>dcgettext (((void*)0), "Open", 5)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="1490"><td class="num" id="LN1490">1490</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1491"><td class="num" id="LN1491">1491</td><td class="line"> gtk_activatable_set_related_action (<span class='macro'>GTK_ACTIVATABLE (open_button)<span class='macro_popup'>((((GtkActivatable*) (void *) ((open_button)))))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="1492"><td class="num" id="LN1492">1492</td><td class="line"> action);</td></tr>
+<tr class="codeline" data-linenumber="1493"><td class="num" id="LN1493">1493</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1494"><td class="num" id="LN1494">1494</td><td class="line"> gtk_toolbar_insert (<span class='macro'>GTK_TOOLBAR (toolbar)<span class='macro_popup'>((((GtkToolbar*) (void *) ((toolbar)))))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="1495"><td class="num" id="LN1495">1495</td><td class="line"> open_button,</td></tr>
+<tr class="codeline" data-linenumber="1496"><td class="num" id="LN1496">1496</td><td class="line"> 1);</td></tr>
+<tr class="codeline" data-linenumber="1497"><td class="num" id="LN1497">1497</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1498"><td class="num" id="LN1498">1498</td><td class="line"> <span class='keyword'>return</span> toolbar_recent_menu;</td></tr>
+<tr class="codeline" data-linenumber="1499"><td class="num" id="LN1499">1499</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1500"><td class="num" id="LN1500">1500</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1501"><td class="num" id="LN1501">1501</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1502"><td class="num" id="LN1502">1502</td><td class="line">create_menu_bar_and_toolbar (PlumaWindow *window,</td></tr>
+<tr class="codeline" data-linenumber="1503"><td class="num" id="LN1503">1503</td><td class="line"> GtkWidget *main_box)</td></tr>
+<tr class="codeline" data-linenumber="1504"><td class="num" id="LN1504">1504</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1505"><td class="num" id="LN1505">1505</td><td class="line"> GtkActionGroup *action_group;</td></tr>
+<tr class="codeline" data-linenumber="1506"><td class="num" id="LN1506">1506</td><td class="line"> GtkAction *action;</td></tr>
+<tr class="codeline" data-linenumber="1507"><td class="num" id="LN1507">1507</td><td class="line"> GtkUIManager *manager;</td></tr>
+<tr class="codeline" data-linenumber="1508"><td class="num" id="LN1508">1508</td><td class="line"> GtkRecentManager *recent_manager;</td></tr>
+<tr class="codeline" data-linenumber="1509"><td class="num" id="LN1509">1509</td><td class="line"> GError *error = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1510"><td class="num" id="LN1510">1510</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1511"><td class="num" id="LN1511">1511</td><td class="line"> pluma_debug (<span class='macro'>DEBUG_WINDOW<span class='macro_popup'>PLUMA_DEBUG_WINDOW, "pluma-window.c", 1511, ((const char*) (__func__<br>))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1512"><td class="num" id="LN1512">1512</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1513"><td class="num" id="LN1513">1513</td><td class="line"> manager = gtk_ui_manager_new ();</td></tr>
+<tr class="codeline" data-linenumber="1514"><td class="num" id="LN1514">1514</td><td class="line"> window-&gt;priv-&gt;manager = manager;</td></tr>
+<tr class="codeline" data-linenumber="1515"><td class="num" id="LN1515">1515</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1516"><td class="num" id="LN1516">1516</td><td class="line"> gtk_window_add_accel_group (<span class='macro'>GTK_WINDOW (window)<span class='macro_popup'>((((GtkWindow*) (void *) ((window)))))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="1517"><td class="num" id="LN1517">1517</td><td class="line"> gtk_ui_manager_get_accel_group (manager));</td></tr>
+<tr class="codeline" data-linenumber="1518"><td class="num" id="LN1518">1518</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1519"><td class="num" id="LN1519">1519</td><td class="line"> action_group = gtk_action_group_new (<span class='string_literal'>"PlumaWindowAlwaysSensitiveActions"</span>);</td></tr>
+<tr class="codeline" data-linenumber="1520"><td class="num" id="LN1520">1520</td><td class="line"> gtk_action_group_set_translation_domain (action_group, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1521"><td class="num" id="LN1521">1521</td><td class="line"> gtk_action_group_add_actions (action_group,</td></tr>
+<tr class="codeline" data-linenumber="1522"><td class="num" id="LN1522">1522</td><td class="line"> pluma_always_sensitive_menu_entries,</td></tr>
+<tr class="codeline" data-linenumber="1523"><td class="num" id="LN1523">1523</td><td class="line"> <span class='macro'>G_N_ELEMENTS (pluma_always_sensitive_menu_entries)<span class='macro_popup'>(sizeof (pluma_always_sensitive_menu_entries) / sizeof ((pluma_always_sensitive_menu_entries<br>)[0]))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="1524"><td class="num" id="LN1524">1524</td><td class="line"> window);</td></tr>
+<tr class="codeline" data-linenumber="1525"><td class="num" id="LN1525">1525</td><td class="line"> gtk_action_group_add_toggle_actions (action_group,</td></tr>
+<tr class="codeline" data-linenumber="1526"><td class="num" id="LN1526">1526</td><td class="line"> pluma_always_sensitive_toggle_menu_entries,</td></tr>
+<tr class="codeline" data-linenumber="1527"><td class="num" id="LN1527">1527</td><td class="line"> <span class='macro'>G_N_ELEMENTS (pluma_always_sensitive_toggle_menu_entries)<span class='macro_popup'>(sizeof (pluma_always_sensitive_toggle_menu_entries) / sizeof<br> ((pluma_always_sensitive_toggle_menu_entries)[0]))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="1528"><td class="num" id="LN1528">1528</td><td class="line"> window);</td></tr>
+<tr class="codeline" data-linenumber="1529"><td class="num" id="LN1529">1529</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1530"><td class="num" id="LN1530">1530</td><td class="line"> gtk_ui_manager_insert_action_group (manager, action_group, 0);</td></tr>
+<tr class="codeline" data-linenumber="1531"><td class="num" id="LN1531">1531</td><td class="line"> g_object_unref (action_group);</td></tr>
+<tr class="codeline" data-linenumber="1532"><td class="num" id="LN1532">1532</td><td class="line"> window-&gt;priv-&gt;always_sensitive_action_group = action_group;</td></tr>
+<tr class="codeline" data-linenumber="1533"><td class="num" id="LN1533">1533</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1534"><td class="num" id="LN1534">1534</td><td class="line"> action_group = gtk_action_group_new (<span class='string_literal'>"PlumaWindowActions"</span>);</td></tr>
+<tr class="codeline" data-linenumber="1535"><td class="num" id="LN1535">1535</td><td class="line"> gtk_action_group_set_translation_domain (action_group, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1536"><td class="num" id="LN1536">1536</td><td class="line"> gtk_action_group_add_actions (action_group,</td></tr>
+<tr class="codeline" data-linenumber="1537"><td class="num" id="LN1537">1537</td><td class="line"> pluma_menu_entries,</td></tr>
+<tr class="codeline" data-linenumber="1538"><td class="num" id="LN1538">1538</td><td class="line"> <span class='macro'>G_N_ELEMENTS (pluma_menu_entries)<span class='macro_popup'>(sizeof (pluma_menu_entries) / sizeof ((pluma_menu_entries)[0<br>]))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="1539"><td class="num" id="LN1539">1539</td><td class="line"> window);</td></tr>
+<tr class="codeline" data-linenumber="1540"><td class="num" id="LN1540">1540</td><td class="line"> gtk_ui_manager_insert_action_group (manager, action_group, 0);</td></tr>
+<tr class="codeline" data-linenumber="1541"><td class="num" id="LN1541">1541</td><td class="line"> g_object_unref (action_group);</td></tr>
+<tr class="codeline" data-linenumber="1542"><td class="num" id="LN1542">1542</td><td class="line"> window-&gt;priv-&gt;action_group = action_group;</td></tr>
+<tr class="codeline" data-linenumber="1543"><td class="num" id="LN1543">1543</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1544"><td class="num" id="LN1544">1544</td><td class="line"> <span class='comment'>/* set short labels to use in the toolbar */</span></td></tr>
+<tr class="codeline" data-linenumber="1545"><td class="num" id="LN1545">1545</td><td class="line"> action = gtk_action_group_get_action (action_group, <span class='string_literal'>"FileSave"</span>);</td></tr>
+<tr class="codeline" data-linenumber="1546"><td class="num" id="LN1546">1546</td><td class="line"> g_object_set (action, <span class='string_literal'>"short_label"</span>, <span class='macro'>_(<span class='string_literal'>"Save"</span>)<span class='macro_popup'>dcgettext (((void*)0), "Save", 5)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1547"><td class="num" id="LN1547">1547</td><td class="line"> action = gtk_action_group_get_action (action_group, <span class='string_literal'>"FilePrint"</span>);</td></tr>
+<tr class="codeline" data-linenumber="1548"><td class="num" id="LN1548">1548</td><td class="line"> g_object_set (action, <span class='string_literal'>"short_label"</span>, <span class='macro'>_(<span class='string_literal'>"Print"</span>)<span class='macro_popup'>dcgettext (((void*)0), "Print", 5)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1549"><td class="num" id="LN1549">1549</td><td class="line"> action = gtk_action_group_get_action (action_group, <span class='string_literal'>"SearchFind"</span>);</td></tr>
+<tr class="codeline" data-linenumber="1550"><td class="num" id="LN1550">1550</td><td class="line"> g_object_set (action, <span class='string_literal'>"short_label"</span>, <span class='macro'>_(<span class='string_literal'>"Find"</span>)<span class='macro_popup'>dcgettext (((void*)0), "Find", 5)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1551"><td class="num" id="LN1551">1551</td><td class="line"> action = gtk_action_group_get_action (action_group, <span class='string_literal'>"SearchReplace"</span>);</td></tr>
+<tr class="codeline" data-linenumber="1552"><td class="num" id="LN1552">1552</td><td class="line"> g_object_set (action, <span class='string_literal'>"short_label"</span>, <span class='macro'>_(<span class='string_literal'>"Replace"</span>)<span class='macro_popup'>dcgettext (((void*)0), "Replace", 5)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1553"><td class="num" id="LN1553">1553</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1554"><td class="num" id="LN1554">1554</td><td class="line"> <span class='comment'>/* set which actions should have priority on the toolbar */</span></td></tr>
+<tr class="codeline" data-linenumber="1555"><td class="num" id="LN1555">1555</td><td class="line"> action = gtk_action_group_get_action (action_group, <span class='string_literal'>"FileSave"</span>);</td></tr>
+<tr class="codeline" data-linenumber="1556"><td class="num" id="LN1556">1556</td><td class="line"> g_object_set (action, <span class='string_literal'>"is_important"</span>, <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1557"><td class="num" id="LN1557">1557</td><td class="line"> action = gtk_action_group_get_action (action_group, <span class='string_literal'>"EditUndo"</span>);</td></tr>
+<tr class="codeline" data-linenumber="1558"><td class="num" id="LN1558">1558</td><td class="line"> g_object_set (action, <span class='string_literal'>"is_important"</span>, <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1559"><td class="num" id="LN1559">1559</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1560"><td class="num" id="LN1560">1560</td><td class="line"> action_group = gtk_action_group_new (<span class='string_literal'>"PlumaQuitWindowActions"</span>);</td></tr>
+<tr class="codeline" data-linenumber="1561"><td class="num" id="LN1561">1561</td><td class="line"> gtk_action_group_set_translation_domain (action_group, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1562"><td class="num" id="LN1562">1562</td><td class="line"> gtk_action_group_add_actions (action_group,</td></tr>
+<tr class="codeline" data-linenumber="1563"><td class="num" id="LN1563">1563</td><td class="line"> pluma_quit_menu_entries,</td></tr>
+<tr class="codeline" data-linenumber="1564"><td class="num" id="LN1564">1564</td><td class="line"> <span class='macro'>G_N_ELEMENTS (pluma_quit_menu_entries)<span class='macro_popup'>(sizeof (pluma_quit_menu_entries) / sizeof ((pluma_quit_menu_entries<br>)[0]))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="1565"><td class="num" id="LN1565">1565</td><td class="line"> window);</td></tr>
+<tr class="codeline" data-linenumber="1566"><td class="num" id="LN1566">1566</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1567"><td class="num" id="LN1567">1567</td><td class="line"> gtk_ui_manager_insert_action_group (manager, action_group, 0);</td></tr>
+<tr class="codeline" data-linenumber="1568"><td class="num" id="LN1568">1568</td><td class="line"> g_object_unref (action_group);</td></tr>
+<tr class="codeline" data-linenumber="1569"><td class="num" id="LN1569">1569</td><td class="line"> window-&gt;priv-&gt;quit_action_group = action_group;</td></tr>
+<tr class="codeline" data-linenumber="1570"><td class="num" id="LN1570">1570</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1571"><td class="num" id="LN1571">1571</td><td class="line"> action_group = gtk_action_group_new (<span class='string_literal'>"PlumaCloseWindowActions"</span>);</td></tr>
+<tr class="codeline" data-linenumber="1572"><td class="num" id="LN1572">1572</td><td class="line"> gtk_action_group_set_translation_domain (action_group, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1573"><td class="num" id="LN1573">1573</td><td class="line"> gtk_action_group_add_actions (action_group,</td></tr>
+<tr class="codeline" data-linenumber="1574"><td class="num" id="LN1574">1574</td><td class="line"> pluma_close_menu_entries,</td></tr>
+<tr class="codeline" data-linenumber="1575"><td class="num" id="LN1575">1575</td><td class="line"> <span class='macro'>G_N_ELEMENTS (pluma_close_menu_entries)<span class='macro_popup'>(sizeof (pluma_close_menu_entries) / sizeof ((pluma_close_menu_entries<br>)[0]))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="1576"><td class="num" id="LN1576">1576</td><td class="line"> window);</td></tr>
+<tr class="codeline" data-linenumber="1577"><td class="num" id="LN1577">1577</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1578"><td class="num" id="LN1578">1578</td><td class="line"> gtk_ui_manager_insert_action_group (manager, action_group, 0);</td></tr>
+<tr class="codeline" data-linenumber="1579"><td class="num" id="LN1579">1579</td><td class="line"> g_object_unref (action_group);</td></tr>
+<tr class="codeline" data-linenumber="1580"><td class="num" id="LN1580">1580</td><td class="line"> window-&gt;priv-&gt;close_action_group = action_group;</td></tr>
+<tr class="codeline" data-linenumber="1581"><td class="num" id="LN1581">1581</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1582"><td class="num" id="LN1582">1582</td><td class="line"> action_group = gtk_action_group_new (<span class='string_literal'>"PlumaWindowPanesActions"</span>);</td></tr>
+<tr class="codeline" data-linenumber="1583"><td class="num" id="LN1583">1583</td><td class="line"> gtk_action_group_set_translation_domain (action_group, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1584"><td class="num" id="LN1584">1584</td><td class="line"> gtk_action_group_add_toggle_actions (action_group,</td></tr>
+<tr class="codeline" data-linenumber="1585"><td class="num" id="LN1585">1585</td><td class="line"> pluma_panes_toggle_menu_entries,</td></tr>
+<tr class="codeline" data-linenumber="1586"><td class="num" id="LN1586">1586</td><td class="line"> <span class='macro'>G_N_ELEMENTS (pluma_panes_toggle_menu_entries)<span class='macro_popup'>(sizeof (pluma_panes_toggle_menu_entries) / sizeof ((pluma_panes_toggle_menu_entries<br>)[0]))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="1587"><td class="num" id="LN1587">1587</td><td class="line"> window);</td></tr>
+<tr class="codeline" data-linenumber="1588"><td class="num" id="LN1588">1588</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1589"><td class="num" id="LN1589">1589</td><td class="line"> gtk_ui_manager_insert_action_group (manager, action_group, 0);</td></tr>
+<tr class="codeline" data-linenumber="1590"><td class="num" id="LN1590">1590</td><td class="line"> g_object_unref (action_group);</td></tr>
+<tr class="codeline" data-linenumber="1591"><td class="num" id="LN1591">1591</td><td class="line"> window-&gt;priv-&gt;panes_action_group = action_group;</td></tr>
+<tr class="codeline" data-linenumber="1592"><td class="num" id="LN1592">1592</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1593"><td class="num" id="LN1593">1593</td><td class="line"> <span class='comment'>/* now load the UI definition */</span></td></tr>
+<tr class="codeline" data-linenumber="1594"><td class="num" id="LN1594">1594</td><td class="line"> gtk_ui_manager_add_ui_from_file (manager,</td></tr>
+<tr class="codeline" data-linenumber="1595"><td class="num" id="LN1595">1595</td><td class="line"> <span class='macro'>PLUMA_DATADIR<span class='macro_popup'>"/usr/local/share/pluma"</span></span> <span class='string_literal'>"/ui/pluma-ui.xml"</span>,</td></tr>
+<tr class="codeline" data-linenumber="1596"><td class="num" id="LN1596">1596</td><td class="line"> &amp;error);</td></tr>
+<tr class="codeline" data-linenumber="1597"><td class="num" id="LN1597">1597</td><td class="line"> <span class='keyword'>if</span> (error != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="1598"><td class="num" id="LN1598">1598</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="1599"><td class="num" id="LN1599">1599</td><td class="line"> g_warning (<span class='string_literal'>"Could not merge %s: %s"</span>,</td></tr>
+<tr class="codeline" data-linenumber="1600"><td class="num" id="LN1600">1600</td><td class="line"> <span class='macro'>PLUMA_DATADIR<span class='macro_popup'>"/usr/local/share/pluma"</span></span> <span class='string_literal'>"/ui/pluma-ui.xml"</span>,</td></tr>
+<tr class="codeline" data-linenumber="1601"><td class="num" id="LN1601">1601</td><td class="line"> error-&gt;message);</td></tr>
+<tr class="codeline" data-linenumber="1602"><td class="num" id="LN1602">1602</td><td class="line"> g_error_free (error);</td></tr>
+<tr class="codeline" data-linenumber="1603"><td class="num" id="LN1603">1603</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1604"><td class="num" id="LN1604">1604</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1605"><td class="num" id="LN1605">1605</td><td class="line"> <span class='comment'>/* show tooltips in the statusbar */</span></td></tr>
+<tr class="codeline" data-linenumber="1606"><td class="num" id="LN1606">1606</td><td class="line"> <span class='macro'>g_signal_connect (manager,<span class='macro_popup'>g_signal_connect_data ((manager), ("connect_proxy"), (((GCallback<br>) (connect_proxy_cb))), (window), ((void*)0), (GConnectFlags)<br> 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="1607"><td class="num" id="LN1607">1607</td><td class="line"> <span class='string_literal'><span class='macro'>"connect_proxy"</span>,<span class='macro_popup'>g_signal_connect_data ((manager), ("connect_proxy"), (((GCallback<br>) (connect_proxy_cb))), (window), ((void*)0), (GConnectFlags)<br> 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="1608"><td class="num" id="LN1608">1608</td><td class="line"> <span class='macro'>G_CALLBACK (connect_proxy_cb),<span class='macro_popup'>g_signal_connect_data ((manager), ("connect_proxy"), (((GCallback<br>) (connect_proxy_cb))), (window), ((void*)0), (GConnectFlags)<br> 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="1609"><td class="num" id="LN1609">1609</td><td class="line"> <span class='macro'>window)<span class='macro_popup'>g_signal_connect_data ((manager), ("connect_proxy"), (((GCallback<br>) (connect_proxy_cb))), (window), ((void*)0), (GConnectFlags)<br> 0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1610"><td class="num" id="LN1610">1610</td><td class="line"> <span class='macro'>g_signal_connect (manager,<span class='macro_popup'>g_signal_connect_data ((manager), ("disconnect_proxy"), (((GCallback<br>) (disconnect_proxy_cb))), (window), ((void*)0), (GConnectFlags<br>) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="1611"><td class="num" id="LN1611">1611</td><td class="line"> <span class='string_literal'><span class='macro'>"disconnect_proxy"</span>,<span class='macro_popup'>g_signal_connect_data ((manager), ("disconnect_proxy"), (((GCallback<br>) (disconnect_proxy_cb))), (window), ((void*)0), (GConnectFlags<br>) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="1612"><td class="num" id="LN1612">1612</td><td class="line"> <span class='macro'>G_CALLBACK (disconnect_proxy_cb),<span class='macro_popup'>g_signal_connect_data ((manager), ("disconnect_proxy"), (((GCallback<br>) (disconnect_proxy_cb))), (window), ((void*)0), (GConnectFlags<br>) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="1613"><td class="num" id="LN1613">1613</td><td class="line"> <span class='macro'>window)<span class='macro_popup'>g_signal_connect_data ((manager), ("disconnect_proxy"), (((GCallback<br>) (disconnect_proxy_cb))), (window), ((void*)0), (GConnectFlags<br>) 0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1614"><td class="num" id="LN1614">1614</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1615"><td class="num" id="LN1615">1615</td><td class="line"> <span class='comment'>/* recent files menu */</span></td></tr>
+<tr class="codeline" data-linenumber="1616"><td class="num" id="LN1616">1616</td><td class="line"> action_group = gtk_action_group_new (<span class='string_literal'>"RecentFilesActions"</span>);</td></tr>
+<tr class="codeline" data-linenumber="1617"><td class="num" id="LN1617">1617</td><td class="line"> gtk_action_group_set_translation_domain (action_group, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1618"><td class="num" id="LN1618">1618</td><td class="line"> window-&gt;priv-&gt;recents_action_group = action_group;</td></tr>
+<tr class="codeline" data-linenumber="1619"><td class="num" id="LN1619">1619</td><td class="line"> gtk_ui_manager_insert_action_group (manager, action_group, 0);</td></tr>
+<tr class="codeline" data-linenumber="1620"><td class="num" id="LN1620">1620</td><td class="line"> g_object_unref (action_group);</td></tr>
+<tr class="codeline" data-linenumber="1621"><td class="num" id="LN1621">1621</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1622"><td class="num" id="LN1622">1622</td><td class="line"> recent_manager = gtk_recent_manager_get_default ();</td></tr>
+<tr class="codeline" data-linenumber="1623"><td class="num" id="LN1623">1623</td><td class="line"> window-&gt;priv-&gt;recents_handler_id = <span class='macro'>g_signal_connect (recent_manager,<span class='macro_popup'>g_signal_connect_data ((recent_manager), ("changed"), (((GCallback<br>) (recent_manager_changed))), (window), ((void*)0), (GConnectFlags<br>) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="1624"><td class="num" id="LN1624">1624</td><td class="line"> <span class='string_literal'><span class='macro'>"changed"</span>,<span class='macro_popup'>g_signal_connect_data ((recent_manager), ("changed"), (((GCallback<br>) (recent_manager_changed))), (window), ((void*)0), (GConnectFlags<br>) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="1625"><td class="num" id="LN1625">1625</td><td class="line"> <span class='macro'>G_CALLBACK (recent_manager_changed),<span class='macro_popup'>g_signal_connect_data ((recent_manager), ("changed"), (((GCallback<br>) (recent_manager_changed))), (window), ((void*)0), (GConnectFlags<br>) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="1626"><td class="num" id="LN1626">1626</td><td class="line"> <span class='macro'>window)<span class='macro_popup'>g_signal_connect_data ((recent_manager), ("changed"), (((GCallback<br>) (recent_manager_changed))), (window), ((void*)0), (GConnectFlags<br>) 0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1627"><td class="num" id="LN1627">1627</td><td class="line"> update_recent_files_menu (window);</td></tr>
+<tr class="codeline" data-linenumber="1628"><td class="num" id="LN1628">1628</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1629"><td class="num" id="LN1629">1629</td><td class="line"> <span class='comment'>/* languages menu */</span></td></tr>
+<tr class="codeline" data-linenumber="1630"><td class="num" id="LN1630">1630</td><td class="line"> action_group = gtk_action_group_new (<span class='string_literal'>"LanguagesActions"</span>);</td></tr>
+<tr class="codeline" data-linenumber="1631"><td class="num" id="LN1631">1631</td><td class="line"> gtk_action_group_set_translation_domain (action_group, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1632"><td class="num" id="LN1632">1632</td><td class="line"> window-&gt;priv-&gt;languages_action_group = action_group;</td></tr>
+<tr class="codeline" data-linenumber="1633"><td class="num" id="LN1633">1633</td><td class="line"> gtk_ui_manager_insert_action_group (manager, action_group, 0);</td></tr>
+<tr class="codeline" data-linenumber="1634"><td class="num" id="LN1634">1634</td><td class="line"> g_object_unref (action_group);</td></tr>
+<tr class="codeline" data-linenumber="1635"><td class="num" id="LN1635">1635</td><td class="line"> create_languages_menu (window);</td></tr>
+<tr class="codeline" data-linenumber="1636"><td class="num" id="LN1636">1636</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1637"><td class="num" id="LN1637">1637</td><td class="line"> <span class='comment'>/* list of open documents menu */</span></td></tr>
+<tr class="codeline" data-linenumber="1638"><td class="num" id="LN1638">1638</td><td class="line"> action_group = gtk_action_group_new (<span class='string_literal'>"DocumentsListActions"</span>);</td></tr>
+<tr class="codeline" data-linenumber="1639"><td class="num" id="LN1639">1639</td><td class="line"> gtk_action_group_set_translation_domain (action_group, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1640"><td class="num" id="LN1640">1640</td><td class="line"> window-&gt;priv-&gt;documents_list_action_group = action_group;</td></tr>
+<tr class="codeline" data-linenumber="1641"><td class="num" id="LN1641">1641</td><td class="line"> gtk_ui_manager_insert_action_group (manager, action_group, 0);</td></tr>
+<tr class="codeline" data-linenumber="1642"><td class="num" id="LN1642">1642</td><td class="line"> g_object_unref (action_group);</td></tr>
+<tr class="codeline" data-linenumber="1643"><td class="num" id="LN1643">1643</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1644"><td class="num" id="LN1644">1644</td><td class="line"> window-&gt;priv-&gt;menubar = gtk_ui_manager_get_widget (manager, <span class='string_literal'>"/MenuBar"</span>);</td></tr>
+<tr class="codeline" data-linenumber="1645"><td class="num" id="LN1645">1645</td><td class="line"> gtk_box_pack_start (<span class='macro'>GTK_BOX (main_box)<span class='macro_popup'>((((GtkBox*) (void *) ((main_box)))))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="1646"><td class="num" id="LN1646">1646</td><td class="line"> window-&gt;priv-&gt;menubar,</td></tr>
+<tr class="codeline" data-linenumber="1647"><td class="num" id="LN1647">1647</td><td class="line"> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="1648"><td class="num" id="LN1648">1648</td><td class="line"> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="1649"><td class="num" id="LN1649">1649</td><td class="line"> 0);</td></tr>
+<tr class="codeline" data-linenumber="1650"><td class="num" id="LN1650">1650</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1651"><td class="num" id="LN1651">1651</td><td class="line"> window-&gt;priv-&gt;toolbar = gtk_ui_manager_get_widget (manager, <span class='string_literal'>"/ToolBar"</span>);</td></tr>
+<tr class="codeline" data-linenumber="1652"><td class="num" id="LN1652">1652</td><td class="line"> gtk_style_context_add_class (gtk_widget_get_style_context (window-&gt;priv-&gt;toolbar),</td></tr>
+<tr class="codeline" data-linenumber="1653"><td class="num" id="LN1653">1653</td><td class="line"> <span class='macro'>GTK_STYLE_CLASS_PRIMARY_TOOLBAR<span class='macro_popup'>"primary-toolbar"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1654"><td class="num" id="LN1654">1654</td><td class="line"> gtk_box_pack_start (<span class='macro'>GTK_BOX (main_box)<span class='macro_popup'>((((GtkBox*) (void *) ((main_box)))))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="1655"><td class="num" id="LN1655">1655</td><td class="line"> window-&gt;priv-&gt;toolbar,</td></tr>
+<tr class="codeline" data-linenumber="1656"><td class="num" id="LN1656">1656</td><td class="line"> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="1657"><td class="num" id="LN1657">1657</td><td class="line"> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="1658"><td class="num" id="LN1658">1658</td><td class="line"> 0);</td></tr>
+<tr class="codeline" data-linenumber="1659"><td class="num" id="LN1659">1659</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1660"><td class="num" id="LN1660">1660</td><td class="line"> set_toolbar_style (window, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1661"><td class="num" id="LN1661">1661</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1662"><td class="num" id="LN1662">1662</td><td class="line"> window-&gt;priv-&gt;toolbar_recent_menu = setup_toolbar_open_button (window, window-&gt;priv-&gt;toolbar);</td></tr>
+<tr class="codeline" data-linenumber="1663"><td class="num" id="LN1663">1663</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1664"><td class="num" id="LN1664">1664</td><td class="line"> gtk_container_foreach (<span class='macro'>GTK_CONTAINER (window-&gt;priv-&gt;toolbar)<span class='macro_popup'>((((GtkContainer*) (void *) ((window-&gt;priv-&gt;toolbar))))<br>)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="1665"><td class="num" id="LN1665">1665</td><td class="line"> (GtkCallback)set_non_homogeneus,</td></tr>
+<tr class="codeline" data-linenumber="1666"><td class="num" id="LN1666">1666</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1667"><td class="num" id="LN1667">1667</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1668"><td class="num" id="LN1668">1668</td><td class="line"> <span class='macro'>g_signal_connect_after (window-&gt;priv-&gt;toolbar, <span class='string_literal'>"show"</span>,<span class='macro_popup'>g_signal_connect_data ((window-&gt;priv-&gt;toolbar), ("show"<br>), (((GCallback) (toolbar_visibility_changed))), (window), ((<br>void*)0), G_CONNECT_AFTER)</span></span></td></tr>
+<tr class="codeline" data-linenumber="1669"><td class="num" id="LN1669">1669</td><td class="line"> <span class='macro'>G_CALLBACK (toolbar_visibility_changed),<span class='macro_popup'>g_signal_connect_data ((window-&gt;priv-&gt;toolbar), ("show"<br>), (((GCallback) (toolbar_visibility_changed))), (window), ((<br>void*)0), G_CONNECT_AFTER)</span></span></td></tr>
+<tr class="codeline" data-linenumber="1670"><td class="num" id="LN1670">1670</td><td class="line"> <span class='macro'>window)<span class='macro_popup'>g_signal_connect_data ((window-&gt;priv-&gt;toolbar), ("show"<br>), (((GCallback) (toolbar_visibility_changed))), (window), ((<br>void*)0), G_CONNECT_AFTER)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1671"><td class="num" id="LN1671">1671</td><td class="line"> <span class='macro'>g_signal_connect_after (window-&gt;priv-&gt;toolbar, <span class='string_literal'>"hide"</span>,<span class='macro_popup'>g_signal_connect_data ((window-&gt;priv-&gt;toolbar), ("hide"<br>), (((GCallback) (toolbar_visibility_changed))), (window), ((<br>void*)0), G_CONNECT_AFTER)</span></span></td></tr>
+<tr class="codeline" data-linenumber="1672"><td class="num" id="LN1672">1672</td><td class="line"> <span class='macro'>G_CALLBACK (toolbar_visibility_changed),<span class='macro_popup'>g_signal_connect_data ((window-&gt;priv-&gt;toolbar), ("hide"<br>), (((GCallback) (toolbar_visibility_changed))), (window), ((<br>void*)0), G_CONNECT_AFTER)</span></span></td></tr>
+<tr class="codeline" data-linenumber="1673"><td class="num" id="LN1673">1673</td><td class="line"> <span class='macro'>window)<span class='macro_popup'>g_signal_connect_data ((window-&gt;priv-&gt;toolbar), ("hide"<br>), (((GCallback) (toolbar_visibility_changed))), (window), ((<br>void*)0), G_CONNECT_AFTER)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1674"><td class="num" id="LN1674">1674</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1675"><td class="num" id="LN1675">1675</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1676"><td class="num" id="LN1676">1676</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1677"><td class="num" id="LN1677">1677</td><td class="line">documents_list_menu_activate (GtkToggleAction *action,</td></tr>
+<tr class="codeline" data-linenumber="1678"><td class="num" id="LN1678">1678</td><td class="line"> PlumaWindow *window)</td></tr>
+<tr class="codeline" data-linenumber="1679"><td class="num" id="LN1679">1679</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1680"><td class="num" id="LN1680">1680</td><td class="line"> gint n;</td></tr>
+<tr class="codeline" data-linenumber="1681"><td class="num" id="LN1681">1681</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1682"><td class="num" id="LN1682">1682</td><td class="line"> <span class='keyword'>if</span> (gtk_toggle_action_get_active (action) == <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="1683"><td class="num" id="LN1683">1683</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="1684"><td class="num" id="LN1684">1684</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1685"><td class="num" id="LN1685">1685</td><td class="line"> n = gtk_radio_action_get_current_value (<span class='macro'>GTK_RADIO_ACTION (action)<span class='macro_popup'>((((GtkRadioAction*) (void *) ((action)))))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1686"><td class="num" id="LN1686">1686</td><td class="line"> gtk_notebook_set_current_page (<span class='macro'>GTK_NOTEBOOK (window-&gt;priv-&gt;notebook)<span class='macro_popup'>((((GtkNotebook*) (void *) ((window-&gt;priv-&gt;notebook))))<br>)</span></span>, n);</td></tr>
+<tr class="codeline" data-linenumber="1687"><td class="num" id="LN1687">1687</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1688"><td class="num" id="LN1688">1688</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1689"><td class="num" id="LN1689">1689</td><td class="line"><span class='keyword'>static</span> gchar *</td></tr>
+<tr class="codeline" data-linenumber="1690"><td class="num" id="LN1690">1690</td><td class="line">get_menu_tip_for_tab (PlumaTab *tab)</td></tr>
+<tr class="codeline" data-linenumber="1691"><td class="num" id="LN1691">1691</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1692"><td class="num" id="LN1692">1692</td><td class="line"> PlumaDocument *doc;</td></tr>
+<tr class="codeline" data-linenumber="1693"><td class="num" id="LN1693">1693</td><td class="line"> gchar *uri;</td></tr>
+<tr class="codeline" data-linenumber="1694"><td class="num" id="LN1694">1694</td><td class="line"> gchar *ruri;</td></tr>
+<tr class="codeline" data-linenumber="1695"><td class="num" id="LN1695">1695</td><td class="line"> gchar *tip;</td></tr>
+<tr class="codeline" data-linenumber="1696"><td class="num" id="LN1696">1696</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1697"><td class="num" id="LN1697">1697</td><td class="line"> doc = pluma_tab_get_document (tab);</td></tr>
+<tr class="codeline" data-linenumber="1698"><td class="num" id="LN1698">1698</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1699"><td class="num" id="LN1699">1699</td><td class="line"> uri = pluma_document_get_uri_for_display (doc);</td></tr>
+<tr class="codeline" data-linenumber="1700"><td class="num" id="LN1700">1700</td><td class="line"> ruri = pluma_utils_replace_home_dir_with_tilde (uri);</td></tr>
+<tr class="codeline" data-linenumber="1701"><td class="num" id="LN1701">1701</td><td class="line"> g_free (uri);</td></tr>
+<tr class="codeline" data-linenumber="1702"><td class="num" id="LN1702">1702</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1703"><td class="num" id="LN1703">1703</td><td class="line"> <span class='comment'>/* Translators: %s is a URI */</span></td></tr>
+<tr class="codeline" data-linenumber="1704"><td class="num" id="LN1704">1704</td><td class="line"> tip = g_strdup_printf (<span class='macro'>_(<span class='string_literal'>"Activate '%s'"</span>)<span class='macro_popup'>dcgettext (((void*)0), "Activate '%s'", 5)</span></span>, ruri);</td></tr>
+<tr class="codeline" data-linenumber="1705"><td class="num" id="LN1705">1705</td><td class="line"> g_free (ruri);</td></tr>
+<tr class="codeline" data-linenumber="1706"><td class="num" id="LN1706">1706</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1707"><td class="num" id="LN1707">1707</td><td class="line"> <span class='keyword'>return</span> tip;</td></tr>
+<tr class="codeline" data-linenumber="1708"><td class="num" id="LN1708">1708</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1709"><td class="num" id="LN1709">1709</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1710"><td class="num" id="LN1710">1710</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1711"><td class="num" id="LN1711">1711</td><td class="line">update_documents_list_menu (PlumaWindow *window)</td></tr>
+<tr class="codeline" data-linenumber="1712"><td class="num" id="LN1712">1712</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1713"><td class="num" id="LN1713">1713</td><td class="line"> PlumaWindowPrivate *p = window-&gt;priv;</td></tr>
+<tr class="codeline" data-linenumber="1714"><td class="num" id="LN1714">1714</td><td class="line"> GList *actions, *l;</td></tr>
+<tr class="codeline" data-linenumber="1715"><td class="num" id="LN1715">1715</td><td class="line"> gint n, i;</td></tr>
+<tr class="codeline" data-linenumber="1716"><td class="num" id="LN1716">1716</td><td class="line"> guint id;</td></tr>
+<tr class="codeline" data-linenumber="1717"><td class="num" id="LN1717">1717</td><td class="line"> GSList *group = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1718"><td class="num" id="LN1718">1718</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1719"><td class="num" id="LN1719">1719</td><td class="line"> pluma_debug (<span class='macro'>DEBUG_WINDOW<span class='macro_popup'>PLUMA_DEBUG_WINDOW, "pluma-window.c", 1719, ((const char*) (__func__<br>))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1720"><td class="num" id="LN1720">1720</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1721"><td class="num" id="LN1721">1721</td><td class="line"> <span class='macro'>g_return_if_fail (p-&gt;documents_list_action_group != NULL)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_72<br>; if (p-&gt;documents_list_action_group != ((void*)0)) _g_boolean_var_72<br> = 1; else _g_boolean_var_72 = 0; _g_boolean_var_72; }), 1)))<br> { } else { g_return_if_fail_warning (((gchar*) 0), ((const char<br>*) (__func__)), "p-&gt;documents_list_action_group != NULL");<br> return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1722"><td class="num" id="LN1722">1722</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1723"><td class="num" id="LN1723">1723</td><td class="line"> <span class='keyword'>if</span> (p-&gt;documents_list_menu_ui_id != 0)</td></tr>
+<tr class="codeline" data-linenumber="1724"><td class="num" id="LN1724">1724</td><td class="line"> gtk_ui_manager_remove_ui (p-&gt;manager,</td></tr>
+<tr class="codeline" data-linenumber="1725"><td class="num" id="LN1725">1725</td><td class="line"> p-&gt;documents_list_menu_ui_id);</td></tr>
+<tr class="codeline" data-linenumber="1726"><td class="num" id="LN1726">1726</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1727"><td class="num" id="LN1727">1727</td><td class="line"> actions = gtk_action_group_list_actions (p-&gt;documents_list_action_group);</td></tr>
+<tr class="codeline" data-linenumber="1728"><td class="num" id="LN1728">1728</td><td class="line"> <span class='keyword'>for</span> (l = actions; l != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>; l = l-&gt;next)</td></tr>
+<tr class="codeline" data-linenumber="1729"><td class="num" id="LN1729">1729</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="1730"><td class="num" id="LN1730">1730</td><td class="line"> <span class='macro'>g_signal_handlers_disconnect_by_func (GTK_ACTION (l-&gt;data),<span class='macro_popup'>g_signal_handlers_disconnect_matched ((((((GtkAction*) (void *<br>) ((l-&gt;data)))))), (GSignalMatchType) (G_SIGNAL_MATCH_FUNC<br> | G_SIGNAL_MATCH_DATA), 0, 0, ((void*)0), (((GCallback) (documents_list_menu_activate<br>))), (window))</span></span></td></tr>
+<tr class="codeline" data-linenumber="1731"><td class="num" id="LN1731">1731</td><td class="line"> <span class='macro'>G_CALLBACK (documents_list_menu_activate),<span class='macro_popup'>g_signal_handlers_disconnect_matched ((((((GtkAction*) (void *<br>) ((l-&gt;data)))))), (GSignalMatchType) (G_SIGNAL_MATCH_FUNC<br> | G_SIGNAL_MATCH_DATA), 0, 0, ((void*)0), (((GCallback) (documents_list_menu_activate<br>))), (window))</span></span></td></tr>
+<tr class="codeline" data-linenumber="1732"><td class="num" id="LN1732">1732</td><td class="line"> <span class='macro'>window)<span class='macro_popup'>g_signal_handlers_disconnect_matched ((((((GtkAction*) (void *<br>) ((l-&gt;data)))))), (GSignalMatchType) (G_SIGNAL_MATCH_FUNC<br> | G_SIGNAL_MATCH_DATA), 0, 0, ((void*)0), (((GCallback) (documents_list_menu_activate<br>))), (window))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1733"><td class="num" id="LN1733">1733</td><td class="line"> gtk_action_group_remove_action (p-&gt;documents_list_action_group,</td></tr>
+<tr class="codeline" data-linenumber="1734"><td class="num" id="LN1734">1734</td><td class="line"> <span class='macro'>GTK_ACTION (l-&gt;data)<span class='macro_popup'>((((GtkAction*) (void *) ((l-&gt;data)))))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1735"><td class="num" id="LN1735">1735</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1736"><td class="num" id="LN1736">1736</td><td class="line"> g_list_free (actions);</td></tr>
+<tr class="codeline" data-linenumber="1737"><td class="num" id="LN1737">1737</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1738"><td class="num" id="LN1738">1738</td><td class="line"> n = gtk_notebook_get_n_pages (<span class='macro'>GTK_NOTEBOOK (p-&gt;notebook)<span class='macro_popup'>((((GtkNotebook*) (void *) ((p-&gt;notebook)))))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1739"><td class="num" id="LN1739">1739</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1740"><td class="num" id="LN1740">1740</td><td class="line"> id = (n &gt; 0) ? gtk_ui_manager_new_merge_id (p-&gt;manager) : 0;</td></tr>
+<tr class="codeline" data-linenumber="1741"><td class="num" id="LN1741">1741</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1742"><td class="num" id="LN1742">1742</td><td class="line"> <span class='keyword'>for</span> (i = 0; i &lt; n; i++)</td></tr>
+<tr class="codeline" data-linenumber="1743"><td class="num" id="LN1743">1743</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="1744"><td class="num" id="LN1744">1744</td><td class="line"> GtkWidget *tab;</td></tr>
+<tr class="codeline" data-linenumber="1745"><td class="num" id="LN1745">1745</td><td class="line"> GtkRadioAction *action;</td></tr>
+<tr class="codeline" data-linenumber="1746"><td class="num" id="LN1746">1746</td><td class="line"> gchar *action_name;</td></tr>
+<tr class="codeline" data-linenumber="1747"><td class="num" id="LN1747">1747</td><td class="line"> gchar *tab_name;</td></tr>
+<tr class="codeline" data-linenumber="1748"><td class="num" id="LN1748">1748</td><td class="line"> gchar *name;</td></tr>
+<tr class="codeline" data-linenumber="1749"><td class="num" id="LN1749">1749</td><td class="line"> gchar *tip;</td></tr>
+<tr class="codeline" data-linenumber="1750"><td class="num" id="LN1750">1750</td><td class="line"> gchar *accel;</td></tr>
+<tr class="codeline" data-linenumber="1751"><td class="num" id="LN1751">1751</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1752"><td class="num" id="LN1752">1752</td><td class="line"> tab = gtk_notebook_get_nth_page (<span class='macro'>GTK_NOTEBOOK (p-&gt;notebook)<span class='macro_popup'>((((GtkNotebook*) (void *) ((p-&gt;notebook)))))</span></span>, i);</td></tr>
+<tr class="codeline" data-linenumber="1753"><td class="num" id="LN1753">1753</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1754"><td class="num" id="LN1754">1754</td><td class="line"> <span class='comment'>/* NOTE: the action is associated to the position of the tab in</span></td></tr>
+<tr class="codeline" data-linenumber="1755"><td class="num" id="LN1755">1755</td><td class="line"> <span class='comment'>* the notebook not to the tab itself! This is needed to work</span></td></tr>
+<tr class="codeline" data-linenumber="1756"><td class="num" id="LN1756">1756</td><td class="line"> <span class='comment'>* around the gtk+ bug #170727: gtk leaves around the accels</span></td></tr>
+<tr class="codeline" data-linenumber="1757"><td class="num" id="LN1757">1757</td><td class="line"> <span class='comment'>* of the action. Since the accel depends on the tab position</span></td></tr>
+<tr class="codeline" data-linenumber="1758"><td class="num" id="LN1758">1758</td><td class="line"> <span class='comment'>* the problem is worked around, action with the same name always</span></td></tr>
+<tr class="codeline" data-linenumber="1759"><td class="num" id="LN1759">1759</td><td class="line"> <span class='comment'>* get the same accel.</span></td></tr>
+<tr class="codeline" data-linenumber="1760"><td class="num" id="LN1760">1760</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="1761"><td class="num" id="LN1761">1761</td><td class="line"> action_name = g_strdup_printf (<span class='string_literal'>"Tab_%d"</span>, i);</td></tr>
+<tr class="codeline" data-linenumber="1762"><td class="num" id="LN1762">1762</td><td class="line"> tab_name = _pluma_tab_get_name (<span class='macro'>PLUMA_TAB (tab)<span class='macro_popup'>((((PlumaTab*) (void *) ((tab)))))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1763"><td class="num" id="LN1763">1763</td><td class="line"> name = pluma_utils_escape_underscores (tab_name, -1);</td></tr>
+<tr class="codeline" data-linenumber="1764"><td class="num" id="LN1764">1764</td><td class="line"> tip = get_menu_tip_for_tab (<span class='macro'>PLUMA_TAB (tab)<span class='macro_popup'>((((PlumaTab*) (void *) ((tab)))))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1765"><td class="num" id="LN1765">1765</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1766"><td class="num" id="LN1766">1766</td><td class="line"> <span class='comment'>/* alt + 1, 2, 3... 0 to switch to the first ten tabs */</span></td></tr>
+<tr class="codeline" data-linenumber="1767"><td class="num" id="LN1767">1767</td><td class="line"> accel = (i &lt; 10) ? g_strdup_printf (<span class='string_literal'>"&lt;alt&gt;%d"</span>, (i + 1) % 10) : <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1768"><td class="num" id="LN1768">1768</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1769"><td class="num" id="LN1769">1769</td><td class="line"> action = gtk_radio_action_new (action_name,</td></tr>
+<tr class="codeline" data-linenumber="1770"><td class="num" id="LN1770">1770</td><td class="line"> name,</td></tr>
+<tr class="codeline" data-linenumber="1771"><td class="num" id="LN1771">1771</td><td class="line"> tip,</td></tr>
+<tr class="codeline" data-linenumber="1772"><td class="num" id="LN1772">1772</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="1773"><td class="num" id="LN1773">1773</td><td class="line"> i);</td></tr>
+<tr class="codeline" data-linenumber="1774"><td class="num" id="LN1774">1774</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1775"><td class="num" id="LN1775">1775</td><td class="line"> <span class='keyword'>if</span> (group != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="1776"><td class="num" id="LN1776">1776</td><td class="line"> gtk_radio_action_set_group (action, group);</td></tr>
+<tr class="codeline" data-linenumber="1777"><td class="num" id="LN1777">1777</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1778"><td class="num" id="LN1778">1778</td><td class="line"> <span class='comment'>/* note that group changes each time we add an action, so it must be updated */</span></td></tr>
+<tr class="codeline" data-linenumber="1779"><td class="num" id="LN1779">1779</td><td class="line"> group = gtk_radio_action_get_group (action);</td></tr>
+<tr class="codeline" data-linenumber="1780"><td class="num" id="LN1780">1780</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1781"><td class="num" id="LN1781">1781</td><td class="line"> gtk_action_group_add_action_with_accel (p-&gt;documents_list_action_group,</td></tr>
+<tr class="codeline" data-linenumber="1782"><td class="num" id="LN1782">1782</td><td class="line"> <span class='macro'>GTK_ACTION (action)<span class='macro_popup'>((((GtkAction*) (void *) ((action)))))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="1783"><td class="num" id="LN1783">1783</td><td class="line"> accel);</td></tr>
+<tr class="codeline" data-linenumber="1784"><td class="num" id="LN1784">1784</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1785"><td class="num" id="LN1785">1785</td><td class="line"> <span class='macro'>g_signal_connect (action,<span class='macro_popup'>g_signal_connect_data ((action), ("activate"), (((GCallback) (<br>documents_list_menu_activate))), (window), ((void*)0), (GConnectFlags<br>) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="1786"><td class="num" id="LN1786">1786</td><td class="line"> <span class='string_literal'><span class='macro'>"activate"</span>,<span class='macro_popup'>g_signal_connect_data ((action), ("activate"), (((GCallback) (<br>documents_list_menu_activate))), (window), ((void*)0), (GConnectFlags<br>) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="1787"><td class="num" id="LN1787">1787</td><td class="line"> <span class='macro'>G_CALLBACK (documents_list_menu_activate),<span class='macro_popup'>g_signal_connect_data ((action), ("activate"), (((GCallback) (<br>documents_list_menu_activate))), (window), ((void*)0), (GConnectFlags<br>) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="1788"><td class="num" id="LN1788">1788</td><td class="line"> <span class='macro'>window)<span class='macro_popup'>g_signal_connect_data ((action), ("activate"), (((GCallback) (<br>documents_list_menu_activate))), (window), ((void*)0), (GConnectFlags<br>) 0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1789"><td class="num" id="LN1789">1789</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1790"><td class="num" id="LN1790">1790</td><td class="line"> gtk_ui_manager_add_ui (p-&gt;manager,</td></tr>
+<tr class="codeline" data-linenumber="1791"><td class="num" id="LN1791">1791</td><td class="line"> id,</td></tr>
+<tr class="codeline" data-linenumber="1792"><td class="num" id="LN1792">1792</td><td class="line"> <span class='string_literal'>"/MenuBar/DocumentsMenu/DocumentsListPlaceholder"</span>,</td></tr>
+<tr class="codeline" data-linenumber="1793"><td class="num" id="LN1793">1793</td><td class="line"> action_name, action_name,</td></tr>
+<tr class="codeline" data-linenumber="1794"><td class="num" id="LN1794">1794</td><td class="line"> GTK_UI_MANAGER_MENUITEM,</td></tr>
+<tr class="codeline" data-linenumber="1795"><td class="num" id="LN1795">1795</td><td class="line"> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1796"><td class="num" id="LN1796">1796</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1797"><td class="num" id="LN1797">1797</td><td class="line"> <span class='keyword'>if</span> (<span class='macro'>PLUMA_TAB (tab)<span class='macro_popup'>((((PlumaTab*) (void *) ((tab)))))</span></span> == p-&gt;active_tab)</td></tr>
+<tr class="codeline" data-linenumber="1798"><td class="num" id="LN1798">1798</td><td class="line"> gtk_toggle_action_set_active (<span class='macro'>GTK_TOGGLE_ACTION (action)<span class='macro_popup'>((((GtkToggleAction*) (void *) ((action)))))</span></span>, <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1799"><td class="num" id="LN1799">1799</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1800"><td class="num" id="LN1800">1800</td><td class="line"> g_object_unref (action);</td></tr>
+<tr class="codeline" data-linenumber="1801"><td class="num" id="LN1801">1801</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1802"><td class="num" id="LN1802">1802</td><td class="line"> g_free (action_name);</td></tr>
+<tr class="codeline" data-linenumber="1803"><td class="num" id="LN1803">1803</td><td class="line"> g_free (tab_name);</td></tr>
+<tr class="codeline" data-linenumber="1804"><td class="num" id="LN1804">1804</td><td class="line"> g_free (name);</td></tr>
+<tr class="codeline" data-linenumber="1805"><td class="num" id="LN1805">1805</td><td class="line"> g_free (tip);</td></tr>
+<tr class="codeline" data-linenumber="1806"><td class="num" id="LN1806">1806</td><td class="line"> g_free (accel);</td></tr>
+<tr class="codeline" data-linenumber="1807"><td class="num" id="LN1807">1807</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1808"><td class="num" id="LN1808">1808</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1809"><td class="num" id="LN1809">1809</td><td class="line"> p-&gt;documents_list_menu_ui_id = id;</td></tr>
+<tr class="codeline" data-linenumber="1810"><td class="num" id="LN1810">1810</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1811"><td class="num" id="LN1811">1811</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1812"><td class="num" id="LN1812">1812</td><td class="line"><span class='comment'>/* Returns TRUE if status bar is visible */</span></td></tr>
+<tr class="codeline" data-linenumber="1813"><td class="num" id="LN1813">1813</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="1814"><td class="num" id="LN1814">1814</td><td class="line">set_statusbar_style (PlumaWindow *window,</td></tr>
+<tr class="codeline" data-linenumber="1815"><td class="num" id="LN1815">1815</td><td class="line"> PlumaWindow *origin)</td></tr>
+<tr class="codeline" data-linenumber="1816"><td class="num" id="LN1816">1816</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1817"><td class="num" id="LN1817">1817</td><td class="line"> GtkAction *action;</td></tr>
+<tr class="codeline" data-linenumber="1818"><td class="num" id="LN1818">1818</td><td class="line"> gboolean visible;</td></tr>
+<tr class="codeline" data-linenumber="1819"><td class="num" id="LN1819">1819</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1820"><td class="num" id="LN1820">1820</td><td class="line"> <span class='keyword'>if</span> (origin == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="1821"><td class="num" id="LN1821">1821</td><td class="line"> visible = g_settings_get_boolean (window-&gt;priv-&gt;editor_settings,</td></tr>
+<tr class="codeline" data-linenumber="1822"><td class="num" id="LN1822">1822</td><td class="line"> <span class='macro'>PLUMA_SETTINGS_STATUSBAR_VISIBLE<span class='macro_popup'>"statusbar-visible"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1823"><td class="num" id="LN1823">1823</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="1824"><td class="num" id="LN1824">1824</td><td class="line"> visible = gtk_widget_get_visible (origin-&gt;priv-&gt;statusbar);</td></tr>
+<tr class="codeline" data-linenumber="1825"><td class="num" id="LN1825">1825</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1826"><td class="num" id="LN1826">1826</td><td class="line"> <span class='keyword'>if</span> (visible)</td></tr>
+<tr class="codeline" data-linenumber="1827"><td class="num" id="LN1827">1827</td><td class="line"> gtk_widget_show (window-&gt;priv-&gt;statusbar);</td></tr>
+<tr class="codeline" data-linenumber="1828"><td class="num" id="LN1828">1828</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="1829"><td class="num" id="LN1829">1829</td><td class="line"> gtk_widget_hide (window-&gt;priv-&gt;statusbar);</td></tr>
+<tr class="codeline" data-linenumber="1830"><td class="num" id="LN1830">1830</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1831"><td class="num" id="LN1831">1831</td><td class="line"> action = gtk_action_group_get_action (window-&gt;priv-&gt;always_sensitive_action_group,</td></tr>
+<tr class="codeline" data-linenumber="1832"><td class="num" id="LN1832">1832</td><td class="line"> <span class='string_literal'>"ViewStatusbar"</span>);</td></tr>
+<tr class="codeline" data-linenumber="1833"><td class="num" id="LN1833">1833</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1834"><td class="num" id="LN1834">1834</td><td class="line"> <span class='keyword'>if</span> (gtk_toggle_action_get_active (<span class='macro'>GTK_TOGGLE_ACTION (action)<span class='macro_popup'>((((GtkToggleAction*) (void *) ((action)))))</span></span>) != visible)</td></tr>
+<tr class="codeline" data-linenumber="1835"><td class="num" id="LN1835">1835</td><td class="line"> gtk_toggle_action_set_active (<span class='macro'>GTK_TOGGLE_ACTION (action)<span class='macro_popup'>((((GtkToggleAction*) (void *) ((action)))))</span></span>, visible);</td></tr>
+<tr class="codeline" data-linenumber="1836"><td class="num" id="LN1836">1836</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1837"><td class="num" id="LN1837">1837</td><td class="line"> <span class='keyword'>return</span> visible;</td></tr>
+<tr class="codeline" data-linenumber="1838"><td class="num" id="LN1838">1838</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1839"><td class="num" id="LN1839">1839</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1840"><td class="num" id="LN1840">1840</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1841"><td class="num" id="LN1841">1841</td><td class="line">statusbar_visibility_changed (GtkWidget *statusbar,</td></tr>
+<tr class="codeline" data-linenumber="1842"><td class="num" id="LN1842">1842</td><td class="line"> PlumaWindow *window)</td></tr>
+<tr class="codeline" data-linenumber="1843"><td class="num" id="LN1843">1843</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1844"><td class="num" id="LN1844">1844</td><td class="line"> gboolean visible;</td></tr>
+<tr class="codeline" data-linenumber="1845"><td class="num" id="LN1845">1845</td><td class="line"> GtkAction *action;</td></tr>
+<tr class="codeline" data-linenumber="1846"><td class="num" id="LN1846">1846</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1847"><td class="num" id="LN1847">1847</td><td class="line"> visible = gtk_widget_get_visible (statusbar);</td></tr>
+<tr class="codeline" data-linenumber="1848"><td class="num" id="LN1848">1848</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1849"><td class="num" id="LN1849">1849</td><td class="line"> g_settings_set_boolean (window-&gt;priv-&gt;editor_settings,</td></tr>
+<tr class="codeline" data-linenumber="1850"><td class="num" id="LN1850">1850</td><td class="line"> <span class='macro'>PLUMA_SETTINGS_STATUSBAR_VISIBLE<span class='macro_popup'>"statusbar-visible"</span></span>, visible);</td></tr>
+<tr class="codeline" data-linenumber="1851"><td class="num" id="LN1851">1851</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1852"><td class="num" id="LN1852">1852</td><td class="line"> action = gtk_action_group_get_action (window-&gt;priv-&gt;always_sensitive_action_group,</td></tr>
+<tr class="codeline" data-linenumber="1853"><td class="num" id="LN1853">1853</td><td class="line"> <span class='string_literal'>"ViewStatusbar"</span>);</td></tr>
+<tr class="codeline" data-linenumber="1854"><td class="num" id="LN1854">1854</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1855"><td class="num" id="LN1855">1855</td><td class="line"> <span class='keyword'>if</span> (gtk_toggle_action_get_active (<span class='macro'>GTK_TOGGLE_ACTION (action)<span class='macro_popup'>((((GtkToggleAction*) (void *) ((action)))))</span></span>) != visible)</td></tr>
+<tr class="codeline" data-linenumber="1856"><td class="num" id="LN1856">1856</td><td class="line"> gtk_toggle_action_set_active (<span class='macro'>GTK_TOGGLE_ACTION (action)<span class='macro_popup'>((((GtkToggleAction*) (void *) ((action)))))</span></span>, visible);</td></tr>
+<tr class="codeline" data-linenumber="1857"><td class="num" id="LN1857">1857</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1858"><td class="num" id="LN1858">1858</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1859"><td class="num" id="LN1859">1859</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1860"><td class="num" id="LN1860">1860</td><td class="line">tab_width_combo_changed (PlumaStatusComboBox *combo,</td></tr>
+<tr class="codeline" data-linenumber="1861"><td class="num" id="LN1861">1861</td><td class="line"> GtkMenuItem *item,</td></tr>
+<tr class="codeline" data-linenumber="1862"><td class="num" id="LN1862">1862</td><td class="line"> PlumaWindow *window)</td></tr>
+<tr class="codeline" data-linenumber="1863"><td class="num" id="LN1863">1863</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1864"><td class="num" id="LN1864">1864</td><td class="line"> PlumaView *view;</td></tr>
+<tr class="codeline" data-linenumber="1865"><td class="num" id="LN1865">1865</td><td class="line"> guint width_data = 0;</td></tr>
+<tr class="codeline" data-linenumber="1866"><td class="num" id="LN1866">1866</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1867"><td class="num" id="LN1867">1867</td><td class="line"> view = pluma_window_get_active_view (window);</td></tr>
+<tr class="codeline" data-linenumber="1868"><td class="num" id="LN1868">1868</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1869"><td class="num" id="LN1869">1869</td><td class="line"> <span class='keyword'>if</span> (!view)</td></tr>
+<tr class="codeline" data-linenumber="1870"><td class="num" id="LN1870">1870</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="1871"><td class="num" id="LN1871">1871</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1872"><td class="num" id="LN1872">1872</td><td class="line"> width_data = <span class='macro'>GPOINTER_TO_INT (g_object_get_data (G_OBJECT (item), TAB_WIDTH_DATA))<span class='macro_popup'>((gint) (glong) (g_object_get_data (((((GObject*) (void *) ((<br>item))))), "PlumaWindowTabWidthData")))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1873"><td class="num" id="LN1873">1873</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1874"><td class="num" id="LN1874">1874</td><td class="line"> <span class='keyword'>if</span> (width_data == 0)</td></tr>
+<tr class="codeline" data-linenumber="1875"><td class="num" id="LN1875">1875</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="1876"><td class="num" id="LN1876">1876</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1877"><td class="num" id="LN1877">1877</td><td class="line"> g_signal_handler_block (view, window-&gt;priv-&gt;tab_width_id);</td></tr>
+<tr class="codeline" data-linenumber="1878"><td class="num" id="LN1878">1878</td><td class="line"> gtk_source_view_set_tab_width (<span class='macro'>GTK_SOURCE_VIEW (view)<span class='macro_popup'>((((GtkSourceView*) (void *) ((view)))))</span></span>, width_data);</td></tr>
+<tr class="codeline" data-linenumber="1879"><td class="num" id="LN1879">1879</td><td class="line"> g_signal_handler_unblock (view, window-&gt;priv-&gt;tab_width_id);</td></tr>
+<tr class="codeline" data-linenumber="1880"><td class="num" id="LN1880">1880</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1881"><td class="num" id="LN1881">1881</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1882"><td class="num" id="LN1882">1882</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1883"><td class="num" id="LN1883">1883</td><td class="line">use_spaces_toggled (GtkCheckMenuItem *item,</td></tr>
+<tr class="codeline" data-linenumber="1884"><td class="num" id="LN1884">1884</td><td class="line"> PlumaWindow *window)</td></tr>
+<tr class="codeline" data-linenumber="1885"><td class="num" id="LN1885">1885</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1886"><td class="num" id="LN1886">1886</td><td class="line"> PlumaView *view;</td></tr>
+<tr class="codeline" data-linenumber="1887"><td class="num" id="LN1887">1887</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1888"><td class="num" id="LN1888">1888</td><td class="line"> view = pluma_window_get_active_view (window);</td></tr>
+<tr class="codeline" data-linenumber="1889"><td class="num" id="LN1889">1889</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1890"><td class="num" id="LN1890">1890</td><td class="line"> g_signal_handler_block (view, window-&gt;priv-&gt;spaces_instead_of_tabs_id);</td></tr>
+<tr class="codeline" data-linenumber="1891"><td class="num" id="LN1891">1891</td><td class="line"> gtk_source_view_set_insert_spaces_instead_of_tabs (<span class='macro'>GTK_SOURCE_VIEW (view)<span class='macro_popup'>((((GtkSourceView*) (void *) ((view)))))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="1892"><td class="num" id="LN1892">1892</td><td class="line"> gtk_check_menu_item_get_active (item));</td></tr>
+<tr class="codeline" data-linenumber="1893"><td class="num" id="LN1893">1893</td><td class="line"> g_signal_handler_unblock (view, window-&gt;priv-&gt;spaces_instead_of_tabs_id);</td></tr>
+<tr class="codeline" data-linenumber="1894"><td class="num" id="LN1894">1894</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1895"><td class="num" id="LN1895">1895</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1896"><td class="num" id="LN1896">1896</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1897"><td class="num" id="LN1897">1897</td><td class="line">language_combo_changed (PlumaStatusComboBox *combo,</td></tr>
+<tr class="codeline" data-linenumber="1898"><td class="num" id="LN1898">1898</td><td class="line"> GtkMenuItem *item,</td></tr>
+<tr class="codeline" data-linenumber="1899"><td class="num" id="LN1899">1899</td><td class="line"> PlumaWindow *window)</td></tr>
+<tr class="codeline" data-linenumber="1900"><td class="num" id="LN1900">1900</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1901"><td class="num" id="LN1901">1901</td><td class="line"> PlumaDocument *doc;</td></tr>
+<tr class="codeline" data-linenumber="1902"><td class="num" id="LN1902">1902</td><td class="line"> GtkSourceLanguage *language;</td></tr>
+<tr class="codeline" data-linenumber="1903"><td class="num" id="LN1903">1903</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1904"><td class="num" id="LN1904">1904</td><td class="line"> doc = pluma_window_get_active_document (window);</td></tr>
+<tr class="codeline" data-linenumber="1905"><td class="num" id="LN1905">1905</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1906"><td class="num" id="LN1906">1906</td><td class="line"> <span class='keyword'>if</span> (!doc)</td></tr>
+<tr class="codeline" data-linenumber="1907"><td class="num" id="LN1907">1907</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="1908"><td class="num" id="LN1908">1908</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1909"><td class="num" id="LN1909">1909</td><td class="line"> language = <span class='macro'>GTK_SOURCE_LANGUAGE (g_object_get_data (G_OBJECT (item), LANGUAGE_DATA))<span class='macro_popup'>((((GtkSourceLanguage*) (void *) ((g_object_get_data (((((GObject<br>*) (void *) ((item))))), "PlumaWindowLanguageData"))))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1910"><td class="num" id="LN1910">1910</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1911"><td class="num" id="LN1911">1911</td><td class="line"> g_signal_handler_block (doc, window-&gt;priv-&gt;language_changed_id);</td></tr>
+<tr class="codeline" data-linenumber="1912"><td class="num" id="LN1912">1912</td><td class="line"> pluma_document_set_language (doc, language);</td></tr>
+<tr class="codeline" data-linenumber="1913"><td class="num" id="LN1913">1913</td><td class="line"> g_signal_handler_unblock (doc, window-&gt;priv-&gt;language_changed_id);</td></tr>
+<tr class="codeline" data-linenumber="1914"><td class="num" id="LN1914">1914</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1915"><td class="num" id="LN1915">1915</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1916"><td class="num" id="LN1916">1916</td><td class="line"><span class='keyword'>typedef</span> <span class='keyword'>struct</span></td></tr>
+<tr class="codeline" data-linenumber="1917"><td class="num" id="LN1917">1917</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1918"><td class="num" id="LN1918">1918</td><td class="line"> <span class='keyword'>const</span> gchar *label;</td></tr>
+<tr class="codeline" data-linenumber="1919"><td class="num" id="LN1919">1919</td><td class="line"> guint width;</td></tr>
+<tr class="codeline" data-linenumber="1920"><td class="num" id="LN1920">1920</td><td class="line">} TabWidthDefinition;</td></tr>
+<tr class="codeline" data-linenumber="1921"><td class="num" id="LN1921">1921</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1922"><td class="num" id="LN1922">1922</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1923"><td class="num" id="LN1923">1923</td><td class="line">fill_tab_width_combo (PlumaWindow *window)</td></tr>
+<tr class="codeline" data-linenumber="1924"><td class="num" id="LN1924">1924</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1925"><td class="num" id="LN1925">1925</td><td class="line"> <span class='keyword'>static</span> TabWidthDefinition defs[] = {</td></tr>
+<tr class="codeline" data-linenumber="1926"><td class="num" id="LN1926">1926</td><td class="line"> {<span class='string_literal'>"2"</span>, 2},</td></tr>
+<tr class="codeline" data-linenumber="1927"><td class="num" id="LN1927">1927</td><td class="line"> {<span class='string_literal'>"4"</span>, 4},</td></tr>
+<tr class="codeline" data-linenumber="1928"><td class="num" id="LN1928">1928</td><td class="line"> {<span class='string_literal'>"8"</span>, 8},</td></tr>
+<tr class="codeline" data-linenumber="1929"><td class="num" id="LN1929">1929</td><td class="line"> {<span class='string_literal'>""</span>, 0}, <span class='comment'>/* custom size */</span></td></tr>
+<tr class="codeline" data-linenumber="1930"><td class="num" id="LN1930">1930</td><td class="line"> {<span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, 0}</td></tr>
+<tr class="codeline" data-linenumber="1931"><td class="num" id="LN1931">1931</td><td class="line"> };</td></tr>
+<tr class="codeline" data-linenumber="1932"><td class="num" id="LN1932">1932</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1933"><td class="num" id="LN1933">1933</td><td class="line"> PlumaStatusComboBox *combo = <span class='macro'>PLUMA_STATUS_COMBO_BOX (window-&gt;priv-&gt;tab_width_combo)<span class='macro_popup'>((((PlumaStatusComboBox*) (void *) ((window-&gt;priv-&gt;tab_width_combo<br>)))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1934"><td class="num" id="LN1934">1934</td><td class="line"> guint i = 0;</td></tr>
+<tr class="codeline" data-linenumber="1935"><td class="num" id="LN1935">1935</td><td class="line"> GtkWidget *item;</td></tr>
+<tr class="codeline" data-linenumber="1936"><td class="num" id="LN1936">1936</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1937"><td class="num" id="LN1937">1937</td><td class="line"> <span class='keyword'>while</span> (defs[i].label != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="1938"><td class="num" id="LN1938">1938</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="1939"><td class="num" id="LN1939">1939</td><td class="line"> item = gtk_menu_item_new_with_label (defs[i].label);</td></tr>
+<tr class="codeline" data-linenumber="1940"><td class="num" id="LN1940">1940</td><td class="line"> g_object_set_data (<span class='macro'>G_OBJECT (item)<span class='macro_popup'>((((GObject*) (void *) ((item)))))</span></span>, <span class='macro'>TAB_WIDTH_DATA<span class='macro_popup'>"PlumaWindowTabWidthData"</span></span>, <span class='macro'>GINT_TO_POINTER (defs[i].width)<span class='macro_popup'>((gpointer) (glong) (defs[i].width))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1941"><td class="num" id="LN1941">1941</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1942"><td class="num" id="LN1942">1942</td><td class="line"> pluma_status_combo_box_add_item (combo,</td></tr>
+<tr class="codeline" data-linenumber="1943"><td class="num" id="LN1943">1943</td><td class="line"> <span class='macro'>GTK_MENU_ITEM (item)<span class='macro_popup'>((((GtkMenuItem*) (void *) ((item)))))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="1944"><td class="num" id="LN1944">1944</td><td class="line"> defs[i].label);</td></tr>
+<tr class="codeline" data-linenumber="1945"><td class="num" id="LN1945">1945</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1946"><td class="num" id="LN1946">1946</td><td class="line"> <span class='keyword'>if</span> (defs[i].width != 0)</td></tr>
+<tr class="codeline" data-linenumber="1947"><td class="num" id="LN1947">1947</td><td class="line"> gtk_widget_show (item);</td></tr>
+<tr class="codeline" data-linenumber="1948"><td class="num" id="LN1948">1948</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1949"><td class="num" id="LN1949">1949</td><td class="line"> ++i;</td></tr>
+<tr class="codeline" data-linenumber="1950"><td class="num" id="LN1950">1950</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1951"><td class="num" id="LN1951">1951</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1952"><td class="num" id="LN1952">1952</td><td class="line"> item = gtk_separator_menu_item_new ();</td></tr>
+<tr class="codeline" data-linenumber="1953"><td class="num" id="LN1953">1953</td><td class="line"> pluma_status_combo_box_add_item (combo, <span class='macro'>GTK_MENU_ITEM (item)<span class='macro_popup'>((((GtkMenuItem*) (void *) ((item)))))</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1954"><td class="num" id="LN1954">1954</td><td class="line"> gtk_widget_show (item);</td></tr>
+<tr class="codeline" data-linenumber="1955"><td class="num" id="LN1955">1955</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1956"><td class="num" id="LN1956">1956</td><td class="line"> item = gtk_check_menu_item_new_with_label (<span class='macro'>_(<span class='string_literal'>"Use Spaces"</span>)<span class='macro_popup'>dcgettext (((void*)0), "Use Spaces", 5)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1957"><td class="num" id="LN1957">1957</td><td class="line"> pluma_status_combo_box_add_item (combo, <span class='macro'>GTK_MENU_ITEM (item)<span class='macro_popup'>((((GtkMenuItem*) (void *) ((item)))))</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1958"><td class="num" id="LN1958">1958</td><td class="line"> gtk_widget_show (item);</td></tr>
+<tr class="codeline" data-linenumber="1959"><td class="num" id="LN1959">1959</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1960"><td class="num" id="LN1960">1960</td><td class="line"> <span class='macro'>g_signal_connect (item,<span class='macro_popup'>g_signal_connect_data ((item), ("toggled"), (((GCallback) (use_spaces_toggled<br>))), (window), ((void*)0), (GConnectFlags) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="1961"><td class="num" id="LN1961">1961</td><td class="line"> <span class='string_literal'><span class='macro'>"toggled"</span>,<span class='macro_popup'>g_signal_connect_data ((item), ("toggled"), (((GCallback) (use_spaces_toggled<br>))), (window), ((void*)0), (GConnectFlags) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="1962"><td class="num" id="LN1962">1962</td><td class="line"> <span class='macro'>G_CALLBACK (use_spaces_toggled),<span class='macro_popup'>g_signal_connect_data ((item), ("toggled"), (((GCallback) (use_spaces_toggled<br>))), (window), ((void*)0), (GConnectFlags) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="1963"><td class="num" id="LN1963">1963</td><td class="line"> <span class='macro'>window)<span class='macro_popup'>g_signal_connect_data ((item), ("toggled"), (((GCallback) (use_spaces_toggled<br>))), (window), ((void*)0), (GConnectFlags) 0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1964"><td class="num" id="LN1964">1964</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1965"><td class="num" id="LN1965">1965</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1966"><td class="num" id="LN1966">1966</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1967"><td class="num" id="LN1967">1967</td><td class="line">fill_language_combo (PlumaWindow *window)</td></tr>
+<tr class="codeline" data-linenumber="1968"><td class="num" id="LN1968">1968</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1969"><td class="num" id="LN1969">1969</td><td class="line"> GtkSourceLanguageManager *manager;</td></tr>
+<tr class="codeline" data-linenumber="1970"><td class="num" id="LN1970">1970</td><td class="line"> GSList *languages;</td></tr>
+<tr class="codeline" data-linenumber="1971"><td class="num" id="LN1971">1971</td><td class="line"> GSList *item;</td></tr>
+<tr class="codeline" data-linenumber="1972"><td class="num" id="LN1972">1972</td><td class="line"> GtkWidget *menu_item;</td></tr>
+<tr class="codeline" data-linenumber="1973"><td class="num" id="LN1973">1973</td><td class="line"> <span class='keyword'>const</span> gchar *name;</td></tr>
+<tr class="codeline" data-linenumber="1974"><td class="num" id="LN1974">1974</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1975"><td class="num" id="LN1975">1975</td><td class="line"> manager = pluma_get_language_manager ();</td></tr>
+<tr class="codeline" data-linenumber="1976"><td class="num" id="LN1976">1976</td><td class="line"> languages = pluma_language_manager_list_languages_sorted (manager, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1977"><td class="num" id="LN1977">1977</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1978"><td class="num" id="LN1978">1978</td><td class="line"> name = <span class='macro'>_(<span class='string_literal'>"Plain Text"</span>)<span class='macro_popup'>dcgettext (((void*)0), "Plain Text", 5)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1979"><td class="num" id="LN1979">1979</td><td class="line"> menu_item = gtk_menu_item_new_with_label (name);</td></tr>
+<tr class="codeline" data-linenumber="1980"><td class="num" id="LN1980">1980</td><td class="line"> gtk_widget_show (menu_item);</td></tr>
+<tr class="codeline" data-linenumber="1981"><td class="num" id="LN1981">1981</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1982"><td class="num" id="LN1982">1982</td><td class="line"> g_object_set_data (<span class='macro'>G_OBJECT (menu_item)<span class='macro_popup'>((((GObject*) (void *) ((menu_item)))))</span></span>, <span class='macro'>LANGUAGE_DATA<span class='macro_popup'>"PlumaWindowLanguageData"</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1983"><td class="num" id="LN1983">1983</td><td class="line"> pluma_status_combo_box_add_item (<span class='macro'>PLUMA_STATUS_COMBO_BOX (window-&gt;priv-&gt;language_combo)<span class='macro_popup'>((((PlumaStatusComboBox*) (void *) ((window-&gt;priv-&gt;language_combo<br>)))))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="1984"><td class="num" id="LN1984">1984</td><td class="line"> <span class='macro'>GTK_MENU_ITEM (menu_item)<span class='macro_popup'>((((GtkMenuItem*) (void *) ((menu_item)))))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="1985"><td class="num" id="LN1985">1985</td><td class="line"> name);</td></tr>
+<tr class="codeline" data-linenumber="1986"><td class="num" id="LN1986">1986</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1987"><td class="num" id="LN1987">1987</td><td class="line"> <span class='keyword'>for</span> (item = languages; item; item = item-&gt;next)</td></tr>
+<tr class="codeline" data-linenumber="1988"><td class="num" id="LN1988">1988</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="1989"><td class="num" id="LN1989">1989</td><td class="line"> GtkSourceLanguage *lang = <span class='macro'>GTK_SOURCE_LANGUAGE (item-&gt;data)<span class='macro_popup'>((((GtkSourceLanguage*) (void *) ((item-&gt;data)))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1990"><td class="num" id="LN1990">1990</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1991"><td class="num" id="LN1991">1991</td><td class="line"> name = gtk_source_language_get_name (lang);</td></tr>
+<tr class="codeline" data-linenumber="1992"><td class="num" id="LN1992">1992</td><td class="line"> menu_item = gtk_menu_item_new_with_label (name);</td></tr>
+<tr class="codeline" data-linenumber="1993"><td class="num" id="LN1993">1993</td><td class="line"> gtk_widget_show (menu_item);</td></tr>
+<tr class="codeline" data-linenumber="1994"><td class="num" id="LN1994">1994</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1995"><td class="num" id="LN1995">1995</td><td class="line"> g_object_set_data_full (<span class='macro'>G_OBJECT (menu_item)<span class='macro_popup'>((((GObject*) (void *) ((menu_item)))))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="1996"><td class="num" id="LN1996">1996</td><td class="line"> <span class='macro'>LANGUAGE_DATA<span class='macro_popup'>"PlumaWindowLanguageData"</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="1997"><td class="num" id="LN1997">1997</td><td class="line"> <span class='macro'>g_object_ref (lang)<span class='macro_popup'>((__typeof__ (lang)) (g_object_ref) (lang))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="1998"><td class="num" id="LN1998">1998</td><td class="line"> (GDestroyNotify)g_object_unref);</td></tr>
+<tr class="codeline" data-linenumber="1999"><td class="num" id="LN1999">1999</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2000"><td class="num" id="LN2000">2000</td><td class="line"> pluma_status_combo_box_add_item (<span class='macro'>PLUMA_STATUS_COMBO_BOX (window-&gt;priv-&gt;language_combo)<span class='macro_popup'>((((PlumaStatusComboBox*) (void *) ((window-&gt;priv-&gt;language_combo<br>)))))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="2001"><td class="num" id="LN2001">2001</td><td class="line"> <span class='macro'>GTK_MENU_ITEM (menu_item)<span class='macro_popup'>((((GtkMenuItem*) (void *) ((menu_item)))))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="2002"><td class="num" id="LN2002">2002</td><td class="line"> name);</td></tr>
+<tr class="codeline" data-linenumber="2003"><td class="num" id="LN2003">2003</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2004"><td class="num" id="LN2004">2004</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2005"><td class="num" id="LN2005">2005</td><td class="line"> g_slist_free (languages);</td></tr>
+<tr class="codeline" data-linenumber="2006"><td class="num" id="LN2006">2006</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2007"><td class="num" id="LN2007">2007</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2008"><td class="num" id="LN2008">2008</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2009"><td class="num" id="LN2009">2009</td><td class="line">create_statusbar (PlumaWindow *window,</td></tr>
+<tr class="codeline" data-linenumber="2010"><td class="num" id="LN2010">2010</td><td class="line"> GtkWidget *main_box)</td></tr>
+<tr class="codeline" data-linenumber="2011"><td class="num" id="LN2011">2011</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2012"><td class="num" id="LN2012">2012</td><td class="line"> pluma_debug (<span class='macro'>DEBUG_WINDOW<span class='macro_popup'>PLUMA_DEBUG_WINDOW, "pluma-window.c", 2012, ((const char*) (__func__<br>))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2013"><td class="num" id="LN2013">2013</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2014"><td class="num" id="LN2014">2014</td><td class="line"> window-&gt;priv-&gt;statusbar = pluma_statusbar_new ();</td></tr>
+<tr class="codeline" data-linenumber="2015"><td class="num" id="LN2015">2015</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2016"><td class="num" id="LN2016">2016</td><td class="line"> window-&gt;priv-&gt;generic_message_cid = gtk_statusbar_get_context_id</td></tr>
+<tr class="codeline" data-linenumber="2017"><td class="num" id="LN2017">2017</td><td class="line"> (<span class='macro'>GTK_STATUSBAR (window-&gt;priv-&gt;statusbar)<span class='macro_popup'>((((GtkStatusbar*) (void *) ((window-&gt;priv-&gt;statusbar))<br>)))</span></span>, <span class='string_literal'>"generic_message"</span>);</td></tr>
+<tr class="codeline" data-linenumber="2018"><td class="num" id="LN2018">2018</td><td class="line"> window-&gt;priv-&gt;tip_message_cid = gtk_statusbar_get_context_id</td></tr>
+<tr class="codeline" data-linenumber="2019"><td class="num" id="LN2019">2019</td><td class="line"> (<span class='macro'>GTK_STATUSBAR (window-&gt;priv-&gt;statusbar)<span class='macro_popup'>((((GtkStatusbar*) (void *) ((window-&gt;priv-&gt;statusbar))<br>)))</span></span>, <span class='string_literal'>"tip_message"</span>);</td></tr>
+<tr class="codeline" data-linenumber="2020"><td class="num" id="LN2020">2020</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2021"><td class="num" id="LN2021">2021</td><td class="line"> gtk_box_pack_end (<span class='macro'>GTK_BOX (main_box)<span class='macro_popup'>((((GtkBox*) (void *) ((main_box)))))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="2022"><td class="num" id="LN2022">2022</td><td class="line"> window-&gt;priv-&gt;statusbar,</td></tr>
+<tr class="codeline" data-linenumber="2023"><td class="num" id="LN2023">2023</td><td class="line"> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="2024"><td class="num" id="LN2024">2024</td><td class="line"> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="2025"><td class="num" id="LN2025">2025</td><td class="line"> 0);</td></tr>
+<tr class="codeline" data-linenumber="2026"><td class="num" id="LN2026">2026</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2027"><td class="num" id="LN2027">2027</td><td class="line"> window-&gt;priv-&gt;tab_width_combo = pluma_status_combo_box_new (<span class='macro'>_(<span class='string_literal'>"Tab Width"</span>)<span class='macro_popup'>dcgettext (((void*)0), "Tab Width", 5)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2028"><td class="num" id="LN2028">2028</td><td class="line"> gtk_widget_show (window-&gt;priv-&gt;tab_width_combo);</td></tr>
+<tr class="codeline" data-linenumber="2029"><td class="num" id="LN2029">2029</td><td class="line"> gtk_box_pack_end (<span class='macro'>GTK_BOX (window-&gt;priv-&gt;statusbar)<span class='macro_popup'>((((GtkBox*) (void *) ((window-&gt;priv-&gt;statusbar)))))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="2030"><td class="num" id="LN2030">2030</td><td class="line"> window-&gt;priv-&gt;tab_width_combo,</td></tr>
+<tr class="codeline" data-linenumber="2031"><td class="num" id="LN2031">2031</td><td class="line"> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="2032"><td class="num" id="LN2032">2032</td><td class="line"> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="2033"><td class="num" id="LN2033">2033</td><td class="line"> 0);</td></tr>
+<tr class="codeline" data-linenumber="2034"><td class="num" id="LN2034">2034</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2035"><td class="num" id="LN2035">2035</td><td class="line"> fill_tab_width_combo (window);</td></tr>
+<tr class="codeline" data-linenumber="2036"><td class="num" id="LN2036">2036</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2037"><td class="num" id="LN2037">2037</td><td class="line"> <span class='macro'>g_signal_connect (window-&gt;priv-&gt;tab_width_combo, <span class='string_literal'>"changed"</span>,<span class='macro_popup'>g_signal_connect_data ((window-&gt;priv-&gt;tab_width_combo),<br> ("changed"), (((GCallback) (tab_width_combo_changed))), (window<br>), ((void*)0), (GConnectFlags) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="2038"><td class="num" id="LN2038">2038</td><td class="line"> <span class='macro'>G_CALLBACK (tab_width_combo_changed),<span class='macro_popup'>g_signal_connect_data ((window-&gt;priv-&gt;tab_width_combo),<br> ("changed"), (((GCallback) (tab_width_combo_changed))), (window<br>), ((void*)0), (GConnectFlags) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="2039"><td class="num" id="LN2039">2039</td><td class="line"> <span class='macro'>window)<span class='macro_popup'>g_signal_connect_data ((window-&gt;priv-&gt;tab_width_combo),<br> ("changed"), (((GCallback) (tab_width_combo_changed))), (window<br>), ((void*)0), (GConnectFlags) 0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2040"><td class="num" id="LN2040">2040</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2041"><td class="num" id="LN2041">2041</td><td class="line"> window-&gt;priv-&gt;language_combo = pluma_status_combo_box_new (<span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2042"><td class="num" id="LN2042">2042</td><td class="line"> gtk_widget_show (window-&gt;priv-&gt;language_combo);</td></tr>
+<tr class="codeline" data-linenumber="2043"><td class="num" id="LN2043">2043</td><td class="line"> gtk_box_pack_end (<span class='macro'>GTK_BOX (window-&gt;priv-&gt;statusbar)<span class='macro_popup'>((((GtkBox*) (void *) ((window-&gt;priv-&gt;statusbar)))))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="2044"><td class="num" id="LN2044">2044</td><td class="line"> window-&gt;priv-&gt;language_combo,</td></tr>
+<tr class="codeline" data-linenumber="2045"><td class="num" id="LN2045">2045</td><td class="line"> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="2046"><td class="num" id="LN2046">2046</td><td class="line"> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="2047"><td class="num" id="LN2047">2047</td><td class="line"> 0);</td></tr>
+<tr class="codeline" data-linenumber="2048"><td class="num" id="LN2048">2048</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2049"><td class="num" id="LN2049">2049</td><td class="line"> fill_language_combo (window);</td></tr>
+<tr class="codeline" data-linenumber="2050"><td class="num" id="LN2050">2050</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2051"><td class="num" id="LN2051">2051</td><td class="line"> <span class='macro'>g_signal_connect (window-&gt;priv-&gt;language_combo, <span class='string_literal'>"changed"</span>,<span class='macro_popup'>g_signal_connect_data ((window-&gt;priv-&gt;language_combo), (<br>"changed"), (((GCallback) (language_combo_changed))), (window<br>), ((void*)0), (GConnectFlags) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="2052"><td class="num" id="LN2052">2052</td><td class="line"> <span class='macro'>G_CALLBACK (language_combo_changed),<span class='macro_popup'>g_signal_connect_data ((window-&gt;priv-&gt;language_combo), (<br>"changed"), (((GCallback) (language_combo_changed))), (window<br>), ((void*)0), (GConnectFlags) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="2053"><td class="num" id="LN2053">2053</td><td class="line"> <span class='macro'>window)<span class='macro_popup'>g_signal_connect_data ((window-&gt;priv-&gt;language_combo), (<br>"changed"), (((GCallback) (language_combo_changed))), (window<br>), ((void*)0), (GConnectFlags) 0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2054"><td class="num" id="LN2054">2054</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2055"><td class="num" id="LN2055">2055</td><td class="line"> <span class='macro'>g_signal_connect_after (window-&gt;priv-&gt;statusbar, <span class='string_literal'>"show"</span>,<span class='macro_popup'>g_signal_connect_data ((window-&gt;priv-&gt;statusbar), ("show"<br>), (((GCallback) (statusbar_visibility_changed))), (window), (<br>(void*)0), G_CONNECT_AFTER)</span></span></td></tr>
+<tr class="codeline" data-linenumber="2056"><td class="num" id="LN2056">2056</td><td class="line"> <span class='macro'>G_CALLBACK (statusbar_visibility_changed),<span class='macro_popup'>g_signal_connect_data ((window-&gt;priv-&gt;statusbar), ("show"<br>), (((GCallback) (statusbar_visibility_changed))), (window), (<br>(void*)0), G_CONNECT_AFTER)</span></span></td></tr>
+<tr class="codeline" data-linenumber="2057"><td class="num" id="LN2057">2057</td><td class="line"> <span class='macro'>window)<span class='macro_popup'>g_signal_connect_data ((window-&gt;priv-&gt;statusbar), ("show"<br>), (((GCallback) (statusbar_visibility_changed))), (window), (<br>(void*)0), G_CONNECT_AFTER)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2058"><td class="num" id="LN2058">2058</td><td class="line"> <span class='macro'>g_signal_connect_after (window-&gt;priv-&gt;statusbar, <span class='string_literal'>"hide"</span>,<span class='macro_popup'>g_signal_connect_data ((window-&gt;priv-&gt;statusbar), ("hide"<br>), (((GCallback) (statusbar_visibility_changed))), (window), (<br>(void*)0), G_CONNECT_AFTER)</span></span></td></tr>
+<tr class="codeline" data-linenumber="2059"><td class="num" id="LN2059">2059</td><td class="line"> <span class='macro'>G_CALLBACK (statusbar_visibility_changed),<span class='macro_popup'>g_signal_connect_data ((window-&gt;priv-&gt;statusbar), ("hide"<br>), (((GCallback) (statusbar_visibility_changed))), (window), (<br>(void*)0), G_CONNECT_AFTER)</span></span></td></tr>
+<tr class="codeline" data-linenumber="2060"><td class="num" id="LN2060">2060</td><td class="line"> <span class='macro'>window)<span class='macro_popup'>g_signal_connect_data ((window-&gt;priv-&gt;statusbar), ("hide"<br>), (((GCallback) (statusbar_visibility_changed))), (window), (<br>(void*)0), G_CONNECT_AFTER)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2061"><td class="num" id="LN2061">2061</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2062"><td class="num" id="LN2062">2062</td><td class="line"> set_statusbar_style (window, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2063"><td class="num" id="LN2063">2063</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2064"><td class="num" id="LN2064">2064</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2065"><td class="num" id="LN2065">2065</td><td class="line"><span class='keyword'>static</span> PlumaWindow *</td></tr>
+<tr class="codeline" data-linenumber="2066"><td class="num" id="LN2066">2066</td><td class="line">clone_window (PlumaWindow *origin)</td></tr>
+<tr class="codeline" data-linenumber="2067"><td class="num" id="LN2067">2067</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2068"><td class="num" id="LN2068">2068</td><td class="line"> PlumaWindow *window;</td></tr>
+<tr class="codeline" data-linenumber="2069"><td class="num" id="LN2069">2069</td><td class="line"> GdkScreen *screen;</td></tr>
+<tr class="codeline" data-linenumber="2070"><td class="num" id="LN2070">2070</td><td class="line"> PlumaApp *app;</td></tr>
+<tr class="codeline" data-linenumber="2071"><td class="num" id="LN2071">2071</td><td class="line"> gint panel_page;</td></tr>
+<tr class="codeline" data-linenumber="2072"><td class="num" id="LN2072">2072</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2073"><td class="num" id="LN2073">2073</td><td class="line"> pluma_debug (<span class='macro'>DEBUG_WINDOW<span class='macro_popup'>PLUMA_DEBUG_WINDOW, "pluma-window.c", 2073, ((const char*) (__func__<br>))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2074"><td class="num" id="LN2074">2074</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2075"><td class="num" id="LN2075">2075</td><td class="line"> app = pluma_app_get_default ();</td></tr>
+<tr class="codeline" data-linenumber="2076"><td class="num" id="LN2076">2076</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2077"><td class="num" id="LN2077">2077</td><td class="line"> screen = gtk_window_get_screen (<span class='macro'>GTK_WINDOW (origin)<span class='macro_popup'>((((GtkWindow*) (void *) ((origin)))))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2078"><td class="num" id="LN2078">2078</td><td class="line"> window = pluma_app_create_window (app, screen);</td></tr>
+<tr class="codeline" data-linenumber="2079"><td class="num" id="LN2079">2079</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2080"><td class="num" id="LN2080">2080</td><td class="line"> <span class='keyword'>if</span> ((origin-&gt;priv-&gt;window_state &amp; GDK_WINDOW_STATE_MAXIMIZED) != 0)</td></tr>
+<tr class="codeline" data-linenumber="2081"><td class="num" id="LN2081">2081</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="2082"><td class="num" id="LN2082">2082</td><td class="line"> gint w, h;</td></tr>
+<tr class="codeline" data-linenumber="2083"><td class="num" id="LN2083">2083</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2084"><td class="num" id="LN2084">2084</td><td class="line"> _pluma_window_get_default_size (&amp;w, &amp;h);</td></tr>
+<tr class="codeline" data-linenumber="2085"><td class="num" id="LN2085">2085</td><td class="line"> gtk_window_set_default_size (<span class='macro'>GTK_WINDOW (window)<span class='macro_popup'>((((GtkWindow*) (void *) ((window)))))</span></span>, w, h);</td></tr>
+<tr class="codeline" data-linenumber="2086"><td class="num" id="LN2086">2086</td><td class="line"> gtk_window_maximize (<span class='macro'>GTK_WINDOW (window)<span class='macro_popup'>((((GtkWindow*) (void *) ((window)))))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2087"><td class="num" id="LN2087">2087</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2088"><td class="num" id="LN2088">2088</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="2089"><td class="num" id="LN2089">2089</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="2090"><td class="num" id="LN2090">2090</td><td class="line"> gtk_window_set_default_size (<span class='macro'>GTK_WINDOW (window)<span class='macro_popup'>((((GtkWindow*) (void *) ((window)))))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="2091"><td class="num" id="LN2091">2091</td><td class="line"> origin-&gt;priv-&gt;width,</td></tr>
+<tr class="codeline" data-linenumber="2092"><td class="num" id="LN2092">2092</td><td class="line"> origin-&gt;priv-&gt;height);</td></tr>
+<tr class="codeline" data-linenumber="2093"><td class="num" id="LN2093">2093</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2094"><td class="num" id="LN2094">2094</td><td class="line"> gtk_window_unmaximize (<span class='macro'>GTK_WINDOW (window)<span class='macro_popup'>((((GtkWindow*) (void *) ((window)))))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2095"><td class="num" id="LN2095">2095</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2096"><td class="num" id="LN2096">2096</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2097"><td class="num" id="LN2097">2097</td><td class="line"> <span class='keyword'>if</span> ((origin-&gt;priv-&gt;window_state &amp; GDK_WINDOW_STATE_STICKY ) != 0)</td></tr>
+<tr class="codeline" data-linenumber="2098"><td class="num" id="LN2098">2098</td><td class="line"> gtk_window_stick (<span class='macro'>GTK_WINDOW (window)<span class='macro_popup'>((((GtkWindow*) (void *) ((window)))))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2099"><td class="num" id="LN2099">2099</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="2100"><td class="num" id="LN2100">2100</td><td class="line"> gtk_window_unstick (<span class='macro'>GTK_WINDOW (window)<span class='macro_popup'>((((GtkWindow*) (void *) ((window)))))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2101"><td class="num" id="LN2101">2101</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2102"><td class="num" id="LN2102">2102</td><td class="line"> <span class='comment'>/* set the panes size, the paned position will be set when</span></td></tr>
+<tr class="codeline" data-linenumber="2103"><td class="num" id="LN2103">2103</td><td class="line"> <span class='comment'>* they are mapped */</span></td></tr>
+<tr class="codeline" data-linenumber="2104"><td class="num" id="LN2104">2104</td><td class="line"> window-&gt;priv-&gt;side_panel_size = origin-&gt;priv-&gt;side_panel_size;</td></tr>
+<tr class="codeline" data-linenumber="2105"><td class="num" id="LN2105">2105</td><td class="line"> window-&gt;priv-&gt;bottom_panel_size = origin-&gt;priv-&gt;bottom_panel_size;</td></tr>
+<tr class="codeline" data-linenumber="2106"><td class="num" id="LN2106">2106</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2107"><td class="num" id="LN2107">2107</td><td class="line"> panel_page = _pluma_panel_get_active_item_id (<span class='macro'>PLUMA_PANEL (origin-&gt;priv-&gt;side_panel)<span class='macro_popup'>((((PlumaPanel*) (void *) ((origin-&gt;priv-&gt;side_panel)))<br>))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2108"><td class="num" id="LN2108">2108</td><td class="line"> _pluma_panel_set_active_item_by_id (<span class='macro'>PLUMA_PANEL (window-&gt;priv-&gt;side_panel)<span class='macro_popup'>((((PlumaPanel*) (void *) ((window-&gt;priv-&gt;side_panel)))<br>))</span></span>, panel_page);</td></tr>
+<tr class="codeline" data-linenumber="2109"><td class="num" id="LN2109">2109</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2110"><td class="num" id="LN2110">2110</td><td class="line"> panel_page = _pluma_panel_get_active_item_id (<span class='macro'>PLUMA_PANEL (origin-&gt;priv-&gt;bottom_panel)<span class='macro_popup'>((((PlumaPanel*) (void *) ((origin-&gt;priv-&gt;bottom_panel)<br>))))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2111"><td class="num" id="LN2111">2111</td><td class="line"> _pluma_panel_set_active_item_by_id (<span class='macro'>PLUMA_PANEL (window-&gt;priv-&gt;bottom_panel)<span class='macro_popup'>((((PlumaPanel*) (void *) ((window-&gt;priv-&gt;bottom_panel)<br>))))</span></span>, panel_page);</td></tr>
+<tr class="codeline" data-linenumber="2112"><td class="num" id="LN2112">2112</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2113"><td class="num" id="LN2113">2113</td><td class="line"> <span class='keyword'>if</span> (gtk_widget_get_visible (origin-&gt;priv-&gt;side_panel))</td></tr>
+<tr class="codeline" data-linenumber="2114"><td class="num" id="LN2114">2114</td><td class="line"> gtk_widget_show (window-&gt;priv-&gt;side_panel);</td></tr>
+<tr class="codeline" data-linenumber="2115"><td class="num" id="LN2115">2115</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="2116"><td class="num" id="LN2116">2116</td><td class="line"> gtk_widget_hide (window-&gt;priv-&gt;side_panel);</td></tr>
+<tr class="codeline" data-linenumber="2117"><td class="num" id="LN2117">2117</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2118"><td class="num" id="LN2118">2118</td><td class="line"> <span class='keyword'>if</span> (gtk_widget_get_visible (origin-&gt;priv-&gt;bottom_panel))</td></tr>
+<tr class="codeline" data-linenumber="2119"><td class="num" id="LN2119">2119</td><td class="line"> gtk_widget_show (window-&gt;priv-&gt;bottom_panel);</td></tr>
+<tr class="codeline" data-linenumber="2120"><td class="num" id="LN2120">2120</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="2121"><td class="num" id="LN2121">2121</td><td class="line"> gtk_widget_hide (window-&gt;priv-&gt;bottom_panel);</td></tr>
+<tr class="codeline" data-linenumber="2122"><td class="num" id="LN2122">2122</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2123"><td class="num" id="LN2123">2123</td><td class="line"> set_statusbar_style (window, origin);</td></tr>
+<tr class="codeline" data-linenumber="2124"><td class="num" id="LN2124">2124</td><td class="line"> set_toolbar_style (window, origin);</td></tr>
+<tr class="codeline" data-linenumber="2125"><td class="num" id="LN2125">2125</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2126"><td class="num" id="LN2126">2126</td><td class="line"> <span class='keyword'>return</span> window;</td></tr>
+<tr class="codeline" data-linenumber="2127"><td class="num" id="LN2127">2127</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2128"><td class="num" id="LN2128">2128</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2129"><td class="num" id="LN2129">2129</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2130"><td class="num" id="LN2130">2130</td><td class="line">update_cursor_position_statusbar (GtkTextBuffer *buffer,</td></tr>
+<tr class="codeline" data-linenumber="2131"><td class="num" id="LN2131">2131</td><td class="line"> PlumaWindow *window)</td></tr>
+<tr class="codeline" data-linenumber="2132"><td class="num" id="LN2132">2132</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2133"><td class="num" id="LN2133">2133</td><td class="line"> gint row, col;</td></tr>
+<tr class="codeline" data-linenumber="2134"><td class="num" id="LN2134">2134</td><td class="line"> GtkTextIter iter;</td></tr>
+<tr class="codeline" data-linenumber="2135"><td class="num" id="LN2135">2135</td><td class="line"> PlumaView *view;</td></tr>
+<tr class="codeline" data-linenumber="2136"><td class="num" id="LN2136">2136</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2137"><td class="num" id="LN2137">2137</td><td class="line"> pluma_debug (<span class='macro'>DEBUG_WINDOW<span class='macro_popup'>PLUMA_DEBUG_WINDOW, "pluma-window.c", 2137, ((const char*) (__func__<br>))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2138"><td class="num" id="LN2138">2138</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2139"><td class="num" id="LN2139">2139</td><td class="line"> <span class='keyword'>if</span> (buffer != <span class='macro'>GTK_TEXT_BUFFER (pluma_window_get_active_document (window))<span class='macro_popup'>((((GtkTextBuffer*) (void *) ((pluma_window_get_active_document<br> (window))))))</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="2140"><td class="num" id="LN2140">2140</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="2141"><td class="num" id="LN2141">2141</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2142"><td class="num" id="LN2142">2142</td><td class="line"> view = pluma_window_get_active_view (window);</td></tr>
+<tr class="codeline" data-linenumber="2143"><td class="num" id="LN2143">2143</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2144"><td class="num" id="LN2144">2144</td><td class="line"> gtk_text_buffer_get_iter_at_mark (buffer,</td></tr>
+<tr class="codeline" data-linenumber="2145"><td class="num" id="LN2145">2145</td><td class="line"> &amp;iter,</td></tr>
+<tr class="codeline" data-linenumber="2146"><td class="num" id="LN2146">2146</td><td class="line"> gtk_text_buffer_get_insert (buffer));</td></tr>
+<tr class="codeline" data-linenumber="2147"><td class="num" id="LN2147">2147</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2148"><td class="num" id="LN2148">2148</td><td class="line"> row = gtk_text_iter_get_line (&amp;iter);</td></tr>
+<tr class="codeline" data-linenumber="2149"><td class="num" id="LN2149">2149</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2150"><td class="num" id="LN2150">2150</td><td class="line"> col = gtk_source_view_get_visual_column (<span class='macro'>GTK_SOURCE_VIEW(view)<span class='macro_popup'>((((GtkSourceView*) (void *) ((view)))))</span></span>, &amp;iter);</td></tr>
+<tr class="codeline" data-linenumber="2151"><td class="num" id="LN2151">2151</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2152"><td class="num" id="LN2152">2152</td><td class="line"> pluma_statusbar_set_cursor_position (<span class='macro'>PLUMA_STATUSBAR (window-&gt;priv-&gt;statusbar)<span class='macro_popup'>((((PlumaStatusbar*) (void *) ((window-&gt;priv-&gt;statusbar<br>)))))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="2153"><td class="num" id="LN2153">2153</td><td class="line"> row + 1,</td></tr>
+<tr class="codeline" data-linenumber="2154"><td class="num" id="LN2154">2154</td><td class="line"> col + 1);</td></tr>
+<tr class="codeline" data-linenumber="2155"><td class="num" id="LN2155">2155</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2156"><td class="num" id="LN2156">2156</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2157"><td class="num" id="LN2157">2157</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2158"><td class="num" id="LN2158">2158</td><td class="line">update_overwrite_mode_statusbar (GtkTextView *view,</td></tr>
+<tr class="codeline" data-linenumber="2159"><td class="num" id="LN2159">2159</td><td class="line"> PlumaWindow *window)</td></tr>
+<tr class="codeline" data-linenumber="2160"><td class="num" id="LN2160">2160</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2161"><td class="num" id="LN2161">2161</td><td class="line"> <span class='keyword'>if</span> (view != <span class='macro'>GTK_TEXT_VIEW (pluma_window_get_active_view (window))<span class='macro_popup'>((((GtkTextView*) (void *) ((pluma_window_get_active_view (window<br>))))))</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="2162"><td class="num" id="LN2162">2162</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="2163"><td class="num" id="LN2163">2163</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2164"><td class="num" id="LN2164">2164</td><td class="line"> <span class='comment'>/* Note that we have to use !gtk_text_view_get_overwrite since we</span></td></tr>
+<tr class="codeline" data-linenumber="2165"><td class="num" id="LN2165">2165</td><td class="line"> <span class='comment'>are in the in the signal handler of "toggle overwrite" that is</span></td></tr>
+<tr class="codeline" data-linenumber="2166"><td class="num" id="LN2166">2166</td><td class="line"> <span class='comment'>G_SIGNAL_RUN_LAST</span></td></tr>
+<tr class="codeline" data-linenumber="2167"><td class="num" id="LN2167">2167</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="2168"><td class="num" id="LN2168">2168</td><td class="line"> pluma_statusbar_set_overwrite (<span class='macro'>PLUMA_STATUSBAR (window-&gt;priv-&gt;statusbar)<span class='macro_popup'>((((PlumaStatusbar*) (void *) ((window-&gt;priv-&gt;statusbar<br>)))))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="2169"><td class="num" id="LN2169">2169</td><td class="line"> !gtk_text_view_get_overwrite (view));</td></tr>
+<tr class="codeline" data-linenumber="2170"><td class="num" id="LN2170">2170</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2171"><td class="num" id="LN2171">2171</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2172"><td class="num" id="LN2172">2172</td><td class="line"><span class='directive'>#define MAX_TITLE_LENGTH 100</span></td></tr>
+<tr class="codeline" data-linenumber="2173"><td class="num" id="LN2173">2173</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2174"><td class="num" id="LN2174">2174</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2175"><td class="num" id="LN2175">2175</td><td class="line">set_title (PlumaWindow *window)</td></tr>
+<tr class="codeline" data-linenumber="2176"><td class="num" id="LN2176">2176</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2177"><td class="num" id="LN2177">2177</td><td class="line"> PlumaDocument *doc = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2178"><td class="num" id="LN2178">2178</td><td class="line"> gchar *name;</td></tr>
+<tr class="codeline" data-linenumber="2179"><td class="num" id="LN2179">2179</td><td class="line"> gchar *dirname = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2180"><td class="num" id="LN2180">2180</td><td class="line"> gchar *title = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2181"><td class="num" id="LN2181">2181</td><td class="line"> gint len;</td></tr>
+<tr class="codeline" data-linenumber="2182"><td class="num" id="LN2182">2182</td><td class="line"> GtkAction *action;</td></tr>
+<tr class="codeline" data-linenumber="2183"><td class="num" id="LN2183">2183</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2184"><td class="num" id="LN2184">2184</td><td class="line"> <span class='keyword'>if</span> (window-&gt;priv-&gt;active_tab == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="2185"><td class="num" id="LN2185">2185</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="2186"><td class="num" id="LN2186">2186</td><td class="line"> gtk_window_set_title (<span class='macro'>GTK_WINDOW (window)<span class='macro_popup'>((((GtkWindow*) (void *) ((window)))))</span></span>, <span class='string_literal'>"Pluma"</span>);</td></tr>
+<tr class="codeline" data-linenumber="2187"><td class="num" id="LN2187">2187</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="2188"><td class="num" id="LN2188">2188</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2189"><td class="num" id="LN2189">2189</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2190"><td class="num" id="LN2190">2190</td><td class="line"> doc = pluma_tab_get_document (window-&gt;priv-&gt;active_tab);</td></tr>
+<tr class="codeline" data-linenumber="2191"><td class="num" id="LN2191">2191</td><td class="line"> <span class='macro'>g_return_if_fail (doc != NULL)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_73<br>; if (doc != ((void*)0)) _g_boolean_var_73 = 1; else _g_boolean_var_73<br> = 0; _g_boolean_var_73; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "doc != NULL"); return<br>; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2192"><td class="num" id="LN2192">2192</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2193"><td class="num" id="LN2193">2193</td><td class="line"> name = pluma_document_get_short_name_for_display (doc);</td></tr>
+<tr class="codeline" data-linenumber="2194"><td class="num" id="LN2194">2194</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2195"><td class="num" id="LN2195">2195</td><td class="line"> len = g_utf8_strlen (name, -1);</td></tr>
+<tr class="codeline" data-linenumber="2196"><td class="num" id="LN2196">2196</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2197"><td class="num" id="LN2197">2197</td><td class="line"> <span class='comment'>/* if the name is awfully long, truncate it and be done with it,</span></td></tr>
+<tr class="codeline" data-linenumber="2198"><td class="num" id="LN2198">2198</td><td class="line"> <span class='comment'>* otherwise also show the directory (ellipsized if needed)</span></td></tr>
+<tr class="codeline" data-linenumber="2199"><td class="num" id="LN2199">2199</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="2200"><td class="num" id="LN2200">2200</td><td class="line"> <span class='keyword'>if</span> (len &gt; MAX_TITLE_LENGTH)</td></tr>
+<tr class="codeline" data-linenumber="2201"><td class="num" id="LN2201">2201</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="2202"><td class="num" id="LN2202">2202</td><td class="line"> gchar *tmp;</td></tr>
+<tr class="codeline" data-linenumber="2203"><td class="num" id="LN2203">2203</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2204"><td class="num" id="LN2204">2204</td><td class="line"> tmp = pluma_utils_str_middle_truncate (name, MAX_TITLE_LENGTH);</td></tr>
+<tr class="codeline" data-linenumber="2205"><td class="num" id="LN2205">2205</td><td class="line"> g_free (name);</td></tr>
+<tr class="codeline" data-linenumber="2206"><td class="num" id="LN2206">2206</td><td class="line"> name = tmp;</td></tr>
+<tr class="codeline" data-linenumber="2207"><td class="num" id="LN2207">2207</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2208"><td class="num" id="LN2208">2208</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="2209"><td class="num" id="LN2209">2209</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="2210"><td class="num" id="LN2210">2210</td><td class="line"> GFile *file;</td></tr>
+<tr class="codeline" data-linenumber="2211"><td class="num" id="LN2211">2211</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2212"><td class="num" id="LN2212">2212</td><td class="line"> file = pluma_document_get_location (doc);</td></tr>
+<tr class="codeline" data-linenumber="2213"><td class="num" id="LN2213">2213</td><td class="line"> <span class='keyword'>if</span> (file != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="2214"><td class="num" id="LN2214">2214</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="2215"><td class="num" id="LN2215">2215</td><td class="line"> gchar *str;</td></tr>
+<tr class="codeline" data-linenumber="2216"><td class="num" id="LN2216">2216</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2217"><td class="num" id="LN2217">2217</td><td class="line"> str = pluma_utils_location_get_dirname_for_display (file);</td></tr>
+<tr class="codeline" data-linenumber="2218"><td class="num" id="LN2218">2218</td><td class="line"> g_object_unref (file);</td></tr>
+<tr class="codeline" data-linenumber="2219"><td class="num" id="LN2219">2219</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2220"><td class="num" id="LN2220">2220</td><td class="line"> <span class='comment'>/* use the remaining space for the dir, but use a min of 20 chars</span></td></tr>
+<tr class="codeline" data-linenumber="2221"><td class="num" id="LN2221">2221</td><td class="line"> <span class='comment'>* so that we do not end up with a dirname like "(a...b)".</span></td></tr>
+<tr class="codeline" data-linenumber="2222"><td class="num" id="LN2222">2222</td><td class="line"> <span class='comment'>* This means that in the worst case when the filename is long 99</span></td></tr>
+<tr class="codeline" data-linenumber="2223"><td class="num" id="LN2223">2223</td><td class="line"> <span class='comment'>* we have a title long 99 + 20, but I think it's a rare enough</span></td></tr>
+<tr class="codeline" data-linenumber="2224"><td class="num" id="LN2224">2224</td><td class="line"> <span class='comment'>* case to be acceptable. It's justa darn title afterall :)</span></td></tr>
+<tr class="codeline" data-linenumber="2225"><td class="num" id="LN2225">2225</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="2226"><td class="num" id="LN2226">2226</td><td class="line"> dirname = pluma_utils_str_middle_truncate (str, <span class='macro'>MAX (20, MAX_TITLE_LENGTH - len)<span class='macro_popup'>(((20) &gt; (MAX_TITLE_LENGTH - len)) ? (20) : (MAX_TITLE_LENGTH<br> - len))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2227"><td class="num" id="LN2227">2227</td><td class="line"> g_free (str);</td></tr>
+<tr class="codeline" data-linenumber="2228"><td class="num" id="LN2228">2228</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2229"><td class="num" id="LN2229">2229</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2230"><td class="num" id="LN2230">2230</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2231"><td class="num" id="LN2231">2231</td><td class="line"> <span class='keyword'>if</span> (gtk_text_buffer_get_modified (<span class='macro'>GTK_TEXT_BUFFER (doc)<span class='macro_popup'>((((GtkTextBuffer*) (void *) ((doc)))))</span></span>))</td></tr>
+<tr class="codeline" data-linenumber="2232"><td class="num" id="LN2232">2232</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="2233"><td class="num" id="LN2233">2233</td><td class="line"> gchar *tmp_name;</td></tr>
+<tr class="codeline" data-linenumber="2234"><td class="num" id="LN2234">2234</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2235"><td class="num" id="LN2235">2235</td><td class="line"> tmp_name = g_strdup_printf (<span class='string_literal'>"*%s"</span>, name);</td></tr>
+<tr class="codeline" data-linenumber="2236"><td class="num" id="LN2236">2236</td><td class="line"> g_free (name);</td></tr>
+<tr class="codeline" data-linenumber="2237"><td class="num" id="LN2237">2237</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2238"><td class="num" id="LN2238">2238</td><td class="line"> name = tmp_name;</td></tr>
+<tr class="codeline" data-linenumber="2239"><td class="num" id="LN2239">2239</td><td class="line"> cansave = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2240"><td class="num" id="LN2240">2240</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2241"><td class="num" id="LN2241">2241</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="2242"><td class="num" id="LN2242">2242</td><td class="line"> cansave = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2243"><td class="num" id="LN2243">2243</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2244"><td class="num" id="LN2244">2244</td><td class="line"> <span class='keyword'>if</span> (pluma_document_get_readonly (doc))</td></tr>
+<tr class="codeline" data-linenumber="2245"><td class="num" id="LN2245">2245</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="2246"><td class="num" id="LN2246">2246</td><td class="line"> <span class='keyword'>if</span> (dirname != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="2247"><td class="num" id="LN2247">2247</td><td class="line"> title = g_strdup_printf (<span class='string_literal'>"%s [%s] (%s) - Pluma"</span>,</td></tr>
+<tr class="codeline" data-linenumber="2248"><td class="num" id="LN2248">2248</td><td class="line"> name,</td></tr>
+<tr class="codeline" data-linenumber="2249"><td class="num" id="LN2249">2249</td><td class="line"> <span class='macro'>_(<span class='string_literal'>"Read-Only"</span>)<span class='macro_popup'>dcgettext (((void*)0), "Read-Only", 5)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="2250"><td class="num" id="LN2250">2250</td><td class="line"> dirname);</td></tr>
+<tr class="codeline" data-linenumber="2251"><td class="num" id="LN2251">2251</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="2252"><td class="num" id="LN2252">2252</td><td class="line"> title = g_strdup_printf (<span class='string_literal'>"%s [%s] - Pluma"</span>,</td></tr>
+<tr class="codeline" data-linenumber="2253"><td class="num" id="LN2253">2253</td><td class="line"> name,</td></tr>
+<tr class="codeline" data-linenumber="2254"><td class="num" id="LN2254">2254</td><td class="line"> <span class='macro'>_(<span class='string_literal'>"Read-Only"</span>)<span class='macro_popup'>dcgettext (((void*)0), "Read-Only", 5)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2255"><td class="num" id="LN2255">2255</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2256"><td class="num" id="LN2256">2256</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="2257"><td class="num" id="LN2257">2257</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="2258"><td class="num" id="LN2258">2258</td><td class="line"> <span class='keyword'>if</span> (dirname != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="2259"><td class="num" id="LN2259">2259</td><td class="line"> title = g_strdup_printf (<span class='string_literal'>"%s (%s) - Pluma"</span>,</td></tr>
+<tr class="codeline" data-linenumber="2260"><td class="num" id="LN2260">2260</td><td class="line"> name,</td></tr>
+<tr class="codeline" data-linenumber="2261"><td class="num" id="LN2261">2261</td><td class="line"> dirname);</td></tr>
+<tr class="codeline" data-linenumber="2262"><td class="num" id="LN2262">2262</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="2263"><td class="num" id="LN2263">2263</td><td class="line"> title = g_strdup_printf (<span class='string_literal'>"%s - Pluma"</span>,</td></tr>
+<tr class="codeline" data-linenumber="2264"><td class="num" id="LN2264">2264</td><td class="line"> name);</td></tr>
+<tr class="codeline" data-linenumber="2265"><td class="num" id="LN2265">2265</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2266"><td class="num" id="LN2266">2266</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2267"><td class="num" id="LN2267">2267</td><td class="line"> action = gtk_action_group_get_action (window-&gt;priv-&gt;action_group, <span class='string_literal'>"FileSave"</span>);</td></tr>
+<tr class="codeline" data-linenumber="2268"><td class="num" id="LN2268">2268</td><td class="line"> gtk_action_set_sensitive (action, cansave);</td></tr>
+<tr class="codeline" data-linenumber="2269"><td class="num" id="LN2269">2269</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2270"><td class="num" id="LN2270">2270</td><td class="line"> gtk_window_set_title (<span class='macro'>GTK_WINDOW (window)<span class='macro_popup'>((((GtkWindow*) (void *) ((window)))))</span></span>, title);</td></tr>
+<tr class="codeline" data-linenumber="2271"><td class="num" id="LN2271">2271</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2272"><td class="num" id="LN2272">2272</td><td class="line"> g_free (dirname);</td></tr>
+<tr class="codeline" data-linenumber="2273"><td class="num" id="LN2273">2273</td><td class="line"> g_free (name);</td></tr>
+<tr class="codeline" data-linenumber="2274"><td class="num" id="LN2274">2274</td><td class="line"> g_free (title);</td></tr>
+<tr class="codeline" data-linenumber="2275"><td class="num" id="LN2275">2275</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2276"><td class="num" id="LN2276">2276</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2277"><td class="num" id="LN2277">2277</td><td class="line"><span class='directive'>#undef MAX_TITLE_LENGTH</span></td></tr>
+<tr class="codeline" data-linenumber="2278"><td class="num" id="LN2278">2278</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2279"><td class="num" id="LN2279">2279</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2280"><td class="num" id="LN2280">2280</td><td class="line">set_tab_width_item_blocked (PlumaWindow *window,</td></tr>
+<tr class="codeline" data-linenumber="2281"><td class="num" id="LN2281">2281</td><td class="line"> GtkMenuItem *item)</td></tr>
+<tr class="codeline" data-linenumber="2282"><td class="num" id="LN2282">2282</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2283"><td class="num" id="LN2283">2283</td><td class="line"> <span class='macro'>g_signal_handlers_block_by_func (window-&gt;priv-&gt;tab_width_combo,<span class='macro_popup'>g_signal_handlers_block_matched ((window-&gt;priv-&gt;tab_width_combo<br>), (GSignalMatchType) (G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA<br>), 0, 0, ((void*)0), (tab_width_combo_changed), (window))</span></span></td></tr>
+<tr class="codeline" data-linenumber="2284"><td class="num" id="LN2284">2284</td><td class="line"> <span class='macro'>tab_width_combo_changed,<span class='macro_popup'>g_signal_handlers_block_matched ((window-&gt;priv-&gt;tab_width_combo<br>), (GSignalMatchType) (G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA<br>), 0, 0, ((void*)0), (tab_width_combo_changed), (window))</span></span></td></tr>
+<tr class="codeline" data-linenumber="2285"><td class="num" id="LN2285">2285</td><td class="line"> <span class='macro'>window)<span class='macro_popup'>g_signal_handlers_block_matched ((window-&gt;priv-&gt;tab_width_combo<br>), (GSignalMatchType) (G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA<br>), 0, 0, ((void*)0), (tab_width_combo_changed), (window))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2286"><td class="num" id="LN2286">2286</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2287"><td class="num" id="LN2287">2287</td><td class="line"> pluma_status_combo_box_set_item (<span class='macro'>PLUMA_STATUS_COMBO_BOX (window-&gt;priv-&gt;tab_width_combo)<span class='macro_popup'>((((PlumaStatusComboBox*) (void *) ((window-&gt;priv-&gt;tab_width_combo<br>)))))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="2288"><td class="num" id="LN2288">2288</td><td class="line"> item);</td></tr>
+<tr class="codeline" data-linenumber="2289"><td class="num" id="LN2289">2289</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2290"><td class="num" id="LN2290">2290</td><td class="line"> <span class='macro'>g_signal_handlers_unblock_by_func (window-&gt;priv-&gt;tab_width_combo,<span class='macro_popup'>g_signal_handlers_unblock_matched ((window-&gt;priv-&gt;tab_width_combo<br>), (GSignalMatchType) (G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA<br>), 0, 0, ((void*)0), (tab_width_combo_changed), (window))</span></span></td></tr>
+<tr class="codeline" data-linenumber="2291"><td class="num" id="LN2291">2291</td><td class="line"> <span class='macro'>tab_width_combo_changed,<span class='macro_popup'>g_signal_handlers_unblock_matched ((window-&gt;priv-&gt;tab_width_combo<br>), (GSignalMatchType) (G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA<br>), 0, 0, ((void*)0), (tab_width_combo_changed), (window))</span></span></td></tr>
+<tr class="codeline" data-linenumber="2292"><td class="num" id="LN2292">2292</td><td class="line"> <span class='macro'>window)<span class='macro_popup'>g_signal_handlers_unblock_matched ((window-&gt;priv-&gt;tab_width_combo<br>), (GSignalMatchType) (G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA<br>), 0, 0, ((void*)0), (tab_width_combo_changed), (window))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2293"><td class="num" id="LN2293">2293</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2294"><td class="num" id="LN2294">2294</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2295"><td class="num" id="LN2295">2295</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2296"><td class="num" id="LN2296">2296</td><td class="line">spaces_instead_of_tabs_changed (GObject *object,</td></tr>
+<tr class="codeline" data-linenumber="2297"><td class="num" id="LN2297">2297</td><td class="line"> GParamSpec *pspec,</td></tr>
+<tr class="codeline" data-linenumber="2298"><td class="num" id="LN2298">2298</td><td class="line"> PlumaWindow *window)</td></tr>
+<tr class="codeline" data-linenumber="2299"><td class="num" id="LN2299">2299</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2300"><td class="num" id="LN2300">2300</td><td class="line"> PlumaView *view = <span class='macro'>PLUMA_VIEW (object)<span class='macro_popup'>((((PlumaView*) (void *) ((object)))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2301"><td class="num" id="LN2301">2301</td><td class="line"> gboolean active = gtk_source_view_get_insert_spaces_instead_of_tabs (<span class='macro'>GTK_SOURCE_VIEW (view)<span class='macro_popup'>((((GtkSourceView*) (void *) ((view)))))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2302"><td class="num" id="LN2302">2302</td><td class="line"> GList *children = pluma_status_combo_box_get_items (<span class='macro'>PLUMA_STATUS_COMBO_BOX (window-&gt;priv-&gt;tab_width_combo)<span class='macro_popup'>((((PlumaStatusComboBox*) (void *) ((window-&gt;priv-&gt;tab_width_combo<br>)))))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2303"><td class="num" id="LN2303">2303</td><td class="line"> GtkCheckMenuItem *item;</td></tr>
+<tr class="codeline" data-linenumber="2304"><td class="num" id="LN2304">2304</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2305"><td class="num" id="LN2305">2305</td><td class="line"> item = <span class='macro'>GTK_CHECK_MENU_ITEM (g_list_last (children)-&gt;data)<span class='macro_popup'>((((GtkCheckMenuItem*) (void *) ((g_list_last (children)-&gt;<br>data)))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2306"><td class="num" id="LN2306">2306</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2307"><td class="num" id="LN2307">2307</td><td class="line"> gtk_check_menu_item_set_active (item, active);</td></tr>
+<tr class="codeline" data-linenumber="2308"><td class="num" id="LN2308">2308</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2309"><td class="num" id="LN2309">2309</td><td class="line"> g_list_free (children);</td></tr>
+<tr class="codeline" data-linenumber="2310"><td class="num" id="LN2310">2310</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2311"><td class="num" id="LN2311">2311</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2312"><td class="num" id="LN2312">2312</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2313"><td class="num" id="LN2313">2313</td><td class="line">tab_width_changed (GObject *object,</td></tr>
+<tr class="codeline" data-linenumber="2314"><td class="num" id="LN2314">2314</td><td class="line"> GParamSpec *pspec,</td></tr>
+<tr class="codeline" data-linenumber="2315"><td class="num" id="LN2315">2315</td><td class="line"> PlumaWindow *window)</td></tr>
+<tr class="codeline" data-linenumber="2316"><td class="num" id="LN2316">2316</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2317"><td class="num" id="LN2317">2317</td><td class="line"> GList *items;</td></tr>
+<tr class="codeline" data-linenumber="2318"><td class="num" id="LN2318">2318</td><td class="line"> GList *item;</td></tr>
+<tr class="codeline" data-linenumber="2319"><td class="num" id="LN2319">2319</td><td class="line"> PlumaStatusComboBox *combo = <span class='macro'>PLUMA_STATUS_COMBO_BOX (window-&gt;priv-&gt;tab_width_combo)<span class='macro_popup'>((((PlumaStatusComboBox*) (void *) ((window-&gt;priv-&gt;tab_width_combo<br>)))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2320"><td class="num" id="LN2320">2320</td><td class="line"> guint new_tab_width;</td></tr>
+<tr class="codeline" data-linenumber="2321"><td class="num" id="LN2321">2321</td><td class="line"> gboolean found = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2322"><td class="num" id="LN2322">2322</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2323"><td class="num" id="LN2323">2323</td><td class="line"> items = pluma_status_combo_box_get_items (combo);</td></tr>
+<tr class="codeline" data-linenumber="2324"><td class="num" id="LN2324">2324</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2325"><td class="num" id="LN2325">2325</td><td class="line"> new_tab_width = gtk_source_view_get_tab_width (<span class='macro'>GTK_SOURCE_VIEW (object)<span class='macro_popup'>((((GtkSourceView*) (void *) ((object)))))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2326"><td class="num" id="LN2326">2326</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2327"><td class="num" id="LN2327">2327</td><td class="line"> <span class='keyword'>for</span> (item = items; item; item = item-&gt;next)</td></tr>
+<tr class="codeline" data-linenumber="2328"><td class="num" id="LN2328">2328</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="2329"><td class="num" id="LN2329">2329</td><td class="line"> guint tab_width = <span class='macro'>GPOINTER_TO_INT (g_object_get_data (G_OBJECT (item-&gt;data), TAB_WIDTH_DATA))<span class='macro_popup'>((gint) (glong) (g_object_get_data (((((GObject*) (void *) ((<br>item-&gt;data))))), "PlumaWindowTabWidthData")))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2330"><td class="num" id="LN2330">2330</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2331"><td class="num" id="LN2331">2331</td><td class="line"> <span class='keyword'>if</span> (tab_width == new_tab_width)</td></tr>
+<tr class="codeline" data-linenumber="2332"><td class="num" id="LN2332">2332</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="2333"><td class="num" id="LN2333">2333</td><td class="line"> set_tab_width_item_blocked (window, <span class='macro'>GTK_MENU_ITEM (item-&gt;data)<span class='macro_popup'>((((GtkMenuItem*) (void *) ((item-&gt;data)))))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2334"><td class="num" id="LN2334">2334</td><td class="line"> found = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2335"><td class="num" id="LN2335">2335</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2336"><td class="num" id="LN2336">2336</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2337"><td class="num" id="LN2337">2337</td><td class="line"> <span class='keyword'>if</span> (<span class='macro'>GTK_IS_SEPARATOR_MENU_ITEM (item-&gt;next-&gt;data)<span class='macro_popup'>(((__extension__ ({ GTypeInstance *__inst = (GTypeInstance*) (<br>(item-&gt;next-&gt;data)); GType __t = ((gtk_separator_menu_item_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="2338"><td class="num" id="LN2338">2338</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="2339"><td class="num" id="LN2339">2339</td><td class="line"> <span class='keyword'>if</span> (!found)</td></tr>
+<tr class="codeline" data-linenumber="2340"><td class="num" id="LN2340">2340</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="2341"><td class="num" id="LN2341">2341</td><td class="line"> <span class='comment'>/* Set for the last item the custom thing */</span></td></tr>
+<tr class="codeline" data-linenumber="2342"><td class="num" id="LN2342">2342</td><td class="line"> gchar *text;</td></tr>
+<tr class="codeline" data-linenumber="2343"><td class="num" id="LN2343">2343</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2344"><td class="num" id="LN2344">2344</td><td class="line"> text = g_strdup_printf (<span class='string_literal'>"%u"</span>, new_tab_width);</td></tr>
+<tr class="codeline" data-linenumber="2345"><td class="num" id="LN2345">2345</td><td class="line"> pluma_status_combo_box_set_item_text (combo,</td></tr>
+<tr class="codeline" data-linenumber="2346"><td class="num" id="LN2346">2346</td><td class="line"> <span class='macro'>GTK_MENU_ITEM (item-&gt;data)<span class='macro_popup'>((((GtkMenuItem*) (void *) ((item-&gt;data)))))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="2347"><td class="num" id="LN2347">2347</td><td class="line"> text);</td></tr>
+<tr class="codeline" data-linenumber="2348"><td class="num" id="LN2348">2348</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2349"><td class="num" id="LN2349">2349</td><td class="line"> gtk_label_set_text (<span class='macro'>GTK_LABEL (gtk_bin_get_child (GTK_BIN (item-&gt;data)))<span class='macro_popup'>((((GtkLabel*) (void *) ((gtk_bin_get_child (((((GtkBin*) (void<br> *) ((item-&gt;data)))))))))))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="2350"><td class="num" id="LN2350">2350</td><td class="line"> text);</td></tr>
+<tr class="codeline" data-linenumber="2351"><td class="num" id="LN2351">2351</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2352"><td class="num" id="LN2352">2352</td><td class="line"> set_tab_width_item_blocked (window, <span class='macro'>GTK_MENU_ITEM (item-&gt;data)<span class='macro_popup'>((((GtkMenuItem*) (void *) ((item-&gt;data)))))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2353"><td class="num" id="LN2353">2353</td><td class="line"> gtk_widget_show (<span class='macro'>GTK_WIDGET (item-&gt;data)<span class='macro_popup'>((((GtkWidget*) (void *) ((item-&gt;data)))))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2354"><td class="num" id="LN2354">2354</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2355"><td class="num" id="LN2355">2355</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="2356"><td class="num" id="LN2356">2356</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="2357"><td class="num" id="LN2357">2357</td><td class="line"> gtk_widget_hide (<span class='macro'>GTK_WIDGET (item-&gt;data)<span class='macro_popup'>((((GtkWidget*) (void *) ((item-&gt;data)))))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2358"><td class="num" id="LN2358">2358</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2359"><td class="num" id="LN2359">2359</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2360"><td class="num" id="LN2360">2360</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="2361"><td class="num" id="LN2361">2361</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2362"><td class="num" id="LN2362">2362</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2363"><td class="num" id="LN2363">2363</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2364"><td class="num" id="LN2364">2364</td><td class="line"> g_list_free (items);</td></tr>
+<tr class="codeline" data-linenumber="2365"><td class="num" id="LN2365">2365</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2366"><td class="num" id="LN2366">2366</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2367"><td class="num" id="LN2367">2367</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2368"><td class="num" id="LN2368">2368</td><td class="line">language_changed (GObject *object,</td></tr>
+<tr class="codeline" data-linenumber="2369"><td class="num" id="LN2369">2369</td><td class="line"> GParamSpec *pspec,</td></tr>
+<tr class="codeline" data-linenumber="2370"><td class="num" id="LN2370">2370</td><td class="line"> PlumaWindow *window)</td></tr>
+<tr class="codeline" data-linenumber="2371"><td class="num" id="LN2371">2371</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2372"><td class="num" id="LN2372">2372</td><td class="line"> GList *items;</td></tr>
+<tr class="codeline" data-linenumber="2373"><td class="num" id="LN2373">2373</td><td class="line"> GList *item;</td></tr>
+<tr class="codeline" data-linenumber="2374"><td class="num" id="LN2374">2374</td><td class="line"> PlumaStatusComboBox *combo = <span class='macro'>PLUMA_STATUS_COMBO_BOX (window-&gt;priv-&gt;language_combo)<span class='macro_popup'>((((PlumaStatusComboBox*) (void *) ((window-&gt;priv-&gt;language_combo<br>)))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2375"><td class="num" id="LN2375">2375</td><td class="line"> GtkSourceLanguage *new_language;</td></tr>
+<tr class="codeline" data-linenumber="2376"><td class="num" id="LN2376">2376</td><td class="line"> <span class='keyword'>const</span> gchar *new_id;</td></tr>
+<tr class="codeline" data-linenumber="2377"><td class="num" id="LN2377">2377</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2378"><td class="num" id="LN2378">2378</td><td class="line"> items = pluma_status_combo_box_get_items (combo);</td></tr>
+<tr class="codeline" data-linenumber="2379"><td class="num" id="LN2379">2379</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2380"><td class="num" id="LN2380">2380</td><td class="line"> new_language = gtk_source_buffer_get_language (<span class='macro'>GTK_SOURCE_BUFFER (object)<span class='macro_popup'>((((GtkSourceBuffer*) (void *) ((object)))))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2381"><td class="num" id="LN2381">2381</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2382"><td class="num" id="LN2382">2382</td><td class="line"> <span class='keyword'>if</span> (new_language)</td></tr>
+<tr class="codeline" data-linenumber="2383"><td class="num" id="LN2383">2383</td><td class="line"> new_id = gtk_source_language_get_id (new_language);</td></tr>
+<tr class="codeline" data-linenumber="2384"><td class="num" id="LN2384">2384</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="2385"><td class="num" id="LN2385">2385</td><td class="line"> new_id = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2386"><td class="num" id="LN2386">2386</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2387"><td class="num" id="LN2387">2387</td><td class="line"> <span class='keyword'>for</span> (item = items; item; item = item-&gt;next)</td></tr>
+<tr class="codeline" data-linenumber="2388"><td class="num" id="LN2388">2388</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="2389"><td class="num" id="LN2389">2389</td><td class="line"> GtkSourceLanguage *lang = g_object_get_data (<span class='macro'>G_OBJECT (item-&gt;data)<span class='macro_popup'>((((GObject*) (void *) ((item-&gt;data)))))</span></span>, <span class='macro'>LANGUAGE_DATA<span class='macro_popup'>"PlumaWindowLanguageData"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2390"><td class="num" id="LN2390">2390</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2391"><td class="num" id="LN2391">2391</td><td class="line"> <span class='keyword'>if</span> ((new_id == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> &amp;&amp; lang == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) ||</td></tr>
+<tr class="codeline" data-linenumber="2392"><td class="num" id="LN2392">2392</td><td class="line"> (new_id != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> &amp;&amp; lang != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> &amp;&amp; strcmp (gtk_source_language_get_id (lang), new_id) == 0))</td></tr>
+<tr class="codeline" data-linenumber="2393"><td class="num" id="LN2393">2393</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="2394"><td class="num" id="LN2394">2394</td><td class="line"> <span class='macro'>g_signal_handlers_block_by_func (window-&gt;priv-&gt;language_combo,<span class='macro_popup'>g_signal_handlers_block_matched ((window-&gt;priv-&gt;language_combo<br>), (GSignalMatchType) (G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA<br>), 0, 0, ((void*)0), (language_combo_changed), (window))</span></span></td></tr>
+<tr class="codeline" data-linenumber="2395"><td class="num" id="LN2395">2395</td><td class="line"> <span class='macro'>language_combo_changed,<span class='macro_popup'>g_signal_handlers_block_matched ((window-&gt;priv-&gt;language_combo<br>), (GSignalMatchType) (G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA<br>), 0, 0, ((void*)0), (language_combo_changed), (window))</span></span></td></tr>
+<tr class="codeline" data-linenumber="2396"><td class="num" id="LN2396">2396</td><td class="line"> <span class='macro'>window)<span class='macro_popup'>g_signal_handlers_block_matched ((window-&gt;priv-&gt;language_combo<br>), (GSignalMatchType) (G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA<br>), 0, 0, ((void*)0), (language_combo_changed), (window))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2397"><td class="num" id="LN2397">2397</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2398"><td class="num" id="LN2398">2398</td><td class="line"> pluma_status_combo_box_set_item (<span class='macro'>PLUMA_STATUS_COMBO_BOX (window-&gt;priv-&gt;language_combo)<span class='macro_popup'>((((PlumaStatusComboBox*) (void *) ((window-&gt;priv-&gt;language_combo<br>)))))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="2399"><td class="num" id="LN2399">2399</td><td class="line"> <span class='macro'>GTK_MENU_ITEM (item-&gt;data)<span class='macro_popup'>((((GtkMenuItem*) (void *) ((item-&gt;data)))))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2400"><td class="num" id="LN2400">2400</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2401"><td class="num" id="LN2401">2401</td><td class="line"> <span class='macro'>g_signal_handlers_unblock_by_func (window-&gt;priv-&gt;language_combo,<span class='macro_popup'>g_signal_handlers_unblock_matched ((window-&gt;priv-&gt;language_combo<br>), (GSignalMatchType) (G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA<br>), 0, 0, ((void*)0), (language_combo_changed), (window))</span></span></td></tr>
+<tr class="codeline" data-linenumber="2402"><td class="num" id="LN2402">2402</td><td class="line"> <span class='macro'>language_combo_changed,<span class='macro_popup'>g_signal_handlers_unblock_matched ((window-&gt;priv-&gt;language_combo<br>), (GSignalMatchType) (G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA<br>), 0, 0, ((void*)0), (language_combo_changed), (window))</span></span></td></tr>
+<tr class="codeline" data-linenumber="2403"><td class="num" id="LN2403">2403</td><td class="line"> <span class='macro'>window)<span class='macro_popup'>g_signal_handlers_unblock_matched ((window-&gt;priv-&gt;language_combo<br>), (GSignalMatchType) (G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA<br>), 0, 0, ((void*)0), (language_combo_changed), (window))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2404"><td class="num" id="LN2404">2404</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2405"><td class="num" id="LN2405">2405</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2406"><td class="num" id="LN2406">2406</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2407"><td class="num" id="LN2407">2407</td><td class="line"> g_list_free (items);</td></tr>
+<tr class="codeline" data-linenumber="2408"><td class="num" id="LN2408">2408</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2409"><td class="num" id="LN2409">2409</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2410"><td class="num" id="LN2410">2410</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2411"><td class="num" id="LN2411">2411</td><td class="line">notebook_switch_page (GtkNotebook *book,</td></tr>
+<tr class="codeline" data-linenumber="2412"><td class="num" id="LN2412">2412</td><td class="line"> GtkWidget *pg,</td></tr>
+<tr class="codeline" data-linenumber="2413"><td class="num" id="LN2413">2413</td><td class="line"> gint page_num,</td></tr>
+<tr class="codeline" data-linenumber="2414"><td class="num" id="LN2414">2414</td><td class="line"> PlumaWindow *window)</td></tr>
+<tr class="codeline" data-linenumber="2415"><td class="num" id="LN2415">2415</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2416"><td class="num" id="LN2416">2416</td><td class="line"> PlumaView *view;</td></tr>
+<tr class="codeline" data-linenumber="2417"><td class="num" id="LN2417">2417</td><td class="line"> PlumaTab *tab;</td></tr>
+<tr class="codeline" data-linenumber="2418"><td class="num" id="LN2418">2418</td><td class="line"> GtkAction *action;</td></tr>
+<tr class="codeline" data-linenumber="2419"><td class="num" id="LN2419">2419</td><td class="line"> gchar *action_name;</td></tr>
+<tr class="codeline" data-linenumber="2420"><td class="num" id="LN2420">2420</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2421"><td class="num" id="LN2421">2421</td><td class="line"> <span class='comment'>/* CHECK: I don't know why but it seems notebook_switch_page is called</span></td></tr>
+<tr class="codeline" data-linenumber="2422"><td class="num" id="LN2422">2422</td><td class="line"> <span class='comment'>two times every time the user change the active tab */</span></td></tr>
+<tr class="codeline" data-linenumber="2423"><td class="num" id="LN2423">2423</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2424"><td class="num" id="LN2424">2424</td><td class="line"> tab = <span class='macro'>PLUMA_TAB (gtk_notebook_get_nth_page (book, page_num))<span class='macro_popup'>((((PlumaTab*) (void *) ((gtk_notebook_get_nth_page (book, page_num<br>))))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2425"><td class="num" id="LN2425">2425</td><td class="line"> <span class='keyword'>if</span> (tab == window-&gt;priv-&gt;active_tab)</td></tr>
+<tr class="codeline" data-linenumber="2426"><td class="num" id="LN2426">2426</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="2427"><td class="num" id="LN2427">2427</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2428"><td class="num" id="LN2428">2428</td><td class="line"> <span class='keyword'>if</span> (window-&gt;priv-&gt;active_tab)</td></tr>
+<tr class="codeline" data-linenumber="2429"><td class="num" id="LN2429">2429</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="2430"><td class="num" id="LN2430">2430</td><td class="line"><span class='directive'>#if <span class='macro'>GLIB_CHECK_VERSION(2,62,0)<span class='macro_popup'>(2 &gt; (2) || (2 == (2) &amp;&amp; 76 &gt; (62)) || (2 == (2<br>) &amp;&amp; 76 == (62) &amp;&amp; 3 &gt;= (0)))</span></span></span></td></tr>
+<tr class="codeline" data-linenumber="2431"><td class="num" id="LN2431">2431</td><td class="line"> PlumaView *active_tab_view;</td></tr>
+<tr class="codeline" data-linenumber="2432"><td class="num" id="LN2432">2432</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2433"><td class="num" id="LN2433">2433</td><td class="line"> active_tab_view = pluma_tab_get_view (window-&gt;priv-&gt;active_tab);</td></tr>
+<tr class="codeline" data-linenumber="2434"><td class="num" id="LN2434">2434</td><td class="line"> <span class='macro'>g_clear_signal_handler (&amp;window-&gt;priv-&gt;tab_width_id,<span class='macro_popup'>do { gpointer const _instance = (active_tab_view); gulong *const<br> _handler_id_ptr = (&amp;window-&gt;priv-&gt;tab_width_id); const<br> gulong _handler_id = *_handler_id_ptr; if (_handler_id &gt; 0<br>) { *_handler_id_ptr = 0; g_signal_handler_disconnect (_instance<br>, _handler_id); } } while (0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="2435"><td class="num" id="LN2435">2435</td><td class="line"> <span class='macro'>active_tab_view)<span class='macro_popup'>do { gpointer const _instance = (active_tab_view); gulong *const<br> _handler_id_ptr = (&amp;window-&gt;priv-&gt;tab_width_id); const<br> gulong _handler_id = *_handler_id_ptr; if (_handler_id &gt; 0<br>) { *_handler_id_ptr = 0; g_signal_handler_disconnect (_instance<br>, _handler_id); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2436"><td class="num" id="LN2436">2436</td><td class="line"> <span class='macro'>g_clear_signal_handler (&amp;window-&gt;priv-&gt;spaces_instead_of_tabs_id,<span class='macro_popup'>do { gpointer const _instance = (active_tab_view); gulong *const<br> _handler_id_ptr = (&amp;window-&gt;priv-&gt;spaces_instead_of_tabs_id<br>); const gulong _handler_id = *_handler_id_ptr; if (_handler_id<br> &gt; 0) { *_handler_id_ptr = 0; g_signal_handler_disconnect (<br>_instance, _handler_id); } } while (0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="2437"><td class="num" id="LN2437">2437</td><td class="line"> <span class='macro'>active_tab_view)<span class='macro_popup'>do { gpointer const _instance = (active_tab_view); gulong *const<br> _handler_id_ptr = (&amp;window-&gt;priv-&gt;spaces_instead_of_tabs_id<br>); const gulong _handler_id = *_handler_id_ptr; if (_handler_id<br> &gt; 0) { *_handler_id_ptr = 0; g_signal_handler_disconnect (<br>_instance, _handler_id); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2438"><td class="num" id="LN2438">2438</td><td class="line"><span class='directive'>#else</span></td></tr>
+<tr class="codeline" data-linenumber="2439"><td class="num" id="LN2439">2439</td><td class="line"> <span class='keyword'>if</span> (window-&gt;priv-&gt;tab_width_id)</td></tr>
+<tr class="codeline" data-linenumber="2440"><td class="num" id="LN2440">2440</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="2441"><td class="num" id="LN2441">2441</td><td class="line"> g_signal_handler_disconnect (pluma_tab_get_view (window-&gt;priv-&gt;active_tab),</td></tr>
+<tr class="codeline" data-linenumber="2442"><td class="num" id="LN2442">2442</td><td class="line"> window-&gt;priv-&gt;tab_width_id);</td></tr>
+<tr class="codeline" data-linenumber="2443"><td class="num" id="LN2443">2443</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2444"><td class="num" id="LN2444">2444</td><td class="line"> window-&gt;priv-&gt;tab_width_id = 0;</td></tr>
+<tr class="codeline" data-linenumber="2445"><td class="num" id="LN2445">2445</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2446"><td class="num" id="LN2446">2446</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2447"><td class="num" id="LN2447">2447</td><td class="line"> <span class='keyword'>if</span> (window-&gt;priv-&gt;spaces_instead_of_tabs_id)</td></tr>
+<tr class="codeline" data-linenumber="2448"><td class="num" id="LN2448">2448</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="2449"><td class="num" id="LN2449">2449</td><td class="line"> g_signal_handler_disconnect (pluma_tab_get_view (window-&gt;priv-&gt;active_tab),</td></tr>
+<tr class="codeline" data-linenumber="2450"><td class="num" id="LN2450">2450</td><td class="line"> window-&gt;priv-&gt;spaces_instead_of_tabs_id);</td></tr>
+<tr class="codeline" data-linenumber="2451"><td class="num" id="LN2451">2451</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2452"><td class="num" id="LN2452">2452</td><td class="line"> window-&gt;priv-&gt;spaces_instead_of_tabs_id = 0;</td></tr>
+<tr class="codeline" data-linenumber="2453"><td class="num" id="LN2453">2453</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2454"><td class="num" id="LN2454">2454</td><td class="line"><span class='directive'>#endif</span></td></tr>
+<tr class="codeline" data-linenumber="2455"><td class="num" id="LN2455">2455</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2456"><td class="num" id="LN2456">2456</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2457"><td class="num" id="LN2457">2457</td><td class="line"> <span class='comment'>/* set the active tab */</span></td></tr>
+<tr class="codeline" data-linenumber="2458"><td class="num" id="LN2458">2458</td><td class="line"> window-&gt;priv-&gt;active_tab = tab;</td></tr>
+<tr class="codeline" data-linenumber="2459"><td class="num" id="LN2459">2459</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2460"><td class="num" id="LN2460">2460</td><td class="line"> set_title (window);</td></tr>
+<tr class="codeline" data-linenumber="2461"><td class="num" id="LN2461">2461</td><td class="line"> set_sensitivity_according_to_tab (window, tab);</td></tr>
+<tr class="codeline" data-linenumber="2462"><td class="num" id="LN2462">2462</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2463"><td class="num" id="LN2463">2463</td><td class="line"> <span class='comment'>/* activate the right item in the documents menu */</span></td></tr>
+<tr class="codeline" data-linenumber="2464"><td class="num" id="LN2464">2464</td><td class="line"> action_name = g_strdup_printf (<span class='string_literal'>"Tab_%d"</span>, page_num);</td></tr>
+<tr class="codeline" data-linenumber="2465"><td class="num" id="LN2465">2465</td><td class="line"> action = gtk_action_group_get_action (window-&gt;priv-&gt;documents_list_action_group,</td></tr>
+<tr class="codeline" data-linenumber="2466"><td class="num" id="LN2466">2466</td><td class="line"> action_name);</td></tr>
+<tr class="codeline" data-linenumber="2467"><td class="num" id="LN2467">2467</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2468"><td class="num" id="LN2468">2468</td><td class="line"> <span class='comment'>/* sometimes the action doesn't exist yet, and the proper action</span></td></tr>
+<tr class="codeline" data-linenumber="2469"><td class="num" id="LN2469">2469</td><td class="line"> <span class='comment'>* is set active during the documents list menu creation</span></td></tr>
+<tr class="codeline" data-linenumber="2470"><td class="num" id="LN2470">2470</td><td class="line"> <span class='comment'>* CHECK: would it be nicer if active_tab was a property and we monitored the notify signal?</span></td></tr>
+<tr class="codeline" data-linenumber="2471"><td class="num" id="LN2471">2471</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="2472"><td class="num" id="LN2472">2472</td><td class="line"> <span class='keyword'>if</span> (action != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="2473"><td class="num" id="LN2473">2473</td><td class="line"> gtk_toggle_action_set_active (<span class='macro'>GTK_TOGGLE_ACTION (action)<span class='macro_popup'>((((GtkToggleAction*) (void *) ((action)))))</span></span>, <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2474"><td class="num" id="LN2474">2474</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2475"><td class="num" id="LN2475">2475</td><td class="line"> g_free (action_name);</td></tr>
+<tr class="codeline" data-linenumber="2476"><td class="num" id="LN2476">2476</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2477"><td class="num" id="LN2477">2477</td><td class="line"> <span class='comment'>/* update the syntax menu */</span></td></tr>
+<tr class="codeline" data-linenumber="2478"><td class="num" id="LN2478">2478</td><td class="line"> update_languages_menu (window);</td></tr>
+<tr class="codeline" data-linenumber="2479"><td class="num" id="LN2479">2479</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2480"><td class="num" id="LN2480">2480</td><td class="line"> view = pluma_tab_get_view (tab);</td></tr>
+<tr class="codeline" data-linenumber="2481"><td class="num" id="LN2481">2481</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2482"><td class="num" id="LN2482">2482</td><td class="line"> <span class='comment'>/* sync the statusbar */</span></td></tr>
+<tr class="codeline" data-linenumber="2483"><td class="num" id="LN2483">2483</td><td class="line"> update_cursor_position_statusbar (<span class='macro'>GTK_TEXT_BUFFER (pluma_tab_get_document (tab))<span class='macro_popup'>((((GtkTextBuffer*) (void *) ((pluma_tab_get_document (tab)))<br>)))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="2484"><td class="num" id="LN2484">2484</td><td class="line"> window);</td></tr>
+<tr class="codeline" data-linenumber="2485"><td class="num" id="LN2485">2485</td><td class="line"> pluma_statusbar_set_overwrite (<span class='macro'>PLUMA_STATUSBAR (window-&gt;priv-&gt;statusbar)<span class='macro_popup'>((((PlumaStatusbar*) (void *) ((window-&gt;priv-&gt;statusbar<br>)))))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="2486"><td class="num" id="LN2486">2486</td><td class="line"> gtk_text_view_get_overwrite (<span class='macro'>GTK_TEXT_VIEW (view)<span class='macro_popup'>((((GtkTextView*) (void *) ((view)))))</span></span>));</td></tr>
+<tr class="codeline" data-linenumber="2487"><td class="num" id="LN2487">2487</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2488"><td class="num" id="LN2488">2488</td><td class="line"> gtk_widget_show (window-&gt;priv-&gt;tab_width_combo);</td></tr>
+<tr class="codeline" data-linenumber="2489"><td class="num" id="LN2489">2489</td><td class="line"> gtk_widget_show (window-&gt;priv-&gt;language_combo);</td></tr>
+<tr class="codeline" data-linenumber="2490"><td class="num" id="LN2490">2490</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2491"><td class="num" id="LN2491">2491</td><td class="line"> window-&gt;priv-&gt;tab_width_id = <span class='macro'>g_signal_connect (view,<span class='macro_popup'>g_signal_connect_data ((view), ("notify::tab-width"), (((GCallback<br>) (tab_width_changed))), (window), ((void*)0), (GConnectFlags<br>) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="2492"><td class="num" id="LN2492">2492</td><td class="line"> <span class='string_literal'><span class='macro'>"notify::tab-width"</span>,<span class='macro_popup'>g_signal_connect_data ((view), ("notify::tab-width"), (((GCallback<br>) (tab_width_changed))), (window), ((void*)0), (GConnectFlags<br>) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="2493"><td class="num" id="LN2493">2493</td><td class="line"> <span class='macro'>G_CALLBACK (tab_width_changed),<span class='macro_popup'>g_signal_connect_data ((view), ("notify::tab-width"), (((GCallback<br>) (tab_width_changed))), (window), ((void*)0), (GConnectFlags<br>) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="2494"><td class="num" id="LN2494">2494</td><td class="line"> <span class='macro'>window)<span class='macro_popup'>g_signal_connect_data ((view), ("notify::tab-width"), (((GCallback<br>) (tab_width_changed))), (window), ((void*)0), (GConnectFlags<br>) 0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2495"><td class="num" id="LN2495">2495</td><td class="line"> window-&gt;priv-&gt;spaces_instead_of_tabs_id = <span class='macro'>g_signal_connect (view,<span class='macro_popup'>g_signal_connect_data ((view), ("notify::insert-spaces-instead-of-tabs"<br>), (((GCallback) (spaces_instead_of_tabs_changed))), (window)<br>, ((void*)0), (GConnectFlags) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="2496"><td class="num" id="LN2496">2496</td><td class="line"> <span class='string_literal'><span class='macro'>"notify::insert-spaces-instead-of-tabs"</span>,<span class='macro_popup'>g_signal_connect_data ((view), ("notify::insert-spaces-instead-of-tabs"<br>), (((GCallback) (spaces_instead_of_tabs_changed))), (window)<br>, ((void*)0), (GConnectFlags) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="2497"><td class="num" id="LN2497">2497</td><td class="line"> <span class='macro'>G_CALLBACK (spaces_instead_of_tabs_changed),<span class='macro_popup'>g_signal_connect_data ((view), ("notify::insert-spaces-instead-of-tabs"<br>), (((GCallback) (spaces_instead_of_tabs_changed))), (window)<br>, ((void*)0), (GConnectFlags) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="2498"><td class="num" id="LN2498">2498</td><td class="line"> <span class='macro'>window)<span class='macro_popup'>g_signal_connect_data ((view), ("notify::insert-spaces-instead-of-tabs"<br>), (((GCallback) (spaces_instead_of_tabs_changed))), (window)<br>, ((void*)0), (GConnectFlags) 0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2499"><td class="num" id="LN2499">2499</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2500"><td class="num" id="LN2500">2500</td><td class="line"> window-&gt;priv-&gt;language_changed_id = <span class='macro'>g_signal_connect (pluma_tab_get_document (tab),<span class='macro_popup'>g_signal_connect_data ((pluma_tab_get_document (tab)), ("notify::language"<br>), (((GCallback) (language_changed))), (window), ((void*)0), (<br>GConnectFlags) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="2501"><td class="num" id="LN2501">2501</td><td class="line"> <span class='string_literal'><span class='macro'>"notify::language"</span>,<span class='macro_popup'>g_signal_connect_data ((pluma_tab_get_document (tab)), ("notify::language"<br>), (((GCallback) (language_changed))), (window), ((void*)0), (<br>GConnectFlags) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="2502"><td class="num" id="LN2502">2502</td><td class="line"> <span class='macro'>G_CALLBACK (language_changed),<span class='macro_popup'>g_signal_connect_data ((pluma_tab_get_document (tab)), ("notify::language"<br>), (((GCallback) (language_changed))), (window), ((void*)0), (<br>GConnectFlags) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="2503"><td class="num" id="LN2503">2503</td><td class="line"> <span class='macro'>window)<span class='macro_popup'>g_signal_connect_data ((pluma_tab_get_document (tab)), ("notify::language"<br>), (((GCallback) (language_changed))), (window), ((void*)0), (<br>GConnectFlags) 0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2504"><td class="num" id="LN2504">2504</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2505"><td class="num" id="LN2505">2505</td><td class="line"> <span class='comment'>/* call it for the first time */</span></td></tr>
+<tr class="codeline" data-linenumber="2506"><td class="num" id="LN2506">2506</td><td class="line"> tab_width_changed (<span class='macro'>G_OBJECT (view)<span class='macro_popup'>((((GObject*) (void *) ((view)))))</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, window);</td></tr>
+<tr class="codeline" data-linenumber="2507"><td class="num" id="LN2507">2507</td><td class="line"> spaces_instead_of_tabs_changed (<span class='macro'>G_OBJECT (view)<span class='macro_popup'>((((GObject*) (void *) ((view)))))</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, window);</td></tr>
+<tr class="codeline" data-linenumber="2508"><td class="num" id="LN2508">2508</td><td class="line"> language_changed (<span class='macro'>G_OBJECT (pluma_tab_get_document (tab))<span class='macro_popup'>((((GObject*) (void *) ((pluma_tab_get_document (tab))))))</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, window);</td></tr>
+<tr class="codeline" data-linenumber="2509"><td class="num" id="LN2509">2509</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2510"><td class="num" id="LN2510">2510</td><td class="line"> g_signal_emit (<span class='macro'>G_OBJECT (window)<span class='macro_popup'>((((GObject*) (void *) ((window)))))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="2511"><td class="num" id="LN2511">2511</td><td class="line"> signals[ACTIVE_TAB_CHANGED],</td></tr>
+<tr class="codeline" data-linenumber="2512"><td class="num" id="LN2512">2512</td><td class="line"> 0,</td></tr>
+<tr class="codeline" data-linenumber="2513"><td class="num" id="LN2513">2513</td><td class="line"> window-&gt;priv-&gt;active_tab);</td></tr>
+<tr class="codeline" data-linenumber="2514"><td class="num" id="LN2514">2514</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2515"><td class="num" id="LN2515">2515</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2516"><td class="num" id="LN2516">2516</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2517"><td class="num" id="LN2517">2517</td><td class="line">set_sensitivity_according_to_window_state (PlumaWindow *window)</td></tr>
+<tr class="codeline" data-linenumber="2518"><td class="num" id="LN2518">2518</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2519"><td class="num" id="LN2519">2519</td><td class="line"> GtkAction *action;</td></tr>
+<tr class="codeline" data-linenumber="2520"><td class="num" id="LN2520">2520</td><td class="line"> PlumaLockdownMask lockdown;</td></tr>
+<tr class="codeline" data-linenumber="2521"><td class="num" id="LN2521">2521</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2522"><td class="num" id="LN2522">2522</td><td class="line"> lockdown = pluma_app_get_lockdown (pluma_app_get_default ());</td></tr>
+<tr class="codeline" data-linenumber="2523"><td class="num" id="LN2523">2523</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2524"><td class="num" id="LN2524">2524</td><td class="line"> <span class='comment'>/* We disable File-&gt;Quit/SaveAll/CloseAll while printing to avoid to have two</span></td></tr>
+<tr class="codeline" data-linenumber="2525"><td class="num" id="LN2525">2525</td><td class="line"> <span class='comment'>operations (save and print/print preview) that uses the message area at</span></td></tr>
+<tr class="codeline" data-linenumber="2526"><td class="num" id="LN2526">2526</td><td class="line"> <span class='comment'>the same time (may be we can remove this limitation in the future) */</span></td></tr>
+<tr class="codeline" data-linenumber="2527"><td class="num" id="LN2527">2527</td><td class="line"> <span class='comment'>/* We disable File-&gt;Quit/CloseAll if state is saving since saving cannot be</span></td></tr>
+<tr class="codeline" data-linenumber="2528"><td class="num" id="LN2528">2528</td><td class="line"> <span class='comment'>cancelled (may be we can remove this limitation in the future) */</span></td></tr>
+<tr class="codeline" data-linenumber="2529"><td class="num" id="LN2529">2529</td><td class="line"> gtk_action_group_set_sensitive (window-&gt;priv-&gt;quit_action_group,</td></tr>
+<tr class="codeline" data-linenumber="2530"><td class="num" id="LN2530">2530</td><td class="line"> !(window-&gt;priv-&gt;state &amp; PLUMA_WINDOW_STATE_SAVING) &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="2531"><td class="num" id="LN2531">2531</td><td class="line"> !(window-&gt;priv-&gt;state &amp; PLUMA_WINDOW_STATE_PRINTING));</td></tr>
+<tr class="codeline" data-linenumber="2532"><td class="num" id="LN2532">2532</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2533"><td class="num" id="LN2533">2533</td><td class="line"> action = gtk_action_group_get_action (window-&gt;priv-&gt;action_group,</td></tr>
+<tr class="codeline" data-linenumber="2534"><td class="num" id="LN2534">2534</td><td class="line"> <span class='string_literal'>"FileCloseAll"</span>);</td></tr>
+<tr class="codeline" data-linenumber="2535"><td class="num" id="LN2535">2535</td><td class="line"> gtk_action_set_sensitive (action,</td></tr>
+<tr class="codeline" data-linenumber="2536"><td class="num" id="LN2536">2536</td><td class="line"> !(window-&gt;priv-&gt;state &amp; PLUMA_WINDOW_STATE_SAVING) &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="2537"><td class="num" id="LN2537">2537</td><td class="line"> !(window-&gt;priv-&gt;state &amp; PLUMA_WINDOW_STATE_PRINTING));</td></tr>
+<tr class="codeline" data-linenumber="2538"><td class="num" id="LN2538">2538</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2539"><td class="num" id="LN2539">2539</td><td class="line"> action = gtk_action_group_get_action (window-&gt;priv-&gt;action_group,</td></tr>
+<tr class="codeline" data-linenumber="2540"><td class="num" id="LN2540">2540</td><td class="line"> <span class='string_literal'>"FileSaveAll"</span>);</td></tr>
+<tr class="codeline" data-linenumber="2541"><td class="num" id="LN2541">2541</td><td class="line"> gtk_action_set_sensitive (action,</td></tr>
+<tr class="codeline" data-linenumber="2542"><td class="num" id="LN2542">2542</td><td class="line"> !(window-&gt;priv-&gt;state &amp; PLUMA_WINDOW_STATE_PRINTING) &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="2543"><td class="num" id="LN2543">2543</td><td class="line"> !(lockdown &amp; PLUMA_LOCKDOWN_SAVE_TO_DISK));</td></tr>
+<tr class="codeline" data-linenumber="2544"><td class="num" id="LN2544">2544</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2545"><td class="num" id="LN2545">2545</td><td class="line"> action = gtk_action_group_get_action (window-&gt;priv-&gt;always_sensitive_action_group,</td></tr>
+<tr class="codeline" data-linenumber="2546"><td class="num" id="LN2546">2546</td><td class="line"> <span class='string_literal'>"FileNew"</span>);</td></tr>
+<tr class="codeline" data-linenumber="2547"><td class="num" id="LN2547">2547</td><td class="line"> gtk_action_set_sensitive (action,</td></tr>
+<tr class="codeline" data-linenumber="2548"><td class="num" id="LN2548">2548</td><td class="line"> !(window-&gt;priv-&gt;state &amp; PLUMA_WINDOW_STATE_SAVING_SESSION));</td></tr>
+<tr class="codeline" data-linenumber="2549"><td class="num" id="LN2549">2549</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2550"><td class="num" id="LN2550">2550</td><td class="line"> action = gtk_action_group_get_action (window-&gt;priv-&gt;always_sensitive_action_group,</td></tr>
+<tr class="codeline" data-linenumber="2551"><td class="num" id="LN2551">2551</td><td class="line"> <span class='string_literal'>"FileOpen"</span>);</td></tr>
+<tr class="codeline" data-linenumber="2552"><td class="num" id="LN2552">2552</td><td class="line"> gtk_action_set_sensitive (action,</td></tr>
+<tr class="codeline" data-linenumber="2553"><td class="num" id="LN2553">2553</td><td class="line"> !(window-&gt;priv-&gt;state &amp; PLUMA_WINDOW_STATE_SAVING_SESSION));</td></tr>
+<tr class="codeline" data-linenumber="2554"><td class="num" id="LN2554">2554</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2555"><td class="num" id="LN2555">2555</td><td class="line"> gtk_action_group_set_sensitive (window-&gt;priv-&gt;recents_action_group,</td></tr>
+<tr class="codeline" data-linenumber="2556"><td class="num" id="LN2556">2556</td><td class="line"> !(window-&gt;priv-&gt;state &amp; PLUMA_WINDOW_STATE_SAVING_SESSION));</td></tr>
+<tr class="codeline" data-linenumber="2557"><td class="num" id="LN2557">2557</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2558"><td class="num" id="LN2558">2558</td><td class="line"> pluma_notebook_set_close_buttons_sensitive (<span class='macro'>PLUMA_NOTEBOOK (window-&gt;priv-&gt;notebook)<span class='macro_popup'>((((PlumaNotebook*) (void *) ((window-&gt;priv-&gt;notebook))<br>)))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="2559"><td class="num" id="LN2559">2559</td><td class="line"> !(window-&gt;priv-&gt;state &amp; PLUMA_WINDOW_STATE_SAVING_SESSION));</td></tr>
+<tr class="codeline" data-linenumber="2560"><td class="num" id="LN2560">2560</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2561"><td class="num" id="LN2561">2561</td><td class="line"> pluma_notebook_set_tab_drag_and_drop_enabled (<span class='macro'>PLUMA_NOTEBOOK (window-&gt;priv-&gt;notebook)<span class='macro_popup'>((((PlumaNotebook*) (void *) ((window-&gt;priv-&gt;notebook))<br>)))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="2562"><td class="num" id="LN2562">2562</td><td class="line"> !(window-&gt;priv-&gt;state &amp; PLUMA_WINDOW_STATE_SAVING_SESSION));</td></tr>
+<tr class="codeline" data-linenumber="2563"><td class="num" id="LN2563">2563</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2564"><td class="num" id="LN2564">2564</td><td class="line"> <span class='keyword'>if</span> ((window-&gt;priv-&gt;state &amp; PLUMA_WINDOW_STATE_SAVING_SESSION) != 0)</td></tr>
+<tr class="codeline" data-linenumber="2565"><td class="num" id="LN2565">2565</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="2566"><td class="num" id="LN2566">2566</td><td class="line"> <span class='comment'>/* TODO: If we really care, Find could be active</span></td></tr>
+<tr class="codeline" data-linenumber="2567"><td class="num" id="LN2567">2567</td><td class="line"> <span class='comment'>* when in SAVING_SESSION state */</span></td></tr>
+<tr class="codeline" data-linenumber="2568"><td class="num" id="LN2568">2568</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2569"><td class="num" id="LN2569">2569</td><td class="line"> <span class='keyword'>if</span> (gtk_action_group_get_sensitive (window-&gt;priv-&gt;action_group))</td></tr>
+<tr class="codeline" data-linenumber="2570"><td class="num" id="LN2570">2570</td><td class="line"> gtk_action_group_set_sensitive (window-&gt;priv-&gt;action_group, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2571"><td class="num" id="LN2571">2571</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2572"><td class="num" id="LN2572">2572</td><td class="line"> <span class='keyword'>if</span> (gtk_action_group_get_sensitive (window-&gt;priv-&gt;quit_action_group))</td></tr>
+<tr class="codeline" data-linenumber="2573"><td class="num" id="LN2573">2573</td><td class="line"> gtk_action_group_set_sensitive (window-&gt;priv-&gt;quit_action_group, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2574"><td class="num" id="LN2574">2574</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2575"><td class="num" id="LN2575">2575</td><td class="line"> <span class='keyword'>if</span> (gtk_action_group_get_sensitive (window-&gt;priv-&gt;close_action_group))</td></tr>
+<tr class="codeline" data-linenumber="2576"><td class="num" id="LN2576">2576</td><td class="line"> gtk_action_group_set_sensitive (window-&gt;priv-&gt;close_action_group, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2577"><td class="num" id="LN2577">2577</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2578"><td class="num" id="LN2578">2578</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="2579"><td class="num" id="LN2579">2579</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="2580"><td class="num" id="LN2580">2580</td><td class="line"> <span class='keyword'>if</span> (!gtk_action_group_get_sensitive (window-&gt;priv-&gt;action_group))</td></tr>
+<tr class="codeline" data-linenumber="2581"><td class="num" id="LN2581">2581</td><td class="line"> gtk_action_group_set_sensitive (window-&gt;priv-&gt;action_group, window-&gt;priv-&gt;num_tabs &gt; 0);</td></tr>
+<tr class="codeline" data-linenumber="2582"><td class="num" id="LN2582">2582</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2583"><td class="num" id="LN2583">2583</td><td class="line"> <span class='keyword'>if</span> (!gtk_action_group_get_sensitive (window-&gt;priv-&gt;quit_action_group))</td></tr>
+<tr class="codeline" data-linenumber="2584"><td class="num" id="LN2584">2584</td><td class="line"> gtk_action_group_set_sensitive (window-&gt;priv-&gt;quit_action_group, window-&gt;priv-&gt;num_tabs &gt; 0);</td></tr>
+<tr class="codeline" data-linenumber="2585"><td class="num" id="LN2585">2585</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2586"><td class="num" id="LN2586">2586</td><td class="line"> <span class='keyword'>if</span> (!gtk_action_group_get_sensitive (window-&gt;priv-&gt;close_action_group))</td></tr>
+<tr class="codeline" data-linenumber="2587"><td class="num" id="LN2587">2587</td><td class="line"> gtk_action_group_set_sensitive (window-&gt;priv-&gt;close_action_group, window-&gt;priv-&gt;num_tabs &gt; 0);</td></tr>
+<tr class="codeline" data-linenumber="2588"><td class="num" id="LN2588">2588</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2589"><td class="num" id="LN2589">2589</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2590"><td class="num" id="LN2590">2590</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2591"><td class="num" id="LN2591">2591</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2592"><td class="num" id="LN2592">2592</td><td class="line">update_tab_autosave (GtkWidget *widget,</td></tr>
+<tr class="codeline" data-linenumber="2593"><td class="num" id="LN2593">2593</td><td class="line"> gpointer data)</td></tr>
+<tr class="codeline" data-linenumber="2594"><td class="num" id="LN2594">2594</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2595"><td class="num" id="LN2595">2595</td><td class="line"> PlumaTab *tab = <span class='macro'>PLUMA_TAB (widget)<span class='macro_popup'>((((PlumaTab*) (void *) ((widget)))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2596"><td class="num" id="LN2596">2596</td><td class="line"> gboolean *enabled = (gboolean *) data;</td></tr>
+<tr class="codeline" data-linenumber="2597"><td class="num" id="LN2597">2597</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2598"><td class="num" id="LN2598">2598</td><td class="line"> pluma_tab_set_auto_save_enabled (tab, *enabled);</td></tr>
+<tr class="codeline" data-linenumber="2599"><td class="num" id="LN2599">2599</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2600"><td class="num" id="LN2600">2600</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2601"><td class="num" id="LN2601">2601</td><td class="line"><span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2602"><td class="num" id="LN2602">2602</td><td class="line">_pluma_window_set_lockdown (PlumaWindow *window,</td></tr>
+<tr class="codeline" data-linenumber="2603"><td class="num" id="LN2603">2603</td><td class="line"> PlumaLockdownMask lockdown)</td></tr>
+<tr class="codeline" data-linenumber="2604"><td class="num" id="LN2604">2604</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2605"><td class="num" id="LN2605">2605</td><td class="line"> PlumaTab *tab;</td></tr>
+<tr class="codeline" data-linenumber="2606"><td class="num" id="LN2606">2606</td><td class="line"> GtkAction *action;</td></tr>
+<tr class="codeline" data-linenumber="2607"><td class="num" id="LN2607">2607</td><td class="line"> gboolean autosave;</td></tr>
+<tr class="codeline" data-linenumber="2608"><td class="num" id="LN2608">2608</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2609"><td class="num" id="LN2609">2609</td><td class="line"> <span class='comment'>/* start/stop autosave in each existing tab */</span></td></tr>
+<tr class="codeline" data-linenumber="2610"><td class="num" id="LN2610">2610</td><td class="line"> autosave = g_settings_get_boolean (window-&gt;priv-&gt;editor_settings, <span class='macro'>PLUMA_SETTINGS_AUTO_SAVE<span class='macro_popup'>"auto-save"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2611"><td class="num" id="LN2611">2611</td><td class="line"> gtk_container_foreach (<span class='macro'>GTK_CONTAINER (window-&gt;priv-&gt;notebook)<span class='macro_popup'>((((GtkContainer*) (void *) ((window-&gt;priv-&gt;notebook)))<br>))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="2612"><td class="num" id="LN2612">2612</td><td class="line"> update_tab_autosave,</td></tr>
+<tr class="codeline" data-linenumber="2613"><td class="num" id="LN2613">2613</td><td class="line"> &amp;autosave);</td></tr>
+<tr class="codeline" data-linenumber="2614"><td class="num" id="LN2614">2614</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2615"><td class="num" id="LN2615">2615</td><td class="line"> <span class='comment'>/* update menues wrt the current active tab */</span></td></tr>
+<tr class="codeline" data-linenumber="2616"><td class="num" id="LN2616">2616</td><td class="line"> tab = pluma_window_get_active_tab (window);</td></tr>
+<tr class="codeline" data-linenumber="2617"><td class="num" id="LN2617">2617</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2618"><td class="num" id="LN2618">2618</td><td class="line"> set_sensitivity_according_to_tab (window, tab);</td></tr>
+<tr class="codeline" data-linenumber="2619"><td class="num" id="LN2619">2619</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2620"><td class="num" id="LN2620">2620</td><td class="line"> action = gtk_action_group_get_action (window-&gt;priv-&gt;action_group,</td></tr>
+<tr class="codeline" data-linenumber="2621"><td class="num" id="LN2621">2621</td><td class="line"> <span class='string_literal'>"FileSaveAll"</span>);</td></tr>
+<tr class="codeline" data-linenumber="2622"><td class="num" id="LN2622">2622</td><td class="line"> gtk_action_set_sensitive (action,</td></tr>
+<tr class="codeline" data-linenumber="2623"><td class="num" id="LN2623">2623</td><td class="line"> !(window-&gt;priv-&gt;state &amp; PLUMA_WINDOW_STATE_PRINTING) &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="2624"><td class="num" id="LN2624">2624</td><td class="line"> !(lockdown &amp; PLUMA_LOCKDOWN_SAVE_TO_DISK));</td></tr>
+<tr class="codeline" data-linenumber="2625"><td class="num" id="LN2625">2625</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2626"><td class="num" id="LN2626">2626</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2627"><td class="num" id="LN2627">2627</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2628"><td class="num" id="LN2628">2628</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2629"><td class="num" id="LN2629">2629</td><td class="line">analyze_tab_state (PlumaTab *tab,</td></tr>
+<tr class="codeline" data-linenumber="2630"><td class="num" id="LN2630">2630</td><td class="line"> PlumaWindow *window)</td></tr>
+<tr class="codeline" data-linenumber="2631"><td class="num" id="LN2631">2631</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2632"><td class="num" id="LN2632">2632</td><td class="line"> PlumaTabState ts;</td></tr>
+<tr class="codeline" data-linenumber="2633"><td class="num" id="LN2633">2633</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2634"><td class="num" id="LN2634">2634</td><td class="line"> ts = pluma_tab_get_state (tab);</td></tr>
+<tr class="codeline" data-linenumber="2635"><td class="num" id="LN2635">2635</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2636"><td class="num" id="LN2636">2636</td><td class="line"> <span class='keyword'>switch</span> (ts)</td></tr>
+<tr class="codeline" data-linenumber="2637"><td class="num" id="LN2637">2637</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="2638"><td class="num" id="LN2638">2638</td><td class="line"> <span class='keyword'>case</span> PLUMA_TAB_STATE_LOADING:</td></tr>
+<tr class="codeline" data-linenumber="2639"><td class="num" id="LN2639">2639</td><td class="line"> <span class='keyword'>case</span> PLUMA_TAB_STATE_REVERTING:</td></tr>
+<tr class="codeline" data-linenumber="2640"><td class="num" id="LN2640">2640</td><td class="line"> window-&gt;priv-&gt;state |= PLUMA_WINDOW_STATE_LOADING;</td></tr>
+<tr class="codeline" data-linenumber="2641"><td class="num" id="LN2641">2641</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="2642"><td class="num" id="LN2642">2642</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2643"><td class="num" id="LN2643">2643</td><td class="line"> <span class='keyword'>case</span> PLUMA_TAB_STATE_SAVING:</td></tr>
+<tr class="codeline" data-linenumber="2644"><td class="num" id="LN2644">2644</td><td class="line"> window-&gt;priv-&gt;state |= PLUMA_WINDOW_STATE_SAVING;</td></tr>
+<tr class="codeline" data-linenumber="2645"><td class="num" id="LN2645">2645</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="2646"><td class="num" id="LN2646">2646</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2647"><td class="num" id="LN2647">2647</td><td class="line"> <span class='keyword'>case</span> PLUMA_TAB_STATE_PRINTING:</td></tr>
+<tr class="codeline" data-linenumber="2648"><td class="num" id="LN2648">2648</td><td class="line"> <span class='keyword'>case</span> PLUMA_TAB_STATE_PRINT_PREVIEWING:</td></tr>
+<tr class="codeline" data-linenumber="2649"><td class="num" id="LN2649">2649</td><td class="line"> window-&gt;priv-&gt;state |= PLUMA_WINDOW_STATE_PRINTING;</td></tr>
+<tr class="codeline" data-linenumber="2650"><td class="num" id="LN2650">2650</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="2651"><td class="num" id="LN2651">2651</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2652"><td class="num" id="LN2652">2652</td><td class="line"> <span class='keyword'>case</span> PLUMA_TAB_STATE_LOADING_ERROR:</td></tr>
+<tr class="codeline" data-linenumber="2653"><td class="num" id="LN2653">2653</td><td class="line"> <span class='keyword'>case</span> PLUMA_TAB_STATE_REVERTING_ERROR:</td></tr>
+<tr class="codeline" data-linenumber="2654"><td class="num" id="LN2654">2654</td><td class="line"> <span class='keyword'>case</span> PLUMA_TAB_STATE_SAVING_ERROR:</td></tr>
+<tr class="codeline" data-linenumber="2655"><td class="num" id="LN2655">2655</td><td class="line"> <span class='keyword'>case</span> PLUMA_TAB_STATE_GENERIC_ERROR:</td></tr>
+<tr class="codeline" data-linenumber="2656"><td class="num" id="LN2656">2656</td><td class="line"> window-&gt;priv-&gt;state |= PLUMA_WINDOW_STATE_ERROR;</td></tr>
+<tr class="codeline" data-linenumber="2657"><td class="num" id="LN2657">2657</td><td class="line"> ++window-&gt;priv-&gt;num_tabs_with_error;</td></tr>
+<tr class="codeline" data-linenumber="2658"><td class="num" id="LN2658">2658</td><td class="line"> <span class='keyword'>default</span>:</td></tr>
+<tr class="codeline" data-linenumber="2659"><td class="num" id="LN2659">2659</td><td class="line"> <span class='comment'>/* NOP */</span></td></tr>
+<tr class="codeline" data-linenumber="2660"><td class="num" id="LN2660">2660</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="2661"><td class="num" id="LN2661">2661</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2662"><td class="num" id="LN2662">2662</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2663"><td class="num" id="LN2663">2663</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2664"><td class="num" id="LN2664">2664</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2665"><td class="num" id="LN2665">2665</td><td class="line">update_window_state (PlumaWindow *window)</td></tr>
+<tr class="codeline" data-linenumber="2666"><td class="num" id="LN2666">2666</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2667"><td class="num" id="LN2667">2667</td><td class="line"> PlumaWindowState old_ws;</td></tr>
+<tr class="codeline" data-linenumber="2668"><td class="num" id="LN2668">2668</td><td class="line"> gint old_num_of_errors;</td></tr>
+<tr class="codeline" data-linenumber="2669"><td class="num" id="LN2669">2669</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2670"><td class="num" id="LN2670">2670</td><td class="line"> pluma_debug_message (<span class='macro'>DEBUG_WINDOW<span class='macro_popup'>PLUMA_DEBUG_WINDOW, "pluma-window.c", 2670, ((const char*) (__func__<br>))</span></span>, <span class='string_literal'>"Old state: %x"</span>, window-&gt;priv-&gt;state);</td></tr>
+<tr class="codeline" data-linenumber="2671"><td class="num" id="LN2671">2671</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2672"><td class="num" id="LN2672">2672</td><td class="line"> old_ws = window-&gt;priv-&gt;state;</td></tr>
+<tr class="codeline" data-linenumber="2673"><td class="num" id="LN2673">2673</td><td class="line"> old_num_of_errors = window-&gt;priv-&gt;num_tabs_with_error;</td></tr>
+<tr class="codeline" data-linenumber="2674"><td class="num" id="LN2674">2674</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2675"><td class="num" id="LN2675">2675</td><td class="line"> window-&gt;priv-&gt;state = old_ws &amp; PLUMA_WINDOW_STATE_SAVING_SESSION;</td></tr>
+<tr class="codeline" data-linenumber="2676"><td class="num" id="LN2676">2676</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2677"><td class="num" id="LN2677">2677</td><td class="line"> window-&gt;priv-&gt;num_tabs_with_error = 0;</td></tr>
+<tr class="codeline" data-linenumber="2678"><td class="num" id="LN2678">2678</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2679"><td class="num" id="LN2679">2679</td><td class="line"> gtk_container_foreach (<span class='macro'>GTK_CONTAINER (window-&gt;priv-&gt;notebook)<span class='macro_popup'>((((GtkContainer*) (void *) ((window-&gt;priv-&gt;notebook)))<br>))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="2680"><td class="num" id="LN2680">2680</td><td class="line"> (GtkCallback)analyze_tab_state,</td></tr>
+<tr class="codeline" data-linenumber="2681"><td class="num" id="LN2681">2681</td><td class="line"> window);</td></tr>
+<tr class="codeline" data-linenumber="2682"><td class="num" id="LN2682">2682</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2683"><td class="num" id="LN2683">2683</td><td class="line"> pluma_debug_message (<span class='macro'>DEBUG_WINDOW<span class='macro_popup'>PLUMA_DEBUG_WINDOW, "pluma-window.c", 2683, ((const char*) (__func__<br>))</span></span>, <span class='string_literal'>"New state: %x"</span>, window-&gt;priv-&gt;state);</td></tr>
+<tr class="codeline" data-linenumber="2684"><td class="num" id="LN2684">2684</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2685"><td class="num" id="LN2685">2685</td><td class="line"> <span class='keyword'>if</span> (old_ws != window-&gt;priv-&gt;state)</td></tr>
+<tr class="codeline" data-linenumber="2686"><td class="num" id="LN2686">2686</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="2687"><td class="num" id="LN2687">2687</td><td class="line"> set_sensitivity_according_to_window_state (window);</td></tr>
+<tr class="codeline" data-linenumber="2688"><td class="num" id="LN2688">2688</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2689"><td class="num" id="LN2689">2689</td><td class="line"> pluma_statusbar_set_window_state (<span class='macro'>PLUMA_STATUSBAR (window-&gt;priv-&gt;statusbar)<span class='macro_popup'>((((PlumaStatusbar*) (void *) ((window-&gt;priv-&gt;statusbar<br>)))))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="2690"><td class="num" id="LN2690">2690</td><td class="line"> window-&gt;priv-&gt;state,</td></tr>
+<tr class="codeline" data-linenumber="2691"><td class="num" id="LN2691">2691</td><td class="line"> window-&gt;priv-&gt;num_tabs_with_error);</td></tr>
+<tr class="codeline" data-linenumber="2692"><td class="num" id="LN2692">2692</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2693"><td class="num" id="LN2693">2693</td><td class="line"> g_object_notify (<span class='macro'>G_OBJECT (window)<span class='macro_popup'>((((GObject*) (void *) ((window)))))</span></span>, <span class='string_literal'>"state"</span>);</td></tr>
+<tr class="codeline" data-linenumber="2694"><td class="num" id="LN2694">2694</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2695"><td class="num" id="LN2695">2695</td><td class="line"> <span class='keyword'>else</span> <span class='keyword'>if</span> (old_num_of_errors != window-&gt;priv-&gt;num_tabs_with_error)</td></tr>
+<tr class="codeline" data-linenumber="2696"><td class="num" id="LN2696">2696</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="2697"><td class="num" id="LN2697">2697</td><td class="line"> pluma_statusbar_set_window_state (<span class='macro'>PLUMA_STATUSBAR (window-&gt;priv-&gt;statusbar)<span class='macro_popup'>((((PlumaStatusbar*) (void *) ((window-&gt;priv-&gt;statusbar<br>)))))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="2698"><td class="num" id="LN2698">2698</td><td class="line"> window-&gt;priv-&gt;state,</td></tr>
+<tr class="codeline" data-linenumber="2699"><td class="num" id="LN2699">2699</td><td class="line"> window-&gt;priv-&gt;num_tabs_with_error);</td></tr>
+<tr class="codeline" data-linenumber="2700"><td class="num" id="LN2700">2700</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2701"><td class="num" id="LN2701">2701</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2702"><td class="num" id="LN2702">2702</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2703"><td class="num" id="LN2703">2703</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2704"><td class="num" id="LN2704">2704</td><td class="line">sync_state (PlumaTab *tab,</td></tr>
+<tr class="codeline" data-linenumber="2705"><td class="num" id="LN2705">2705</td><td class="line"> GParamSpec *pspec,</td></tr>
+<tr class="codeline" data-linenumber="2706"><td class="num" id="LN2706">2706</td><td class="line"> PlumaWindow *window)</td></tr>
+<tr class="codeline" data-linenumber="2707"><td class="num" id="LN2707">2707</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2708"><td class="num" id="LN2708">2708</td><td class="line"> pluma_debug (<span class='macro'>DEBUG_WINDOW<span class='macro_popup'>PLUMA_DEBUG_WINDOW, "pluma-window.c", 2708, ((const char*) (__func__<br>))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2709"><td class="num" id="LN2709">2709</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2710"><td class="num" id="LN2710">2710</td><td class="line"> update_window_state (window);</td></tr>
+<tr class="codeline" data-linenumber="2711"><td class="num" id="LN2711">2711</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2712"><td class="num" id="LN2712">2712</td><td class="line"> <span class='keyword'>if</span> (tab != window-&gt;priv-&gt;active_tab)</td></tr>
+<tr class="codeline" data-linenumber="2713"><td class="num" id="LN2713">2713</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="2714"><td class="num" id="LN2714">2714</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2715"><td class="num" id="LN2715">2715</td><td class="line"> set_sensitivity_according_to_tab (window, tab);</td></tr>
+<tr class="codeline" data-linenumber="2716"><td class="num" id="LN2716">2716</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2717"><td class="num" id="LN2717">2717</td><td class="line"> g_signal_emit (<span class='macro'>G_OBJECT (window)<span class='macro_popup'>((((GObject*) (void *) ((window)))))</span></span>, signals[ACTIVE_TAB_STATE_CHANGED], 0);</td></tr>
+<tr class="codeline" data-linenumber="2718"><td class="num" id="LN2718">2718</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2719"><td class="num" id="LN2719">2719</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2720"><td class="num" id="LN2720">2720</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2721"><td class="num" id="LN2721">2721</td><td class="line">sync_name (PlumaTab *tab,</td></tr>
+<tr class="codeline" data-linenumber="2722"><td class="num" id="LN2722">2722</td><td class="line"> GParamSpec *pspec,</td></tr>
+<tr class="codeline" data-linenumber="2723"><td class="num" id="LN2723">2723</td><td class="line"> PlumaWindow *window)</td></tr>
+<tr class="codeline" data-linenumber="2724"><td class="num" id="LN2724">2724</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2725"><td class="num" id="LN2725">2725</td><td class="line"> GtkAction *action;</td></tr>
+<tr class="codeline" data-linenumber="2726"><td class="num" id="LN2726">2726</td><td class="line"> gchar *action_name;</td></tr>
+<tr class="codeline" data-linenumber="2727"><td class="num" id="LN2727">2727</td><td class="line"> gchar *tab_name;</td></tr>
+<tr class="codeline" data-linenumber="2728"><td class="num" id="LN2728">2728</td><td class="line"> gchar *escaped_name;</td></tr>
+<tr class="codeline" data-linenumber="2729"><td class="num" id="LN2729">2729</td><td class="line"> gchar *tip;</td></tr>
+<tr class="codeline" data-linenumber="2730"><td class="num" id="LN2730">2730</td><td class="line"> gint n;</td></tr>
+<tr class="codeline" data-linenumber="2731"><td class="num" id="LN2731">2731</td><td class="line"> PlumaDocument *doc;</td></tr>
+<tr class="codeline" data-linenumber="2732"><td class="num" id="LN2732">2732</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2733"><td class="num" id="LN2733">2733</td><td class="line"> <span class='keyword'>if</span> (tab == window-&gt;priv-&gt;active_tab)</td></tr>
+<tr class="codeline" data-linenumber="2734"><td class="num" id="LN2734">2734</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="2735"><td class="num" id="LN2735">2735</td><td class="line"> set_title (window);</td></tr>
+<tr class="codeline" data-linenumber="2736"><td class="num" id="LN2736">2736</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2737"><td class="num" id="LN2737">2737</td><td class="line"> doc = pluma_tab_get_document (tab);</td></tr>
+<tr class="codeline" data-linenumber="2738"><td class="num" id="LN2738">2738</td><td class="line"> action = gtk_action_group_get_action (window-&gt;priv-&gt;action_group,</td></tr>
+<tr class="codeline" data-linenumber="2739"><td class="num" id="LN2739">2739</td><td class="line"> <span class='string_literal'>"FileRevert"</span>);</td></tr>
+<tr class="codeline" data-linenumber="2740"><td class="num" id="LN2740">2740</td><td class="line"> gtk_action_set_sensitive (action, !pluma_document_is_untitled (doc));</td></tr>
+<tr class="codeline" data-linenumber="2741"><td class="num" id="LN2741">2741</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2742"><td class="num" id="LN2742">2742</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2743"><td class="num" id="LN2743">2743</td><td class="line"> <span class='comment'>/* sync the item in the documents list menu */</span></td></tr>
+<tr class="codeline" data-linenumber="2744"><td class="num" id="LN2744">2744</td><td class="line"> n = gtk_notebook_page_num (<span class='macro'>GTK_NOTEBOOK (window-&gt;priv-&gt;notebook)<span class='macro_popup'>((((GtkNotebook*) (void *) ((window-&gt;priv-&gt;notebook))))<br>)</span></span>, <span class='macro'>GTK_WIDGET (tab)<span class='macro_popup'>((((GtkWidget*) (void *) ((tab)))))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2745"><td class="num" id="LN2745">2745</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2746"><td class="num" id="LN2746">2746</td><td class="line"> action_name = g_strdup_printf (<span class='string_literal'>"Tab_%d"</span>, n);</td></tr>
+<tr class="codeline" data-linenumber="2747"><td class="num" id="LN2747">2747</td><td class="line"> action = gtk_action_group_get_action (window-&gt;priv-&gt;documents_list_action_group,</td></tr>
+<tr class="codeline" data-linenumber="2748"><td class="num" id="LN2748">2748</td><td class="line"> action_name);</td></tr>
+<tr class="codeline" data-linenumber="2749"><td class="num" id="LN2749">2749</td><td class="line"> g_free (action_name);</td></tr>
+<tr class="codeline" data-linenumber="2750"><td class="num" id="LN2750">2750</td><td class="line"> <span class='macro'>g_return_if_fail (action != NULL)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_74<br>; if (action != ((void*)0)) _g_boolean_var_74 = 1; else _g_boolean_var_74<br> = 0; _g_boolean_var_74; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "action != NULL")<br>; return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2751"><td class="num" id="LN2751">2751</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2752"><td class="num" id="LN2752">2752</td><td class="line"> tab_name = _pluma_tab_get_name (tab);</td></tr>
+<tr class="codeline" data-linenumber="2753"><td class="num" id="LN2753">2753</td><td class="line"> escaped_name = pluma_utils_escape_underscores (tab_name, -1);</td></tr>
+<tr class="codeline" data-linenumber="2754"><td class="num" id="LN2754">2754</td><td class="line"> tip = get_menu_tip_for_tab (tab);</td></tr>
+<tr class="codeline" data-linenumber="2755"><td class="num" id="LN2755">2755</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2756"><td class="num" id="LN2756">2756</td><td class="line"> g_object_set (action, <span class='string_literal'>"label"</span>, escaped_name, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2757"><td class="num" id="LN2757">2757</td><td class="line"> g_object_set (action, <span class='string_literal'>"tooltip"</span>, tip, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2758"><td class="num" id="LN2758">2758</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2759"><td class="num" id="LN2759">2759</td><td class="line"> g_free (tab_name);</td></tr>
+<tr class="codeline" data-linenumber="2760"><td class="num" id="LN2760">2760</td><td class="line"> g_free (escaped_name);</td></tr>
+<tr class="codeline" data-linenumber="2761"><td class="num" id="LN2761">2761</td><td class="line"> g_free (tip);</td></tr>
+<tr class="codeline" data-linenumber="2762"><td class="num" id="LN2762">2762</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2763"><td class="num" id="LN2763">2763</td><td class="line"> peas_extension_set_call (window-&gt;priv-&gt;extensions, <span class='string_literal'>"update_state"</span>);</td></tr>
+<tr class="codeline" data-linenumber="2764"><td class="num" id="LN2764">2764</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2765"><td class="num" id="LN2765">2765</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2766"><td class="num" id="LN2766">2766</td><td class="line"><span class='keyword'>static</span> PlumaWindow *</td></tr>
+<tr class="codeline" data-linenumber="2767"><td class="num" id="LN2767">2767</td><td class="line">get_drop_window (GtkWidget *widget)</td></tr>
+<tr class="codeline" data-linenumber="2768"><td class="num" id="LN2768">2768</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2769"><td class="num" id="LN2769">2769</td><td class="line"> GtkWidget *target_window;</td></tr>
+<tr class="codeline" data-linenumber="2770"><td class="num" id="LN2770">2770</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2771"><td class="num" id="LN2771">2771</td><td class="line"> target_window = gtk_widget_get_toplevel (widget);</td></tr>
+<tr class="codeline" data-linenumber="2772"><td class="num" id="LN2772">2772</td><td class="line"> <span class='macro'>g_return_val_if_fail (PLUMA_IS_WINDOW (target_window), NULL)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_75<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((target_window)); GType __t = ((pluma_window_get_type()))<br>; gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;g_class<br> &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r = (!(0)<br>); else __r = g_type_check_instance_is_a (__inst, __t); __r; }<br>))))) _g_boolean_var_75 = 1; else _g_boolean_var_75 = 0; _g_boolean_var_75<br>; }), 1))) { } else { g_return_if_fail_warning (((gchar*) 0),<br> ((const char*) (__func__)), "PLUMA_IS_WINDOW (target_window)"<br>); return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2773"><td class="num" id="LN2773">2773</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2774"><td class="num" id="LN2774">2774</td><td class="line"> <span class='keyword'>if</span> ((<span class='macro'>PLUMA_WINDOW(target_window)<span class='macro_popup'>((((PlumaWindow*) (void *) ((target_window)))))</span></span>-&gt;priv-&gt;state &amp; PLUMA_WINDOW_STATE_SAVING_SESSION) != 0)</td></tr>
+<tr class="codeline" data-linenumber="2775"><td class="num" id="LN2775">2775</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2776"><td class="num" id="LN2776">2776</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2777"><td class="num" id="LN2777">2777</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>PLUMA_WINDOW (target_window)<span class='macro_popup'>((((PlumaWindow*) (void *) ((target_window)))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2778"><td class="num" id="LN2778">2778</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2779"><td class="num" id="LN2779">2779</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2780"><td class="num" id="LN2780">2780</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2781"><td class="num" id="LN2781">2781</td><td class="line">load_uris_from_drop (PlumaWindow *window,</td></tr>
+<tr class="codeline" data-linenumber="2782"><td class="num" id="LN2782">2782</td><td class="line"> gchar **uri_list)</td></tr>
+<tr class="codeline" data-linenumber="2783"><td class="num" id="LN2783">2783</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2784"><td class="num" id="LN2784">2784</td><td class="line"> GSList *uris = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2785"><td class="num" id="LN2785">2785</td><td class="line"> gint i;</td></tr>
+<tr class="codeline" data-linenumber="2786"><td class="num" id="LN2786">2786</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2787"><td class="num" id="LN2787">2787</td><td class="line"> <span class='keyword'>if</span> (uri_list == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="2788"><td class="num" id="LN2788">2788</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="2789"><td class="num" id="LN2789">2789</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2790"><td class="num" id="LN2790">2790</td><td class="line"> <span class='keyword'>for</span> (i = 0; uri_list[i] != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>; ++i)</td></tr>
+<tr class="codeline" data-linenumber="2791"><td class="num" id="LN2791">2791</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="2792"><td class="num" id="LN2792">2792</td><td class="line"> uris = g_slist_prepend (uris, uri_list[i]);</td></tr>
+<tr class="codeline" data-linenumber="2793"><td class="num" id="LN2793">2793</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2794"><td class="num" id="LN2794">2794</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2795"><td class="num" id="LN2795">2795</td><td class="line"> uris = g_slist_reverse (uris);</td></tr>
+<tr class="codeline" data-linenumber="2796"><td class="num" id="LN2796">2796</td><td class="line"> pluma_commands_load_uris (window,</td></tr>
+<tr class="codeline" data-linenumber="2797"><td class="num" id="LN2797">2797</td><td class="line"> uris,</td></tr>
+<tr class="codeline" data-linenumber="2798"><td class="num" id="LN2798">2798</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="2799"><td class="num" id="LN2799">2799</td><td class="line"> 0);</td></tr>
+<tr class="codeline" data-linenumber="2800"><td class="num" id="LN2800">2800</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2801"><td class="num" id="LN2801">2801</td><td class="line"> g_slist_free (uris);</td></tr>
+<tr class="codeline" data-linenumber="2802"><td class="num" id="LN2802">2802</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2803"><td class="num" id="LN2803">2803</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2804"><td class="num" id="LN2804">2804</td><td class="line"><span class='comment'>/* Handle drops on the PlumaWindow */</span></td></tr>
+<tr class="codeline" data-linenumber="2805"><td class="num" id="LN2805">2805</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2806"><td class="num" id="LN2806">2806</td><td class="line">drag_data_received_cb (GtkWidget *widget,</td></tr>
+<tr class="codeline" data-linenumber="2807"><td class="num" id="LN2807">2807</td><td class="line"> GdkDragContext *context,</td></tr>
+<tr class="codeline" data-linenumber="2808"><td class="num" id="LN2808">2808</td><td class="line"> gint x,</td></tr>
+<tr class="codeline" data-linenumber="2809"><td class="num" id="LN2809">2809</td><td class="line"> gint y,</td></tr>
+<tr class="codeline" data-linenumber="2810"><td class="num" id="LN2810">2810</td><td class="line"> GtkSelectionData *selection_data,</td></tr>
+<tr class="codeline" data-linenumber="2811"><td class="num" id="LN2811">2811</td><td class="line"> guint info,</td></tr>
+<tr class="codeline" data-linenumber="2812"><td class="num" id="LN2812">2812</td><td class="line"> guint timestamp,</td></tr>
+<tr class="codeline" data-linenumber="2813"><td class="num" id="LN2813">2813</td><td class="line"> gpointer data)</td></tr>
+<tr class="codeline" data-linenumber="2814"><td class="num" id="LN2814">2814</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2815"><td class="num" id="LN2815">2815</td><td class="line"> PlumaWindow *window;</td></tr>
+<tr class="codeline" data-linenumber="2816"><td class="num" id="LN2816">2816</td><td class="line"> gchar **uri_list;</td></tr>
+<tr class="codeline" data-linenumber="2817"><td class="num" id="LN2817">2817</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2818"><td class="num" id="LN2818">2818</td><td class="line"> window = get_drop_window (widget);</td></tr>
+<tr class="codeline" data-linenumber="2819"><td class="num" id="LN2819">2819</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2820"><td class="num" id="LN2820">2820</td><td class="line"> <span class='keyword'>if</span> (window == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="2821"><td class="num" id="LN2821">2821</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="2822"><td class="num" id="LN2822">2822</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2823"><td class="num" id="LN2823">2823</td><td class="line"> <span class='keyword'>if</span> (info == TARGET_URI_LIST)</td></tr>
+<tr class="codeline" data-linenumber="2824"><td class="num" id="LN2824">2824</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="2825"><td class="num" id="LN2825">2825</td><td class="line"> uri_list = pluma_utils_drop_get_uris(selection_data);</td></tr>
+<tr class="codeline" data-linenumber="2826"><td class="num" id="LN2826">2826</td><td class="line"> load_uris_from_drop (window, uri_list);</td></tr>
+<tr class="codeline" data-linenumber="2827"><td class="num" id="LN2827">2827</td><td class="line"> g_strfreev (uri_list);</td></tr>
+<tr class="codeline" data-linenumber="2828"><td class="num" id="LN2828">2828</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2829"><td class="num" id="LN2829">2829</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2830"><td class="num" id="LN2830">2830</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2831"><td class="num" id="LN2831">2831</td><td class="line"><span class='comment'>/* Handle drops on the PlumaView */</span></td></tr>
+<tr class="codeline" data-linenumber="2832"><td class="num" id="LN2832">2832</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2833"><td class="num" id="LN2833">2833</td><td class="line">drop_uris_cb (GtkWidget *widget,</td></tr>
+<tr class="codeline" data-linenumber="2834"><td class="num" id="LN2834">2834</td><td class="line"> gchar **uri_list)</td></tr>
+<tr class="codeline" data-linenumber="2835"><td class="num" id="LN2835">2835</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2836"><td class="num" id="LN2836">2836</td><td class="line"> PlumaWindow *window;</td></tr>
+<tr class="codeline" data-linenumber="2837"><td class="num" id="LN2837">2837</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2838"><td class="num" id="LN2838">2838</td><td class="line"> window = get_drop_window (widget);</td></tr>
+<tr class="codeline" data-linenumber="2839"><td class="num" id="LN2839">2839</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2840"><td class="num" id="LN2840">2840</td><td class="line"> <span class='keyword'>if</span> (window == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="2841"><td class="num" id="LN2841">2841</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="2842"><td class="num" id="LN2842">2842</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2843"><td class="num" id="LN2843">2843</td><td class="line"> load_uris_from_drop (window, uri_list);</td></tr>
+<tr class="codeline" data-linenumber="2844"><td class="num" id="LN2844">2844</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2845"><td class="num" id="LN2845">2845</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2846"><td class="num" id="LN2846">2846</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2847"><td class="num" id="LN2847">2847</td><td class="line">fullscreen_controls_show (PlumaWindow *window)</td></tr>
+<tr class="codeline" data-linenumber="2848"><td class="num" id="LN2848">2848</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2849"><td class="num" id="LN2849">2849</td><td class="line"> GdkScreen *screen;</td></tr>
+<tr class="codeline" data-linenumber="2850"><td class="num" id="LN2850">2850</td><td class="line"> GdkDisplay *display;</td></tr>
+<tr class="codeline" data-linenumber="2851"><td class="num" id="LN2851">2851</td><td class="line"> GdkRectangle fs_rect;</td></tr>
+<tr class="codeline" data-linenumber="2852"><td class="num" id="LN2852">2852</td><td class="line"> gint w, h;</td></tr>
+<tr class="codeline" data-linenumber="2853"><td class="num" id="LN2853">2853</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2854"><td class="num" id="LN2854">2854</td><td class="line"> screen = gtk_window_get_screen (<span class='macro'>GTK_WINDOW (window)<span class='macro_popup'>((((GtkWindow*) (void *) ((window)))))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2855"><td class="num" id="LN2855">2855</td><td class="line"> display = gdk_screen_get_display (screen);</td></tr>
+<tr class="codeline" data-linenumber="2856"><td class="num" id="LN2856">2856</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2857"><td class="num" id="LN2857">2857</td><td class="line"> gdk_monitor_get_geometry (gdk_display_get_monitor_at_window (display,</td></tr>
+<tr class="codeline" data-linenumber="2858"><td class="num" id="LN2858">2858</td><td class="line"> gtk_widget_get_window (<span class='macro'>GTK_WIDGET (window)<span class='macro_popup'>((((GtkWidget*) (void *) ((window)))))</span></span>)),</td></tr>
+<tr class="codeline" data-linenumber="2859"><td class="num" id="LN2859">2859</td><td class="line"> &amp;fs_rect);</td></tr>
+<tr class="codeline" data-linenumber="2860"><td class="num" id="LN2860">2860</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2861"><td class="num" id="LN2861">2861</td><td class="line"> gtk_window_get_size (<span class='macro'>GTK_WINDOW (window-&gt;priv-&gt;fullscreen_controls)<span class='macro_popup'>((((GtkWindow*) (void *) ((window-&gt;priv-&gt;fullscreen_controls<br>)))))</span></span>, &amp;w, &amp;h);</td></tr>
+<tr class="codeline" data-linenumber="2862"><td class="num" id="LN2862">2862</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2863"><td class="num" id="LN2863">2863</td><td class="line"> gtk_window_resize (<span class='macro'>GTK_WINDOW (window-&gt;priv-&gt;fullscreen_controls)<span class='macro_popup'>((((GtkWindow*) (void *) ((window-&gt;priv-&gt;fullscreen_controls<br>)))))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="2864"><td class="num" id="LN2864">2864</td><td class="line"> fs_rect.width, h);</td></tr>
+<tr class="codeline" data-linenumber="2865"><td class="num" id="LN2865">2865</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2866"><td class="num" id="LN2866">2866</td><td class="line"> gtk_window_move (<span class='macro'>GTK_WINDOW (window-&gt;priv-&gt;fullscreen_controls)<span class='macro_popup'>((((GtkWindow*) (void *) ((window-&gt;priv-&gt;fullscreen_controls<br>)))))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="2867"><td class="num" id="LN2867">2867</td><td class="line"> fs_rect.x, fs_rect.y - h + 1);</td></tr>
+<tr class="codeline" data-linenumber="2868"><td class="num" id="LN2868">2868</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2869"><td class="num" id="LN2869">2869</td><td class="line"> gtk_widget_show_all (window-&gt;priv-&gt;fullscreen_controls);</td></tr>
+<tr class="codeline" data-linenumber="2870"><td class="num" id="LN2870">2870</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2871"><td class="num" id="LN2871">2871</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2872"><td class="num" id="LN2872">2872</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="2873"><td class="num" id="LN2873">2873</td><td class="line">run_fullscreen_animation (gpointer data)</td></tr>
+<tr class="codeline" data-linenumber="2874"><td class="num" id="LN2874">2874</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2875"><td class="num" id="LN2875">2875</td><td class="line"> PlumaWindow *window = <span class='macro'>PLUMA_WINDOW (data)<span class='macro_popup'>((((PlumaWindow*) (void *) ((data)))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2876"><td class="num" id="LN2876">2876</td><td class="line"> GdkScreen *screen;</td></tr>
+<tr class="codeline" data-linenumber="2877"><td class="num" id="LN2877">2877</td><td class="line"> GdkDisplay *display;</td></tr>
+<tr class="codeline" data-linenumber="2878"><td class="num" id="LN2878">2878</td><td class="line"> GdkRectangle fs_rect;</td></tr>
+<tr class="codeline" data-linenumber="2879"><td class="num" id="LN2879">2879</td><td class="line"> gint x, y;</td></tr>
+<tr class="codeline" data-linenumber="2880"><td class="num" id="LN2880">2880</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2881"><td class="num" id="LN2881">2881</td><td class="line"> screen = gtk_window_get_screen (<span class='macro'>GTK_WINDOW (window)<span class='macro_popup'>((((GtkWindow*) (void *) ((window)))))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2882"><td class="num" id="LN2882">2882</td><td class="line"> display = gdk_screen_get_display (screen);</td></tr>
+<tr class="codeline" data-linenumber="2883"><td class="num" id="LN2883">2883</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2884"><td class="num" id="LN2884">2884</td><td class="line"> gdk_monitor_get_geometry (gdk_display_get_monitor_at_window (display,</td></tr>
+<tr class="codeline" data-linenumber="2885"><td class="num" id="LN2885">2885</td><td class="line"> gtk_widget_get_window (<span class='macro'>GTK_WIDGET (window)<span class='macro_popup'>((((GtkWidget*) (void *) ((window)))))</span></span>)),</td></tr>
+<tr class="codeline" data-linenumber="2886"><td class="num" id="LN2886">2886</td><td class="line"> &amp;fs_rect);</td></tr>
+<tr class="codeline" data-linenumber="2887"><td class="num" id="LN2887">2887</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2888"><td class="num" id="LN2888">2888</td><td class="line"> gtk_window_get_position (<span class='macro'>GTK_WINDOW (window-&gt;priv-&gt;fullscreen_controls)<span class='macro_popup'>((((GtkWindow*) (void *) ((window-&gt;priv-&gt;fullscreen_controls<br>)))))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="2889"><td class="num" id="LN2889">2889</td><td class="line"> &amp;x,</td></tr>
+<tr class="codeline" data-linenumber="2890"><td class="num" id="LN2890">2890</td><td class="line"> &amp;y);</td></tr>
+<tr class="codeline" data-linenumber="2891"><td class="num" id="LN2891">2891</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2892"><td class="num" id="LN2892">2892</td><td class="line"> <span class='keyword'>if</span> (window-&gt;priv-&gt;fullscreen_animation_enter)</td></tr>
+<tr class="codeline" data-linenumber="2893"><td class="num" id="LN2893">2893</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="2894"><td class="num" id="LN2894">2894</td><td class="line"> <span class='keyword'>if</span> (y == fs_rect.y)</td></tr>
+<tr class="codeline" data-linenumber="2895"><td class="num" id="LN2895">2895</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="2896"><td class="num" id="LN2896">2896</td><td class="line"> window-&gt;priv-&gt;fullscreen_animation_timeout_id = 0;</td></tr>
+<tr class="codeline" data-linenumber="2897"><td class="num" id="LN2897">2897</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2898"><td class="num" id="LN2898">2898</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2899"><td class="num" id="LN2899">2899</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="2900"><td class="num" id="LN2900">2900</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="2901"><td class="num" id="LN2901">2901</td><td class="line"> gtk_window_move (<span class='macro'>GTK_WINDOW (window-&gt;priv-&gt;fullscreen_controls)<span class='macro_popup'>((((GtkWindow*) (void *) ((window-&gt;priv-&gt;fullscreen_controls<br>)))))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="2902"><td class="num" id="LN2902">2902</td><td class="line"> x, y + 1);</td></tr>
+<tr class="codeline" data-linenumber="2903"><td class="num" id="LN2903">2903</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2904"><td class="num" id="LN2904">2904</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2905"><td class="num" id="LN2905">2905</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2906"><td class="num" id="LN2906">2906</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="2907"><td class="num" id="LN2907">2907</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="2908"><td class="num" id="LN2908">2908</td><td class="line"> gint w, h;</td></tr>
+<tr class="codeline" data-linenumber="2909"><td class="num" id="LN2909">2909</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2910"><td class="num" id="LN2910">2910</td><td class="line"> gtk_window_get_size (<span class='macro'>GTK_WINDOW (window-&gt;priv-&gt;fullscreen_controls)<span class='macro_popup'>((((GtkWindow*) (void *) ((window-&gt;priv-&gt;fullscreen_controls<br>)))))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="2911"><td class="num" id="LN2911">2911</td><td class="line"> &amp;w, &amp;h);</td></tr>
+<tr class="codeline" data-linenumber="2912"><td class="num" id="LN2912">2912</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2913"><td class="num" id="LN2913">2913</td><td class="line"> <span class='keyword'>if</span> (y == fs_rect.y - h + 1)</td></tr>
+<tr class="codeline" data-linenumber="2914"><td class="num" id="LN2914">2914</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="2915"><td class="num" id="LN2915">2915</td><td class="line"> window-&gt;priv-&gt;fullscreen_animation_timeout_id = 0;</td></tr>
+<tr class="codeline" data-linenumber="2916"><td class="num" id="LN2916">2916</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2917"><td class="num" id="LN2917">2917</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2918"><td class="num" id="LN2918">2918</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="2919"><td class="num" id="LN2919">2919</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="2920"><td class="num" id="LN2920">2920</td><td class="line"> gtk_window_move (<span class='macro'>GTK_WINDOW (window-&gt;priv-&gt;fullscreen_controls)<span class='macro_popup'>((((GtkWindow*) (void *) ((window-&gt;priv-&gt;fullscreen_controls<br>)))))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="2921"><td class="num" id="LN2921">2921</td><td class="line"> x, y - 1);</td></tr>
+<tr class="codeline" data-linenumber="2922"><td class="num" id="LN2922">2922</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2923"><td class="num" id="LN2923">2923</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2924"><td class="num" id="LN2924">2924</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2925"><td class="num" id="LN2925">2925</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2926"><td class="num" id="LN2926">2926</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2927"><td class="num" id="LN2927">2927</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2928"><td class="num" id="LN2928">2928</td><td class="line">show_hide_fullscreen_toolbar (PlumaWindow *window,</td></tr>
+<tr class="codeline" data-linenumber="2929"><td class="num" id="LN2929">2929</td><td class="line"> gboolean show,</td></tr>
+<tr class="codeline" data-linenumber="2930"><td class="num" id="LN2930">2930</td><td class="line"> gint height)</td></tr>
+<tr class="codeline" data-linenumber="2931"><td class="num" id="LN2931">2931</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2932"><td class="num" id="LN2932">2932</td><td class="line"> GtkSettings *settings;</td></tr>
+<tr class="codeline" data-linenumber="2933"><td class="num" id="LN2933">2933</td><td class="line"> gboolean enable_animations;</td></tr>
+<tr class="codeline" data-linenumber="2934"><td class="num" id="LN2934">2934</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2935"><td class="num" id="LN2935">2935</td><td class="line"> settings = gtk_widget_get_settings (<span class='macro'>GTK_WIDGET (window)<span class='macro_popup'>((((GtkWidget*) (void *) ((window)))))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2936"><td class="num" id="LN2936">2936</td><td class="line"> g_object_get (<span class='macro'>G_OBJECT (settings)<span class='macro_popup'>((((GObject*) (void *) ((settings)))))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="2937"><td class="num" id="LN2937">2937</td><td class="line"> <span class='string_literal'>"gtk-enable-animations"</span>,</td></tr>
+<tr class="codeline" data-linenumber="2938"><td class="num" id="LN2938">2938</td><td class="line"> &amp;enable_animations,</td></tr>
+<tr class="codeline" data-linenumber="2939"><td class="num" id="LN2939">2939</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2940"><td class="num" id="LN2940">2940</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2941"><td class="num" id="LN2941">2941</td><td class="line"> <span class='keyword'>if</span> (enable_animations)</td></tr>
+<tr class="codeline" data-linenumber="2942"><td class="num" id="LN2942">2942</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="2943"><td class="num" id="LN2943">2943</td><td class="line"> window-&gt;priv-&gt;fullscreen_animation_enter = show;</td></tr>
+<tr class="codeline" data-linenumber="2944"><td class="num" id="LN2944">2944</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2945"><td class="num" id="LN2945">2945</td><td class="line"> <span class='keyword'>if</span> (window-&gt;priv-&gt;fullscreen_animation_timeout_id == 0)</td></tr>
+<tr class="codeline" data-linenumber="2946"><td class="num" id="LN2946">2946</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="2947"><td class="num" id="LN2947">2947</td><td class="line"> window-&gt;priv-&gt;fullscreen_animation_timeout_id =</td></tr>
+<tr class="codeline" data-linenumber="2948"><td class="num" id="LN2948">2948</td><td class="line"> g_timeout_add (<span class='macro'>FULLSCREEN_ANIMATION_SPEED<span class='macro_popup'>4</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="2949"><td class="num" id="LN2949">2949</td><td class="line"> (GSourceFunc) run_fullscreen_animation,</td></tr>
+<tr class="codeline" data-linenumber="2950"><td class="num" id="LN2950">2950</td><td class="line"> window);</td></tr>
+<tr class="codeline" data-linenumber="2951"><td class="num" id="LN2951">2951</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2952"><td class="num" id="LN2952">2952</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2953"><td class="num" id="LN2953">2953</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="2954"><td class="num" id="LN2954">2954</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="2955"><td class="num" id="LN2955">2955</td><td class="line"> GdkRectangle fs_rect;</td></tr>
+<tr class="codeline" data-linenumber="2956"><td class="num" id="LN2956">2956</td><td class="line"> GdkScreen *screen;</td></tr>
+<tr class="codeline" data-linenumber="2957"><td class="num" id="LN2957">2957</td><td class="line"> GdkDisplay *display;</td></tr>
+<tr class="codeline" data-linenumber="2958"><td class="num" id="LN2958">2958</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2959"><td class="num" id="LN2959">2959</td><td class="line"> screen = gtk_window_get_screen (<span class='macro'>GTK_WINDOW (window)<span class='macro_popup'>((((GtkWindow*) (void *) ((window)))))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2960"><td class="num" id="LN2960">2960</td><td class="line"> display = gdk_screen_get_display (screen);</td></tr>
+<tr class="codeline" data-linenumber="2961"><td class="num" id="LN2961">2961</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2962"><td class="num" id="LN2962">2962</td><td class="line"> gdk_monitor_get_geometry (gdk_display_get_monitor_at_window (display,</td></tr>
+<tr class="codeline" data-linenumber="2963"><td class="num" id="LN2963">2963</td><td class="line"> gtk_widget_get_window (<span class='macro'>GTK_WIDGET (window)<span class='macro_popup'>((((GtkWidget*) (void *) ((window)))))</span></span>)),</td></tr>
+<tr class="codeline" data-linenumber="2964"><td class="num" id="LN2964">2964</td><td class="line"> &amp;fs_rect);</td></tr>
+<tr class="codeline" data-linenumber="2965"><td class="num" id="LN2965">2965</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2966"><td class="num" id="LN2966">2966</td><td class="line"> <span class='keyword'>if</span> (show)</td></tr>
+<tr class="codeline" data-linenumber="2967"><td class="num" id="LN2967">2967</td><td class="line"> gtk_window_move (<span class='macro'>GTK_WINDOW (window-&gt;priv-&gt;fullscreen_controls)<span class='macro_popup'>((((GtkWindow*) (void *) ((window-&gt;priv-&gt;fullscreen_controls<br>)))))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="2968"><td class="num" id="LN2968">2968</td><td class="line"> fs_rect.x, fs_rect.y);</td></tr>
+<tr class="codeline" data-linenumber="2969"><td class="num" id="LN2969">2969</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="2970"><td class="num" id="LN2970">2970</td><td class="line"> gtk_window_move (<span class='macro'>GTK_WINDOW (window-&gt;priv-&gt;fullscreen_controls)<span class='macro_popup'>((((GtkWindow*) (void *) ((window-&gt;priv-&gt;fullscreen_controls<br>)))))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="2971"><td class="num" id="LN2971">2971</td><td class="line"> fs_rect.x, fs_rect.y - height + 1);</td></tr>
+<tr class="codeline" data-linenumber="2972"><td class="num" id="LN2972">2972</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2973"><td class="num" id="LN2973">2973</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2974"><td class="num" id="LN2974">2974</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2975"><td class="num" id="LN2975">2975</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2976"><td class="num" id="LN2976">2976</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="2977"><td class="num" id="LN2977">2977</td><td class="line">on_fullscreen_controls_enter_notify_event (GtkWidget *widget,</td></tr>
+<tr class="codeline" data-linenumber="2978"><td class="num" id="LN2978">2978</td><td class="line"> GdkEventCrossing *event,</td></tr>
+<tr class="codeline" data-linenumber="2979"><td class="num" id="LN2979">2979</td><td class="line"> PlumaWindow *window)</td></tr>
+<tr class="codeline" data-linenumber="2980"><td class="num" id="LN2980">2980</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2981"><td class="num" id="LN2981">2981</td><td class="line"> show_hide_fullscreen_toolbar (window, <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>, 0);</td></tr>
+<tr class="codeline" data-linenumber="2982"><td class="num" id="LN2982">2982</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2983"><td class="num" id="LN2983">2983</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2984"><td class="num" id="LN2984">2984</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2985"><td class="num" id="LN2985">2985</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2986"><td class="num" id="LN2986">2986</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="2987"><td class="num" id="LN2987">2987</td><td class="line">on_fullscreen_controls_leave_notify_event (GtkWidget *widget,</td></tr>
+<tr class="codeline" data-linenumber="2988"><td class="num" id="LN2988">2988</td><td class="line"> GdkEventCrossing *event,</td></tr>
+<tr class="codeline" data-linenumber="2989"><td class="num" id="LN2989">2989</td><td class="line"> PlumaWindow *window)</td></tr>
+<tr class="codeline" data-linenumber="2990"><td class="num" id="LN2990">2990</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2991"><td class="num" id="LN2991">2991</td><td class="line"> GdkDevice *device;</td></tr>
+<tr class="codeline" data-linenumber="2992"><td class="num" id="LN2992">2992</td><td class="line"> gint w, h;</td></tr>
+<tr class="codeline" data-linenumber="2993"><td class="num" id="LN2993">2993</td><td class="line"> gint x, y;</td></tr>
+<tr class="codeline" data-linenumber="2994"><td class="num" id="LN2994">2994</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2995"><td class="num" id="LN2995">2995</td><td class="line"> device = gdk_event_get_device ((GdkEvent *)event);</td></tr>
+<tr class="codeline" data-linenumber="2996"><td class="num" id="LN2996">2996</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2997"><td class="num" id="LN2997">2997</td><td class="line"> gtk_window_get_size (<span class='macro'>GTK_WINDOW (window-&gt;priv-&gt;fullscreen_controls)<span class='macro_popup'>((((GtkWindow*) (void *) ((window-&gt;priv-&gt;fullscreen_controls<br>)))))</span></span>, &amp;w, &amp;h);</td></tr>
+<tr class="codeline" data-linenumber="2998"><td class="num" id="LN2998">2998</td><td class="line"> gdk_device_get_position (device, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, &amp;x, &amp;y);</td></tr>
+<tr class="codeline" data-linenumber="2999"><td class="num" id="LN2999">2999</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3000"><td class="num" id="LN3000">3000</td><td class="line"> <span class='comment'>/* gtk seems to emit leave notify when clicking on tool items,</span></td></tr>
+<tr class="codeline" data-linenumber="3001"><td class="num" id="LN3001">3001</td><td class="line"> <span class='comment'>* work around it by checking the coordinates</span></td></tr>
+<tr class="codeline" data-linenumber="3002"><td class="num" id="LN3002">3002</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="3003"><td class="num" id="LN3003">3003</td><td class="line"> <span class='keyword'>if</span> (y &gt;= h)</td></tr>
+<tr class="codeline" data-linenumber="3004"><td class="num" id="LN3004">3004</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="3005"><td class="num" id="LN3005">3005</td><td class="line"> show_hide_fullscreen_toolbar (window, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>, h);</td></tr>
+<tr class="codeline" data-linenumber="3006"><td class="num" id="LN3006">3006</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3007"><td class="num" id="LN3007">3007</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3008"><td class="num" id="LN3008">3008</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3009"><td class="num" id="LN3009">3009</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3010"><td class="num" id="LN3010">3010</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3011"><td class="num" id="LN3011">3011</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="3012"><td class="num" id="LN3012">3012</td><td class="line">fullscreen_controls_build (PlumaWindow *window)</td></tr>
+<tr class="codeline" data-linenumber="3013"><td class="num" id="LN3013">3013</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3014"><td class="num" id="LN3014">3014</td><td class="line"> PlumaWindowPrivate *priv = window-&gt;priv;</td></tr>
+<tr class="codeline" data-linenumber="3015"><td class="num" id="LN3015">3015</td><td class="line"> GtkWidget *toolbar;</td></tr>
+<tr class="codeline" data-linenumber="3016"><td class="num" id="LN3016">3016</td><td class="line"> GtkAction *action;</td></tr>
+<tr class="codeline" data-linenumber="3017"><td class="num" id="LN3017">3017</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3018"><td class="num" id="LN3018">3018</td><td class="line"> <span class='keyword'>if</span> (priv-&gt;fullscreen_controls != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="3019"><td class="num" id="LN3019">3019</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="3020"><td class="num" id="LN3020">3020</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3021"><td class="num" id="LN3021">3021</td><td class="line"> priv-&gt;fullscreen_controls = gtk_window_new (GTK_WINDOW_POPUP);</td></tr>
+<tr class="codeline" data-linenumber="3022"><td class="num" id="LN3022">3022</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3023"><td class="num" id="LN3023">3023</td><td class="line"> gtk_window_set_transient_for (<span class='macro'>GTK_WINDOW (priv-&gt;fullscreen_controls)<span class='macro_popup'>((((GtkWindow*) (void *) ((priv-&gt;fullscreen_controls)))))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="3024"><td class="num" id="LN3024">3024</td><td class="line"> &amp;window-&gt;window);</td></tr>
+<tr class="codeline" data-linenumber="3025"><td class="num" id="LN3025">3025</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3026"><td class="num" id="LN3026">3026</td><td class="line"> <span class='comment'>/* popup toolbar */</span></td></tr>
+<tr class="codeline" data-linenumber="3027"><td class="num" id="LN3027">3027</td><td class="line"> toolbar = gtk_ui_manager_get_widget (priv-&gt;manager, <span class='string_literal'>"/FullscreenToolBar"</span>);</td></tr>
+<tr class="codeline" data-linenumber="3028"><td class="num" id="LN3028">3028</td><td class="line"> gtk_container_add (<span class='macro'>GTK_CONTAINER (priv-&gt;fullscreen_controls)<span class='macro_popup'>((((GtkContainer*) (void *) ((priv-&gt;fullscreen_controls)))<br>))</span></span>, toolbar);</td></tr>
+<tr class="codeline" data-linenumber="3029"><td class="num" id="LN3029">3029</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3030"><td class="num" id="LN3030">3030</td><td class="line"> action = gtk_action_group_get_action (priv-&gt;always_sensitive_action_group,</td></tr>
+<tr class="codeline" data-linenumber="3031"><td class="num" id="LN3031">3031</td><td class="line"> <span class='string_literal'>"LeaveFullscreen"</span>);</td></tr>
+<tr class="codeline" data-linenumber="3032"><td class="num" id="LN3032">3032</td><td class="line"> g_object_set (action, <span class='string_literal'>"is-important"</span>, <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3033"><td class="num" id="LN3033">3033</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3034"><td class="num" id="LN3034">3034</td><td class="line"> setup_toolbar_open_button (window, toolbar);</td></tr>
+<tr class="codeline" data-linenumber="3035"><td class="num" id="LN3035">3035</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3036"><td class="num" id="LN3036">3036</td><td class="line"> gtk_container_foreach (<span class='macro'>GTK_CONTAINER (toolbar)<span class='macro_popup'>((((GtkContainer*) (void *) ((toolbar)))))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="3037"><td class="num" id="LN3037">3037</td><td class="line"> (GtkCallback)set_non_homogeneus,</td></tr>
+<tr class="codeline" data-linenumber="3038"><td class="num" id="LN3038">3038</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3039"><td class="num" id="LN3039">3039</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3040"><td class="num" id="LN3040">3040</td><td class="line"> <span class='comment'>/* Set the toolbar style */</span></td></tr>
+<tr class="codeline" data-linenumber="3041"><td class="num" id="LN3041">3041</td><td class="line"> gtk_toolbar_set_style (<span class='macro'>GTK_TOOLBAR (toolbar)<span class='macro_popup'>((((GtkToolbar*) (void *) ((toolbar)))))</span></span>, GTK_TOOLBAR_BOTH_HORIZ);</td></tr>
+<tr class="codeline" data-linenumber="3042"><td class="num" id="LN3042">3042</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3043"><td class="num" id="LN3043">3043</td><td class="line"> <span class='macro'>g_signal_connect (priv-&gt;fullscreen_controls, <span class='string_literal'>"enter-notify-event"</span>,<span class='macro_popup'>g_signal_connect_data ((priv-&gt;fullscreen_controls), ("enter-notify-event"<br>), (((GCallback) (on_fullscreen_controls_enter_notify_event))<br>), (window), ((void*)0), (GConnectFlags) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="3044"><td class="num" id="LN3044">3044</td><td class="line"> <span class='macro'>G_CALLBACK (on_fullscreen_controls_enter_notify_event),<span class='macro_popup'>g_signal_connect_data ((priv-&gt;fullscreen_controls), ("enter-notify-event"<br>), (((GCallback) (on_fullscreen_controls_enter_notify_event))<br>), (window), ((void*)0), (GConnectFlags) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="3045"><td class="num" id="LN3045">3045</td><td class="line"> <span class='macro'>window)<span class='macro_popup'>g_signal_connect_data ((priv-&gt;fullscreen_controls), ("enter-notify-event"<br>), (((GCallback) (on_fullscreen_controls_enter_notify_event))<br>), (window), ((void*)0), (GConnectFlags) 0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3046"><td class="num" id="LN3046">3046</td><td class="line"> <span class='macro'>g_signal_connect (priv-&gt;fullscreen_controls, <span class='string_literal'>"leave-notify-event"</span>,<span class='macro_popup'>g_signal_connect_data ((priv-&gt;fullscreen_controls), ("leave-notify-event"<br>), (((GCallback) (on_fullscreen_controls_leave_notify_event))<br>), (window), ((void*)0), (GConnectFlags) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="3047"><td class="num" id="LN3047">3047</td><td class="line"> <span class='macro'>G_CALLBACK (on_fullscreen_controls_leave_notify_event),<span class='macro_popup'>g_signal_connect_data ((priv-&gt;fullscreen_controls), ("leave-notify-event"<br>), (((GCallback) (on_fullscreen_controls_leave_notify_event))<br>), (window), ((void*)0), (GConnectFlags) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="3048"><td class="num" id="LN3048">3048</td><td class="line"> <span class='macro'>window)<span class='macro_popup'>g_signal_connect_data ((priv-&gt;fullscreen_controls), ("leave-notify-event"<br>), (((GCallback) (on_fullscreen_controls_leave_notify_event))<br>), (window), ((void*)0), (GConnectFlags) 0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3049"><td class="num" id="LN3049">3049</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3050"><td class="num" id="LN3050">3050</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3051"><td class="num" id="LN3051">3051</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="3052"><td class="num" id="LN3052">3052</td><td class="line">can_search_again (PlumaDocument *doc,</td></tr>
+<tr class="codeline" data-linenumber="3053"><td class="num" id="LN3053">3053</td><td class="line"> GParamSpec *pspec,</td></tr>
+<tr class="codeline" data-linenumber="3054"><td class="num" id="LN3054">3054</td><td class="line"> PlumaWindow *window)</td></tr>
+<tr class="codeline" data-linenumber="3055"><td class="num" id="LN3055">3055</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3056"><td class="num" id="LN3056">3056</td><td class="line"> gboolean sensitive;</td></tr>
+<tr class="codeline" data-linenumber="3057"><td class="num" id="LN3057">3057</td><td class="line"> GtkAction *action;</td></tr>
+<tr class="codeline" data-linenumber="3058"><td class="num" id="LN3058">3058</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3059"><td class="num" id="LN3059">3059</td><td class="line"> <span class='keyword'>if</span> (doc != pluma_window_get_active_document (window))</td></tr>
+<tr class="codeline" data-linenumber="3060"><td class="num" id="LN3060">3060</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="3061"><td class="num" id="LN3061">3061</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3062"><td class="num" id="LN3062">3062</td><td class="line"> sensitive = pluma_document_get_can_search_again (doc);</td></tr>
+<tr class="codeline" data-linenumber="3063"><td class="num" id="LN3063">3063</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3064"><td class="num" id="LN3064">3064</td><td class="line"> action = gtk_action_group_get_action (window-&gt;priv-&gt;action_group,</td></tr>
+<tr class="codeline" data-linenumber="3065"><td class="num" id="LN3065">3065</td><td class="line"> <span class='string_literal'>"SearchFindNext"</span>);</td></tr>
+<tr class="codeline" data-linenumber="3066"><td class="num" id="LN3066">3066</td><td class="line"> gtk_action_set_sensitive (action, sensitive);</td></tr>
+<tr class="codeline" data-linenumber="3067"><td class="num" id="LN3067">3067</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3068"><td class="num" id="LN3068">3068</td><td class="line"> action = gtk_action_group_get_action (window-&gt;priv-&gt;action_group,</td></tr>
+<tr class="codeline" data-linenumber="3069"><td class="num" id="LN3069">3069</td><td class="line"> <span class='string_literal'>"SearchFindPrevious"</span>);</td></tr>
+<tr class="codeline" data-linenumber="3070"><td class="num" id="LN3070">3070</td><td class="line"> gtk_action_set_sensitive (action, sensitive);</td></tr>
+<tr class="codeline" data-linenumber="3071"><td class="num" id="LN3071">3071</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3072"><td class="num" id="LN3072">3072</td><td class="line"> action = gtk_action_group_get_action (window-&gt;priv-&gt;action_group,</td></tr>
+<tr class="codeline" data-linenumber="3073"><td class="num" id="LN3073">3073</td><td class="line"> <span class='string_literal'>"SearchClearHighlight"</span>);</td></tr>
+<tr class="codeline" data-linenumber="3074"><td class="num" id="LN3074">3074</td><td class="line"> gtk_action_set_sensitive (action, sensitive);</td></tr>
+<tr class="codeline" data-linenumber="3075"><td class="num" id="LN3075">3075</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3076"><td class="num" id="LN3076">3076</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3077"><td class="num" id="LN3077">3077</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="3078"><td class="num" id="LN3078">3078</td><td class="line">can_undo (PlumaDocument *doc,</td></tr>
+<tr class="codeline" data-linenumber="3079"><td class="num" id="LN3079">3079</td><td class="line"> GParamSpec *pspec,</td></tr>
+<tr class="codeline" data-linenumber="3080"><td class="num" id="LN3080">3080</td><td class="line"> PlumaWindow *window)</td></tr>
+<tr class="codeline" data-linenumber="3081"><td class="num" id="LN3081">3081</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3082"><td class="num" id="LN3082">3082</td><td class="line"> GtkAction *action;</td></tr>
+<tr class="codeline" data-linenumber="3083"><td class="num" id="LN3083">3083</td><td class="line"> gboolean sensitive;</td></tr>
+<tr class="codeline" data-linenumber="3084"><td class="num" id="LN3084">3084</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3085"><td class="num" id="LN3085">3085</td><td class="line"> sensitive = gtk_source_buffer_can_undo (<span class='macro'>GTK_SOURCE_BUFFER (doc)<span class='macro_popup'>((((GtkSourceBuffer*) (void *) ((doc)))))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3086"><td class="num" id="LN3086">3086</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3087"><td class="num" id="LN3087">3087</td><td class="line"> <span class='keyword'>if</span> (doc != pluma_window_get_active_document (window))</td></tr>
+<tr class="codeline" data-linenumber="3088"><td class="num" id="LN3088">3088</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="3089"><td class="num" id="LN3089">3089</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3090"><td class="num" id="LN3090">3090</td><td class="line"> action = gtk_action_group_get_action (window-&gt;priv-&gt;action_group,</td></tr>
+<tr class="codeline" data-linenumber="3091"><td class="num" id="LN3091">3091</td><td class="line"> <span class='string_literal'>"EditUndo"</span>);</td></tr>
+<tr class="codeline" data-linenumber="3092"><td class="num" id="LN3092">3092</td><td class="line"> gtk_action_set_sensitive (action, sensitive);</td></tr>
+<tr class="codeline" data-linenumber="3093"><td class="num" id="LN3093">3093</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3094"><td class="num" id="LN3094">3094</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3095"><td class="num" id="LN3095">3095</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="3096"><td class="num" id="LN3096">3096</td><td class="line">can_redo (PlumaDocument *doc,</td></tr>
+<tr class="codeline" data-linenumber="3097"><td class="num" id="LN3097">3097</td><td class="line"> GParamSpec *pspec,</td></tr>
+<tr class="codeline" data-linenumber="3098"><td class="num" id="LN3098">3098</td><td class="line"> PlumaWindow *window)</td></tr>
+<tr class="codeline" data-linenumber="3099"><td class="num" id="LN3099">3099</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3100"><td class="num" id="LN3100">3100</td><td class="line"> GtkAction *action;</td></tr>
+<tr class="codeline" data-linenumber="3101"><td class="num" id="LN3101">3101</td><td class="line"> gboolean sensitive;</td></tr>
+<tr class="codeline" data-linenumber="3102"><td class="num" id="LN3102">3102</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3103"><td class="num" id="LN3103">3103</td><td class="line"> sensitive = gtk_source_buffer_can_redo (<span class='macro'>GTK_SOURCE_BUFFER (doc)<span class='macro_popup'>((((GtkSourceBuffer*) (void *) ((doc)))))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3104"><td class="num" id="LN3104">3104</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3105"><td class="num" id="LN3105">3105</td><td class="line"> <span class='keyword'>if</span> (doc != pluma_window_get_active_document (window))</td></tr>
+<tr class="codeline" data-linenumber="3106"><td class="num" id="LN3106">3106</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="3107"><td class="num" id="LN3107">3107</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3108"><td class="num" id="LN3108">3108</td><td class="line"> action = gtk_action_group_get_action (window-&gt;priv-&gt;action_group,</td></tr>
+<tr class="codeline" data-linenumber="3109"><td class="num" id="LN3109">3109</td><td class="line"> <span class='string_literal'>"EditRedo"</span>);</td></tr>
+<tr class="codeline" data-linenumber="3110"><td class="num" id="LN3110">3110</td><td class="line"> gtk_action_set_sensitive (action, sensitive);</td></tr>
+<tr class="codeline" data-linenumber="3111"><td class="num" id="LN3111">3111</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3112"><td class="num" id="LN3112">3112</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3113"><td class="num" id="LN3113">3113</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="3114"><td class="num" id="LN3114">3114</td><td class="line">selection_changed (PlumaDocument *doc,</td></tr>
+<tr class="codeline" data-linenumber="3115"><td class="num" id="LN3115">3115</td><td class="line"> GParamSpec *pspec,</td></tr>
+<tr class="codeline" data-linenumber="3116"><td class="num" id="LN3116">3116</td><td class="line"> PlumaWindow *window)</td></tr>
+<tr class="codeline" data-linenumber="3117"><td class="num" id="LN3117">3117</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3118"><td class="num" id="LN3118">3118</td><td class="line"> PlumaTab *tab;</td></tr>
+<tr class="codeline" data-linenumber="3119"><td class="num" id="LN3119">3119</td><td class="line"> PlumaView *view;</td></tr>
+<tr class="codeline" data-linenumber="3120"><td class="num" id="LN3120">3120</td><td class="line"> GtkAction *action;</td></tr>
+<tr class="codeline" data-linenumber="3121"><td class="num" id="LN3121">3121</td><td class="line"> PlumaTabState state;</td></tr>
+<tr class="codeline" data-linenumber="3122"><td class="num" id="LN3122">3122</td><td class="line"> gboolean state_normal;</td></tr>
+<tr class="codeline" data-linenumber="3123"><td class="num" id="LN3123">3123</td><td class="line"> gboolean editable;</td></tr>
+<tr class="codeline" data-linenumber="3124"><td class="num" id="LN3124">3124</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3125"><td class="num" id="LN3125">3125</td><td class="line"> pluma_debug (<span class='macro'>DEBUG_WINDOW<span class='macro_popup'>PLUMA_DEBUG_WINDOW, "pluma-window.c", 3125, ((const char*) (__func__<br>))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3126"><td class="num" id="LN3126">3126</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3127"><td class="num" id="LN3127">3127</td><td class="line"> <span class='keyword'>if</span> (doc != pluma_window_get_active_document (window))</td></tr>
+<tr class="codeline" data-linenumber="3128"><td class="num" id="LN3128">3128</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="3129"><td class="num" id="LN3129">3129</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3130"><td class="num" id="LN3130">3130</td><td class="line"> tab = pluma_tab_get_from_document (doc);</td></tr>
+<tr class="codeline" data-linenumber="3131"><td class="num" id="LN3131">3131</td><td class="line"> state = pluma_tab_get_state (tab);</td></tr>
+<tr class="codeline" data-linenumber="3132"><td class="num" id="LN3132">3132</td><td class="line"> state_normal = (state == PLUMA_TAB_STATE_NORMAL);</td></tr>
+<tr class="codeline" data-linenumber="3133"><td class="num" id="LN3133">3133</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3134"><td class="num" id="LN3134">3134</td><td class="line"> view = pluma_tab_get_view (tab);</td></tr>
+<tr class="codeline" data-linenumber="3135"><td class="num" id="LN3135">3135</td><td class="line"> editable = gtk_text_view_get_editable (<span class='macro'>GTK_TEXT_VIEW (view)<span class='macro_popup'>((((GtkTextView*) (void *) ((view)))))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3136"><td class="num" id="LN3136">3136</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3137"><td class="num" id="LN3137">3137</td><td class="line"> action = gtk_action_group_get_action (window-&gt;priv-&gt;action_group,</td></tr>
+<tr class="codeline" data-linenumber="3138"><td class="num" id="LN3138">3138</td><td class="line"> <span class='string_literal'>"EditCut"</span>);</td></tr>
+<tr class="codeline" data-linenumber="3139"><td class="num" id="LN3139">3139</td><td class="line"> gtk_action_set_sensitive (action,</td></tr>
+<tr class="codeline" data-linenumber="3140"><td class="num" id="LN3140">3140</td><td class="line"> state_normal &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="3141"><td class="num" id="LN3141">3141</td><td class="line"> editable &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="3142"><td class="num" id="LN3142">3142</td><td class="line"> gtk_text_buffer_get_has_selection (<span class='macro'>GTK_TEXT_BUFFER (doc)<span class='macro_popup'>((((GtkTextBuffer*) (void *) ((doc)))))</span></span>));</td></tr>
+<tr class="codeline" data-linenumber="3143"><td class="num" id="LN3143">3143</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3144"><td class="num" id="LN3144">3144</td><td class="line"> action = gtk_action_group_get_action (window-&gt;priv-&gt;action_group,</td></tr>
+<tr class="codeline" data-linenumber="3145"><td class="num" id="LN3145">3145</td><td class="line"> <span class='string_literal'>"EditCopy"</span>);</td></tr>
+<tr class="codeline" data-linenumber="3146"><td class="num" id="LN3146">3146</td><td class="line"> gtk_action_set_sensitive (action,</td></tr>
+<tr class="codeline" data-linenumber="3147"><td class="num" id="LN3147">3147</td><td class="line"> (state_normal ||</td></tr>
+<tr class="codeline" data-linenumber="3148"><td class="num" id="LN3148">3148</td><td class="line"> state == PLUMA_TAB_STATE_EXTERNALLY_MODIFIED_NOTIFICATION) &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="3149"><td class="num" id="LN3149">3149</td><td class="line"> gtk_text_buffer_get_has_selection (<span class='macro'>GTK_TEXT_BUFFER (doc)<span class='macro_popup'>((((GtkTextBuffer*) (void *) ((doc)))))</span></span>));</td></tr>
+<tr class="codeline" data-linenumber="3150"><td class="num" id="LN3150">3150</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3151"><td class="num" id="LN3151">3151</td><td class="line"> action = gtk_action_group_get_action (window-&gt;priv-&gt;action_group,</td></tr>
+<tr class="codeline" data-linenumber="3152"><td class="num" id="LN3152">3152</td><td class="line"> <span class='string_literal'>"EditDelete"</span>);</td></tr>
+<tr class="codeline" data-linenumber="3153"><td class="num" id="LN3153">3153</td><td class="line"> gtk_action_set_sensitive (action,</td></tr>
+<tr class="codeline" data-linenumber="3154"><td class="num" id="LN3154">3154</td><td class="line"> state_normal &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="3155"><td class="num" id="LN3155">3155</td><td class="line"> editable &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="3156"><td class="num" id="LN3156">3156</td><td class="line"> gtk_text_buffer_get_has_selection (<span class='macro'>GTK_TEXT_BUFFER (doc)<span class='macro_popup'>((((GtkTextBuffer*) (void *) ((doc)))))</span></span>));</td></tr>
+<tr class="codeline" data-linenumber="3157"><td class="num" id="LN3157">3157</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3158"><td class="num" id="LN3158">3158</td><td class="line"> peas_extension_set_call (window-&gt;priv-&gt;extensions, <span class='string_literal'>"update_state"</span>);</td></tr>
+<tr class="codeline" data-linenumber="3159"><td class="num" id="LN3159">3159</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3160"><td class="num" id="LN3160">3160</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3161"><td class="num" id="LN3161">3161</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="3162"><td class="num" id="LN3162">3162</td><td class="line">sync_languages_menu (PlumaDocument *doc,</td></tr>
+<tr class="codeline" data-linenumber="3163"><td class="num" id="LN3163">3163</td><td class="line"> GParamSpec *pspec,</td></tr>
+<tr class="codeline" data-linenumber="3164"><td class="num" id="LN3164">3164</td><td class="line"> PlumaWindow *window)</td></tr>
+<tr class="codeline" data-linenumber="3165"><td class="num" id="LN3165">3165</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3166"><td class="num" id="LN3166">3166</td><td class="line"> update_languages_menu (window);</td></tr>
+<tr class="codeline" data-linenumber="3167"><td class="num" id="LN3167">3167</td><td class="line"> peas_extension_set_call (window-&gt;priv-&gt;extensions, <span class='string_literal'>"update_state"</span>);</td></tr>
+<tr class="codeline" data-linenumber="3168"><td class="num" id="LN3168">3168</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3169"><td class="num" id="LN3169">3169</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3170"><td class="num" id="LN3170">3170</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="3171"><td class="num" id="LN3171">3171</td><td class="line">readonly_changed (PlumaDocument *doc,</td></tr>
+<tr class="codeline" data-linenumber="3172"><td class="num" id="LN3172">3172</td><td class="line"> GParamSpec *pspec,</td></tr>
+<tr class="codeline" data-linenumber="3173"><td class="num" id="LN3173">3173</td><td class="line"> PlumaWindow *window)</td></tr>
+<tr class="codeline" data-linenumber="3174"><td class="num" id="LN3174">3174</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3175"><td class="num" id="LN3175">3175</td><td class="line"> set_sensitivity_according_to_tab (window, window-&gt;priv-&gt;active_tab);</td></tr>
+<tr class="codeline" data-linenumber="3176"><td class="num" id="LN3176">3176</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3177"><td class="num" id="LN3177">3177</td><td class="line"> sync_name (window-&gt;priv-&gt;active_tab, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, window);</td></tr>
+<tr class="codeline" data-linenumber="3178"><td class="num" id="LN3178">3178</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3179"><td class="num" id="LN3179">3179</td><td class="line"> peas_extension_set_call (window-&gt;priv-&gt;extensions, <span class='string_literal'>"update_state"</span>);</td></tr>
+<tr class="codeline" data-linenumber="3180"><td class="num" id="LN3180">3180</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3181"><td class="num" id="LN3181">3181</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3182"><td class="num" id="LN3182">3182</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="3183"><td class="num" id="LN3183">3183</td><td class="line">editable_changed (PlumaView *view,</td></tr>
+<tr class="codeline" data-linenumber="3184"><td class="num" id="LN3184">3184</td><td class="line"> GParamSpec *arg1,</td></tr>
+<tr class="codeline" data-linenumber="3185"><td class="num" id="LN3185">3185</td><td class="line"> PlumaWindow *window)</td></tr>
+<tr class="codeline" data-linenumber="3186"><td class="num" id="LN3186">3186</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3187"><td class="num" id="LN3187">3187</td><td class="line"> peas_extension_set_call (window-&gt;priv-&gt;extensions, <span class='string_literal'>"update_state"</span>);</td></tr>
+<tr class="codeline" data-linenumber="3188"><td class="num" id="LN3188">3188</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3189"><td class="num" id="LN3189">3189</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3190"><td class="num" id="LN3190">3190</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="3191"><td class="num" id="LN3191">3191</td><td class="line">update_sensitivity_according_to_open_tabs (PlumaWindow *window)</td></tr>
+<tr class="codeline" data-linenumber="3192"><td class="num" id="LN3192">3192</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3193"><td class="num" id="LN3193">3193</td><td class="line"> GtkAction *action;</td></tr>
+<tr class="codeline" data-linenumber="3194"><td class="num" id="LN3194">3194</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3195"><td class="num" id="LN3195">3195</td><td class="line"> <span class='comment'>/* Set sensitivity */</span></td></tr>
+<tr class="codeline" data-linenumber="3196"><td class="num" id="LN3196">3196</td><td class="line"> gtk_action_group_set_sensitive (window-&gt;priv-&gt;action_group,</td></tr>
+<tr class="codeline" data-linenumber="3197"><td class="num" id="LN3197">3197</td><td class="line"> window-&gt;priv-&gt;num_tabs != 0);</td></tr>
+<tr class="codeline" data-linenumber="3198"><td class="num" id="LN3198">3198</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3199"><td class="num" id="LN3199">3199</td><td class="line"> action = gtk_action_group_get_action (window-&gt;priv-&gt;action_group,</td></tr>
+<tr class="codeline" data-linenumber="3200"><td class="num" id="LN3200">3200</td><td class="line"> <span class='string_literal'>"DocumentsMoveToNewWindow"</span>);</td></tr>
+<tr class="codeline" data-linenumber="3201"><td class="num" id="LN3201">3201</td><td class="line"> gtk_action_set_sensitive (action, window-&gt;priv-&gt;num_tabs &gt; 1);</td></tr>
+<tr class="codeline" data-linenumber="3202"><td class="num" id="LN3202">3202</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3203"><td class="num" id="LN3203">3203</td><td class="line"> gtk_action_group_set_sensitive (window-&gt;priv-&gt;close_action_group,</td></tr>
+<tr class="codeline" data-linenumber="3204"><td class="num" id="LN3204">3204</td><td class="line"> window-&gt;priv-&gt;num_tabs != 0);</td></tr>
+<tr class="codeline" data-linenumber="3205"><td class="num" id="LN3205">3205</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3206"><td class="num" id="LN3206">3206</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3207"><td class="num" id="LN3207">3207</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="3208"><td class="num" id="LN3208">3208</td><td class="line">notebook_tab_added (PlumaNotebook *notebook,</td></tr>
+<tr class="codeline" data-linenumber="3209"><td class="num" id="LN3209">3209</td><td class="line"> PlumaTab *tab,</td></tr>
+<tr class="codeline" data-linenumber="3210"><td class="num" id="LN3210">3210</td><td class="line"> PlumaWindow *window)</td></tr>
+<tr class="codeline" data-linenumber="3211"><td class="num" id="LN3211">3211</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3212"><td class="num" id="LN3212">3212</td><td class="line"> PlumaView *view;</td></tr>
+<tr class="codeline" data-linenumber="3213"><td class="num" id="LN3213">3213</td><td class="line"> PlumaDocument *doc;</td></tr>
+<tr class="codeline" data-linenumber="3214"><td class="num" id="LN3214">3214</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3215"><td class="num" id="LN3215">3215</td><td class="line"> pluma_debug (<span class='macro'>DEBUG_WINDOW<span class='macro_popup'>PLUMA_DEBUG_WINDOW, "pluma-window.c", 3215, ((const char*) (__func__<br>))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3216"><td class="num" id="LN3216">3216</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3217"><td class="num" id="LN3217">3217</td><td class="line"> <span class='macro'>g_return_if_fail ((window-&gt;priv-&gt;state &amp; PLUMA_WINDOW_STATE_SAVING_SESSION) == 0)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_76<br>; if ((window-&gt;priv-&gt;state &amp; PLUMA_WINDOW_STATE_SAVING_SESSION<br>) == 0) _g_boolean_var_76 = 1; else _g_boolean_var_76 = 0; _g_boolean_var_76<br>; }), 1))) { } else { g_return_if_fail_warning (((gchar*) 0),<br> ((const char*) (__func__)), "(window-&gt;priv-&gt;state &amp; PLUMA_WINDOW_STATE_SAVING_SESSION) == 0"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3218"><td class="num" id="LN3218">3218</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3219"><td class="num" id="LN3219">3219</td><td class="line"> ++window-&gt;priv-&gt;num_tabs;</td></tr>
+<tr class="codeline" data-linenumber="3220"><td class="num" id="LN3220">3220</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3221"><td class="num" id="LN3221">3221</td><td class="line"> update_sensitivity_according_to_open_tabs (window);</td></tr>
+<tr class="codeline" data-linenumber="3222"><td class="num" id="LN3222">3222</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3223"><td class="num" id="LN3223">3223</td><td class="line"> view = pluma_tab_get_view (tab);</td></tr>
+<tr class="codeline" data-linenumber="3224"><td class="num" id="LN3224">3224</td><td class="line"> doc = pluma_tab_get_document (tab);</td></tr>
+<tr class="codeline" data-linenumber="3225"><td class="num" id="LN3225">3225</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3226"><td class="num" id="LN3226">3226</td><td class="line"> <span class='comment'>/* IMPORTANT: remember to disconnect the signal in notebook_tab_removed</span></td></tr>
+<tr class="codeline" data-linenumber="3227"><td class="num" id="LN3227">3227</td><td class="line"> <span class='comment'>* if a new signal is connected here */</span></td></tr>
+<tr class="codeline" data-linenumber="3228"><td class="num" id="LN3228">3228</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3229"><td class="num" id="LN3229">3229</td><td class="line"> <span class='macro'>g_signal_connect (tab,<span class='macro_popup'>g_signal_connect_data ((tab), ("notify::name"), (((GCallback)<br> (sync_name))), (window), ((void*)0), (GConnectFlags) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="3230"><td class="num" id="LN3230">3230</td><td class="line"> <span class='string_literal'><span class='macro'>"notify::name"</span>,<span class='macro_popup'>g_signal_connect_data ((tab), ("notify::name"), (((GCallback)<br> (sync_name))), (window), ((void*)0), (GConnectFlags) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="3231"><td class="num" id="LN3231">3231</td><td class="line"> <span class='macro'>G_CALLBACK (sync_name),<span class='macro_popup'>g_signal_connect_data ((tab), ("notify::name"), (((GCallback)<br> (sync_name))), (window), ((void*)0), (GConnectFlags) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="3232"><td class="num" id="LN3232">3232</td><td class="line"> <span class='macro'>window)<span class='macro_popup'>g_signal_connect_data ((tab), ("notify::name"), (((GCallback)<br> (sync_name))), (window), ((void*)0), (GConnectFlags) 0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3233"><td class="num" id="LN3233">3233</td><td class="line"> <span class='macro'>g_signal_connect (tab,<span class='macro_popup'>g_signal_connect_data ((tab), ("notify::state"), (((GCallback<br>) (sync_state))), (window), ((void*)0), (GConnectFlags) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="3234"><td class="num" id="LN3234">3234</td><td class="line"> <span class='string_literal'><span class='macro'>"notify::state"</span>,<span class='macro_popup'>g_signal_connect_data ((tab), ("notify::state"), (((GCallback<br>) (sync_state))), (window), ((void*)0), (GConnectFlags) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="3235"><td class="num" id="LN3235">3235</td><td class="line"> <span class='macro'>G_CALLBACK (sync_state),<span class='macro_popup'>g_signal_connect_data ((tab), ("notify::state"), (((GCallback<br>) (sync_state))), (window), ((void*)0), (GConnectFlags) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="3236"><td class="num" id="LN3236">3236</td><td class="line"> <span class='macro'>window)<span class='macro_popup'>g_signal_connect_data ((tab), ("notify::state"), (((GCallback<br>) (sync_state))), (window), ((void*)0), (GConnectFlags) 0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3237"><td class="num" id="LN3237">3237</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3238"><td class="num" id="LN3238">3238</td><td class="line"> <span class='macro'>g_signal_connect (doc,<span class='macro_popup'>g_signal_connect_data ((doc), ("cursor-moved"), (((GCallback)<br> (update_cursor_position_statusbar))), (window), ((void*)0), (<br>GConnectFlags) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="3239"><td class="num" id="LN3239">3239</td><td class="line"> <span class='string_literal'><span class='macro'>"cursor-moved"</span>,<span class='macro_popup'>g_signal_connect_data ((doc), ("cursor-moved"), (((GCallback)<br> (update_cursor_position_statusbar))), (window), ((void*)0), (<br>GConnectFlags) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="3240"><td class="num" id="LN3240">3240</td><td class="line"> <span class='macro'>G_CALLBACK (update_cursor_position_statusbar),<span class='macro_popup'>g_signal_connect_data ((doc), ("cursor-moved"), (((GCallback)<br> (update_cursor_position_statusbar))), (window), ((void*)0), (<br>GConnectFlags) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="3241"><td class="num" id="LN3241">3241</td><td class="line"> <span class='macro'>window)<span class='macro_popup'>g_signal_connect_data ((doc), ("cursor-moved"), (((GCallback)<br> (update_cursor_position_statusbar))), (window), ((void*)0), (<br>GConnectFlags) 0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3242"><td class="num" id="LN3242">3242</td><td class="line"> <span class='macro'>g_signal_connect (doc,<span class='macro_popup'>g_signal_connect_data ((doc), ("notify::can-search-again"), (<br>((GCallback) (can_search_again))), (window), ((void*)0), (GConnectFlags<br>) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="3243"><td class="num" id="LN3243">3243</td><td class="line"> <span class='string_literal'><span class='macro'>"notify::can-search-again"</span>,<span class='macro_popup'>g_signal_connect_data ((doc), ("notify::can-search-again"), (<br>((GCallback) (can_search_again))), (window), ((void*)0), (GConnectFlags<br>) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="3244"><td class="num" id="LN3244">3244</td><td class="line"> <span class='macro'>G_CALLBACK (can_search_again),<span class='macro_popup'>g_signal_connect_data ((doc), ("notify::can-search-again"), (<br>((GCallback) (can_search_again))), (window), ((void*)0), (GConnectFlags<br>) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="3245"><td class="num" id="LN3245">3245</td><td class="line"> <span class='macro'>window)<span class='macro_popup'>g_signal_connect_data ((doc), ("notify::can-search-again"), (<br>((GCallback) (can_search_again))), (window), ((void*)0), (GConnectFlags<br>) 0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3246"><td class="num" id="LN3246">3246</td><td class="line"> <span class='macro'>g_signal_connect (doc,<span class='macro_popup'>g_signal_connect_data ((doc), ("notify::can-undo"), (((GCallback<br>) (can_undo))), (window), ((void*)0), (GConnectFlags) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="3247"><td class="num" id="LN3247">3247</td><td class="line"> <span class='string_literal'><span class='macro'>"notify::can-undo"</span>,<span class='macro_popup'>g_signal_connect_data ((doc), ("notify::can-undo"), (((GCallback<br>) (can_undo))), (window), ((void*)0), (GConnectFlags) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="3248"><td class="num" id="LN3248">3248</td><td class="line"> <span class='macro'>G_CALLBACK (can_undo),<span class='macro_popup'>g_signal_connect_data ((doc), ("notify::can-undo"), (((GCallback<br>) (can_undo))), (window), ((void*)0), (GConnectFlags) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="3249"><td class="num" id="LN3249">3249</td><td class="line"> <span class='macro'>window)<span class='macro_popup'>g_signal_connect_data ((doc), ("notify::can-undo"), (((GCallback<br>) (can_undo))), (window), ((void*)0), (GConnectFlags) 0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3250"><td class="num" id="LN3250">3250</td><td class="line"> <span class='macro'>g_signal_connect (doc,<span class='macro_popup'>g_signal_connect_data ((doc), ("notify::can-redo"), (((GCallback<br>) (can_redo))), (window), ((void*)0), (GConnectFlags) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="3251"><td class="num" id="LN3251">3251</td><td class="line"> <span class='string_literal'><span class='macro'>"notify::can-redo"</span>,<span class='macro_popup'>g_signal_connect_data ((doc), ("notify::can-redo"), (((GCallback<br>) (can_redo))), (window), ((void*)0), (GConnectFlags) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="3252"><td class="num" id="LN3252">3252</td><td class="line"> <span class='macro'>G_CALLBACK (can_redo),<span class='macro_popup'>g_signal_connect_data ((doc), ("notify::can-redo"), (((GCallback<br>) (can_redo))), (window), ((void*)0), (GConnectFlags) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="3253"><td class="num" id="LN3253">3253</td><td class="line"> <span class='macro'>window)<span class='macro_popup'>g_signal_connect_data ((doc), ("notify::can-redo"), (((GCallback<br>) (can_redo))), (window), ((void*)0), (GConnectFlags) 0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3254"><td class="num" id="LN3254">3254</td><td class="line"> <span class='macro'>g_signal_connect (doc,<span class='macro_popup'>g_signal_connect_data ((doc), ("notify::has-selection"), (((GCallback<br>) (selection_changed))), (window), ((void*)0), (GConnectFlags<br>) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="3255"><td class="num" id="LN3255">3255</td><td class="line"> <span class='string_literal'><span class='macro'>"notify::has-selection"</span>,<span class='macro_popup'>g_signal_connect_data ((doc), ("notify::has-selection"), (((GCallback<br>) (selection_changed))), (window), ((void*)0), (GConnectFlags<br>) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="3256"><td class="num" id="LN3256">3256</td><td class="line"> <span class='macro'>G_CALLBACK (selection_changed),<span class='macro_popup'>g_signal_connect_data ((doc), ("notify::has-selection"), (((GCallback<br>) (selection_changed))), (window), ((void*)0), (GConnectFlags<br>) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="3257"><td class="num" id="LN3257">3257</td><td class="line"> <span class='macro'>window)<span class='macro_popup'>g_signal_connect_data ((doc), ("notify::has-selection"), (((GCallback<br>) (selection_changed))), (window), ((void*)0), (GConnectFlags<br>) 0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3258"><td class="num" id="LN3258">3258</td><td class="line"> <span class='macro'>g_signal_connect (doc,<span class='macro_popup'>g_signal_connect_data ((doc), ("notify::language"), (((GCallback<br>) (sync_languages_menu))), (window), ((void*)0), (GConnectFlags<br>) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="3259"><td class="num" id="LN3259">3259</td><td class="line"> <span class='string_literal'><span class='macro'>"notify::language"</span>,<span class='macro_popup'>g_signal_connect_data ((doc), ("notify::language"), (((GCallback<br>) (sync_languages_menu))), (window), ((void*)0), (GConnectFlags<br>) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="3260"><td class="num" id="LN3260">3260</td><td class="line"> <span class='macro'>G_CALLBACK (sync_languages_menu),<span class='macro_popup'>g_signal_connect_data ((doc), ("notify::language"), (((GCallback<br>) (sync_languages_menu))), (window), ((void*)0), (GConnectFlags<br>) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="3261"><td class="num" id="LN3261">3261</td><td class="line"> <span class='macro'>window)<span class='macro_popup'>g_signal_connect_data ((doc), ("notify::language"), (((GCallback<br>) (sync_languages_menu))), (window), ((void*)0), (GConnectFlags<br>) 0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3262"><td class="num" id="LN3262">3262</td><td class="line"> <span class='macro'>g_signal_connect (doc,<span class='macro_popup'>g_signal_connect_data ((doc), ("notify::read-only"), (((GCallback<br>) (readonly_changed))), (window), ((void*)0), (GConnectFlags)<br> 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="3263"><td class="num" id="LN3263">3263</td><td class="line"> <span class='string_literal'><span class='macro'>"notify::read-only"</span>,<span class='macro_popup'>g_signal_connect_data ((doc), ("notify::read-only"), (((GCallback<br>) (readonly_changed))), (window), ((void*)0), (GConnectFlags)<br> 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="3264"><td class="num" id="LN3264">3264</td><td class="line"> <span class='macro'>G_CALLBACK (readonly_changed),<span class='macro_popup'>g_signal_connect_data ((doc), ("notify::read-only"), (((GCallback<br>) (readonly_changed))), (window), ((void*)0), (GConnectFlags)<br> 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="3265"><td class="num" id="LN3265">3265</td><td class="line"> <span class='macro'>window)<span class='macro_popup'>g_signal_connect_data ((doc), ("notify::read-only"), (((GCallback<br>) (readonly_changed))), (window), ((void*)0), (GConnectFlags)<br> 0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3266"><td class="num" id="LN3266">3266</td><td class="line"> <span class='macro'>g_signal_connect (view,<span class='macro_popup'>g_signal_connect_data ((view), ("toggle_overwrite"), (((GCallback<br>) (update_overwrite_mode_statusbar))), (window), ((void*)0), (<br>GConnectFlags) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="3267"><td class="num" id="LN3267">3267</td><td class="line"> <span class='string_literal'><span class='macro'>"toggle_overwrite"</span>,<span class='macro_popup'>g_signal_connect_data ((view), ("toggle_overwrite"), (((GCallback<br>) (update_overwrite_mode_statusbar))), (window), ((void*)0), (<br>GConnectFlags) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="3268"><td class="num" id="LN3268">3268</td><td class="line"> <span class='macro'>G_CALLBACK (update_overwrite_mode_statusbar),<span class='macro_popup'>g_signal_connect_data ((view), ("toggle_overwrite"), (((GCallback<br>) (update_overwrite_mode_statusbar))), (window), ((void*)0), (<br>GConnectFlags) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="3269"><td class="num" id="LN3269">3269</td><td class="line"> <span class='macro'>window)<span class='macro_popup'>g_signal_connect_data ((view), ("toggle_overwrite"), (((GCallback<br>) (update_overwrite_mode_statusbar))), (window), ((void*)0), (<br>GConnectFlags) 0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3270"><td class="num" id="LN3270">3270</td><td class="line"> <span class='macro'>g_signal_connect (view,<span class='macro_popup'>g_signal_connect_data ((view), ("notify::editable"), (((GCallback<br>) (editable_changed))), (window), ((void*)0), (GConnectFlags)<br> 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="3271"><td class="num" id="LN3271">3271</td><td class="line"> <span class='string_literal'><span class='macro'>"notify::editable"</span>,<span class='macro_popup'>g_signal_connect_data ((view), ("notify::editable"), (((GCallback<br>) (editable_changed))), (window), ((void*)0), (GConnectFlags)<br> 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="3272"><td class="num" id="LN3272">3272</td><td class="line"> <span class='macro'>G_CALLBACK (editable_changed),<span class='macro_popup'>g_signal_connect_data ((view), ("notify::editable"), (((GCallback<br>) (editable_changed))), (window), ((void*)0), (GConnectFlags)<br> 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="3273"><td class="num" id="LN3273">3273</td><td class="line"> <span class='macro'>window)<span class='macro_popup'>g_signal_connect_data ((view), ("notify::editable"), (((GCallback<br>) (editable_changed))), (window), ((void*)0), (GConnectFlags)<br> 0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3274"><td class="num" id="LN3274">3274</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3275"><td class="num" id="LN3275">3275</td><td class="line"> update_documents_list_menu (window);</td></tr>
+<tr class="codeline" data-linenumber="3276"><td class="num" id="LN3276">3276</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3277"><td class="num" id="LN3277">3277</td><td class="line"> <span class='macro'>g_signal_connect (view,<span class='macro_popup'>g_signal_connect_data ((view), ("drop_uris"), (((GCallback) (<br>drop_uris_cb))), (((void*)0)), ((void*)0), (GConnectFlags) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="3278"><td class="num" id="LN3278">3278</td><td class="line"> <span class='string_literal'><span class='macro'>"drop_uris"</span>,<span class='macro_popup'>g_signal_connect_data ((view), ("drop_uris"), (((GCallback) (<br>drop_uris_cb))), (((void*)0)), ((void*)0), (GConnectFlags) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="3279"><td class="num" id="LN3279">3279</td><td class="line"> <span class='macro'>G_CALLBACK (drop_uris_cb),<span class='macro_popup'>g_signal_connect_data ((view), ("drop_uris"), (((GCallback) (<br>drop_uris_cb))), (((void*)0)), ((void*)0), (GConnectFlags) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="3280"><td class="num" id="LN3280">3280</td><td class="line"> <span class='macro'>NULL)<span class='macro_popup'>g_signal_connect_data ((view), ("drop_uris"), (((GCallback) (<br>drop_uris_cb))), (((void*)0)), ((void*)0), (GConnectFlags) 0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3281"><td class="num" id="LN3281">3281</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3282"><td class="num" id="LN3282">3282</td><td class="line"> update_window_state (window);</td></tr>
+<tr class="codeline" data-linenumber="3283"><td class="num" id="LN3283">3283</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3284"><td class="num" id="LN3284">3284</td><td class="line"> g_signal_emit (<span class='macro'>G_OBJECT (window)<span class='macro_popup'>((((GObject*) (void *) ((window)))))</span></span>, signals[TAB_ADDED], 0, tab);</td></tr>
+<tr class="codeline" data-linenumber="3285"><td class="num" id="LN3285">3285</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3286"><td class="num" id="LN3286">3286</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3287"><td class="num" id="LN3287">3287</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="3288"><td class="num" id="LN3288">3288</td><td class="line">notebook_tab_removed (PlumaNotebook *notebook,</td></tr>
+<tr class="codeline" data-linenumber="3289"><td class="num" id="LN3289">3289</td><td class="line"> PlumaTab *tab,</td></tr>
+<tr class="codeline" data-linenumber="3290"><td class="num" id="LN3290">3290</td><td class="line"> PlumaWindow *window)</td></tr>
+<tr class="codeline" data-linenumber="3291"><td class="num" id="LN3291">3291</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3292"><td class="num" id="LN3292">3292</td><td class="line"> PlumaView *view;</td></tr>
+<tr class="codeline" data-linenumber="3293"><td class="num" id="LN3293">3293</td><td class="line"> PlumaDocument *doc;</td></tr>
+<tr class="codeline" data-linenumber="3294"><td class="num" id="LN3294">3294</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3295"><td class="num" id="LN3295">3295</td><td class="line"> pluma_debug (<span class='macro'>DEBUG_WINDOW<span class='macro_popup'>PLUMA_DEBUG_WINDOW, "pluma-window.c", 3295, ((const char*) (__func__<br>))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3296"><td class="num" id="LN3296">3296</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3297"><td class="num" id="LN3297">3297</td><td class="line"> <span class='macro'>g_return_if_fail ((window-&gt;priv-&gt;state &amp; PLUMA_WINDOW_STATE_SAVING_SESSION) == 0)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_77<br>; if ((window-&gt;priv-&gt;state &amp; PLUMA_WINDOW_STATE_SAVING_SESSION<br>) == 0) _g_boolean_var_77 = 1; else _g_boolean_var_77 = 0; _g_boolean_var_77<br>; }), 1))) { } else { g_return_if_fail_warning (((gchar*) 0),<br> ((const char*) (__func__)), "(window-&gt;priv-&gt;state &amp; PLUMA_WINDOW_STATE_SAVING_SESSION) == 0"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3298"><td class="num" id="LN3298">3298</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3299"><td class="num" id="LN3299">3299</td><td class="line"> --window-&gt;priv-&gt;num_tabs;</td></tr>
+<tr class="codeline" data-linenumber="3300"><td class="num" id="LN3300">3300</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3301"><td class="num" id="LN3301">3301</td><td class="line"> view = pluma_tab_get_view (tab);</td></tr>
+<tr class="codeline" data-linenumber="3302"><td class="num" id="LN3302">3302</td><td class="line"> doc = pluma_tab_get_document (tab);</td></tr>
+<tr class="codeline" data-linenumber="3303"><td class="num" id="LN3303">3303</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3304"><td class="num" id="LN3304">3304</td><td class="line"> <span class='macro'>g_signal_handlers_disconnect_by_func (tab,<span class='macro_popup'>g_signal_handlers_disconnect_matched ((tab), (GSignalMatchType<br>) (G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA), 0, 0, ((void*)<br>0), (((GCallback) (sync_name))), (window))</span></span></td></tr>
+<tr class="codeline" data-linenumber="3305"><td class="num" id="LN3305">3305</td><td class="line"> <span class='macro'>G_CALLBACK (sync_name),<span class='macro_popup'>g_signal_handlers_disconnect_matched ((tab), (GSignalMatchType<br>) (G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA), 0, 0, ((void*)<br>0), (((GCallback) (sync_name))), (window))</span></span></td></tr>
+<tr class="codeline" data-linenumber="3306"><td class="num" id="LN3306">3306</td><td class="line"> <span class='macro'>window)<span class='macro_popup'>g_signal_handlers_disconnect_matched ((tab), (GSignalMatchType<br>) (G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA), 0, 0, ((void*)<br>0), (((GCallback) (sync_name))), (window))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3307"><td class="num" id="LN3307">3307</td><td class="line"> <span class='macro'>g_signal_handlers_disconnect_by_func (tab,<span class='macro_popup'>g_signal_handlers_disconnect_matched ((tab), (GSignalMatchType<br>) (G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA), 0, 0, ((void*)<br>0), (((GCallback) (sync_state))), (window))</span></span></td></tr>
+<tr class="codeline" data-linenumber="3308"><td class="num" id="LN3308">3308</td><td class="line"> <span class='macro'>G_CALLBACK (sync_state),<span class='macro_popup'>g_signal_handlers_disconnect_matched ((tab), (GSignalMatchType<br>) (G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA), 0, 0, ((void*)<br>0), (((GCallback) (sync_state))), (window))</span></span></td></tr>
+<tr class="codeline" data-linenumber="3309"><td class="num" id="LN3309">3309</td><td class="line"> <span class='macro'>window)<span class='macro_popup'>g_signal_handlers_disconnect_matched ((tab), (GSignalMatchType<br>) (G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA), 0, 0, ((void*)<br>0), (((GCallback) (sync_state))), (window))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3310"><td class="num" id="LN3310">3310</td><td class="line"> <span class='macro'>g_signal_handlers_disconnect_by_func (doc,<span class='macro_popup'>g_signal_handlers_disconnect_matched ((doc), (GSignalMatchType<br>) (G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA), 0, 0, ((void*)<br>0), (((GCallback) (update_cursor_position_statusbar))), (window<br>))</span></span></td></tr>
+<tr class="codeline" data-linenumber="3311"><td class="num" id="LN3311">3311</td><td class="line"> <span class='macro'>G_CALLBACK (update_cursor_position_statusbar),<span class='macro_popup'>g_signal_handlers_disconnect_matched ((doc), (GSignalMatchType<br>) (G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA), 0, 0, ((void*)<br>0), (((GCallback) (update_cursor_position_statusbar))), (window<br>))</span></span></td></tr>
+<tr class="codeline" data-linenumber="3312"><td class="num" id="LN3312">3312</td><td class="line"> <span class='macro'>window)<span class='macro_popup'>g_signal_handlers_disconnect_matched ((doc), (GSignalMatchType<br>) (G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA), 0, 0, ((void*)<br>0), (((GCallback) (update_cursor_position_statusbar))), (window<br>))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3313"><td class="num" id="LN3313">3313</td><td class="line"> <span class='macro'>g_signal_handlers_disconnect_by_func (doc,<span class='macro_popup'>g_signal_handlers_disconnect_matched ((doc), (GSignalMatchType<br>) (G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA), 0, 0, ((void*)<br>0), (((GCallback) (can_search_again))), (window))</span></span></td></tr>
+<tr class="codeline" data-linenumber="3314"><td class="num" id="LN3314">3314</td><td class="line"> <span class='macro'>G_CALLBACK (can_search_again),<span class='macro_popup'>g_signal_handlers_disconnect_matched ((doc), (GSignalMatchType<br>) (G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA), 0, 0, ((void*)<br>0), (((GCallback) (can_search_again))), (window))</span></span></td></tr>
+<tr class="codeline" data-linenumber="3315"><td class="num" id="LN3315">3315</td><td class="line"> <span class='macro'>window)<span class='macro_popup'>g_signal_handlers_disconnect_matched ((doc), (GSignalMatchType<br>) (G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA), 0, 0, ((void*)<br>0), (((GCallback) (can_search_again))), (window))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3316"><td class="num" id="LN3316">3316</td><td class="line"> <span class='macro'>g_signal_handlers_disconnect_by_func (doc,<span class='macro_popup'>g_signal_handlers_disconnect_matched ((doc), (GSignalMatchType<br>) (G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA), 0, 0, ((void*)<br>0), (((GCallback) (can_undo))), (window))</span></span></td></tr>
+<tr class="codeline" data-linenumber="3317"><td class="num" id="LN3317">3317</td><td class="line"> <span class='macro'>G_CALLBACK (can_undo),<span class='macro_popup'>g_signal_handlers_disconnect_matched ((doc), (GSignalMatchType<br>) (G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA), 0, 0, ((void*)<br>0), (((GCallback) (can_undo))), (window))</span></span></td></tr>
+<tr class="codeline" data-linenumber="3318"><td class="num" id="LN3318">3318</td><td class="line"> <span class='macro'>window)<span class='macro_popup'>g_signal_handlers_disconnect_matched ((doc), (GSignalMatchType<br>) (G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA), 0, 0, ((void*)<br>0), (((GCallback) (can_undo))), (window))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3319"><td class="num" id="LN3319">3319</td><td class="line"> <span class='macro'>g_signal_handlers_disconnect_by_func (doc,<span class='macro_popup'>g_signal_handlers_disconnect_matched ((doc), (GSignalMatchType<br>) (G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA), 0, 0, ((void*)<br>0), (((GCallback) (can_redo))), (window))</span></span></td></tr>
+<tr class="codeline" data-linenumber="3320"><td class="num" id="LN3320">3320</td><td class="line"> <span class='macro'>G_CALLBACK (can_redo),<span class='macro_popup'>g_signal_handlers_disconnect_matched ((doc), (GSignalMatchType<br>) (G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA), 0, 0, ((void*)<br>0), (((GCallback) (can_redo))), (window))</span></span></td></tr>
+<tr class="codeline" data-linenumber="3321"><td class="num" id="LN3321">3321</td><td class="line"> <span class='macro'>window)<span class='macro_popup'>g_signal_handlers_disconnect_matched ((doc), (GSignalMatchType<br>) (G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA), 0, 0, ((void*)<br>0), (((GCallback) (can_redo))), (window))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3322"><td class="num" id="LN3322">3322</td><td class="line"> <span class='macro'>g_signal_handlers_disconnect_by_func (doc,<span class='macro_popup'>g_signal_handlers_disconnect_matched ((doc), (GSignalMatchType<br>) (G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA), 0, 0, ((void*)<br>0), (((GCallback) (selection_changed))), (window))</span></span></td></tr>
+<tr class="codeline" data-linenumber="3323"><td class="num" id="LN3323">3323</td><td class="line"> <span class='macro'>G_CALLBACK (selection_changed),<span class='macro_popup'>g_signal_handlers_disconnect_matched ((doc), (GSignalMatchType<br>) (G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA), 0, 0, ((void*)<br>0), (((GCallback) (selection_changed))), (window))</span></span></td></tr>
+<tr class="codeline" data-linenumber="3324"><td class="num" id="LN3324">3324</td><td class="line"> <span class='macro'>window)<span class='macro_popup'>g_signal_handlers_disconnect_matched ((doc), (GSignalMatchType<br>) (G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA), 0, 0, ((void*)<br>0), (((GCallback) (selection_changed))), (window))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3325"><td class="num" id="LN3325">3325</td><td class="line"> <span class='macro'>g_signal_handlers_disconnect_by_func (doc,<span class='macro_popup'>g_signal_handlers_disconnect_matched ((doc), (GSignalMatchType<br>) (G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA), 0, 0, ((void*)<br>0), (((GCallback) (sync_languages_menu))), (window))</span></span></td></tr>
+<tr class="codeline" data-linenumber="3326"><td class="num" id="LN3326">3326</td><td class="line"> <span class='macro'>G_CALLBACK (sync_languages_menu),<span class='macro_popup'>g_signal_handlers_disconnect_matched ((doc), (GSignalMatchType<br>) (G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA), 0, 0, ((void*)<br>0), (((GCallback) (sync_languages_menu))), (window))</span></span></td></tr>
+<tr class="codeline" data-linenumber="3327"><td class="num" id="LN3327">3327</td><td class="line"> <span class='macro'>window)<span class='macro_popup'>g_signal_handlers_disconnect_matched ((doc), (GSignalMatchType<br>) (G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA), 0, 0, ((void*)<br>0), (((GCallback) (sync_languages_menu))), (window))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3328"><td class="num" id="LN3328">3328</td><td class="line"> <span class='macro'>g_signal_handlers_disconnect_by_func (doc,<span class='macro_popup'>g_signal_handlers_disconnect_matched ((doc), (GSignalMatchType<br>) (G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA), 0, 0, ((void*)<br>0), (((GCallback) (readonly_changed))), (window))</span></span></td></tr>
+<tr class="codeline" data-linenumber="3329"><td class="num" id="LN3329">3329</td><td class="line"> <span class='macro'>G_CALLBACK (readonly_changed),<span class='macro_popup'>g_signal_handlers_disconnect_matched ((doc), (GSignalMatchType<br>) (G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA), 0, 0, ((void*)<br>0), (((GCallback) (readonly_changed))), (window))</span></span></td></tr>
+<tr class="codeline" data-linenumber="3330"><td class="num" id="LN3330">3330</td><td class="line"> <span class='macro'>window)<span class='macro_popup'>g_signal_handlers_disconnect_matched ((doc), (GSignalMatchType<br>) (G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA), 0, 0, ((void*)<br>0), (((GCallback) (readonly_changed))), (window))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3331"><td class="num" id="LN3331">3331</td><td class="line"> <span class='macro'>g_signal_handlers_disconnect_by_func (view,<span class='macro_popup'>g_signal_handlers_disconnect_matched ((view), (GSignalMatchType<br>) (G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA), 0, 0, ((void*)<br>0), (((GCallback) (update_overwrite_mode_statusbar))), (window<br>))</span></span></td></tr>
+<tr class="codeline" data-linenumber="3332"><td class="num" id="LN3332">3332</td><td class="line"> <span class='macro'>G_CALLBACK (update_overwrite_mode_statusbar),<span class='macro_popup'>g_signal_handlers_disconnect_matched ((view), (GSignalMatchType<br>) (G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA), 0, 0, ((void*)<br>0), (((GCallback) (update_overwrite_mode_statusbar))), (window<br>))</span></span></td></tr>
+<tr class="codeline" data-linenumber="3333"><td class="num" id="LN3333">3333</td><td class="line"> <span class='macro'>window)<span class='macro_popup'>g_signal_handlers_disconnect_matched ((view), (GSignalMatchType<br>) (G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA), 0, 0, ((void*)<br>0), (((GCallback) (update_overwrite_mode_statusbar))), (window<br>))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3334"><td class="num" id="LN3334">3334</td><td class="line"> <span class='macro'>g_signal_handlers_disconnect_by_func (view,<span class='macro_popup'>g_signal_handlers_disconnect_matched ((view), (GSignalMatchType<br>) (G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA), 0, 0, ((void*)<br>0), (((GCallback) (editable_changed))), (window))</span></span></td></tr>
+<tr class="codeline" data-linenumber="3335"><td class="num" id="LN3335">3335</td><td class="line"> <span class='macro'>G_CALLBACK (editable_changed),<span class='macro_popup'>g_signal_handlers_disconnect_matched ((view), (GSignalMatchType<br>) (G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA), 0, 0, ((void*)<br>0), (((GCallback) (editable_changed))), (window))</span></span></td></tr>
+<tr class="codeline" data-linenumber="3336"><td class="num" id="LN3336">3336</td><td class="line"> <span class='macro'>window)<span class='macro_popup'>g_signal_handlers_disconnect_matched ((view), (GSignalMatchType<br>) (G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA), 0, 0, ((void*)<br>0), (((GCallback) (editable_changed))), (window))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3337"><td class="num" id="LN3337">3337</td><td class="line"> <span class='macro'>g_signal_handlers_disconnect_by_func (view,<span class='macro_popup'>g_signal_handlers_disconnect_matched ((view), (GSignalMatchType<br>) (G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA), 0, 0, ((void*)<br>0), (((GCallback) (drop_uris_cb))), (((void*)0)))</span></span></td></tr>
+<tr class="codeline" data-linenumber="3338"><td class="num" id="LN3338">3338</td><td class="line"> <span class='macro'>G_CALLBACK (drop_uris_cb),<span class='macro_popup'>g_signal_handlers_disconnect_matched ((view), (GSignalMatchType<br>) (G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA), 0, 0, ((void*)<br>0), (((GCallback) (drop_uris_cb))), (((void*)0)))</span></span></td></tr>
+<tr class="codeline" data-linenumber="3339"><td class="num" id="LN3339">3339</td><td class="line"> <span class='macro'>NULL)<span class='macro_popup'>g_signal_handlers_disconnect_matched ((view), (GSignalMatchType<br>) (G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA), 0, 0, ((void*)<br>0), (((GCallback) (drop_uris_cb))), (((void*)0)))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3340"><td class="num" id="LN3340">3340</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3341"><td class="num" id="LN3341">3341</td><td class="line"><span class='directive'>#if <span class='macro'>GLIB_CHECK_VERSION(2,62,0)<span class='macro_popup'>(2 &gt; (2) || (2 == (2) &amp;&amp; 76 &gt; (62)) || (2 == (2<br>) &amp;&amp; 76 == (62) &amp;&amp; 3 &gt;= (0)))</span></span></span></td></tr>
+<tr class="codeline" data-linenumber="3342"><td class="num" id="LN3342">3342</td><td class="line"> <span class='keyword'>if</span> (tab == pluma_window_get_active_tab (window))</td></tr>
+<tr class="codeline" data-linenumber="3343"><td class="num" id="LN3343">3343</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="3344"><td class="num" id="LN3344">3344</td><td class="line"> <span class='macro'>g_clear_signal_handler (&amp;window-&gt;priv-&gt;tab_width_id, view)<span class='macro_popup'>do { gpointer const _instance = (view); gulong *const _handler_id_ptr<br> = (&amp;window-&gt;priv-&gt;tab_width_id); const gulong _handler_id<br> = *_handler_id_ptr; if (_handler_id &gt; 0) { *_handler_id_ptr<br> = 0; g_signal_handler_disconnect (_instance, _handler_id); }<br> } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3345"><td class="num" id="LN3345">3345</td><td class="line"> <span class='macro'>g_clear_signal_handler (&amp;window-&gt;priv-&gt;spaces_instead_of_tabs_id, view)<span class='macro_popup'>do { gpointer const _instance = (view); gulong *const _handler_id_ptr<br> = (&amp;window-&gt;priv-&gt;spaces_instead_of_tabs_id); const<br> gulong _handler_id = *_handler_id_ptr; if (_handler_id &gt; 0<br>) { *_handler_id_ptr = 0; g_signal_handler_disconnect (_instance<br>, _handler_id); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3346"><td class="num" id="LN3346">3346</td><td class="line"> <span class='macro'>g_clear_signal_handler (&amp;window-&gt;priv-&gt;language_changed_id, doc)<span class='macro_popup'>do { gpointer const _instance = (doc); gulong *const _handler_id_ptr<br> = (&amp;window-&gt;priv-&gt;language_changed_id); const gulong<br> _handler_id = *_handler_id_ptr; if (_handler_id &gt; 0) { *_handler_id_ptr<br> = 0; g_signal_handler_disconnect (_instance, _handler_id); }<br> } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3347"><td class="num" id="LN3347">3347</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3348"><td class="num" id="LN3348">3348</td><td class="line"><span class='directive'>#else</span></td></tr>
+<tr class="codeline" data-linenumber="3349"><td class="num" id="LN3349">3349</td><td class="line"> <span class='keyword'>if</span> (window-&gt;priv-&gt;tab_width_id &amp;&amp; tab == pluma_window_get_active_tab (window))</td></tr>
+<tr class="codeline" data-linenumber="3350"><td class="num" id="LN3350">3350</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="3351"><td class="num" id="LN3351">3351</td><td class="line"> g_signal_handler_disconnect (view, window-&gt;priv-&gt;tab_width_id);</td></tr>
+<tr class="codeline" data-linenumber="3352"><td class="num" id="LN3352">3352</td><td class="line"> window-&gt;priv-&gt;tab_width_id = 0;</td></tr>
+<tr class="codeline" data-linenumber="3353"><td class="num" id="LN3353">3353</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3354"><td class="num" id="LN3354">3354</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3355"><td class="num" id="LN3355">3355</td><td class="line"> <span class='keyword'>if</span> (window-&gt;priv-&gt;spaces_instead_of_tabs_id &amp;&amp; tab == pluma_window_get_active_tab (window))</td></tr>
+<tr class="codeline" data-linenumber="3356"><td class="num" id="LN3356">3356</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="3357"><td class="num" id="LN3357">3357</td><td class="line"> g_signal_handler_disconnect (view, window-&gt;priv-&gt;spaces_instead_of_tabs_id);</td></tr>
+<tr class="codeline" data-linenumber="3358"><td class="num" id="LN3358">3358</td><td class="line"> window-&gt;priv-&gt;spaces_instead_of_tabs_id = 0;</td></tr>
+<tr class="codeline" data-linenumber="3359"><td class="num" id="LN3359">3359</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3360"><td class="num" id="LN3360">3360</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3361"><td class="num" id="LN3361">3361</td><td class="line"> <span class='keyword'>if</span> (window-&gt;priv-&gt;language_changed_id &amp;&amp; tab == pluma_window_get_active_tab (window))</td></tr>
+<tr class="codeline" data-linenumber="3362"><td class="num" id="LN3362">3362</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="3363"><td class="num" id="LN3363">3363</td><td class="line"> g_signal_handler_disconnect (doc, window-&gt;priv-&gt;language_changed_id);</td></tr>
+<tr class="codeline" data-linenumber="3364"><td class="num" id="LN3364">3364</td><td class="line"> window-&gt;priv-&gt;language_changed_id = 0;</td></tr>
+<tr class="codeline" data-linenumber="3365"><td class="num" id="LN3365">3365</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3366"><td class="num" id="LN3366">3366</td><td class="line"><span class='directive'>#endif</span></td></tr>
+<tr class="codeline" data-linenumber="3367"><td class="num" id="LN3367">3367</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3368"><td class="num" id="LN3368">3368</td><td class="line"> <span class='macro'>g_return_if_fail (window-&gt;priv-&gt;num_tabs &gt;= 0)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_78<br>; if (window-&gt;priv-&gt;num_tabs &gt;= 0) _g_boolean_var_78<br> = 1; else _g_boolean_var_78 = 0; _g_boolean_var_78; }), 1)))<br> { } else { g_return_if_fail_warning (((gchar*) 0), ((const char<br>*) (__func__)), "window-&gt;priv-&gt;num_tabs &gt;= 0"); return<br>; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3369"><td class="num" id="LN3369">3369</td><td class="line"> <span class='keyword'>if</span> (window-&gt;priv-&gt;num_tabs == 0)</td></tr>
+<tr class="codeline" data-linenumber="3370"><td class="num" id="LN3370">3370</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="3371"><td class="num" id="LN3371">3371</td><td class="line"> window-&gt;priv-&gt;active_tab = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3372"><td class="num" id="LN3372">3372</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3373"><td class="num" id="LN3373">3373</td><td class="line"> set_title (window);</td></tr>
+<tr class="codeline" data-linenumber="3374"><td class="num" id="LN3374">3374</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3375"><td class="num" id="LN3375">3375</td><td class="line"> <span class='comment'>/* Remove line and col info */</span></td></tr>
+<tr class="codeline" data-linenumber="3376"><td class="num" id="LN3376">3376</td><td class="line"> pluma_statusbar_set_cursor_position (<span class='macro'>PLUMA_STATUSBAR (window-&gt;priv-&gt;statusbar)<span class='macro_popup'>((((PlumaStatusbar*) (void *) ((window-&gt;priv-&gt;statusbar<br>)))))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="3377"><td class="num" id="LN3377">3377</td><td class="line"> -1,</td></tr>
+<tr class="codeline" data-linenumber="3378"><td class="num" id="LN3378">3378</td><td class="line"> -1);</td></tr>
+<tr class="codeline" data-linenumber="3379"><td class="num" id="LN3379">3379</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3380"><td class="num" id="LN3380">3380</td><td class="line"> pluma_statusbar_clear_overwrite (<span class='macro'>PLUMA_STATUSBAR (window-&gt;priv-&gt;statusbar)<span class='macro_popup'>((((PlumaStatusbar*) (void *) ((window-&gt;priv-&gt;statusbar<br>)))))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3381"><td class="num" id="LN3381">3381</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3382"><td class="num" id="LN3382">3382</td><td class="line"> <span class='comment'>/* hide the combos */</span></td></tr>
+<tr class="codeline" data-linenumber="3383"><td class="num" id="LN3383">3383</td><td class="line"> gtk_widget_hide (window-&gt;priv-&gt;tab_width_combo);</td></tr>
+<tr class="codeline" data-linenumber="3384"><td class="num" id="LN3384">3384</td><td class="line"> gtk_widget_hide (window-&gt;priv-&gt;language_combo);</td></tr>
+<tr class="codeline" data-linenumber="3385"><td class="num" id="LN3385">3385</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3386"><td class="num" id="LN3386">3386</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3387"><td class="num" id="LN3387">3387</td><td class="line"> <span class='keyword'>if</span> (!window-&gt;priv-&gt;removing_tabs)</td></tr>
+<tr class="codeline" data-linenumber="3388"><td class="num" id="LN3388">3388</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="3389"><td class="num" id="LN3389">3389</td><td class="line"> update_documents_list_menu (window);</td></tr>
+<tr class="codeline" data-linenumber="3390"><td class="num" id="LN3390">3390</td><td class="line"> update_next_prev_doc_sensitivity_per_window (window);</td></tr>
+<tr class="codeline" data-linenumber="3391"><td class="num" id="LN3391">3391</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3392"><td class="num" id="LN3392">3392</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="3393"><td class="num" id="LN3393">3393</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="3394"><td class="num" id="LN3394">3394</td><td class="line"> <span class='keyword'>if</span> (window-&gt;priv-&gt;num_tabs == 0)</td></tr>
+<tr class="codeline" data-linenumber="3395"><td class="num" id="LN3395">3395</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="3396"><td class="num" id="LN3396">3396</td><td class="line"> update_documents_list_menu (window);</td></tr>
+<tr class="codeline" data-linenumber="3397"><td class="num" id="LN3397">3397</td><td class="line"> update_next_prev_doc_sensitivity_per_window (window);</td></tr>
+<tr class="codeline" data-linenumber="3398"><td class="num" id="LN3398">3398</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3399"><td class="num" id="LN3399">3399</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3400"><td class="num" id="LN3400">3400</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3401"><td class="num" id="LN3401">3401</td><td class="line"> update_sensitivity_according_to_open_tabs (window);</td></tr>
+<tr class="codeline" data-linenumber="3402"><td class="num" id="LN3402">3402</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3403"><td class="num" id="LN3403">3403</td><td class="line"> <span class='keyword'>if</span> (window-&gt;priv-&gt;num_tabs == 0)</td></tr>
+<tr class="codeline" data-linenumber="3404"><td class="num" id="LN3404">3404</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="3405"><td class="num" id="LN3405">3405</td><td class="line"> peas_extension_set_call (window-&gt;priv-&gt;extensions, <span class='string_literal'>"update_state"</span>);</td></tr>
+<tr class="codeline" data-linenumber="3406"><td class="num" id="LN3406">3406</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3407"><td class="num" id="LN3407">3407</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3408"><td class="num" id="LN3408">3408</td><td class="line"> update_window_state (window);</td></tr>
+<tr class="codeline" data-linenumber="3409"><td class="num" id="LN3409">3409</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3410"><td class="num" id="LN3410">3410</td><td class="line"> g_signal_emit (<span class='macro'>G_OBJECT (window)<span class='macro_popup'>((((GObject*) (void *) ((window)))))</span></span>, signals[TAB_REMOVED], 0, tab);</td></tr>
+<tr class="codeline" data-linenumber="3411"><td class="num" id="LN3411">3411</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3412"><td class="num" id="LN3412">3412</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3413"><td class="num" id="LN3413">3413</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="3414"><td class="num" id="LN3414">3414</td><td class="line">notebook_tabs_reordered (PlumaNotebook *notebook,</td></tr>
+<tr class="codeline" data-linenumber="3415"><td class="num" id="LN3415">3415</td><td class="line"> PlumaWindow *window)</td></tr>
+<tr class="codeline" data-linenumber="3416"><td class="num" id="LN3416">3416</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3417"><td class="num" id="LN3417">3417</td><td class="line"> update_documents_list_menu (window);</td></tr>
+<tr class="codeline" data-linenumber="3418"><td class="num" id="LN3418">3418</td><td class="line"> update_next_prev_doc_sensitivity_per_window (window);</td></tr>
+<tr class="codeline" data-linenumber="3419"><td class="num" id="LN3419">3419</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3420"><td class="num" id="LN3420">3420</td><td class="line"> g_signal_emit (<span class='macro'>G_OBJECT (window)<span class='macro_popup'>((((GObject*) (void *) ((window)))))</span></span>, signals[TABS_REORDERED], 0);</td></tr>
+<tr class="codeline" data-linenumber="3421"><td class="num" id="LN3421">3421</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3422"><td class="num" id="LN3422">3422</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3423"><td class="num" id="LN3423">3423</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="3424"><td class="num" id="LN3424">3424</td><td class="line">notebook_tab_detached (PlumaNotebook *notebook,</td></tr>
+<tr class="codeline" data-linenumber="3425"><td class="num" id="LN3425">3425</td><td class="line"> PlumaTab *tab,</td></tr>
+<tr class="codeline" data-linenumber="3426"><td class="num" id="LN3426">3426</td><td class="line"> PlumaWindow *window)</td></tr>
+<tr class="codeline" data-linenumber="3427"><td class="num" id="LN3427">3427</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3428"><td class="num" id="LN3428">3428</td><td class="line"> PlumaWindow *new_window;</td></tr>
+<tr class="codeline" data-linenumber="3429"><td class="num" id="LN3429">3429</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3430"><td class="num" id="LN3430">3430</td><td class="line"> new_window = clone_window (window);</td></tr>
+<tr class="codeline" data-linenumber="3431"><td class="num" id="LN3431">3431</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3432"><td class="num" id="LN3432">3432</td><td class="line"> pluma_notebook_move_tab (notebook,</td></tr>
+<tr class="codeline" data-linenumber="3433"><td class="num" id="LN3433">3433</td><td class="line"> <span class='macro'>PLUMA_NOTEBOOK (_pluma_window_get_notebook (new_window))<span class='macro_popup'>((((PlumaNotebook*) (void *) ((_pluma_window_get_notebook (new_window<br>))))))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="3434"><td class="num" id="LN3434">3434</td><td class="line"> tab, 0);</td></tr>
+<tr class="codeline" data-linenumber="3435"><td class="num" id="LN3435">3435</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3436"><td class="num" id="LN3436">3436</td><td class="line"> gtk_window_set_position (<span class='macro'>GTK_WINDOW (new_window)<span class='macro_popup'>((((GtkWindow*) (void *) ((new_window)))))</span></span>, GTK_WIN_POS_MOUSE);</td></tr>
+<tr class="codeline" data-linenumber="3437"><td class="num" id="LN3437">3437</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3438"><td class="num" id="LN3438">3438</td><td class="line"> gtk_widget_show (<span class='macro'>GTK_WIDGET (new_window)<span class='macro_popup'>((((GtkWidget*) (void *) ((new_window)))))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3439"><td class="num" id="LN3439">3439</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3440"><td class="num" id="LN3440">3440</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3441"><td class="num" id="LN3441">3441</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="3442"><td class="num" id="LN3442">3442</td><td class="line">notebook_tab_close_request (PlumaNotebook *notebook,</td></tr>
+<tr class="codeline" data-linenumber="3443"><td class="num" id="LN3443">3443</td><td class="line"> PlumaTab *tab,</td></tr>
+<tr class="codeline" data-linenumber="3444"><td class="num" id="LN3444">3444</td><td class="line"> GtkWindow *window)</td></tr>
+<tr class="codeline" data-linenumber="3445"><td class="num" id="LN3445">3445</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3446"><td class="num" id="LN3446">3446</td><td class="line"> <span class='comment'>/* Note: we are destroying the tab before the default handler</span></td></tr>
+<tr class="codeline" data-linenumber="3447"><td class="num" id="LN3447">3447</td><td class="line"> <span class='comment'>* seems to be ok, but we need to keep an eye on this. */</span></td></tr>
+<tr class="codeline" data-linenumber="3448"><td class="num" id="LN3448">3448</td><td class="line"> _pluma_cmd_file_close_tab (tab, <span class='macro'>PLUMA_WINDOW (window)<span class='macro_popup'>((((PlumaWindow*) (void *) ((window)))))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3449"><td class="num" id="LN3449">3449</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3450"><td class="num" id="LN3450">3450</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3451"><td class="num" id="LN3451">3451</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="3452"><td class="num" id="LN3452">3452</td><td class="line">show_notebook_popup_menu (GtkNotebook *notebook,</td></tr>
+<tr class="codeline" data-linenumber="3453"><td class="num" id="LN3453">3453</td><td class="line"> PlumaWindow *window,</td></tr>
+<tr class="codeline" data-linenumber="3454"><td class="num" id="LN3454">3454</td><td class="line"> GdkEventButton *event)</td></tr>
+<tr class="codeline" data-linenumber="3455"><td class="num" id="LN3455">3455</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3456"><td class="num" id="LN3456">3456</td><td class="line"> GtkWidget *menu;</td></tr>
+<tr class="codeline" data-linenumber="3457"><td class="num" id="LN3457">3457</td><td class="line"><span class='comment'>// GtkAction *action;</span></td></tr>
+<tr class="codeline" data-linenumber="3458"><td class="num" id="LN3458">3458</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3459"><td class="num" id="LN3459">3459</td><td class="line"> menu = gtk_ui_manager_get_widget (window-&gt;priv-&gt;manager, <span class='string_literal'>"/NotebookPopup"</span>);</td></tr>
+<tr class="codeline" data-linenumber="3460"><td class="num" id="LN3460">3460</td><td class="line"> <span class='macro'>g_return_val_if_fail (menu != NULL, FALSE)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_79<br>; if (menu != ((void*)0)) _g_boolean_var_79 = 1; else _g_boolean_var_79<br> = 0; _g_boolean_var_79; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "menu != NULL"); return<br> ((0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3461"><td class="num" id="LN3461">3461</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3462"><td class="num" id="LN3462">3462</td><td class="line"><span class='comment'>// CHECK do we need this?</span></td></tr>
+<tr class="codeline" data-linenumber="3463"><td class="num" id="LN3463">3463</td><td class="line"><span class='directive'>#if 0</span></td></tr>
+<tr class="codeline" data-linenumber="3464"><td class="num" id="LN3464">3464</td><td class="line"> <span class='comment'>/* allow extensions to sync when showing the popup */</span></td></tr>
+<tr class="codeline" data-linenumber="3465"><td class="num" id="LN3465">3465</td><td class="line"> action = gtk_action_group_get_action (window-&gt;priv-&gt;action_group,</td></tr>
+<tr class="codeline" data-linenumber="3466"><td class="num" id="LN3466">3466</td><td class="line"> <span class='string_literal'>"NotebookPopupAction"</span>);</td></tr>
+<tr class="codeline" data-linenumber="3467"><td class="num" id="LN3467">3467</td><td class="line"> <span class='macro'>g_return_val_if_fail (action != NULL, FALSE)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_80<br>; if (action != ((void*)0)) _g_boolean_var_80 = 1; else _g_boolean_var_80<br> = 0; _g_boolean_var_80; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "action != NULL")<br>; return ((0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3468"><td class="num" id="LN3468">3468</td><td class="line"> gtk_action_activate (action);</td></tr>
+<tr class="codeline" data-linenumber="3469"><td class="num" id="LN3469">3469</td><td class="line"><span class='directive'>#endif</span></td></tr>
+<tr class="codeline" data-linenumber="3470"><td class="num" id="LN3470">3470</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3471"><td class="num" id="LN3471">3471</td><td class="line"> GtkWidget *tab;</td></tr>
+<tr class="codeline" data-linenumber="3472"><td class="num" id="LN3472">3472</td><td class="line"> GtkWidget *tab_label;</td></tr>
+<tr class="codeline" data-linenumber="3473"><td class="num" id="LN3473">3473</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3474"><td class="num" id="LN3474">3474</td><td class="line"> tab = <span class='macro'>GTK_WIDGET (pluma_window_get_active_tab (window))<span class='macro_popup'>((((GtkWidget*) (void *) ((pluma_window_get_active_tab (window<br>))))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3475"><td class="num" id="LN3475">3475</td><td class="line"> <span class='macro'>g_return_val_if_fail (tab != NULL, FALSE)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_81<br>; if (tab != ((void*)0)) _g_boolean_var_81 = 1; else _g_boolean_var_81<br> = 0; _g_boolean_var_81; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "tab != NULL"); return<br> ((0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3476"><td class="num" id="LN3476">3476</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3477"><td class="num" id="LN3477">3477</td><td class="line"> tab_label = gtk_notebook_get_tab_label (notebook, tab);</td></tr>
+<tr class="codeline" data-linenumber="3478"><td class="num" id="LN3478">3478</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3479"><td class="num" id="LN3479">3479</td><td class="line"> gtk_menu_popup_at_widget (<span class='macro'>GTK_MENU (menu)<span class='macro_popup'>((((GtkMenu*) (void *) ((menu)))))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="3480"><td class="num" id="LN3480">3480</td><td class="line"> tab_label,</td></tr>
+<tr class="codeline" data-linenumber="3481"><td class="num" id="LN3481">3481</td><td class="line"> GDK_GRAVITY_SOUTH_WEST,</td></tr>
+<tr class="codeline" data-linenumber="3482"><td class="num" id="LN3482">3482</td><td class="line"> GDK_GRAVITY_NORTH_WEST,</td></tr>
+<tr class="codeline" data-linenumber="3483"><td class="num" id="LN3483">3483</td><td class="line"> (<span class='keyword'>const</span> GdkEvent*) event);</td></tr>
+<tr class="codeline" data-linenumber="3484"><td class="num" id="LN3484">3484</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3485"><td class="num" id="LN3485">3485</td><td class="line"> gtk_menu_shell_select_first (<span class='macro'>GTK_MENU_SHELL (menu)<span class='macro_popup'>((((GtkMenuShell*) (void *) ((menu)))))</span></span>, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3486"><td class="num" id="LN3486">3486</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3487"><td class="num" id="LN3487">3487</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3488"><td class="num" id="LN3488">3488</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3489"><td class="num" id="LN3489">3489</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3490"><td class="num" id="LN3490">3490</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="3491"><td class="num" id="LN3491">3491</td><td class="line">notebook_button_press_event (GtkNotebook *notebook,</td></tr>
+<tr class="codeline" data-linenumber="3492"><td class="num" id="LN3492">3492</td><td class="line"> GdkEventButton *event,</td></tr>
+<tr class="codeline" data-linenumber="3493"><td class="num" id="LN3493">3493</td><td class="line"> PlumaWindow *window)</td></tr>
+<tr class="codeline" data-linenumber="3494"><td class="num" id="LN3494">3494</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3495"><td class="num" id="LN3495">3495</td><td class="line"> <span class='keyword'>if</span> (event-&gt;type == GDK_BUTTON_PRESS)</td></tr>
+<tr class="codeline" data-linenumber="3496"><td class="num" id="LN3496">3496</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="3497"><td class="num" id="LN3497">3497</td><td class="line"> <span class='keyword'>if</span> (event-&gt;button == 3)</td></tr>
+<tr class="codeline" data-linenumber="3498"><td class="num" id="LN3498">3498</td><td class="line"> <span class='keyword'>return</span> show_notebook_popup_menu (notebook, window, event);</td></tr>
+<tr class="codeline" data-linenumber="3499"><td class="num" id="LN3499">3499</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3500"><td class="num" id="LN3500">3500</td><td class="line"> <span class='keyword'>else</span> <span class='keyword'>if</span> (event-&gt;button == 2)</td></tr>
+<tr class="codeline" data-linenumber="3501"><td class="num" id="LN3501">3501</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="3502"><td class="num" id="LN3502">3502</td><td class="line"> PlumaTab *tab;</td></tr>
+<tr class="codeline" data-linenumber="3503"><td class="num" id="LN3503">3503</td><td class="line"> tab = pluma_window_get_active_tab (window);</td></tr>
+<tr class="codeline" data-linenumber="3504"><td class="num" id="LN3504">3504</td><td class="line"> notebook_tab_close_request (<span class='macro'>PLUMA_NOTEBOOK (notebook)<span class='macro_popup'>((((PlumaNotebook*) (void *) ((notebook)))))</span></span>, tab, <span class='macro'>GTK_WINDOW (window)<span class='macro_popup'>((((GtkWindow*) (void *) ((window)))))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3505"><td class="num" id="LN3505">3505</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3506"><td class="num" id="LN3506">3506</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3507"><td class="num" id="LN3507">3507</td><td class="line"> <span class='keyword'>else</span> <span class='keyword'>if</span> ((event-&gt;type == GDK_2BUTTON_PRESS) &amp;&amp; (event-&gt;button == 1))</td></tr>
+<tr class="codeline" data-linenumber="3508"><td class="num" id="LN3508">3508</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="3509"><td class="num" id="LN3509">3509</td><td class="line"> pluma_window_create_tab (window, <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3510"><td class="num" id="LN3510">3510</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3511"><td class="num" id="LN3511">3511</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3512"><td class="num" id="LN3512">3512</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3513"><td class="num" id="LN3513">3513</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3514"><td class="num" id="LN3514">3514</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3515"><td class="num" id="LN3515">3515</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="3516"><td class="num" id="LN3516">3516</td><td class="line">notebook_scroll_event (GtkNotebook *notebook,</td></tr>
+<tr class="codeline" data-linenumber="3517"><td class="num" id="LN3517">3517</td><td class="line"> GdkEventScroll *event,</td></tr>
+<tr class="codeline" data-linenumber="3518"><td class="num" id="LN3518">3518</td><td class="line"> PlumaWindow *window)</td></tr>
+<tr class="codeline" data-linenumber="3519"><td class="num" id="LN3519">3519</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3520"><td class="num" id="LN3520">3520</td><td class="line"> <span class='keyword'>if</span> (event-&gt;direction == GDK_SCROLL_UP || event-&gt;direction == GDK_SCROLL_LEFT)</td></tr>
+<tr class="codeline" data-linenumber="3521"><td class="num" id="LN3521">3521</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="3522"><td class="num" id="LN3522">3522</td><td class="line"> gtk_notebook_prev_page (notebook);</td></tr>
+<tr class="codeline" data-linenumber="3523"><td class="num" id="LN3523">3523</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3524"><td class="num" id="LN3524">3524</td><td class="line"> <span class='keyword'>else</span> <span class='keyword'>if</span> (event-&gt;direction == GDK_SCROLL_DOWN || event-&gt;direction == GDK_SCROLL_RIGHT)</td></tr>
+<tr class="codeline" data-linenumber="3525"><td class="num" id="LN3525">3525</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="3526"><td class="num" id="LN3526">3526</td><td class="line"> gtk_notebook_next_page (notebook);</td></tr>
+<tr class="codeline" data-linenumber="3527"><td class="num" id="LN3527">3527</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3528"><td class="num" id="LN3528">3528</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3529"><td class="num" id="LN3529">3529</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3530"><td class="num" id="LN3530">3530</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3531"><td class="num" id="LN3531">3531</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3532"><td class="num" id="LN3532">3532</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="3533"><td class="num" id="LN3533">3533</td><td class="line">notebook_popup_menu (GtkNotebook *notebook,</td></tr>
+<tr class="codeline" data-linenumber="3534"><td class="num" id="LN3534">3534</td><td class="line"> PlumaWindow *window)</td></tr>
+<tr class="codeline" data-linenumber="3535"><td class="num" id="LN3535">3535</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3536"><td class="num" id="LN3536">3536</td><td class="line"> <span class='comment'>/* Only respond if the notebook is the actual focus */</span></td></tr>
+<tr class="codeline" data-linenumber="3537"><td class="num" id="LN3537">3537</td><td class="line"> <span class='keyword'>if</span> (<span class='macro'>PLUMA_IS_NOTEBOOK (gtk_window_get_focus (GTK_WINDOW (window)))<span class='macro_popup'>(((__extension__ ({ GTypeInstance *__inst = (GTypeInstance*) (<br>(gtk_window_get_focus (((((GtkWindow*) (void *) ((window)))))<br>))); GType __t = ((pluma_notebook_get_type ())); gboolean __r<br>; if (!__inst) __r = (0); else if (__inst-&gt;g_class &amp;&amp;<br> __inst-&gt;g_class-&gt;g_type == __t) __r = (!(0)); else __r<br> = g_type_check_instance_is_a (__inst, __t); __r; }))))</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="3538"><td class="num" id="LN3538">3538</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="3539"><td class="num" id="LN3539">3539</td><td class="line"> <span class='keyword'>return</span> show_notebook_popup_menu (notebook, window, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3540"><td class="num" id="LN3540">3540</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3541"><td class="num" id="LN3541">3541</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3542"><td class="num" id="LN3542">3542</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3543"><td class="num" id="LN3543">3543</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3544"><td class="num" id="LN3544">3544</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3545"><td class="num" id="LN3545">3545</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="3546"><td class="num" id="LN3546">3546</td><td class="line">side_panel_size_allocate (GtkWidget *widget,</td></tr>
+<tr class="codeline" data-linenumber="3547"><td class="num" id="LN3547">3547</td><td class="line"> GtkAllocation *allocation,</td></tr>
+<tr class="codeline" data-linenumber="3548"><td class="num" id="LN3548">3548</td><td class="line"> PlumaWindow *window)</td></tr>
+<tr class="codeline" data-linenumber="3549"><td class="num" id="LN3549">3549</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3550"><td class="num" id="LN3550">3550</td><td class="line"> window-&gt;priv-&gt;side_panel_size = allocation-&gt;width;</td></tr>
+<tr class="codeline" data-linenumber="3551"><td class="num" id="LN3551">3551</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3552"><td class="num" id="LN3552">3552</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3553"><td class="num" id="LN3553">3553</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="3554"><td class="num" id="LN3554">3554</td><td class="line">bottom_panel_size_allocate (GtkWidget *widget,</td></tr>
+<tr class="codeline" data-linenumber="3555"><td class="num" id="LN3555">3555</td><td class="line"> GtkAllocation *allocation,</td></tr>
+<tr class="codeline" data-linenumber="3556"><td class="num" id="LN3556">3556</td><td class="line"> PlumaWindow *window)</td></tr>
+<tr class="codeline" data-linenumber="3557"><td class="num" id="LN3557">3557</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3558"><td class="num" id="LN3558">3558</td><td class="line"> window-&gt;priv-&gt;bottom_panel_size = allocation-&gt;height;</td></tr>
+<tr class="codeline" data-linenumber="3559"><td class="num" id="LN3559">3559</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3560"><td class="num" id="LN3560">3560</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3561"><td class="num" id="LN3561">3561</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="3562"><td class="num" id="LN3562">3562</td><td class="line">hpaned_restore_position (GtkWidget *widget,</td></tr>
+<tr class="codeline" data-linenumber="3563"><td class="num" id="LN3563">3563</td><td class="line"> PlumaWindow *window)</td></tr>
+<tr class="codeline" data-linenumber="3564"><td class="num" id="LN3564">3564</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3565"><td class="num" id="LN3565">3565</td><td class="line"> gint pos;</td></tr>
+<tr class="codeline" data-linenumber="3566"><td class="num" id="LN3566">3566</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3567"><td class="num" id="LN3567">3567</td><td class="line"> pluma_debug_message (<span class='macro'>DEBUG_WINDOW<span class='macro_popup'>PLUMA_DEBUG_WINDOW, "pluma-window.c", 3567, ((const char*) (__func__<br>))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="3568"><td class="num" id="LN3568">3568</td><td class="line"> <span class='string_literal'>"Restoring hpaned position: side panel size %d"</span>,</td></tr>
+<tr class="codeline" data-linenumber="3569"><td class="num" id="LN3569">3569</td><td class="line"> window-&gt;priv-&gt;side_panel_size);</td></tr>
+<tr class="codeline" data-linenumber="3570"><td class="num" id="LN3570">3570</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3571"><td class="num" id="LN3571">3571</td><td class="line"> pos = <span class='macro'>MAX (100, window-&gt;priv-&gt;side_panel_size)<span class='macro_popup'>(((100) &gt; (window-&gt;priv-&gt;side_panel_size)) ? (100) :<br> (window-&gt;priv-&gt;side_panel_size))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3572"><td class="num" id="LN3572">3572</td><td class="line"> gtk_paned_set_position (<span class='macro'>GTK_PANED (window-&gt;priv-&gt;hpaned)<span class='macro_popup'>((((GtkPaned*) (void *) ((window-&gt;priv-&gt;hpaned)))))</span></span>, pos);</td></tr>
+<tr class="codeline" data-linenumber="3573"><td class="num" id="LN3573">3573</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3574"><td class="num" id="LN3574">3574</td><td class="line"> <span class='comment'>/* start monitoring the size */</span></td></tr>
+<tr class="codeline" data-linenumber="3575"><td class="num" id="LN3575">3575</td><td class="line"> <span class='macro'>g_signal_connect (window-&gt;priv-&gt;side_panel,<span class='macro_popup'>g_signal_connect_data ((window-&gt;priv-&gt;side_panel), ("size-allocate"<br>), (((GCallback) (side_panel_size_allocate))), (window), ((void<br>*)0), (GConnectFlags) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="3576"><td class="num" id="LN3576">3576</td><td class="line"> <span class='string_literal'><span class='macro'>"size-allocate"</span>,<span class='macro_popup'>g_signal_connect_data ((window-&gt;priv-&gt;side_panel), ("size-allocate"<br>), (((GCallback) (side_panel_size_allocate))), (window), ((void<br>*)0), (GConnectFlags) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="3577"><td class="num" id="LN3577">3577</td><td class="line"> <span class='macro'>G_CALLBACK (side_panel_size_allocate),<span class='macro_popup'>g_signal_connect_data ((window-&gt;priv-&gt;side_panel), ("size-allocate"<br>), (((GCallback) (side_panel_size_allocate))), (window), ((void<br>*)0), (GConnectFlags) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="3578"><td class="num" id="LN3578">3578</td><td class="line"> <span class='macro'>window)<span class='macro_popup'>g_signal_connect_data ((window-&gt;priv-&gt;side_panel), ("size-allocate"<br>), (((GCallback) (side_panel_size_allocate))), (window), ((void<br>*)0), (GConnectFlags) 0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3579"><td class="num" id="LN3579">3579</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3580"><td class="num" id="LN3580">3580</td><td class="line"> <span class='comment'>/* run this only once */</span></td></tr>
+<tr class="codeline" data-linenumber="3581"><td class="num" id="LN3581">3581</td><td class="line"> <span class='macro'>g_signal_handlers_disconnect_by_func (widget, hpaned_restore_position, window)<span class='macro_popup'>g_signal_handlers_disconnect_matched ((widget), (GSignalMatchType<br>) (G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA), 0, 0, ((void*)<br>0), (hpaned_restore_position), (window))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3582"><td class="num" id="LN3582">3582</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3583"><td class="num" id="LN3583">3583</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3584"><td class="num" id="LN3584">3584</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="3585"><td class="num" id="LN3585">3585</td><td class="line">vpaned_restore_position (GtkWidget *widget,</td></tr>
+<tr class="codeline" data-linenumber="3586"><td class="num" id="LN3586">3586</td><td class="line"> PlumaWindow *window)</td></tr>
+<tr class="codeline" data-linenumber="3587"><td class="num" id="LN3587">3587</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3588"><td class="num" id="LN3588">3588</td><td class="line"> GtkAllocation allocation;</td></tr>
+<tr class="codeline" data-linenumber="3589"><td class="num" id="LN3589">3589</td><td class="line"> gint pos;</td></tr>
+<tr class="codeline" data-linenumber="3590"><td class="num" id="LN3590">3590</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3591"><td class="num" id="LN3591">3591</td><td class="line"> gtk_widget_get_allocation (widget, &amp;allocation);</td></tr>
+<tr class="codeline" data-linenumber="3592"><td class="num" id="LN3592">3592</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3593"><td class="num" id="LN3593">3593</td><td class="line"> pluma_debug_message (<span class='macro'>DEBUG_WINDOW<span class='macro_popup'>PLUMA_DEBUG_WINDOW, "pluma-window.c", 3593, ((const char*) (__func__<br>))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="3594"><td class="num" id="LN3594">3594</td><td class="line"> <span class='string_literal'>"Restoring vpaned position: bottom panel size %d"</span>,</td></tr>
+<tr class="codeline" data-linenumber="3595"><td class="num" id="LN3595">3595</td><td class="line"> window-&gt;priv-&gt;bottom_panel_size);</td></tr>
+<tr class="codeline" data-linenumber="3596"><td class="num" id="LN3596">3596</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3597"><td class="num" id="LN3597">3597</td><td class="line"> pos = allocation.height - <span class='macro'>MAX (50, window-&gt;priv-&gt;bottom_panel_size)<span class='macro_popup'>(((50) &gt; (window-&gt;priv-&gt;bottom_panel_size)) ? (50) :<br> (window-&gt;priv-&gt;bottom_panel_size))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3598"><td class="num" id="LN3598">3598</td><td class="line"> gtk_paned_set_position (<span class='macro'>GTK_PANED (window-&gt;priv-&gt;vpaned)<span class='macro_popup'>((((GtkPaned*) (void *) ((window-&gt;priv-&gt;vpaned)))))</span></span>, pos);</td></tr>
+<tr class="codeline" data-linenumber="3599"><td class="num" id="LN3599">3599</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3600"><td class="num" id="LN3600">3600</td><td class="line"> <span class='comment'>/* start monitoring the size */</span></td></tr>
+<tr class="codeline" data-linenumber="3601"><td class="num" id="LN3601">3601</td><td class="line"> <span class='macro'>g_signal_connect (window-&gt;priv-&gt;bottom_panel,<span class='macro_popup'>g_signal_connect_data ((window-&gt;priv-&gt;bottom_panel), ("size-allocate"<br>), (((GCallback) (bottom_panel_size_allocate))), (window), ((<br>void*)0), (GConnectFlags) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="3602"><td class="num" id="LN3602">3602</td><td class="line"> <span class='string_literal'><span class='macro'>"size-allocate"</span>,<span class='macro_popup'>g_signal_connect_data ((window-&gt;priv-&gt;bottom_panel), ("size-allocate"<br>), (((GCallback) (bottom_panel_size_allocate))), (window), ((<br>void*)0), (GConnectFlags) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="3603"><td class="num" id="LN3603">3603</td><td class="line"> <span class='macro'>G_CALLBACK (bottom_panel_size_allocate),<span class='macro_popup'>g_signal_connect_data ((window-&gt;priv-&gt;bottom_panel), ("size-allocate"<br>), (((GCallback) (bottom_panel_size_allocate))), (window), ((<br>void*)0), (GConnectFlags) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="3604"><td class="num" id="LN3604">3604</td><td class="line"> <span class='macro'>window)<span class='macro_popup'>g_signal_connect_data ((window-&gt;priv-&gt;bottom_panel), ("size-allocate"<br>), (((GCallback) (bottom_panel_size_allocate))), (window), ((<br>void*)0), (GConnectFlags) 0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3605"><td class="num" id="LN3605">3605</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3606"><td class="num" id="LN3606">3606</td><td class="line"> <span class='comment'>/* run this only once */</span></td></tr>
+<tr class="codeline" data-linenumber="3607"><td class="num" id="LN3607">3607</td><td class="line"> <span class='macro'>g_signal_handlers_disconnect_by_func (widget, vpaned_restore_position, window)<span class='macro_popup'>g_signal_handlers_disconnect_matched ((widget), (GSignalMatchType<br>) (G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA), 0, 0, ((void*)<br>0), (vpaned_restore_position), (window))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3608"><td class="num" id="LN3608">3608</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3609"><td class="num" id="LN3609">3609</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3610"><td class="num" id="LN3610">3610</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="3611"><td class="num" id="LN3611">3611</td><td class="line">side_panel_visibility_changed (GtkWidget *side_panel,</td></tr>
+<tr class="codeline" data-linenumber="3612"><td class="num" id="LN3612">3612</td><td class="line"> PlumaWindow *window)</td></tr>
+<tr class="codeline" data-linenumber="3613"><td class="num" id="LN3613">3613</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3614"><td class="num" id="LN3614">3614</td><td class="line"> gboolean visible;</td></tr>
+<tr class="codeline" data-linenumber="3615"><td class="num" id="LN3615">3615</td><td class="line"> GtkAction *action;</td></tr>
+<tr class="codeline" data-linenumber="3616"><td class="num" id="LN3616">3616</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3617"><td class="num" id="LN3617">3617</td><td class="line"> visible = gtk_widget_get_visible (side_panel);</td></tr>
+<tr class="codeline" data-linenumber="3618"><td class="num" id="LN3618">3618</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3619"><td class="num" id="LN3619">3619</td><td class="line"> <span class='keyword'>if</span> (!g_settings_get_boolean (window-&gt;priv-&gt;editor_settings, <span class='string_literal'>"show-tabs-with-side-pane"</span>))</td></tr>
+<tr class="codeline" data-linenumber="3620"><td class="num" id="LN3620">3620</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="3621"><td class="num" id="LN3621">3621</td><td class="line"> <span class='keyword'>if</span> (visible)</td></tr>
+<tr class="codeline" data-linenumber="3622"><td class="num" id="LN3622">3622</td><td class="line"> gtk_notebook_set_show_tabs (<span class='macro'>GTK_NOTEBOOK (window-&gt;priv-&gt;notebook)<span class='macro_popup'>((((GtkNotebook*) (void *) ((window-&gt;priv-&gt;notebook))))<br>)</span></span>, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3623"><td class="num" id="LN3623">3623</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="3624"><td class="num" id="LN3624">3624</td><td class="line"> gtk_notebook_set_show_tabs (<span class='macro'>GTK_NOTEBOOK (window-&gt;priv-&gt;notebook)<span class='macro_popup'>((((GtkNotebook*) (void *) ((window-&gt;priv-&gt;notebook))))<br>)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="3625"><td class="num" id="LN3625">3625</td><td class="line"> g_settings_get_boolean (window-&gt;priv-&gt;editor_settings, <span class='string_literal'>"show-single-tab"</span>) ||</td></tr>
+<tr class="codeline" data-linenumber="3626"><td class="num" id="LN3626">3626</td><td class="line"> (gtk_notebook_get_n_pages (<span class='macro'>GTK_NOTEBOOK (window-&gt;priv-&gt;notebook)<span class='macro_popup'>((((GtkNotebook*) (void *) ((window-&gt;priv-&gt;notebook))))<br>)</span></span>) &gt; 1));</td></tr>
+<tr class="codeline" data-linenumber="3627"><td class="num" id="LN3627">3627</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3628"><td class="num" id="LN3628">3628</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="3629"><td class="num" id="LN3629">3629</td><td class="line"> gtk_notebook_set_show_tabs (<span class='macro'>GTK_NOTEBOOK (window-&gt;priv-&gt;notebook)<span class='macro_popup'>((((GtkNotebook*) (void *) ((window-&gt;priv-&gt;notebook))))<br>)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="3630"><td class="num" id="LN3630">3630</td><td class="line"> g_settings_get_boolean (window-&gt;priv-&gt;editor_settings, <span class='string_literal'>"show-single-tab"</span>) ||</td></tr>
+<tr class="codeline" data-linenumber="3631"><td class="num" id="LN3631">3631</td><td class="line"> (gtk_notebook_get_n_pages (<span class='macro'>GTK_NOTEBOOK (window-&gt;priv-&gt;notebook)<span class='macro_popup'>((((GtkNotebook*) (void *) ((window-&gt;priv-&gt;notebook))))<br>)</span></span>) &gt; 1));</td></tr>
+<tr class="codeline" data-linenumber="3632"><td class="num" id="LN3632">3632</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3633"><td class="num" id="LN3633">3633</td><td class="line"> g_settings_set_boolean (window-&gt;priv-&gt;editor_settings,</td></tr>
+<tr class="codeline" data-linenumber="3634"><td class="num" id="LN3634">3634</td><td class="line"> <span class='macro'>PLUMA_SETTINGS_SIDE_PANE_VISIBLE<span class='macro_popup'>"side-pane-visible"</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="3635"><td class="num" id="LN3635">3635</td><td class="line"> visible);</td></tr>
+<tr class="codeline" data-linenumber="3636"><td class="num" id="LN3636">3636</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3637"><td class="num" id="LN3637">3637</td><td class="line"> action = gtk_action_group_get_action (window-&gt;priv-&gt;panes_action_group,</td></tr>
+<tr class="codeline" data-linenumber="3638"><td class="num" id="LN3638">3638</td><td class="line"> <span class='string_literal'>"ViewSidePane"</span>);</td></tr>
+<tr class="codeline" data-linenumber="3639"><td class="num" id="LN3639">3639</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3640"><td class="num" id="LN3640">3640</td><td class="line"> <span class='keyword'>if</span> (gtk_toggle_action_get_active (<span class='macro'>GTK_TOGGLE_ACTION (action)<span class='macro_popup'>((((GtkToggleAction*) (void *) ((action)))))</span></span>) != visible)</td></tr>
+<tr class="codeline" data-linenumber="3641"><td class="num" id="LN3641">3641</td><td class="line"> gtk_toggle_action_set_active (<span class='macro'>GTK_TOGGLE_ACTION (action)<span class='macro_popup'>((((GtkToggleAction*) (void *) ((action)))))</span></span>, visible);</td></tr>
+<tr class="codeline" data-linenumber="3642"><td class="num" id="LN3642">3642</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3643"><td class="num" id="LN3643">3643</td><td class="line"> <span class='comment'>/* focus the document */</span></td></tr>
+<tr class="codeline" data-linenumber="3644"><td class="num" id="LN3644">3644</td><td class="line"> <span class='keyword'>if</span> (!visible &amp;&amp; window-&gt;priv-&gt;active_tab != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="3645"><td class="num" id="LN3645">3645</td><td class="line"> gtk_widget_grab_focus (<span class='macro'>GTK_WIDGET (pluma_tab_get_view (PLUMA_TAB (window-&gt;priv-&gt;active_tab)))<span class='macro_popup'>((((GtkWidget*) (void *) ((pluma_tab_get_view (((((PlumaTab*)<br> (void *) ((window-&gt;priv-&gt;active_tab)))))))))))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3646"><td class="num" id="LN3646">3646</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3647"><td class="num" id="LN3647">3647</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3648"><td class="num" id="LN3648">3648</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="3649"><td class="num" id="LN3649">3649</td><td class="line">create_side_panel (PlumaWindow *window)</td></tr>
+<tr class="codeline" data-linenumber="3650"><td class="num" id="LN3650">3650</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3651"><td class="num" id="LN3651">3651</td><td class="line"> GtkWidget *documents_panel;</td></tr>
+<tr class="codeline" data-linenumber="3652"><td class="num" id="LN3652">3652</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3653"><td class="num" id="LN3653">3653</td><td class="line"> pluma_debug (<span class='macro'>DEBUG_WINDOW<span class='macro_popup'>PLUMA_DEBUG_WINDOW, "pluma-window.c", 3653, ((const char*) (__func__<br>))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3654"><td class="num" id="LN3654">3654</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3655"><td class="num" id="LN3655">3655</td><td class="line"> window-&gt;priv-&gt;side_panel = pluma_panel_new (GTK_ORIENTATION_VERTICAL);</td></tr>
+<tr class="codeline" data-linenumber="3656"><td class="num" id="LN3656">3656</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3657"><td class="num" id="LN3657">3657</td><td class="line"> gtk_paned_pack1 (<span class='macro'>GTK_PANED (window-&gt;priv-&gt;hpaned)<span class='macro_popup'>((((GtkPaned*) (void *) ((window-&gt;priv-&gt;hpaned)))))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="3658"><td class="num" id="LN3658">3658</td><td class="line"> window-&gt;priv-&gt;side_panel,</td></tr>
+<tr class="codeline" data-linenumber="3659"><td class="num" id="LN3659">3659</td><td class="line"> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="3660"><td class="num" id="LN3660">3660</td><td class="line"> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3661"><td class="num" id="LN3661">3661</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3662"><td class="num" id="LN3662">3662</td><td class="line"> <span class='macro'>g_signal_connect_after (window-&gt;priv-&gt;side_panel,<span class='macro_popup'>g_signal_connect_data ((window-&gt;priv-&gt;side_panel), ("show"<br>), (((GCallback) (side_panel_visibility_changed))), (window),<br> ((void*)0), G_CONNECT_AFTER)</span></span></td></tr>
+<tr class="codeline" data-linenumber="3663"><td class="num" id="LN3663">3663</td><td class="line"> <span class='string_literal'><span class='macro'>"show"</span>,<span class='macro_popup'>g_signal_connect_data ((window-&gt;priv-&gt;side_panel), ("show"<br>), (((GCallback) (side_panel_visibility_changed))), (window),<br> ((void*)0), G_CONNECT_AFTER)</span></span></td></tr>
+<tr class="codeline" data-linenumber="3664"><td class="num" id="LN3664">3664</td><td class="line"> <span class='macro'>G_CALLBACK (side_panel_visibility_changed),<span class='macro_popup'>g_signal_connect_data ((window-&gt;priv-&gt;side_panel), ("show"<br>), (((GCallback) (side_panel_visibility_changed))), (window),<br> ((void*)0), G_CONNECT_AFTER)</span></span></td></tr>
+<tr class="codeline" data-linenumber="3665"><td class="num" id="LN3665">3665</td><td class="line"> <span class='macro'>window)<span class='macro_popup'>g_signal_connect_data ((window-&gt;priv-&gt;side_panel), ("show"<br>), (((GCallback) (side_panel_visibility_changed))), (window),<br> ((void*)0), G_CONNECT_AFTER)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3666"><td class="num" id="LN3666">3666</td><td class="line"> <span class='macro'>g_signal_connect_after (window-&gt;priv-&gt;side_panel,<span class='macro_popup'>g_signal_connect_data ((window-&gt;priv-&gt;side_panel), ("hide"<br>), (((GCallback) (side_panel_visibility_changed))), (window),<br> ((void*)0), G_CONNECT_AFTER)</span></span></td></tr>
+<tr class="codeline" data-linenumber="3667"><td class="num" id="LN3667">3667</td><td class="line"> <span class='string_literal'><span class='macro'>"hide"</span>,<span class='macro_popup'>g_signal_connect_data ((window-&gt;priv-&gt;side_panel), ("hide"<br>), (((GCallback) (side_panel_visibility_changed))), (window),<br> ((void*)0), G_CONNECT_AFTER)</span></span></td></tr>
+<tr class="codeline" data-linenumber="3668"><td class="num" id="LN3668">3668</td><td class="line"> <span class='macro'>G_CALLBACK (side_panel_visibility_changed),<span class='macro_popup'>g_signal_connect_data ((window-&gt;priv-&gt;side_panel), ("hide"<br>), (((GCallback) (side_panel_visibility_changed))), (window),<br> ((void*)0), G_CONNECT_AFTER)</span></span></td></tr>
+<tr class="codeline" data-linenumber="3669"><td class="num" id="LN3669">3669</td><td class="line"> <span class='macro'>window)<span class='macro_popup'>g_signal_connect_data ((window-&gt;priv-&gt;side_panel), ("hide"<br>), (((GCallback) (side_panel_visibility_changed))), (window),<br> ((void*)0), G_CONNECT_AFTER)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3670"><td class="num" id="LN3670">3670</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3671"><td class="num" id="LN3671">3671</td><td class="line"> documents_panel = pluma_documents_panel_new (window);</td></tr>
+<tr class="codeline" data-linenumber="3672"><td class="num" id="LN3672">3672</td><td class="line"> pluma_panel_add_item_with_icon (<span class='macro'>PLUMA_PANEL (window-&gt;priv-&gt;side_panel)<span class='macro_popup'>((((PlumaPanel*) (void *) ((window-&gt;priv-&gt;side_panel)))<br>))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="3673"><td class="num" id="LN3673">3673</td><td class="line"> documents_panel,</td></tr>
+<tr class="codeline" data-linenumber="3674"><td class="num" id="LN3674">3674</td><td class="line"> <span class='macro'>_(<span class='string_literal'>"Documents"</span>)<span class='macro_popup'>dcgettext (((void*)0), "Documents", 5)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="3675"><td class="num" id="LN3675">3675</td><td class="line"> <span class='string_literal'>"text-x-generic"</span>);</td></tr>
+<tr class="codeline" data-linenumber="3676"><td class="num" id="LN3676">3676</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3677"><td class="num" id="LN3677">3677</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3678"><td class="num" id="LN3678">3678</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="3679"><td class="num" id="LN3679">3679</td><td class="line">bottom_panel_visibility_changed (PlumaPanel *bottom_panel,</td></tr>
+<tr class="codeline" data-linenumber="3680"><td class="num" id="LN3680">3680</td><td class="line"> PlumaWindow *window)</td></tr>
+<tr class="codeline" data-linenumber="3681"><td class="num" id="LN3681">3681</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3682"><td class="num" id="LN3682">3682</td><td class="line"> gboolean visible;</td></tr>
+<tr class="codeline" data-linenumber="3683"><td class="num" id="LN3683">3683</td><td class="line"> GtkAction *action;</td></tr>
+<tr class="codeline" data-linenumber="3684"><td class="num" id="LN3684">3684</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3685"><td class="num" id="LN3685">3685</td><td class="line"> visible = gtk_widget_get_visible (<span class='macro'>GTK_WIDGET (bottom_panel)<span class='macro_popup'>((((GtkWidget*) (void *) ((bottom_panel)))))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3686"><td class="num" id="LN3686">3686</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3687"><td class="num" id="LN3687">3687</td><td class="line"> g_settings_set_boolean (window-&gt;priv-&gt;editor_settings,</td></tr>
+<tr class="codeline" data-linenumber="3688"><td class="num" id="LN3688">3688</td><td class="line"> <span class='macro'>PLUMA_SETTINGS_BOTTOM_PANE_VISIBLE<span class='macro_popup'>"bottom-panel-visible"</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="3689"><td class="num" id="LN3689">3689</td><td class="line"> visible);</td></tr>
+<tr class="codeline" data-linenumber="3690"><td class="num" id="LN3690">3690</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3691"><td class="num" id="LN3691">3691</td><td class="line"> action = gtk_action_group_get_action (window-&gt;priv-&gt;panes_action_group,</td></tr>
+<tr class="codeline" data-linenumber="3692"><td class="num" id="LN3692">3692</td><td class="line"> <span class='string_literal'>"ViewBottomPane"</span>);</td></tr>
+<tr class="codeline" data-linenumber="3693"><td class="num" id="LN3693">3693</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3694"><td class="num" id="LN3694">3694</td><td class="line"> <span class='keyword'>if</span> (gtk_toggle_action_get_active (<span class='macro'>GTK_TOGGLE_ACTION (action)<span class='macro_popup'>((((GtkToggleAction*) (void *) ((action)))))</span></span>) != visible)</td></tr>
+<tr class="codeline" data-linenumber="3695"><td class="num" id="LN3695">3695</td><td class="line"> gtk_toggle_action_set_active (<span class='macro'>GTK_TOGGLE_ACTION (action)<span class='macro_popup'>((((GtkToggleAction*) (void *) ((action)))))</span></span>, visible);</td></tr>
+<tr class="codeline" data-linenumber="3696"><td class="num" id="LN3696">3696</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3697"><td class="num" id="LN3697">3697</td><td class="line"> <span class='comment'>/* focus the document */</span></td></tr>
+<tr class="codeline" data-linenumber="3698"><td class="num" id="LN3698">3698</td><td class="line"> <span class='keyword'>if</span> (!visible &amp;&amp; window-&gt;priv-&gt;active_tab != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="3699"><td class="num" id="LN3699">3699</td><td class="line"> gtk_widget_grab_focus (<span class='macro'>GTK_WIDGET (pluma_tab_get_view (PLUMA_TAB (window-&gt;priv-&gt;active_tab)))<span class='macro_popup'>((((GtkWidget*) (void *) ((pluma_tab_get_view (((((PlumaTab*)<br> (void *) ((window-&gt;priv-&gt;active_tab)))))))))))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3700"><td class="num" id="LN3700">3700</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3701"><td class="num" id="LN3701">3701</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3702"><td class="num" id="LN3702">3702</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="3703"><td class="num" id="LN3703">3703</td><td class="line">bottom_panel_item_removed (PlumaPanel *panel,</td></tr>
+<tr class="codeline" data-linenumber="3704"><td class="num" id="LN3704">3704</td><td class="line"> GtkWidget *item,</td></tr>
+<tr class="codeline" data-linenumber="3705"><td class="num" id="LN3705">3705</td><td class="line"> PlumaWindow *window)</td></tr>
+<tr class="codeline" data-linenumber="3706"><td class="num" id="LN3706">3706</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3707"><td class="num" id="LN3707">3707</td><td class="line"> <span class='keyword'>if</span> (pluma_panel_get_n_items (panel) == 0)</td></tr>
+<tr class="codeline" data-linenumber="3708"><td class="num" id="LN3708">3708</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="3709"><td class="num" id="LN3709">3709</td><td class="line"> GtkAction *action;</td></tr>
+<tr class="codeline" data-linenumber="3710"><td class="num" id="LN3710">3710</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3711"><td class="num" id="LN3711">3711</td><td class="line"> gtk_widget_hide (<span class='macro'>GTK_WIDGET (panel)<span class='macro_popup'>((((GtkWidget*) (void *) ((panel)))))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3712"><td class="num" id="LN3712">3712</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3713"><td class="num" id="LN3713">3713</td><td class="line"> action = gtk_action_group_get_action (window-&gt;priv-&gt;panes_action_group,</td></tr>
+<tr class="codeline" data-linenumber="3714"><td class="num" id="LN3714">3714</td><td class="line"> <span class='string_literal'>"ViewBottomPane"</span>);</td></tr>
+<tr class="codeline" data-linenumber="3715"><td class="num" id="LN3715">3715</td><td class="line"> gtk_action_set_sensitive (action, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3716"><td class="num" id="LN3716">3716</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3717"><td class="num" id="LN3717">3717</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3718"><td class="num" id="LN3718">3718</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3719"><td class="num" id="LN3719">3719</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="3720"><td class="num" id="LN3720">3720</td><td class="line">bottom_panel_item_added (PlumaPanel *panel,</td></tr>
+<tr class="codeline" data-linenumber="3721"><td class="num" id="LN3721">3721</td><td class="line"> GtkWidget *item,</td></tr>
+<tr class="codeline" data-linenumber="3722"><td class="num" id="LN3722">3722</td><td class="line"> PlumaWindow *window)</td></tr>
+<tr class="codeline" data-linenumber="3723"><td class="num" id="LN3723">3723</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3724"><td class="num" id="LN3724">3724</td><td class="line"> <span class='comment'>/* if it's the first item added, set the menu item</span></td></tr>
+<tr class="codeline" data-linenumber="3725"><td class="num" id="LN3725">3725</td><td class="line"> <span class='comment'>* sensitive and if needed show the panel */</span></td></tr>
+<tr class="codeline" data-linenumber="3726"><td class="num" id="LN3726">3726</td><td class="line"> <span class='keyword'>if</span> (pluma_panel_get_n_items (panel) == 1)</td></tr>
+<tr class="codeline" data-linenumber="3727"><td class="num" id="LN3727">3727</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="3728"><td class="num" id="LN3728">3728</td><td class="line"> GtkAction *action;</td></tr>
+<tr class="codeline" data-linenumber="3729"><td class="num" id="LN3729">3729</td><td class="line"> gboolean show;</td></tr>
+<tr class="codeline" data-linenumber="3730"><td class="num" id="LN3730">3730</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3731"><td class="num" id="LN3731">3731</td><td class="line"> action = gtk_action_group_get_action (window-&gt;priv-&gt;panes_action_group,</td></tr>
+<tr class="codeline" data-linenumber="3732"><td class="num" id="LN3732">3732</td><td class="line"> <span class='string_literal'>"ViewBottomPane"</span>);</td></tr>
+<tr class="codeline" data-linenumber="3733"><td class="num" id="LN3733">3733</td><td class="line"> gtk_action_set_sensitive (action, <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3734"><td class="num" id="LN3734">3734</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3735"><td class="num" id="LN3735">3735</td><td class="line"> show = gtk_toggle_action_get_active (<span class='macro'>GTK_TOGGLE_ACTION (action)<span class='macro_popup'>((((GtkToggleAction*) (void *) ((action)))))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3736"><td class="num" id="LN3736">3736</td><td class="line"> <span class='keyword'>if</span> (show)</td></tr>
+<tr class="codeline" data-linenumber="3737"><td class="num" id="LN3737">3737</td><td class="line"> gtk_widget_show (<span class='macro'>GTK_WIDGET (panel)<span class='macro_popup'>((((GtkWidget*) (void *) ((panel)))))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3738"><td class="num" id="LN3738">3738</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3739"><td class="num" id="LN3739">3739</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3740"><td class="num" id="LN3740">3740</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3741"><td class="num" id="LN3741">3741</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="3742"><td class="num" id="LN3742">3742</td><td class="line">create_bottom_panel (PlumaWindow *window)</td></tr>
+<tr class="codeline" data-linenumber="3743"><td class="num" id="LN3743">3743</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3744"><td class="num" id="LN3744">3744</td><td class="line"> pluma_debug (<span class='macro'>DEBUG_WINDOW<span class='macro_popup'>PLUMA_DEBUG_WINDOW, "pluma-window.c", 3744, ((const char*) (__func__<br>))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3745"><td class="num" id="LN3745">3745</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3746"><td class="num" id="LN3746">3746</td><td class="line"> window-&gt;priv-&gt;bottom_panel = pluma_panel_new (GTK_ORIENTATION_HORIZONTAL);</td></tr>
+<tr class="codeline" data-linenumber="3747"><td class="num" id="LN3747">3747</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3748"><td class="num" id="LN3748">3748</td><td class="line"> gtk_paned_pack2 (<span class='macro'>GTK_PANED (window-&gt;priv-&gt;vpaned)<span class='macro_popup'>((((GtkPaned*) (void *) ((window-&gt;priv-&gt;vpaned)))))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="3749"><td class="num" id="LN3749">3749</td><td class="line"> window-&gt;priv-&gt;bottom_panel,</td></tr>
+<tr class="codeline" data-linenumber="3750"><td class="num" id="LN3750">3750</td><td class="line"> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="3751"><td class="num" id="LN3751">3751</td><td class="line"> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3752"><td class="num" id="LN3752">3752</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3753"><td class="num" id="LN3753">3753</td><td class="line"> <span class='macro'>g_signal_connect_after (window-&gt;priv-&gt;bottom_panel,<span class='macro_popup'>g_signal_connect_data ((window-&gt;priv-&gt;bottom_panel), ("show"<br>), (((GCallback) (bottom_panel_visibility_changed))), (window<br>), ((void*)0), G_CONNECT_AFTER)</span></span></td></tr>
+<tr class="codeline" data-linenumber="3754"><td class="num" id="LN3754">3754</td><td class="line"> <span class='string_literal'><span class='macro'>"show"</span>,<span class='macro_popup'>g_signal_connect_data ((window-&gt;priv-&gt;bottom_panel), ("show"<br>), (((GCallback) (bottom_panel_visibility_changed))), (window<br>), ((void*)0), G_CONNECT_AFTER)</span></span></td></tr>
+<tr class="codeline" data-linenumber="3755"><td class="num" id="LN3755">3755</td><td class="line"> <span class='macro'>G_CALLBACK (bottom_panel_visibility_changed),<span class='macro_popup'>g_signal_connect_data ((window-&gt;priv-&gt;bottom_panel), ("show"<br>), (((GCallback) (bottom_panel_visibility_changed))), (window<br>), ((void*)0), G_CONNECT_AFTER)</span></span></td></tr>
+<tr class="codeline" data-linenumber="3756"><td class="num" id="LN3756">3756</td><td class="line"> <span class='macro'>window)<span class='macro_popup'>g_signal_connect_data ((window-&gt;priv-&gt;bottom_panel), ("show"<br>), (((GCallback) (bottom_panel_visibility_changed))), (window<br>), ((void*)0), G_CONNECT_AFTER)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3757"><td class="num" id="LN3757">3757</td><td class="line"> <span class='macro'>g_signal_connect_after (window-&gt;priv-&gt;bottom_panel,<span class='macro_popup'>g_signal_connect_data ((window-&gt;priv-&gt;bottom_panel), ("hide"<br>), (((GCallback) (bottom_panel_visibility_changed))), (window<br>), ((void*)0), G_CONNECT_AFTER)</span></span></td></tr>
+<tr class="codeline" data-linenumber="3758"><td class="num" id="LN3758">3758</td><td class="line"> <span class='string_literal'><span class='macro'>"hide"</span>,<span class='macro_popup'>g_signal_connect_data ((window-&gt;priv-&gt;bottom_panel), ("hide"<br>), (((GCallback) (bottom_panel_visibility_changed))), (window<br>), ((void*)0), G_CONNECT_AFTER)</span></span></td></tr>
+<tr class="codeline" data-linenumber="3759"><td class="num" id="LN3759">3759</td><td class="line"> <span class='macro'>G_CALLBACK (bottom_panel_visibility_changed),<span class='macro_popup'>g_signal_connect_data ((window-&gt;priv-&gt;bottom_panel), ("hide"<br>), (((GCallback) (bottom_panel_visibility_changed))), (window<br>), ((void*)0), G_CONNECT_AFTER)</span></span></td></tr>
+<tr class="codeline" data-linenumber="3760"><td class="num" id="LN3760">3760</td><td class="line"> <span class='macro'>window)<span class='macro_popup'>g_signal_connect_data ((window-&gt;priv-&gt;bottom_panel), ("hide"<br>), (((GCallback) (bottom_panel_visibility_changed))), (window<br>), ((void*)0), G_CONNECT_AFTER)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3761"><td class="num" id="LN3761">3761</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3762"><td class="num" id="LN3762">3762</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3763"><td class="num" id="LN3763">3763</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="3764"><td class="num" id="LN3764">3764</td><td class="line">init_panels_visibility (PlumaWindow *window)</td></tr>
+<tr class="codeline" data-linenumber="3765"><td class="num" id="LN3765">3765</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3766"><td class="num" id="LN3766">3766</td><td class="line"> gint active_page;</td></tr>
+<tr class="codeline" data-linenumber="3767"><td class="num" id="LN3767">3767</td><td class="line"> gboolean side_pane_visible;</td></tr>
+<tr class="codeline" data-linenumber="3768"><td class="num" id="LN3768">3768</td><td class="line"> gboolean bottom_pane_visible;</td></tr>
+<tr class="codeline" data-linenumber="3769"><td class="num" id="LN3769">3769</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3770"><td class="num" id="LN3770">3770</td><td class="line"> pluma_debug (<span class='macro'>DEBUG_WINDOW<span class='macro_popup'>PLUMA_DEBUG_WINDOW, "pluma-window.c", 3770, ((const char*) (__func__<br>))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3771"><td class="num" id="LN3771">3771</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3772"><td class="num" id="LN3772">3772</td><td class="line"> <span class='comment'>/* side pane */</span></td></tr>
+<tr class="codeline" data-linenumber="3773"><td class="num" id="LN3773">3773</td><td class="line"> active_page = g_settings_get_int (window-&gt;priv-&gt;editor_settings,</td></tr>
+<tr class="codeline" data-linenumber="3774"><td class="num" id="LN3774">3774</td><td class="line"> <span class='macro'>PLUMA_SETTINGS_SIDE_PANEL_ACTIVE_PAGE<span class='macro_popup'>"side-panel-active-page"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3775"><td class="num" id="LN3775">3775</td><td class="line"> _pluma_panel_set_active_item_by_id (<span class='macro'>PLUMA_PANEL (window-&gt;priv-&gt;side_panel)<span class='macro_popup'>((((PlumaPanel*) (void *) ((window-&gt;priv-&gt;side_panel)))<br>))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="3776"><td class="num" id="LN3776">3776</td><td class="line"> active_page);</td></tr>
+<tr class="codeline" data-linenumber="3777"><td class="num" id="LN3777">3777</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3778"><td class="num" id="LN3778">3778</td><td class="line"> side_pane_visible = g_settings_get_boolean (window-&gt;priv-&gt;editor_settings,</td></tr>
+<tr class="codeline" data-linenumber="3779"><td class="num" id="LN3779">3779</td><td class="line"> <span class='macro'>PLUMA_SETTINGS_SIDE_PANE_VISIBLE<span class='macro_popup'>"side-pane-visible"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3780"><td class="num" id="LN3780">3780</td><td class="line"> bottom_pane_visible = g_settings_get_boolean (window-&gt;priv-&gt;editor_settings,</td></tr>
+<tr class="codeline" data-linenumber="3781"><td class="num" id="LN3781">3781</td><td class="line"> <span class='macro'>PLUMA_SETTINGS_BOTTOM_PANE_VISIBLE<span class='macro_popup'>"bottom-panel-visible"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3782"><td class="num" id="LN3782">3782</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3783"><td class="num" id="LN3783">3783</td><td class="line"> <span class='keyword'>if</span> (side_pane_visible)</td></tr>
+<tr class="codeline" data-linenumber="3784"><td class="num" id="LN3784">3784</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3785"><td class="num" id="LN3785">3785</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="3786"><td class="num" id="LN3786">3786</td><td class="line"> gtk_widget_show (window-&gt;priv-&gt;side_panel);</td></tr>
+<tr class="codeline" data-linenumber="3787"><td class="num" id="LN3787">3787</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3788"><td class="num" id="LN3788">3788</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3789"><td class="num" id="LN3789">3789</td><td class="line"> <span class='comment'>/* bottom pane, it can be empty */</span></td></tr>
+<tr class="codeline" data-linenumber="3790"><td class="num" id="LN3790">3790</td><td class="line"> <span class='keyword'>if</span> (pluma_panel_get_n_items (<span class='macro'>PLUMA_PANEL (window-&gt;priv-&gt;bottom_panel)<span class='macro_popup'>((((PlumaPanel*) (void *) ((window-&gt;priv-&gt;bottom_panel)<br>))))</span></span>) &gt; 0)</td></tr>
+<tr class="codeline" data-linenumber="3791"><td class="num" id="LN3791">3791</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="3792"><td class="num" id="LN3792">3792</td><td class="line"> active_page = g_settings_get_int (window-&gt;priv-&gt;editor_settings,</td></tr>
+<tr class="codeline" data-linenumber="3793"><td class="num" id="LN3793">3793</td><td class="line"> <span class='macro'>PLUMA_SETTINGS_BOTTOM_PANEL_ACTIVE_PAGE<span class='macro_popup'>"bottom-panel-active-page"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3794"><td class="num" id="LN3794">3794</td><td class="line"> _pluma_panel_set_active_item_by_id (<span class='macro'>PLUMA_PANEL (window-&gt;priv-&gt;bottom_panel)<span class='macro_popup'>((((PlumaPanel*) (void *) ((window-&gt;priv-&gt;bottom_panel)<br>))))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="3795"><td class="num" id="LN3795">3795</td><td class="line"> active_page);</td></tr>
+<tr class="codeline" data-linenumber="3796"><td class="num" id="LN3796">3796</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3797"><td class="num" id="LN3797">3797</td><td class="line"> <span class='keyword'>if</span> (bottom_pane_visible)</td></tr>
+<tr class="codeline" data-linenumber="3798"><td class="num" id="LN3798">3798</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="3799"><td class="num" id="LN3799">3799</td><td class="line"> gtk_widget_show (window-&gt;priv-&gt;bottom_panel);</td></tr>
+<tr class="codeline" data-linenumber="3800"><td class="num" id="LN3800">3800</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3801"><td class="num" id="LN3801">3801</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3802"><td class="num" id="LN3802">3802</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="3803"><td class="num" id="LN3803">3803</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="3804"><td class="num" id="LN3804">3804</td><td class="line"> GtkAction *action;</td></tr>
+<tr class="codeline" data-linenumber="3805"><td class="num" id="LN3805">3805</td><td class="line"> action = gtk_action_group_get_action (window-&gt;priv-&gt;panes_action_group,</td></tr>
+<tr class="codeline" data-linenumber="3806"><td class="num" id="LN3806">3806</td><td class="line"> <span class='string_literal'>"ViewBottomPane"</span>);</td></tr>
+<tr class="codeline" data-linenumber="3807"><td class="num" id="LN3807">3807</td><td class="line"> gtk_action_set_sensitive (action, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3808"><td class="num" id="LN3808">3808</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3809"><td class="num" id="LN3809">3809</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3810"><td class="num" id="LN3810">3810</td><td class="line"> <span class='comment'>/* start track sensitivity after the initial state is set */</span></td></tr>
+<tr class="codeline" data-linenumber="3811"><td class="num" id="LN3811">3811</td><td class="line"> window-&gt;priv-&gt;bottom_panel_item_removed_handler_id =</td></tr>
+<tr class="codeline" data-linenumber="3812"><td class="num" id="LN3812">3812</td><td class="line"> <span class='macro'>g_signal_connect (window-&gt;priv-&gt;bottom_panel,<span class='macro_popup'>g_signal_connect_data ((window-&gt;priv-&gt;bottom_panel), ("item_removed"<br>), (((GCallback) (bottom_panel_item_removed))), (window), ((void<br>*)0), (GConnectFlags) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="3813"><td class="num" id="LN3813">3813</td><td class="line"> <span class='string_literal'><span class='macro'>"item_removed"</span>,<span class='macro_popup'>g_signal_connect_data ((window-&gt;priv-&gt;bottom_panel), ("item_removed"<br>), (((GCallback) (bottom_panel_item_removed))), (window), ((void<br>*)0), (GConnectFlags) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="3814"><td class="num" id="LN3814">3814</td><td class="line"> <span class='macro'>G_CALLBACK (bottom_panel_item_removed),<span class='macro_popup'>g_signal_connect_data ((window-&gt;priv-&gt;bottom_panel), ("item_removed"<br>), (((GCallback) (bottom_panel_item_removed))), (window), ((void<br>*)0), (GConnectFlags) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="3815"><td class="num" id="LN3815">3815</td><td class="line"> <span class='macro'>window)<span class='macro_popup'>g_signal_connect_data ((window-&gt;priv-&gt;bottom_panel), ("item_removed"<br>), (((GCallback) (bottom_panel_item_removed))), (window), ((void<br>*)0), (GConnectFlags) 0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3816"><td class="num" id="LN3816">3816</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3817"><td class="num" id="LN3817">3817</td><td class="line"> <span class='macro'>g_signal_connect (window-&gt;priv-&gt;bottom_panel,<span class='macro_popup'>g_signal_connect_data ((window-&gt;priv-&gt;bottom_panel), ("item_added"<br>), (((GCallback) (bottom_panel_item_added))), (window), ((void<br>*)0), (GConnectFlags) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="3818"><td class="num" id="LN3818">3818</td><td class="line"> <span class='string_literal'><span class='macro'>"item_added"</span>,<span class='macro_popup'>g_signal_connect_data ((window-&gt;priv-&gt;bottom_panel), ("item_added"<br>), (((GCallback) (bottom_panel_item_added))), (window), ((void<br>*)0), (GConnectFlags) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="3819"><td class="num" id="LN3819">3819</td><td class="line"> <span class='macro'>G_CALLBACK (bottom_panel_item_added),<span class='macro_popup'>g_signal_connect_data ((window-&gt;priv-&gt;bottom_panel), ("item_added"<br>), (((GCallback) (bottom_panel_item_added))), (window), ((void<br>*)0), (GConnectFlags) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="3820"><td class="num" id="LN3820">3820</td><td class="line"> <span class='macro'>window)<span class='macro_popup'>g_signal_connect_data ((window-&gt;priv-&gt;bottom_panel), ("item_added"<br>), (((GCallback) (bottom_panel_item_added))), (window), ((void<br>*)0), (GConnectFlags) 0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3821"><td class="num" id="LN3821">3821</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3822"><td class="num" id="LN3822">3822</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3823"><td class="num" id="LN3823">3823</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="3824"><td class="num" id="LN3824">3824</td><td class="line">clipboard_owner_change (GtkClipboard *clipboard,</td></tr>
+<tr class="codeline" data-linenumber="3825"><td class="num" id="LN3825">3825</td><td class="line"> GdkEventOwnerChange *event,</td></tr>
+<tr class="codeline" data-linenumber="3826"><td class="num" id="LN3826">3826</td><td class="line"> PlumaWindow *window)</td></tr>
+<tr class="codeline" data-linenumber="3827"><td class="num" id="LN3827">3827</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3828"><td class="num" id="LN3828">3828</td><td class="line"> set_paste_sensitivity_according_to_clipboard (window, clipboard);</td></tr>
+<tr class="codeline" data-linenumber="3829"><td class="num" id="LN3829">3829</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3830"><td class="num" id="LN3830">3830</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3831"><td class="num" id="LN3831">3831</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="3832"><td class="num" id="LN3832">3832</td><td class="line">window_realized (GtkWidget *window,</td></tr>
+<tr class="codeline" data-linenumber="3833"><td class="num" id="LN3833">3833</td><td class="line"> gpointer *data)</td></tr>
+<tr class="codeline" data-linenumber="3834"><td class="num" id="LN3834">3834</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3835"><td class="num" id="LN3835">3835</td><td class="line"> GtkClipboard *clipboard;</td></tr>
+<tr class="codeline" data-linenumber="3836"><td class="num" id="LN3836">3836</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3837"><td class="num" id="LN3837">3837</td><td class="line"> clipboard = gtk_widget_get_clipboard (window, <span class='macro'>GDK_SELECTION_CLIPBOARD<span class='macro_popup'>((GdkAtom)((gpointer) (gulong) (69)))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3838"><td class="num" id="LN3838">3838</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3839"><td class="num" id="LN3839">3839</td><td class="line"> <span class='macro'>g_signal_connect (clipboard,<span class='macro_popup'>g_signal_connect_data ((clipboard), ("owner_change"), (((GCallback<br>) (clipboard_owner_change))), (window), ((void*)0), (GConnectFlags<br>) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="3840"><td class="num" id="LN3840">3840</td><td class="line"> <span class='string_literal'><span class='macro'>"owner_change"</span>,<span class='macro_popup'>g_signal_connect_data ((clipboard), ("owner_change"), (((GCallback<br>) (clipboard_owner_change))), (window), ((void*)0), (GConnectFlags<br>) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="3841"><td class="num" id="LN3841">3841</td><td class="line"> <span class='macro'>G_CALLBACK (clipboard_owner_change),<span class='macro_popup'>g_signal_connect_data ((clipboard), ("owner_change"), (((GCallback<br>) (clipboard_owner_change))), (window), ((void*)0), (GConnectFlags<br>) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="3842"><td class="num" id="LN3842">3842</td><td class="line"> <span class='macro'>window)<span class='macro_popup'>g_signal_connect_data ((clipboard), ("owner_change"), (((GCallback<br>) (clipboard_owner_change))), (window), ((void*)0), (GConnectFlags<br>) 0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3843"><td class="num" id="LN3843">3843</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3844"><td class="num" id="LN3844">3844</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3845"><td class="num" id="LN3845">3845</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="3846"><td class="num" id="LN3846">3846</td><td class="line">window_unrealized (GtkWidget *window,</td></tr>
+<tr class="codeline" data-linenumber="3847"><td class="num" id="LN3847">3847</td><td class="line"> gpointer *data)</td></tr>
+<tr class="codeline" data-linenumber="3848"><td class="num" id="LN3848">3848</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3849"><td class="num" id="LN3849">3849</td><td class="line"> GtkClipboard *clipboard;</td></tr>
+<tr class="codeline" data-linenumber="3850"><td class="num" id="LN3850">3850</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3851"><td class="num" id="LN3851">3851</td><td class="line"> clipboard = gtk_widget_get_clipboard (window, <span class='macro'>GDK_SELECTION_CLIPBOARD<span class='macro_popup'>((GdkAtom)((gpointer) (gulong) (69)))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3852"><td class="num" id="LN3852">3852</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3853"><td class="num" id="LN3853">3853</td><td class="line"> <span class='macro'>g_signal_handlers_disconnect_by_func (clipboard,<span class='macro_popup'>g_signal_handlers_disconnect_matched ((clipboard), (GSignalMatchType<br>) (G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA), 0, 0, ((void*)<br>0), (((GCallback) (clipboard_owner_change))), (window))</span></span></td></tr>
+<tr class="codeline" data-linenumber="3854"><td class="num" id="LN3854">3854</td><td class="line"> <span class='macro'>G_CALLBACK (clipboard_owner_change),<span class='macro_popup'>g_signal_handlers_disconnect_matched ((clipboard), (GSignalMatchType<br>) (G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA), 0, 0, ((void*)<br>0), (((GCallback) (clipboard_owner_change))), (window))</span></span></td></tr>
+<tr class="codeline" data-linenumber="3855"><td class="num" id="LN3855">3855</td><td class="line"> <span class='macro'>window)<span class='macro_popup'>g_signal_handlers_disconnect_matched ((clipboard), (GSignalMatchType<br>) (G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA), 0, 0, ((void*)<br>0), (((GCallback) (clipboard_owner_change))), (window))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3856"><td class="num" id="LN3856">3856</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3857"><td class="num" id="LN3857">3857</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3858"><td class="num" id="LN3858">3858</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="3859"><td class="num" id="LN3859">3859</td><td class="line">check_window_is_active (PlumaWindow *window,</td></tr>
+<tr class="codeline" data-linenumber="3860"><td class="num" id="LN3860">3860</td><td class="line"> GParamSpec *property,</td></tr>
+<tr class="codeline" data-linenumber="3861"><td class="num" id="LN3861">3861</td><td class="line"> gpointer useless)</td></tr>
+<tr class="codeline" data-linenumber="3862"><td class="num" id="LN3862">3862</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3863"><td class="num" id="LN3863">3863</td><td class="line"> <span class='keyword'>if</span> (window-&gt;priv-&gt;window_state &amp; GDK_WINDOW_STATE_FULLSCREEN)</td></tr>
+<tr class="codeline" data-linenumber="3864"><td class="num" id="LN3864">3864</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="3865"><td class="num" id="LN3865">3865</td><td class="line"> <span class='keyword'>if</span> (gtk_window_is_active (<span class='macro'>GTK_WINDOW (window)<span class='macro_popup'>((((GtkWindow*) (void *) ((window)))))</span></span>))</td></tr>
+<tr class="codeline" data-linenumber="3866"><td class="num" id="LN3866">3866</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="3867"><td class="num" id="LN3867">3867</td><td class="line"> gtk_widget_show (window-&gt;priv-&gt;fullscreen_controls);</td></tr>
+<tr class="codeline" data-linenumber="3868"><td class="num" id="LN3868">3868</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3869"><td class="num" id="LN3869">3869</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="3870"><td class="num" id="LN3870">3870</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="3871"><td class="num" id="LN3871">3871</td><td class="line"> gtk_widget_hide (window-&gt;priv-&gt;fullscreen_controls);</td></tr>
+<tr class="codeline" data-linenumber="3872"><td class="num" id="LN3872">3872</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3873"><td class="num" id="LN3873">3873</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3874"><td class="num" id="LN3874">3874</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3875"><td class="num" id="LN3875">3875</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3876"><td class="num" id="LN3876">3876</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="3877"><td class="num" id="LN3877">3877</td><td class="line">connect_notebook_signals (PlumaWindow *window,</td></tr>
+<tr class="codeline" data-linenumber="3878"><td class="num" id="LN3878">3878</td><td class="line"> GtkWidget *notebook)</td></tr>
+<tr class="codeline" data-linenumber="3879"><td class="num" id="LN3879">3879</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3880"><td class="num" id="LN3880">3880</td><td class="line"> <span class='macro'>g_signal_connect (notebook,<span class='macro_popup'>g_signal_connect_data ((notebook), ("switch-page"), (((GCallback<br>) (notebook_switch_page))), (window), ((void*)0), (GConnectFlags<br>) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="3881"><td class="num" id="LN3881">3881</td><td class="line"> <span class='string_literal'><span class='macro'>"switch-page"</span>,<span class='macro_popup'>g_signal_connect_data ((notebook), ("switch-page"), (((GCallback<br>) (notebook_switch_page))), (window), ((void*)0), (GConnectFlags<br>) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="3882"><td class="num" id="LN3882">3882</td><td class="line"> <span class='macro'>G_CALLBACK (notebook_switch_page),<span class='macro_popup'>g_signal_connect_data ((notebook), ("switch-page"), (((GCallback<br>) (notebook_switch_page))), (window), ((void*)0), (GConnectFlags<br>) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="3883"><td class="num" id="LN3883">3883</td><td class="line"> <span class='macro'>window)<span class='macro_popup'>g_signal_connect_data ((notebook), ("switch-page"), (((GCallback<br>) (notebook_switch_page))), (window), ((void*)0), (GConnectFlags<br>) 0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3884"><td class="num" id="LN3884">3884</td><td class="line"> <span class='macro'>g_signal_connect (notebook,<span class='macro_popup'>g_signal_connect_data ((notebook), ("tab-added"), (((GCallback<br>) (notebook_tab_added))), (window), ((void*)0), (GConnectFlags<br>) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="3885"><td class="num" id="LN3885">3885</td><td class="line"> <span class='string_literal'><span class='macro'>"tab-added"</span>,<span class='macro_popup'>g_signal_connect_data ((notebook), ("tab-added"), (((GCallback<br>) (notebook_tab_added))), (window), ((void*)0), (GConnectFlags<br>) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="3886"><td class="num" id="LN3886">3886</td><td class="line"> <span class='macro'>G_CALLBACK (notebook_tab_added),<span class='macro_popup'>g_signal_connect_data ((notebook), ("tab-added"), (((GCallback<br>) (notebook_tab_added))), (window), ((void*)0), (GConnectFlags<br>) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="3887"><td class="num" id="LN3887">3887</td><td class="line"> <span class='macro'>window)<span class='macro_popup'>g_signal_connect_data ((notebook), ("tab-added"), (((GCallback<br>) (notebook_tab_added))), (window), ((void*)0), (GConnectFlags<br>) 0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3888"><td class="num" id="LN3888">3888</td><td class="line"> <span class='macro'>g_signal_connect (notebook,<span class='macro_popup'>g_signal_connect_data ((notebook), ("tab-removed"), (((GCallback<br>) (notebook_tab_removed))), (window), ((void*)0), (GConnectFlags<br>) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="3889"><td class="num" id="LN3889">3889</td><td class="line"> <span class='string_literal'><span class='macro'>"tab-removed"</span>,<span class='macro_popup'>g_signal_connect_data ((notebook), ("tab-removed"), (((GCallback<br>) (notebook_tab_removed))), (window), ((void*)0), (GConnectFlags<br>) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="3890"><td class="num" id="LN3890">3890</td><td class="line"> <span class='macro'>G_CALLBACK (notebook_tab_removed),<span class='macro_popup'>g_signal_connect_data ((notebook), ("tab-removed"), (((GCallback<br>) (notebook_tab_removed))), (window), ((void*)0), (GConnectFlags<br>) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="3891"><td class="num" id="LN3891">3891</td><td class="line"> <span class='macro'>window)<span class='macro_popup'>g_signal_connect_data ((notebook), ("tab-removed"), (((GCallback<br>) (notebook_tab_removed))), (window), ((void*)0), (GConnectFlags<br>) 0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3892"><td class="num" id="LN3892">3892</td><td class="line"> <span class='macro'>g_signal_connect (notebook,<span class='macro_popup'>g_signal_connect_data ((notebook), ("tabs-reordered"), (((GCallback<br>) (notebook_tabs_reordered))), (window), ((void*)0), (GConnectFlags<br>) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="3893"><td class="num" id="LN3893">3893</td><td class="line"> <span class='string_literal'><span class='macro'>"tabs-reordered"</span>,<span class='macro_popup'>g_signal_connect_data ((notebook), ("tabs-reordered"), (((GCallback<br>) (notebook_tabs_reordered))), (window), ((void*)0), (GConnectFlags<br>) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="3894"><td class="num" id="LN3894">3894</td><td class="line"> <span class='macro'>G_CALLBACK (notebook_tabs_reordered),<span class='macro_popup'>g_signal_connect_data ((notebook), ("tabs-reordered"), (((GCallback<br>) (notebook_tabs_reordered))), (window), ((void*)0), (GConnectFlags<br>) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="3895"><td class="num" id="LN3895">3895</td><td class="line"> <span class='macro'>window)<span class='macro_popup'>g_signal_connect_data ((notebook), ("tabs-reordered"), (((GCallback<br>) (notebook_tabs_reordered))), (window), ((void*)0), (GConnectFlags<br>) 0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3896"><td class="num" id="LN3896">3896</td><td class="line"> <span class='macro'>g_signal_connect (notebook,<span class='macro_popup'>g_signal_connect_data ((notebook), ("tab-detached"), (((GCallback<br>) (notebook_tab_detached))), (window), ((void*)0), (GConnectFlags<br>) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="3897"><td class="num" id="LN3897">3897</td><td class="line"> <span class='string_literal'><span class='macro'>"tab-detached"</span>,<span class='macro_popup'>g_signal_connect_data ((notebook), ("tab-detached"), (((GCallback<br>) (notebook_tab_detached))), (window), ((void*)0), (GConnectFlags<br>) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="3898"><td class="num" id="LN3898">3898</td><td class="line"> <span class='macro'>G_CALLBACK (notebook_tab_detached),<span class='macro_popup'>g_signal_connect_data ((notebook), ("tab-detached"), (((GCallback<br>) (notebook_tab_detached))), (window), ((void*)0), (GConnectFlags<br>) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="3899"><td class="num" id="LN3899">3899</td><td class="line"> <span class='macro'>window)<span class='macro_popup'>g_signal_connect_data ((notebook), ("tab-detached"), (((GCallback<br>) (notebook_tab_detached))), (window), ((void*)0), (GConnectFlags<br>) 0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3900"><td class="num" id="LN3900">3900</td><td class="line"> <span class='macro'>g_signal_connect (notebook,<span class='macro_popup'>g_signal_connect_data ((notebook), ("tab-close-request"), (((<br>GCallback) (notebook_tab_close_request))), (window), ((void*)<br>0), (GConnectFlags) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="3901"><td class="num" id="LN3901">3901</td><td class="line"> <span class='string_literal'><span class='macro'>"tab-close-request"</span>,<span class='macro_popup'>g_signal_connect_data ((notebook), ("tab-close-request"), (((<br>GCallback) (notebook_tab_close_request))), (window), ((void*)<br>0), (GConnectFlags) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="3902"><td class="num" id="LN3902">3902</td><td class="line"> <span class='macro'>G_CALLBACK (notebook_tab_close_request),<span class='macro_popup'>g_signal_connect_data ((notebook), ("tab-close-request"), (((<br>GCallback) (notebook_tab_close_request))), (window), ((void*)<br>0), (GConnectFlags) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="3903"><td class="num" id="LN3903">3903</td><td class="line"> <span class='macro'>window)<span class='macro_popup'>g_signal_connect_data ((notebook), ("tab-close-request"), (((<br>GCallback) (notebook_tab_close_request))), (window), ((void*)<br>0), (GConnectFlags) 0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3904"><td class="num" id="LN3904">3904</td><td class="line"> <span class='macro'>g_signal_connect (notebook,<span class='macro_popup'>g_signal_connect_data ((notebook), ("button-press-event"), ((<br>(GCallback) (notebook_button_press_event))), (window), ((void<br>*)0), (GConnectFlags) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="3905"><td class="num" id="LN3905">3905</td><td class="line"> <span class='string_literal'><span class='macro'>"button-press-event"</span>,<span class='macro_popup'>g_signal_connect_data ((notebook), ("button-press-event"), ((<br>(GCallback) (notebook_button_press_event))), (window), ((void<br>*)0), (GConnectFlags) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="3906"><td class="num" id="LN3906">3906</td><td class="line"> <span class='macro'>G_CALLBACK (notebook_button_press_event),<span class='macro_popup'>g_signal_connect_data ((notebook), ("button-press-event"), ((<br>(GCallback) (notebook_button_press_event))), (window), ((void<br>*)0), (GConnectFlags) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="3907"><td class="num" id="LN3907">3907</td><td class="line"> <span class='macro'>window)<span class='macro_popup'>g_signal_connect_data ((notebook), ("button-press-event"), ((<br>(GCallback) (notebook_button_press_event))), (window), ((void<br>*)0), (GConnectFlags) 0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3908"><td class="num" id="LN3908">3908</td><td class="line"> <span class='macro'>g_signal_connect (notebook,<span class='macro_popup'>g_signal_connect_data ((notebook), ("popup-menu"), (((GCallback<br>) (notebook_popup_menu))), (window), ((void*)0), (GConnectFlags<br>) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="3909"><td class="num" id="LN3909">3909</td><td class="line"> <span class='string_literal'><span class='macro'>"popup-menu"</span>,<span class='macro_popup'>g_signal_connect_data ((notebook), ("popup-menu"), (((GCallback<br>) (notebook_popup_menu))), (window), ((void*)0), (GConnectFlags<br>) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="3910"><td class="num" id="LN3910">3910</td><td class="line"> <span class='macro'>G_CALLBACK (notebook_popup_menu),<span class='macro_popup'>g_signal_connect_data ((notebook), ("popup-menu"), (((GCallback<br>) (notebook_popup_menu))), (window), ((void*)0), (GConnectFlags<br>) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="3911"><td class="num" id="LN3911">3911</td><td class="line"> <span class='macro'>window)<span class='macro_popup'>g_signal_connect_data ((notebook), ("popup-menu"), (((GCallback<br>) (notebook_popup_menu))), (window), ((void*)0), (GConnectFlags<br>) 0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3912"><td class="num" id="LN3912">3912</td><td class="line"> <span class='macro'>g_signal_connect (notebook,<span class='macro_popup'>g_signal_connect_data ((notebook), ("scroll-event"), (((GCallback<br>) (notebook_scroll_event))), (window), ((void*)0), (GConnectFlags<br>) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="3913"><td class="num" id="LN3913">3913</td><td class="line"> <span class='string_literal'><span class='macro'>"scroll-event"</span>,<span class='macro_popup'>g_signal_connect_data ((notebook), ("scroll-event"), (((GCallback<br>) (notebook_scroll_event))), (window), ((void*)0), (GConnectFlags<br>) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="3914"><td class="num" id="LN3914">3914</td><td class="line"> <span class='macro'>G_CALLBACK (notebook_scroll_event),<span class='macro_popup'>g_signal_connect_data ((notebook), ("scroll-event"), (((GCallback<br>) (notebook_scroll_event))), (window), ((void*)0), (GConnectFlags<br>) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="3915"><td class="num" id="LN3915">3915</td><td class="line"> <span class='macro'>window)<span class='macro_popup'>g_signal_connect_data ((notebook), ("scroll-event"), (((GCallback<br>) (notebook_scroll_event))), (window), ((void*)0), (GConnectFlags<br>) 0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3916"><td class="num" id="LN3916">3916</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3917"><td class="num" id="LN3917">3917</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3918"><td class="num" id="LN3918">3918</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="3919"><td class="num" id="LN3919">3919</td><td class="line">add_notebook (PlumaWindow *window,</td></tr>
+<tr class="codeline" data-linenumber="3920"><td class="num" id="LN3920">3920</td><td class="line"> GtkWidget *notebook)</td></tr>
+<tr class="codeline" data-linenumber="3921"><td class="num" id="LN3921">3921</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3922"><td class="num" id="LN3922">3922</td><td class="line"> gtk_paned_pack1 (<span class='macro'>GTK_PANED (window-&gt;priv-&gt;vpaned)<span class='macro_popup'>((((GtkPaned*) (void *) ((window-&gt;priv-&gt;vpaned)))))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="3923"><td class="num" id="LN3923">3923</td><td class="line"> notebook,</td></tr>
+<tr class="codeline" data-linenumber="3924"><td class="num" id="LN3924">3924</td><td class="line"> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="3925"><td class="num" id="LN3925">3925</td><td class="line"> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3926"><td class="num" id="LN3926">3926</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3927"><td class="num" id="LN3927">3927</td><td class="line"> gtk_widget_show (notebook);</td></tr>
+<tr class="codeline" data-linenumber="3928"><td class="num" id="LN3928">3928</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3929"><td class="num" id="LN3929">3929</td><td class="line"> gtk_widget_add_events (notebook, GDK_SCROLL_MASK);</td></tr>
+<tr class="codeline" data-linenumber="3930"><td class="num" id="LN3930">3930</td><td class="line"> connect_notebook_signals (window, notebook);</td></tr>
+<tr class="codeline" data-linenumber="3931"><td class="num" id="LN3931">3931</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3932"><td class="num" id="LN3932">3932</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3933"><td class="num" id="LN3933">3933</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="3934"><td class="num" id="LN3934">3934</td><td class="line">on_extension_added (PeasExtensionSet *extensions,</td></tr>
+<tr class="codeline" data-linenumber="3935"><td class="num" id="LN3935">3935</td><td class="line"> PeasPluginInfo *info,</td></tr>
+<tr class="codeline" data-linenumber="3936"><td class="num" id="LN3936">3936</td><td class="line"> PeasExtension *exten,</td></tr>
+<tr class="codeline" data-linenumber="3937"><td class="num" id="LN3937">3937</td><td class="line"> PlumaWindow *window)</td></tr>
+<tr class="codeline" data-linenumber="3938"><td class="num" id="LN3938">3938</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3939"><td class="num" id="LN3939">3939</td><td class="line"> peas_extension_call (exten, <span class='string_literal'>"activate"</span>, window);</td></tr>
+<tr class="codeline" data-linenumber="3940"><td class="num" id="LN3940">3940</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3941"><td class="num" id="LN3941">3941</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3942"><td class="num" id="LN3942">3942</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="3943"><td class="num" id="LN3943">3943</td><td class="line">on_extension_removed (PeasExtensionSet *extensions,</td></tr>
+<tr class="codeline" data-linenumber="3944"><td class="num" id="LN3944">3944</td><td class="line"> PeasPluginInfo *info,</td></tr>
+<tr class="codeline" data-linenumber="3945"><td class="num" id="LN3945">3945</td><td class="line"> PeasExtension *exten,</td></tr>
+<tr class="codeline" data-linenumber="3946"><td class="num" id="LN3946">3946</td><td class="line"> PlumaWindow *window)</td></tr>
+<tr class="codeline" data-linenumber="3947"><td class="num" id="LN3947">3947</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3948"><td class="num" id="LN3948">3948</td><td class="line"> peas_extension_call (exten, <span class='string_literal'>"deactivate"</span>, window);</td></tr>
+<tr class="codeline" data-linenumber="3949"><td class="num" id="LN3949">3949</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3950"><td class="num" id="LN3950">3950</td><td class="line"> <span class='comment'>/* Ensure update of ui manager, because we suspect it does something</span></td></tr>
+<tr class="codeline" data-linenumber="3951"><td class="num" id="LN3951">3951</td><td class="line"> <span class='comment'>* with expected static strings in the type module (when unloaded the</span></td></tr>
+<tr class="codeline" data-linenumber="3952"><td class="num" id="LN3952">3952</td><td class="line"> <span class='comment'>* strings don't exist anymore, and ui manager updates in an idle</span></td></tr>
+<tr class="codeline" data-linenumber="3953"><td class="num" id="LN3953">3953</td><td class="line"> <span class='comment'>* func) */</span></td></tr>
+<tr class="codeline" data-linenumber="3954"><td class="num" id="LN3954">3954</td><td class="line"> gtk_ui_manager_ensure_update (window-&gt;priv-&gt;manager);</td></tr>
+<tr class="codeline" data-linenumber="3955"><td class="num" id="LN3955">3955</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3956"><td class="num" id="LN3956">3956</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3957"><td class="num" id="LN3957">3957</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="3958"><td class="num" id="LN3958">3958</td><td class="line">pluma_window_init (PlumaWindow *window)</td></tr>
+<tr class="codeline" data-linenumber="3959"><td class="num" id="LN3959">3959</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3960"><td class="num" id="LN3960">3960</td><td class="line"> GtkWidget *main_box;</td></tr>
+<tr class="codeline" data-linenumber="3961"><td class="num" id="LN3961">3961</td><td class="line"> GtkTargetList *tl;</td></tr>
+<tr class="codeline" data-linenumber="3962"><td class="num" id="LN3962">3962</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3963"><td class="num" id="LN3963">3963</td><td class="line"> pluma_debug (<span class='macro'>DEBUG_WINDOW<span class='macro_popup'>PLUMA_DEBUG_WINDOW, "pluma-window.c", 3963, ((const char*) (__func__<br>))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3964"><td class="num" id="LN3964">3964</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3965"><td class="num" id="LN3965">3965</td><td class="line"> window-&gt;priv = pluma_window_get_instance_private (window);</td></tr>
+<tr class="codeline" data-linenumber="3966"><td class="num" id="LN3966">3966</td><td class="line"> window-&gt;priv-&gt;active_tab = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3967"><td class="num" id="LN3967">3967</td><td class="line"> window-&gt;priv-&gt;num_tabs = 0;</td></tr>
+<tr class="codeline" data-linenumber="3968"><td class="num" id="LN3968">3968</td><td class="line"> window-&gt;priv-&gt;removing_tabs = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3969"><td class="num" id="LN3969">3969</td><td class="line"> window-&gt;priv-&gt;state = PLUMA_WINDOW_STATE_NORMAL;</td></tr>
+<tr class="codeline" data-linenumber="3970"><td class="num" id="LN3970">3970</td><td class="line"> window-&gt;priv-&gt;dispose_has_run = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3971"><td class="num" id="LN3971">3971</td><td class="line"> window-&gt;priv-&gt;fullscreen_controls = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3972"><td class="num" id="LN3972">3972</td><td class="line"> window-&gt;priv-&gt;fullscreen_animation_timeout_id = 0;</td></tr>
+<tr class="codeline" data-linenumber="3973"><td class="num" id="LN3973">3973</td><td class="line"> window-&gt;priv-&gt;editor_settings = g_settings_new (<span class='macro'>PLUMA_SCHEMA_ID<span class='macro_popup'>"org.mate.pluma"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3974"><td class="num" id="LN3974">3974</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3975"><td class="num" id="LN3975">3975</td><td class="line"> window-&gt;priv-&gt;message_bus = pluma_message_bus_new ();</td></tr>
+<tr class="codeline" data-linenumber="3976"><td class="num" id="LN3976">3976</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3977"><td class="num" id="LN3977">3977</td><td class="line"> window-&gt;priv-&gt;window_group = gtk_window_group_new ();</td></tr>
+<tr class="codeline" data-linenumber="3978"><td class="num" id="LN3978">3978</td><td class="line"> gtk_window_group_add_window (window-&gt;priv-&gt;window_group, <span class='macro'>GTK_WINDOW (window)<span class='macro_popup'>((((GtkWindow*) (void *) ((window)))))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3979"><td class="num" id="LN3979">3979</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3980"><td class="num" id="LN3980">3980</td><td class="line"> GtkStyleContext *context;</td></tr>
+<tr class="codeline" data-linenumber="3981"><td class="num" id="LN3981">3981</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3982"><td class="num" id="LN3982">3982</td><td class="line"> context = gtk_widget_get_style_context (<span class='macro'>GTK_WIDGET (window)<span class='macro_popup'>((((GtkWidget*) (void *) ((window)))))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3983"><td class="num" id="LN3983">3983</td><td class="line"> gtk_style_context_add_class (context, <span class='string_literal'>"pluma-window"</span>);</td></tr>
+<tr class="codeline" data-linenumber="3984"><td class="num" id="LN3984">3984</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3985"><td class="num" id="LN3985">3985</td><td class="line"> main_box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);</td></tr>
+<tr class="codeline" data-linenumber="3986"><td class="num" id="LN3986">3986</td><td class="line"> gtk_container_add (<span class='macro'>GTK_CONTAINER (window)<span class='macro_popup'>((((GtkContainer*) (void *) ((window)))))</span></span>, main_box);</td></tr>
+<tr class="codeline" data-linenumber="3987"><td class="num" id="LN3987">3987</td><td class="line"> gtk_widget_show (main_box);</td></tr>
+<tr class="codeline" data-linenumber="3988"><td class="num" id="LN3988">3988</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3989"><td class="num" id="LN3989">3989</td><td class="line"> <span class='comment'>/* Add menu bar and toolbar bar */</span></td></tr>
+<tr class="codeline" data-linenumber="3990"><td class="num" id="LN3990">3990</td><td class="line"> create_menu_bar_and_toolbar (window, main_box);</td></tr>
+<tr class="codeline" data-linenumber="3991"><td class="num" id="LN3991">3991</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3992"><td class="num" id="LN3992">3992</td><td class="line"> <span class='comment'>/* Add status bar */</span></td></tr>
+<tr class="codeline" data-linenumber="3993"><td class="num" id="LN3993">3993</td><td class="line"> create_statusbar (window, main_box);</td></tr>
+<tr class="codeline" data-linenumber="3994"><td class="num" id="LN3994">3994</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3995"><td class="num" id="LN3995">3995</td><td class="line"> <span class='comment'>/* Add the main area */</span></td></tr>
+<tr class="codeline" data-linenumber="3996"><td class="num" id="LN3996">3996</td><td class="line"> pluma_debug_message (<span class='macro'>DEBUG_WINDOW<span class='macro_popup'>PLUMA_DEBUG_WINDOW, "pluma-window.c", 3996, ((const char*) (__func__<br>))</span></span>, <span class='string_literal'>"Add main area"</span>);</td></tr>
+<tr class="codeline" data-linenumber="3997"><td class="num" id="LN3997">3997</td><td class="line"> window-&gt;priv-&gt;hpaned = gtk_paned_new (GTK_ORIENTATION_HORIZONTAL);</td></tr>
+<tr class="codeline" data-linenumber="3998"><td class="num" id="LN3998">3998</td><td class="line"> gtk_box_pack_start (<span class='macro'>GTK_BOX (main_box)<span class='macro_popup'>((((GtkBox*) (void *) ((main_box)))))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="3999"><td class="num" id="LN3999">3999</td><td class="line"> window-&gt;priv-&gt;hpaned,</td></tr>
+<tr class="codeline" data-linenumber="4000"><td class="num" id="LN4000">4000</td><td class="line"> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="4001"><td class="num" id="LN4001">4001</td><td class="line"> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="4002"><td class="num" id="LN4002">4002</td><td class="line"> 0);</td></tr>
+<tr class="codeline" data-linenumber="4003"><td class="num" id="LN4003">4003</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="4004"><td class="num" id="LN4004">4004</td><td class="line"> window-&gt;priv-&gt;vpaned = gtk_paned_new (GTK_ORIENTATION_VERTICAL);</td></tr>
+<tr class="codeline" data-linenumber="4005"><td class="num" id="LN4005">4005</td><td class="line"> gtk_paned_pack2 (<span class='macro'>GTK_PANED (window-&gt;priv-&gt;hpaned)<span class='macro_popup'>((((GtkPaned*) (void *) ((window-&gt;priv-&gt;hpaned)))))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="4006"><td class="num" id="LN4006">4006</td><td class="line"> window-&gt;priv-&gt;vpaned,</td></tr>
+<tr class="codeline" data-linenumber="4007"><td class="num" id="LN4007">4007</td><td class="line"> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="4008"><td class="num" id="LN4008">4008</td><td class="line"> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="4009"><td class="num" id="LN4009">4009</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="4010"><td class="num" id="LN4010">4010</td><td class="line"> pluma_debug_message (<span class='macro'>DEBUG_WINDOW<span class='macro_popup'>PLUMA_DEBUG_WINDOW, "pluma-window.c", 4010, ((const char*) (__func__<br>))</span></span>, <span class='string_literal'>"Create pluma notebook"</span>);</td></tr>
+<tr class="codeline" data-linenumber="4011"><td class="num" id="LN4011">4011</td><td class="line"> window-&gt;priv-&gt;notebook = pluma_notebook_new ();</td></tr>
+<tr class="codeline" data-linenumber="4012"><td class="num" id="LN4012">4012</td><td class="line"> add_notebook (window, window-&gt;priv-&gt;notebook);</td></tr>
+<tr class="codeline" data-linenumber="4013"><td class="num" id="LN4013">4013</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="4014"><td class="num" id="LN4014">4014</td><td class="line"> <span class='comment'>/* side and bottom panels */</span></td></tr>
+<tr class="codeline" data-linenumber="4015"><td class="num" id="LN4015">4015</td><td class="line"> create_side_panel (window);</td></tr>
+<tr class="codeline" data-linenumber="4016"><td class="num" id="LN4016">4016</td><td class="line"> create_bottom_panel (window);</td></tr>
+<tr class="codeline" data-linenumber="4017"><td class="num" id="LN4017">4017</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="4018"><td class="num" id="LN4018">4018</td><td class="line"> <span class='comment'>/* panes' state must be restored after panels have been mapped,</span></td></tr>
+<tr class="codeline" data-linenumber="4019"><td class="num" id="LN4019">4019</td><td class="line"> <span class='comment'>* since the bottom pane position depends on the size of the vpaned. */</span></td></tr>
+<tr class="codeline" data-linenumber="4020"><td class="num" id="LN4020">4020</td><td class="line"> window-&gt;priv-&gt;side_panel_size = g_settings_get_int (window-&gt;priv-&gt;editor_settings,</td></tr>
+<tr class="codeline" data-linenumber="4021"><td class="num" id="LN4021">4021</td><td class="line"> <span class='macro'>PLUMA_SETTINGS_SIDE_PANEL_SIZE<span class='macro_popup'>"side-panel-size"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="4022"><td class="num" id="LN4022">4022</td><td class="line"> window-&gt;priv-&gt;bottom_panel_size = g_settings_get_int (window-&gt;priv-&gt;editor_settings,</td></tr>
+<tr class="codeline" data-linenumber="4023"><td class="num" id="LN4023">4023</td><td class="line"> <span class='macro'>PLUMA_SETTINGS_BOTTOM_PANEL_SIZE<span class='macro_popup'>"bottom-panel-size"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="4024"><td class="num" id="LN4024">4024</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="4025"><td class="num" id="LN4025">4025</td><td class="line"> <span class='macro'>g_signal_connect_after (window-&gt;priv-&gt;hpaned,<span class='macro_popup'>g_signal_connect_data ((window-&gt;priv-&gt;hpaned), ("map"),<br> (((GCallback) (hpaned_restore_position))), (window), ((void*<br>)0), G_CONNECT_AFTER)</span></span></td></tr>
+<tr class="codeline" data-linenumber="4026"><td class="num" id="LN4026">4026</td><td class="line"> <span class='string_literal'><span class='macro'>"map"</span>,<span class='macro_popup'>g_signal_connect_data ((window-&gt;priv-&gt;hpaned), ("map"),<br> (((GCallback) (hpaned_restore_position))), (window), ((void*<br>)0), G_CONNECT_AFTER)</span></span></td></tr>
+<tr class="codeline" data-linenumber="4027"><td class="num" id="LN4027">4027</td><td class="line"> <span class='macro'>G_CALLBACK (hpaned_restore_position),<span class='macro_popup'>g_signal_connect_data ((window-&gt;priv-&gt;hpaned), ("map"),<br> (((GCallback) (hpaned_restore_position))), (window), ((void*<br>)0), G_CONNECT_AFTER)</span></span></td></tr>
+<tr class="codeline" data-linenumber="4028"><td class="num" id="LN4028">4028</td><td class="line"> <span class='macro'>window)<span class='macro_popup'>g_signal_connect_data ((window-&gt;priv-&gt;hpaned), ("map"),<br> (((GCallback) (hpaned_restore_position))), (window), ((void*<br>)0), G_CONNECT_AFTER)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="4029"><td class="num" id="LN4029">4029</td><td class="line"> <span class='macro'>g_signal_connect_after (window-&gt;priv-&gt;vpaned,<span class='macro_popup'>g_signal_connect_data ((window-&gt;priv-&gt;vpaned), ("map"),<br> (((GCallback) (vpaned_restore_position))), (window), ((void*<br>)0), G_CONNECT_AFTER)</span></span></td></tr>
+<tr class="codeline" data-linenumber="4030"><td class="num" id="LN4030">4030</td><td class="line"> <span class='string_literal'><span class='macro'>"map"</span>,<span class='macro_popup'>g_signal_connect_data ((window-&gt;priv-&gt;vpaned), ("map"),<br> (((GCallback) (vpaned_restore_position))), (window), ((void*<br>)0), G_CONNECT_AFTER)</span></span></td></tr>
+<tr class="codeline" data-linenumber="4031"><td class="num" id="LN4031">4031</td><td class="line"> <span class='macro'>G_CALLBACK (vpaned_restore_position),<span class='macro_popup'>g_signal_connect_data ((window-&gt;priv-&gt;vpaned), ("map"),<br> (((GCallback) (vpaned_restore_position))), (window), ((void*<br>)0), G_CONNECT_AFTER)</span></span></td></tr>
+<tr class="codeline" data-linenumber="4032"><td class="num" id="LN4032">4032</td><td class="line"> <span class='macro'>window)<span class='macro_popup'>g_signal_connect_data ((window-&gt;priv-&gt;vpaned), ("map"),<br> (((GCallback) (vpaned_restore_position))), (window), ((void*<br>)0), G_CONNECT_AFTER)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="4033"><td class="num" id="LN4033">4033</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="4034"><td class="num" id="LN4034">4034</td><td class="line"> gtk_widget_show (window-&gt;priv-&gt;hpaned);</td></tr>
+<tr class="codeline" data-linenumber="4035"><td class="num" id="LN4035">4035</td><td class="line"> gtk_widget_show (window-&gt;priv-&gt;vpaned);</td></tr>
+<tr class="codeline" data-linenumber="4036"><td class="num" id="LN4036">4036</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="4037"><td class="num" id="LN4037">4037</td><td class="line"> <span class='comment'>/* Drag and drop support, set targets to NULL because we add the</span></td></tr>
+<tr class="codeline" data-linenumber="4038"><td class="num" id="LN4038">4038</td><td class="line"> <span class='comment'>default uri_targets below */</span></td></tr>
+<tr class="codeline" data-linenumber="4039"><td class="num" id="LN4039">4039</td><td class="line"> gtk_drag_dest_set (<span class='macro'>GTK_WIDGET (window)<span class='macro_popup'>((((GtkWidget*) (void *) ((window)))))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="4040"><td class="num" id="LN4040">4040</td><td class="line"> GTK_DEST_DEFAULT_MOTION |</td></tr>
+<tr class="codeline" data-linenumber="4041"><td class="num" id="LN4041">4041</td><td class="line"> GTK_DEST_DEFAULT_HIGHLIGHT |</td></tr>
+<tr class="codeline" data-linenumber="4042"><td class="num" id="LN4042">4042</td><td class="line"> GTK_DEST_DEFAULT_DROP,</td></tr>
+<tr class="codeline" data-linenumber="4043"><td class="num" id="LN4043">4043</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="4044"><td class="num" id="LN4044">4044</td><td class="line"> 0,</td></tr>
+<tr class="codeline" data-linenumber="4045"><td class="num" id="LN4045">4045</td><td class="line"> GDK_ACTION_COPY);</td></tr>
+<tr class="codeline" data-linenumber="4046"><td class="num" id="LN4046">4046</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="4047"><td class="num" id="LN4047">4047</td><td class="line"> <span class='comment'>/* Add uri targets */</span></td></tr>
+<tr class="codeline" data-linenumber="4048"><td class="num" id="LN4048">4048</td><td class="line"> tl = gtk_drag_dest_get_target_list (<span class='macro'>GTK_WIDGET (window)<span class='macro_popup'>((((GtkWidget*) (void *) ((window)))))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="4049"><td class="num" id="LN4049">4049</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="4050"><td class="num" id="LN4050">4050</td><td class="line"> <span class='keyword'>if</span> (tl == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="4051"><td class="num" id="LN4051">4051</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="4052"><td class="num" id="LN4052">4052</td><td class="line"> tl = gtk_target_list_new (<span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, 0);</td></tr>
+<tr class="codeline" data-linenumber="4053"><td class="num" id="LN4053">4053</td><td class="line"> gtk_drag_dest_set_target_list (<span class='macro'>GTK_WIDGET (window)<span class='macro_popup'>((((GtkWidget*) (void *) ((window)))))</span></span>, tl);</td></tr>
+<tr class="codeline" data-linenumber="4054"><td class="num" id="LN4054">4054</td><td class="line"> gtk_target_list_unref (tl);</td></tr>
+<tr class="codeline" data-linenumber="4055"><td class="num" id="LN4055">4055</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="4056"><td class="num" id="LN4056">4056</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="4057"><td class="num" id="LN4057">4057</td><td class="line"> gtk_target_list_add_uri_targets (tl, TARGET_URI_LIST);</td></tr>
+<tr class="codeline" data-linenumber="4058"><td class="num" id="LN4058">4058</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="4059"><td class="num" id="LN4059">4059</td><td class="line"> <span class='comment'>/* connect instead of override, so that we can</span></td></tr>
+<tr class="codeline" data-linenumber="4060"><td class="num" id="LN4060">4060</td><td class="line"> <span class='comment'>* share the cb code with the view */</span></td></tr>
+<tr class="codeline" data-linenumber="4061"><td class="num" id="LN4061">4061</td><td class="line"> <span class='macro'>g_signal_connect (window,<span class='macro_popup'>g_signal_connect_data ((window), ("drag_data_received"), (((GCallback<br>) (drag_data_received_cb))), (((void*)0)), ((void*)0), (GConnectFlags<br>) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="4062"><td class="num" id="LN4062">4062</td><td class="line"> <span class='string_literal'><span class='macro'>"drag_data_received"</span>,<span class='macro_popup'>g_signal_connect_data ((window), ("drag_data_received"), (((GCallback<br>) (drag_data_received_cb))), (((void*)0)), ((void*)0), (GConnectFlags<br>) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="4063"><td class="num" id="LN4063">4063</td><td class="line"> <span class='macro'>G_CALLBACK (drag_data_received_cb),<span class='macro_popup'>g_signal_connect_data ((window), ("drag_data_received"), (((GCallback<br>) (drag_data_received_cb))), (((void*)0)), ((void*)0), (GConnectFlags<br>) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="4064"><td class="num" id="LN4064">4064</td><td class="line"> <span class='macro'>NULL)<span class='macro_popup'>g_signal_connect_data ((window), ("drag_data_received"), (((GCallback<br>) (drag_data_received_cb))), (((void*)0)), ((void*)0), (GConnectFlags<br>) 0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="4065"><td class="num" id="LN4065">4065</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="4066"><td class="num" id="LN4066">4066</td><td class="line"> <span class='comment'>/* we can get the clipboard only after the widget</span></td></tr>
+<tr class="codeline" data-linenumber="4067"><td class="num" id="LN4067">4067</td><td class="line"> <span class='comment'>* is realized */</span></td></tr>
+<tr class="codeline" data-linenumber="4068"><td class="num" id="LN4068">4068</td><td class="line"> <span class='macro'>g_signal_connect (window,<span class='macro_popup'>g_signal_connect_data ((window), ("realize"), (((GCallback) (<br>window_realized))), (((void*)0)), ((void*)0), (GConnectFlags)<br> 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="4069"><td class="num" id="LN4069">4069</td><td class="line"> <span class='string_literal'><span class='macro'>"realize"</span>,<span class='macro_popup'>g_signal_connect_data ((window), ("realize"), (((GCallback) (<br>window_realized))), (((void*)0)), ((void*)0), (GConnectFlags)<br> 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="4070"><td class="num" id="LN4070">4070</td><td class="line"> <span class='macro'>G_CALLBACK (window_realized),<span class='macro_popup'>g_signal_connect_data ((window), ("realize"), (((GCallback) (<br>window_realized))), (((void*)0)), ((void*)0), (GConnectFlags)<br> 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="4071"><td class="num" id="LN4071">4071</td><td class="line"> <span class='macro'>NULL)<span class='macro_popup'>g_signal_connect_data ((window), ("realize"), (((GCallback) (<br>window_realized))), (((void*)0)), ((void*)0), (GConnectFlags)<br> 0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="4072"><td class="num" id="LN4072">4072</td><td class="line"> <span class='macro'>g_signal_connect (window,<span class='macro_popup'>g_signal_connect_data ((window), ("unrealize"), (((GCallback)<br> (window_unrealized))), (((void*)0)), ((void*)0), (GConnectFlags<br>) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="4073"><td class="num" id="LN4073">4073</td><td class="line"> <span class='string_literal'><span class='macro'>"unrealize"</span>,<span class='macro_popup'>g_signal_connect_data ((window), ("unrealize"), (((GCallback)<br> (window_unrealized))), (((void*)0)), ((void*)0), (GConnectFlags<br>) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="4074"><td class="num" id="LN4074">4074</td><td class="line"> <span class='macro'>G_CALLBACK (window_unrealized),<span class='macro_popup'>g_signal_connect_data ((window), ("unrealize"), (((GCallback)<br> (window_unrealized))), (((void*)0)), ((void*)0), (GConnectFlags<br>) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="4075"><td class="num" id="LN4075">4075</td><td class="line"> <span class='macro'>NULL)<span class='macro_popup'>g_signal_connect_data ((window), ("unrealize"), (((GCallback)<br> (window_unrealized))), (((void*)0)), ((void*)0), (GConnectFlags<br>) 0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="4076"><td class="num" id="LN4076">4076</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="4077"><td class="num" id="LN4077">4077</td><td class="line"> <span class='comment'>/* Check if the window is active for fullscreen */</span></td></tr>
+<tr class="codeline" data-linenumber="4078"><td class="num" id="LN4078">4078</td><td class="line"> <span class='macro'>g_signal_connect (window,<span class='macro_popup'>g_signal_connect_data ((window), ("notify::is-active"), (((GCallback<br>) (check_window_is_active))), (((void*)0)), ((void*)0), (GConnectFlags<br>) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="4079"><td class="num" id="LN4079">4079</td><td class="line"> <span class='string_literal'><span class='macro'>"notify::is-active"</span>,<span class='macro_popup'>g_signal_connect_data ((window), ("notify::is-active"), (((GCallback<br>) (check_window_is_active))), (((void*)0)), ((void*)0), (GConnectFlags<br>) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="4080"><td class="num" id="LN4080">4080</td><td class="line"> <span class='macro'>G_CALLBACK (check_window_is_active),<span class='macro_popup'>g_signal_connect_data ((window), ("notify::is-active"), (((GCallback<br>) (check_window_is_active))), (((void*)0)), ((void*)0), (GConnectFlags<br>) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="4081"><td class="num" id="LN4081">4081</td><td class="line"> <span class='macro'>NULL)<span class='macro_popup'>g_signal_connect_data ((window), ("notify::is-active"), (((GCallback<br>) (check_window_is_active))), (((void*)0)), ((void*)0), (GConnectFlags<br>) 0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="4082"><td class="num" id="LN4082">4082</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="4083"><td class="num" id="LN4083">4083</td><td class="line"> pluma_debug_message (<span class='macro'>DEBUG_WINDOW<span class='macro_popup'>PLUMA_DEBUG_WINDOW, "pluma-window.c", 4083, ((const char*) (__func__<br>))</span></span>, <span class='string_literal'>"Update plugins ui"</span>);</td></tr>
+<tr class="codeline" data-linenumber="4084"><td class="num" id="LN4084">4084</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="4085"><td class="num" id="LN4085">4085</td><td class="line"> window-&gt;priv-&gt;extensions = peas_extension_set_new (<span class='macro'>PEAS_ENGINE (pluma_plugins_engine_get_default ())<span class='macro_popup'>((((PeasEngine*) (void *) ((pluma_plugins_engine_get_default (<br>))))))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="4086"><td class="num" id="LN4086">4086</td><td class="line"> <span class='macro'>PLUMA_TYPE_WINDOW_ACTIVATABLE<span class='macro_popup'>(pluma_window_activatable_get_type ())</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="4087"><td class="num" id="LN4087">4087</td><td class="line"> <span class='string_literal'>"window"</span>,</td></tr>
+<tr class="codeline" data-linenumber="4088"><td class="num" id="LN4088">4088</td><td class="line"> window,</td></tr>
+<tr class="codeline" data-linenumber="4089"><td class="num" id="LN4089">4089</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="4090"><td class="num" id="LN4090">4090</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="4091"><td class="num" id="LN4091">4091</td><td class="line"> <span class='macro'>g_signal_connect (window-&gt;priv-&gt;extensions, <span class='string_literal'>"extension-added"</span>,<span class='macro_popup'>g_signal_connect_data ((window-&gt;priv-&gt;extensions), ("extension-added"<br>), (((GCallback) (on_extension_added))), (window), ((void*)0)<br>, (GConnectFlags) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="4092"><td class="num" id="LN4092">4092</td><td class="line"> <span class='macro'>G_CALLBACK (on_extension_added),<span class='macro_popup'>g_signal_connect_data ((window-&gt;priv-&gt;extensions), ("extension-added"<br>), (((GCallback) (on_extension_added))), (window), ((void*)0)<br>, (GConnectFlags) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="4093"><td class="num" id="LN4093">4093</td><td class="line"> <span class='macro'>window)<span class='macro_popup'>g_signal_connect_data ((window-&gt;priv-&gt;extensions), ("extension-added"<br>), (((GCallback) (on_extension_added))), (window), ((void*)0)<br>, (GConnectFlags) 0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="4094"><td class="num" id="LN4094">4094</td><td class="line"> <span class='macro'>g_signal_connect (window-&gt;priv-&gt;extensions, <span class='string_literal'>"extension-removed"</span>,<span class='macro_popup'>g_signal_connect_data ((window-&gt;priv-&gt;extensions), ("extension-removed"<br>), (((GCallback) (on_extension_removed))), (window), ((void*)<br>0), (GConnectFlags) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="4095"><td class="num" id="LN4095">4095</td><td class="line"> <span class='macro'>G_CALLBACK (on_extension_removed),<span class='macro_popup'>g_signal_connect_data ((window-&gt;priv-&gt;extensions), ("extension-removed"<br>), (((GCallback) (on_extension_removed))), (window), ((void*)<br>0), (GConnectFlags) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="4096"><td class="num" id="LN4096">4096</td><td class="line"> <span class='macro'>window)<span class='macro_popup'>g_signal_connect_data ((window-&gt;priv-&gt;extensions), ("extension-removed"<br>), (((GCallback) (on_extension_removed))), (window), ((void*)<br>0), (GConnectFlags) 0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="4097"><td class="num" id="LN4097">4097</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="4098"><td class="num" id="LN4098">4098</td><td class="line"> peas_extension_set_call (window-&gt;priv-&gt;extensions, <span class='string_literal'>"activate"</span>);</td></tr>
+<tr class="codeline" data-linenumber="4099"><td class="num" id="LN4099">4099</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="4100"><td class="num" id="LN4100">4100</td><td class="line"> <span class='comment'>/* set visibility of panes.</span></td></tr>
+<tr class="codeline" data-linenumber="4101"><td class="num" id="LN4101">4101</td><td class="line"> <span class='comment'>* This needs to be done after plugins activatation */</span></td></tr>
+<tr class="codeline" data-linenumber="4102"><td class="num" id="LN4102">4102</td><td class="line"> init_panels_visibility (window);</td></tr>
+<tr class="codeline" data-linenumber="4103"><td class="num" id="LN4103">4103</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="4104"><td class="num" id="LN4104">4104</td><td class="line"> update_sensitivity_according_to_open_tabs (window);</td></tr>
+<tr class="codeline" data-linenumber="4105"><td class="num" id="LN4105">4105</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="4106"><td class="num" id="LN4106">4106</td><td class="line"> pluma_debug_message (<span class='macro'>DEBUG_WINDOW<span class='macro_popup'>PLUMA_DEBUG_WINDOW, "pluma-window.c", 4106, ((const char*) (__func__<br>))</span></span>, <span class='string_literal'>"END"</span>);</td></tr>
+<tr class="codeline" data-linenumber="4107"><td class="num" id="LN4107">4107</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="4108"><td class="num" id="LN4108">4108</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="4109"><td class="num" id="LN4109">4109</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="4110"><td class="num" id="LN4110">4110</td><td class="line"> <span class='comment'>* pluma_window_get_active_view:</span></td></tr>
+<tr class="codeline" data-linenumber="4111"><td class="num" id="LN4111">4111</td><td class="line"> <span class='comment'>* @window: a #PlumaWindow</span></td></tr>
+<tr class="codeline" data-linenumber="4112"><td class="num" id="LN4112">4112</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="4113"><td class="num" id="LN4113">4113</td><td class="line"> <span class='comment'>* Gets the active #PlumaView.</span></td></tr>
+<tr class="codeline" data-linenumber="4114"><td class="num" id="LN4114">4114</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="4115"><td class="num" id="LN4115">4115</td><td class="line"> <span class='comment'>* Returns: (transfer none): the active #PlumaView</span></td></tr>
+<tr class="codeline" data-linenumber="4116"><td class="num" id="LN4116">4116</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="4117"><td class="num" id="LN4117">4117</td><td class="line">PlumaView *</td></tr>
+<tr class="codeline" data-linenumber="4118"><td class="num" id="LN4118">4118</td><td class="line">pluma_window_get_active_view (PlumaWindow *window)</td></tr>
+<tr class="codeline" data-linenumber="4119"><td class="num" id="LN4119">4119</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="4120"><td class="num" id="LN4120">4120</td><td class="line"> PlumaView *view;</td></tr>
+<tr class="codeline" data-linenumber="4121"><td class="num" id="LN4121">4121</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="4122"><td class="num" id="LN4122">4122</td><td class="line"> <span class='macro'>g_return_val_if_fail (PLUMA_IS_WINDOW (window), NULL)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_82<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((window)); GType __t = ((pluma_window_get_type())); gboolean<br> __r; if (!__inst) __r = (0); else if (__inst-&gt;g_class &amp;&amp;<br> __inst-&gt;g_class-&gt;g_type == __t) __r = (!(0)); else __r<br> = g_type_check_instance_is_a (__inst, __t); __r; }))))) _g_boolean_var_82<br> = 1; else _g_boolean_var_82 = 0; _g_boolean_var_82; }), 1)))<br> { } else { g_return_if_fail_warning (((gchar*) 0), ((const char<br>*) (__func__)), "PLUMA_IS_WINDOW (window)"); return (((void*)<br>0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="4123"><td class="num" id="LN4123">4123</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="4124"><td class="num" id="LN4124">4124</td><td class="line"> <span class='keyword'>if</span> (window-&gt;priv-&gt;active_tab == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="4125"><td class="num" id="LN4125">4125</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="4126"><td class="num" id="LN4126">4126</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="4127"><td class="num" id="LN4127">4127</td><td class="line"> view = pluma_tab_get_view (<span class='macro'>PLUMA_TAB (window-&gt;priv-&gt;active_tab)<span class='macro_popup'>((((PlumaTab*) (void *) ((window-&gt;priv-&gt;active_tab)))))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="4128"><td class="num" id="LN4128">4128</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="4129"><td class="num" id="LN4129">4129</td><td class="line"> <span class='keyword'>return</span> view;</td></tr>
+<tr class="codeline" data-linenumber="4130"><td class="num" id="LN4130">4130</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="4131"><td class="num" id="LN4131">4131</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="4132"><td class="num" id="LN4132">4132</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="4133"><td class="num" id="LN4133">4133</td><td class="line"> <span class='comment'>* pluma_window_get_active_document:</span></td></tr>
+<tr class="codeline" data-linenumber="4134"><td class="num" id="LN4134">4134</td><td class="line"> <span class='comment'>* @window: a #PlumaWindow</span></td></tr>
+<tr class="codeline" data-linenumber="4135"><td class="num" id="LN4135">4135</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="4136"><td class="num" id="LN4136">4136</td><td class="line"> <span class='comment'>* Gets the active #PlumaDocument.</span></td></tr>
+<tr class="codeline" data-linenumber="4137"><td class="num" id="LN4137">4137</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="4138"><td class="num" id="LN4138">4138</td><td class="line"> <span class='comment'>* Returns: (transfer none): the active #PlumaDocument</span></td></tr>
+<tr class="codeline" data-linenumber="4139"><td class="num" id="LN4139">4139</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="4140"><td class="num" id="LN4140">4140</td><td class="line">PlumaDocument *</td></tr>
+<tr class="codeline" data-linenumber="4141"><td class="num" id="LN4141">4141</td><td class="line">pluma_window_get_active_document (PlumaWindow *window)</td></tr>
+<tr class="codeline" data-linenumber="4142"><td class="num" id="LN4142">4142</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="4143"><td class="num" id="LN4143">4143</td><td class="line"> PlumaView *view;</td></tr>
+<tr class="codeline" data-linenumber="4144"><td class="num" id="LN4144">4144</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="4145"><td class="num" id="LN4145">4145</td><td class="line"> <span class='macro'>g_return_val_if_fail (PLUMA_IS_WINDOW (window), NULL)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_83<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((window)); GType __t = ((pluma_window_get_type())); gboolean<br> __r; if (!__inst) __r = (0); else if (__inst-&gt;g_class &amp;&amp;<br> __inst-&gt;g_class-&gt;g_type == __t) __r = (!(0)); else __r<br> = g_type_check_instance_is_a (__inst, __t); __r; }))))) _g_boolean_var_83<br> = 1; else _g_boolean_var_83 = 0; _g_boolean_var_83; }), 1)))<br> { } else { g_return_if_fail_warning (((gchar*) 0), ((const char<br>*) (__func__)), "PLUMA_IS_WINDOW (window)"); return (((void*)<br>0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="4146"><td class="num" id="LN4146">4146</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="4147"><td class="num" id="LN4147">4147</td><td class="line"> view = pluma_window_get_active_view (window);</td></tr>
+<tr class="codeline" data-linenumber="4148"><td class="num" id="LN4148">4148</td><td class="line"> <span class='keyword'>if</span> (view == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="4149"><td class="num" id="LN4149">4149</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="4150"><td class="num" id="LN4150">4150</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="4151"><td class="num" id="LN4151">4151</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>PLUMA_DOCUMENT (gtk_text_view_get_buffer (GTK_TEXT_VIEW (view)))<span class='macro_popup'>((((PlumaDocument*) (void *) ((gtk_text_view_get_buffer (((((<br>GtkTextView*) (void *) ((view)))))))))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="4152"><td class="num" id="LN4152">4152</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="4153"><td class="num" id="LN4153">4153</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="4154"><td class="num" id="LN4154">4154</td><td class="line">GtkWidget *</td></tr>
+<tr class="codeline" data-linenumber="4155"><td class="num" id="LN4155">4155</td><td class="line">_pluma_window_get_notebook (PlumaWindow *window)</td></tr>
+<tr class="codeline" data-linenumber="4156"><td class="num" id="LN4156">4156</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="4157"><td class="num" id="LN4157">4157</td><td class="line"> <span class='macro'>g_return_val_if_fail (PLUMA_IS_WINDOW (window), NULL)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_84<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((window)); GType __t = ((pluma_window_get_type())); gboolean<br> __r; if (!__inst) __r = (0); else if (__inst-&gt;g_class &amp;&amp;<br> __inst-&gt;g_class-&gt;g_type == __t) __r = (!(0)); else __r<br> = g_type_check_instance_is_a (__inst, __t); __r; }))))) _g_boolean_var_84<br> = 1; else _g_boolean_var_84 = 0; _g_boolean_var_84; }), 1)))<br> { } else { g_return_if_fail_warning (((gchar*) 0), ((const char<br>*) (__func__)), "PLUMA_IS_WINDOW (window)"); return (((void*)<br>0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="4158"><td class="num" id="LN4158">4158</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="4159"><td class="num" id="LN4159">4159</td><td class="line"> <span class='keyword'>return</span> window-&gt;priv-&gt;notebook;</td></tr>
+<tr class="codeline" data-linenumber="4160"><td class="num" id="LN4160">4160</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="4161"><td class="num" id="LN4161">4161</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="4162"><td class="num" id="LN4162">4162</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="4163"><td class="num" id="LN4163">4163</td><td class="line"> <span class='comment'>* pluma_window_create_tab:</span></td></tr>
+<tr class="codeline" data-linenumber="4164"><td class="num" id="LN4164">4164</td><td class="line"> <span class='comment'>* @window: a #PlumaWindow</span></td></tr>
+<tr class="codeline" data-linenumber="4165"><td class="num" id="LN4165">4165</td><td class="line"> <span class='comment'>* @jump_to: %TRUE to set the new #PlumaTab as active</span></td></tr>
+<tr class="codeline" data-linenumber="4166"><td class="num" id="LN4166">4166</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="4167"><td class="num" id="LN4167">4167</td><td class="line"> <span class='comment'>* Creates a new #PlumaTab and adds the new tab to the #PlumaNotebook.</span></td></tr>
+<tr class="codeline" data-linenumber="4168"><td class="num" id="LN4168">4168</td><td class="line"> <span class='comment'>* In case @jump_to is %TRUE the #PlumaNotebook switches to that new #PlumaTab.</span></td></tr>
+<tr class="codeline" data-linenumber="4169"><td class="num" id="LN4169">4169</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="4170"><td class="num" id="LN4170">4170</td><td class="line"> <span class='comment'>* Returns: (transfer none): a new #PlumaTab</span></td></tr>
+<tr class="codeline" data-linenumber="4171"><td class="num" id="LN4171">4171</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="4172"><td class="num" id="LN4172">4172</td><td class="line">PlumaTab *</td></tr>
+<tr class="codeline" data-linenumber="4173"><td class="num" id="LN4173">4173</td><td class="line">pluma_window_create_tab (PlumaWindow *window,</td></tr>
+<tr class="codeline" data-linenumber="4174"><td class="num" id="LN4174">4174</td><td class="line"> gboolean jump_to)</td></tr>
+<tr class="codeline" data-linenumber="4175"><td class="num" id="LN4175">4175</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="4176"><td class="num" id="LN4176">4176</td><td class="line"> PlumaTab *tab;</td></tr>
+<tr class="codeline" data-linenumber="4177"><td class="num" id="LN4177">4177</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="4178"><td class="num" id="LN4178">4178</td><td class="line"> <span class='macro'>g_return_val_if_fail (PLUMA_IS_WINDOW (window), NULL)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_85<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((window)); GType __t = ((pluma_window_get_type())); gboolean<br> __r; if (!__inst) __r = (0); else if (__inst-&gt;g_class &amp;&amp;<br> __inst-&gt;g_class-&gt;g_type == __t) __r = (!(0)); else __r<br> = g_type_check_instance_is_a (__inst, __t); __r; }))))) _g_boolean_var_85<br> = 1; else _g_boolean_var_85 = 0; _g_boolean_var_85; }), 1)))<br> { } else { g_return_if_fail_warning (((gchar*) 0), ((const char<br>*) (__func__)), "PLUMA_IS_WINDOW (window)"); return (((void*)<br>0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="4179"><td class="num" id="LN4179">4179</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="4180"><td class="num" id="LN4180">4180</td><td class="line"> tab = <span class='macro'>PLUMA_TAB (_pluma_tab_new ())<span class='macro_popup'>((((PlumaTab*) (void *) ((_pluma_tab_new ())))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="4181"><td class="num" id="LN4181">4181</td><td class="line"> gtk_widget_show (<span class='macro'>GTK_WIDGET (tab)<span class='macro_popup'>((((GtkWidget*) (void *) ((tab)))))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="4182"><td class="num" id="LN4182">4182</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="4183"><td class="num" id="LN4183">4183</td><td class="line"> pluma_notebook_add_tab (<span class='macro'>PLUMA_NOTEBOOK (window-&gt;priv-&gt;notebook)<span class='macro_popup'>((((PlumaNotebook*) (void *) ((window-&gt;priv-&gt;notebook))<br>)))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="4184"><td class="num" id="LN4184">4184</td><td class="line"> tab,</td></tr>
+<tr class="codeline" data-linenumber="4185"><td class="num" id="LN4185">4185</td><td class="line"> -1,</td></tr>
+<tr class="codeline" data-linenumber="4186"><td class="num" id="LN4186">4186</td><td class="line"> jump_to);</td></tr>
+<tr class="codeline" data-linenumber="4187"><td class="num" id="LN4187">4187</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="4188"><td class="num" id="LN4188">4188</td><td class="line"> <span class='keyword'>if</span> (!gtk_widget_get_visible (<span class='macro'>GTK_WIDGET (window)<span class='macro_popup'>((((GtkWidget*) (void *) ((window)))))</span></span>))</td></tr>
+<tr class="codeline" data-linenumber="4189"><td class="num" id="LN4189">4189</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="4190"><td class="num" id="LN4190">4190</td><td class="line"> gtk_window_present (<span class='macro'>GTK_WINDOW (window)<span class='macro_popup'>((((GtkWindow*) (void *) ((window)))))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="4191"><td class="num" id="LN4191">4191</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="4192"><td class="num" id="LN4192">4192</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="4193"><td class="num" id="LN4193">4193</td><td class="line"> <span class='keyword'>return</span> tab;</td></tr>
+<tr class="codeline" data-linenumber="4194"><td class="num" id="LN4194">4194</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="4195"><td class="num" id="LN4195">4195</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="4196"><td class="num" id="LN4196">4196</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="4197"><td class="num" id="LN4197">4197</td><td class="line"> <span class='comment'>* pluma_window_create_tab_from_uri:</span></td></tr>
+<tr class="codeline" data-linenumber="4198"><td class="num" id="LN4198">4198</td><td class="line"> <span class='comment'>* @window: a #PlumaWindow</span></td></tr>
+<tr class="codeline" data-linenumber="4199"><td class="num" id="LN4199">4199</td><td class="line"> <span class='comment'>* @uri: the uri of the document</span></td></tr>
+<tr class="codeline" data-linenumber="4200"><td class="num" id="LN4200">4200</td><td class="line"> <span class='comment'>* @encoding: a #PlumaEncoding</span></td></tr>
+<tr class="codeline" data-linenumber="4201"><td class="num" id="LN4201">4201</td><td class="line"> <span class='comment'>* @line_pos: the line position to visualize</span></td></tr>
+<tr class="codeline" data-linenumber="4202"><td class="num" id="LN4202">4202</td><td class="line"> <span class='comment'>* @create: %TRUE to create a new document in case @uri does exist</span></td></tr>
+<tr class="codeline" data-linenumber="4203"><td class="num" id="LN4203">4203</td><td class="line"> <span class='comment'>* @jump_to: %TRUE to set the new #PlumaTab as active</span></td></tr>
+<tr class="codeline" data-linenumber="4204"><td class="num" id="LN4204">4204</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="4205"><td class="num" id="LN4205">4205</td><td class="line"> <span class='comment'>* Creates a new #PlumaTab loading the document specified by @uri.</span></td></tr>
+<tr class="codeline" data-linenumber="4206"><td class="num" id="LN4206">4206</td><td class="line"> <span class='comment'>* In case @jump_to is %TRUE the #PlumaNotebook swithes to that new #PlumaTab.</span></td></tr>
+<tr class="codeline" data-linenumber="4207"><td class="num" id="LN4207">4207</td><td class="line"> <span class='comment'>* Whether @create is %TRUE, creates a new empty document if location does</span></td></tr>
+<tr class="codeline" data-linenumber="4208"><td class="num" id="LN4208">4208</td><td class="line"> <span class='comment'>* not refer to an existing file</span></td></tr>
+<tr class="codeline" data-linenumber="4209"><td class="num" id="LN4209">4209</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="4210"><td class="num" id="LN4210">4210</td><td class="line"> <span class='comment'>* Returns: (transfer none): a new #PlumaTab</span></td></tr>
+<tr class="codeline" data-linenumber="4211"><td class="num" id="LN4211">4211</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="4212"><td class="num" id="LN4212">4212</td><td class="line">PlumaTab *</td></tr>
+<tr class="codeline" data-linenumber="4213"><td class="num" id="LN4213">4213</td><td class="line">pluma_window_create_tab_from_uri (PlumaWindow *window,</td></tr>
+<tr class="codeline" data-linenumber="4214"><td class="num" id="LN4214">4214</td><td class="line"> <span class='keyword'>const</span> gchar *uri,</td></tr>
+<tr class="codeline" data-linenumber="4215"><td class="num" id="LN4215">4215</td><td class="line"> <span class='keyword'>const</span> PlumaEncoding *encoding,</td></tr>
+<tr class="codeline" data-linenumber="4216"><td class="num" id="LN4216">4216</td><td class="line"> gint line_pos,</td></tr>
+<tr class="codeline" data-linenumber="4217"><td class="num" id="LN4217">4217</td><td class="line"> gboolean create,</td></tr>
+<tr class="codeline" data-linenumber="4218"><td class="num" id="LN4218">4218</td><td class="line"> gboolean jump_to)</td></tr>
+<tr class="codeline" data-linenumber="4219"><td class="num" id="LN4219">4219</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="4220"><td class="num" id="LN4220">4220</td><td class="line"> GtkWidget *tab;</td></tr>
+<tr class="codeline" data-linenumber="4221"><td class="num" id="LN4221">4221</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="4222"><td class="num" id="LN4222">4222</td><td class="line"> <span class='macro'>g_return_val_if_fail (PLUMA_IS_WINDOW (window), NULL)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_86<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((window)); GType __t = ((pluma_window_get_type())); gboolean<br> __r; if (!__inst) __r = (0); else if (__inst-&gt;g_class &amp;&amp;<br> __inst-&gt;g_class-&gt;g_type == __t) __r = (!(0)); else __r<br> = g_type_check_instance_is_a (__inst, __t); __r; }))))) _g_boolean_var_86<br> = 1; else _g_boolean_var_86 = 0; _g_boolean_var_86; }), 1)))<br> { } else { g_return_if_fail_warning (((gchar*) 0), ((const char<br>*) (__func__)), "PLUMA_IS_WINDOW (window)"); return (((void*)<br>0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="4223"><td class="num" id="LN4223">4223</td><td class="line"> <span class='macro'>g_return_val_if_fail (uri != NULL, NULL)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_87<br>; if (uri != ((void*)0)) _g_boolean_var_87 = 1; else _g_boolean_var_87<br> = 0; _g_boolean_var_87; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "uri != NULL"); return<br> (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="4224"><td class="num" id="LN4224">4224</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="4225"><td class="num" id="LN4225">4225</td><td class="line"> tab = _pluma_tab_new_from_uri (uri,</td></tr>
+<tr class="codeline" data-linenumber="4226"><td class="num" id="LN4226">4226</td><td class="line"> encoding,</td></tr>
+<tr class="codeline" data-linenumber="4227"><td class="num" id="LN4227">4227</td><td class="line"> line_pos,</td></tr>
+<tr class="codeline" data-linenumber="4228"><td class="num" id="LN4228">4228</td><td class="line"> create);</td></tr>
+<tr class="codeline" data-linenumber="4229"><td class="num" id="LN4229">4229</td><td class="line"> <span class='keyword'>if</span> (tab == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="4230"><td class="num" id="LN4230">4230</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="4231"><td class="num" id="LN4231">4231</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="4232"><td class="num" id="LN4232">4232</td><td class="line"> gtk_widget_show (tab);</td></tr>
+<tr class="codeline" data-linenumber="4233"><td class="num" id="LN4233">4233</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="4234"><td class="num" id="LN4234">4234</td><td class="line"> pluma_notebook_add_tab (<span class='macro'>PLUMA_NOTEBOOK (window-&gt;priv-&gt;notebook)<span class='macro_popup'>((((PlumaNotebook*) (void *) ((window-&gt;priv-&gt;notebook))<br>)))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="4235"><td class="num" id="LN4235">4235</td><td class="line"> <span class='macro'>PLUMA_TAB (tab)<span class='macro_popup'>((((PlumaTab*) (void *) ((tab)))))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="4236"><td class="num" id="LN4236">4236</td><td class="line"> -1,</td></tr>
+<tr class="codeline" data-linenumber="4237"><td class="num" id="LN4237">4237</td><td class="line"> jump_to);</td></tr>
+<tr class="codeline" data-linenumber="4238"><td class="num" id="LN4238">4238</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="4239"><td class="num" id="LN4239">4239</td><td class="line"> <span class='keyword'>if</span> (!gtk_widget_get_visible (<span class='macro'>GTK_WIDGET (window)<span class='macro_popup'>((((GtkWidget*) (void *) ((window)))))</span></span>))</td></tr>
+<tr class="codeline" data-linenumber="4240"><td class="num" id="LN4240">4240</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="4241"><td class="num" id="LN4241">4241</td><td class="line"> gtk_window_present (<span class='macro'>GTK_WINDOW (window)<span class='macro_popup'>((((GtkWindow*) (void *) ((window)))))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="4242"><td class="num" id="LN4242">4242</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="4243"><td class="num" id="LN4243">4243</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="4244"><td class="num" id="LN4244">4244</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>PLUMA_TAB (tab)<span class='macro_popup'>((((PlumaTab*) (void *) ((tab)))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="4245"><td class="num" id="LN4245">4245</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="4246"><td class="num" id="LN4246">4246</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="4247"><td class="num" id="LN4247">4247</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="4248"><td class="num" id="LN4248">4248</td><td class="line"> <span class='comment'>* pluma_window_get_active_tab:</span></td></tr>
+<tr class="codeline" data-linenumber="4249"><td class="num" id="LN4249">4249</td><td class="line"> <span class='comment'>* @window: a PlumaWindow</span></td></tr>
+<tr class="codeline" data-linenumber="4250"><td class="num" id="LN4250">4250</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="4251"><td class="num" id="LN4251">4251</td><td class="line"> <span class='comment'>* Gets the active #PlumaTab in the @window.</span></td></tr>
+<tr class="codeline" data-linenumber="4252"><td class="num" id="LN4252">4252</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="4253"><td class="num" id="LN4253">4253</td><td class="line"> <span class='comment'>* Returns: (transfer none): the active #PlumaTab in the @window.</span></td></tr>
+<tr class="codeline" data-linenumber="4254"><td class="num" id="LN4254">4254</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="4255"><td class="num" id="LN4255">4255</td><td class="line">PlumaTab *</td></tr>
+<tr class="codeline" data-linenumber="4256"><td class="num" id="LN4256">4256</td><td class="line">pluma_window_get_active_tab (PlumaWindow *window)</td></tr>
+<tr class="codeline" data-linenumber="4257"><td class="num" id="LN4257">4257</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="4258"><td class="num" id="LN4258">4258</td><td class="line"> <span class='macro'>g_return_val_if_fail (PLUMA_IS_WINDOW (window), NULL)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_88<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((window)); GType __t = ((pluma_window_get_type())); gboolean<br> __r; if (!__inst) __r = (0); else if (__inst-&gt;g_class &amp;&amp;<br> __inst-&gt;g_class-&gt;g_type == __t) __r = (!(0)); else __r<br> = g_type_check_instance_is_a (__inst, __t); __r; }))))) _g_boolean_var_88<br> = 1; else _g_boolean_var_88 = 0; _g_boolean_var_88; }), 1)))<br> { } else { g_return_if_fail_warning (((gchar*) 0), ((const char<br>*) (__func__)), "PLUMA_IS_WINDOW (window)"); return (((void*)<br>0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="4259"><td class="num" id="LN4259">4259</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="4260"><td class="num" id="LN4260">4260</td><td class="line"> <span class='keyword'>return</span> (window-&gt;priv-&gt;active_tab == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) ?</td></tr>
+<tr class="codeline" data-linenumber="4261"><td class="num" id="LN4261">4261</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> : <span class='macro'>PLUMA_TAB (window-&gt;priv-&gt;active_tab)<span class='macro_popup'>((((PlumaTab*) (void *) ((window-&gt;priv-&gt;active_tab)))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="4262"><td class="num" id="LN4262">4262</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="4263"><td class="num" id="LN4263">4263</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="4264"><td class="num" id="LN4264">4264</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="4265"><td class="num" id="LN4265">4265</td><td class="line">add_document (PlumaTab *tab, GList **res)</td></tr>
+<tr class="codeline" data-linenumber="4266"><td class="num" id="LN4266">4266</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="4267"><td class="num" id="LN4267">4267</td><td class="line"> PlumaDocument *doc;</td></tr>
+<tr class="codeline" data-linenumber="4268"><td class="num" id="LN4268">4268</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="4269"><td class="num" id="LN4269">4269</td><td class="line"> doc = pluma_tab_get_document (tab);</td></tr>
+<tr class="codeline" data-linenumber="4270"><td class="num" id="LN4270">4270</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="4271"><td class="num" id="LN4271">4271</td><td class="line"> *res = g_list_prepend (*res, doc);</td></tr>
+<tr class="codeline" data-linenumber="4272"><td class="num" id="LN4272">4272</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="4273"><td class="num" id="LN4273">4273</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="4274"><td class="num" id="LN4274">4274</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="4275"><td class="num" id="LN4275">4275</td><td class="line"> <span class='comment'>* pluma_window_get_documents:</span></td></tr>
+<tr class="codeline" data-linenumber="4276"><td class="num" id="LN4276">4276</td><td class="line"> <span class='comment'>* @window: a #PlumaWindow</span></td></tr>
+<tr class="codeline" data-linenumber="4277"><td class="num" id="LN4277">4277</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="4278"><td class="num" id="LN4278">4278</td><td class="line"> <span class='comment'>* Gets a newly allocated list with all the documents in the window.</span></td></tr>
+<tr class="codeline" data-linenumber="4279"><td class="num" id="LN4279">4279</td><td class="line"> <span class='comment'>* This list must be freed.</span></td></tr>
+<tr class="codeline" data-linenumber="4280"><td class="num" id="LN4280">4280</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="4281"><td class="num" id="LN4281">4281</td><td class="line"> <span class='comment'>* Returns: (element-type Pluma.Document) (transfer container): a newly</span></td></tr>
+<tr class="codeline" data-linenumber="4282"><td class="num" id="LN4282">4282</td><td class="line"> <span class='comment'>* allocated list with all the documents in the window</span></td></tr>
+<tr class="codeline" data-linenumber="4283"><td class="num" id="LN4283">4283</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="4284"><td class="num" id="LN4284">4284</td><td class="line">GList *</td></tr>
+<tr class="codeline" data-linenumber="4285"><td class="num" id="LN4285">4285</td><td class="line">pluma_window_get_documents (PlumaWindow *window)</td></tr>
+<tr class="codeline" data-linenumber="4286"><td class="num" id="LN4286">4286</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="4287"><td class="num" id="LN4287">4287</td><td class="line"> GList *res = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="4288"><td class="num" id="LN4288">4288</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="4289"><td class="num" id="LN4289">4289</td><td class="line"> <span class='macro'>g_return_val_if_fail (PLUMA_IS_WINDOW (window), NULL)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_89<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((window)); GType __t = ((pluma_window_get_type())); gboolean<br> __r; if (!__inst) __r = (0); else if (__inst-&gt;g_class &amp;&amp;<br> __inst-&gt;g_class-&gt;g_type == __t) __r = (!(0)); else __r<br> = g_type_check_instance_is_a (__inst, __t); __r; }))))) _g_boolean_var_89<br> = 1; else _g_boolean_var_89 = 0; _g_boolean_var_89; }), 1)))<br> { } else { g_return_if_fail_warning (((gchar*) 0), ((const char<br>*) (__func__)), "PLUMA_IS_WINDOW (window)"); return (((void*)<br>0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="4290"><td class="num" id="LN4290">4290</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="4291"><td class="num" id="LN4291">4291</td><td class="line"> gtk_container_foreach (<span class='macro'>GTK_CONTAINER (window-&gt;priv-&gt;notebook)<span class='macro_popup'>((((GtkContainer*) (void *) ((window-&gt;priv-&gt;notebook)))<br>))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="4292"><td class="num" id="LN4292">4292</td><td class="line"> (GtkCallback)add_document,</td></tr>
+<tr class="codeline" data-linenumber="4293"><td class="num" id="LN4293">4293</td><td class="line"> &amp;res);</td></tr>
+<tr class="codeline" data-linenumber="4294"><td class="num" id="LN4294">4294</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="4295"><td class="num" id="LN4295">4295</td><td class="line"> res = g_list_reverse (res);</td></tr>
+<tr class="codeline" data-linenumber="4296"><td class="num" id="LN4296">4296</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="4297"><td class="num" id="LN4297">4297</td><td class="line"> <span class='keyword'>return</span> res;</td></tr>
+<tr class="codeline" data-linenumber="4298"><td class="num" id="LN4298">4298</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="4299"><td class="num" id="LN4299">4299</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="4300"><td class="num" id="LN4300">4300</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="4301"><td class="num" id="LN4301">4301</td><td class="line">add_view (PlumaTab *tab, GList **res)</td></tr>
+<tr class="codeline" data-linenumber="4302"><td class="num" id="LN4302">4302</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="4303"><td class="num" id="LN4303">4303</td><td class="line"> PlumaView *view;</td></tr>
+<tr class="codeline" data-linenumber="4304"><td class="num" id="LN4304">4304</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="4305"><td class="num" id="LN4305">4305</td><td class="line"> view = pluma_tab_get_view (tab);</td></tr>
+<tr class="codeline" data-linenumber="4306"><td class="num" id="LN4306">4306</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="4307"><td class="num" id="LN4307">4307</td><td class="line"> *res = g_list_prepend (*res, view);</td></tr>
+<tr class="codeline" data-linenumber="4308"><td class="num" id="LN4308">4308</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="4309"><td class="num" id="LN4309">4309</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="4310"><td class="num" id="LN4310">4310</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="4311"><td class="num" id="LN4311">4311</td><td class="line"> <span class='comment'>* pluma_window_get_views:</span></td></tr>
+<tr class="codeline" data-linenumber="4312"><td class="num" id="LN4312">4312</td><td class="line"> <span class='comment'>* @window: a #PlumaWindow</span></td></tr>
+<tr class="codeline" data-linenumber="4313"><td class="num" id="LN4313">4313</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="4314"><td class="num" id="LN4314">4314</td><td class="line"> <span class='comment'>* Gets a list with all the views in the window. This list must be freed.</span></td></tr>
+<tr class="codeline" data-linenumber="4315"><td class="num" id="LN4315">4315</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="4316"><td class="num" id="LN4316">4316</td><td class="line"> <span class='comment'>* Returns: (element-type Pluma.View) (transfer container): a newly allocated</span></td></tr>
+<tr class="codeline" data-linenumber="4317"><td class="num" id="LN4317">4317</td><td class="line"> <span class='comment'>* list with all the views in the window</span></td></tr>
+<tr class="codeline" data-linenumber="4318"><td class="num" id="LN4318">4318</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="4319"><td class="num" id="LN4319">4319</td><td class="line">GList *</td></tr>
+<tr class="codeline" data-linenumber="4320"><td class="num" id="LN4320">4320</td><td class="line">pluma_window_get_views (PlumaWindow *window)</td></tr>
+<tr class="codeline" data-linenumber="4321"><td class="num" id="LN4321">4321</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="4322"><td class="num" id="LN4322">4322</td><td class="line"> GList *res = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="4323"><td class="num" id="LN4323">4323</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="4324"><td class="num" id="LN4324">4324</td><td class="line"> <span class='macro'>g_return_val_if_fail (PLUMA_IS_WINDOW (window), NULL)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_90<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((window)); GType __t = ((pluma_window_get_type())); gboolean<br> __r; if (!__inst) __r = (0); else if (__inst-&gt;g_class &amp;&amp;<br> __inst-&gt;g_class-&gt;g_type == __t) __r = (!(0)); else __r<br> = g_type_check_instance_is_a (__inst, __t); __r; }))))) _g_boolean_var_90<br> = 1; else _g_boolean_var_90 = 0; _g_boolean_var_90; }), 1)))<br> { } else { g_return_if_fail_warning (((gchar*) 0), ((const char<br>*) (__func__)), "PLUMA_IS_WINDOW (window)"); return (((void*)<br>0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="4325"><td class="num" id="LN4325">4325</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="4326"><td class="num" id="LN4326">4326</td><td class="line"> gtk_container_foreach (<span class='macro'>GTK_CONTAINER (window-&gt;priv-&gt;notebook)<span class='macro_popup'>((((GtkContainer*) (void *) ((window-&gt;priv-&gt;notebook)))<br>))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="4327"><td class="num" id="LN4327">4327</td><td class="line"> (GtkCallback)add_view,</td></tr>
+<tr class="codeline" data-linenumber="4328"><td class="num" id="LN4328">4328</td><td class="line"> &amp;res);</td></tr>
+<tr class="codeline" data-linenumber="4329"><td class="num" id="LN4329">4329</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="4330"><td class="num" id="LN4330">4330</td><td class="line"> res = g_list_reverse (res);</td></tr>
+<tr class="codeline" data-linenumber="4331"><td class="num" id="LN4331">4331</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="4332"><td class="num" id="LN4332">4332</td><td class="line"> <span class='keyword'>return</span> res;</td></tr>
+<tr class="codeline" data-linenumber="4333"><td class="num" id="LN4333">4333</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="4334"><td class="num" id="LN4334">4334</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="4335"><td class="num" id="LN4335">4335</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="4336"><td class="num" id="LN4336">4336</td><td class="line"> <span class='comment'>* pluma_window_close_tab:</span></td></tr>
+<tr class="codeline" data-linenumber="4337"><td class="num" id="LN4337">4337</td><td class="line"> <span class='comment'>* @window: a #PlumaWindow</span></td></tr>
+<tr class="codeline" data-linenumber="4338"><td class="num" id="LN4338">4338</td><td class="line"> <span class='comment'>* @tab: the #PlumaTab to close</span></td></tr>
+<tr class="codeline" data-linenumber="4339"><td class="num" id="LN4339">4339</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="4340"><td class="num" id="LN4340">4340</td><td class="line"> <span class='comment'>* Closes the @tab.</span></td></tr>
+<tr class="codeline" data-linenumber="4341"><td class="num" id="LN4341">4341</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="4342"><td class="num" id="LN4342">4342</td><td class="line"><span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="4343"><td class="num" id="LN4343">4343</td><td class="line">pluma_window_close_tab (PlumaWindow *window,</td></tr>
+<tr class="codeline" data-linenumber="4344"><td class="num" id="LN4344">4344</td><td class="line"> PlumaTab *tab)</td></tr>
+<tr class="codeline" data-linenumber="4345"><td class="num" id="LN4345">4345</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="4346"><td class="num" id="LN4346">4346</td><td class="line"> <span class='macro'>g_return_if_fail (PLUMA_IS_WINDOW (window))<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_91<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((window)); GType __t = ((pluma_window_get_type())); gboolean<br> __r; if (!__inst) __r = (0); else if (__inst-&gt;g_class &amp;&amp;<br> __inst-&gt;g_class-&gt;g_type == __t) __r = (!(0)); else __r<br> = g_type_check_instance_is_a (__inst, __t); __r; }))))) _g_boolean_var_91<br> = 1; else _g_boolean_var_91 = 0; _g_boolean_var_91; }), 1)))<br> { } else { g_return_if_fail_warning (((gchar*) 0), ((const char<br>*) (__func__)), "PLUMA_IS_WINDOW (window)"); return; } } while<br> (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="4347"><td class="num" id="LN4347">4347</td><td class="line"> <span class='macro'>g_return_if_fail (PLUMA_IS_TAB (tab))<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_92<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((tab)); GType __t = ((pluma_tab_get_type())); gboolean __r<br>; if (!__inst) __r = (0); else if (__inst-&gt;g_class &amp;&amp;<br> __inst-&gt;g_class-&gt;g_type == __t) __r = (!(0)); else __r<br> = g_type_check_instance_is_a (__inst, __t); __r; }))))) _g_boolean_var_92<br> = 1; else _g_boolean_var_92 = 0; _g_boolean_var_92; }), 1)))<br> { } else { g_return_if_fail_warning (((gchar*) 0), ((const char<br>*) (__func__)), "PLUMA_IS_TAB (tab)"); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="4348"><td class="num" id="LN4348">4348</td><td class="line"> <span class='macro'>g_return_if_fail ((pluma_tab_get_state (tab) != PLUMA_TAB_STATE_SAVING) &amp;&amp;<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_93<br>; if ((pluma_tab_get_state (tab) != PLUMA_TAB_STATE_SAVING) &amp;&amp;<br> (pluma_tab_get_state (tab) != PLUMA_TAB_STATE_SHOWING_PRINT_PREVIEW<br>)) _g_boolean_var_93 = 1; else _g_boolean_var_93 = 0; _g_boolean_var_93<br>; }), 1))) { } else { g_return_if_fail_warning (((gchar*) 0),<br> ((const char*) (__func__)), "(pluma_tab_get_state (tab) != PLUMA_TAB_STATE_SAVING) &amp;&amp; (pluma_tab_get_state (tab) != PLUMA_TAB_STATE_SHOWING_PRINT_PREVIEW)"<br>); return; } } while (0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="4349"><td class="num" id="LN4349">4349</td><td class="line"> <span class='macro'>(pluma_tab_get_state (tab) != PLUMA_TAB_STATE_SHOWING_PRINT_PREVIEW))<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_93<br>; if ((pluma_tab_get_state (tab) != PLUMA_TAB_STATE_SAVING) &amp;&amp;<br> (pluma_tab_get_state (tab) != PLUMA_TAB_STATE_SHOWING_PRINT_PREVIEW<br>)) _g_boolean_var_93 = 1; else _g_boolean_var_93 = 0; _g_boolean_var_93<br>; }), 1))) { } else { g_return_if_fail_warning (((gchar*) 0),<br> ((const char*) (__func__)), "(pluma_tab_get_state (tab) != PLUMA_TAB_STATE_SAVING) &amp;&amp; (pluma_tab_get_state (tab) != PLUMA_TAB_STATE_SHOWING_PRINT_PREVIEW)"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="4350"><td class="num" id="LN4350">4350</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="4351"><td class="num" id="LN4351">4351</td><td class="line"> pluma_notebook_remove_tab (<span class='macro'>PLUMA_NOTEBOOK (window-&gt;priv-&gt;notebook)<span class='macro_popup'>((((PlumaNotebook*) (void *) ((window-&gt;priv-&gt;notebook))<br>)))</span></span>, tab);</td></tr>
+<tr class="codeline" data-linenumber="4352"><td class="num" id="LN4352">4352</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="4353"><td class="num" id="LN4353">4353</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="4354"><td class="num" id="LN4354">4354</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="4355"><td class="num" id="LN4355">4355</td><td class="line"> <span class='comment'>* pluma_window_close_all_tabs:</span></td></tr>
+<tr class="codeline" data-linenumber="4356"><td class="num" id="LN4356">4356</td><td class="line"> <span class='comment'>* @window: a #PlumaWindow</span></td></tr>
+<tr class="codeline" data-linenumber="4357"><td class="num" id="LN4357">4357</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="4358"><td class="num" id="LN4358">4358</td><td class="line"> <span class='comment'>* Closes all opened tabs.</span></td></tr>
+<tr class="codeline" data-linenumber="4359"><td class="num" id="LN4359">4359</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="4360"><td class="num" id="LN4360">4360</td><td class="line"><span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="4361"><td class="num" id="LN4361">4361</td><td class="line">pluma_window_close_all_tabs (PlumaWindow *window)</td></tr>
+<tr class="codeline" data-linenumber="4362"><td class="num" id="LN4362">4362</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="4363"><td class="num" id="LN4363">4363</td><td class="line"> <span class='macro'>g_return_if_fail (PLUMA_IS_WINDOW (window))<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_94<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((window)); GType __t = ((pluma_window_get_type())); gboolean<br> __r; if (!__inst) __r = (0); else if (__inst-&gt;g_class &amp;&amp;<br> __inst-&gt;g_class-&gt;g_type == __t) __r = (!(0)); else __r<br> = g_type_check_instance_is_a (__inst, __t); __r; }))))) _g_boolean_var_94<br> = 1; else _g_boolean_var_94 = 0; _g_boolean_var_94; }), 1)))<br> { } else { g_return_if_fail_warning (((gchar*) 0), ((const char<br>*) (__func__)), "PLUMA_IS_WINDOW (window)"); return; } } while<br> (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="4364"><td class="num" id="LN4364">4364</td><td class="line"> <span class='macro'>g_return_if_fail (!(window-&gt;priv-&gt;state &amp; PLUMA_WINDOW_STATE_SAVING) &amp;&amp;<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_95<br>; if (!(window-&gt;priv-&gt;state &amp; PLUMA_WINDOW_STATE_SAVING<br>) &amp;&amp; !(window-&gt;priv-&gt;state &amp; PLUMA_WINDOW_STATE_SAVING_SESSION<br>)) _g_boolean_var_95 = 1; else _g_boolean_var_95 = 0; _g_boolean_var_95<br>; }), 1))) { } else { g_return_if_fail_warning (((gchar*) 0),<br> ((const char*) (__func__)), "!(window-&gt;priv-&gt;state &amp; PLUMA_WINDOW_STATE_SAVING) &amp;&amp; !(window-&gt;priv-&gt;state &amp; PLUMA_WINDOW_STATE_SAVING_SESSION)"<br>); return; } } while (0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="4365"><td class="num" id="LN4365">4365</td><td class="line"> <span class='macro'>!(window-&gt;priv-&gt;state &amp; PLUMA_WINDOW_STATE_SAVING_SESSION))<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_95<br>; if (!(window-&gt;priv-&gt;state &amp; PLUMA_WINDOW_STATE_SAVING<br>) &amp;&amp; !(window-&gt;priv-&gt;state &amp; PLUMA_WINDOW_STATE_SAVING_SESSION<br>)) _g_boolean_var_95 = 1; else _g_boolean_var_95 = 0; _g_boolean_var_95<br>; }), 1))) { } else { g_return_if_fail_warning (((gchar*) 0),<br> ((const char*) (__func__)), "!(window-&gt;priv-&gt;state &amp; PLUMA_WINDOW_STATE_SAVING) &amp;&amp; !(window-&gt;priv-&gt;state &amp; PLUMA_WINDOW_STATE_SAVING_SESSION)"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="4366"><td class="num" id="LN4366">4366</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="4367"><td class="num" id="LN4367">4367</td><td class="line"> window-&gt;priv-&gt;removing_tabs = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="4368"><td class="num" id="LN4368">4368</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="4369"><td class="num" id="LN4369">4369</td><td class="line"> pluma_notebook_remove_all_tabs (<span class='macro'>PLUMA_NOTEBOOK (window-&gt;priv-&gt;notebook)<span class='macro_popup'>((((PlumaNotebook*) (void *) ((window-&gt;priv-&gt;notebook))<br>)))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="4370"><td class="num" id="LN4370">4370</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="4371"><td class="num" id="LN4371">4371</td><td class="line"> window-&gt;priv-&gt;removing_tabs = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="4372"><td class="num" id="LN4372">4372</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="4373"><td class="num" id="LN4373">4373</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="4374"><td class="num" id="LN4374">4374</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="4375"><td class="num" id="LN4375">4375</td><td class="line"> <span class='comment'>* pluma_window_close_tabs:</span></td></tr>
+<tr class="codeline" data-linenumber="4376"><td class="num" id="LN4376">4376</td><td class="line"> <span class='comment'>* @window: a #PlumaWindow</span></td></tr>
+<tr class="codeline" data-linenumber="4377"><td class="num" id="LN4377">4377</td><td class="line"> <span class='comment'>* @tabs: (element-type Pluma.Tab): a list of #PlumaTab</span></td></tr>
+<tr class="codeline" data-linenumber="4378"><td class="num" id="LN4378">4378</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="4379"><td class="num" id="LN4379">4379</td><td class="line"> <span class='comment'>* Closes all tabs specified by @tabs.</span></td></tr>
+<tr class="codeline" data-linenumber="4380"><td class="num" id="LN4380">4380</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="4381"><td class="num" id="LN4381">4381</td><td class="line"><span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="4382"><td class="num" id="LN4382">4382</td><td class="line">pluma_window_close_tabs (PlumaWindow *window,</td></tr>
+<tr class="codeline" data-linenumber="4383"><td class="num" id="LN4383">4383</td><td class="line"> <span class='keyword'>const</span> GList *tabs)</td></tr>
+<tr class="codeline" data-linenumber="4384"><td class="num" id="LN4384">4384</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="4385"><td class="num" id="LN4385">4385</td><td class="line"> <span class='macro'>g_return_if_fail (PLUMA_IS_WINDOW (window))<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_96<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((window)); GType __t = ((pluma_window_get_type())); gboolean<br> __r; if (!__inst) __r = (0); else if (__inst-&gt;g_class &amp;&amp;<br> __inst-&gt;g_class-&gt;g_type == __t) __r = (!(0)); else __r<br> = g_type_check_instance_is_a (__inst, __t); __r; }))))) _g_boolean_var_96<br> = 1; else _g_boolean_var_96 = 0; _g_boolean_var_96; }), 1)))<br> { } else { g_return_if_fail_warning (((gchar*) 0), ((const char<br>*) (__func__)), "PLUMA_IS_WINDOW (window)"); return; } } while<br> (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="4386"><td class="num" id="LN4386">4386</td><td class="line"> <span class='macro'>g_return_if_fail (!(window-&gt;priv-&gt;state &amp; PLUMA_WINDOW_STATE_SAVING) &amp;&amp;<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_97<br>; if (!(window-&gt;priv-&gt;state &amp; PLUMA_WINDOW_STATE_SAVING<br>) &amp;&amp; !(window-&gt;priv-&gt;state &amp; PLUMA_WINDOW_STATE_SAVING_SESSION<br>)) _g_boolean_var_97 = 1; else _g_boolean_var_97 = 0; _g_boolean_var_97<br>; }), 1))) { } else { g_return_if_fail_warning (((gchar*) 0),<br> ((const char*) (__func__)), "!(window-&gt;priv-&gt;state &amp; PLUMA_WINDOW_STATE_SAVING) &amp;&amp; !(window-&gt;priv-&gt;state &amp; PLUMA_WINDOW_STATE_SAVING_SESSION)"<br>); return; } } while (0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="4387"><td class="num" id="LN4387">4387</td><td class="line"> <span class='macro'>!(window-&gt;priv-&gt;state &amp; PLUMA_WINDOW_STATE_SAVING_SESSION))<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_97<br>; if (!(window-&gt;priv-&gt;state &amp; PLUMA_WINDOW_STATE_SAVING<br>) &amp;&amp; !(window-&gt;priv-&gt;state &amp; PLUMA_WINDOW_STATE_SAVING_SESSION<br>)) _g_boolean_var_97 = 1; else _g_boolean_var_97 = 0; _g_boolean_var_97<br>; }), 1))) { } else { g_return_if_fail_warning (((gchar*) 0),<br> ((const char*) (__func__)), "!(window-&gt;priv-&gt;state &amp; PLUMA_WINDOW_STATE_SAVING) &amp;&amp; !(window-&gt;priv-&gt;state &amp; PLUMA_WINDOW_STATE_SAVING_SESSION)"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="4388"><td class="num" id="LN4388">4388</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="4389"><td class="num" id="LN4389">4389</td><td class="line"> <span class='keyword'>if</span> (tabs == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="4390"><td class="num" id="LN4390">4390</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="4391"><td class="num" id="LN4391">4391</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="4392"><td class="num" id="LN4392">4392</td><td class="line"> window-&gt;priv-&gt;removing_tabs = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="4393"><td class="num" id="LN4393">4393</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="4394"><td class="num" id="LN4394">4394</td><td class="line"> <span class='keyword'>while</span> (tabs != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="4395"><td class="num" id="LN4395">4395</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="4396"><td class="num" id="LN4396">4396</td><td class="line"> <span class='keyword'>if</span> (tabs-&gt;next == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="4397"><td class="num" id="LN4397">4397</td><td class="line"> window-&gt;priv-&gt;removing_tabs = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="4398"><td class="num" id="LN4398">4398</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="4399"><td class="num" id="LN4399">4399</td><td class="line"> pluma_notebook_remove_tab (<span class='macro'>PLUMA_NOTEBOOK (window-&gt;priv-&gt;notebook)<span class='macro_popup'>((((PlumaNotebook*) (void *) ((window-&gt;priv-&gt;notebook))<br>)))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="4400"><td class="num" id="LN4400">4400</td><td class="line"> <span class='macro'>PLUMA_TAB (tabs-&gt;data)<span class='macro_popup'>((((PlumaTab*) (void *) ((tabs-&gt;data)))))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="4401"><td class="num" id="LN4401">4401</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="4402"><td class="num" id="LN4402">4402</td><td class="line"> tabs = <span class='macro'>g_list_next (tabs)<span class='macro_popup'>((tabs) ? (((GList *)(tabs))-&gt;next) : ((void*)0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="4403"><td class="num" id="LN4403">4403</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="4404"><td class="num" id="LN4404">4404</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="4405"><td class="num" id="LN4405">4405</td><td class="line"> <span class='macro'>g_return_if_fail (window-&gt;priv-&gt;removing_tabs == FALSE)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_98<br>; if (window-&gt;priv-&gt;removing_tabs == (0)) _g_boolean_var_98<br> = 1; else _g_boolean_var_98 = 0; _g_boolean_var_98; }), 1)))<br> { } else { g_return_if_fail_warning (((gchar*) 0), ((const char<br>*) (__func__)), "window-&gt;priv-&gt;removing_tabs == FALSE")<br>; return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="4406"><td class="num" id="LN4406">4406</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="4407"><td class="num" id="LN4407">4407</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="4408"><td class="num" id="LN4408">4408</td><td class="line">PlumaWindow *</td></tr>
+<tr class="codeline" data-linenumber="4409"><td class="num" id="LN4409">4409</td><td class="line">_pluma_window_move_tab_to_new_window (PlumaWindow *window,</td></tr>
+<tr class="codeline" data-linenumber="4410"><td class="num" id="LN4410">4410</td><td class="line"> PlumaTab *tab)</td></tr>
+<tr class="codeline" data-linenumber="4411"><td class="num" id="LN4411">4411</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="4412"><td class="num" id="LN4412">4412</td><td class="line"> PlumaWindow *new_window;</td></tr>
+<tr class="codeline" data-linenumber="4413"><td class="num" id="LN4413">4413</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="4414"><td class="num" id="LN4414">4414</td><td class="line"> <span class='macro'>g_return_val_if_fail (PLUMA_IS_WINDOW (window), NULL)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_99<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((window)); GType __t = ((pluma_window_get_type())); gboolean<br> __r; if (!__inst) __r = (0); else if (__inst-&gt;g_class &amp;&amp;<br> __inst-&gt;g_class-&gt;g_type == __t) __r = (!(0)); else __r<br> = g_type_check_instance_is_a (__inst, __t); __r; }))))) _g_boolean_var_99<br> = 1; else _g_boolean_var_99 = 0; _g_boolean_var_99; }), 1)))<br> { } else { g_return_if_fail_warning (((gchar*) 0), ((const char<br>*) (__func__)), "PLUMA_IS_WINDOW (window)"); return (((void*)<br>0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="4415"><td class="num" id="LN4415">4415</td><td class="line"> <span class='macro'>g_return_val_if_fail (PLUMA_IS_TAB (tab), NULL)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_100<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((tab)); GType __t = ((pluma_tab_get_type())); gboolean __r<br>; if (!__inst) __r = (0); else if (__inst-&gt;g_class &amp;&amp;<br> __inst-&gt;g_class-&gt;g_type == __t) __r = (!(0)); else __r<br> = g_type_check_instance_is_a (__inst, __t); __r; }))))) _g_boolean_var_100<br> = 1; else _g_boolean_var_100 = 0; _g_boolean_var_100; }), 1)<br>)) { } else { g_return_if_fail_warning (((gchar*) 0), ((const<br> char*) (__func__)), "PLUMA_IS_TAB (tab)"); return (((void*)0<br>)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="4416"><td class="num" id="LN4416">4416</td><td class="line"> <span class='macro'>g_return_val_if_fail (gtk_notebook_get_n_pages (GTK_NOTEBOOK (window-&gt;priv-&gt;notebook)) &gt; 1,<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_101<br>; if (gtk_notebook_get_n_pages (((((GtkNotebook*) (void *) ((<br>window-&gt;priv-&gt;notebook)))))) &gt; 1) _g_boolean_var_101<br> = 1; else _g_boolean_var_101 = 0; _g_boolean_var_101; }), 1)<br>)) { } else { g_return_if_fail_warning (((gchar*) 0), ((const<br> char*) (__func__)), "gtk_notebook_get_n_pages (GTK_NOTEBOOK (window-&gt;priv-&gt;notebook)) &gt; 1"<br>); return (((void*)0)); } } while (0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="4417"><td class="num" id="LN4417">4417</td><td class="line"> <span class='macro'>NULL)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_101<br>; if (gtk_notebook_get_n_pages (((((GtkNotebook*) (void *) ((<br>window-&gt;priv-&gt;notebook)))))) &gt; 1) _g_boolean_var_101<br> = 1; else _g_boolean_var_101 = 0; _g_boolean_var_101; }), 1)<br>)) { } else { g_return_if_fail_warning (((gchar*) 0), ((const<br> char*) (__func__)), "gtk_notebook_get_n_pages (GTK_NOTEBOOK (window-&gt;priv-&gt;notebook)) &gt; 1"<br>); return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="4418"><td class="num" id="LN4418">4418</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="4419"><td class="num" id="LN4419">4419</td><td class="line"> new_window = clone_window (window);</td></tr>
+<tr class="codeline" data-linenumber="4420"><td class="num" id="LN4420">4420</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="4421"><td class="num" id="LN4421">4421</td><td class="line"> pluma_notebook_move_tab (<span class='macro'>PLUMA_NOTEBOOK (window-&gt;priv-&gt;notebook)<span class='macro_popup'>((((PlumaNotebook*) (void *) ((window-&gt;priv-&gt;notebook))<br>)))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="4422"><td class="num" id="LN4422">4422</td><td class="line"> <span class='macro'>PLUMA_NOTEBOOK (new_window-&gt;priv-&gt;notebook)<span class='macro_popup'>((((PlumaNotebook*) (void *) ((new_window-&gt;priv-&gt;notebook<br>)))))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="4423"><td class="num" id="LN4423">4423</td><td class="line"> tab,</td></tr>
+<tr class="codeline" data-linenumber="4424"><td class="num" id="LN4424">4424</td><td class="line"> -1);</td></tr>
+<tr class="codeline" data-linenumber="4425"><td class="num" id="LN4425">4425</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="4426"><td class="num" id="LN4426">4426</td><td class="line"> gtk_widget_show (<span class='macro'>GTK_WIDGET (new_window)<span class='macro_popup'>((((GtkWidget*) (void *) ((new_window)))))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="4427"><td class="num" id="LN4427">4427</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="4428"><td class="num" id="LN4428">4428</td><td class="line"> <span class='keyword'>return</span> new_window;</td></tr>
+<tr class="codeline" data-linenumber="4429"><td class="num" id="LN4429">4429</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="4430"><td class="num" id="LN4430">4430</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="4431"><td class="num" id="LN4431">4431</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="4432"><td class="num" id="LN4432">4432</td><td class="line"> <span class='comment'>* pluma_window_set_active_tab:</span></td></tr>
+<tr class="codeline" data-linenumber="4433"><td class="num" id="LN4433">4433</td><td class="line"> <span class='comment'>* @window: a #PlumaWindow</span></td></tr>
+<tr class="codeline" data-linenumber="4434"><td class="num" id="LN4434">4434</td><td class="line"> <span class='comment'>* @tab: a #PlumaTab</span></td></tr>
+<tr class="codeline" data-linenumber="4435"><td class="num" id="LN4435">4435</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="4436"><td class="num" id="LN4436">4436</td><td class="line"> <span class='comment'>* Switches to the tab that matches with @tab.</span></td></tr>
+<tr class="codeline" data-linenumber="4437"><td class="num" id="LN4437">4437</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="4438"><td class="num" id="LN4438">4438</td><td class="line"><span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="4439"><td class="num" id="LN4439">4439</td><td class="line">pluma_window_set_active_tab (PlumaWindow *window,</td></tr>
+<tr class="codeline" data-linenumber="4440"><td class="num" id="LN4440">4440</td><td class="line"> PlumaTab *tab)</td></tr>
+<tr class="codeline" data-linenumber="4441"><td class="num" id="LN4441">4441</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="4442"><td class="num" id="LN4442">4442</td><td class="line"> gint page_num;</td></tr>
+<tr class="codeline" data-linenumber="4443"><td class="num" id="LN4443">4443</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="4444"><td class="num" id="LN4444">4444</td><td class="line"> <span class='macro'>g_return_if_fail (PLUMA_IS_WINDOW (window))<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_102<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((window)); GType __t = ((pluma_window_get_type())); gboolean<br> __r; if (!__inst) __r = (0); else if (__inst-&gt;g_class &amp;&amp;<br> __inst-&gt;g_class-&gt;g_type == __t) __r = (!(0)); else __r<br> = g_type_check_instance_is_a (__inst, __t); __r; }))))) _g_boolean_var_102<br> = 1; else _g_boolean_var_102 = 0; _g_boolean_var_102; }), 1)<br>)) { } else { g_return_if_fail_warning (((gchar*) 0), ((const<br> char*) (__func__)), "PLUMA_IS_WINDOW (window)"); return; } }<br> while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="4445"><td class="num" id="LN4445">4445</td><td class="line"> <span class='macro'>g_return_if_fail (PLUMA_IS_TAB (tab))<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_103<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((tab)); GType __t = ((pluma_tab_get_type())); gboolean __r<br>; if (!__inst) __r = (0); else if (__inst-&gt;g_class &amp;&amp;<br> __inst-&gt;g_class-&gt;g_type == __t) __r = (!(0)); else __r<br> = g_type_check_instance_is_a (__inst, __t); __r; }))))) _g_boolean_var_103<br> = 1; else _g_boolean_var_103 = 0; _g_boolean_var_103; }), 1)<br>)) { } else { g_return_if_fail_warning (((gchar*) 0), ((const<br> char*) (__func__)), "PLUMA_IS_TAB (tab)"); return; } } while<br> (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="4446"><td class="num" id="LN4446">4446</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="4447"><td class="num" id="LN4447">4447</td><td class="line"> page_num = gtk_notebook_page_num (<span class='macro'>GTK_NOTEBOOK (window-&gt;priv-&gt;notebook)<span class='macro_popup'>((((GtkNotebook*) (void *) ((window-&gt;priv-&gt;notebook))))<br>)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="4448"><td class="num" id="LN4448">4448</td><td class="line"> <span class='macro'>GTK_WIDGET (tab)<span class='macro_popup'>((((GtkWidget*) (void *) ((tab)))))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="4449"><td class="num" id="LN4449">4449</td><td class="line"> <span class='macro'>g_return_if_fail (page_num != -1)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_104<br>; if (page_num != -1) _g_boolean_var_104 = 1; else _g_boolean_var_104<br> = 0; _g_boolean_var_104; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "page_num != -1")<br>; return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="4450"><td class="num" id="LN4450">4450</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="4451"><td class="num" id="LN4451">4451</td><td class="line"> gtk_notebook_set_current_page (<span class='macro'>GTK_NOTEBOOK (window-&gt;priv-&gt;notebook)<span class='macro_popup'>((((GtkNotebook*) (void *) ((window-&gt;priv-&gt;notebook))))<br>)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="4452"><td class="num" id="LN4452">4452</td><td class="line"> page_num);</td></tr>
+<tr class="codeline" data-linenumber="4453"><td class="num" id="LN4453">4453</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="4454"><td class="num" id="LN4454">4454</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="4455"><td class="num" id="LN4455">4455</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="4456"><td class="num" id="LN4456">4456</td><td class="line"> <span class='comment'>* pluma_window_get_group:</span></td></tr>
+<tr class="codeline" data-linenumber="4457"><td class="num" id="LN4457">4457</td><td class="line"> <span class='comment'>* @window: a #PlumaWindow</span></td></tr>
+<tr class="codeline" data-linenumber="4458"><td class="num" id="LN4458">4458</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="4459"><td class="num" id="LN4459">4459</td><td class="line"> <span class='comment'>* Gets the #GtkWindowGroup in which @window resides.</span></td></tr>
+<tr class="codeline" data-linenumber="4460"><td class="num" id="LN4460">4460</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="4461"><td class="num" id="LN4461">4461</td><td class="line"> <span class='comment'>* Returns: (transfer none): the #GtkWindowGroup</span></td></tr>
+<tr class="codeline" data-linenumber="4462"><td class="num" id="LN4462">4462</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="4463"><td class="num" id="LN4463">4463</td><td class="line">GtkWindowGroup *</td></tr>
+<tr class="codeline" data-linenumber="4464"><td class="num" id="LN4464">4464</td><td class="line">pluma_window_get_group (PlumaWindow *window)</td></tr>
+<tr class="codeline" data-linenumber="4465"><td class="num" id="LN4465">4465</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="4466"><td class="num" id="LN4466">4466</td><td class="line"> <span class='macro'>g_return_val_if_fail (PLUMA_IS_WINDOW (window), NULL)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_105<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((window)); GType __t = ((pluma_window_get_type())); gboolean<br> __r; if (!__inst) __r = (0); else if (__inst-&gt;g_class &amp;&amp;<br> __inst-&gt;g_class-&gt;g_type == __t) __r = (!(0)); else __r<br> = g_type_check_instance_is_a (__inst, __t); __r; }))))) _g_boolean_var_105<br> = 1; else _g_boolean_var_105 = 0; _g_boolean_var_105; }), 1)<br>)) { } else { g_return_if_fail_warning (((gchar*) 0), ((const<br> char*) (__func__)), "PLUMA_IS_WINDOW (window)"); return (((void<br>*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="4467"><td class="num" id="LN4467">4467</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="4468"><td class="num" id="LN4468">4468</td><td class="line"> <span class='keyword'>return</span> window-&gt;priv-&gt;window_group;</td></tr>
+<tr class="codeline" data-linenumber="4469"><td class="num" id="LN4469">4469</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="4470"><td class="num" id="LN4470">4470</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="4471"><td class="num" id="LN4471">4471</td><td class="line">gboolean</td></tr>
+<tr class="codeline" data-linenumber="4472"><td class="num" id="LN4472">4472</td><td class="line">_pluma_window_is_removing_tabs (PlumaWindow *window)</td></tr>
+<tr class="codeline" data-linenumber="4473"><td class="num" id="LN4473">4473</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="4474"><td class="num" id="LN4474">4474</td><td class="line"> <span class='macro'>g_return_val_if_fail (PLUMA_IS_WINDOW (window), FALSE)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_106<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((window)); GType __t = ((pluma_window_get_type())); gboolean<br> __r; if (!__inst) __r = (0); else if (__inst-&gt;g_class &amp;&amp;<br> __inst-&gt;g_class-&gt;g_type == __t) __r = (!(0)); else __r<br> = g_type_check_instance_is_a (__inst, __t); __r; }))))) _g_boolean_var_106<br> = 1; else _g_boolean_var_106 = 0; _g_boolean_var_106; }), 1)<br>)) { } else { g_return_if_fail_warning (((gchar*) 0), ((const<br> char*) (__func__)), "PLUMA_IS_WINDOW (window)"); return ((0)<br>); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="4475"><td class="num" id="LN4475">4475</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="4476"><td class="num" id="LN4476">4476</td><td class="line"> <span class='keyword'>return</span> window-&gt;priv-&gt;removing_tabs;</td></tr>
+<tr class="codeline" data-linenumber="4477"><td class="num" id="LN4477">4477</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="4478"><td class="num" id="LN4478">4478</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="4479"><td class="num" id="LN4479">4479</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="4480"><td class="num" id="LN4480">4480</td><td class="line"> <span class='comment'>* pluma_window_get_ui_manager:</span></td></tr>
+<tr class="codeline" data-linenumber="4481"><td class="num" id="LN4481">4481</td><td class="line"> <span class='comment'>* @window: a #PlumaWindow</span></td></tr>
+<tr class="codeline" data-linenumber="4482"><td class="num" id="LN4482">4482</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="4483"><td class="num" id="LN4483">4483</td><td class="line"> <span class='comment'>* Gets the #GtkUIManager associated with the @window.</span></td></tr>
+<tr class="codeline" data-linenumber="4484"><td class="num" id="LN4484">4484</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="4485"><td class="num" id="LN4485">4485</td><td class="line"> <span class='comment'>* Returns: (transfer none): the #GtkUIManager of the @window.</span></td></tr>
+<tr class="codeline" data-linenumber="4486"><td class="num" id="LN4486">4486</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="4487"><td class="num" id="LN4487">4487</td><td class="line">GtkUIManager *</td></tr>
+<tr class="codeline" data-linenumber="4488"><td class="num" id="LN4488">4488</td><td class="line">pluma_window_get_ui_manager (PlumaWindow *window)</td></tr>
+<tr class="codeline" data-linenumber="4489"><td class="num" id="LN4489">4489</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="4490"><td class="num" id="LN4490">4490</td><td class="line"> <span class='macro'>g_return_val_if_fail (PLUMA_IS_WINDOW (window), NULL)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_107<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((window)); GType __t = ((pluma_window_get_type())); gboolean<br> __r; if (!__inst) __r = (0); else if (__inst-&gt;g_class &amp;&amp;<br> __inst-&gt;g_class-&gt;g_type == __t) __r = (!(0)); else __r<br> = g_type_check_instance_is_a (__inst, __t); __r; }))))) _g_boolean_var_107<br> = 1; else _g_boolean_var_107 = 0; _g_boolean_var_107; }), 1)<br>)) { } else { g_return_if_fail_warning (((gchar*) 0), ((const<br> char*) (__func__)), "PLUMA_IS_WINDOW (window)"); return (((void<br>*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="4491"><td class="num" id="LN4491">4491</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="4492"><td class="num" id="LN4492">4492</td><td class="line"> <span class='keyword'>return</span> window-&gt;priv-&gt;manager;</td></tr>
+<tr class="codeline" data-linenumber="4493"><td class="num" id="LN4493">4493</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="4494"><td class="num" id="LN4494">4494</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="4495"><td class="num" id="LN4495">4495</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="4496"><td class="num" id="LN4496">4496</td><td class="line"> <span class='comment'>* pluma_window_get_side_panel:</span></td></tr>
+<tr class="codeline" data-linenumber="4497"><td class="num" id="LN4497">4497</td><td class="line"> <span class='comment'>* @window: a #PlumaWindow</span></td></tr>
+<tr class="codeline" data-linenumber="4498"><td class="num" id="LN4498">4498</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="4499"><td class="num" id="LN4499">4499</td><td class="line"> <span class='comment'>* Gets the side #PlumaPanel of the @window.</span></td></tr>
+<tr class="codeline" data-linenumber="4500"><td class="num" id="LN4500">4500</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="4501"><td class="num" id="LN4501">4501</td><td class="line"> <span class='comment'>* Returns: (transfer none): the side #PlumaPanel.</span></td></tr>
+<tr class="codeline" data-linenumber="4502"><td class="num" id="LN4502">4502</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="4503"><td class="num" id="LN4503">4503</td><td class="line">PlumaPanel *</td></tr>
+<tr class="codeline" data-linenumber="4504"><td class="num" id="LN4504">4504</td><td class="line">pluma_window_get_side_panel (PlumaWindow *window)</td></tr>
+<tr class="codeline" data-linenumber="4505"><td class="num" id="LN4505">4505</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="4506"><td class="num" id="LN4506">4506</td><td class="line"> <span class='macro'>g_return_val_if_fail (PLUMA_IS_WINDOW (window), NULL)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_108<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((window)); GType __t = ((pluma_window_get_type())); gboolean<br> __r; if (!__inst) __r = (0); else if (__inst-&gt;g_class &amp;&amp;<br> __inst-&gt;g_class-&gt;g_type == __t) __r = (!(0)); else __r<br> = g_type_check_instance_is_a (__inst, __t); __r; }))))) _g_boolean_var_108<br> = 1; else _g_boolean_var_108 = 0; _g_boolean_var_108; }), 1)<br>)) { } else { g_return_if_fail_warning (((gchar*) 0), ((const<br> char*) (__func__)), "PLUMA_IS_WINDOW (window)"); return (((void<br>*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="4507"><td class="num" id="LN4507">4507</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="4508"><td class="num" id="LN4508">4508</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>PLUMA_PANEL (window-&gt;priv-&gt;side_panel)<span class='macro_popup'>((((PlumaPanel*) (void *) ((window-&gt;priv-&gt;side_panel)))<br>))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="4509"><td class="num" id="LN4509">4509</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="4510"><td class="num" id="LN4510">4510</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="4511"><td class="num" id="LN4511">4511</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="4512"><td class="num" id="LN4512">4512</td><td class="line"> <span class='comment'>* pluma_window_get_bottom_panel:</span></td></tr>
+<tr class="codeline" data-linenumber="4513"><td class="num" id="LN4513">4513</td><td class="line"> <span class='comment'>* @window: a #PlumaWindow</span></td></tr>
+<tr class="codeline" data-linenumber="4514"><td class="num" id="LN4514">4514</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="4515"><td class="num" id="LN4515">4515</td><td class="line"> <span class='comment'>* Gets the bottom #PlumaPanel of the @window.</span></td></tr>
+<tr class="codeline" data-linenumber="4516"><td class="num" id="LN4516">4516</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="4517"><td class="num" id="LN4517">4517</td><td class="line"> <span class='comment'>* Returns: (transfer none): the bottom #PlumaPanel.</span></td></tr>
+<tr class="codeline" data-linenumber="4518"><td class="num" id="LN4518">4518</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="4519"><td class="num" id="LN4519">4519</td><td class="line">PlumaPanel *</td></tr>
+<tr class="codeline" data-linenumber="4520"><td class="num" id="LN4520">4520</td><td class="line">pluma_window_get_bottom_panel (PlumaWindow *window)</td></tr>
+<tr class="codeline" data-linenumber="4521"><td class="num" id="LN4521">4521</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="4522"><td class="num" id="LN4522">4522</td><td class="line"> <span class='macro'>g_return_val_if_fail (PLUMA_IS_WINDOW (window), NULL)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_109<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((window)); GType __t = ((pluma_window_get_type())); gboolean<br> __r; if (!__inst) __r = (0); else if (__inst-&gt;g_class &amp;&amp;<br> __inst-&gt;g_class-&gt;g_type == __t) __r = (!(0)); else __r<br> = g_type_check_instance_is_a (__inst, __t); __r; }))))) _g_boolean_var_109<br> = 1; else _g_boolean_var_109 = 0; _g_boolean_var_109; }), 1)<br>)) { } else { g_return_if_fail_warning (((gchar*) 0), ((const<br> char*) (__func__)), "PLUMA_IS_WINDOW (window)"); return (((void<br>*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="4523"><td class="num" id="LN4523">4523</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="4524"><td class="num" id="LN4524">4524</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>PLUMA_PANEL (window-&gt;priv-&gt;bottom_panel)<span class='macro_popup'>((((PlumaPanel*) (void *) ((window-&gt;priv-&gt;bottom_panel)<br>))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="4525"><td class="num" id="LN4525">4525</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="4526"><td class="num" id="LN4526">4526</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="4527"><td class="num" id="LN4527">4527</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="4528"><td class="num" id="LN4528">4528</td><td class="line"> <span class='comment'>* pluma_window_get_statusbar:</span></td></tr>
+<tr class="codeline" data-linenumber="4529"><td class="num" id="LN4529">4529</td><td class="line"> <span class='comment'>* @window: a #PlumaWindow</span></td></tr>
+<tr class="codeline" data-linenumber="4530"><td class="num" id="LN4530">4530</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="4531"><td class="num" id="LN4531">4531</td><td class="line"> <span class='comment'>* Gets the #PlumaStatusbar of the @window.</span></td></tr>
+<tr class="codeline" data-linenumber="4532"><td class="num" id="LN4532">4532</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="4533"><td class="num" id="LN4533">4533</td><td class="line"> <span class='comment'>* Returns: (transfer none): the #PlumaStatusbar of the @window.</span></td></tr>
+<tr class="codeline" data-linenumber="4534"><td class="num" id="LN4534">4534</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="4535"><td class="num" id="LN4535">4535</td><td class="line">GtkWidget *</td></tr>
+<tr class="codeline" data-linenumber="4536"><td class="num" id="LN4536">4536</td><td class="line">pluma_window_get_statusbar (PlumaWindow *window)</td></tr>
+<tr class="codeline" data-linenumber="4537"><td class="num" id="LN4537">4537</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="4538"><td class="num" id="LN4538">4538</td><td class="line"> <span class='macro'>g_return_val_if_fail (PLUMA_IS_WINDOW (window), 0)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_110<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((window)); GType __t = ((pluma_window_get_type())); gboolean<br> __r; if (!__inst) __r = (0); else if (__inst-&gt;g_class &amp;&amp;<br> __inst-&gt;g_class-&gt;g_type == __t) __r = (!(0)); else __r<br> = g_type_check_instance_is_a (__inst, __t); __r; }))))) _g_boolean_var_110<br> = 1; else _g_boolean_var_110 = 0; _g_boolean_var_110; }), 1)<br>)) { } else { g_return_if_fail_warning (((gchar*) 0), ((const<br> char*) (__func__)), "PLUMA_IS_WINDOW (window)"); return (0);<br> } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="4539"><td class="num" id="LN4539">4539</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="4540"><td class="num" id="LN4540">4540</td><td class="line"> <span class='keyword'>return</span> window-&gt;priv-&gt;statusbar;</td></tr>
+<tr class="codeline" data-linenumber="4541"><td class="num" id="LN4541">4541</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="4542"><td class="num" id="LN4542">4542</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="4543"><td class="num" id="LN4543">4543</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="4544"><td class="num" id="LN4544">4544</td><td class="line"> <span class='comment'>* pluma_window_get_state:</span></td></tr>
+<tr class="codeline" data-linenumber="4545"><td class="num" id="LN4545">4545</td><td class="line"> <span class='comment'>* @window: a #PlumaWindow</span></td></tr>
+<tr class="codeline" data-linenumber="4546"><td class="num" id="LN4546">4546</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="4547"><td class="num" id="LN4547">4547</td><td class="line"> <span class='comment'>* Retrieves the state of the @window.</span></td></tr>
+<tr class="codeline" data-linenumber="4548"><td class="num" id="LN4548">4548</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="4549"><td class="num" id="LN4549">4549</td><td class="line"> <span class='comment'>* Returns: the current #PlumaWindowState of the @window.</span></td></tr>
+<tr class="codeline" data-linenumber="4550"><td class="num" id="LN4550">4550</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="4551"><td class="num" id="LN4551">4551</td><td class="line">PlumaWindowState</td></tr>
+<tr class="codeline" data-linenumber="4552"><td class="num" id="LN4552">4552</td><td class="line">pluma_window_get_state (PlumaWindow *window)</td></tr>
+<tr class="codeline" data-linenumber="4553"><td class="num" id="LN4553">4553</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="4554"><td class="num" id="LN4554">4554</td><td class="line"> <span class='macro'>g_return_val_if_fail (PLUMA_IS_WINDOW (window), PLUMA_WINDOW_STATE_NORMAL)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_111<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((window)); GType __t = ((pluma_window_get_type())); gboolean<br> __r; if (!__inst) __r = (0); else if (__inst-&gt;g_class &amp;&amp;<br> __inst-&gt;g_class-&gt;g_type == __t) __r = (!(0)); else __r<br> = g_type_check_instance_is_a (__inst, __t); __r; }))))) _g_boolean_var_111<br> = 1; else _g_boolean_var_111 = 0; _g_boolean_var_111; }), 1)<br>)) { } else { g_return_if_fail_warning (((gchar*) 0), ((const<br> char*) (__func__)), "PLUMA_IS_WINDOW (window)"); return (PLUMA_WINDOW_STATE_NORMAL<br>); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="4555"><td class="num" id="LN4555">4555</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="4556"><td class="num" id="LN4556">4556</td><td class="line"> <span class='keyword'>return</span> window-&gt;priv-&gt;state;</td></tr>
+<tr class="codeline" data-linenumber="4557"><td class="num" id="LN4557">4557</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="4558"><td class="num" id="LN4558">4558</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="4559"><td class="num" id="LN4559">4559</td><td class="line">GFile *</td></tr>
+<tr class="codeline" data-linenumber="4560"><td class="num" id="LN4560">4560</td><td class="line">_pluma_window_get_default_location (PlumaWindow *window)</td></tr>
+<tr class="codeline" data-linenumber="4561"><td class="num" id="LN4561">4561</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="4562"><td class="num" id="LN4562">4562</td><td class="line"> <span class='macro'>g_return_val_if_fail (PLUMA_IS_WINDOW (window), NULL)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_112<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((window)); GType __t = ((pluma_window_get_type())); gboolean<br> __r; if (!__inst) __r = (0); else if (__inst-&gt;g_class &amp;&amp;<br> __inst-&gt;g_class-&gt;g_type == __t) __r = (!(0)); else __r<br> = g_type_check_instance_is_a (__inst, __t); __r; }))))) _g_boolean_var_112<br> = 1; else _g_boolean_var_112 = 0; _g_boolean_var_112; }), 1)<br>)) { } else { g_return_if_fail_warning (((gchar*) 0), ((const<br> char*) (__func__)), "PLUMA_IS_WINDOW (window)"); return (((void<br>*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="4563"><td class="num" id="LN4563">4563</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="4564"><td class="num" id="LN4564">4564</td><td class="line"> <span class='keyword'>return</span> window-&gt;priv-&gt;default_location != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> ?</td></tr>
+<tr class="codeline" data-linenumber="4565"><td class="num" id="LN4565">4565</td><td class="line"> <span class='macro'>g_object_ref (window-&gt;priv-&gt;default_location)<span class='macro_popup'>((__typeof__ (window-&gt;priv-&gt;default_location)) (g_object_ref<br>) (window-&gt;priv-&gt;default_location))</span></span> : <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="4566"><td class="num" id="LN4566">4566</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="4567"><td class="num" id="LN4567">4567</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="4568"><td class="num" id="LN4568">4568</td><td class="line"><span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="4569"><td class="num" id="LN4569">4569</td><td class="line">_pluma_window_set_default_location (PlumaWindow *window,</td></tr>
+<tr class="codeline" data-linenumber="4570"><td class="num" id="LN4570">4570</td><td class="line"> GFile *location)</td></tr>
+<tr class="codeline" data-linenumber="4571"><td class="num" id="LN4571">4571</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="4572"><td class="num" id="LN4572">4572</td><td class="line"> GFile *dir;</td></tr>
+<tr class="codeline" data-linenumber="4573"><td class="num" id="LN4573">4573</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="4574"><td class="num" id="LN4574">4574</td><td class="line"> <span class='macro'>g_return_if_fail (PLUMA_IS_WINDOW (window))<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_113<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((window)); GType __t = ((pluma_window_get_type())); gboolean<br> __r; if (!__inst) __r = (0); else if (__inst-&gt;g_class &amp;&amp;<br> __inst-&gt;g_class-&gt;g_type == __t) __r = (!(0)); else __r<br> = g_type_check_instance_is_a (__inst, __t); __r; }))))) _g_boolean_var_113<br> = 1; else _g_boolean_var_113 = 0; _g_boolean_var_113; }), 1)<br>)) { } else { g_return_if_fail_warning (((gchar*) 0), ((const<br> char*) (__func__)), "PLUMA_IS_WINDOW (window)"); return; } }<br> while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="4575"><td class="num" id="LN4575">4575</td><td class="line"> <span class='macro'>g_return_if_fail (G_IS_FILE (location))<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_114<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((location)); GType __t = ((g_file_get_type ())); gboolean<br> __r; if (!__inst) __r = (0); else if (__inst-&gt;g_class &amp;&amp;<br> __inst-&gt;g_class-&gt;g_type == __t) __r = (!(0)); else __r<br> = g_type_check_instance_is_a (__inst, __t); __r; }))))) _g_boolean_var_114<br> = 1; else _g_boolean_var_114 = 0; _g_boolean_var_114; }), 1)<br>)) { } else { g_return_if_fail_warning (((gchar*) 0), ((const<br> char*) (__func__)), "G_IS_FILE (location)"); return; } } while<br> (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="4576"><td class="num" id="LN4576">4576</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="4577"><td class="num" id="LN4577">4577</td><td class="line"> dir = g_file_get_parent (location);</td></tr>
+<tr class="codeline" data-linenumber="4578"><td class="num" id="LN4578">4578</td><td class="line"> <span class='macro'>g_return_if_fail (dir != NULL)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_115<br>; if (dir != ((void*)0)) _g_boolean_var_115 = 1; else _g_boolean_var_115<br> = 0; _g_boolean_var_115; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "dir != NULL"); return<br>; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="4579"><td class="num" id="LN4579">4579</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="4580"><td class="num" id="LN4580">4580</td><td class="line"> <span class='keyword'>if</span> (window-&gt;priv-&gt;default_location != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="4581"><td class="num" id="LN4581">4581</td><td class="line"> g_object_unref (window-&gt;priv-&gt;default_location);</td></tr>
+<tr class="codeline" data-linenumber="4582"><td class="num" id="LN4582">4582</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="4583"><td class="num" id="LN4583">4583</td><td class="line"> window-&gt;priv-&gt;default_location = dir;</td></tr>
+<tr class="codeline" data-linenumber="4584"><td class="num" id="LN4584">4584</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="4585"><td class="num" id="LN4585">4585</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="4586"><td class="num" id="LN4586">4586</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="4587"><td class="num" id="LN4587">4587</td><td class="line"> <span class='comment'>* pluma_window_get_unsaved_documents:</span></td></tr>
+<tr class="codeline" data-linenumber="4588"><td class="num" id="LN4588">4588</td><td class="line"> <span class='comment'>* @window: a #PlumaWindow</span></td></tr>
+<tr class="codeline" data-linenumber="4589"><td class="num" id="LN4589">4589</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="4590"><td class="num" id="LN4590">4590</td><td class="line"> <span class='comment'>* Gets the list of documents that need to be saved before closing the window.</span></td></tr>
+<tr class="codeline" data-linenumber="4591"><td class="num" id="LN4591">4591</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="4592"><td class="num" id="LN4592">4592</td><td class="line"> <span class='comment'>* Returns: (element-type Pluma.Document) (transfer container): a list of</span></td></tr>
+<tr class="codeline" data-linenumber="4593"><td class="num" id="LN4593">4593</td><td class="line"> <span class='comment'>* #PlumaDocument that need to be saved before closing the window</span></td></tr>
+<tr class="codeline" data-linenumber="4594"><td class="num" id="LN4594">4594</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="4595"><td class="num" id="LN4595">4595</td><td class="line">GList *</td></tr>
+<tr class="codeline" data-linenumber="4596"><td class="num" id="LN4596">4596</td><td class="line">pluma_window_get_unsaved_documents (PlumaWindow *window)</td></tr>
+<tr class="codeline" data-linenumber="4597"><td class="num" id="LN4597">4597</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="4598"><td class="num" id="LN4598">4598</td><td class="line"> GList *unsaved_docs = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="4599"><td class="num" id="LN4599">4599</td><td class="line"> GList *tabs;</td></tr>
+<tr class="codeline" data-linenumber="4600"><td class="num" id="LN4600">4600</td><td class="line"> GList *l;</td></tr>
+<tr class="codeline" data-linenumber="4601"><td class="num" id="LN4601">4601</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="4602"><td class="num" id="LN4602">4602</td><td class="line"> <span class='macro'>g_return_val_if_fail (PLUMA_IS_WINDOW (window), NULL)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_116<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((window)); GType __t = ((pluma_window_get_type())); gboolean<br> __r; if (!__inst) __r = (0); else if (__inst-&gt;g_class &amp;&amp;<br> __inst-&gt;g_class-&gt;g_type == __t) __r = (!(0)); else __r<br> = g_type_check_instance_is_a (__inst, __t); __r; }))))) _g_boolean_var_116<br> = 1; else _g_boolean_var_116 = 0; _g_boolean_var_116; }), 1)<br>)) { } else { g_return_if_fail_warning (((gchar*) 0), ((const<br> char*) (__func__)), "PLUMA_IS_WINDOW (window)"); return (((void<br>*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="4603"><td class="num" id="LN4603">4603</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="4604"><td class="num" id="LN4604">4604</td><td class="line"> tabs = gtk_container_get_children (<span class='macro'>GTK_CONTAINER (window-&gt;priv-&gt;notebook)<span class='macro_popup'>((((GtkContainer*) (void *) ((window-&gt;priv-&gt;notebook)))<br>))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="4605"><td class="num" id="LN4605">4605</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="4606"><td class="num" id="LN4606">4606</td><td class="line"> l = tabs;</td></tr>
+<tr class="codeline" data-linenumber="4607"><td class="num" id="LN4607">4607</td><td class="line"> <span class='keyword'>while</span> (l != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="4608"><td class="num" id="LN4608">4608</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="4609"><td class="num" id="LN4609">4609</td><td class="line"> PlumaTab *tab;</td></tr>
+<tr class="codeline" data-linenumber="4610"><td class="num" id="LN4610">4610</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="4611"><td class="num" id="LN4611">4611</td><td class="line"> tab = <span class='macro'>PLUMA_TAB (l-&gt;data)<span class='macro_popup'>((((PlumaTab*) (void *) ((l-&gt;data)))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="4612"><td class="num" id="LN4612">4612</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="4613"><td class="num" id="LN4613">4613</td><td class="line"> <span class='keyword'>if</span> (!_pluma_tab_can_close (tab))</td></tr>
+<tr class="codeline" data-linenumber="4614"><td class="num" id="LN4614">4614</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="4615"><td class="num" id="LN4615">4615</td><td class="line"> PlumaDocument *doc;</td></tr>
+<tr class="codeline" data-linenumber="4616"><td class="num" id="LN4616">4616</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="4617"><td class="num" id="LN4617">4617</td><td class="line"> doc = pluma_tab_get_document (tab);</td></tr>
+<tr class="codeline" data-linenumber="4618"><td class="num" id="LN4618">4618</td><td class="line"> unsaved_docs = g_list_prepend (unsaved_docs, doc);</td></tr>
+<tr class="codeline" data-linenumber="4619"><td class="num" id="LN4619">4619</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="4620"><td class="num" id="LN4620">4620</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="4621"><td class="num" id="LN4621">4621</td><td class="line"> l = <span class='macro'>g_list_next (l)<span class='macro_popup'>((l) ? (((GList *)(l))-&gt;next) : ((void*)0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="4622"><td class="num" id="LN4622">4622</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="4623"><td class="num" id="LN4623">4623</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="4624"><td class="num" id="LN4624">4624</td><td class="line"> g_list_free (tabs);</td></tr>
+<tr class="codeline" data-linenumber="4625"><td class="num" id="LN4625">4625</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="4626"><td class="num" id="LN4626">4626</td><td class="line"> <span class='keyword'>return</span> g_list_reverse (unsaved_docs);</td></tr>
+<tr class="codeline" data-linenumber="4627"><td class="num" id="LN4627">4627</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="4628"><td class="num" id="LN4628">4628</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="4629"><td class="num" id="LN4629">4629</td><td class="line"><span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="4630"><td class="num" id="LN4630">4630</td><td class="line">_pluma_window_set_saving_session_state (PlumaWindow *window,</td></tr>
+<tr class="codeline" data-linenumber="4631"><td class="num" id="LN4631">4631</td><td class="line"> gboolean saving_session)</td></tr>
+<tr class="codeline" data-linenumber="4632"><td class="num" id="LN4632">4632</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="4633"><td class="num" id="LN4633">4633</td><td class="line"> PlumaWindowState old_state;</td></tr>
+<tr class="codeline" data-linenumber="4634"><td class="num" id="LN4634">4634</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="4635"><td class="num" id="LN4635">4635</td><td class="line"> <span class='macro'>g_return_if_fail (PLUMA_IS_WINDOW (window))<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_117<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((window)); GType __t = ((pluma_window_get_type())); gboolean<br> __r; if (!__inst) __r = (0); else if (__inst-&gt;g_class &amp;&amp;<br> __inst-&gt;g_class-&gt;g_type == __t) __r = (!(0)); else __r<br> = g_type_check_instance_is_a (__inst, __t); __r; }))))) _g_boolean_var_117<br> = 1; else _g_boolean_var_117 = 0; _g_boolean_var_117; }), 1)<br>)) { } else { g_return_if_fail_warning (((gchar*) 0), ((const<br> char*) (__func__)), "PLUMA_IS_WINDOW (window)"); return; } }<br> while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="4636"><td class="num" id="LN4636">4636</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="4637"><td class="num" id="LN4637">4637</td><td class="line"> old_state = window-&gt;priv-&gt;state;</td></tr>
+<tr class="codeline" data-linenumber="4638"><td class="num" id="LN4638">4638</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="4639"><td class="num" id="LN4639">4639</td><td class="line"> <span class='keyword'>if</span> (saving_session)</td></tr>
+<tr class="codeline" data-linenumber="4640"><td class="num" id="LN4640">4640</td><td class="line"> window-&gt;priv-&gt;state |= PLUMA_WINDOW_STATE_SAVING_SESSION;</td></tr>
+<tr class="codeline" data-linenumber="4641"><td class="num" id="LN4641">4641</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="4642"><td class="num" id="LN4642">4642</td><td class="line"> window-&gt;priv-&gt;state &amp;= ~PLUMA_WINDOW_STATE_SAVING_SESSION;</td></tr>
+<tr class="codeline" data-linenumber="4643"><td class="num" id="LN4643">4643</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="4644"><td class="num" id="LN4644">4644</td><td class="line"> <span class='keyword'>if</span> (old_state != window-&gt;priv-&gt;state)</td></tr>
+<tr class="codeline" data-linenumber="4645"><td class="num" id="LN4645">4645</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="4646"><td class="num" id="LN4646">4646</td><td class="line"> set_sensitivity_according_to_window_state (window);</td></tr>
+<tr class="codeline" data-linenumber="4647"><td class="num" id="LN4647">4647</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="4648"><td class="num" id="LN4648">4648</td><td class="line"> g_object_notify (<span class='macro'>G_OBJECT (window)<span class='macro_popup'>((((GObject*) (void *) ((window)))))</span></span>, <span class='string_literal'>"state"</span>);</td></tr>
+<tr class="codeline" data-linenumber="4649"><td class="num" id="LN4649">4649</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="4650"><td class="num" id="LN4650">4650</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="4651"><td class="num" id="LN4651">4651</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="4652"><td class="num" id="LN4652">4652</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="4653"><td class="num" id="LN4653">4653</td><td class="line">hide_notebook_tabs_on_fullscreen (GtkNotebook *notebook,</td></tr>
+<tr class="codeline" data-linenumber="4654"><td class="num" id="LN4654">4654</td><td class="line"> GParamSpec *pspec,</td></tr>
+<tr class="codeline" data-linenumber="4655"><td class="num" id="LN4655">4655</td><td class="line"> PlumaWindow *window)</td></tr>
+<tr class="codeline" data-linenumber="4656"><td class="num" id="LN4656">4656</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="4657"><td class="num" id="LN4657">4657</td><td class="line"> gtk_notebook_set_show_tabs (notebook, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="4658"><td class="num" id="LN4658">4658</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="4659"><td class="num" id="LN4659">4659</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="4660"><td class="num" id="LN4660">4660</td><td class="line"><span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="4661"><td class="num" id="LN4661">4661</td><td class="line">_pluma_window_fullscreen (PlumaWindow *window)</td></tr>
+<tr class="codeline" data-linenumber="4662"><td class="num" id="LN4662">4662</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="4663"><td class="num" id="LN4663">4663</td><td class="line"> <span class='macro'>g_return_if_fail (PLUMA_IS_WINDOW (window))<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_118<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((window)); GType __t = ((pluma_window_get_type())); gboolean<br> __r; if (!__inst) __r = (0); else if (__inst-&gt;g_class &amp;&amp;<br> __inst-&gt;g_class-&gt;g_type == __t) __r = (!(0)); else __r<br> = g_type_check_instance_is_a (__inst, __t); __r; }))))) _g_boolean_var_118<br> = 1; else _g_boolean_var_118 = 0; _g_boolean_var_118; }), 1)<br>)) { } else { g_return_if_fail_warning (((gchar*) 0), ((const<br> char*) (__func__)), "PLUMA_IS_WINDOW (window)"); return; } }<br> while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="4664"><td class="num" id="LN4664">4664</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="4665"><td class="num" id="LN4665">4665</td><td class="line"> <span class='keyword'>if</span> (_pluma_window_is_fullscreen (window))</td></tr>
+<tr class="codeline" data-linenumber="4666"><td class="num" id="LN4666">4666</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="4667"><td class="num" id="LN4667">4667</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="4668"><td class="num" id="LN4668">4668</td><td class="line"> <span class='comment'>/* Go to fullscreen mode and hide bars */</span></td></tr>
+<tr class="codeline" data-linenumber="4669"><td class="num" id="LN4669">4669</td><td class="line"> gtk_window_fullscreen (&amp;window-&gt;window);</td></tr>
+<tr class="codeline" data-linenumber="4670"><td class="num" id="LN4670">4670</td><td class="line"> gtk_notebook_set_show_tabs (<span class='macro'>GTK_NOTEBOOK (window-&gt;priv-&gt;notebook)<span class='macro_popup'>((((GtkNotebook*) (void *) ((window-&gt;priv-&gt;notebook))))<br>)</span></span>, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="4671"><td class="num" id="LN4671">4671</td><td class="line"> <span class='macro'>g_signal_connect (window-&gt;priv-&gt;notebook, <span class='string_literal'>"notify::show-tabs"</span>,<span class='macro_popup'>g_signal_connect_data ((window-&gt;priv-&gt;notebook), ("notify::show-tabs"<br>), (((GCallback) (hide_notebook_tabs_on_fullscreen))), (window<br>), ((void*)0), (GConnectFlags) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="4672"><td class="num" id="LN4672">4672</td><td class="line"> <span class='macro'>G_CALLBACK (hide_notebook_tabs_on_fullscreen), window)<span class='macro_popup'>g_signal_connect_data ((window-&gt;priv-&gt;notebook), ("notify::show-tabs"<br>), (((GCallback) (hide_notebook_tabs_on_fullscreen))), (window<br>), ((void*)0), (GConnectFlags) 0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="4673"><td class="num" id="LN4673">4673</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="4674"><td class="num" id="LN4674">4674</td><td class="line"> gtk_widget_hide (window-&gt;priv-&gt;menubar);</td></tr>
+<tr class="codeline" data-linenumber="4675"><td class="num" id="LN4675">4675</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="4676"><td class="num" id="LN4676">4676</td><td class="line"> <span class='macro'>g_signal_handlers_block_by_func (window-&gt;priv-&gt;toolbar,<span class='macro_popup'>g_signal_handlers_block_matched ((window-&gt;priv-&gt;toolbar<br>), (GSignalMatchType) (G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA<br>), 0, 0, ((void*)0), (toolbar_visibility_changed), (window))</span></span></td></tr>
+<tr class="codeline" data-linenumber="4677"><td class="num" id="LN4677">4677</td><td class="line"> <span class='macro'>toolbar_visibility_changed,<span class='macro_popup'>g_signal_handlers_block_matched ((window-&gt;priv-&gt;toolbar<br>), (GSignalMatchType) (G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA<br>), 0, 0, ((void*)0), (toolbar_visibility_changed), (window))</span></span></td></tr>
+<tr class="codeline" data-linenumber="4678"><td class="num" id="LN4678">4678</td><td class="line"> <span class='macro'>window)<span class='macro_popup'>g_signal_handlers_block_matched ((window-&gt;priv-&gt;toolbar<br>), (GSignalMatchType) (G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA<br>), 0, 0, ((void*)0), (toolbar_visibility_changed), (window))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="4679"><td class="num" id="LN4679">4679</td><td class="line"> gtk_widget_hide (window-&gt;priv-&gt;toolbar);</td></tr>
+<tr class="codeline" data-linenumber="4680"><td class="num" id="LN4680">4680</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="4681"><td class="num" id="LN4681">4681</td><td class="line"> <span class='macro'>g_signal_handlers_block_by_func (window-&gt;priv-&gt;statusbar,<span class='macro_popup'>g_signal_handlers_block_matched ((window-&gt;priv-&gt;statusbar<br>), (GSignalMatchType) (G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA<br>), 0, 0, ((void*)0), (statusbar_visibility_changed), (window)<br>)</span></span></td></tr>
+<tr class="codeline" data-linenumber="4682"><td class="num" id="LN4682">4682</td><td class="line"> <span class='macro'>statusbar_visibility_changed,<span class='macro_popup'>g_signal_handlers_block_matched ((window-&gt;priv-&gt;statusbar<br>), (GSignalMatchType) (G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA<br>), 0, 0, ((void*)0), (statusbar_visibility_changed), (window)<br>)</span></span></td></tr>
+<tr class="codeline" data-linenumber="4683"><td class="num" id="LN4683">4683</td><td class="line"> <span class='macro'>window)<span class='macro_popup'>g_signal_handlers_block_matched ((window-&gt;priv-&gt;statusbar<br>), (GSignalMatchType) (G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA<br>), 0, 0, ((void*)0), (statusbar_visibility_changed), (window)<br>)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="4684"><td class="num" id="LN4684">4684</td><td class="line"> gtk_widget_hide (window-&gt;priv-&gt;statusbar);</td></tr>
+<tr class="codeline" data-linenumber="4685"><td class="num" id="LN4685">4685</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="4686"><td class="num" id="LN4686">4686</td><td class="line"> fullscreen_controls_build (window);</td></tr>
+<tr class="codeline" data-linenumber="4687"><td class="num" id="LN4687">4687</td><td class="line"> fullscreen_controls_show (window);</td></tr>
+<tr class="codeline" data-linenumber="4688"><td class="num" id="LN4688">4688</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="4689"><td class="num" id="LN4689">4689</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="4690"><td class="num" id="LN4690">4690</td><td class="line"><span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="4691"><td class="num" id="LN4691">4691</td><td class="line">_pluma_window_unfullscreen (PlumaWindow *window)</td></tr>
+<tr class="codeline" data-linenumber="4692"><td class="num" id="LN4692">4692</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="4693"><td class="num" id="LN4693">4693</td><td class="line"> gboolean visible;</td></tr>
+<tr class="codeline" data-linenumber="4694"><td class="num" id="LN4694">4694</td><td class="line"> GtkAction *action;</td></tr>
+<tr class="codeline" data-linenumber="4695"><td class="num" id="LN4695">4695</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="4696"><td class="num" id="LN4696">4696</td><td class="line"> <span class='macro'>g_return_if_fail (PLUMA_IS_WINDOW (window))<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_119<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((window)); GType __t = ((pluma_window_get_type())); gboolean<br> __r; if (!__inst) __r = (0); else if (__inst-&gt;g_class &amp;&amp;<br> __inst-&gt;g_class-&gt;g_type == __t) __r = (!(0)); else __r<br> = g_type_check_instance_is_a (__inst, __t); __r; }))))) _g_boolean_var_119<br> = 1; else _g_boolean_var_119 = 0; _g_boolean_var_119; }), 1)<br>)) { } else { g_return_if_fail_warning (((gchar*) 0), ((const<br> char*) (__func__)), "PLUMA_IS_WINDOW (window)"); return; } }<br> while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="4697"><td class="num" id="LN4697">4697</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="4698"><td class="num" id="LN4698">4698</td><td class="line"> <span class='keyword'>if</span> (!_pluma_window_is_fullscreen (window))</td></tr>
+<tr class="codeline" data-linenumber="4699"><td class="num" id="LN4699">4699</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="4700"><td class="num" id="LN4700">4700</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="4701"><td class="num" id="LN4701">4701</td><td class="line"> <span class='comment'>/* Unfullscreen and show bars */</span></td></tr>
+<tr class="codeline" data-linenumber="4702"><td class="num" id="LN4702">4702</td><td class="line"> gtk_window_unfullscreen (&amp;window-&gt;window);</td></tr>
+<tr class="codeline" data-linenumber="4703"><td class="num" id="LN4703">4703</td><td class="line"> <span class='macro'>g_signal_handlers_disconnect_by_func (window-&gt;priv-&gt;notebook,<span class='macro_popup'>g_signal_handlers_disconnect_matched ((window-&gt;priv-&gt;notebook<br>), (GSignalMatchType) (G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA<br>), 0, 0, ((void*)0), (hide_notebook_tabs_on_fullscreen), (window<br>))</span></span></td></tr>
+<tr class="codeline" data-linenumber="4704"><td class="num" id="LN4704">4704</td><td class="line"> <span class='macro'>hide_notebook_tabs_on_fullscreen,<span class='macro_popup'>g_signal_handlers_disconnect_matched ((window-&gt;priv-&gt;notebook<br>), (GSignalMatchType) (G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA<br>), 0, 0, ((void*)0), (hide_notebook_tabs_on_fullscreen), (window<br>))</span></span></td></tr>
+<tr class="codeline" data-linenumber="4705"><td class="num" id="LN4705">4705</td><td class="line"> <span class='macro'>window)<span class='macro_popup'>g_signal_handlers_disconnect_matched ((window-&gt;priv-&gt;notebook<br>), (GSignalMatchType) (G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA<br>), 0, 0, ((void*)0), (hide_notebook_tabs_on_fullscreen), (window<br>))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="4706"><td class="num" id="LN4706">4706</td><td class="line"> gtk_notebook_set_show_tabs (<span class='macro'>GTK_NOTEBOOK (window-&gt;priv-&gt;notebook)<span class='macro_popup'>((((GtkNotebook*) (void *) ((window-&gt;priv-&gt;notebook))))<br>)</span></span>, <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="4707"><td class="num" id="LN4707">4707</td><td class="line"> gtk_widget_show (window-&gt;priv-&gt;menubar);</td></tr>
+<tr class="codeline" data-linenumber="4708"><td class="num" id="LN4708">4708</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="4709"><td class="num" id="LN4709">4709</td><td class="line"> action = gtk_action_group_get_action (window-&gt;priv-&gt;always_sensitive_action_group,</td></tr>
+<tr class="codeline" data-linenumber="4710"><td class="num" id="LN4710">4710</td><td class="line"> <span class='string_literal'>"ViewToolbar"</span>);</td></tr>
+<tr class="codeline" data-linenumber="4711"><td class="num" id="LN4711">4711</td><td class="line"> visible = gtk_toggle_action_get_active (<span class='macro'>GTK_TOGGLE_ACTION (action)<span class='macro_popup'>((((GtkToggleAction*) (void *) ((action)))))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="4712"><td class="num" id="LN4712">4712</td><td class="line"> <span class='keyword'>if</span> (visible)</td></tr>
+<tr class="codeline" data-linenumber="4713"><td class="num" id="LN4713">4713</td><td class="line"> gtk_widget_show (window-&gt;priv-&gt;toolbar);</td></tr>
+<tr class="codeline" data-linenumber="4714"><td class="num" id="LN4714">4714</td><td class="line"> <span class='macro'>g_signal_handlers_unblock_by_func (window-&gt;priv-&gt;toolbar,<span class='macro_popup'>g_signal_handlers_unblock_matched ((window-&gt;priv-&gt;toolbar<br>), (GSignalMatchType) (G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA<br>), 0, 0, ((void*)0), (toolbar_visibility_changed), (window))</span></span></td></tr>
+<tr class="codeline" data-linenumber="4715"><td class="num" id="LN4715">4715</td><td class="line"> <span class='macro'>toolbar_visibility_changed,<span class='macro_popup'>g_signal_handlers_unblock_matched ((window-&gt;priv-&gt;toolbar<br>), (GSignalMatchType) (G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA<br>), 0, 0, ((void*)0), (toolbar_visibility_changed), (window))</span></span></td></tr>
+<tr class="codeline" data-linenumber="4716"><td class="num" id="LN4716">4716</td><td class="line"> <span class='macro'>window)<span class='macro_popup'>g_signal_handlers_unblock_matched ((window-&gt;priv-&gt;toolbar<br>), (GSignalMatchType) (G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA<br>), 0, 0, ((void*)0), (toolbar_visibility_changed), (window))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="4717"><td class="num" id="LN4717">4717</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="4718"><td class="num" id="LN4718">4718</td><td class="line"> action = gtk_action_group_get_action (window-&gt;priv-&gt;always_sensitive_action_group,</td></tr>
+<tr class="codeline" data-linenumber="4719"><td class="num" id="LN4719">4719</td><td class="line"> <span class='string_literal'>"ViewStatusbar"</span>);</td></tr>
+<tr class="codeline" data-linenumber="4720"><td class="num" id="LN4720">4720</td><td class="line"> visible = gtk_toggle_action_get_active (<span class='macro'>GTK_TOGGLE_ACTION (action)<span class='macro_popup'>((((GtkToggleAction*) (void *) ((action)))))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="4721"><td class="num" id="LN4721">4721</td><td class="line"> <span class='keyword'>if</span> (visible)</td></tr>
+<tr class="codeline" data-linenumber="4722"><td class="num" id="LN4722">4722</td><td class="line"> gtk_widget_show (window-&gt;priv-&gt;statusbar);</td></tr>
+<tr class="codeline" data-linenumber="4723"><td class="num" id="LN4723">4723</td><td class="line"> <span class='macro'>g_signal_handlers_unblock_by_func (window-&gt;priv-&gt;statusbar,<span class='macro_popup'>g_signal_handlers_unblock_matched ((window-&gt;priv-&gt;statusbar<br>), (GSignalMatchType) (G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA<br>), 0, 0, ((void*)0), (statusbar_visibility_changed), (window)<br>)</span></span></td></tr>
+<tr class="codeline" data-linenumber="4724"><td class="num" id="LN4724">4724</td><td class="line"> <span class='macro'>statusbar_visibility_changed,<span class='macro_popup'>g_signal_handlers_unblock_matched ((window-&gt;priv-&gt;statusbar<br>), (GSignalMatchType) (G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA<br>), 0, 0, ((void*)0), (statusbar_visibility_changed), (window)<br>)</span></span></td></tr>
+<tr class="codeline" data-linenumber="4725"><td class="num" id="LN4725">4725</td><td class="line"> <span class='macro'>window)<span class='macro_popup'>g_signal_handlers_unblock_matched ((window-&gt;priv-&gt;statusbar<br>), (GSignalMatchType) (G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA<br>), 0, 0, ((void*)0), (statusbar_visibility_changed), (window)<br>)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="4726"><td class="num" id="LN4726">4726</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="4727"><td class="num" id="LN4727">4727</td><td class="line"> gtk_widget_hide (window-&gt;priv-&gt;fullscreen_controls);</td></tr>
+<tr class="codeline" data-linenumber="4728"><td class="num" id="LN4728">4728</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="4729"><td class="num" id="LN4729">4729</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="4730"><td class="num" id="LN4730">4730</td><td class="line">gboolean</td></tr>
+<tr class="codeline" data-linenumber="4731"><td class="num" id="LN4731">4731</td><td class="line">_pluma_window_is_fullscreen (PlumaWindow *window)</td></tr>
+<tr class="codeline" data-linenumber="4732"><td class="num" id="LN4732">4732</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="4733"><td class="num" id="LN4733">4733</td><td class="line"> <span class='macro'>g_return_val_if_fail (PLUMA_IS_WINDOW (window), FALSE)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_120<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((window)); GType __t = ((pluma_window_get_type())); gboolean<br> __r; if (!__inst) __r = (0); else if (__inst-&gt;g_class &amp;&amp;<br> __inst-&gt;g_class-&gt;g_type == __t) __r = (!(0)); else __r<br> = g_type_check_instance_is_a (__inst, __t); __r; }))))) _g_boolean_var_120<br> = 1; else _g_boolean_var_120 = 0; _g_boolean_var_120; }), 1)<br>)) { } else { g_return_if_fail_warning (((gchar*) 0), ((const<br> char*) (__func__)), "PLUMA_IS_WINDOW (window)"); return ((0)<br>); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="4734"><td class="num" id="LN4734">4734</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="4735"><td class="num" id="LN4735">4735</td><td class="line"> <span class='keyword'>return</span> window-&gt;priv-&gt;window_state &amp; GDK_WINDOW_STATE_FULLSCREEN;</td></tr>
+<tr class="codeline" data-linenumber="4736"><td class="num" id="LN4736">4736</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="4737"><td class="num" id="LN4737">4737</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="4738"><td class="num" id="LN4738">4738</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="4739"><td class="num" id="LN4739">4739</td><td class="line"> <span class='comment'>* pluma_window_get_tab_from_location:</span></td></tr>
+<tr class="codeline" data-linenumber="4740"><td class="num" id="LN4740">4740</td><td class="line"> <span class='comment'>* @window: a #PlumaWindow</span></td></tr>
+<tr class="codeline" data-linenumber="4741"><td class="num" id="LN4741">4741</td><td class="line"> <span class='comment'>* @location: a #GFile</span></td></tr>
+<tr class="codeline" data-linenumber="4742"><td class="num" id="LN4742">4742</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="4743"><td class="num" id="LN4743">4743</td><td class="line"> <span class='comment'>* Gets the #PlumaTab that matches with the given @location.</span></td></tr>
+<tr class="codeline" data-linenumber="4744"><td class="num" id="LN4744">4744</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="4745"><td class="num" id="LN4745">4745</td><td class="line"> <span class='comment'>* Returns: (transfer none): the #PlumaTab that matches with the given @location.</span></td></tr>
+<tr class="codeline" data-linenumber="4746"><td class="num" id="LN4746">4746</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="4747"><td class="num" id="LN4747">4747</td><td class="line">PlumaTab *</td></tr>
+<tr class="codeline" data-linenumber="4748"><td class="num" id="LN4748">4748</td><td class="line">pluma_window_get_tab_from_location (PlumaWindow *window,</td></tr>
+<tr class="codeline" data-linenumber="4749"><td class="num" id="LN4749">4749</td><td class="line"> GFile *location)</td></tr>
+<tr class="codeline" data-linenumber="4750"><td class="num" id="LN4750">4750</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="4751"><td class="num" id="LN4751">4751</td><td class="line"> GList *tabs;</td></tr>
+<tr class="codeline" data-linenumber="4752"><td class="num" id="LN4752">4752</td><td class="line"> GList *l;</td></tr>
+<tr class="codeline" data-linenumber="4753"><td class="num" id="LN4753">4753</td><td class="line"> PlumaTab *ret = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="4754"><td class="num" id="LN4754">4754</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="4755"><td class="num" id="LN4755">4755</td><td class="line"> <span class='macro'>g_return_val_if_fail (PLUMA_IS_WINDOW (window), NULL)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_121<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((window)); GType __t = ((pluma_window_get_type())); gboolean<br> __r; if (!__inst) __r = (0); else if (__inst-&gt;g_class &amp;&amp;<br> __inst-&gt;g_class-&gt;g_type == __t) __r = (!(0)); else __r<br> = g_type_check_instance_is_a (__inst, __t); __r; }))))) _g_boolean_var_121<br> = 1; else _g_boolean_var_121 = 0; _g_boolean_var_121; }), 1)<br>)) { } else { g_return_if_fail_warning (((gchar*) 0), ((const<br> char*) (__func__)), "PLUMA_IS_WINDOW (window)"); return (((void<br>*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="4756"><td class="num" id="LN4756">4756</td><td class="line"> <span class='macro'>g_return_val_if_fail (G_IS_FILE (location), NULL)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_122<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((location)); GType __t = ((g_file_get_type ())); gboolean<br> __r; if (!__inst) __r = (0); else if (__inst-&gt;g_class &amp;&amp;<br> __inst-&gt;g_class-&gt;g_type == __t) __r = (!(0)); else __r<br> = g_type_check_instance_is_a (__inst, __t); __r; }))))) _g_boolean_var_122<br> = 1; else _g_boolean_var_122 = 0; _g_boolean_var_122; }), 1)<br>)) { } else { g_return_if_fail_warning (((gchar*) 0), ((const<br> char*) (__func__)), "G_IS_FILE (location)"); return (((void*<br>)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="4757"><td class="num" id="LN4757">4757</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="4758"><td class="num" id="LN4758">4758</td><td class="line"> tabs = gtk_container_get_children (<span class='macro'>GTK_CONTAINER (window-&gt;priv-&gt;notebook)<span class='macro_popup'>((((GtkContainer*) (void *) ((window-&gt;priv-&gt;notebook)))<br>))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="4759"><td class="num" id="LN4759">4759</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="4760"><td class="num" id="LN4760">4760</td><td class="line"> <span class='keyword'>for</span> (l = tabs; l != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>; l = <span class='macro'>g_list_next (l)<span class='macro_popup'>((l) ? (((GList *)(l))-&gt;next) : ((void*)0))</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="4761"><td class="num" id="LN4761">4761</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="4762"><td class="num" id="LN4762">4762</td><td class="line"> PlumaDocument *d;</td></tr>
+<tr class="codeline" data-linenumber="4763"><td class="num" id="LN4763">4763</td><td class="line"> PlumaTab *t;</td></tr>
+<tr class="codeline" data-linenumber="4764"><td class="num" id="LN4764">4764</td><td class="line"> GFile *f;</td></tr>
+<tr class="codeline" data-linenumber="4765"><td class="num" id="LN4765">4765</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="4766"><td class="num" id="LN4766">4766</td><td class="line"> t = <span class='macro'>PLUMA_TAB (l-&gt;data)<span class='macro_popup'>((((PlumaTab*) (void *) ((l-&gt;data)))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="4767"><td class="num" id="LN4767">4767</td><td class="line"> d = pluma_tab_get_document (t);</td></tr>
+<tr class="codeline" data-linenumber="4768"><td class="num" id="LN4768">4768</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="4769"><td class="num" id="LN4769">4769</td><td class="line"> f = pluma_document_get_location (d);</td></tr>
+<tr class="codeline" data-linenumber="4770"><td class="num" id="LN4770">4770</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="4771"><td class="num" id="LN4771">4771</td><td class="line"> <span class='keyword'>if</span> ((f != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>))</td></tr>
+<tr class="codeline" data-linenumber="4772"><td class="num" id="LN4772">4772</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="4773"><td class="num" id="LN4773">4773</td><td class="line"> gboolean found = g_file_equal (location, f);</td></tr>
+<tr class="codeline" data-linenumber="4774"><td class="num" id="LN4774">4774</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="4775"><td class="num" id="LN4775">4775</td><td class="line"> g_object_unref (f);</td></tr>
+<tr class="codeline" data-linenumber="4776"><td class="num" id="LN4776">4776</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="4777"><td class="num" id="LN4777">4777</td><td class="line"> <span class='keyword'>if</span> (found)</td></tr>
+<tr class="codeline" data-linenumber="4778"><td class="num" id="LN4778">4778</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="4779"><td class="num" id="LN4779">4779</td><td class="line"> ret = t;</td></tr>
+<tr class="codeline" data-linenumber="4780"><td class="num" id="LN4780">4780</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="4781"><td class="num" id="LN4781">4781</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="4782"><td class="num" id="LN4782">4782</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="4783"><td class="num" id="LN4783">4783</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="4784"><td class="num" id="LN4784">4784</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="4785"><td class="num" id="LN4785">4785</td><td class="line"> g_list_free (tabs);</td></tr>
+<tr class="codeline" data-linenumber="4786"><td class="num" id="LN4786">4786</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="4787"><td class="num" id="LN4787">4787</td><td class="line"> <span class='keyword'>return</span> ret;</td></tr>
+<tr class="codeline" data-linenumber="4788"><td class="num" id="LN4788">4788</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="4789"><td class="num" id="LN4789">4789</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="4790"><td class="num" id="LN4790">4790</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="4791"><td class="num" id="LN4791">4791</td><td class="line"> <span class='comment'>* pluma_window_get_message_bus:</span></td></tr>
+<tr class="codeline" data-linenumber="4792"><td class="num" id="LN4792">4792</td><td class="line"> <span class='comment'>* @window: a #PlumaWindow</span></td></tr>
+<tr class="codeline" data-linenumber="4793"><td class="num" id="LN4793">4793</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="4794"><td class="num" id="LN4794">4794</td><td class="line"> <span class='comment'>* Gets the #PlumaMessageBus associated with @window. The returned reference</span></td></tr>
+<tr class="codeline" data-linenumber="4795"><td class="num" id="LN4795">4795</td><td class="line"> <span class='comment'>* is owned by the window and should not be unreffed.</span></td></tr>
+<tr class="codeline" data-linenumber="4796"><td class="num" id="LN4796">4796</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="4797"><td class="num" id="LN4797">4797</td><td class="line"> <span class='comment'>* Return value: (transfer none): the #PlumaMessageBus associated with @window</span></td></tr>
+<tr class="codeline" data-linenumber="4798"><td class="num" id="LN4798">4798</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="4799"><td class="num" id="LN4799">4799</td><td class="line">PlumaMessageBus *</td></tr>
+<tr class="codeline" data-linenumber="4800"><td class="num" id="LN4800">4800</td><td class="line">pluma_window_get_message_bus (PlumaWindow *window)</td></tr>
+<tr class="codeline" data-linenumber="4801"><td class="num" id="LN4801">4801</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="4802"><td class="num" id="LN4802">4802</td><td class="line"> <span class='macro'>g_return_val_if_fail (PLUMA_IS_WINDOW (window), NULL)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_123<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((window)); GType __t = ((pluma_window_get_type())); gboolean<br> __r; if (!__inst) __r = (0); else if (__inst-&gt;g_class &amp;&amp;<br> __inst-&gt;g_class-&gt;g_type == __t) __r = (!(0)); else __r<br> = g_type_check_instance_is_a (__inst, __t); __r; }))))) _g_boolean_var_123<br> = 1; else _g_boolean_var_123 = 0; _g_boolean_var_123; }), 1)<br>)) { } else { g_return_if_fail_warning (((gchar*) 0), ((const<br> char*) (__func__)), "PLUMA_IS_WINDOW (window)"); return (((void<br>*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="4803"><td class="num" id="LN4803">4803</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="4804"><td class="num" id="LN4804">4804</td><td class="line"> <span class='keyword'>return</span> window-&gt;priv-&gt;message_bus;</td></tr>
+<tr class="codeline" data-linenumber="4805"><td class="num" id="LN4805">4805</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="4806"><td class="num" id="LN4806">4806</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="4807"><td class="num" id="LN4807">4807</td><td class="line"><span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="4808"><td class="num" id="LN4808">4808</td><td class="line">_pluma_window_get_default_size (gint *width, gint *height)</td></tr>
+<tr class="codeline" data-linenumber="4809"><td class="num" id="LN4809">4809</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="4810"><td class="num" id="LN4810">4810</td><td class="line"> <span class='macro'>g_return_if_fail (width != NULL &amp;&amp; height != NULL)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_124<br>; if (width != ((void*)0) &amp;&amp; height != ((void*)0)) _g_boolean_var_124<br> = 1; else _g_boolean_var_124 = 0; _g_boolean_var_124; }), 1)<br>)) { } else { g_return_if_fail_warning (((gchar*) 0), ((const<br> char*) (__func__)), "width != NULL &amp;&amp; height != NULL"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="4811"><td class="num" id="LN4811">4811</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="4812"><td class="num" id="LN4812">4812</td><td class="line"> *width = <span class='macro'>PLUMA_WINDOW_DEFAULT_WIDTH<span class='macro_popup'>650</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="4813"><td class="num" id="LN4813">4813</td><td class="line"> *height = <span class='macro'>PLUMA_WINDOW_DEFAULT_HEIGHT<span class='macro_popup'>500</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="4814"><td class="num" id="LN4814">4814</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="4815"><td class="num" id="LN4815">4815</td><td class="line"> </td></tr>
+</table></body></html>
diff --git a/2023-05-28-030536-6612-1@f643dde74cbd_master/report-4a60ca.html b/2023-05-28-030536-6612-1@f643dde74cbd_master/report-4a60ca.html
new file mode 100644
index 00000000..0e716c93
--- /dev/null
+++ b/2023-05-28-030536-6612-1@f643dde74cbd_master/report-4a60ca.html
@@ -0,0 +1,4233 @@
+<!doctype html>
+<html>
+<head>
+<title>pluma-file-browser-store.c</title>
+
+<style type="text/css">
+body { color:#000000; background-color:#ffffff }
+body { font-family:Helvetica, sans-serif; font-size:10pt }
+h1 { font-size:14pt }
+.FileName { margin-top: 5px; margin-bottom: 5px; display: inline; }
+.FileNav { margin-left: 5px; margin-right: 5px; display: inline; }
+.FileNav a { text-decoration:none; font-size: larger; }
+.divider { margin-top: 30px; margin-bottom: 30px; height: 15px; }
+.divider { background-color: gray; }
+.code { border-collapse:collapse; width:100%; }
+.code { font-family: "Monospace", monospace; font-size:10pt }
+.code { line-height: 1.2em }
+.comment { color: green; font-style: oblique }
+.keyword { color: blue }
+.string_literal { color: red }
+.directive { color: darkmagenta }
+
+/* Macros and variables could have pop-up notes hidden by default.
+ - Macro pop-up: expansion of the macro
+ - Variable pop-up: value (table) of the variable */
+.macro_popup, .variable_popup { display: none; }
+
+/* Pop-up appears on mouse-hover event. */
+.macro:hover .macro_popup, .variable:hover .variable_popup {
+ display: block;
+ padding: 2px;
+ -webkit-border-radius:5px;
+ -webkit-box-shadow:1px 1px 7px #000;
+ border-radius:5px;
+ box-shadow:1px 1px 7px #000;
+ position: absolute;
+ top: -1em;
+ left:10em;
+ z-index: 1
+}
+
+.macro_popup {
+ border: 2px solid red;
+ background-color:#FFF0F0;
+ font-weight: normal;
+}
+
+.variable_popup {
+ border: 2px solid blue;
+ background-color:#F0F0FF;
+ font-weight: bold;
+ font-family: Helvetica, sans-serif;
+ font-size: 9pt;
+}
+
+/* Pop-up notes needs a relative position as a base where they pops up. */
+.macro, .variable {
+ background-color: PaleGoldenRod;
+ position: relative;
+}
+.macro { color: DarkMagenta; }
+
+#tooltiphint {
+ position: fixed;
+ width: 50em;
+ margin-left: -25em;
+ left: 50%;
+ padding: 10px;
+ border: 1px solid #b0b0b0;
+ border-radius: 2px;
+ box-shadow: 1px 1px 7px black;
+ background-color: #c0c0c0;
+ z-index: 2;
+}
+
+.num { width:2.5em; padding-right:2ex; background-color:#eeeeee }
+.num { text-align:right; font-size:8pt }
+.num { color:#444444 }
+.line { padding-left: 1ex; border-left: 3px solid #ccc }
+.line { white-space: pre }
+.msg { -webkit-box-shadow:1px 1px 7px #000 }
+.msg { box-shadow:1px 1px 7px #000 }
+.msg { -webkit-border-radius:5px }
+.msg { border-radius:5px }
+.msg { font-family:Helvetica, sans-serif; font-size:8pt }
+.msg { float:left }
+.msg { position:relative }
+.msg { padding:0.25em 1ex 0.25em 1ex }
+.msg { margin-top:10px; margin-bottom:10px }
+.msg { font-weight:bold }
+.msg { max-width:60em; word-wrap: break-word; white-space: pre-wrap }
+.msgT { padding:0x; spacing:0x }
+.msgEvent { background-color:#fff8b4; color:#000000 }
+.msgControl { background-color:#bbbbbb; color:#000000 }
+.msgNote { background-color:#ddeeff; color:#000000 }
+.mrange { background-color:#dfddf3 }
+.mrange { border-bottom:1px solid #6F9DBE }
+.PathIndex { font-weight: bold; padding:0px 5px; margin-right:5px; }
+.PathIndex { -webkit-border-radius:8px }
+.PathIndex { border-radius:8px }
+.PathIndexEvent { background-color:#bfba87 }
+.PathIndexControl { background-color:#8c8c8c }
+.PathIndexPopUp { background-color: #879abc; }
+.PathNav a { text-decoration:none; font-size: larger }
+.CodeInsertionHint { font-weight: bold; background-color: #10dd10 }
+.CodeRemovalHint { background-color:#de1010 }
+.CodeRemovalHint { border-bottom:1px solid #6F9DBE }
+.msg.selected{ background-color:orange !important; }
+
+table.simpletable {
+ padding: 5px;
+ font-size:12pt;
+ margin:20px;
+ border-collapse: collapse; border-spacing: 0px;
+}
+td.rowname {
+ text-align: right;
+ vertical-align: top;
+ font-weight: bold;
+ color:#444444;
+ padding-right:2ex;
+}
+
+/* Hidden text. */
+input.spoilerhider + label {
+ cursor: pointer;
+ text-decoration: underline;
+ display: block;
+}
+input.spoilerhider {
+ display: none;
+}
+input.spoilerhider ~ .spoiler {
+ overflow: hidden;
+ margin: 10px auto 0;
+ height: 0;
+ opacity: 0;
+}
+input.spoilerhider:checked + label + .spoiler{
+ height: auto;
+ opacity: 1;
+}
+</style>
+</head>
+<body>
+<!-- BUGDESC Value stored to 'node' is never read -->
+
+<!-- BUGTYPE Dead assignment -->
+
+<!-- BUGCATEGORY Unused code -->
+
+<!-- BUGFILE /rootdir/plugins/filebrowser/pluma-file-browser-store.c -->
+
+<!-- FILENAME pluma-file-browser-store.c -->
+
+<!-- FUNCTIONNAME pluma_file_browser_store_get_iter -->
+
+<!-- ISSUEHASHCONTENTOFLINEINCONTEXT 4a60caba6dfee1d467e865862da25fae -->
+
+<!-- BUGLINE 577 -->
+
+<!-- BUGCOLUMN 6 -->
+
+<!-- BUGPATHLENGTH 1 -->
+
+<!-- BUGMETAEND -->
+<!-- REPORTHEADER -->
+<h3>Bug Summary</h3>
+<table class="simpletable">
+<tr><td class="rowname">File:</td><td>plugins/filebrowser/pluma-file-browser-store.c</td></tr>
+<tr><td class="rowname">Warning:</td><td><a href="#EndPath">line 577, column 6</a><br />Value stored to 'node' is never read</td></tr>
+
+</table>
+<!-- REPORTSUMMARYEXTRA -->
+<h3>Annotated Source Code</h3>
+<p>Press <a href="#" onclick="toggleHelp(); return false;">'?'</a>
+ to see keyboard shortcuts</p>
+<input type="checkbox" class="spoilerhider" id="showinvocation" />
+<label for="showinvocation" >Show analyzer invocation</label>
+<div class="spoiler">clang -cc1 -cc1 -triple x86_64-redhat-linux-gnu -analyze -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name pluma-file-browser-store.c -analyzer-checker=core -analyzer-checker=apiModeling -analyzer-checker=unix -analyzer-checker=deadcode -analyzer-checker=security.insecureAPI.UncheckedReturn -analyzer-checker=security.insecureAPI.getpw -analyzer-checker=security.insecureAPI.gets -analyzer-checker=security.insecureAPI.mktemp -analyzer-checker=security.insecureAPI.mkstemp -analyzer-checker=security.insecureAPI.vfork -analyzer-checker=nullability.NullPassedToNonnull -analyzer-checker=nullability.NullReturnedFromNonnull -analyzer-output plist -w -setup-static-analyzer -mrelocation-model pic -pic-level 2 -fhalf-no-semantic-interposition -mframe-pointer=none -fmath-errno -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=2 -target-cpu x86-64 -tune-cpu generic -debugger-tuning=gdb -fcoverage-compilation-dir=/rootdir/plugins/filebrowser -resource-dir /usr/lib64/clang/16 -D HAVE_CONFIG_H -I . -I ../.. -I ../.. -I /usr/include/libxml2 -I /usr/include/glib-2.0 -I /usr/lib64/glib-2.0/include -I /usr/include/sysprof-4 -I /usr/include/libmount -I /usr/include/blkid -I /usr/include/gtk-3.0 -I /usr/include/pango-1.0 -I /usr/include/harfbuzz -I /usr/include/freetype2 -I /usr/include/libpng16 -I /usr/include/fribidi -I /usr/include/cairo -I /usr/include/pixman-1 -I /usr/include/gdk-pixbuf-2.0 -I /usr/include/gio-unix-2.0 -I /usr/include/cloudproviders -I /usr/include/atk-1.0 -I /usr/include/at-spi2-atk/2.0 -I /usr/include/at-spi-2.0 -I /usr/include/dbus-1.0 -I /usr/lib64/dbus-1.0/include -I /usr/include/gtksourceview-4 -I /usr/include/libpeas-1.0 -I /usr/include/gobject-introspection-1.0 -D PIC -internal-isystem /usr/lib64/clang/16/include -internal-isystem /usr/local/include -internal-isystem /usr/bin/../lib/gcc/x86_64-redhat-linux/13/../../../../x86_64-redhat-linux/include -internal-externc-isystem /include -internal-externc-isystem /usr/include -O2 -Wno-unused-parameter -fdebug-compilation-dir=/rootdir/plugins/filebrowser -ferror-limit 19 -fgnuc-version=4.2.1 -vectorize-loops -vectorize-slp -analyzer-checker deadcode.DeadStores -analyzer-checker alpha.deadcode.UnreachableCode -analyzer-checker alpha.core.CastSize -analyzer-checker alpha.core.CastToStruct -analyzer-checker alpha.core.IdenticalExpr -analyzer-checker alpha.core.SizeofPtr -analyzer-checker alpha.security.ArrayBoundV2 -analyzer-checker alpha.security.MallocOverflow -analyzer-checker alpha.security.ReturnPtrRange -analyzer-checker alpha.unix.SimpleStream -analyzer-checker alpha.unix.cstring.BufferOverlap -analyzer-checker alpha.unix.cstring.NotNullTerminated -analyzer-checker alpha.unix.cstring.OutOfBounds -analyzer-checker alpha.core.FixedAddr -analyzer-checker security.insecureAPI.strcpy -analyzer-output=html -faddrsig -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o /rootdir/html-report/2023-05-28-030536-6612-1 -x c pluma-file-browser-store.c
+</div>
+<div id='tooltiphint' hidden="true">
+ <p>Keyboard shortcuts: </p>
+ <ul>
+ <li>Use 'j/k' keys for keyboard navigation</li>
+ <li>Use 'Shift+S' to show/hide relevant lines</li>
+ <li>Use '?' to toggle this window</li>
+ </ul>
+ <a href="#" onclick="toggleHelp(); return false;">Close</a>
+</div>
+<script type='text/javascript'>
+var relevant_lines = {"1": {"577": 1}};
+
+var filterCounterexample = function (hide) {
+ var tables = document.getElementsByClassName("code");
+ for (var t=0; t<tables.length; t++) {
+ var table = tables[t];
+ var file_id = table.getAttribute("data-fileid");
+ var lines_in_fid = relevant_lines[file_id];
+ if (!lines_in_fid) {
+ lines_in_fid = {};
+ }
+ var lines = table.getElementsByClassName("codeline");
+ for (var i=0; i<lines.length; i++) {
+ var el = lines[i];
+ var lineNo = el.getAttribute("data-linenumber");
+ if (!lines_in_fid[lineNo]) {
+ if (hide) {
+ el.setAttribute("hidden", "");
+ } else {
+ el.removeAttribute("hidden");
+ }
+ }
+ }
+ }
+}
+
+window.addEventListener("keydown", function (event) {
+ if (event.defaultPrevented) {
+ return;
+ }
+ // SHIFT + S
+ if (event.shiftKey && event.keyCode == 83) {
+ var checked = document.getElementsByName("showCounterexample")[0].checked;
+ filterCounterexample(!checked);
+ document.getElementsByName("showCounterexample")[0].click();
+ } else {
+ return;
+ }
+ event.preventDefault();
+}, true);
+
+document.addEventListener("DOMContentLoaded", function() {
+ document.querySelector('input[name="showCounterexample"]').onchange=
+ function (event) {
+ filterCounterexample(this.checked);
+ };
+});
+</script>
+
+<form>
+ <input type="checkbox" name="showCounterexample" id="showCounterexample" />
+ <label for="showCounterexample">
+ Show only relevant lines
+ </label>
+ <input type="checkbox" name="showArrows"
+ id="showArrows" style="margin-left: 10px" />
+ <label for="showArrows">
+ Show control flow arrows
+ </label>
+</form>
+
+<script type='text/javascript'>
+// Return range of numbers from a range [lower, upper).
+function range(lower, upper) {
+ var array = [];
+ for (var i = lower; i <= upper; ++i) {
+ array.push(i);
+ }
+ return array;
+}
+
+var getRelatedArrowIndices = function(pathId) {
+ // HTML numeration of events is a bit different than it is in the path.
+ // Everything is rotated one step to the right, so the last element
+ // (error diagnostic) has index 0.
+ if (pathId == 0) {
+ // arrowIndices has at least 2 elements
+ pathId = arrowIndices.length - 1;
+ }
+
+ return range(arrowIndices[pathId], arrowIndices[pathId - 1]);
+}
+
+var highlightArrowsForSelectedEvent = function() {
+ const selectedNum = findNum();
+ const arrowIndicesToHighlight = getRelatedArrowIndices(selectedNum);
+ arrowIndicesToHighlight.forEach((index) => {
+ var arrow = document.querySelector("#arrow" + index);
+ if(arrow) {
+ classListAdd(arrow, "selected")
+ }
+ });
+}
+
+var getAbsoluteBoundingRect = function(element) {
+ const relative = element.getBoundingClientRect();
+ return {
+ left: relative.left + window.pageXOffset,
+ right: relative.right + window.pageXOffset,
+ top: relative.top + window.pageYOffset,
+ bottom: relative.bottom + window.pageYOffset,
+ height: relative.height,
+ width: relative.width
+ };
+}
+
+var drawArrow = function(index) {
+ // This function is based on the great answer from SO:
+ // https://stackoverflow.com/a/39575674/11582326
+ var start = document.querySelector("#start" + index);
+ var end = document.querySelector("#end" + index);
+ var arrow = document.querySelector("#arrow" + index);
+
+ var startRect = getAbsoluteBoundingRect(start);
+ var endRect = getAbsoluteBoundingRect(end);
+
+ // It is an arrow from a token to itself, no need to visualize it.
+ if (startRect.top == endRect.top &&
+ startRect.left == endRect.left)
+ return;
+
+ // Each arrow is a very simple Bézier curve, with two nodes and
+ // two handles. So, we need to calculate four points in the window:
+ // * start node
+ var posStart = { x: 0, y: 0 };
+ // * end node
+ var posEnd = { x: 0, y: 0 };
+ // * handle for the start node
+ var startHandle = { x: 0, y: 0 };
+ // * handle for the end node
+ var endHandle = { x: 0, y: 0 };
+ // One can visualize it as follows:
+ //
+ // start handle
+ // /
+ // X"""_.-""""X
+ // .' \
+ // / start node
+ // |
+ // |
+ // | end node
+ // \ /
+ // `->X
+ // X-'
+ // \
+ // end handle
+ //
+ // NOTE: (0, 0) is the top left corner of the window.
+
+ // We have 3 similar, but still different scenarios to cover:
+ //
+ // 1. Two tokens on different lines.
+ // -xxx
+ // /
+ // \
+ // -> xxx
+ // In this situation, we draw arrow on the left curving to the left.
+ // 2. Two tokens on the same line, and the destination is on the right.
+ // ____
+ // / \
+ // / V
+ // xxx xxx
+ // In this situation, we draw arrow above curving upwards.
+ // 3. Two tokens on the same line, and the destination is on the left.
+ // xxx xxx
+ // ^ /
+ // \____/
+ // In this situation, we draw arrow below curving downwards.
+ const onDifferentLines = startRect.top <= endRect.top - 5 ||
+ startRect.top >= endRect.top + 5;
+ const leftToRight = startRect.left < endRect.left;
+
+ // NOTE: various magic constants are chosen empirically for
+ // better positioning and look
+ if (onDifferentLines) {
+ // Case #1
+ const topToBottom = startRect.top < endRect.top;
+ posStart.x = startRect.left - 1;
+ // We don't want to start it at the top left corner of the token,
+ // it doesn't feel like this is where the arrow comes from.
+ // For this reason, we start it in the middle of the left side
+ // of the token.
+ posStart.y = startRect.top + startRect.height / 2;
+
+ // End node has arrow head and we give it a bit more space.
+ posEnd.x = endRect.left - 4;
+ posEnd.y = endRect.top;
+
+ // Utility object with x and y offsets for handles.
+ var curvature = {
+ // We want bottom-to-top arrow to curve a bit more, so it doesn't
+ // overlap much with top-to-bottom curves (much more frequent).
+ x: topToBottom ? 15 : 25,
+ y: Math.min((posEnd.y - posStart.y) / 3, 10)
+ }
+
+ // When destination is on the different line, we can make a
+ // curvier arrow because we have space for it.
+ // So, instead of using
+ //
+ // startHandle.x = posStart.x - curvature.x
+ // endHandle.x = posEnd.x - curvature.x
+ //
+ // We use the leftmost of these two values for both handles.
+ startHandle.x = Math.min(posStart.x, posEnd.x) - curvature.x;
+ endHandle.x = startHandle.x;
+
+ // Curving downwards from the start node...
+ startHandle.y = posStart.y + curvature.y;
+ // ... and upwards from the end node.
+ endHandle.y = posEnd.y - curvature.y;
+
+ } else if (leftToRight) {
+ // Case #2
+ // Starting from the top right corner...
+ posStart.x = startRect.right - 1;
+ posStart.y = startRect.top;
+
+ // ...and ending at the top left corner of the end token.
+ posEnd.x = endRect.left + 1;
+ posEnd.y = endRect.top - 1;
+
+ // Utility object with x and y offsets for handles.
+ var curvature = {
+ x: Math.min((posEnd.x - posStart.x) / 3, 15),
+ y: 5
+ }
+
+ // Curving to the right...
+ startHandle.x = posStart.x + curvature.x;
+ // ... and upwards from the start node.
+ startHandle.y = posStart.y - curvature.y;
+
+ // And to the left...
+ endHandle.x = posEnd.x - curvature.x;
+ // ... and upwards from the end node.
+ endHandle.y = posEnd.y - curvature.y;
+
+ } else {
+ // Case #3
+ // Starting from the bottom right corner...
+ posStart.x = startRect.right;
+ posStart.y = startRect.bottom;
+
+ // ...and ending also at the bottom right corner, but of the end token.
+ posEnd.x = endRect.right - 1;
+ posEnd.y = endRect.bottom + 1;
+
+ // Utility object with x and y offsets for handles.
+ var curvature = {
+ x: Math.min((posStart.x - posEnd.x) / 3, 15),
+ y: 5
+ }
+
+ // Curving to the left...
+ startHandle.x = posStart.x - curvature.x;
+ // ... and downwards from the start node.
+ startHandle.y = posStart.y + curvature.y;
+
+ // And to the right...
+ endHandle.x = posEnd.x + curvature.x;
+ // ... and downwards from the end node.
+ endHandle.y = posEnd.y + curvature.y;
+ }
+
+ // Put it all together into a path.
+ // More information on the format:
+ // https://developer.mozilla.org/en-US/docs/Web/SVG/Tutorial/Paths
+ var pathStr = "M" + posStart.x + "," + posStart.y + " " +
+ "C" + startHandle.x + "," + startHandle.y + " " +
+ endHandle.x + "," + endHandle.y + " " +
+ posEnd.x + "," + posEnd.y;
+
+ arrow.setAttribute("d", pathStr);
+};
+
+var drawArrows = function() {
+ const numOfArrows = document.querySelectorAll("path[id^=arrow]").length;
+ for (var i = 0; i < numOfArrows; ++i) {
+ drawArrow(i);
+ }
+}
+
+var toggleArrows = function(event) {
+ const arrows = document.querySelector("#arrows");
+ if (event.target.checked) {
+ arrows.setAttribute("visibility", "visible");
+ } else {
+ arrows.setAttribute("visibility", "hidden");
+ }
+}
+
+window.addEventListener("resize", drawArrows);
+document.addEventListener("DOMContentLoaded", function() {
+ // Whenever we show invocation, locations change, i.e. we
+ // need to redraw arrows.
+ document
+ .querySelector('input[id="showinvocation"]')
+ .addEventListener("click", drawArrows);
+ // Hiding irrelevant lines also should cause arrow rerender.
+ document
+ .querySelector('input[name="showCounterexample"]')
+ .addEventListener("change", drawArrows);
+ document
+ .querySelector('input[name="showArrows"]')
+ .addEventListener("change", toggleArrows);
+ drawArrows();
+ // Default highlighting for the last event.
+ highlightArrowsForSelectedEvent();
+});
+</script>
+
+<script type='text/javascript'>
+var digitMatcher = new RegExp("[0-9]+");
+
+var querySelectorAllArray = function(selector) {
+ return Array.prototype.slice.call(
+ document.querySelectorAll(selector));
+}
+
+document.addEventListener("DOMContentLoaded", function() {
+ querySelectorAllArray(".PathNav > a").forEach(
+ function(currentValue, currentIndex) {
+ var hrefValue = currentValue.getAttribute("href");
+ currentValue.onclick = function() {
+ scrollTo(document.querySelector(hrefValue));
+ return false;
+ };
+ });
+});
+
+var findNum = function() {
+ var s = document.querySelector(".msg.selected");
+ if (!s || s.id == "EndPath") {
+ return 0;
+ }
+ var out = parseInt(digitMatcher.exec(s.id)[0]);
+ return out;
+};
+
+var classListAdd = function(el, theClass) {
+ if(!el.className.baseVal)
+ el.className += " " + theClass;
+ else
+ el.className.baseVal += " " + theClass;
+};
+
+var classListRemove = function(el, theClass) {
+ var className = (!el.className.baseVal) ?
+ el.className : el.className.baseVal;
+ className = className.replace(" " + theClass, "");
+ if(!el.className.baseVal)
+ el.className = className;
+ else
+ el.className.baseVal = className;
+};
+
+var scrollTo = function(el) {
+ querySelectorAllArray(".selected").forEach(function(s) {
+ classListRemove(s, "selected");
+ });
+ classListAdd(el, "selected");
+ window.scrollBy(0, el.getBoundingClientRect().top -
+ (window.innerHeight / 2));
+ highlightArrowsForSelectedEvent();
+};
+
+var move = function(num, up, numItems) {
+ if (num == 1 && up || num == numItems - 1 && !up) {
+ return 0;
+ } else if (num == 0 && up) {
+ return numItems - 1;
+ } else if (num == 0 && !up) {
+ return 1 % numItems;
+ }
+ return up ? num - 1 : num + 1;
+}
+
+var numToId = function(num) {
+ if (num == 0) {
+ return document.getElementById("EndPath")
+ }
+ return document.getElementById("Path" + num);
+};
+
+var navigateTo = function(up) {
+ var numItems = document.querySelectorAll(
+ ".line > .msgEvent, .line > .msgControl").length;
+ var currentSelected = findNum();
+ var newSelected = move(currentSelected, up, numItems);
+ var newEl = numToId(newSelected, numItems);
+
+ // Scroll element into center.
+ scrollTo(newEl);
+};
+
+window.addEventListener("keydown", function (event) {
+ if (event.defaultPrevented) {
+ return;
+ }
+ // key 'j'
+ if (event.keyCode == 74) {
+ navigateTo(/*up=*/false);
+ // key 'k'
+ } else if (event.keyCode == 75) {
+ navigateTo(/*up=*/true);
+ } else {
+ return;
+ }
+ event.preventDefault();
+}, true);
+</script>
+
+<script type='text/javascript'>
+
+var toggleHelp = function() {
+ var hint = document.querySelector("#tooltiphint");
+ var attributeName = "hidden";
+ if (hint.hasAttribute(attributeName)) {
+ hint.removeAttribute(attributeName);
+ } else {
+ hint.setAttribute("hidden", "true");
+ }
+};
+window.addEventListener("keydown", function (event) {
+ if (event.defaultPrevented) {
+ return;
+ }
+ if (event.key == "?") {
+ toggleHelp();
+ } else {
+ return;
+ }
+ event.preventDefault();
+});
+</script>
+
+<style type="text/css">
+ svg {
+ position:absolute;
+ top:0;
+ left:0;
+ height:100%;
+ width:100%;
+ pointer-events: none;
+ overflow: visible
+ }
+ .arrow {
+ stroke-opacity: 0.2;
+ stroke-width: 1;
+ marker-end: url(#arrowhead);
+ }
+
+ .arrow.selected {
+ stroke-opacity: 0.6;
+ stroke-width: 2;
+ marker-end: url(#arrowheadSelected);
+ }
+
+ .arrowhead {
+ orient: auto;
+ stroke: none;
+ opacity: 0.6;
+ fill: blue;
+ }
+</style>
+<svg xmlns="http://www.w3.org/2000/svg">
+ <defs>
+ <marker id="arrowheadSelected" class="arrowhead" opacity="0.6"
+ viewBox="0 0 10 10" refX="3" refY="5"
+ markerWidth="4" markerHeight="4">
+ <path d="M 0 0 L 10 5 L 0 10 z" />
+ </marker>
+ <marker id="arrowhead" class="arrowhead" opacity="0.2"
+ viewBox="0 0 10 10" refX="3" refY="5"
+ markerWidth="4" markerHeight="4">
+ <path d="M 0 0 L 10 5 L 0 10 z" />
+ </marker>
+ </defs>
+ <g id="arrows" fill="none" stroke="blue" visibility="hidden">
+
+ </g>
+</svg>
+<script type='text/javascript'>
+const arrowIndices = [ 0,0 ]
+</script>
+<table class="code" data-fileid="1">
+<tr class="codeline" data-linenumber="1"><td class="num" id="LN1">1</td><td class="line"><span class='comment'>/*</span></td></tr>
+<tr class="codeline" data-linenumber="2"><td class="num" id="LN2">2</td><td class="line"> <span class='comment'>* pluma-file-browser-store.c - Pluma plugin providing easy file access</span></td></tr>
+<tr class="codeline" data-linenumber="3"><td class="num" id="LN3">3</td><td class="line"> <span class='comment'>* from the sidepanel</span></td></tr>
+<tr class="codeline" data-linenumber="4"><td class="num" id="LN4">4</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="5"><td class="num" id="LN5">5</td><td class="line"> <span class='comment'>* Copyright (C) 2006 - Jesse van den Kieboom &lt;[email protected]&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="6"><td class="num" id="LN6">6</td><td class="line"> <span class='comment'>* Copyright (C) 2012-2021 MATE Developers</span></td></tr>
+<tr class="codeline" data-linenumber="7"><td class="num" id="LN7">7</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="8"><td class="num" id="LN8">8</td><td class="line"> <span class='comment'>* This program is free software; you can redistribute it and/or modify</span></td></tr>
+<tr class="codeline" data-linenumber="9"><td class="num" id="LN9">9</td><td class="line"> <span class='comment'>* it under the terms of the GNU General Public License as published by</span></td></tr>
+<tr class="codeline" data-linenumber="10"><td class="num" id="LN10">10</td><td class="line"> <span class='comment'>* the Free Software Foundation; either version 2, or (at your option)</span></td></tr>
+<tr class="codeline" data-linenumber="11"><td class="num" id="LN11">11</td><td class="line"> <span class='comment'>* any later version.</span></td></tr>
+<tr class="codeline" data-linenumber="12"><td class="num" id="LN12">12</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="13"><td class="num" id="LN13">13</td><td class="line"> <span class='comment'>* This program is distributed in the hope that it will be useful,</span></td></tr>
+<tr class="codeline" data-linenumber="14"><td class="num" id="LN14">14</td><td class="line"> <span class='comment'>* but WITHOUT ANY WARRANTY; without even the implied warranty of</span></td></tr>
+<tr class="codeline" data-linenumber="15"><td class="num" id="LN15">15</td><td class="line"> <span class='comment'>* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></td></tr>
+<tr class="codeline" data-linenumber="16"><td class="num" id="LN16">16</td><td class="line"> <span class='comment'>* GNU General Public License for more details.</span></td></tr>
+<tr class="codeline" data-linenumber="17"><td class="num" id="LN17">17</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="18"><td class="num" id="LN18">18</td><td class="line"> <span class='comment'>* You should have received a copy of the GNU General Public License</span></td></tr>
+<tr class="codeline" data-linenumber="19"><td class="num" id="LN19">19</td><td class="line"> <span class='comment'>* along with this program; if not, write to the Free Software</span></td></tr>
+<tr class="codeline" data-linenumber="20"><td class="num" id="LN20">20</td><td class="line"> <span class='comment'>* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.</span></td></tr>
+<tr class="codeline" data-linenumber="21"><td class="num" id="LN21">21</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="22"><td class="num" id="LN22">22</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="23"><td class="num" id="LN23">23</td><td class="line"><span class='directive'>#ifdef <span class='macro'>HAVE_CONFIG_H<span class='macro_popup'>1</span></span></span></td></tr>
+<tr class="codeline" data-linenumber="24"><td class="num" id="LN24">24</td><td class="line"><span class='directive'>#include &lt;config.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="25"><td class="num" id="LN25">25</td><td class="line"><span class='directive'>#endif</span></td></tr>
+<tr class="codeline" data-linenumber="26"><td class="num" id="LN26">26</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="27"><td class="num" id="LN27">27</td><td class="line"><span class='directive'>#include &lt;string.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="28"><td class="num" id="LN28">28</td><td class="line"><span class='directive'>#include &lt;glib/gi18n-lib.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="29"><td class="num" id="LN29">29</td><td class="line"><span class='directive'>#include &lt;gio/gio.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="30"><td class="num" id="LN30">30</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="31"><td class="num" id="LN31">31</td><td class="line"><span class='directive'>#include "pluma-file-browser-store.h"</span></td></tr>
+<tr class="codeline" data-linenumber="32"><td class="num" id="LN32">32</td><td class="line"><span class='directive'>#include "pluma-file-browser-enum-types.h"</span></td></tr>
+<tr class="codeline" data-linenumber="33"><td class="num" id="LN33">33</td><td class="line"><span class='directive'>#include "pluma-file-browser-error.h"</span></td></tr>
+<tr class="codeline" data-linenumber="34"><td class="num" id="LN34">34</td><td class="line"><span class='directive'>#include "pluma-file-browser-utils.h"</span></td></tr>
+<tr class="codeline" data-linenumber="35"><td class="num" id="LN35">35</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="36"><td class="num" id="LN36">36</td><td class="line"><span class='directive'>#define <span class='macro'>NODE_IS_DIR(node)<span class='macro_popup'>(((node)-&gt;flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_DIRECTORY<br>))</span></span> (<span class='macro'>FILE_IS_DIR((node)-&gt;flags)<span class='macro_popup'>((node)-&gt;flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_DIRECTORY<br>)</span></span>)</span></td></tr>
+<tr class="codeline" data-linenumber="37"><td class="num" id="LN37">37</td><td class="line"><span class='directive'>#define <span class='macro'>NODE_IS_HIDDEN(node)<span class='macro_popup'>(((node)-&gt;flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_HIDDEN<br>))</span></span> (<span class='macro'>FILE_IS_HIDDEN((node)-&gt;flags)<span class='macro_popup'>((node)-&gt;flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_HIDDEN<br>)</span></span>)</span></td></tr>
+<tr class="codeline" data-linenumber="38"><td class="num" id="LN38">38</td><td class="line"><span class='directive'>#define <span class='macro'>NODE_IS_TEXT(node)<span class='macro_popup'>(((node)-&gt;flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_TEXT<br>))</span></span> (<span class='macro'>FILE_IS_TEXT((node)-&gt;flags)<span class='macro_popup'>((node)-&gt;flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_TEXT<br>)</span></span>)</span></td></tr>
+<tr class="codeline" data-linenumber="39"><td class="num" id="LN39">39</td><td class="line"><span class='directive'>#define <span class='macro'>NODE_LOADED(node)<span class='macro_popup'>(((node)-&gt;flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_LOADED<br>))</span></span> (<span class='macro'>FILE_LOADED((node)-&gt;flags)<span class='macro_popup'>((node)-&gt;flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_LOADED)</span></span>)</span></td></tr>
+<tr class="codeline" data-linenumber="40"><td class="num" id="LN40">40</td><td class="line"><span class='directive'>#define <span class='macro'>NODE_IS_FILTERED(node)<span class='macro_popup'>(((node)-&gt;flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_FILTERED<br>))</span></span> (<span class='macro'>FILE_IS_FILTERED((node)-&gt;flags)<span class='macro_popup'>((node)-&gt;flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_FILTERED<br>)</span></span>)</span></td></tr>
+<tr class="codeline" data-linenumber="41"><td class="num" id="LN41">41</td><td class="line"><span class='directive'>#define <span class='macro'>NODE_IS_DUMMY(node)<span class='macro_popup'>(((node)-&gt;flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_DUMMY<br>))</span></span> (<span class='macro'>FILE_IS_DUMMY((node)-&gt;flags)<span class='macro_popup'>((node)-&gt;flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_DUMMY<br>)</span></span>)</span></td></tr>
+<tr class="codeline" data-linenumber="42"><td class="num" id="LN42">42</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="43"><td class="num" id="LN43">43</td><td class="line"><span class='directive'>#define <span class='macro'>FILE_BROWSER_NODE_DIR(node)<span class='macro_popup'>((FileBrowserNodeDir *)(node))</span></span> ((FileBrowserNodeDir *)(node))</span></td></tr>
+<tr class="codeline" data-linenumber="44"><td class="num" id="LN44">44</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="45"><td class="num" id="LN45">45</td><td class="line"><span class='directive'>#define <span class='macro'>DIRECTORY_LOAD_ITEMS_PER_CALLBACK<span class='macro_popup'>100</span></span> 100</span></td></tr>
+<tr class="codeline" data-linenumber="46"><td class="num" id="LN46">46</td><td class="line"><span class='directive'>#define <span class='macro'>STANDARD_ATTRIBUTE_TYPES<span class='macro_popup'>"standard::type" "," "standard::is-hidden" "," "standard::is-backup"<br> "," "standard::name" "," "standard::content-type" "," "standard::icon"</span></span> <span class='macro'>G_FILE_ATTRIBUTE_STANDARD_TYPE<span class='macro_popup'>"standard::type"</span></span> "," \</span></td></tr>
+<tr class="codeline" data-linenumber="47"><td class="num" id="LN47">47</td><td class="line"> <span class='directive'><span class='macro'>G_FILE_ATTRIBUTE_STANDARD_IS_HIDDEN<span class='macro_popup'>"standard::is-hidden"</span></span> "," \</span></td></tr>
+<tr class="codeline" data-linenumber="48"><td class="num" id="LN48">48</td><td class="line"> <span class='directive'><span class='macro'>G_FILE_ATTRIBUTE_STANDARD_IS_BACKUP<span class='macro_popup'>"standard::is-backup"</span></span> "," \</span></td></tr>
+<tr class="codeline" data-linenumber="49"><td class="num" id="LN49">49</td><td class="line"> <span class='directive'><span class='macro'>G_FILE_ATTRIBUTE_STANDARD_NAME<span class='macro_popup'>"standard::name"</span></span> "," \</span></td></tr>
+<tr class="codeline" data-linenumber="50"><td class="num" id="LN50">50</td><td class="line"> <span class='directive'><span class='macro'>G_FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE<span class='macro_popup'>"standard::content-type"</span></span> "," \</span></td></tr>
+<tr class="codeline" data-linenumber="51"><td class="num" id="LN51">51</td><td class="line"> <span class='directive'><span class='macro'>G_FILE_ATTRIBUTE_STANDARD_ICON<span class='macro_popup'>"standard::icon"</span></span></span></td></tr>
+<tr class="codeline" data-linenumber="52"><td class="num" id="LN52">52</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="53"><td class="num" id="LN53">53</td><td class="line"><span class='keyword'>typedef</span> <span class='keyword'>struct</span> _FileBrowserNode FileBrowserNode;</td></tr>
+<tr class="codeline" data-linenumber="54"><td class="num" id="LN54">54</td><td class="line"><span class='keyword'>typedef</span> <span class='keyword'>struct</span> _FileBrowserNodeDir FileBrowserNodeDir;</td></tr>
+<tr class="codeline" data-linenumber="55"><td class="num" id="LN55">55</td><td class="line"><span class='keyword'>typedef</span> <span class='keyword'>struct</span> _AsyncData AsyncData;</td></tr>
+<tr class="codeline" data-linenumber="56"><td class="num" id="LN56">56</td><td class="line"><span class='keyword'>typedef</span> <span class='keyword'>struct</span> _AsyncNode AsyncNode;</td></tr>
+<tr class="codeline" data-linenumber="57"><td class="num" id="LN57">57</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="58"><td class="num" id="LN58">58</td><td class="line"><span class='keyword'>typedef</span> gint (*SortFunc) (FileBrowserNode * node1,</td></tr>
+<tr class="codeline" data-linenumber="59"><td class="num" id="LN59">59</td><td class="line"> FileBrowserNode * node2);</td></tr>
+<tr class="codeline" data-linenumber="60"><td class="num" id="LN60">60</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="61"><td class="num" id="LN61">61</td><td class="line"><span class='keyword'>struct</span> _AsyncData</td></tr>
+<tr class="codeline" data-linenumber="62"><td class="num" id="LN62">62</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="63"><td class="num" id="LN63">63</td><td class="line"> PlumaFileBrowserStore * model;</td></tr>
+<tr class="codeline" data-linenumber="64"><td class="num" id="LN64">64</td><td class="line"> GCancellable * cancellable;</td></tr>
+<tr class="codeline" data-linenumber="65"><td class="num" id="LN65">65</td><td class="line"> gboolean trash;</td></tr>
+<tr class="codeline" data-linenumber="66"><td class="num" id="LN66">66</td><td class="line"> GList * files;</td></tr>
+<tr class="codeline" data-linenumber="67"><td class="num" id="LN67">67</td><td class="line"> GList * iter;</td></tr>
+<tr class="codeline" data-linenumber="68"><td class="num" id="LN68">68</td><td class="line"> gboolean removed;</td></tr>
+<tr class="codeline" data-linenumber="69"><td class="num" id="LN69">69</td><td class="line">};</td></tr>
+<tr class="codeline" data-linenumber="70"><td class="num" id="LN70">70</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="71"><td class="num" id="LN71">71</td><td class="line"><span class='keyword'>struct</span> _AsyncNode</td></tr>
+<tr class="codeline" data-linenumber="72"><td class="num" id="LN72">72</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="73"><td class="num" id="LN73">73</td><td class="line"> FileBrowserNodeDir *dir;</td></tr>
+<tr class="codeline" data-linenumber="74"><td class="num" id="LN74">74</td><td class="line"> GCancellable *cancellable;</td></tr>
+<tr class="codeline" data-linenumber="75"><td class="num" id="LN75">75</td><td class="line"> GSList *original_children;</td></tr>
+<tr class="codeline" data-linenumber="76"><td class="num" id="LN76">76</td><td class="line">};</td></tr>
+<tr class="codeline" data-linenumber="77"><td class="num" id="LN77">77</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="78"><td class="num" id="LN78">78</td><td class="line"><span class='keyword'>typedef</span> <span class='keyword'>struct</span> {</td></tr>
+<tr class="codeline" data-linenumber="79"><td class="num" id="LN79">79</td><td class="line"> PlumaFileBrowserStore * model;</td></tr>
+<tr class="codeline" data-linenumber="80"><td class="num" id="LN80">80</td><td class="line"> gchar * virtual_root;</td></tr>
+<tr class="codeline" data-linenumber="81"><td class="num" id="LN81">81</td><td class="line"> GMountOperation * operation;</td></tr>
+<tr class="codeline" data-linenumber="82"><td class="num" id="LN82">82</td><td class="line"> GCancellable * cancellable;</td></tr>
+<tr class="codeline" data-linenumber="83"><td class="num" id="LN83">83</td><td class="line">} MountInfo;</td></tr>
+<tr class="codeline" data-linenumber="84"><td class="num" id="LN84">84</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="85"><td class="num" id="LN85">85</td><td class="line"><span class='keyword'>struct</span> _FileBrowserNode</td></tr>
+<tr class="codeline" data-linenumber="86"><td class="num" id="LN86">86</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="87"><td class="num" id="LN87">87</td><td class="line"> GFile *file;</td></tr>
+<tr class="codeline" data-linenumber="88"><td class="num" id="LN88">88</td><td class="line"> guint flags;</td></tr>
+<tr class="codeline" data-linenumber="89"><td class="num" id="LN89">89</td><td class="line"> gchar *name;</td></tr>
+<tr class="codeline" data-linenumber="90"><td class="num" id="LN90">90</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="91"><td class="num" id="LN91">91</td><td class="line"> GdkPixbuf *icon;</td></tr>
+<tr class="codeline" data-linenumber="92"><td class="num" id="LN92">92</td><td class="line"> GdkPixbuf *emblem;</td></tr>
+<tr class="codeline" data-linenumber="93"><td class="num" id="LN93">93</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="94"><td class="num" id="LN94">94</td><td class="line"> FileBrowserNode *parent;</td></tr>
+<tr class="codeline" data-linenumber="95"><td class="num" id="LN95">95</td><td class="line"> gint pos;</td></tr>
+<tr class="codeline" data-linenumber="96"><td class="num" id="LN96">96</td><td class="line"> gboolean inserted;</td></tr>
+<tr class="codeline" data-linenumber="97"><td class="num" id="LN97">97</td><td class="line">};</td></tr>
+<tr class="codeline" data-linenumber="98"><td class="num" id="LN98">98</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="99"><td class="num" id="LN99">99</td><td class="line"><span class='keyword'>struct</span> _FileBrowserNodeDir</td></tr>
+<tr class="codeline" data-linenumber="100"><td class="num" id="LN100">100</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="101"><td class="num" id="LN101">101</td><td class="line"> FileBrowserNode node;</td></tr>
+<tr class="codeline" data-linenumber="102"><td class="num" id="LN102">102</td><td class="line"> GSList *children;</td></tr>
+<tr class="codeline" data-linenumber="103"><td class="num" id="LN103">103</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="104"><td class="num" id="LN104">104</td><td class="line"> GCancellable *cancellable;</td></tr>
+<tr class="codeline" data-linenumber="105"><td class="num" id="LN105">105</td><td class="line"> GFileMonitor *monitor;</td></tr>
+<tr class="codeline" data-linenumber="106"><td class="num" id="LN106">106</td><td class="line"> PlumaFileBrowserStore *model;</td></tr>
+<tr class="codeline" data-linenumber="107"><td class="num" id="LN107">107</td><td class="line">};</td></tr>
+<tr class="codeline" data-linenumber="108"><td class="num" id="LN108">108</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="109"><td class="num" id="LN109">109</td><td class="line"><span class='keyword'>struct</span> _PlumaFileBrowserStorePrivate</td></tr>
+<tr class="codeline" data-linenumber="110"><td class="num" id="LN110">110</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="111"><td class="num" id="LN111">111</td><td class="line"> FileBrowserNode *root;</td></tr>
+<tr class="codeline" data-linenumber="112"><td class="num" id="LN112">112</td><td class="line"> FileBrowserNode *virtual_root;</td></tr>
+<tr class="codeline" data-linenumber="113"><td class="num" id="LN113">113</td><td class="line"> GType column_types[PLUMA_FILE_BROWSER_STORE_COLUMN_NUM];</td></tr>
+<tr class="codeline" data-linenumber="114"><td class="num" id="LN114">114</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="115"><td class="num" id="LN115">115</td><td class="line"> PlumaFileBrowserStoreFilterMode filter_mode;</td></tr>
+<tr class="codeline" data-linenumber="116"><td class="num" id="LN116">116</td><td class="line"> PlumaFileBrowserStoreFilterFunc filter_func;</td></tr>
+<tr class="codeline" data-linenumber="117"><td class="num" id="LN117">117</td><td class="line"> gpointer filter_user_data;</td></tr>
+<tr class="codeline" data-linenumber="118"><td class="num" id="LN118">118</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="119"><td class="num" id="LN119">119</td><td class="line"> SortFunc sort_func;</td></tr>
+<tr class="codeline" data-linenumber="120"><td class="num" id="LN120">120</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="121"><td class="num" id="LN121">121</td><td class="line"> GSList *async_handles;</td></tr>
+<tr class="codeline" data-linenumber="122"><td class="num" id="LN122">122</td><td class="line"> MountInfo *mount_info;</td></tr>
+<tr class="codeline" data-linenumber="123"><td class="num" id="LN123">123</td><td class="line">};</td></tr>
+<tr class="codeline" data-linenumber="124"><td class="num" id="LN124">124</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="125"><td class="num" id="LN125">125</td><td class="line"><span class='keyword'>static</span> FileBrowserNode *model_find_node (PlumaFileBrowserStore *model,</td></tr>
+<tr class="codeline" data-linenumber="126"><td class="num" id="LN126">126</td><td class="line"> FileBrowserNode *node,</td></tr>
+<tr class="codeline" data-linenumber="127"><td class="num" id="LN127">127</td><td class="line"> GFile *uri);</td></tr>
+<tr class="codeline" data-linenumber="128"><td class="num" id="LN128">128</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span> model_remove_node (PlumaFileBrowserStore * model,</td></tr>
+<tr class="codeline" data-linenumber="129"><td class="num" id="LN129">129</td><td class="line"> FileBrowserNode * node,</td></tr>
+<tr class="codeline" data-linenumber="130"><td class="num" id="LN130">130</td><td class="line"> GtkTreePath * path,</td></tr>
+<tr class="codeline" data-linenumber="131"><td class="num" id="LN131">131</td><td class="line"> gboolean free_nodes);</td></tr>
+<tr class="codeline" data-linenumber="132"><td class="num" id="LN132">132</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="133"><td class="num" id="LN133">133</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span> set_virtual_root_from_node (PlumaFileBrowserStore * model,</td></tr>
+<tr class="codeline" data-linenumber="134"><td class="num" id="LN134">134</td><td class="line"> FileBrowserNode * node);</td></tr>
+<tr class="codeline" data-linenumber="135"><td class="num" id="LN135">135</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="136"><td class="num" id="LN136">136</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span> pluma_file_browser_store_iface_init (GtkTreeModelIface * iface);</td></tr>
+<tr class="codeline" data-linenumber="137"><td class="num" id="LN137">137</td><td class="line"><span class='keyword'>static</span> GtkTreeModelFlags pluma_file_browser_store_get_flags (GtkTreeModel * tree_model);</td></tr>
+<tr class="codeline" data-linenumber="138"><td class="num" id="LN138">138</td><td class="line"><span class='keyword'>static</span> gint pluma_file_browser_store_get_n_columns (GtkTreeModel * tree_model);</td></tr>
+<tr class="codeline" data-linenumber="139"><td class="num" id="LN139">139</td><td class="line"><span class='keyword'>static</span> GType pluma_file_browser_store_get_column_type (GtkTreeModel * tree_model,</td></tr>
+<tr class="codeline" data-linenumber="140"><td class="num" id="LN140">140</td><td class="line"> gint index);</td></tr>
+<tr class="codeline" data-linenumber="141"><td class="num" id="LN141">141</td><td class="line"><span class='keyword'>static</span> gboolean pluma_file_browser_store_get_iter (GtkTreeModel * tree_model,</td></tr>
+<tr class="codeline" data-linenumber="142"><td class="num" id="LN142">142</td><td class="line"> GtkTreeIter * iter,</td></tr>
+<tr class="codeline" data-linenumber="143"><td class="num" id="LN143">143</td><td class="line"> GtkTreePath * path);</td></tr>
+<tr class="codeline" data-linenumber="144"><td class="num" id="LN144">144</td><td class="line"><span class='keyword'>static</span> GtkTreePath *pluma_file_browser_store_get_path (GtkTreeModel * tree_model,</td></tr>
+<tr class="codeline" data-linenumber="145"><td class="num" id="LN145">145</td><td class="line"> GtkTreeIter * iter);</td></tr>
+<tr class="codeline" data-linenumber="146"><td class="num" id="LN146">146</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span> pluma_file_browser_store_get_value (GtkTreeModel * tree_model,</td></tr>
+<tr class="codeline" data-linenumber="147"><td class="num" id="LN147">147</td><td class="line"> GtkTreeIter * iter,</td></tr>
+<tr class="codeline" data-linenumber="148"><td class="num" id="LN148">148</td><td class="line"> gint column,</td></tr>
+<tr class="codeline" data-linenumber="149"><td class="num" id="LN149">149</td><td class="line"> GValue * value);</td></tr>
+<tr class="codeline" data-linenumber="150"><td class="num" id="LN150">150</td><td class="line"><span class='keyword'>static</span> gboolean pluma_file_browser_store_iter_next (GtkTreeModel * tree_model,</td></tr>
+<tr class="codeline" data-linenumber="151"><td class="num" id="LN151">151</td><td class="line"> GtkTreeIter * iter);</td></tr>
+<tr class="codeline" data-linenumber="152"><td class="num" id="LN152">152</td><td class="line"><span class='keyword'>static</span> gboolean pluma_file_browser_store_iter_children (GtkTreeModel * tree_model,</td></tr>
+<tr class="codeline" data-linenumber="153"><td class="num" id="LN153">153</td><td class="line"> GtkTreeIter * iter,</td></tr>
+<tr class="codeline" data-linenumber="154"><td class="num" id="LN154">154</td><td class="line"> GtkTreeIter * parent);</td></tr>
+<tr class="codeline" data-linenumber="155"><td class="num" id="LN155">155</td><td class="line"><span class='keyword'>static</span> gboolean pluma_file_browser_store_iter_has_child (GtkTreeModel * tree_model,</td></tr>
+<tr class="codeline" data-linenumber="156"><td class="num" id="LN156">156</td><td class="line"> GtkTreeIter * iter);</td></tr>
+<tr class="codeline" data-linenumber="157"><td class="num" id="LN157">157</td><td class="line"><span class='keyword'>static</span> gint pluma_file_browser_store_iter_n_children (GtkTreeModel * tree_model,</td></tr>
+<tr class="codeline" data-linenumber="158"><td class="num" id="LN158">158</td><td class="line"> GtkTreeIter * iter);</td></tr>
+<tr class="codeline" data-linenumber="159"><td class="num" id="LN159">159</td><td class="line"><span class='keyword'>static</span> gboolean pluma_file_browser_store_iter_nth_child (GtkTreeModel * tree_model,</td></tr>
+<tr class="codeline" data-linenumber="160"><td class="num" id="LN160">160</td><td class="line"> GtkTreeIter * iter,</td></tr>
+<tr class="codeline" data-linenumber="161"><td class="num" id="LN161">161</td><td class="line"> GtkTreeIter * parent,</td></tr>
+<tr class="codeline" data-linenumber="162"><td class="num" id="LN162">162</td><td class="line"> gint n);</td></tr>
+<tr class="codeline" data-linenumber="163"><td class="num" id="LN163">163</td><td class="line"><span class='keyword'>static</span> gboolean pluma_file_browser_store_iter_parent (GtkTreeModel * tree_model,</td></tr>
+<tr class="codeline" data-linenumber="164"><td class="num" id="LN164">164</td><td class="line"> GtkTreeIter * iter,</td></tr>
+<tr class="codeline" data-linenumber="165"><td class="num" id="LN165">165</td><td class="line"> GtkTreeIter * child);</td></tr>
+<tr class="codeline" data-linenumber="166"><td class="num" id="LN166">166</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span> pluma_file_browser_store_row_inserted (GtkTreeModel * tree_model,</td></tr>
+<tr class="codeline" data-linenumber="167"><td class="num" id="LN167">167</td><td class="line"> GtkTreePath * path,</td></tr>
+<tr class="codeline" data-linenumber="168"><td class="num" id="LN168">168</td><td class="line"> GtkTreeIter * iter);</td></tr>
+<tr class="codeline" data-linenumber="169"><td class="num" id="LN169">169</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="170"><td class="num" id="LN170">170</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span> pluma_file_browser_store_drag_source_init (GtkTreeDragSourceIface * iface);</td></tr>
+<tr class="codeline" data-linenumber="171"><td class="num" id="LN171">171</td><td class="line"><span class='keyword'>static</span> gboolean pluma_file_browser_store_row_draggable (GtkTreeDragSource * drag_source,</td></tr>
+<tr class="codeline" data-linenumber="172"><td class="num" id="LN172">172</td><td class="line"> GtkTreePath * path);</td></tr>
+<tr class="codeline" data-linenumber="173"><td class="num" id="LN173">173</td><td class="line"><span class='keyword'>static</span> gboolean pluma_file_browser_store_drag_data_delete (GtkTreeDragSource * drag_source,</td></tr>
+<tr class="codeline" data-linenumber="174"><td class="num" id="LN174">174</td><td class="line"> GtkTreePath * path);</td></tr>
+<tr class="codeline" data-linenumber="175"><td class="num" id="LN175">175</td><td class="line"><span class='keyword'>static</span> gboolean pluma_file_browser_store_drag_data_get (GtkTreeDragSource * drag_source,</td></tr>
+<tr class="codeline" data-linenumber="176"><td class="num" id="LN176">176</td><td class="line"> GtkTreePath * path,</td></tr>
+<tr class="codeline" data-linenumber="177"><td class="num" id="LN177">177</td><td class="line"> GtkSelectionData * selection_data);</td></tr>
+<tr class="codeline" data-linenumber="178"><td class="num" id="LN178">178</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="179"><td class="num" id="LN179">179</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span> file_browser_node_free (PlumaFileBrowserStore * model,</td></tr>
+<tr class="codeline" data-linenumber="180"><td class="num" id="LN180">180</td><td class="line"> FileBrowserNode * node);</td></tr>
+<tr class="codeline" data-linenumber="181"><td class="num" id="LN181">181</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span> model_add_node (PlumaFileBrowserStore * model,</td></tr>
+<tr class="codeline" data-linenumber="182"><td class="num" id="LN182">182</td><td class="line"> FileBrowserNode * child,</td></tr>
+<tr class="codeline" data-linenumber="183"><td class="num" id="LN183">183</td><td class="line"> FileBrowserNode * parent);</td></tr>
+<tr class="codeline" data-linenumber="184"><td class="num" id="LN184">184</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span> model_clear (PlumaFileBrowserStore * model,</td></tr>
+<tr class="codeline" data-linenumber="185"><td class="num" id="LN185">185</td><td class="line"> gboolean free_nodes);</td></tr>
+<tr class="codeline" data-linenumber="186"><td class="num" id="LN186">186</td><td class="line"><span class='keyword'>static</span> gint model_sort_default (FileBrowserNode * node1,</td></tr>
+<tr class="codeline" data-linenumber="187"><td class="num" id="LN187">187</td><td class="line"> FileBrowserNode * node2);</td></tr>
+<tr class="codeline" data-linenumber="188"><td class="num" id="LN188">188</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span> model_check_dummy (PlumaFileBrowserStore * model,</td></tr>
+<tr class="codeline" data-linenumber="189"><td class="num" id="LN189">189</td><td class="line"> FileBrowserNode * node);</td></tr>
+<tr class="codeline" data-linenumber="190"><td class="num" id="LN190">190</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span> next_files_async (GFileEnumerator * enumerator,</td></tr>
+<tr class="codeline" data-linenumber="191"><td class="num" id="LN191">191</td><td class="line"> AsyncNode * async);</td></tr>
+<tr class="codeline" data-linenumber="192"><td class="num" id="LN192">192</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="193"><td class="num" id="LN193">193</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span> delete_files (AsyncData *data);</td></tr>
+<tr class="codeline" data-linenumber="194"><td class="num" id="LN194">194</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="195"><td class="num" id="LN195">195</td><td class="line"><span class='macro'>G_DEFINE_DYNAMIC_TYPE_EXTENDED (PlumaFileBrowserStore, pluma_file_browser_store,<span class='macro_popup'>static void pluma_file_browser_store_init (PlumaFileBrowserStore<br> *self); static void pluma_file_browser_store_class_init (PlumaFileBrowserStoreClass<br> *klass); static void pluma_file_browser_store_class_finalize<br> (PlumaFileBrowserStoreClass *klass); static gpointer pluma_file_browser_store_parent_class<br> = ((void*)0); static GType pluma_file_browser_store_type_id =<br> 0; static gint PlumaFileBrowserStore_private_offset; static void<br> pluma_file_browser_store_class_intern_init (gpointer klass) {<br> pluma_file_browser_store_parent_class = g_type_class_peek_parent<br> (klass); if (PlumaFileBrowserStore_private_offset != 0) g_type_class_adjust_private_offset<br> (klass, &amp;PlumaFileBrowserStore_private_offset); pluma_file_browser_store_class_init<br> ((PlumaFileBrowserStoreClass*) klass); } __attribute__ ((__unused__<br>)) static inline gpointer pluma_file_browser_store_get_instance_private<br> (PlumaFileBrowserStore *self) { return (((gpointer) ((guint8<br>*) (self) + (glong) (PlumaFileBrowserStore_private_offset))))<br>; } GType pluma_file_browser_store_get_type (void) { return pluma_file_browser_store_type_id<br>; } static void pluma_file_browser_store_register_type (GTypeModule<br> *type_module) { GType g_define_type_id __attribute__ ((__unused__<br>)); const GTypeInfo g_define_type_info = { sizeof (PlumaFileBrowserStoreClass<br>), (GBaseInitFunc) ((void*)0), (GBaseFinalizeFunc) ((void*)0)<br>, (GClassInitFunc)(void (*)(void)) pluma_file_browser_store_class_intern_init<br>, (GClassFinalizeFunc)(void (*)(void)) pluma_file_browser_store_class_finalize<br>, ((void*)0), sizeof (PlumaFileBrowserStore), 0, (GInstanceInitFunc<br>)(void (*)(void)) pluma_file_browser_store_init, ((void*)0) }<br>; pluma_file_browser_store_type_id = g_type_module_register_type<br> (type_module, ((GType) ((20) &lt;&lt; (2))), "PlumaFileBrowserStore"<br>, &amp;g_define_type_info, (GTypeFlags) 0); g_define_type_id =<br> pluma_file_browser_store_type_id; { { PlumaFileBrowserStore_private_offset<br> = sizeof (PlumaFileBrowserStorePrivate); } { const GInterfaceInfo<br> g_implement_interface_info = { (GInterfaceInitFunc)(void (*)<br>(void)) pluma_file_browser_store_iface_init, ((void*)0), ((void<br>*)0) }; g_type_module_add_interface (type_module, g_define_type_id<br>, (gtk_tree_model_get_type ()), &amp;g_implement_interface_info<br>); } { const GInterfaceInfo g_implement_interface_info = { (GInterfaceInitFunc<br>)(void (*)(void)) pluma_file_browser_store_drag_source_init, (<br>(void*)0), ((void*)0) }; g_type_module_add_interface (type_module<br>, g_define_type_id, (gtk_tree_drag_source_get_type ()), &amp;<br>g_implement_interface_info); } ; } }</span></span></td></tr>
+<tr class="codeline" data-linenumber="196"><td class="num" id="LN196">196</td><td class="line"> <span class='macro'>G_TYPE_OBJECT,<span class='macro_popup'>static void pluma_file_browser_store_init (PlumaFileBrowserStore<br> *self); static void pluma_file_browser_store_class_init (PlumaFileBrowserStoreClass<br> *klass); static void pluma_file_browser_store_class_finalize<br> (PlumaFileBrowserStoreClass *klass); static gpointer pluma_file_browser_store_parent_class<br> = ((void*)0); static GType pluma_file_browser_store_type_id =<br> 0; static gint PlumaFileBrowserStore_private_offset; static void<br> pluma_file_browser_store_class_intern_init (gpointer klass) {<br> pluma_file_browser_store_parent_class = g_type_class_peek_parent<br> (klass); if (PlumaFileBrowserStore_private_offset != 0) g_type_class_adjust_private_offset<br> (klass, &amp;PlumaFileBrowserStore_private_offset); pluma_file_browser_store_class_init<br> ((PlumaFileBrowserStoreClass*) klass); } __attribute__ ((__unused__<br>)) static inline gpointer pluma_file_browser_store_get_instance_private<br> (PlumaFileBrowserStore *self) { return (((gpointer) ((guint8<br>*) (self) + (glong) (PlumaFileBrowserStore_private_offset))))<br>; } GType pluma_file_browser_store_get_type (void) { return pluma_file_browser_store_type_id<br>; } static void pluma_file_browser_store_register_type (GTypeModule<br> *type_module) { GType g_define_type_id __attribute__ ((__unused__<br>)); const GTypeInfo g_define_type_info = { sizeof (PlumaFileBrowserStoreClass<br>), (GBaseInitFunc) ((void*)0), (GBaseFinalizeFunc) ((void*)0)<br>, (GClassInitFunc)(void (*)(void)) pluma_file_browser_store_class_intern_init<br>, (GClassFinalizeFunc)(void (*)(void)) pluma_file_browser_store_class_finalize<br>, ((void*)0), sizeof (PlumaFileBrowserStore), 0, (GInstanceInitFunc<br>)(void (*)(void)) pluma_file_browser_store_init, ((void*)0) }<br>; pluma_file_browser_store_type_id = g_type_module_register_type<br> (type_module, ((GType) ((20) &lt;&lt; (2))), "PlumaFileBrowserStore"<br>, &amp;g_define_type_info, (GTypeFlags) 0); g_define_type_id =<br> pluma_file_browser_store_type_id; { { PlumaFileBrowserStore_private_offset<br> = sizeof (PlumaFileBrowserStorePrivate); } { const GInterfaceInfo<br> g_implement_interface_info = { (GInterfaceInitFunc)(void (*)<br>(void)) pluma_file_browser_store_iface_init, ((void*)0), ((void<br>*)0) }; g_type_module_add_interface (type_module, g_define_type_id<br>, (gtk_tree_model_get_type ()), &amp;g_implement_interface_info<br>); } { const GInterfaceInfo g_implement_interface_info = { (GInterfaceInitFunc<br>)(void (*)(void)) pluma_file_browser_store_drag_source_init, (<br>(void*)0), ((void*)0) }; g_type_module_add_interface (type_module<br>, g_define_type_id, (gtk_tree_drag_source_get_type ()), &amp;<br>g_implement_interface_info); } ; } }</span></span></td></tr>
+<tr class="codeline" data-linenumber="197"><td class="num" id="LN197">197</td><td class="line"> <span class='macro'>0,<span class='macro_popup'>static void pluma_file_browser_store_init (PlumaFileBrowserStore<br> *self); static void pluma_file_browser_store_class_init (PlumaFileBrowserStoreClass<br> *klass); static void pluma_file_browser_store_class_finalize<br> (PlumaFileBrowserStoreClass *klass); static gpointer pluma_file_browser_store_parent_class<br> = ((void*)0); static GType pluma_file_browser_store_type_id =<br> 0; static gint PlumaFileBrowserStore_private_offset; static void<br> pluma_file_browser_store_class_intern_init (gpointer klass) {<br> pluma_file_browser_store_parent_class = g_type_class_peek_parent<br> (klass); if (PlumaFileBrowserStore_private_offset != 0) g_type_class_adjust_private_offset<br> (klass, &amp;PlumaFileBrowserStore_private_offset); pluma_file_browser_store_class_init<br> ((PlumaFileBrowserStoreClass*) klass); } __attribute__ ((__unused__<br>)) static inline gpointer pluma_file_browser_store_get_instance_private<br> (PlumaFileBrowserStore *self) { return (((gpointer) ((guint8<br>*) (self) + (glong) (PlumaFileBrowserStore_private_offset))))<br>; } GType pluma_file_browser_store_get_type (void) { return pluma_file_browser_store_type_id<br>; } static void pluma_file_browser_store_register_type (GTypeModule<br> *type_module) { GType g_define_type_id __attribute__ ((__unused__<br>)); const GTypeInfo g_define_type_info = { sizeof (PlumaFileBrowserStoreClass<br>), (GBaseInitFunc) ((void*)0), (GBaseFinalizeFunc) ((void*)0)<br>, (GClassInitFunc)(void (*)(void)) pluma_file_browser_store_class_intern_init<br>, (GClassFinalizeFunc)(void (*)(void)) pluma_file_browser_store_class_finalize<br>, ((void*)0), sizeof (PlumaFileBrowserStore), 0, (GInstanceInitFunc<br>)(void (*)(void)) pluma_file_browser_store_init, ((void*)0) }<br>; pluma_file_browser_store_type_id = g_type_module_register_type<br> (type_module, ((GType) ((20) &lt;&lt; (2))), "PlumaFileBrowserStore"<br>, &amp;g_define_type_info, (GTypeFlags) 0); g_define_type_id =<br> pluma_file_browser_store_type_id; { { PlumaFileBrowserStore_private_offset<br> = sizeof (PlumaFileBrowserStorePrivate); } { const GInterfaceInfo<br> g_implement_interface_info = { (GInterfaceInitFunc)(void (*)<br>(void)) pluma_file_browser_store_iface_init, ((void*)0), ((void<br>*)0) }; g_type_module_add_interface (type_module, g_define_type_id<br>, (gtk_tree_model_get_type ()), &amp;g_implement_interface_info<br>); } { const GInterfaceInfo g_implement_interface_info = { (GInterfaceInitFunc<br>)(void (*)(void)) pluma_file_browser_store_drag_source_init, (<br>(void*)0), ((void*)0) }; g_type_module_add_interface (type_module<br>, g_define_type_id, (gtk_tree_drag_source_get_type ()), &amp;<br>g_implement_interface_info); } ; } }</span></span></td></tr>
+<tr class="codeline" data-linenumber="198"><td class="num" id="LN198">198</td><td class="line"> <span class='macro'>G_ADD_PRIVATE_DYNAMIC (PlumaFileBrowserStore)<span class='macro_popup'>static void pluma_file_browser_store_init (PlumaFileBrowserStore<br> *self); static void pluma_file_browser_store_class_init (PlumaFileBrowserStoreClass<br> *klass); static void pluma_file_browser_store_class_finalize<br> (PlumaFileBrowserStoreClass *klass); static gpointer pluma_file_browser_store_parent_class<br> = ((void*)0); static GType pluma_file_browser_store_type_id =<br> 0; static gint PlumaFileBrowserStore_private_offset; static void<br> pluma_file_browser_store_class_intern_init (gpointer klass) {<br> pluma_file_browser_store_parent_class = g_type_class_peek_parent<br> (klass); if (PlumaFileBrowserStore_private_offset != 0) g_type_class_adjust_private_offset<br> (klass, &amp;PlumaFileBrowserStore_private_offset); pluma_file_browser_store_class_init<br> ((PlumaFileBrowserStoreClass*) klass); } __attribute__ ((__unused__<br>)) static inline gpointer pluma_file_browser_store_get_instance_private<br> (PlumaFileBrowserStore *self) { return (((gpointer) ((guint8<br>*) (self) + (glong) (PlumaFileBrowserStore_private_offset))))<br>; } GType pluma_file_browser_store_get_type (void) { return pluma_file_browser_store_type_id<br>; } static void pluma_file_browser_store_register_type (GTypeModule<br> *type_module) { GType g_define_type_id __attribute__ ((__unused__<br>)); const GTypeInfo g_define_type_info = { sizeof (PlumaFileBrowserStoreClass<br>), (GBaseInitFunc) ((void*)0), (GBaseFinalizeFunc) ((void*)0)<br>, (GClassInitFunc)(void (*)(void)) pluma_file_browser_store_class_intern_init<br>, (GClassFinalizeFunc)(void (*)(void)) pluma_file_browser_store_class_finalize<br>, ((void*)0), sizeof (PlumaFileBrowserStore), 0, (GInstanceInitFunc<br>)(void (*)(void)) pluma_file_browser_store_init, ((void*)0) }<br>; pluma_file_browser_store_type_id = g_type_module_register_type<br> (type_module, ((GType) ((20) &lt;&lt; (2))), "PlumaFileBrowserStore"<br>, &amp;g_define_type_info, (GTypeFlags) 0); g_define_type_id =<br> pluma_file_browser_store_type_id; { { PlumaFileBrowserStore_private_offset<br> = sizeof (PlumaFileBrowserStorePrivate); } { const GInterfaceInfo<br> g_implement_interface_info = { (GInterfaceInitFunc)(void (*)<br>(void)) pluma_file_browser_store_iface_init, ((void*)0), ((void<br>*)0) }; g_type_module_add_interface (type_module, g_define_type_id<br>, (gtk_tree_model_get_type ()), &amp;g_implement_interface_info<br>); } { const GInterfaceInfo g_implement_interface_info = { (GInterfaceInitFunc<br>)(void (*)(void)) pluma_file_browser_store_drag_source_init, (<br>(void*)0), ((void*)0) }; g_type_module_add_interface (type_module<br>, g_define_type_id, (gtk_tree_drag_source_get_type ()), &amp;<br>g_implement_interface_info); } ; } }</span></span></td></tr>
+<tr class="codeline" data-linenumber="199"><td class="num" id="LN199">199</td><td class="line"> <span class='macro'>G_IMPLEMENT_INTERFACE_DYNAMIC (GTK_TYPE_TREE_MODEL,<span class='macro_popup'>static void pluma_file_browser_store_init (PlumaFileBrowserStore<br> *self); static void pluma_file_browser_store_class_init (PlumaFileBrowserStoreClass<br> *klass); static void pluma_file_browser_store_class_finalize<br> (PlumaFileBrowserStoreClass *klass); static gpointer pluma_file_browser_store_parent_class<br> = ((void*)0); static GType pluma_file_browser_store_type_id =<br> 0; static gint PlumaFileBrowserStore_private_offset; static void<br> pluma_file_browser_store_class_intern_init (gpointer klass) {<br> pluma_file_browser_store_parent_class = g_type_class_peek_parent<br> (klass); if (PlumaFileBrowserStore_private_offset != 0) g_type_class_adjust_private_offset<br> (klass, &amp;PlumaFileBrowserStore_private_offset); pluma_file_browser_store_class_init<br> ((PlumaFileBrowserStoreClass*) klass); } __attribute__ ((__unused__<br>)) static inline gpointer pluma_file_browser_store_get_instance_private<br> (PlumaFileBrowserStore *self) { return (((gpointer) ((guint8<br>*) (self) + (glong) (PlumaFileBrowserStore_private_offset))))<br>; } GType pluma_file_browser_store_get_type (void) { return pluma_file_browser_store_type_id<br>; } static void pluma_file_browser_store_register_type (GTypeModule<br> *type_module) { GType g_define_type_id __attribute__ ((__unused__<br>)); const GTypeInfo g_define_type_info = { sizeof (PlumaFileBrowserStoreClass<br>), (GBaseInitFunc) ((void*)0), (GBaseFinalizeFunc) ((void*)0)<br>, (GClassInitFunc)(void (*)(void)) pluma_file_browser_store_class_intern_init<br>, (GClassFinalizeFunc)(void (*)(void)) pluma_file_browser_store_class_finalize<br>, ((void*)0), sizeof (PlumaFileBrowserStore), 0, (GInstanceInitFunc<br>)(void (*)(void)) pluma_file_browser_store_init, ((void*)0) }<br>; pluma_file_browser_store_type_id = g_type_module_register_type<br> (type_module, ((GType) ((20) &lt;&lt; (2))), "PlumaFileBrowserStore"<br>, &amp;g_define_type_info, (GTypeFlags) 0); g_define_type_id =<br> pluma_file_browser_store_type_id; { { PlumaFileBrowserStore_private_offset<br> = sizeof (PlumaFileBrowserStorePrivate); } { const GInterfaceInfo<br> g_implement_interface_info = { (GInterfaceInitFunc)(void (*)<br>(void)) pluma_file_browser_store_iface_init, ((void*)0), ((void<br>*)0) }; g_type_module_add_interface (type_module, g_define_type_id<br>, (gtk_tree_model_get_type ()), &amp;g_implement_interface_info<br>); } { const GInterfaceInfo g_implement_interface_info = { (GInterfaceInitFunc<br>)(void (*)(void)) pluma_file_browser_store_drag_source_init, (<br>(void*)0), ((void*)0) }; g_type_module_add_interface (type_module<br>, g_define_type_id, (gtk_tree_drag_source_get_type ()), &amp;<br>g_implement_interface_info); } ; } }</span></span></td></tr>
+<tr class="codeline" data-linenumber="200"><td class="num" id="LN200">200</td><td class="line"> <span class='macro'>pluma_file_browser_store_iface_init)<span class='macro_popup'>static void pluma_file_browser_store_init (PlumaFileBrowserStore<br> *self); static void pluma_file_browser_store_class_init (PlumaFileBrowserStoreClass<br> *klass); static void pluma_file_browser_store_class_finalize<br> (PlumaFileBrowserStoreClass *klass); static gpointer pluma_file_browser_store_parent_class<br> = ((void*)0); static GType pluma_file_browser_store_type_id =<br> 0; static gint PlumaFileBrowserStore_private_offset; static void<br> pluma_file_browser_store_class_intern_init (gpointer klass) {<br> pluma_file_browser_store_parent_class = g_type_class_peek_parent<br> (klass); if (PlumaFileBrowserStore_private_offset != 0) g_type_class_adjust_private_offset<br> (klass, &amp;PlumaFileBrowserStore_private_offset); pluma_file_browser_store_class_init<br> ((PlumaFileBrowserStoreClass*) klass); } __attribute__ ((__unused__<br>)) static inline gpointer pluma_file_browser_store_get_instance_private<br> (PlumaFileBrowserStore *self) { return (((gpointer) ((guint8<br>*) (self) + (glong) (PlumaFileBrowserStore_private_offset))))<br>; } GType pluma_file_browser_store_get_type (void) { return pluma_file_browser_store_type_id<br>; } static void pluma_file_browser_store_register_type (GTypeModule<br> *type_module) { GType g_define_type_id __attribute__ ((__unused__<br>)); const GTypeInfo g_define_type_info = { sizeof (PlumaFileBrowserStoreClass<br>), (GBaseInitFunc) ((void*)0), (GBaseFinalizeFunc) ((void*)0)<br>, (GClassInitFunc)(void (*)(void)) pluma_file_browser_store_class_intern_init<br>, (GClassFinalizeFunc)(void (*)(void)) pluma_file_browser_store_class_finalize<br>, ((void*)0), sizeof (PlumaFileBrowserStore), 0, (GInstanceInitFunc<br>)(void (*)(void)) pluma_file_browser_store_init, ((void*)0) }<br>; pluma_file_browser_store_type_id = g_type_module_register_type<br> (type_module, ((GType) ((20) &lt;&lt; (2))), "PlumaFileBrowserStore"<br>, &amp;g_define_type_info, (GTypeFlags) 0); g_define_type_id =<br> pluma_file_browser_store_type_id; { { PlumaFileBrowserStore_private_offset<br> = sizeof (PlumaFileBrowserStorePrivate); } { const GInterfaceInfo<br> g_implement_interface_info = { (GInterfaceInitFunc)(void (*)<br>(void)) pluma_file_browser_store_iface_init, ((void*)0), ((void<br>*)0) }; g_type_module_add_interface (type_module, g_define_type_id<br>, (gtk_tree_model_get_type ()), &amp;g_implement_interface_info<br>); } { const GInterfaceInfo g_implement_interface_info = { (GInterfaceInitFunc<br>)(void (*)(void)) pluma_file_browser_store_drag_source_init, (<br>(void*)0), ((void*)0) }; g_type_module_add_interface (type_module<br>, g_define_type_id, (gtk_tree_drag_source_get_type ()), &amp;<br>g_implement_interface_info); } ; } }</span></span></td></tr>
+<tr class="codeline" data-linenumber="201"><td class="num" id="LN201">201</td><td class="line"> <span class='macro'>G_IMPLEMENT_INTERFACE_DYNAMIC (GTK_TYPE_TREE_DRAG_SOURCE,<span class='macro_popup'>static void pluma_file_browser_store_init (PlumaFileBrowserStore<br> *self); static void pluma_file_browser_store_class_init (PlumaFileBrowserStoreClass<br> *klass); static void pluma_file_browser_store_class_finalize<br> (PlumaFileBrowserStoreClass *klass); static gpointer pluma_file_browser_store_parent_class<br> = ((void*)0); static GType pluma_file_browser_store_type_id =<br> 0; static gint PlumaFileBrowserStore_private_offset; static void<br> pluma_file_browser_store_class_intern_init (gpointer klass) {<br> pluma_file_browser_store_parent_class = g_type_class_peek_parent<br> (klass); if (PlumaFileBrowserStore_private_offset != 0) g_type_class_adjust_private_offset<br> (klass, &amp;PlumaFileBrowserStore_private_offset); pluma_file_browser_store_class_init<br> ((PlumaFileBrowserStoreClass*) klass); } __attribute__ ((__unused__<br>)) static inline gpointer pluma_file_browser_store_get_instance_private<br> (PlumaFileBrowserStore *self) { return (((gpointer) ((guint8<br>*) (self) + (glong) (PlumaFileBrowserStore_private_offset))))<br>; } GType pluma_file_browser_store_get_type (void) { return pluma_file_browser_store_type_id<br>; } static void pluma_file_browser_store_register_type (GTypeModule<br> *type_module) { GType g_define_type_id __attribute__ ((__unused__<br>)); const GTypeInfo g_define_type_info = { sizeof (PlumaFileBrowserStoreClass<br>), (GBaseInitFunc) ((void*)0), (GBaseFinalizeFunc) ((void*)0)<br>, (GClassInitFunc)(void (*)(void)) pluma_file_browser_store_class_intern_init<br>, (GClassFinalizeFunc)(void (*)(void)) pluma_file_browser_store_class_finalize<br>, ((void*)0), sizeof (PlumaFileBrowserStore), 0, (GInstanceInitFunc<br>)(void (*)(void)) pluma_file_browser_store_init, ((void*)0) }<br>; pluma_file_browser_store_type_id = g_type_module_register_type<br> (type_module, ((GType) ((20) &lt;&lt; (2))), "PlumaFileBrowserStore"<br>, &amp;g_define_type_info, (GTypeFlags) 0); g_define_type_id =<br> pluma_file_browser_store_type_id; { { PlumaFileBrowserStore_private_offset<br> = sizeof (PlumaFileBrowserStorePrivate); } { const GInterfaceInfo<br> g_implement_interface_info = { (GInterfaceInitFunc)(void (*)<br>(void)) pluma_file_browser_store_iface_init, ((void*)0), ((void<br>*)0) }; g_type_module_add_interface (type_module, g_define_type_id<br>, (gtk_tree_model_get_type ()), &amp;g_implement_interface_info<br>); } { const GInterfaceInfo g_implement_interface_info = { (GInterfaceInitFunc<br>)(void (*)(void)) pluma_file_browser_store_drag_source_init, (<br>(void*)0), ((void*)0) }; g_type_module_add_interface (type_module<br>, g_define_type_id, (gtk_tree_drag_source_get_type ()), &amp;<br>g_implement_interface_info); } ; } }</span></span></td></tr>
+<tr class="codeline" data-linenumber="202"><td class="num" id="LN202">202</td><td class="line"> <span class='macro'>pluma_file_browser_store_drag_source_init))<span class='macro_popup'>static void pluma_file_browser_store_init (PlumaFileBrowserStore<br> *self); static void pluma_file_browser_store_class_init (PlumaFileBrowserStoreClass<br> *klass); static void pluma_file_browser_store_class_finalize<br> (PlumaFileBrowserStoreClass *klass); static gpointer pluma_file_browser_store_parent_class<br> = ((void*)0); static GType pluma_file_browser_store_type_id =<br> 0; static gint PlumaFileBrowserStore_private_offset; static void<br> pluma_file_browser_store_class_intern_init (gpointer klass) {<br> pluma_file_browser_store_parent_class = g_type_class_peek_parent<br> (klass); if (PlumaFileBrowserStore_private_offset != 0) g_type_class_adjust_private_offset<br> (klass, &amp;PlumaFileBrowserStore_private_offset); pluma_file_browser_store_class_init<br> ((PlumaFileBrowserStoreClass*) klass); } __attribute__ ((__unused__<br>)) static inline gpointer pluma_file_browser_store_get_instance_private<br> (PlumaFileBrowserStore *self) { return (((gpointer) ((guint8<br>*) (self) + (glong) (PlumaFileBrowserStore_private_offset))))<br>; } GType pluma_file_browser_store_get_type (void) { return pluma_file_browser_store_type_id<br>; } static void pluma_file_browser_store_register_type (GTypeModule<br> *type_module) { GType g_define_type_id __attribute__ ((__unused__<br>)); const GTypeInfo g_define_type_info = { sizeof (PlumaFileBrowserStoreClass<br>), (GBaseInitFunc) ((void*)0), (GBaseFinalizeFunc) ((void*)0)<br>, (GClassInitFunc)(void (*)(void)) pluma_file_browser_store_class_intern_init<br>, (GClassFinalizeFunc)(void (*)(void)) pluma_file_browser_store_class_finalize<br>, ((void*)0), sizeof (PlumaFileBrowserStore), 0, (GInstanceInitFunc<br>)(void (*)(void)) pluma_file_browser_store_init, ((void*)0) }<br>; pluma_file_browser_store_type_id = g_type_module_register_type<br> (type_module, ((GType) ((20) &lt;&lt; (2))), "PlumaFileBrowserStore"<br>, &amp;g_define_type_info, (GTypeFlags) 0); g_define_type_id =<br> pluma_file_browser_store_type_id; { { PlumaFileBrowserStore_private_offset<br> = sizeof (PlumaFileBrowserStorePrivate); } { const GInterfaceInfo<br> g_implement_interface_info = { (GInterfaceInitFunc)(void (*)<br>(void)) pluma_file_browser_store_iface_init, ((void*)0), ((void<br>*)0) }; g_type_module_add_interface (type_module, g_define_type_id<br>, (gtk_tree_model_get_type ()), &amp;g_implement_interface_info<br>); } { const GInterfaceInfo g_implement_interface_info = { (GInterfaceInitFunc<br>)(void (*)(void)) pluma_file_browser_store_drag_source_init, (<br>(void*)0), ((void*)0) }; g_type_module_add_interface (type_module<br>, g_define_type_id, (gtk_tree_drag_source_get_type ()), &amp;<br>g_implement_interface_info); } ; } }</span></span></td></tr>
+<tr class="codeline" data-linenumber="203"><td class="num" id="LN203">203</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="204"><td class="num" id="LN204">204</td><td class="line"><span class='comment'>/* Properties */</span></td></tr>
+<tr class="codeline" data-linenumber="205"><td class="num" id="LN205">205</td><td class="line"><span class='keyword'>enum</span> {</td></tr>
+<tr class="codeline" data-linenumber="206"><td class="num" id="LN206">206</td><td class="line"> PROP_0,</td></tr>
+<tr class="codeline" data-linenumber="207"><td class="num" id="LN207">207</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="208"><td class="num" id="LN208">208</td><td class="line"> PROP_ROOT,</td></tr>
+<tr class="codeline" data-linenumber="209"><td class="num" id="LN209">209</td><td class="line"> PROP_VIRTUAL_ROOT,</td></tr>
+<tr class="codeline" data-linenumber="210"><td class="num" id="LN210">210</td><td class="line"> PROP_FILTER_MODE</td></tr>
+<tr class="codeline" data-linenumber="211"><td class="num" id="LN211">211</td><td class="line">};</td></tr>
+<tr class="codeline" data-linenumber="212"><td class="num" id="LN212">212</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="213"><td class="num" id="LN213">213</td><td class="line"><span class='comment'>/* Signals */</span></td></tr>
+<tr class="codeline" data-linenumber="214"><td class="num" id="LN214">214</td><td class="line"><span class='keyword'>enum</span></td></tr>
+<tr class="codeline" data-linenumber="215"><td class="num" id="LN215">215</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="216"><td class="num" id="LN216">216</td><td class="line"> BEGIN_LOADING,</td></tr>
+<tr class="codeline" data-linenumber="217"><td class="num" id="LN217">217</td><td class="line"> END_LOADING,</td></tr>
+<tr class="codeline" data-linenumber="218"><td class="num" id="LN218">218</td><td class="line"> ERROR,</td></tr>
+<tr class="codeline" data-linenumber="219"><td class="num" id="LN219">219</td><td class="line"> NO_TRASH,</td></tr>
+<tr class="codeline" data-linenumber="220"><td class="num" id="LN220">220</td><td class="line"> RENAME,</td></tr>
+<tr class="codeline" data-linenumber="221"><td class="num" id="LN221">221</td><td class="line"> BEGIN_REFRESH,</td></tr>
+<tr class="codeline" data-linenumber="222"><td class="num" id="LN222">222</td><td class="line"> END_REFRESH,</td></tr>
+<tr class="codeline" data-linenumber="223"><td class="num" id="LN223">223</td><td class="line"> UNLOAD,</td></tr>
+<tr class="codeline" data-linenumber="224"><td class="num" id="LN224">224</td><td class="line"> NUM_SIGNALS</td></tr>
+<tr class="codeline" data-linenumber="225"><td class="num" id="LN225">225</td><td class="line">};</td></tr>
+<tr class="codeline" data-linenumber="226"><td class="num" id="LN226">226</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="227"><td class="num" id="LN227">227</td><td class="line"><span class='keyword'>static</span> guint model_signals[NUM_SIGNALS] = { 0 };</td></tr>
+<tr class="codeline" data-linenumber="228"><td class="num" id="LN228">228</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="229"><td class="num" id="LN229">229</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="230"><td class="num" id="LN230">230</td><td class="line">cancel_mount_operation (PlumaFileBrowserStore *obj)</td></tr>
+<tr class="codeline" data-linenumber="231"><td class="num" id="LN231">231</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="232"><td class="num" id="LN232">232</td><td class="line"> <span class='keyword'>if</span> (obj-&gt;priv-&gt;mount_info != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="233"><td class="num" id="LN233">233</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="234"><td class="num" id="LN234">234</td><td class="line"> obj-&gt;priv-&gt;mount_info-&gt;model = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="235"><td class="num" id="LN235">235</td><td class="line"> g_cancellable_cancel (obj-&gt;priv-&gt;mount_info-&gt;cancellable);</td></tr>
+<tr class="codeline" data-linenumber="236"><td class="num" id="LN236">236</td><td class="line"> obj-&gt;priv-&gt;mount_info = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="237"><td class="num" id="LN237">237</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="238"><td class="num" id="LN238">238</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="239"><td class="num" id="LN239">239</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="240"><td class="num" id="LN240">240</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="241"><td class="num" id="LN241">241</td><td class="line">pluma_file_browser_store_finalize (GObject * object)</td></tr>
+<tr class="codeline" data-linenumber="242"><td class="num" id="LN242">242</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="243"><td class="num" id="LN243">243</td><td class="line"> PlumaFileBrowserStore *obj = <span class='macro'>PLUMA_FILE_BROWSER_STORE (object)<span class='macro_popup'>((((PlumaFileBrowserStore*) (void *) ((object)))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="244"><td class="num" id="LN244">244</td><td class="line"> GSList *item;</td></tr>
+<tr class="codeline" data-linenumber="245"><td class="num" id="LN245">245</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="246"><td class="num" id="LN246">246</td><td class="line"> <span class='comment'>/* Free all the nodes */</span></td></tr>
+<tr class="codeline" data-linenumber="247"><td class="num" id="LN247">247</td><td class="line"> file_browser_node_free (obj, obj-&gt;priv-&gt;root);</td></tr>
+<tr class="codeline" data-linenumber="248"><td class="num" id="LN248">248</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="249"><td class="num" id="LN249">249</td><td class="line"> <span class='comment'>/* Cancel any asynchronous operations */</span></td></tr>
+<tr class="codeline" data-linenumber="250"><td class="num" id="LN250">250</td><td class="line"> <span class='keyword'>for</span> (item = obj-&gt;priv-&gt;async_handles; item; item = item-&gt;next)</td></tr>
+<tr class="codeline" data-linenumber="251"><td class="num" id="LN251">251</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="252"><td class="num" id="LN252">252</td><td class="line"> AsyncData *data = (AsyncData *) (item-&gt;data);</td></tr>
+<tr class="codeline" data-linenumber="253"><td class="num" id="LN253">253</td><td class="line"> g_cancellable_cancel (data-&gt;cancellable);</td></tr>
+<tr class="codeline" data-linenumber="254"><td class="num" id="LN254">254</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="255"><td class="num" id="LN255">255</td><td class="line"> data-&gt;removed = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="256"><td class="num" id="LN256">256</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="257"><td class="num" id="LN257">257</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="258"><td class="num" id="LN258">258</td><td class="line"> cancel_mount_operation (obj);</td></tr>
+<tr class="codeline" data-linenumber="259"><td class="num" id="LN259">259</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="260"><td class="num" id="LN260">260</td><td class="line"> g_slist_free (obj-&gt;priv-&gt;async_handles);</td></tr>
+<tr class="codeline" data-linenumber="261"><td class="num" id="LN261">261</td><td class="line"> <span class='macro'>G_OBJECT_CLASS (pluma_file_browser_store_parent_class)<span class='macro_popup'>((((GObjectClass*) (void *) ((pluma_file_browser_store_parent_class<br>)))))</span></span>-&gt;finalize (object);</td></tr>
+<tr class="codeline" data-linenumber="262"><td class="num" id="LN262">262</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="263"><td class="num" id="LN263">263</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="264"><td class="num" id="LN264">264</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="265"><td class="num" id="LN265">265</td><td class="line">set_gvalue_from_node (GValue *value,</td></tr>
+<tr class="codeline" data-linenumber="266"><td class="num" id="LN266">266</td><td class="line"> FileBrowserNode *node)</td></tr>
+<tr class="codeline" data-linenumber="267"><td class="num" id="LN267">267</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="268"><td class="num" id="LN268">268</td><td class="line"> gchar * uri;</td></tr>
+<tr class="codeline" data-linenumber="269"><td class="num" id="LN269">269</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="270"><td class="num" id="LN270">270</td><td class="line"> <span class='keyword'>if</span> (node == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> || !node-&gt;file) {</td></tr>
+<tr class="codeline" data-linenumber="271"><td class="num" id="LN271">271</td><td class="line"> g_value_set_string (value, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="272"><td class="num" id="LN272">272</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="273"><td class="num" id="LN273">273</td><td class="line"> uri = g_file_get_uri (node-&gt;file);</td></tr>
+<tr class="codeline" data-linenumber="274"><td class="num" id="LN274">274</td><td class="line"> g_value_take_string (value, uri);</td></tr>
+<tr class="codeline" data-linenumber="275"><td class="num" id="LN275">275</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="276"><td class="num" id="LN276">276</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="277"><td class="num" id="LN277">277</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="278"><td class="num" id="LN278">278</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="279"><td class="num" id="LN279">279</td><td class="line">pluma_file_browser_store_get_property (GObject *object,</td></tr>
+<tr class="codeline" data-linenumber="280"><td class="num" id="LN280">280</td><td class="line"> guint prop_id,</td></tr>
+<tr class="codeline" data-linenumber="281"><td class="num" id="LN281">281</td><td class="line"> GValue *value,</td></tr>
+<tr class="codeline" data-linenumber="282"><td class="num" id="LN282">282</td><td class="line"> GParamSpec *pspec)</td></tr>
+<tr class="codeline" data-linenumber="283"><td class="num" id="LN283">283</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="284"><td class="num" id="LN284">284</td><td class="line"> PlumaFileBrowserStore *obj = <span class='macro'>PLUMA_FILE_BROWSER_STORE (object)<span class='macro_popup'>((((PlumaFileBrowserStore*) (void *) ((object)))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="285"><td class="num" id="LN285">285</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="286"><td class="num" id="LN286">286</td><td class="line"> <span class='keyword'>switch</span> (prop_id)</td></tr>
+<tr class="codeline" data-linenumber="287"><td class="num" id="LN287">287</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="288"><td class="num" id="LN288">288</td><td class="line"> <span class='keyword'>case</span> PROP_ROOT:</td></tr>
+<tr class="codeline" data-linenumber="289"><td class="num" id="LN289">289</td><td class="line"> set_gvalue_from_node (value, obj-&gt;priv-&gt;root);</td></tr>
+<tr class="codeline" data-linenumber="290"><td class="num" id="LN290">290</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="291"><td class="num" id="LN291">291</td><td class="line"> <span class='keyword'>case</span> PROP_VIRTUAL_ROOT:</td></tr>
+<tr class="codeline" data-linenumber="292"><td class="num" id="LN292">292</td><td class="line"> set_gvalue_from_node (value, obj-&gt;priv-&gt;virtual_root);</td></tr>
+<tr class="codeline" data-linenumber="293"><td class="num" id="LN293">293</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="294"><td class="num" id="LN294">294</td><td class="line"> <span class='keyword'>case</span> PROP_FILTER_MODE:</td></tr>
+<tr class="codeline" data-linenumber="295"><td class="num" id="LN295">295</td><td class="line"> g_value_set_flags (value, obj-&gt;priv-&gt;filter_mode);</td></tr>
+<tr class="codeline" data-linenumber="296"><td class="num" id="LN296">296</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="297"><td class="num" id="LN297">297</td><td class="line"> <span class='keyword'>default</span>:</td></tr>
+<tr class="codeline" data-linenumber="298"><td class="num" id="LN298">298</td><td class="line"> <span class='macro'>G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec)<span class='macro_popup'>do { GObject *_glib__object = (GObject*) ((object)); GParamSpec<br> *_glib__pspec = (GParamSpec*) ((pspec)); guint _glib__property_id<br> = ((prop_id)); g_warning ("%s:%d: invalid %s id %u for \"%s\" of type '%s' in '%s'"<br>, "pluma-file-browser-store.c", 298, ("property"), _glib__property_id<br>, _glib__pspec-&gt;name, g_type_name ((((((GTypeClass*) (((GTypeInstance<br>*) (_glib__pspec))-&gt;g_class))-&gt;g_type)))), (g_type_name<br> ((((((GTypeClass*) (((GTypeInstance*) (_glib__object))-&gt;g_class<br>))-&gt;g_type)))))); } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="299"><td class="num" id="LN299">299</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="300"><td class="num" id="LN300">300</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="301"><td class="num" id="LN301">301</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="302"><td class="num" id="LN302">302</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="303"><td class="num" id="LN303">303</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="304"><td class="num" id="LN304">304</td><td class="line">pluma_file_browser_store_set_property (GObject *object,</td></tr>
+<tr class="codeline" data-linenumber="305"><td class="num" id="LN305">305</td><td class="line"> guint prop_id,</td></tr>
+<tr class="codeline" data-linenumber="306"><td class="num" id="LN306">306</td><td class="line"> <span class='keyword'>const</span> GValue *value,</td></tr>
+<tr class="codeline" data-linenumber="307"><td class="num" id="LN307">307</td><td class="line"> GParamSpec *pspec)</td></tr>
+<tr class="codeline" data-linenumber="308"><td class="num" id="LN308">308</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="309"><td class="num" id="LN309">309</td><td class="line"> PlumaFileBrowserStore *obj = <span class='macro'>PLUMA_FILE_BROWSER_STORE (object)<span class='macro_popup'>((((PlumaFileBrowserStore*) (void *) ((object)))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="310"><td class="num" id="LN310">310</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="311"><td class="num" id="LN311">311</td><td class="line"> <span class='keyword'>switch</span> (prop_id)</td></tr>
+<tr class="codeline" data-linenumber="312"><td class="num" id="LN312">312</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="313"><td class="num" id="LN313">313</td><td class="line"> <span class='keyword'>case</span> PROP_FILTER_MODE:</td></tr>
+<tr class="codeline" data-linenumber="314"><td class="num" id="LN314">314</td><td class="line"> pluma_file_browser_store_set_filter_mode (obj,</td></tr>
+<tr class="codeline" data-linenumber="315"><td class="num" id="LN315">315</td><td class="line"> g_value_get_flags (value));</td></tr>
+<tr class="codeline" data-linenumber="316"><td class="num" id="LN316">316</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="317"><td class="num" id="LN317">317</td><td class="line"> <span class='keyword'>default</span>:</td></tr>
+<tr class="codeline" data-linenumber="318"><td class="num" id="LN318">318</td><td class="line"> <span class='macro'>G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec)<span class='macro_popup'>do { GObject *_glib__object = (GObject*) ((object)); GParamSpec<br> *_glib__pspec = (GParamSpec*) ((pspec)); guint _glib__property_id<br> = ((prop_id)); g_warning ("%s:%d: invalid %s id %u for \"%s\" of type '%s' in '%s'"<br>, "pluma-file-browser-store.c", 318, ("property"), _glib__property_id<br>, _glib__pspec-&gt;name, g_type_name ((((((GTypeClass*) (((GTypeInstance<br>*) (_glib__pspec))-&gt;g_class))-&gt;g_type)))), (g_type_name<br> ((((((GTypeClass*) (((GTypeInstance*) (_glib__object))-&gt;g_class<br>))-&gt;g_type)))))); } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="319"><td class="num" id="LN319">319</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="320"><td class="num" id="LN320">320</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="321"><td class="num" id="LN321">321</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="322"><td class="num" id="LN322">322</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="323"><td class="num" id="LN323">323</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="324"><td class="num" id="LN324">324</td><td class="line">pluma_file_browser_store_class_init (PlumaFileBrowserStoreClass * klass)</td></tr>
+<tr class="codeline" data-linenumber="325"><td class="num" id="LN325">325</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="326"><td class="num" id="LN326">326</td><td class="line"> GObjectClass *object_class = <span class='macro'>G_OBJECT_CLASS (klass)<span class='macro_popup'>((((GObjectClass*) (void *) ((klass)))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="327"><td class="num" id="LN327">327</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="328"><td class="num" id="LN328">328</td><td class="line"> object_class-&gt;finalize = pluma_file_browser_store_finalize;</td></tr>
+<tr class="codeline" data-linenumber="329"><td class="num" id="LN329">329</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="330"><td class="num" id="LN330">330</td><td class="line"> object_class-&gt;get_property = pluma_file_browser_store_get_property;</td></tr>
+<tr class="codeline" data-linenumber="331"><td class="num" id="LN331">331</td><td class="line"> object_class-&gt;set_property = pluma_file_browser_store_set_property;</td></tr>
+<tr class="codeline" data-linenumber="332"><td class="num" id="LN332">332</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="333"><td class="num" id="LN333">333</td><td class="line"> g_object_class_install_property (object_class, PROP_ROOT,</td></tr>
+<tr class="codeline" data-linenumber="334"><td class="num" id="LN334">334</td><td class="line"> g_param_spec_string (<span class='string_literal'>"root"</span>,</td></tr>
+<tr class="codeline" data-linenumber="335"><td class="num" id="LN335">335</td><td class="line"> <span class='string_literal'>"Root"</span>,</td></tr>
+<tr class="codeline" data-linenumber="336"><td class="num" id="LN336">336</td><td class="line"> <span class='string_literal'>"The root uri"</span>,</td></tr>
+<tr class="codeline" data-linenumber="337"><td class="num" id="LN337">337</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="338"><td class="num" id="LN338">338</td><td class="line"> G_PARAM_READABLE));</td></tr>
+<tr class="codeline" data-linenumber="339"><td class="num" id="LN339">339</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="340"><td class="num" id="LN340">340</td><td class="line"> g_object_class_install_property (object_class, PROP_VIRTUAL_ROOT,</td></tr>
+<tr class="codeline" data-linenumber="341"><td class="num" id="LN341">341</td><td class="line"> g_param_spec_string (<span class='string_literal'>"virtual-root"</span>,</td></tr>
+<tr class="codeline" data-linenumber="342"><td class="num" id="LN342">342</td><td class="line"> <span class='string_literal'>"Virtual Root"</span>,</td></tr>
+<tr class="codeline" data-linenumber="343"><td class="num" id="LN343">343</td><td class="line"> <span class='string_literal'>"The virtual root uri"</span>,</td></tr>
+<tr class="codeline" data-linenumber="344"><td class="num" id="LN344">344</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="345"><td class="num" id="LN345">345</td><td class="line"> G_PARAM_READABLE));</td></tr>
+<tr class="codeline" data-linenumber="346"><td class="num" id="LN346">346</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="347"><td class="num" id="LN347">347</td><td class="line"> g_object_class_install_property (object_class, PROP_FILTER_MODE,</td></tr>
+<tr class="codeline" data-linenumber="348"><td class="num" id="LN348">348</td><td class="line"> g_param_spec_flags (<span class='string_literal'>"filter-mode"</span>,</td></tr>
+<tr class="codeline" data-linenumber="349"><td class="num" id="LN349">349</td><td class="line"> <span class='string_literal'>"Filter Mode"</span>,</td></tr>
+<tr class="codeline" data-linenumber="350"><td class="num" id="LN350">350</td><td class="line"> <span class='string_literal'>"The filter mode"</span>,</td></tr>
+<tr class="codeline" data-linenumber="351"><td class="num" id="LN351">351</td><td class="line"> <span class='macro'>PLUMA_TYPE_FILE_BROWSER_STORE_FILTER_MODE<span class='macro_popup'>(pluma_file_browser_store_filter_mode_get_type())</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="352"><td class="num" id="LN352">352</td><td class="line"> pluma_file_browser_store_filter_mode_get_default (),</td></tr>
+<tr class="codeline" data-linenumber="353"><td class="num" id="LN353">353</td><td class="line"> G_PARAM_READWRITE));</td></tr>
+<tr class="codeline" data-linenumber="354"><td class="num" id="LN354">354</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="355"><td class="num" id="LN355">355</td><td class="line"> model_signals[BEGIN_LOADING] =</td></tr>
+<tr class="codeline" data-linenumber="356"><td class="num" id="LN356">356</td><td class="line"> g_signal_new (<span class='string_literal'>"begin-loading"</span>,</td></tr>
+<tr class="codeline" data-linenumber="357"><td class="num" id="LN357">357</td><td class="line"> <span class='macro'>G_OBJECT_CLASS_TYPE (object_class)<span class='macro_popup'>((((GTypeClass*) (object_class))-&gt;g_type))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="358"><td class="num" id="LN358">358</td><td class="line"> G_SIGNAL_RUN_LAST,</td></tr>
+<tr class="codeline" data-linenumber="359"><td class="num" id="LN359">359</td><td class="line"> <span class='macro'>G_STRUCT_OFFSET (PlumaFileBrowserStoreClass, begin_loading)<span class='macro_popup'>((glong) __builtin_offsetof(PlumaFileBrowserStoreClass, begin_loading<br>))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="360"><td class="num" id="LN360">360</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="361"><td class="num" id="LN361">361</td><td class="line"> <span class='macro'>G_TYPE_NONE<span class='macro_popup'>((GType) ((1) &lt;&lt; (2)))</span></span>, 1, <span class='macro'>GTK_TYPE_TREE_ITER<span class='macro_popup'>(gtk_tree_iter_get_type ())</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="362"><td class="num" id="LN362">362</td><td class="line"> model_signals[END_LOADING] =</td></tr>
+<tr class="codeline" data-linenumber="363"><td class="num" id="LN363">363</td><td class="line"> g_signal_new (<span class='string_literal'>"end-loading"</span>,</td></tr>
+<tr class="codeline" data-linenumber="364"><td class="num" id="LN364">364</td><td class="line"> <span class='macro'>G_OBJECT_CLASS_TYPE (object_class)<span class='macro_popup'>((((GTypeClass*) (object_class))-&gt;g_type))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="365"><td class="num" id="LN365">365</td><td class="line"> G_SIGNAL_RUN_LAST,</td></tr>
+<tr class="codeline" data-linenumber="366"><td class="num" id="LN366">366</td><td class="line"> <span class='macro'>G_STRUCT_OFFSET (PlumaFileBrowserStoreClass, end_loading)<span class='macro_popup'>((glong) __builtin_offsetof(PlumaFileBrowserStoreClass, end_loading<br>))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="367"><td class="num" id="LN367">367</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="368"><td class="num" id="LN368">368</td><td class="line"> <span class='macro'>G_TYPE_NONE<span class='macro_popup'>((GType) ((1) &lt;&lt; (2)))</span></span>, 1,</td></tr>
+<tr class="codeline" data-linenumber="369"><td class="num" id="LN369">369</td><td class="line"> <span class='macro'>GTK_TYPE_TREE_ITER<span class='macro_popup'>(gtk_tree_iter_get_type ())</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="370"><td class="num" id="LN370">370</td><td class="line"> model_signals[ERROR] =</td></tr>
+<tr class="codeline" data-linenumber="371"><td class="num" id="LN371">371</td><td class="line"> g_signal_new (<span class='string_literal'>"error"</span>, <span class='macro'>G_OBJECT_CLASS_TYPE (object_class)<span class='macro_popup'>((((GTypeClass*) (object_class))-&gt;g_type))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="372"><td class="num" id="LN372">372</td><td class="line"> G_SIGNAL_RUN_LAST,</td></tr>
+<tr class="codeline" data-linenumber="373"><td class="num" id="LN373">373</td><td class="line"> <span class='macro'>G_STRUCT_OFFSET (PlumaFileBrowserStoreClass, error)<span class='macro_popup'>((glong) __builtin_offsetof(PlumaFileBrowserStoreClass, error<br>))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="374"><td class="num" id="LN374">374</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="375"><td class="num" id="LN375">375</td><td class="line"> <span class='macro'>G_TYPE_NONE<span class='macro_popup'>((GType) ((1) &lt;&lt; (2)))</span></span>, 2, <span class='macro'>G_TYPE_UINT<span class='macro_popup'>((GType) ((7) &lt;&lt; (2)))</span></span>, <span class='macro'>G_TYPE_STRING<span class='macro_popup'>((GType) ((16) &lt;&lt; (2)))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="376"><td class="num" id="LN376">376</td><td class="line"> model_signals[NO_TRASH] =</td></tr>
+<tr class="codeline" data-linenumber="377"><td class="num" id="LN377">377</td><td class="line"> g_signal_new (<span class='string_literal'>"no-trash"</span>, <span class='macro'>G_OBJECT_CLASS_TYPE (object_class)<span class='macro_popup'>((((GTypeClass*) (object_class))-&gt;g_type))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="378"><td class="num" id="LN378">378</td><td class="line"> G_SIGNAL_RUN_LAST,</td></tr>
+<tr class="codeline" data-linenumber="379"><td class="num" id="LN379">379</td><td class="line"> <span class='macro'>G_STRUCT_OFFSET (PlumaFileBrowserStoreClass, no_trash)<span class='macro_popup'>((glong) __builtin_offsetof(PlumaFileBrowserStoreClass, no_trash<br>))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="380"><td class="num" id="LN380">380</td><td class="line"> g_signal_accumulator_true_handled, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="381"><td class="num" id="LN381">381</td><td class="line"> <span class='macro'>G_TYPE_BOOLEAN<span class='macro_popup'>((GType) ((5) &lt;&lt; (2)))</span></span>, 1, <span class='macro'>G_TYPE_POINTER<span class='macro_popup'>((GType) ((17) &lt;&lt; (2)))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="382"><td class="num" id="LN382">382</td><td class="line"> model_signals[RENAME] =</td></tr>
+<tr class="codeline" data-linenumber="383"><td class="num" id="LN383">383</td><td class="line"> g_signal_new (<span class='string_literal'>"rename"</span>,</td></tr>
+<tr class="codeline" data-linenumber="384"><td class="num" id="LN384">384</td><td class="line"> <span class='macro'>G_OBJECT_CLASS_TYPE (object_class)<span class='macro_popup'>((((GTypeClass*) (object_class))-&gt;g_type))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="385"><td class="num" id="LN385">385</td><td class="line"> G_SIGNAL_RUN_LAST,</td></tr>
+<tr class="codeline" data-linenumber="386"><td class="num" id="LN386">386</td><td class="line"> <span class='macro'>G_STRUCT_OFFSET (PlumaFileBrowserStoreClass, rename)<span class='macro_popup'>((glong) __builtin_offsetof(PlumaFileBrowserStoreClass, rename<br>))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="387"><td class="num" id="LN387">387</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="388"><td class="num" id="LN388">388</td><td class="line"> <span class='macro'>G_TYPE_NONE<span class='macro_popup'>((GType) ((1) &lt;&lt; (2)))</span></span>, 2,</td></tr>
+<tr class="codeline" data-linenumber="389"><td class="num" id="LN389">389</td><td class="line"> <span class='macro'>G_TYPE_STRING<span class='macro_popup'>((GType) ((16) &lt;&lt; (2)))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="390"><td class="num" id="LN390">390</td><td class="line"> <span class='macro'>G_TYPE_STRING<span class='macro_popup'>((GType) ((16) &lt;&lt; (2)))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="391"><td class="num" id="LN391">391</td><td class="line"> model_signals[BEGIN_REFRESH] =</td></tr>
+<tr class="codeline" data-linenumber="392"><td class="num" id="LN392">392</td><td class="line"> g_signal_new (<span class='string_literal'>"begin-refresh"</span>,</td></tr>
+<tr class="codeline" data-linenumber="393"><td class="num" id="LN393">393</td><td class="line"> <span class='macro'>G_OBJECT_CLASS_TYPE (object_class)<span class='macro_popup'>((((GTypeClass*) (object_class))-&gt;g_type))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="394"><td class="num" id="LN394">394</td><td class="line"> G_SIGNAL_RUN_LAST,</td></tr>
+<tr class="codeline" data-linenumber="395"><td class="num" id="LN395">395</td><td class="line"> <span class='macro'>G_STRUCT_OFFSET (PlumaFileBrowserStoreClass, begin_refresh)<span class='macro_popup'>((glong) __builtin_offsetof(PlumaFileBrowserStoreClass, begin_refresh<br>))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="396"><td class="num" id="LN396">396</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="397"><td class="num" id="LN397">397</td><td class="line"> <span class='macro'>G_TYPE_NONE<span class='macro_popup'>((GType) ((1) &lt;&lt; (2)))</span></span>, 0);</td></tr>
+<tr class="codeline" data-linenumber="398"><td class="num" id="LN398">398</td><td class="line"> model_signals[END_REFRESH] =</td></tr>
+<tr class="codeline" data-linenumber="399"><td class="num" id="LN399">399</td><td class="line"> g_signal_new (<span class='string_literal'>"end-refresh"</span>,</td></tr>
+<tr class="codeline" data-linenumber="400"><td class="num" id="LN400">400</td><td class="line"> <span class='macro'>G_OBJECT_CLASS_TYPE (object_class)<span class='macro_popup'>((((GTypeClass*) (object_class))-&gt;g_type))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="401"><td class="num" id="LN401">401</td><td class="line"> G_SIGNAL_RUN_LAST,</td></tr>
+<tr class="codeline" data-linenumber="402"><td class="num" id="LN402">402</td><td class="line"> <span class='macro'>G_STRUCT_OFFSET (PlumaFileBrowserStoreClass, end_refresh)<span class='macro_popup'>((glong) __builtin_offsetof(PlumaFileBrowserStoreClass, end_refresh<br>))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="403"><td class="num" id="LN403">403</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="404"><td class="num" id="LN404">404</td><td class="line"> <span class='macro'>G_TYPE_NONE<span class='macro_popup'>((GType) ((1) &lt;&lt; (2)))</span></span>, 0);</td></tr>
+<tr class="codeline" data-linenumber="405"><td class="num" id="LN405">405</td><td class="line"> model_signals[UNLOAD] =</td></tr>
+<tr class="codeline" data-linenumber="406"><td class="num" id="LN406">406</td><td class="line"> g_signal_new (<span class='string_literal'>"unload"</span>,</td></tr>
+<tr class="codeline" data-linenumber="407"><td class="num" id="LN407">407</td><td class="line"> <span class='macro'>G_OBJECT_CLASS_TYPE (object_class)<span class='macro_popup'>((((GTypeClass*) (object_class))-&gt;g_type))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="408"><td class="num" id="LN408">408</td><td class="line"> G_SIGNAL_RUN_LAST,</td></tr>
+<tr class="codeline" data-linenumber="409"><td class="num" id="LN409">409</td><td class="line"> <span class='macro'>G_STRUCT_OFFSET (PlumaFileBrowserStoreClass, unload)<span class='macro_popup'>((glong) __builtin_offsetof(PlumaFileBrowserStoreClass, unload<br>))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="410"><td class="num" id="LN410">410</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="411"><td class="num" id="LN411">411</td><td class="line"> <span class='macro'>G_TYPE_NONE<span class='macro_popup'>((GType) ((1) &lt;&lt; (2)))</span></span>, 1,</td></tr>
+<tr class="codeline" data-linenumber="412"><td class="num" id="LN412">412</td><td class="line"> <span class='macro'>G_TYPE_STRING<span class='macro_popup'>((GType) ((16) &lt;&lt; (2)))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="413"><td class="num" id="LN413">413</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="414"><td class="num" id="LN414">414</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="415"><td class="num" id="LN415">415</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="416"><td class="num" id="LN416">416</td><td class="line">pluma_file_browser_store_class_finalize (PlumaFileBrowserStoreClass *klass)</td></tr>
+<tr class="codeline" data-linenumber="417"><td class="num" id="LN417">417</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="418"><td class="num" id="LN418">418</td><td class="line"> <span class='comment'>/* dummy function - used by G_DEFINE_DYNAMIC_TYPE_EXTENDED */</span></td></tr>
+<tr class="codeline" data-linenumber="419"><td class="num" id="LN419">419</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="420"><td class="num" id="LN420">420</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="421"><td class="num" id="LN421">421</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="422"><td class="num" id="LN422">422</td><td class="line">pluma_file_browser_store_iface_init (GtkTreeModelIface * iface)</td></tr>
+<tr class="codeline" data-linenumber="423"><td class="num" id="LN423">423</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="424"><td class="num" id="LN424">424</td><td class="line"> iface-&gt;get_flags = pluma_file_browser_store_get_flags;</td></tr>
+<tr class="codeline" data-linenumber="425"><td class="num" id="LN425">425</td><td class="line"> iface-&gt;get_n_columns = pluma_file_browser_store_get_n_columns;</td></tr>
+<tr class="codeline" data-linenumber="426"><td class="num" id="LN426">426</td><td class="line"> iface-&gt;get_column_type = pluma_file_browser_store_get_column_type;</td></tr>
+<tr class="codeline" data-linenumber="427"><td class="num" id="LN427">427</td><td class="line"> iface-&gt;get_iter = pluma_file_browser_store_get_iter;</td></tr>
+<tr class="codeline" data-linenumber="428"><td class="num" id="LN428">428</td><td class="line"> iface-&gt;get_path = pluma_file_browser_store_get_path;</td></tr>
+<tr class="codeline" data-linenumber="429"><td class="num" id="LN429">429</td><td class="line"> iface-&gt;get_value = pluma_file_browser_store_get_value;</td></tr>
+<tr class="codeline" data-linenumber="430"><td class="num" id="LN430">430</td><td class="line"> iface-&gt;iter_next = pluma_file_browser_store_iter_next;</td></tr>
+<tr class="codeline" data-linenumber="431"><td class="num" id="LN431">431</td><td class="line"> iface-&gt;iter_children = pluma_file_browser_store_iter_children;</td></tr>
+<tr class="codeline" data-linenumber="432"><td class="num" id="LN432">432</td><td class="line"> iface-&gt;iter_has_child = pluma_file_browser_store_iter_has_child;</td></tr>
+<tr class="codeline" data-linenumber="433"><td class="num" id="LN433">433</td><td class="line"> iface-&gt;iter_n_children = pluma_file_browser_store_iter_n_children;</td></tr>
+<tr class="codeline" data-linenumber="434"><td class="num" id="LN434">434</td><td class="line"> iface-&gt;iter_nth_child = pluma_file_browser_store_iter_nth_child;</td></tr>
+<tr class="codeline" data-linenumber="435"><td class="num" id="LN435">435</td><td class="line"> iface-&gt;iter_parent = pluma_file_browser_store_iter_parent;</td></tr>
+<tr class="codeline" data-linenumber="436"><td class="num" id="LN436">436</td><td class="line"> iface-&gt;row_inserted = pluma_file_browser_store_row_inserted;</td></tr>
+<tr class="codeline" data-linenumber="437"><td class="num" id="LN437">437</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="438"><td class="num" id="LN438">438</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="439"><td class="num" id="LN439">439</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="440"><td class="num" id="LN440">440</td><td class="line">pluma_file_browser_store_drag_source_init (GtkTreeDragSourceIface * iface)</td></tr>
+<tr class="codeline" data-linenumber="441"><td class="num" id="LN441">441</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="442"><td class="num" id="LN442">442</td><td class="line"> iface-&gt;row_draggable = pluma_file_browser_store_row_draggable;</td></tr>
+<tr class="codeline" data-linenumber="443"><td class="num" id="LN443">443</td><td class="line"> iface-&gt;drag_data_delete = pluma_file_browser_store_drag_data_delete;</td></tr>
+<tr class="codeline" data-linenumber="444"><td class="num" id="LN444">444</td><td class="line"> iface-&gt;drag_data_get = pluma_file_browser_store_drag_data_get;</td></tr>
+<tr class="codeline" data-linenumber="445"><td class="num" id="LN445">445</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="446"><td class="num" id="LN446">446</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="447"><td class="num" id="LN447">447</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="448"><td class="num" id="LN448">448</td><td class="line">pluma_file_browser_store_init (PlumaFileBrowserStore * obj)</td></tr>
+<tr class="codeline" data-linenumber="449"><td class="num" id="LN449">449</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="450"><td class="num" id="LN450">450</td><td class="line"> obj-&gt;priv = pluma_file_browser_store_get_instance_private (obj);</td></tr>
+<tr class="codeline" data-linenumber="451"><td class="num" id="LN451">451</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="452"><td class="num" id="LN452">452</td><td class="line"> obj-&gt;priv-&gt;column_types[PLUMA_FILE_BROWSER_STORE_COLUMN_URI] =</td></tr>
+<tr class="codeline" data-linenumber="453"><td class="num" id="LN453">453</td><td class="line"> <span class='macro'>G_TYPE_STRING<span class='macro_popup'>((GType) ((16) &lt;&lt; (2)))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="454"><td class="num" id="LN454">454</td><td class="line"> obj-&gt;priv-&gt;column_types[PLUMA_FILE_BROWSER_STORE_COLUMN_NAME] =</td></tr>
+<tr class="codeline" data-linenumber="455"><td class="num" id="LN455">455</td><td class="line"> <span class='macro'>G_TYPE_STRING<span class='macro_popup'>((GType) ((16) &lt;&lt; (2)))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="456"><td class="num" id="LN456">456</td><td class="line"> obj-&gt;priv-&gt;column_types[PLUMA_FILE_BROWSER_STORE_COLUMN_FLAGS] =</td></tr>
+<tr class="codeline" data-linenumber="457"><td class="num" id="LN457">457</td><td class="line"> <span class='macro'>G_TYPE_UINT<span class='macro_popup'>((GType) ((7) &lt;&lt; (2)))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="458"><td class="num" id="LN458">458</td><td class="line"> obj-&gt;priv-&gt;column_types[PLUMA_FILE_BROWSER_STORE_COLUMN_ICON] =</td></tr>
+<tr class="codeline" data-linenumber="459"><td class="num" id="LN459">459</td><td class="line"> <span class='macro'>GDK_TYPE_PIXBUF<span class='macro_popup'>(gdk_pixbuf_get_type ())</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="460"><td class="num" id="LN460">460</td><td class="line"> obj-&gt;priv-&gt;column_types[PLUMA_FILE_BROWSER_STORE_COLUMN_EMBLEM] =</td></tr>
+<tr class="codeline" data-linenumber="461"><td class="num" id="LN461">461</td><td class="line"> <span class='macro'>GDK_TYPE_PIXBUF<span class='macro_popup'>(gdk_pixbuf_get_type ())</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="462"><td class="num" id="LN462">462</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="463"><td class="num" id="LN463">463</td><td class="line"> <span class='comment'>// Default filter mode is hiding the hidden files</span></td></tr>
+<tr class="codeline" data-linenumber="464"><td class="num" id="LN464">464</td><td class="line"> obj-&gt;priv-&gt;filter_mode = pluma_file_browser_store_filter_mode_get_default ();</td></tr>
+<tr class="codeline" data-linenumber="465"><td class="num" id="LN465">465</td><td class="line"> obj-&gt;priv-&gt;sort_func = model_sort_default;</td></tr>
+<tr class="codeline" data-linenumber="466"><td class="num" id="LN466">466</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="467"><td class="num" id="LN467">467</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="468"><td class="num" id="LN468">468</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="469"><td class="num" id="LN469">469</td><td class="line">node_has_parent (FileBrowserNode * node, FileBrowserNode * parent)</td></tr>
+<tr class="codeline" data-linenumber="470"><td class="num" id="LN470">470</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="471"><td class="num" id="LN471">471</td><td class="line"> <span class='keyword'>if</span> (node-&gt;parent == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="472"><td class="num" id="LN472">472</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="473"><td class="num" id="LN473">473</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="474"><td class="num" id="LN474">474</td><td class="line"> <span class='keyword'>if</span> (node-&gt;parent == parent)</td></tr>
+<tr class="codeline" data-linenumber="475"><td class="num" id="LN475">475</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="476"><td class="num" id="LN476">476</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="477"><td class="num" id="LN477">477</td><td class="line"> <span class='keyword'>return</span> node_has_parent (node-&gt;parent, parent);</td></tr>
+<tr class="codeline" data-linenumber="478"><td class="num" id="LN478">478</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="479"><td class="num" id="LN479">479</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="480"><td class="num" id="LN480">480</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="481"><td class="num" id="LN481">481</td><td class="line">node_in_tree (PlumaFileBrowserStore * model, FileBrowserNode * node)</td></tr>
+<tr class="codeline" data-linenumber="482"><td class="num" id="LN482">482</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="483"><td class="num" id="LN483">483</td><td class="line"> <span class='keyword'>return</span> node_has_parent (node, model-&gt;priv-&gt;virtual_root);</td></tr>
+<tr class="codeline" data-linenumber="484"><td class="num" id="LN484">484</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="485"><td class="num" id="LN485">485</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="486"><td class="num" id="LN486">486</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="487"><td class="num" id="LN487">487</td><td class="line">model_node_visibility (PlumaFileBrowserStore * model,</td></tr>
+<tr class="codeline" data-linenumber="488"><td class="num" id="LN488">488</td><td class="line"> FileBrowserNode * node)</td></tr>
+<tr class="codeline" data-linenumber="489"><td class="num" id="LN489">489</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="490"><td class="num" id="LN490">490</td><td class="line"> <span class='keyword'>if</span> (node == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="491"><td class="num" id="LN491">491</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="492"><td class="num" id="LN492">492</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="493"><td class="num" id="LN493">493</td><td class="line"> <span class='keyword'>if</span> (<span class='macro'>NODE_IS_DUMMY (node)<span class='macro_popup'>(((node)-&gt;flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_DUMMY<br>))</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="494"><td class="num" id="LN494">494</td><td class="line"> <span class='keyword'>return</span> !<span class='macro'>NODE_IS_HIDDEN (node)<span class='macro_popup'>(((node)-&gt;flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_HIDDEN<br>))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="495"><td class="num" id="LN495">495</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="496"><td class="num" id="LN496">496</td><td class="line"> <span class='keyword'>if</span> (node == model-&gt;priv-&gt;virtual_root)</td></tr>
+<tr class="codeline" data-linenumber="497"><td class="num" id="LN497">497</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="498"><td class="num" id="LN498">498</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="499"><td class="num" id="LN499">499</td><td class="line"> <span class='keyword'>if</span> (!node_has_parent (node, model-&gt;priv-&gt;virtual_root))</td></tr>
+<tr class="codeline" data-linenumber="500"><td class="num" id="LN500">500</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="501"><td class="num" id="LN501">501</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="502"><td class="num" id="LN502">502</td><td class="line"> <span class='keyword'>return</span> !<span class='macro'>NODE_IS_FILTERED (node)<span class='macro_popup'>(((node)-&gt;flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_FILTERED<br>))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="503"><td class="num" id="LN503">503</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="504"><td class="num" id="LN504">504</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="505"><td class="num" id="LN505">505</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="506"><td class="num" id="LN506">506</td><td class="line">model_node_inserted (PlumaFileBrowserStore * model,</td></tr>
+<tr class="codeline" data-linenumber="507"><td class="num" id="LN507">507</td><td class="line"> FileBrowserNode * node)</td></tr>
+<tr class="codeline" data-linenumber="508"><td class="num" id="LN508">508</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="509"><td class="num" id="LN509">509</td><td class="line"> <span class='keyword'>return</span> node == model-&gt;priv-&gt;virtual_root || (model_node_visibility (model, node) &amp;&amp; node-&gt;inserted);</td></tr>
+<tr class="codeline" data-linenumber="510"><td class="num" id="LN510">510</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="511"><td class="num" id="LN511">511</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="512"><td class="num" id="LN512">512</td><td class="line"><span class='comment'>/* Interface implementation */</span></td></tr>
+<tr class="codeline" data-linenumber="513"><td class="num" id="LN513">513</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="514"><td class="num" id="LN514">514</td><td class="line"><span class='keyword'>static</span> GtkTreeModelFlags</td></tr>
+<tr class="codeline" data-linenumber="515"><td class="num" id="LN515">515</td><td class="line">pluma_file_browser_store_get_flags (GtkTreeModel * tree_model)</td></tr>
+<tr class="codeline" data-linenumber="516"><td class="num" id="LN516">516</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="517"><td class="num" id="LN517">517</td><td class="line"> <span class='macro'>g_return_val_if_fail (PLUMA_IS_FILE_BROWSER_STORE (tree_model),<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_98<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((tree_model)); GType __t = ((pluma_file_browser_store_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_98 = 1; else _g_boolean_var_98 = 0<br>; _g_boolean_var_98; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "PLUMA_IS_FILE_BROWSER_STORE (tree_model)"<br>); return ((GtkTreeModelFlags) 0); } } while (0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="518"><td class="num" id="LN518">518</td><td class="line"> <span class='macro'>(GtkTreeModelFlags) 0)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_98<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((tree_model)); GType __t = ((pluma_file_browser_store_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_98 = 1; else _g_boolean_var_98 = 0<br>; _g_boolean_var_98; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "PLUMA_IS_FILE_BROWSER_STORE (tree_model)"<br>); return ((GtkTreeModelFlags) 0); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="519"><td class="num" id="LN519">519</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="520"><td class="num" id="LN520">520</td><td class="line"> <span class='keyword'>return</span> GTK_TREE_MODEL_ITERS_PERSIST;</td></tr>
+<tr class="codeline" data-linenumber="521"><td class="num" id="LN521">521</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="522"><td class="num" id="LN522">522</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="523"><td class="num" id="LN523">523</td><td class="line"><span class='keyword'>static</span> gint</td></tr>
+<tr class="codeline" data-linenumber="524"><td class="num" id="LN524">524</td><td class="line">pluma_file_browser_store_get_n_columns (GtkTreeModel * tree_model)</td></tr>
+<tr class="codeline" data-linenumber="525"><td class="num" id="LN525">525</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="526"><td class="num" id="LN526">526</td><td class="line"> <span class='macro'>g_return_val_if_fail (PLUMA_IS_FILE_BROWSER_STORE (tree_model), 0)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_99<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((tree_model)); GType __t = ((pluma_file_browser_store_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_99 = 1; else _g_boolean_var_99 = 0<br>; _g_boolean_var_99; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "PLUMA_IS_FILE_BROWSER_STORE (tree_model)"<br>); return (0); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="527"><td class="num" id="LN527">527</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="528"><td class="num" id="LN528">528</td><td class="line"> <span class='keyword'>return</span> PLUMA_FILE_BROWSER_STORE_COLUMN_NUM;</td></tr>
+<tr class="codeline" data-linenumber="529"><td class="num" id="LN529">529</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="530"><td class="num" id="LN530">530</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="531"><td class="num" id="LN531">531</td><td class="line"><span class='keyword'>static</span> GType</td></tr>
+<tr class="codeline" data-linenumber="532"><td class="num" id="LN532">532</td><td class="line">pluma_file_browser_store_get_column_type (GtkTreeModel * tree_model, gint idx)</td></tr>
+<tr class="codeline" data-linenumber="533"><td class="num" id="LN533">533</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="534"><td class="num" id="LN534">534</td><td class="line"> <span class='macro'>g_return_val_if_fail (PLUMA_IS_FILE_BROWSER_STORE (tree_model),<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_100<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((tree_model)); GType __t = ((pluma_file_browser_store_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_100 = 1; else _g_boolean_var_100 =<br> 0; _g_boolean_var_100; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "PLUMA_IS_FILE_BROWSER_STORE (tree_model)"<br>); return (((GType) ((0) &lt;&lt; (2)))); } } while (0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="535"><td class="num" id="LN535">535</td><td class="line"> <span class='macro'>G_TYPE_INVALID)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_100<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((tree_model)); GType __t = ((pluma_file_browser_store_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_100 = 1; else _g_boolean_var_100 =<br> 0; _g_boolean_var_100; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "PLUMA_IS_FILE_BROWSER_STORE (tree_model)"<br>); return (((GType) ((0) &lt;&lt; (2)))); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="536"><td class="num" id="LN536">536</td><td class="line"> <span class='macro'>g_return_val_if_fail (idx &lt; PLUMA_FILE_BROWSER_STORE_COLUMN_NUM &amp;&amp;<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_101<br>; if (idx &lt; PLUMA_FILE_BROWSER_STORE_COLUMN_NUM &amp;&amp;<br> idx &gt;= 0) _g_boolean_var_101 = 1; else _g_boolean_var_101<br> = 0; _g_boolean_var_101; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "idx &lt; PLUMA_FILE_BROWSER_STORE_COLUMN_NUM &amp;&amp; idx &gt;= 0"<br>); return (((GType) ((0) &lt;&lt; (2)))); } } while (0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="537"><td class="num" id="LN537">537</td><td class="line"> <span class='macro'>idx &gt;= 0, G_TYPE_INVALID)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_101<br>; if (idx &lt; PLUMA_FILE_BROWSER_STORE_COLUMN_NUM &amp;&amp;<br> idx &gt;= 0) _g_boolean_var_101 = 1; else _g_boolean_var_101<br> = 0; _g_boolean_var_101; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "idx &lt; PLUMA_FILE_BROWSER_STORE_COLUMN_NUM &amp;&amp; idx &gt;= 0"<br>); return (((GType) ((0) &lt;&lt; (2)))); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="538"><td class="num" id="LN538">538</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="539"><td class="num" id="LN539">539</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>PLUMA_FILE_BROWSER_STORE (tree_model)<span class='macro_popup'>((((PlumaFileBrowserStore*) (void *) ((tree_model)))))</span></span>-&gt;priv-&gt;column_types[idx];</td></tr>
+<tr class="codeline" data-linenumber="540"><td class="num" id="LN540">540</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="541"><td class="num" id="LN541">541</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="542"><td class="num" id="LN542">542</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="543"><td class="num" id="LN543">543</td><td class="line">pluma_file_browser_store_get_iter (GtkTreeModel * tree_model,</td></tr>
+<tr class="codeline" data-linenumber="544"><td class="num" id="LN544">544</td><td class="line"> GtkTreeIter * iter, GtkTreePath * path)</td></tr>
+<tr class="codeline" data-linenumber="545"><td class="num" id="LN545">545</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="546"><td class="num" id="LN546">546</td><td class="line"> gint * indices, depth, i;</td></tr>
+<tr class="codeline" data-linenumber="547"><td class="num" id="LN547">547</td><td class="line"> FileBrowserNode * node;</td></tr>
+<tr class="codeline" data-linenumber="548"><td class="num" id="LN548">548</td><td class="line"> PlumaFileBrowserStore * model;</td></tr>
+<tr class="codeline" data-linenumber="549"><td class="num" id="LN549">549</td><td class="line"> gint num;</td></tr>
+<tr class="codeline" data-linenumber="550"><td class="num" id="LN550">550</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="551"><td class="num" id="LN551">551</td><td class="line"> <span class='macro'>g_assert (PLUMA_IS_FILE_BROWSER_STORE (tree_model))<span class='macro_popup'>do { if (__builtin_expect (__extension__ ({ int _g_boolean_var_102<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((tree_model)); GType __t = ((pluma_file_browser_store_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_102 = 1; else _g_boolean_var_102 =<br> 0; _g_boolean_var_102; }), 1)) ; else g_assertion_message_expr<br> (((gchar*) 0), "pluma-file-browser-store.c", 551, ((const char<br>*) (__func__)), "PLUMA_IS_FILE_BROWSER_STORE (tree_model)"); }<br> while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="552"><td class="num" id="LN552">552</td><td class="line"> <span class='macro'>g_assert (path != NULL)<span class='macro_popup'>do { if (__builtin_expect (__extension__ ({ int _g_boolean_var_103<br>; if (path != ((void*)0)) _g_boolean_var_103 = 1; else _g_boolean_var_103<br> = 0; _g_boolean_var_103; }), 1)) ; else g_assertion_message_expr<br> (((gchar*) 0), "pluma-file-browser-store.c", 552, ((const char<br>*) (__func__)), "path != NULL"); } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="553"><td class="num" id="LN553">553</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="554"><td class="num" id="LN554">554</td><td class="line"> model = <span class='macro'>PLUMA_FILE_BROWSER_STORE (tree_model)<span class='macro_popup'>((((PlumaFileBrowserStore*) (void *) ((tree_model)))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="555"><td class="num" id="LN555">555</td><td class="line"> indices = gtk_tree_path_get_indices (path);</td></tr>
+<tr class="codeline" data-linenumber="556"><td class="num" id="LN556">556</td><td class="line"> depth = gtk_tree_path_get_depth (path);</td></tr>
+<tr class="codeline" data-linenumber="557"><td class="num" id="LN557">557</td><td class="line"> node = model-&gt;priv-&gt;virtual_root;</td></tr>
+<tr class="codeline" data-linenumber="558"><td class="num" id="LN558">558</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="559"><td class="num" id="LN559">559</td><td class="line"> <span class='keyword'>for</span> (i = 0; i &lt; depth; ++i) {</td></tr>
+<tr class="codeline" data-linenumber="560"><td class="num" id="LN560">560</td><td class="line"> GSList * item;</td></tr>
+<tr class="codeline" data-linenumber="561"><td class="num" id="LN561">561</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="562"><td class="num" id="LN562">562</td><td class="line"> <span class='keyword'>if</span> (node == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="563"><td class="num" id="LN563">563</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="564"><td class="num" id="LN564">564</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="565"><td class="num" id="LN565">565</td><td class="line"> num = 0;</td></tr>
+<tr class="codeline" data-linenumber="566"><td class="num" id="LN566">566</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="567"><td class="num" id="LN567">567</td><td class="line"> <span class='keyword'>if</span> (!<span class='macro'>NODE_IS_DIR (node)<span class='macro_popup'>(((node)-&gt;flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_DIRECTORY<br>))</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="568"><td class="num" id="LN568">568</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="569"><td class="num" id="LN569">569</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="570"><td class="num" id="LN570">570</td><td class="line"> <span class='keyword'>for</span> (item = <span class='macro'>FILE_BROWSER_NODE_DIR (node)<span class='macro_popup'>((FileBrowserNodeDir *)(node))</span></span>-&gt;children; item; item = item-&gt;next) {</td></tr>
+<tr class="codeline" data-linenumber="571"><td class="num" id="LN571">571</td><td class="line"> FileBrowserNode * child;</td></tr>
+<tr class="codeline" data-linenumber="572"><td class="num" id="LN572">572</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="573"><td class="num" id="LN573">573</td><td class="line"> child = (FileBrowserNode *) (item-&gt;data);</td></tr>
+<tr class="codeline" data-linenumber="574"><td class="num" id="LN574">574</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="575"><td class="num" id="LN575">575</td><td class="line"> <span class='keyword'>if</span> (model_node_inserted (model, child)) {</td></tr>
+<tr class="codeline" data-linenumber="576"><td class="num" id="LN576">576</td><td class="line"> <span class='keyword'>if</span> (num == indices[i]) {</td></tr>
+<tr class="codeline" data-linenumber="577"><td class="num" id="LN577">577</td><td class="line"> node = <span class="mrange">child</span>;</td></tr>
+<tr><td class="num"></td><td class="line"><div id="EndPath" class="msg msgEvent" style="margin-left:41ex">Value stored to 'node' is never read</div></td></tr>
+<tr class="codeline" data-linenumber="578"><td class="num" id="LN578">578</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="579"><td class="num" id="LN579">579</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="580"><td class="num" id="LN580">580</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="581"><td class="num" id="LN581">581</td><td class="line"> num++;</td></tr>
+<tr class="codeline" data-linenumber="582"><td class="num" id="LN582">582</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="583"><td class="num" id="LN583">583</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="584"><td class="num" id="LN584">584</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="585"><td class="num" id="LN585">585</td><td class="line"> <span class='keyword'>if</span> (item == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="586"><td class="num" id="LN586">586</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="587"><td class="num" id="LN587">587</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="588"><td class="num" id="LN588">588</td><td class="line"> node = (FileBrowserNode *) (item-&gt;data);</td></tr>
+<tr class="codeline" data-linenumber="589"><td class="num" id="LN589">589</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="590"><td class="num" id="LN590">590</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="591"><td class="num" id="LN591">591</td><td class="line"> iter-&gt;user_data = node;</td></tr>
+<tr class="codeline" data-linenumber="592"><td class="num" id="LN592">592</td><td class="line"> iter-&gt;user_data2 = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="593"><td class="num" id="LN593">593</td><td class="line"> iter-&gt;user_data3 = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="594"><td class="num" id="LN594">594</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="595"><td class="num" id="LN595">595</td><td class="line"> <span class='keyword'>return</span> node != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="596"><td class="num" id="LN596">596</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="597"><td class="num" id="LN597">597</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="598"><td class="num" id="LN598">598</td><td class="line"><span class='keyword'>static</span> GtkTreePath *</td></tr>
+<tr class="codeline" data-linenumber="599"><td class="num" id="LN599">599</td><td class="line">pluma_file_browser_store_get_path_real (PlumaFileBrowserStore * model,</td></tr>
+<tr class="codeline" data-linenumber="600"><td class="num" id="LN600">600</td><td class="line"> FileBrowserNode * node)</td></tr>
+<tr class="codeline" data-linenumber="601"><td class="num" id="LN601">601</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="602"><td class="num" id="LN602">602</td><td class="line"> GtkTreePath *path;</td></tr>
+<tr class="codeline" data-linenumber="603"><td class="num" id="LN603">603</td><td class="line"> gint num = 0;</td></tr>
+<tr class="codeline" data-linenumber="604"><td class="num" id="LN604">604</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="605"><td class="num" id="LN605">605</td><td class="line"> path = gtk_tree_path_new ();</td></tr>
+<tr class="codeline" data-linenumber="606"><td class="num" id="LN606">606</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="607"><td class="num" id="LN607">607</td><td class="line"> <span class='keyword'>while</span> (node != model-&gt;priv-&gt;virtual_root) {</td></tr>
+<tr class="codeline" data-linenumber="608"><td class="num" id="LN608">608</td><td class="line"> GSList *item;</td></tr>
+<tr class="codeline" data-linenumber="609"><td class="num" id="LN609">609</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="610"><td class="num" id="LN610">610</td><td class="line"> <span class='keyword'>if</span> (node-&gt;parent == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="611"><td class="num" id="LN611">611</td><td class="line"> gtk_tree_path_free (path);</td></tr>
+<tr class="codeline" data-linenumber="612"><td class="num" id="LN612">612</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="613"><td class="num" id="LN613">613</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="614"><td class="num" id="LN614">614</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="615"><td class="num" id="LN615">615</td><td class="line"> num = 0;</td></tr>
+<tr class="codeline" data-linenumber="616"><td class="num" id="LN616">616</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="617"><td class="num" id="LN617">617</td><td class="line"> <span class='keyword'>for</span> (item = <span class='macro'>FILE_BROWSER_NODE_DIR (node-&gt;parent)<span class='macro_popup'>((FileBrowserNodeDir *)(node-&gt;parent))</span></span>-&gt;children; item; item = item-&gt;next) {</td></tr>
+<tr class="codeline" data-linenumber="618"><td class="num" id="LN618">618</td><td class="line"> FileBrowserNode *check;</td></tr>
+<tr class="codeline" data-linenumber="619"><td class="num" id="LN619">619</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="620"><td class="num" id="LN620">620</td><td class="line"> check = (FileBrowserNode *) (item-&gt;data);</td></tr>
+<tr class="codeline" data-linenumber="621"><td class="num" id="LN621">621</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="622"><td class="num" id="LN622">622</td><td class="line"> <span class='keyword'>if</span> (model_node_visibility (model, check) &amp;&amp; (check == node || check-&gt;inserted)) {</td></tr>
+<tr class="codeline" data-linenumber="623"><td class="num" id="LN623">623</td><td class="line"> <span class='keyword'>if</span> (check == node) {</td></tr>
+<tr class="codeline" data-linenumber="624"><td class="num" id="LN624">624</td><td class="line"> gtk_tree_path_prepend_index (path,</td></tr>
+<tr class="codeline" data-linenumber="625"><td class="num" id="LN625">625</td><td class="line"> num);</td></tr>
+<tr class="codeline" data-linenumber="626"><td class="num" id="LN626">626</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="627"><td class="num" id="LN627">627</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="628"><td class="num" id="LN628">628</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="629"><td class="num" id="LN629">629</td><td class="line"> ++num;</td></tr>
+<tr class="codeline" data-linenumber="630"><td class="num" id="LN630">630</td><td class="line"> } <span class='keyword'>else</span> <span class='keyword'>if</span> (check == node) {</td></tr>
+<tr class="codeline" data-linenumber="631"><td class="num" id="LN631">631</td><td class="line"> <span class='keyword'>if</span> (<span class='macro'>NODE_IS_DUMMY (node)<span class='macro_popup'>(((node)-&gt;flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_DUMMY<br>))</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="632"><td class="num" id="LN632">632</td><td class="line"> g_warning (<span class='string_literal'>"Dummy not visible???"</span>);</td></tr>
+<tr class="codeline" data-linenumber="633"><td class="num" id="LN633">633</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="634"><td class="num" id="LN634">634</td><td class="line"> gtk_tree_path_free (path);</td></tr>
+<tr class="codeline" data-linenumber="635"><td class="num" id="LN635">635</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="636"><td class="num" id="LN636">636</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="637"><td class="num" id="LN637">637</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="638"><td class="num" id="LN638">638</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="639"><td class="num" id="LN639">639</td><td class="line"> node = node-&gt;parent;</td></tr>
+<tr class="codeline" data-linenumber="640"><td class="num" id="LN640">640</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="641"><td class="num" id="LN641">641</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="642"><td class="num" id="LN642">642</td><td class="line"> <span class='keyword'>return</span> path;</td></tr>
+<tr class="codeline" data-linenumber="643"><td class="num" id="LN643">643</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="644"><td class="num" id="LN644">644</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="645"><td class="num" id="LN645">645</td><td class="line"><span class='keyword'>static</span> GtkTreePath *</td></tr>
+<tr class="codeline" data-linenumber="646"><td class="num" id="LN646">646</td><td class="line">pluma_file_browser_store_get_path (GtkTreeModel * tree_model,</td></tr>
+<tr class="codeline" data-linenumber="647"><td class="num" id="LN647">647</td><td class="line"> GtkTreeIter * iter)</td></tr>
+<tr class="codeline" data-linenumber="648"><td class="num" id="LN648">648</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="649"><td class="num" id="LN649">649</td><td class="line"> <span class='macro'>g_return_val_if_fail (PLUMA_IS_FILE_BROWSER_STORE (tree_model), NULL)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_104<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((tree_model)); GType __t = ((pluma_file_browser_store_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_104 = 1; else _g_boolean_var_104 =<br> 0; _g_boolean_var_104; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "PLUMA_IS_FILE_BROWSER_STORE (tree_model)"<br>); return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="650"><td class="num" id="LN650">650</td><td class="line"> <span class='macro'>g_return_val_if_fail (iter != NULL, NULL)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_105<br>; if (iter != ((void*)0)) _g_boolean_var_105 = 1; else _g_boolean_var_105<br> = 0; _g_boolean_var_105; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "iter != NULL"); return<br> (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="651"><td class="num" id="LN651">651</td><td class="line"> <span class='macro'>g_return_val_if_fail (iter-&gt;user_data != NULL, NULL)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_106<br>; if (iter-&gt;user_data != ((void*)0)) _g_boolean_var_106 = 1<br>; else _g_boolean_var_106 = 0; _g_boolean_var_106; }), 1))) {<br> } else { g_return_if_fail_warning (((gchar*) 0), ((const char<br>*) (__func__)), "iter-&gt;user_data != NULL"); return (((void<br>*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="652"><td class="num" id="LN652">652</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="653"><td class="num" id="LN653">653</td><td class="line"> <span class='keyword'>return</span> pluma_file_browser_store_get_path_real (<span class='macro'>PLUMA_FILE_BROWSER_STORE (tree_model)<span class='macro_popup'>((((PlumaFileBrowserStore*) (void *) ((tree_model)))))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="654"><td class="num" id="LN654">654</td><td class="line"> (FileBrowserNode *) (iter-&gt;user_data));</td></tr>
+<tr class="codeline" data-linenumber="655"><td class="num" id="LN655">655</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="656"><td class="num" id="LN656">656</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="657"><td class="num" id="LN657">657</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="658"><td class="num" id="LN658">658</td><td class="line">pluma_file_browser_store_get_value (GtkTreeModel * tree_model,</td></tr>
+<tr class="codeline" data-linenumber="659"><td class="num" id="LN659">659</td><td class="line"> GtkTreeIter * iter,</td></tr>
+<tr class="codeline" data-linenumber="660"><td class="num" id="LN660">660</td><td class="line"> gint column,</td></tr>
+<tr class="codeline" data-linenumber="661"><td class="num" id="LN661">661</td><td class="line"> GValue * value)</td></tr>
+<tr class="codeline" data-linenumber="662"><td class="num" id="LN662">662</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="663"><td class="num" id="LN663">663</td><td class="line"> FileBrowserNode *node;</td></tr>
+<tr class="codeline" data-linenumber="664"><td class="num" id="LN664">664</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="665"><td class="num" id="LN665">665</td><td class="line"> <span class='macro'>g_return_if_fail (PLUMA_IS_FILE_BROWSER_STORE (tree_model))<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_107<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((tree_model)); GType __t = ((pluma_file_browser_store_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_107 = 1; else _g_boolean_var_107 =<br> 0; _g_boolean_var_107; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "PLUMA_IS_FILE_BROWSER_STORE (tree_model)"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="666"><td class="num" id="LN666">666</td><td class="line"> <span class='macro'>g_return_if_fail (iter != NULL)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_108<br>; if (iter != ((void*)0)) _g_boolean_var_108 = 1; else _g_boolean_var_108<br> = 0; _g_boolean_var_108; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "iter != NULL"); return<br>; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="667"><td class="num" id="LN667">667</td><td class="line"> <span class='macro'>g_return_if_fail (iter-&gt;user_data != NULL)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_109<br>; if (iter-&gt;user_data != ((void*)0)) _g_boolean_var_109 = 1<br>; else _g_boolean_var_109 = 0; _g_boolean_var_109; }), 1))) {<br> } else { g_return_if_fail_warning (((gchar*) 0), ((const char<br>*) (__func__)), "iter-&gt;user_data != NULL"); return; } } while<br> (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="668"><td class="num" id="LN668">668</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="669"><td class="num" id="LN669">669</td><td class="line"> node = (FileBrowserNode *) (iter-&gt;user_data);</td></tr>
+<tr class="codeline" data-linenumber="670"><td class="num" id="LN670">670</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="671"><td class="num" id="LN671">671</td><td class="line"> g_value_init (value, <span class='macro'>PLUMA_FILE_BROWSER_STORE (tree_model)<span class='macro_popup'>((((PlumaFileBrowserStore*) (void *) ((tree_model)))))</span></span>-&gt;priv-&gt;column_types[column]);</td></tr>
+<tr class="codeline" data-linenumber="672"><td class="num" id="LN672">672</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="673"><td class="num" id="LN673">673</td><td class="line"> <span class='keyword'>switch</span> (column) {</td></tr>
+<tr class="codeline" data-linenumber="674"><td class="num" id="LN674">674</td><td class="line"> <span class='keyword'>case</span> PLUMA_FILE_BROWSER_STORE_COLUMN_URI:</td></tr>
+<tr class="codeline" data-linenumber="675"><td class="num" id="LN675">675</td><td class="line"> set_gvalue_from_node (value, node);</td></tr>
+<tr class="codeline" data-linenumber="676"><td class="num" id="LN676">676</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="677"><td class="num" id="LN677">677</td><td class="line"> <span class='keyword'>case</span> PLUMA_FILE_BROWSER_STORE_COLUMN_NAME:</td></tr>
+<tr class="codeline" data-linenumber="678"><td class="num" id="LN678">678</td><td class="line"> g_value_set_string (value, node-&gt;name);</td></tr>
+<tr class="codeline" data-linenumber="679"><td class="num" id="LN679">679</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="680"><td class="num" id="LN680">680</td><td class="line"> <span class='keyword'>case</span> PLUMA_FILE_BROWSER_STORE_COLUMN_FLAGS:</td></tr>
+<tr class="codeline" data-linenumber="681"><td class="num" id="LN681">681</td><td class="line"> g_value_set_uint (value, node-&gt;flags);</td></tr>
+<tr class="codeline" data-linenumber="682"><td class="num" id="LN682">682</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="683"><td class="num" id="LN683">683</td><td class="line"> <span class='keyword'>case</span> PLUMA_FILE_BROWSER_STORE_COLUMN_ICON:</td></tr>
+<tr class="codeline" data-linenumber="684"><td class="num" id="LN684">684</td><td class="line"> g_value_set_object (value, node-&gt;icon);</td></tr>
+<tr class="codeline" data-linenumber="685"><td class="num" id="LN685">685</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="686"><td class="num" id="LN686">686</td><td class="line"> <span class='keyword'>case</span> PLUMA_FILE_BROWSER_STORE_COLUMN_EMBLEM:</td></tr>
+<tr class="codeline" data-linenumber="687"><td class="num" id="LN687">687</td><td class="line"> g_value_set_object (value, node-&gt;emblem);</td></tr>
+<tr class="codeline" data-linenumber="688"><td class="num" id="LN688">688</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="689"><td class="num" id="LN689">689</td><td class="line"> <span class='keyword'>default</span>:</td></tr>
+<tr class="codeline" data-linenumber="690"><td class="num" id="LN690">690</td><td class="line"> <span class='macro'>g_return_if_reached ()<span class='macro_popup'>do { g_log (((gchar*) 0), G_LOG_LEVEL_CRITICAL, "file %s: line %d (%s): should not be reached"<br>, "pluma-file-browser-store.c", 690, ((const char*) (__func__<br>))); return; } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="691"><td class="num" id="LN691">691</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="692"><td class="num" id="LN692">692</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="693"><td class="num" id="LN693">693</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="694"><td class="num" id="LN694">694</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="695"><td class="num" id="LN695">695</td><td class="line">pluma_file_browser_store_iter_next (GtkTreeModel * tree_model,</td></tr>
+<tr class="codeline" data-linenumber="696"><td class="num" id="LN696">696</td><td class="line"> GtkTreeIter * iter)</td></tr>
+<tr class="codeline" data-linenumber="697"><td class="num" id="LN697">697</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="698"><td class="num" id="LN698">698</td><td class="line"> PlumaFileBrowserStore * model;</td></tr>
+<tr class="codeline" data-linenumber="699"><td class="num" id="LN699">699</td><td class="line"> FileBrowserNode * node;</td></tr>
+<tr class="codeline" data-linenumber="700"><td class="num" id="LN700">700</td><td class="line"> GSList * item;</td></tr>
+<tr class="codeline" data-linenumber="701"><td class="num" id="LN701">701</td><td class="line"> GSList * first;</td></tr>
+<tr class="codeline" data-linenumber="702"><td class="num" id="LN702">702</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="703"><td class="num" id="LN703">703</td><td class="line"> <span class='macro'>g_return_val_if_fail (PLUMA_IS_FILE_BROWSER_STORE (tree_model),<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_110<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((tree_model)); GType __t = ((pluma_file_browser_store_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_110 = 1; else _g_boolean_var_110 =<br> 0; _g_boolean_var_110; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "PLUMA_IS_FILE_BROWSER_STORE (tree_model)"<br>); return ((0)); } } while (0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="704"><td class="num" id="LN704">704</td><td class="line"> <span class='macro'>FALSE)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_110<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((tree_model)); GType __t = ((pluma_file_browser_store_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_110 = 1; else _g_boolean_var_110 =<br> 0; _g_boolean_var_110; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "PLUMA_IS_FILE_BROWSER_STORE (tree_model)"<br>); return ((0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="705"><td class="num" id="LN705">705</td><td class="line"> <span class='macro'>g_return_val_if_fail (iter != NULL, FALSE)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_111<br>; if (iter != ((void*)0)) _g_boolean_var_111 = 1; else _g_boolean_var_111<br> = 0; _g_boolean_var_111; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "iter != NULL"); return<br> ((0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="706"><td class="num" id="LN706">706</td><td class="line"> <span class='macro'>g_return_val_if_fail (iter-&gt;user_data != NULL, FALSE)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_112<br>; if (iter-&gt;user_data != ((void*)0)) _g_boolean_var_112 = 1<br>; else _g_boolean_var_112 = 0; _g_boolean_var_112; }), 1))) {<br> } else { g_return_if_fail_warning (((gchar*) 0), ((const char<br>*) (__func__)), "iter-&gt;user_data != NULL"); return ((0)); }<br> } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="707"><td class="num" id="LN707">707</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="708"><td class="num" id="LN708">708</td><td class="line"> model = <span class='macro'>PLUMA_FILE_BROWSER_STORE (tree_model)<span class='macro_popup'>((((PlumaFileBrowserStore*) (void *) ((tree_model)))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="709"><td class="num" id="LN709">709</td><td class="line"> node = (FileBrowserNode *) (iter-&gt;user_data);</td></tr>
+<tr class="codeline" data-linenumber="710"><td class="num" id="LN710">710</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="711"><td class="num" id="LN711">711</td><td class="line"> <span class='keyword'>if</span> (node-&gt;parent == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="712"><td class="num" id="LN712">712</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="713"><td class="num" id="LN713">713</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="714"><td class="num" id="LN714">714</td><td class="line"> first = <span class='macro'>g_slist_next (g_slist_find (FILE_BROWSER_NODE_DIR (node-&gt;parent)-&gt;children, node))<span class='macro_popup'>((g_slist_find (((FileBrowserNodeDir *)(node-&gt;parent))-&gt;<br>children, node)) ? (((GSList *)(g_slist_find (((FileBrowserNodeDir<br> *)(node-&gt;parent))-&gt;children, node)))-&gt;next) : ((void<br>*)0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="715"><td class="num" id="LN715">715</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="716"><td class="num" id="LN716">716</td><td class="line"> <span class='keyword'>for</span> (item = first; item; item = item-&gt;next) {</td></tr>
+<tr class="codeline" data-linenumber="717"><td class="num" id="LN717">717</td><td class="line"> <span class='keyword'>if</span> (model_node_inserted (model, (FileBrowserNode *) (item-&gt;data))) {</td></tr>
+<tr class="codeline" data-linenumber="718"><td class="num" id="LN718">718</td><td class="line"> iter-&gt;user_data = item-&gt;data;</td></tr>
+<tr class="codeline" data-linenumber="719"><td class="num" id="LN719">719</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="720"><td class="num" id="LN720">720</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="721"><td class="num" id="LN721">721</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="722"><td class="num" id="LN722">722</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="723"><td class="num" id="LN723">723</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="724"><td class="num" id="LN724">724</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="725"><td class="num" id="LN725">725</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="726"><td class="num" id="LN726">726</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="727"><td class="num" id="LN727">727</td><td class="line">pluma_file_browser_store_iter_children (GtkTreeModel * tree_model,</td></tr>
+<tr class="codeline" data-linenumber="728"><td class="num" id="LN728">728</td><td class="line"> GtkTreeIter * iter,</td></tr>
+<tr class="codeline" data-linenumber="729"><td class="num" id="LN729">729</td><td class="line"> GtkTreeIter * parent)</td></tr>
+<tr class="codeline" data-linenumber="730"><td class="num" id="LN730">730</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="731"><td class="num" id="LN731">731</td><td class="line"> FileBrowserNode * node;</td></tr>
+<tr class="codeline" data-linenumber="732"><td class="num" id="LN732">732</td><td class="line"> PlumaFileBrowserStore * model;</td></tr>
+<tr class="codeline" data-linenumber="733"><td class="num" id="LN733">733</td><td class="line"> GSList * item;</td></tr>
+<tr class="codeline" data-linenumber="734"><td class="num" id="LN734">734</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="735"><td class="num" id="LN735">735</td><td class="line"> <span class='macro'>g_return_val_if_fail (PLUMA_IS_FILE_BROWSER_STORE (tree_model),<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_113<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((tree_model)); GType __t = ((pluma_file_browser_store_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_113 = 1; else _g_boolean_var_113 =<br> 0; _g_boolean_var_113; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "PLUMA_IS_FILE_BROWSER_STORE (tree_model)"<br>); return ((0)); } } while (0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="736"><td class="num" id="LN736">736</td><td class="line"> <span class='macro'>FALSE)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_113<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((tree_model)); GType __t = ((pluma_file_browser_store_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_113 = 1; else _g_boolean_var_113 =<br> 0; _g_boolean_var_113; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "PLUMA_IS_FILE_BROWSER_STORE (tree_model)"<br>); return ((0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="737"><td class="num" id="LN737">737</td><td class="line"> <span class='macro'>g_return_val_if_fail (parent == NULL<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_114<br>; if (parent == ((void*)0) || parent-&gt;user_data != ((void*<br>)0)) _g_boolean_var_114 = 1; else _g_boolean_var_114 = 0; _g_boolean_var_114<br>; }), 1))) { } else { g_return_if_fail_warning (((gchar*) 0),<br> ((const char*) (__func__)), "parent == NULL || parent-&gt;user_data != NULL"<br>); return ((0)); } } while (0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="738"><td class="num" id="LN738">738</td><td class="line"> <span class='macro'>|| parent-&gt;user_data != NULL, FALSE)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_114<br>; if (parent == ((void*)0) || parent-&gt;user_data != ((void*<br>)0)) _g_boolean_var_114 = 1; else _g_boolean_var_114 = 0; _g_boolean_var_114<br>; }), 1))) { } else { g_return_if_fail_warning (((gchar*) 0),<br> ((const char*) (__func__)), "parent == NULL || parent-&gt;user_data != NULL"<br>); return ((0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="739"><td class="num" id="LN739">739</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="740"><td class="num" id="LN740">740</td><td class="line"> model = <span class='macro'>PLUMA_FILE_BROWSER_STORE (tree_model)<span class='macro_popup'>((((PlumaFileBrowserStore*) (void *) ((tree_model)))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="741"><td class="num" id="LN741">741</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="742"><td class="num" id="LN742">742</td><td class="line"> <span class='keyword'>if</span> (parent == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="743"><td class="num" id="LN743">743</td><td class="line"> node = model-&gt;priv-&gt;virtual_root;</td></tr>
+<tr class="codeline" data-linenumber="744"><td class="num" id="LN744">744</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="745"><td class="num" id="LN745">745</td><td class="line"> node = (FileBrowserNode *) (parent-&gt;user_data);</td></tr>
+<tr class="codeline" data-linenumber="746"><td class="num" id="LN746">746</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="747"><td class="num" id="LN747">747</td><td class="line"> <span class='keyword'>if</span> (node == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="748"><td class="num" id="LN748">748</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="749"><td class="num" id="LN749">749</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="750"><td class="num" id="LN750">750</td><td class="line"> <span class='keyword'>if</span> (!<span class='macro'>NODE_IS_DIR (node)<span class='macro_popup'>(((node)-&gt;flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_DIRECTORY<br>))</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="751"><td class="num" id="LN751">751</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="752"><td class="num" id="LN752">752</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="753"><td class="num" id="LN753">753</td><td class="line"> <span class='keyword'>for</span> (item = <span class='macro'>FILE_BROWSER_NODE_DIR (node)<span class='macro_popup'>((FileBrowserNodeDir *)(node))</span></span>-&gt;children; item; item = item-&gt;next) {</td></tr>
+<tr class="codeline" data-linenumber="754"><td class="num" id="LN754">754</td><td class="line"> <span class='keyword'>if</span> (model_node_inserted (model, (FileBrowserNode *) (item-&gt;data))) {</td></tr>
+<tr class="codeline" data-linenumber="755"><td class="num" id="LN755">755</td><td class="line"> iter-&gt;user_data = item-&gt;data;</td></tr>
+<tr class="codeline" data-linenumber="756"><td class="num" id="LN756">756</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="757"><td class="num" id="LN757">757</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="758"><td class="num" id="LN758">758</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="759"><td class="num" id="LN759">759</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="760"><td class="num" id="LN760">760</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="761"><td class="num" id="LN761">761</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="762"><td class="num" id="LN762">762</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="763"><td class="num" id="LN763">763</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="764"><td class="num" id="LN764">764</td><td class="line">filter_tree_model_iter_has_child_real (PlumaFileBrowserStore * model,</td></tr>
+<tr class="codeline" data-linenumber="765"><td class="num" id="LN765">765</td><td class="line"> FileBrowserNode * node)</td></tr>
+<tr class="codeline" data-linenumber="766"><td class="num" id="LN766">766</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="767"><td class="num" id="LN767">767</td><td class="line"> GSList *item;</td></tr>
+<tr class="codeline" data-linenumber="768"><td class="num" id="LN768">768</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="769"><td class="num" id="LN769">769</td><td class="line"> <span class='keyword'>if</span> (!<span class='macro'>NODE_IS_DIR (node)<span class='macro_popup'>(((node)-&gt;flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_DIRECTORY<br>))</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="770"><td class="num" id="LN770">770</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="771"><td class="num" id="LN771">771</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="772"><td class="num" id="LN772">772</td><td class="line"> <span class='keyword'>for</span> (item = <span class='macro'>FILE_BROWSER_NODE_DIR (node)<span class='macro_popup'>((FileBrowserNodeDir *)(node))</span></span>-&gt;children; item; item = item-&gt;next) {</td></tr>
+<tr class="codeline" data-linenumber="773"><td class="num" id="LN773">773</td><td class="line"> <span class='keyword'>if</span> (model_node_inserted (model, (FileBrowserNode *) (item-&gt;data)))</td></tr>
+<tr class="codeline" data-linenumber="774"><td class="num" id="LN774">774</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="775"><td class="num" id="LN775">775</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="776"><td class="num" id="LN776">776</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="777"><td class="num" id="LN777">777</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="778"><td class="num" id="LN778">778</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="779"><td class="num" id="LN779">779</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="780"><td class="num" id="LN780">780</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="781"><td class="num" id="LN781">781</td><td class="line">pluma_file_browser_store_iter_has_child (GtkTreeModel * tree_model,</td></tr>
+<tr class="codeline" data-linenumber="782"><td class="num" id="LN782">782</td><td class="line"> GtkTreeIter * iter)</td></tr>
+<tr class="codeline" data-linenumber="783"><td class="num" id="LN783">783</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="784"><td class="num" id="LN784">784</td><td class="line"> FileBrowserNode *node;</td></tr>
+<tr class="codeline" data-linenumber="785"><td class="num" id="LN785">785</td><td class="line"> PlumaFileBrowserStore *model;</td></tr>
+<tr class="codeline" data-linenumber="786"><td class="num" id="LN786">786</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="787"><td class="num" id="LN787">787</td><td class="line"> <span class='macro'>g_return_val_if_fail (PLUMA_IS_FILE_BROWSER_STORE (tree_model),<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_115<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((tree_model)); GType __t = ((pluma_file_browser_store_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_115 = 1; else _g_boolean_var_115 =<br> 0; _g_boolean_var_115; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "PLUMA_IS_FILE_BROWSER_STORE (tree_model)"<br>); return ((0)); } } while (0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="788"><td class="num" id="LN788">788</td><td class="line"> <span class='macro'>FALSE)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_115<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((tree_model)); GType __t = ((pluma_file_browser_store_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_115 = 1; else _g_boolean_var_115 =<br> 0; _g_boolean_var_115; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "PLUMA_IS_FILE_BROWSER_STORE (tree_model)"<br>); return ((0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="789"><td class="num" id="LN789">789</td><td class="line"> <span class='macro'>g_return_val_if_fail (iter == NULL<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_116<br>; if (iter == ((void*)0) || iter-&gt;user_data != ((void*)0))<br> _g_boolean_var_116 = 1; else _g_boolean_var_116 = 0; _g_boolean_var_116<br>; }), 1))) { } else { g_return_if_fail_warning (((gchar*) 0),<br> ((const char*) (__func__)), "iter == NULL || iter-&gt;user_data != NULL"<br>); return ((0)); } } while (0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="790"><td class="num" id="LN790">790</td><td class="line"> <span class='macro'>|| iter-&gt;user_data != NULL, FALSE)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_116<br>; if (iter == ((void*)0) || iter-&gt;user_data != ((void*)0))<br> _g_boolean_var_116 = 1; else _g_boolean_var_116 = 0; _g_boolean_var_116<br>; }), 1))) { } else { g_return_if_fail_warning (((gchar*) 0),<br> ((const char*) (__func__)), "iter == NULL || iter-&gt;user_data != NULL"<br>); return ((0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="791"><td class="num" id="LN791">791</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="792"><td class="num" id="LN792">792</td><td class="line"> model = <span class='macro'>PLUMA_FILE_BROWSER_STORE (tree_model)<span class='macro_popup'>((((PlumaFileBrowserStore*) (void *) ((tree_model)))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="793"><td class="num" id="LN793">793</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="794"><td class="num" id="LN794">794</td><td class="line"> <span class='keyword'>if</span> (iter == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="795"><td class="num" id="LN795">795</td><td class="line"> node = model-&gt;priv-&gt;virtual_root;</td></tr>
+<tr class="codeline" data-linenumber="796"><td class="num" id="LN796">796</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="797"><td class="num" id="LN797">797</td><td class="line"> node = (FileBrowserNode *) (iter-&gt;user_data);</td></tr>
+<tr class="codeline" data-linenumber="798"><td class="num" id="LN798">798</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="799"><td class="num" id="LN799">799</td><td class="line"> <span class='keyword'>return</span> filter_tree_model_iter_has_child_real (model, node);</td></tr>
+<tr class="codeline" data-linenumber="800"><td class="num" id="LN800">800</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="801"><td class="num" id="LN801">801</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="802"><td class="num" id="LN802">802</td><td class="line"><span class='keyword'>static</span> gint</td></tr>
+<tr class="codeline" data-linenumber="803"><td class="num" id="LN803">803</td><td class="line">pluma_file_browser_store_iter_n_children (GtkTreeModel * tree_model,</td></tr>
+<tr class="codeline" data-linenumber="804"><td class="num" id="LN804">804</td><td class="line"> GtkTreeIter * iter)</td></tr>
+<tr class="codeline" data-linenumber="805"><td class="num" id="LN805">805</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="806"><td class="num" id="LN806">806</td><td class="line"> FileBrowserNode *node;</td></tr>
+<tr class="codeline" data-linenumber="807"><td class="num" id="LN807">807</td><td class="line"> PlumaFileBrowserStore *model;</td></tr>
+<tr class="codeline" data-linenumber="808"><td class="num" id="LN808">808</td><td class="line"> GSList *item;</td></tr>
+<tr class="codeline" data-linenumber="809"><td class="num" id="LN809">809</td><td class="line"> gint num = 0;</td></tr>
+<tr class="codeline" data-linenumber="810"><td class="num" id="LN810">810</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="811"><td class="num" id="LN811">811</td><td class="line"> <span class='macro'>g_return_val_if_fail (PLUMA_IS_FILE_BROWSER_STORE (tree_model),<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_117<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((tree_model)); GType __t = ((pluma_file_browser_store_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_117 = 1; else _g_boolean_var_117 =<br> 0; _g_boolean_var_117; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "PLUMA_IS_FILE_BROWSER_STORE (tree_model)"<br>); return ((0)); } } while (0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="812"><td class="num" id="LN812">812</td><td class="line"> <span class='macro'>FALSE)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_117<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((tree_model)); GType __t = ((pluma_file_browser_store_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_117 = 1; else _g_boolean_var_117 =<br> 0; _g_boolean_var_117; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "PLUMA_IS_FILE_BROWSER_STORE (tree_model)"<br>); return ((0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="813"><td class="num" id="LN813">813</td><td class="line"> <span class='macro'>g_return_val_if_fail (iter == NULL<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_118<br>; if (iter == ((void*)0) || iter-&gt;user_data != ((void*)0))<br> _g_boolean_var_118 = 1; else _g_boolean_var_118 = 0; _g_boolean_var_118<br>; }), 1))) { } else { g_return_if_fail_warning (((gchar*) 0),<br> ((const char*) (__func__)), "iter == NULL || iter-&gt;user_data != NULL"<br>); return ((0)); } } while (0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="814"><td class="num" id="LN814">814</td><td class="line"> <span class='macro'>|| iter-&gt;user_data != NULL, FALSE)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_118<br>; if (iter == ((void*)0) || iter-&gt;user_data != ((void*)0))<br> _g_boolean_var_118 = 1; else _g_boolean_var_118 = 0; _g_boolean_var_118<br>; }), 1))) { } else { g_return_if_fail_warning (((gchar*) 0),<br> ((const char*) (__func__)), "iter == NULL || iter-&gt;user_data != NULL"<br>); return ((0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="815"><td class="num" id="LN815">815</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="816"><td class="num" id="LN816">816</td><td class="line"> model = <span class='macro'>PLUMA_FILE_BROWSER_STORE (tree_model)<span class='macro_popup'>((((PlumaFileBrowserStore*) (void *) ((tree_model)))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="817"><td class="num" id="LN817">817</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="818"><td class="num" id="LN818">818</td><td class="line"> <span class='keyword'>if</span> (iter == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="819"><td class="num" id="LN819">819</td><td class="line"> node = model-&gt;priv-&gt;virtual_root;</td></tr>
+<tr class="codeline" data-linenumber="820"><td class="num" id="LN820">820</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="821"><td class="num" id="LN821">821</td><td class="line"> node = (FileBrowserNode *) (iter-&gt;user_data);</td></tr>
+<tr class="codeline" data-linenumber="822"><td class="num" id="LN822">822</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="823"><td class="num" id="LN823">823</td><td class="line"> <span class='keyword'>if</span> (!<span class='macro'>NODE_IS_DIR (node)<span class='macro_popup'>(((node)-&gt;flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_DIRECTORY<br>))</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="824"><td class="num" id="LN824">824</td><td class="line"> <span class='keyword'>return</span> 0;</td></tr>
+<tr class="codeline" data-linenumber="825"><td class="num" id="LN825">825</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="826"><td class="num" id="LN826">826</td><td class="line"> <span class='keyword'>for</span> (item = <span class='macro'>FILE_BROWSER_NODE_DIR (node)<span class='macro_popup'>((FileBrowserNodeDir *)(node))</span></span>-&gt;children; item; item = item-&gt;next)</td></tr>
+<tr class="codeline" data-linenumber="827"><td class="num" id="LN827">827</td><td class="line"> <span class='keyword'>if</span> (model_node_inserted (model, (FileBrowserNode *) (item-&gt;data)))</td></tr>
+<tr class="codeline" data-linenumber="828"><td class="num" id="LN828">828</td><td class="line"> ++num;</td></tr>
+<tr class="codeline" data-linenumber="829"><td class="num" id="LN829">829</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="830"><td class="num" id="LN830">830</td><td class="line"> <span class='keyword'>return</span> num;</td></tr>
+<tr class="codeline" data-linenumber="831"><td class="num" id="LN831">831</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="832"><td class="num" id="LN832">832</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="833"><td class="num" id="LN833">833</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="834"><td class="num" id="LN834">834</td><td class="line">pluma_file_browser_store_iter_nth_child (GtkTreeModel * tree_model,</td></tr>
+<tr class="codeline" data-linenumber="835"><td class="num" id="LN835">835</td><td class="line"> GtkTreeIter * iter,</td></tr>
+<tr class="codeline" data-linenumber="836"><td class="num" id="LN836">836</td><td class="line"> GtkTreeIter * parent, gint n)</td></tr>
+<tr class="codeline" data-linenumber="837"><td class="num" id="LN837">837</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="838"><td class="num" id="LN838">838</td><td class="line"> FileBrowserNode *node;</td></tr>
+<tr class="codeline" data-linenumber="839"><td class="num" id="LN839">839</td><td class="line"> PlumaFileBrowserStore *model;</td></tr>
+<tr class="codeline" data-linenumber="840"><td class="num" id="LN840">840</td><td class="line"> GSList *item;</td></tr>
+<tr class="codeline" data-linenumber="841"><td class="num" id="LN841">841</td><td class="line"> gint num = 0;</td></tr>
+<tr class="codeline" data-linenumber="842"><td class="num" id="LN842">842</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="843"><td class="num" id="LN843">843</td><td class="line"> <span class='macro'>g_return_val_if_fail (PLUMA_IS_FILE_BROWSER_STORE (tree_model),<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_119<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((tree_model)); GType __t = ((pluma_file_browser_store_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_119 = 1; else _g_boolean_var_119 =<br> 0; _g_boolean_var_119; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "PLUMA_IS_FILE_BROWSER_STORE (tree_model)"<br>); return ((0)); } } while (0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="844"><td class="num" id="LN844">844</td><td class="line"> <span class='macro'>FALSE)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_119<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((tree_model)); GType __t = ((pluma_file_browser_store_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_119 = 1; else _g_boolean_var_119 =<br> 0; _g_boolean_var_119; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "PLUMA_IS_FILE_BROWSER_STORE (tree_model)"<br>); return ((0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="845"><td class="num" id="LN845">845</td><td class="line"> <span class='macro'>g_return_val_if_fail (parent == NULL<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_120<br>; if (parent == ((void*)0) || parent-&gt;user_data != ((void*<br>)0)) _g_boolean_var_120 = 1; else _g_boolean_var_120 = 0; _g_boolean_var_120<br>; }), 1))) { } else { g_return_if_fail_warning (((gchar*) 0),<br> ((const char*) (__func__)), "parent == NULL || parent-&gt;user_data != NULL"<br>); return ((0)); } } while (0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="846"><td class="num" id="LN846">846</td><td class="line"> <span class='macro'>|| parent-&gt;user_data != NULL, FALSE)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_120<br>; if (parent == ((void*)0) || parent-&gt;user_data != ((void*<br>)0)) _g_boolean_var_120 = 1; else _g_boolean_var_120 = 0; _g_boolean_var_120<br>; }), 1))) { } else { g_return_if_fail_warning (((gchar*) 0),<br> ((const char*) (__func__)), "parent == NULL || parent-&gt;user_data != NULL"<br>); return ((0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="847"><td class="num" id="LN847">847</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="848"><td class="num" id="LN848">848</td><td class="line"> model = <span class='macro'>PLUMA_FILE_BROWSER_STORE (tree_model)<span class='macro_popup'>((((PlumaFileBrowserStore*) (void *) ((tree_model)))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="849"><td class="num" id="LN849">849</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="850"><td class="num" id="LN850">850</td><td class="line"> <span class='keyword'>if</span> (parent == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="851"><td class="num" id="LN851">851</td><td class="line"> node = model-&gt;priv-&gt;virtual_root;</td></tr>
+<tr class="codeline" data-linenumber="852"><td class="num" id="LN852">852</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="853"><td class="num" id="LN853">853</td><td class="line"> node = (FileBrowserNode *) (parent-&gt;user_data);</td></tr>
+<tr class="codeline" data-linenumber="854"><td class="num" id="LN854">854</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="855"><td class="num" id="LN855">855</td><td class="line"> <span class='keyword'>if</span> (!<span class='macro'>NODE_IS_DIR (node)<span class='macro_popup'>(((node)-&gt;flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_DIRECTORY<br>))</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="856"><td class="num" id="LN856">856</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="857"><td class="num" id="LN857">857</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="858"><td class="num" id="LN858">858</td><td class="line"> <span class='keyword'>for</span> (item = <span class='macro'>FILE_BROWSER_NODE_DIR (node)<span class='macro_popup'>((FileBrowserNodeDir *)(node))</span></span>-&gt;children; item;</td></tr>
+<tr class="codeline" data-linenumber="859"><td class="num" id="LN859">859</td><td class="line"> item = item-&gt;next) {</td></tr>
+<tr class="codeline" data-linenumber="860"><td class="num" id="LN860">860</td><td class="line"> <span class='keyword'>if</span> (model_node_inserted (model, (FileBrowserNode *) (item-&gt;data))) {</td></tr>
+<tr class="codeline" data-linenumber="861"><td class="num" id="LN861">861</td><td class="line"> <span class='keyword'>if</span> (num == n) {</td></tr>
+<tr class="codeline" data-linenumber="862"><td class="num" id="LN862">862</td><td class="line"> iter-&gt;user_data = item-&gt;data;</td></tr>
+<tr class="codeline" data-linenumber="863"><td class="num" id="LN863">863</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="864"><td class="num" id="LN864">864</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="865"><td class="num" id="LN865">865</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="866"><td class="num" id="LN866">866</td><td class="line"> ++num;</td></tr>
+<tr class="codeline" data-linenumber="867"><td class="num" id="LN867">867</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="868"><td class="num" id="LN868">868</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="869"><td class="num" id="LN869">869</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="870"><td class="num" id="LN870">870</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="871"><td class="num" id="LN871">871</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="872"><td class="num" id="LN872">872</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="873"><td class="num" id="LN873">873</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="874"><td class="num" id="LN874">874</td><td class="line">pluma_file_browser_store_iter_parent (GtkTreeModel * tree_model,</td></tr>
+<tr class="codeline" data-linenumber="875"><td class="num" id="LN875">875</td><td class="line"> GtkTreeIter * iter,</td></tr>
+<tr class="codeline" data-linenumber="876"><td class="num" id="LN876">876</td><td class="line"> GtkTreeIter * child)</td></tr>
+<tr class="codeline" data-linenumber="877"><td class="num" id="LN877">877</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="878"><td class="num" id="LN878">878</td><td class="line"> FileBrowserNode *node;</td></tr>
+<tr class="codeline" data-linenumber="879"><td class="num" id="LN879">879</td><td class="line"> PlumaFileBrowserStore *model;</td></tr>
+<tr class="codeline" data-linenumber="880"><td class="num" id="LN880">880</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="881"><td class="num" id="LN881">881</td><td class="line"> <span class='macro'>g_return_val_if_fail (PLUMA_IS_FILE_BROWSER_STORE (tree_model), FALSE)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_121<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((tree_model)); GType __t = ((pluma_file_browser_store_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_121 = 1; else _g_boolean_var_121 =<br> 0; _g_boolean_var_121; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "PLUMA_IS_FILE_BROWSER_STORE (tree_model)"<br>); return ((0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="882"><td class="num" id="LN882">882</td><td class="line"> <span class='macro'>g_return_val_if_fail (child != NULL, FALSE)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_122<br>; if (child != ((void*)0)) _g_boolean_var_122 = 1; else _g_boolean_var_122<br> = 0; _g_boolean_var_122; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "child != NULL");<br> return ((0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="883"><td class="num" id="LN883">883</td><td class="line"> <span class='macro'>g_return_val_if_fail (child-&gt;user_data != NULL, FALSE)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_123<br>; if (child-&gt;user_data != ((void*)0)) _g_boolean_var_123 =<br> 1; else _g_boolean_var_123 = 0; _g_boolean_var_123; }), 1)))<br> { } else { g_return_if_fail_warning (((gchar*) 0), ((const char<br>*) (__func__)), "child-&gt;user_data != NULL"); return ((0));<br> } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="884"><td class="num" id="LN884">884</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="885"><td class="num" id="LN885">885</td><td class="line"> node = (FileBrowserNode *) (child-&gt;user_data);</td></tr>
+<tr class="codeline" data-linenumber="886"><td class="num" id="LN886">886</td><td class="line"> model = <span class='macro'>PLUMA_FILE_BROWSER_STORE (tree_model)<span class='macro_popup'>((((PlumaFileBrowserStore*) (void *) ((tree_model)))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="887"><td class="num" id="LN887">887</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="888"><td class="num" id="LN888">888</td><td class="line"> <span class='keyword'>if</span> (!node_in_tree (model, node))</td></tr>
+<tr class="codeline" data-linenumber="889"><td class="num" id="LN889">889</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="890"><td class="num" id="LN890">890</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="891"><td class="num" id="LN891">891</td><td class="line"> <span class='keyword'>if</span> (node-&gt;parent == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="892"><td class="num" id="LN892">892</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="893"><td class="num" id="LN893">893</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="894"><td class="num" id="LN894">894</td><td class="line"> iter-&gt;user_data = node-&gt;parent;</td></tr>
+<tr class="codeline" data-linenumber="895"><td class="num" id="LN895">895</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="896"><td class="num" id="LN896">896</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="897"><td class="num" id="LN897">897</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="898"><td class="num" id="LN898">898</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="899"><td class="num" id="LN899">899</td><td class="line">pluma_file_browser_store_row_inserted (GtkTreeModel * tree_model,</td></tr>
+<tr class="codeline" data-linenumber="900"><td class="num" id="LN900">900</td><td class="line"> GtkTreePath * path,</td></tr>
+<tr class="codeline" data-linenumber="901"><td class="num" id="LN901">901</td><td class="line"> GtkTreeIter * iter)</td></tr>
+<tr class="codeline" data-linenumber="902"><td class="num" id="LN902">902</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="903"><td class="num" id="LN903">903</td><td class="line"> FileBrowserNode * node = (FileBrowserNode *)(iter-&gt;user_data);</td></tr>
+<tr class="codeline" data-linenumber="904"><td class="num" id="LN904">904</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="905"><td class="num" id="LN905">905</td><td class="line"> node-&gt;inserted = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="906"><td class="num" id="LN906">906</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="907"><td class="num" id="LN907">907</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="908"><td class="num" id="LN908">908</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="909"><td class="num" id="LN909">909</td><td class="line">pluma_file_browser_store_row_draggable (GtkTreeDragSource * drag_source,</td></tr>
+<tr class="codeline" data-linenumber="910"><td class="num" id="LN910">910</td><td class="line"> GtkTreePath * path)</td></tr>
+<tr class="codeline" data-linenumber="911"><td class="num" id="LN911">911</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="912"><td class="num" id="LN912">912</td><td class="line"> GtkTreeIter iter;</td></tr>
+<tr class="codeline" data-linenumber="913"><td class="num" id="LN913">913</td><td class="line"> PlumaFileBrowserStoreFlag flags;</td></tr>
+<tr class="codeline" data-linenumber="914"><td class="num" id="LN914">914</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="915"><td class="num" id="LN915">915</td><td class="line"> <span class='keyword'>if</span> (!gtk_tree_model_get_iter (<span class='macro'>GTK_TREE_MODEL (drag_source)<span class='macro_popup'>((((GtkTreeModel*) (void *) ((drag_source)))))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="916"><td class="num" id="LN916">916</td><td class="line"> &amp;iter, path))</td></tr>
+<tr class="codeline" data-linenumber="917"><td class="num" id="LN917">917</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="918"><td class="num" id="LN918">918</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="919"><td class="num" id="LN919">919</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="920"><td class="num" id="LN920">920</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="921"><td class="num" id="LN921">921</td><td class="line"> gtk_tree_model_get (<span class='macro'>GTK_TREE_MODEL (drag_source)<span class='macro_popup'>((((GtkTreeModel*) (void *) ((drag_source)))))</span></span>, &amp;iter,</td></tr>
+<tr class="codeline" data-linenumber="922"><td class="num" id="LN922">922</td><td class="line"> PLUMA_FILE_BROWSER_STORE_COLUMN_FLAGS, &amp;flags,</td></tr>
+<tr class="codeline" data-linenumber="923"><td class="num" id="LN923">923</td><td class="line"> -1);</td></tr>
+<tr class="codeline" data-linenumber="924"><td class="num" id="LN924">924</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="925"><td class="num" id="LN925">925</td><td class="line"> <span class='keyword'>return</span> !<span class='macro'>FILE_IS_DUMMY(flags)<span class='macro_popup'>(flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_DUMMY)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="926"><td class="num" id="LN926">926</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="927"><td class="num" id="LN927">927</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="928"><td class="num" id="LN928">928</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="929"><td class="num" id="LN929">929</td><td class="line">pluma_file_browser_store_drag_data_delete (GtkTreeDragSource * drag_source,</td></tr>
+<tr class="codeline" data-linenumber="930"><td class="num" id="LN930">930</td><td class="line"> GtkTreePath * path)</td></tr>
+<tr class="codeline" data-linenumber="931"><td class="num" id="LN931">931</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="932"><td class="num" id="LN932">932</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="933"><td class="num" id="LN933">933</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="934"><td class="num" id="LN934">934</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="935"><td class="num" id="LN935">935</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="936"><td class="num" id="LN936">936</td><td class="line">pluma_file_browser_store_drag_data_get (GtkTreeDragSource * drag_source,</td></tr>
+<tr class="codeline" data-linenumber="937"><td class="num" id="LN937">937</td><td class="line"> GtkTreePath * path,</td></tr>
+<tr class="codeline" data-linenumber="938"><td class="num" id="LN938">938</td><td class="line"> GtkSelectionData * selection_data)</td></tr>
+<tr class="codeline" data-linenumber="939"><td class="num" id="LN939">939</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="940"><td class="num" id="LN940">940</td><td class="line"> GtkTreeIter iter;</td></tr>
+<tr class="codeline" data-linenumber="941"><td class="num" id="LN941">941</td><td class="line"> gchar *uri;</td></tr>
+<tr class="codeline" data-linenumber="942"><td class="num" id="LN942">942</td><td class="line"> gchar *uris[2] = {0, };</td></tr>
+<tr class="codeline" data-linenumber="943"><td class="num" id="LN943">943</td><td class="line"> gboolean ret;</td></tr>
+<tr class="codeline" data-linenumber="944"><td class="num" id="LN944">944</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="945"><td class="num" id="LN945">945</td><td class="line"> <span class='keyword'>if</span> (!gtk_tree_model_get_iter (<span class='macro'>GTK_TREE_MODEL (drag_source)<span class='macro_popup'>((((GtkTreeModel*) (void *) ((drag_source)))))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="946"><td class="num" id="LN946">946</td><td class="line"> &amp;iter, path))</td></tr>
+<tr class="codeline" data-linenumber="947"><td class="num" id="LN947">947</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="948"><td class="num" id="LN948">948</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="949"><td class="num" id="LN949">949</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="950"><td class="num" id="LN950">950</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="951"><td class="num" id="LN951">951</td><td class="line"> gtk_tree_model_get (<span class='macro'>GTK_TREE_MODEL (drag_source)<span class='macro_popup'>((((GtkTreeModel*) (void *) ((drag_source)))))</span></span>, &amp;iter,</td></tr>
+<tr class="codeline" data-linenumber="952"><td class="num" id="LN952">952</td><td class="line"> PLUMA_FILE_BROWSER_STORE_COLUMN_URI, &amp;uri,</td></tr>
+<tr class="codeline" data-linenumber="953"><td class="num" id="LN953">953</td><td class="line"> -1);</td></tr>
+<tr class="codeline" data-linenumber="954"><td class="num" id="LN954">954</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="955"><td class="num" id="LN955">955</td><td class="line"> <span class='macro'>g_assert (uri)<span class='macro_popup'>do { if (__builtin_expect (__extension__ ({ int _g_boolean_var_124<br>; if (uri) _g_boolean_var_124 = 1; else _g_boolean_var_124 = 0<br>; _g_boolean_var_124; }), 1)) ; else g_assertion_message_expr<br> (((gchar*) 0), "pluma-file-browser-store.c", 955, ((const char<br>*) (__func__)), "uri"); } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="956"><td class="num" id="LN956">956</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="957"><td class="num" id="LN957">957</td><td class="line"> uris[0] = uri;</td></tr>
+<tr class="codeline" data-linenumber="958"><td class="num" id="LN958">958</td><td class="line"> ret = gtk_selection_data_set_uris (selection_data, uris);</td></tr>
+<tr class="codeline" data-linenumber="959"><td class="num" id="LN959">959</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="960"><td class="num" id="LN960">960</td><td class="line"> g_free (uri);</td></tr>
+<tr class="codeline" data-linenumber="961"><td class="num" id="LN961">961</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="962"><td class="num" id="LN962">962</td><td class="line"> <span class='keyword'>return</span> ret;</td></tr>
+<tr class="codeline" data-linenumber="963"><td class="num" id="LN963">963</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="964"><td class="num" id="LN964">964</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="965"><td class="num" id="LN965">965</td><td class="line"><span class='directive'>#define <span class='macro'>FILTER_HIDDEN(mode)<span class='macro_popup'>(mode &amp; PLUMA_FILE_BROWSER_STORE_FILTER_MODE_HIDE_HIDDEN)</span></span> (mode &amp; PLUMA_FILE_BROWSER_STORE_FILTER_MODE_HIDE_HIDDEN)</span></td></tr>
+<tr class="codeline" data-linenumber="966"><td class="num" id="LN966">966</td><td class="line"><span class='directive'>#define <span class='macro'>FILTER_BINARY(mode)<span class='macro_popup'>(mode &amp; PLUMA_FILE_BROWSER_STORE_FILTER_MODE_HIDE_BINARY)</span></span> (mode &amp; PLUMA_FILE_BROWSER_STORE_FILTER_MODE_HIDE_BINARY)</span></td></tr>
+<tr class="codeline" data-linenumber="967"><td class="num" id="LN967">967</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="968"><td class="num" id="LN968">968</td><td class="line"><span class='comment'>/* Private */</span></td></tr>
+<tr class="codeline" data-linenumber="969"><td class="num" id="LN969">969</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="970"><td class="num" id="LN970">970</td><td class="line">model_begin_loading (PlumaFileBrowserStore * model, FileBrowserNode * node)</td></tr>
+<tr class="codeline" data-linenumber="971"><td class="num" id="LN971">971</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="972"><td class="num" id="LN972">972</td><td class="line"> GtkTreeIter iter;</td></tr>
+<tr class="codeline" data-linenumber="973"><td class="num" id="LN973">973</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="974"><td class="num" id="LN974">974</td><td class="line"> iter.user_data = node;</td></tr>
+<tr class="codeline" data-linenumber="975"><td class="num" id="LN975">975</td><td class="line"> g_signal_emit (model, model_signals[BEGIN_LOADING], 0, &amp;iter);</td></tr>
+<tr class="codeline" data-linenumber="976"><td class="num" id="LN976">976</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="977"><td class="num" id="LN977">977</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="978"><td class="num" id="LN978">978</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="979"><td class="num" id="LN979">979</td><td class="line">model_end_loading (PlumaFileBrowserStore * model, FileBrowserNode * node)</td></tr>
+<tr class="codeline" data-linenumber="980"><td class="num" id="LN980">980</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="981"><td class="num" id="LN981">981</td><td class="line"> GtkTreeIter iter;</td></tr>
+<tr class="codeline" data-linenumber="982"><td class="num" id="LN982">982</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="983"><td class="num" id="LN983">983</td><td class="line"> iter.user_data = node;</td></tr>
+<tr class="codeline" data-linenumber="984"><td class="num" id="LN984">984</td><td class="line"> g_signal_emit (model, model_signals[END_LOADING], 0, &amp;iter);</td></tr>
+<tr class="codeline" data-linenumber="985"><td class="num" id="LN985">985</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="986"><td class="num" id="LN986">986</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="987"><td class="num" id="LN987">987</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="988"><td class="num" id="LN988">988</td><td class="line">model_node_update_visibility (PlumaFileBrowserStore * model,</td></tr>
+<tr class="codeline" data-linenumber="989"><td class="num" id="LN989">989</td><td class="line"> FileBrowserNode * node)</td></tr>
+<tr class="codeline" data-linenumber="990"><td class="num" id="LN990">990</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="991"><td class="num" id="LN991">991</td><td class="line"> GtkTreeIter iter;</td></tr>
+<tr class="codeline" data-linenumber="992"><td class="num" id="LN992">992</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="993"><td class="num" id="LN993">993</td><td class="line"> node-&gt;flags &amp;= ~PLUMA_FILE_BROWSER_STORE_FLAG_IS_FILTERED;</td></tr>
+<tr class="codeline" data-linenumber="994"><td class="num" id="LN994">994</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="995"><td class="num" id="LN995">995</td><td class="line"> <span class='keyword'>if</span> (<span class='macro'>FILTER_HIDDEN (model-&gt;priv-&gt;filter_mode)<span class='macro_popup'>(model-&gt;priv-&gt;filter_mode &amp; PLUMA_FILE_BROWSER_STORE_FILTER_MODE_HIDE_HIDDEN<br>)</span></span> &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="996"><td class="num" id="LN996">996</td><td class="line"> <span class='macro'>NODE_IS_HIDDEN (node)<span class='macro_popup'>(((node)-&gt;flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_HIDDEN<br>))</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="997"><td class="num" id="LN997">997</td><td class="line"> node-&gt;flags |= PLUMA_FILE_BROWSER_STORE_FLAG_IS_FILTERED;</td></tr>
+<tr class="codeline" data-linenumber="998"><td class="num" id="LN998">998</td><td class="line"> <span class='keyword'>else</span> <span class='keyword'>if</span> (<span class='macro'>FILTER_BINARY (model-&gt;priv-&gt;filter_mode)<span class='macro_popup'>(model-&gt;priv-&gt;filter_mode &amp; PLUMA_FILE_BROWSER_STORE_FILTER_MODE_HIDE_BINARY<br>)</span></span> &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="999"><td class="num" id="LN999">999</td><td class="line"> (!<span class='macro'>NODE_IS_TEXT (node)<span class='macro_popup'>(((node)-&gt;flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_TEXT<br>))</span></span> &amp;&amp; !<span class='macro'>NODE_IS_DIR (node)<span class='macro_popup'>(((node)-&gt;flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_DIRECTORY<br>))</span></span>))</td></tr>
+<tr class="codeline" data-linenumber="1000"><td class="num" id="LN1000">1000</td><td class="line"> node-&gt;flags |= PLUMA_FILE_BROWSER_STORE_FLAG_IS_FILTERED;</td></tr>
+<tr class="codeline" data-linenumber="1001"><td class="num" id="LN1001">1001</td><td class="line"> <span class='keyword'>else</span> <span class='keyword'>if</span> (model-&gt;priv-&gt;filter_func) {</td></tr>
+<tr class="codeline" data-linenumber="1002"><td class="num" id="LN1002">1002</td><td class="line"> iter.user_data = node;</td></tr>
+<tr class="codeline" data-linenumber="1003"><td class="num" id="LN1003">1003</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1004"><td class="num" id="LN1004">1004</td><td class="line"> <span class='keyword'>if</span> (!model-&gt;priv-&gt;</td></tr>
+<tr class="codeline" data-linenumber="1005"><td class="num" id="LN1005">1005</td><td class="line"> filter_func (model, &amp;iter,</td></tr>
+<tr class="codeline" data-linenumber="1006"><td class="num" id="LN1006">1006</td><td class="line"> model-&gt;priv-&gt;filter_user_data))</td></tr>
+<tr class="codeline" data-linenumber="1007"><td class="num" id="LN1007">1007</td><td class="line"> node-&gt;flags |=</td></tr>
+<tr class="codeline" data-linenumber="1008"><td class="num" id="LN1008">1008</td><td class="line"> PLUMA_FILE_BROWSER_STORE_FLAG_IS_FILTERED;</td></tr>
+<tr class="codeline" data-linenumber="1009"><td class="num" id="LN1009">1009</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1010"><td class="num" id="LN1010">1010</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1011"><td class="num" id="LN1011">1011</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1012"><td class="num" id="LN1012">1012</td><td class="line"><span class='keyword'>static</span> gint</td></tr>
+<tr class="codeline" data-linenumber="1013"><td class="num" id="LN1013">1013</td><td class="line">collate_nodes (FileBrowserNode * node1, FileBrowserNode * node2)</td></tr>
+<tr class="codeline" data-linenumber="1014"><td class="num" id="LN1014">1014</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1015"><td class="num" id="LN1015">1015</td><td class="line"> <span class='keyword'>if</span> (node1-&gt;name == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="1016"><td class="num" id="LN1016">1016</td><td class="line"> <span class='keyword'>return</span> -1;</td></tr>
+<tr class="codeline" data-linenumber="1017"><td class="num" id="LN1017">1017</td><td class="line"> <span class='keyword'>else</span> <span class='keyword'>if</span> (node2-&gt;name == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="1018"><td class="num" id="LN1018">1018</td><td class="line"> <span class='keyword'>return</span> 1;</td></tr>
+<tr class="codeline" data-linenumber="1019"><td class="num" id="LN1019">1019</td><td class="line"> <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="1020"><td class="num" id="LN1020">1020</td><td class="line"> gchar *k1, *k2;</td></tr>
+<tr class="codeline" data-linenumber="1021"><td class="num" id="LN1021">1021</td><td class="line"> gint result;</td></tr>
+<tr class="codeline" data-linenumber="1022"><td class="num" id="LN1022">1022</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1023"><td class="num" id="LN1023">1023</td><td class="line"> k1 = g_utf8_collate_key_for_filename (node1-&gt;name, -1);</td></tr>
+<tr class="codeline" data-linenumber="1024"><td class="num" id="LN1024">1024</td><td class="line"> k2 = g_utf8_collate_key_for_filename (node2-&gt;name, -1);</td></tr>
+<tr class="codeline" data-linenumber="1025"><td class="num" id="LN1025">1025</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1026"><td class="num" id="LN1026">1026</td><td class="line"> result = strcmp (k1, k2);</td></tr>
+<tr class="codeline" data-linenumber="1027"><td class="num" id="LN1027">1027</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1028"><td class="num" id="LN1028">1028</td><td class="line"> g_free (k1);</td></tr>
+<tr class="codeline" data-linenumber="1029"><td class="num" id="LN1029">1029</td><td class="line"> g_free (k2);</td></tr>
+<tr class="codeline" data-linenumber="1030"><td class="num" id="LN1030">1030</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1031"><td class="num" id="LN1031">1031</td><td class="line"> <span class='keyword'>return</span> result;</td></tr>
+<tr class="codeline" data-linenumber="1032"><td class="num" id="LN1032">1032</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1033"><td class="num" id="LN1033">1033</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1034"><td class="num" id="LN1034">1034</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1035"><td class="num" id="LN1035">1035</td><td class="line"><span class='keyword'>static</span> gint</td></tr>
+<tr class="codeline" data-linenumber="1036"><td class="num" id="LN1036">1036</td><td class="line">model_sort_default (FileBrowserNode * node1, FileBrowserNode * node2)</td></tr>
+<tr class="codeline" data-linenumber="1037"><td class="num" id="LN1037">1037</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1038"><td class="num" id="LN1038">1038</td><td class="line"> gint f1;</td></tr>
+<tr class="codeline" data-linenumber="1039"><td class="num" id="LN1039">1039</td><td class="line"> gint f2;</td></tr>
+<tr class="codeline" data-linenumber="1040"><td class="num" id="LN1040">1040</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1041"><td class="num" id="LN1041">1041</td><td class="line"> f1 = <span class='macro'>NODE_IS_DUMMY (node1)<span class='macro_popup'>(((node1)-&gt;flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_DUMMY<br>))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1042"><td class="num" id="LN1042">1042</td><td class="line"> f2 = <span class='macro'>NODE_IS_DUMMY (node2)<span class='macro_popup'>(((node2)-&gt;flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_DUMMY<br>))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1043"><td class="num" id="LN1043">1043</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1044"><td class="num" id="LN1044">1044</td><td class="line"> <span class='keyword'>if</span> (f1 &amp;&amp; f2)</td></tr>
+<tr class="codeline" data-linenumber="1045"><td class="num" id="LN1045">1045</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="1046"><td class="num" id="LN1046">1046</td><td class="line"> <span class='keyword'>return</span> 0;</td></tr>
+<tr class="codeline" data-linenumber="1047"><td class="num" id="LN1047">1047</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1048"><td class="num" id="LN1048">1048</td><td class="line"> <span class='keyword'>else</span> <span class='keyword'>if</span> (f1 || f2)</td></tr>
+<tr class="codeline" data-linenumber="1049"><td class="num" id="LN1049">1049</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="1050"><td class="num" id="LN1050">1050</td><td class="line"> <span class='keyword'>return</span> f1 ? -1 : 1;</td></tr>
+<tr class="codeline" data-linenumber="1051"><td class="num" id="LN1051">1051</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1052"><td class="num" id="LN1052">1052</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1053"><td class="num" id="LN1053">1053</td><td class="line"> f1 = <span class='macro'>NODE_IS_DIR (node1)<span class='macro_popup'>(((node1)-&gt;flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_DIRECTORY<br>))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1054"><td class="num" id="LN1054">1054</td><td class="line"> f2 = <span class='macro'>NODE_IS_DIR (node2)<span class='macro_popup'>(((node2)-&gt;flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_DIRECTORY<br>))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1055"><td class="num" id="LN1055">1055</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1056"><td class="num" id="LN1056">1056</td><td class="line"> <span class='keyword'>if</span> (f1 != f2)</td></tr>
+<tr class="codeline" data-linenumber="1057"><td class="num" id="LN1057">1057</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="1058"><td class="num" id="LN1058">1058</td><td class="line"> <span class='keyword'>return</span> f1 ? -1 : 1;</td></tr>
+<tr class="codeline" data-linenumber="1059"><td class="num" id="LN1059">1059</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1060"><td class="num" id="LN1060">1060</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1061"><td class="num" id="LN1061">1061</td><td class="line"> f1 = <span class='macro'>NODE_IS_HIDDEN (node1)<span class='macro_popup'>(((node1)-&gt;flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_HIDDEN<br>))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1062"><td class="num" id="LN1062">1062</td><td class="line"> f2 = <span class='macro'>NODE_IS_HIDDEN (node2)<span class='macro_popup'>(((node2)-&gt;flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_HIDDEN<br>))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1063"><td class="num" id="LN1063">1063</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1064"><td class="num" id="LN1064">1064</td><td class="line"> <span class='keyword'>if</span> (f1 != f2)</td></tr>
+<tr class="codeline" data-linenumber="1065"><td class="num" id="LN1065">1065</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="1066"><td class="num" id="LN1066">1066</td><td class="line"> <span class='keyword'>return</span> f2 ? -1 : 1;</td></tr>
+<tr class="codeline" data-linenumber="1067"><td class="num" id="LN1067">1067</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1068"><td class="num" id="LN1068">1068</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1069"><td class="num" id="LN1069">1069</td><td class="line"> <span class='keyword'>return</span> collate_nodes (node1, node2);</td></tr>
+<tr class="codeline" data-linenumber="1070"><td class="num" id="LN1070">1070</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1071"><td class="num" id="LN1071">1071</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1072"><td class="num" id="LN1072">1072</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1073"><td class="num" id="LN1073">1073</td><td class="line">model_resort_node (PlumaFileBrowserStore * model, FileBrowserNode * node)</td></tr>
+<tr class="codeline" data-linenumber="1074"><td class="num" id="LN1074">1074</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1075"><td class="num" id="LN1075">1075</td><td class="line"> FileBrowserNodeDir *dir;</td></tr>
+<tr class="codeline" data-linenumber="1076"><td class="num" id="LN1076">1076</td><td class="line"> GSList *item;</td></tr>
+<tr class="codeline" data-linenumber="1077"><td class="num" id="LN1077">1077</td><td class="line"> FileBrowserNode *child;</td></tr>
+<tr class="codeline" data-linenumber="1078"><td class="num" id="LN1078">1078</td><td class="line"> gint pos = 0;</td></tr>
+<tr class="codeline" data-linenumber="1079"><td class="num" id="LN1079">1079</td><td class="line"> GtkTreeIter iter;</td></tr>
+<tr class="codeline" data-linenumber="1080"><td class="num" id="LN1080">1080</td><td class="line"> GtkTreePath *path;</td></tr>
+<tr class="codeline" data-linenumber="1081"><td class="num" id="LN1081">1081</td><td class="line"> gint *neworder;</td></tr>
+<tr class="codeline" data-linenumber="1082"><td class="num" id="LN1082">1082</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1083"><td class="num" id="LN1083">1083</td><td class="line"> dir = <span class='macro'>FILE_BROWSER_NODE_DIR (node-&gt;parent)<span class='macro_popup'>((FileBrowserNodeDir *)(node-&gt;parent))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1084"><td class="num" id="LN1084">1084</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1085"><td class="num" id="LN1085">1085</td><td class="line"> <span class='keyword'>if</span> (!model_node_visibility (model, node-&gt;parent)) {</td></tr>
+<tr class="codeline" data-linenumber="1086"><td class="num" id="LN1086">1086</td><td class="line"> <span class='comment'>/* Just sort the children of the parent */</span></td></tr>
+<tr class="codeline" data-linenumber="1087"><td class="num" id="LN1087">1087</td><td class="line"> dir-&gt;children = g_slist_sort (dir-&gt;children,</td></tr>
+<tr class="codeline" data-linenumber="1088"><td class="num" id="LN1088">1088</td><td class="line"> (GCompareFunc) (model-&gt;priv-&gt;</td></tr>
+<tr class="codeline" data-linenumber="1089"><td class="num" id="LN1089">1089</td><td class="line"> sort_func));</td></tr>
+<tr class="codeline" data-linenumber="1090"><td class="num" id="LN1090">1090</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="1091"><td class="num" id="LN1091">1091</td><td class="line"> <span class='comment'>/* Store current positions */</span></td></tr>
+<tr class="codeline" data-linenumber="1092"><td class="num" id="LN1092">1092</td><td class="line"> <span class='keyword'>for</span> (item = dir-&gt;children; item; item = item-&gt;next) {</td></tr>
+<tr class="codeline" data-linenumber="1093"><td class="num" id="LN1093">1093</td><td class="line"> child = (FileBrowserNode *) (item-&gt;data);</td></tr>
+<tr class="codeline" data-linenumber="1094"><td class="num" id="LN1094">1094</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1095"><td class="num" id="LN1095">1095</td><td class="line"> <span class='keyword'>if</span> (model_node_visibility (model, child))</td></tr>
+<tr class="codeline" data-linenumber="1096"><td class="num" id="LN1096">1096</td><td class="line"> child-&gt;pos = pos++;</td></tr>
+<tr class="codeline" data-linenumber="1097"><td class="num" id="LN1097">1097</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1098"><td class="num" id="LN1098">1098</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1099"><td class="num" id="LN1099">1099</td><td class="line"> dir-&gt;children = g_slist_sort (dir-&gt;children,</td></tr>
+<tr class="codeline" data-linenumber="1100"><td class="num" id="LN1100">1100</td><td class="line"> (GCompareFunc) (model-&gt;priv-&gt;</td></tr>
+<tr class="codeline" data-linenumber="1101"><td class="num" id="LN1101">1101</td><td class="line"> sort_func));</td></tr>
+<tr class="codeline" data-linenumber="1102"><td class="num" id="LN1102">1102</td><td class="line"> neworder = <span class='macro'>g_new (gint, pos)<span class='macro_popup'>(gint *) (__extension__ ({ gsize __n = (gsize) (pos); gsize __s<br> = sizeof (gint); gpointer __p; if (__s == 1) __p = g_malloc (<br>__n); else if (__builtin_constant_p (__n) &amp;&amp; (__s == 0<br> || __n &lt;= (9223372036854775807L *2UL+1UL) / __s)) __p = g_malloc<br> (__n * __s); else __p = g_malloc_n (__n, __s); __p; }))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1103"><td class="num" id="LN1103">1103</td><td class="line"> pos = 0;</td></tr>
+<tr class="codeline" data-linenumber="1104"><td class="num" id="LN1104">1104</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1105"><td class="num" id="LN1105">1105</td><td class="line"> <span class='comment'>/* Store the new positions */</span></td></tr>
+<tr class="codeline" data-linenumber="1106"><td class="num" id="LN1106">1106</td><td class="line"> <span class='keyword'>for</span> (item = dir-&gt;children; item; item = item-&gt;next) {</td></tr>
+<tr class="codeline" data-linenumber="1107"><td class="num" id="LN1107">1107</td><td class="line"> child = (FileBrowserNode *) (item-&gt;data);</td></tr>
+<tr class="codeline" data-linenumber="1108"><td class="num" id="LN1108">1108</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1109"><td class="num" id="LN1109">1109</td><td class="line"> <span class='keyword'>if</span> (model_node_visibility (model, child))</td></tr>
+<tr class="codeline" data-linenumber="1110"><td class="num" id="LN1110">1110</td><td class="line"> neworder[pos++] = child-&gt;pos;</td></tr>
+<tr class="codeline" data-linenumber="1111"><td class="num" id="LN1111">1111</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1112"><td class="num" id="LN1112">1112</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1113"><td class="num" id="LN1113">1113</td><td class="line"> iter.user_data = node-&gt;parent;</td></tr>
+<tr class="codeline" data-linenumber="1114"><td class="num" id="LN1114">1114</td><td class="line"> path =</td></tr>
+<tr class="codeline" data-linenumber="1115"><td class="num" id="LN1115">1115</td><td class="line"> pluma_file_browser_store_get_path_real (model,</td></tr>
+<tr class="codeline" data-linenumber="1116"><td class="num" id="LN1116">1116</td><td class="line"> node-&gt;parent);</td></tr>
+<tr class="codeline" data-linenumber="1117"><td class="num" id="LN1117">1117</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1118"><td class="num" id="LN1118">1118</td><td class="line"> gtk_tree_model_rows_reordered (<span class='macro'>GTK_TREE_MODEL (model)<span class='macro_popup'>((((GtkTreeModel*) (void *) ((model)))))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="1119"><td class="num" id="LN1119">1119</td><td class="line"> path, &amp;iter, neworder);</td></tr>
+<tr class="codeline" data-linenumber="1120"><td class="num" id="LN1120">1120</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1121"><td class="num" id="LN1121">1121</td><td class="line"> g_free (neworder);</td></tr>
+<tr class="codeline" data-linenumber="1122"><td class="num" id="LN1122">1122</td><td class="line"> gtk_tree_path_free (path);</td></tr>
+<tr class="codeline" data-linenumber="1123"><td class="num" id="LN1123">1123</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1124"><td class="num" id="LN1124">1124</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1125"><td class="num" id="LN1125">1125</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1126"><td class="num" id="LN1126">1126</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1127"><td class="num" id="LN1127">1127</td><td class="line">row_changed (PlumaFileBrowserStore * model,</td></tr>
+<tr class="codeline" data-linenumber="1128"><td class="num" id="LN1128">1128</td><td class="line"> GtkTreePath ** path,</td></tr>
+<tr class="codeline" data-linenumber="1129"><td class="num" id="LN1129">1129</td><td class="line"> GtkTreeIter * iter)</td></tr>
+<tr class="codeline" data-linenumber="1130"><td class="num" id="LN1130">1130</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1131"><td class="num" id="LN1131">1131</td><td class="line"> GtkTreeRowReference *ref = gtk_tree_row_reference_new (<span class='macro'>GTK_TREE_MODEL (model)<span class='macro_popup'>((((GtkTreeModel*) (void *) ((model)))))</span></span>, *path);</td></tr>
+<tr class="codeline" data-linenumber="1132"><td class="num" id="LN1132">1132</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1133"><td class="num" id="LN1133">1133</td><td class="line"> <span class='comment'>/* Insert a copy of the actual path here because the row-inserted</span></td></tr>
+<tr class="codeline" data-linenumber="1134"><td class="num" id="LN1134">1134</td><td class="line"> <span class='comment'>signal may alter the path */</span></td></tr>
+<tr class="codeline" data-linenumber="1135"><td class="num" id="LN1135">1135</td><td class="line"> gtk_tree_model_row_changed (<span class='macro'>GTK_TREE_MODEL(model)<span class='macro_popup'>((((GtkTreeModel*) (void *) ((model)))))</span></span>, *path, iter);</td></tr>
+<tr class="codeline" data-linenumber="1136"><td class="num" id="LN1136">1136</td><td class="line"> gtk_tree_path_free (*path);</td></tr>
+<tr class="codeline" data-linenumber="1137"><td class="num" id="LN1137">1137</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1138"><td class="num" id="LN1138">1138</td><td class="line"> *path = gtk_tree_row_reference_get_path (ref);</td></tr>
+<tr class="codeline" data-linenumber="1139"><td class="num" id="LN1139">1139</td><td class="line"> gtk_tree_row_reference_free (ref);</td></tr>
+<tr class="codeline" data-linenumber="1140"><td class="num" id="LN1140">1140</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1141"><td class="num" id="LN1141">1141</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1142"><td class="num" id="LN1142">1142</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1143"><td class="num" id="LN1143">1143</td><td class="line">row_inserted (PlumaFileBrowserStore * model,</td></tr>
+<tr class="codeline" data-linenumber="1144"><td class="num" id="LN1144">1144</td><td class="line"> GtkTreePath ** path,</td></tr>
+<tr class="codeline" data-linenumber="1145"><td class="num" id="LN1145">1145</td><td class="line"> GtkTreeIter * iter)</td></tr>
+<tr class="codeline" data-linenumber="1146"><td class="num" id="LN1146">1146</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1147"><td class="num" id="LN1147">1147</td><td class="line"> <span class='comment'>/* This function creates a row reference for the path because it's</span></td></tr>
+<tr class="codeline" data-linenumber="1148"><td class="num" id="LN1148">1148</td><td class="line"> <span class='comment'>uncertain what might change the actual model/view when we insert</span></td></tr>
+<tr class="codeline" data-linenumber="1149"><td class="num" id="LN1149">1149</td><td class="line"> <span class='comment'>a node, maybe another directory load is triggered for example.</span></td></tr>
+<tr class="codeline" data-linenumber="1150"><td class="num" id="LN1150">1150</td><td class="line"> <span class='comment'>Because functions that use this function rely on the notion that</span></td></tr>
+<tr class="codeline" data-linenumber="1151"><td class="num" id="LN1151">1151</td><td class="line"> <span class='comment'>the path remains pointed towards the inserted node, we use the</span></td></tr>
+<tr class="codeline" data-linenumber="1152"><td class="num" id="LN1152">1152</td><td class="line"> <span class='comment'>reference to keep track. */</span></td></tr>
+<tr class="codeline" data-linenumber="1153"><td class="num" id="LN1153">1153</td><td class="line"> GtkTreeRowReference *ref = gtk_tree_row_reference_new (<span class='macro'>GTK_TREE_MODEL (model)<span class='macro_popup'>((((GtkTreeModel*) (void *) ((model)))))</span></span>, *path);</td></tr>
+<tr class="codeline" data-linenumber="1154"><td class="num" id="LN1154">1154</td><td class="line"> GtkTreePath * copy = gtk_tree_path_copy (*path);</td></tr>
+<tr class="codeline" data-linenumber="1155"><td class="num" id="LN1155">1155</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1156"><td class="num" id="LN1156">1156</td><td class="line"> gtk_tree_model_row_inserted (<span class='macro'>GTK_TREE_MODEL(model)<span class='macro_popup'>((((GtkTreeModel*) (void *) ((model)))))</span></span>, copy, iter);</td></tr>
+<tr class="codeline" data-linenumber="1157"><td class="num" id="LN1157">1157</td><td class="line"> gtk_tree_path_free (copy);</td></tr>
+<tr class="codeline" data-linenumber="1158"><td class="num" id="LN1158">1158</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1159"><td class="num" id="LN1159">1159</td><td class="line"> <span class='keyword'>if</span> (ref)</td></tr>
+<tr class="codeline" data-linenumber="1160"><td class="num" id="LN1160">1160</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="1161"><td class="num" id="LN1161">1161</td><td class="line"> gtk_tree_path_free (*path);</td></tr>
+<tr class="codeline" data-linenumber="1162"><td class="num" id="LN1162">1162</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1163"><td class="num" id="LN1163">1163</td><td class="line"> <span class='comment'>/* To restore the path, we get the path from the reference. But, since</span></td></tr>
+<tr class="codeline" data-linenumber="1164"><td class="num" id="LN1164">1164</td><td class="line"> <span class='comment'>we inserted a row, the path will be one index further than the</span></td></tr>
+<tr class="codeline" data-linenumber="1165"><td class="num" id="LN1165">1165</td><td class="line"> <span class='comment'>actual path of our node. We therefore call gtk_tree_path_prev */</span></td></tr>
+<tr class="codeline" data-linenumber="1166"><td class="num" id="LN1166">1166</td><td class="line"> *path = gtk_tree_row_reference_get_path (ref);</td></tr>
+<tr class="codeline" data-linenumber="1167"><td class="num" id="LN1167">1167</td><td class="line"> gtk_tree_path_prev (*path);</td></tr>
+<tr class="codeline" data-linenumber="1168"><td class="num" id="LN1168">1168</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1169"><td class="num" id="LN1169">1169</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1170"><td class="num" id="LN1170">1170</td><td class="line"> gtk_tree_row_reference_free (ref);</td></tr>
+<tr class="codeline" data-linenumber="1171"><td class="num" id="LN1171">1171</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1172"><td class="num" id="LN1172">1172</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1173"><td class="num" id="LN1173">1173</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1174"><td class="num" id="LN1174">1174</td><td class="line">row_deleted (PlumaFileBrowserStore * model,</td></tr>
+<tr class="codeline" data-linenumber="1175"><td class="num" id="LN1175">1175</td><td class="line"> <span class='keyword'>const</span> GtkTreePath * path)</td></tr>
+<tr class="codeline" data-linenumber="1176"><td class="num" id="LN1176">1176</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1177"><td class="num" id="LN1177">1177</td><td class="line"> GtkTreePath *copy = gtk_tree_path_copy (path);</td></tr>
+<tr class="codeline" data-linenumber="1178"><td class="num" id="LN1178">1178</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1179"><td class="num" id="LN1179">1179</td><td class="line"> <span class='comment'>/* Delete a copy of the actual path here because the row-deleted</span></td></tr>
+<tr class="codeline" data-linenumber="1180"><td class="num" id="LN1180">1180</td><td class="line"> <span class='comment'>signal may alter the path */</span></td></tr>
+<tr class="codeline" data-linenumber="1181"><td class="num" id="LN1181">1181</td><td class="line"> gtk_tree_model_row_deleted (<span class='macro'>GTK_TREE_MODEL(model)<span class='macro_popup'>((((GtkTreeModel*) (void *) ((model)))))</span></span>, copy);</td></tr>
+<tr class="codeline" data-linenumber="1182"><td class="num" id="LN1182">1182</td><td class="line"> gtk_tree_path_free (copy);</td></tr>
+<tr class="codeline" data-linenumber="1183"><td class="num" id="LN1183">1183</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1184"><td class="num" id="LN1184">1184</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1185"><td class="num" id="LN1185">1185</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1186"><td class="num" id="LN1186">1186</td><td class="line">model_refilter_node (PlumaFileBrowserStore * model,</td></tr>
+<tr class="codeline" data-linenumber="1187"><td class="num" id="LN1187">1187</td><td class="line"> FileBrowserNode * node,</td></tr>
+<tr class="codeline" data-linenumber="1188"><td class="num" id="LN1188">1188</td><td class="line"> GtkTreePath ** path)</td></tr>
+<tr class="codeline" data-linenumber="1189"><td class="num" id="LN1189">1189</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1190"><td class="num" id="LN1190">1190</td><td class="line"> gboolean old_visible;</td></tr>
+<tr class="codeline" data-linenumber="1191"><td class="num" id="LN1191">1191</td><td class="line"> gboolean new_visible;</td></tr>
+<tr class="codeline" data-linenumber="1192"><td class="num" id="LN1192">1192</td><td class="line"> FileBrowserNodeDir *dir;</td></tr>
+<tr class="codeline" data-linenumber="1193"><td class="num" id="LN1193">1193</td><td class="line"> GSList *item;</td></tr>
+<tr class="codeline" data-linenumber="1194"><td class="num" id="LN1194">1194</td><td class="line"> GtkTreeIter iter;</td></tr>
+<tr class="codeline" data-linenumber="1195"><td class="num" id="LN1195">1195</td><td class="line"> GtkTreePath *tmppath = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1196"><td class="num" id="LN1196">1196</td><td class="line"> gboolean in_tree;</td></tr>
+<tr class="codeline" data-linenumber="1197"><td class="num" id="LN1197">1197</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1198"><td class="num" id="LN1198">1198</td><td class="line"> <span class='keyword'>if</span> (node == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="1199"><td class="num" id="LN1199">1199</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="1200"><td class="num" id="LN1200">1200</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1201"><td class="num" id="LN1201">1201</td><td class="line"> old_visible = model_node_visibility (model, node);</td></tr>
+<tr class="codeline" data-linenumber="1202"><td class="num" id="LN1202">1202</td><td class="line"> model_node_update_visibility (model, node);</td></tr>
+<tr class="codeline" data-linenumber="1203"><td class="num" id="LN1203">1203</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1204"><td class="num" id="LN1204">1204</td><td class="line"> in_tree = node_in_tree (model, node);</td></tr>
+<tr class="codeline" data-linenumber="1205"><td class="num" id="LN1205">1205</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1206"><td class="num" id="LN1206">1206</td><td class="line"> <span class='keyword'>if</span> (path == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="1207"><td class="num" id="LN1207">1207</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="1208"><td class="num" id="LN1208">1208</td><td class="line"> <span class='keyword'>if</span> (in_tree)</td></tr>
+<tr class="codeline" data-linenumber="1209"><td class="num" id="LN1209">1209</td><td class="line"> tmppath = pluma_file_browser_store_get_path_real (model,</td></tr>
+<tr class="codeline" data-linenumber="1210"><td class="num" id="LN1210">1210</td><td class="line"> node);</td></tr>
+<tr class="codeline" data-linenumber="1211"><td class="num" id="LN1211">1211</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="1212"><td class="num" id="LN1212">1212</td><td class="line"> tmppath = gtk_tree_path_new_first ();</td></tr>
+<tr class="codeline" data-linenumber="1213"><td class="num" id="LN1213">1213</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1214"><td class="num" id="LN1214">1214</td><td class="line"> path = &amp;tmppath;</td></tr>
+<tr class="codeline" data-linenumber="1215"><td class="num" id="LN1215">1215</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1216"><td class="num" id="LN1216">1216</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1217"><td class="num" id="LN1217">1217</td><td class="line"> <span class='keyword'>if</span> (<span class='macro'>NODE_IS_DIR (node)<span class='macro_popup'>(((node)-&gt;flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_DIRECTORY<br>))</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1218"><td class="num" id="LN1218">1218</td><td class="line"> <span class='keyword'>if</span> (in_tree)</td></tr>
+<tr class="codeline" data-linenumber="1219"><td class="num" id="LN1219">1219</td><td class="line"> gtk_tree_path_down (*path);</td></tr>
+<tr class="codeline" data-linenumber="1220"><td class="num" id="LN1220">1220</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1221"><td class="num" id="LN1221">1221</td><td class="line"> dir = <span class='macro'>FILE_BROWSER_NODE_DIR (node)<span class='macro_popup'>((FileBrowserNodeDir *)(node))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1222"><td class="num" id="LN1222">1222</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1223"><td class="num" id="LN1223">1223</td><td class="line"> <span class='keyword'>for</span> (item = dir-&gt;children; item; item = item-&gt;next) {</td></tr>
+<tr class="codeline" data-linenumber="1224"><td class="num" id="LN1224">1224</td><td class="line"> model_refilter_node (model,</td></tr>
+<tr class="codeline" data-linenumber="1225"><td class="num" id="LN1225">1225</td><td class="line"> (FileBrowserNode *) (item-&gt;data),</td></tr>
+<tr class="codeline" data-linenumber="1226"><td class="num" id="LN1226">1226</td><td class="line"> path);</td></tr>
+<tr class="codeline" data-linenumber="1227"><td class="num" id="LN1227">1227</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1228"><td class="num" id="LN1228">1228</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1229"><td class="num" id="LN1229">1229</td><td class="line"> <span class='keyword'>if</span> (in_tree)</td></tr>
+<tr class="codeline" data-linenumber="1230"><td class="num" id="LN1230">1230</td><td class="line"> gtk_tree_path_up (*path);</td></tr>
+<tr class="codeline" data-linenumber="1231"><td class="num" id="LN1231">1231</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1232"><td class="num" id="LN1232">1232</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1233"><td class="num" id="LN1233">1233</td><td class="line"> <span class='keyword'>if</span> (in_tree) {</td></tr>
+<tr class="codeline" data-linenumber="1234"><td class="num" id="LN1234">1234</td><td class="line"> new_visible = model_node_visibility (model, node);</td></tr>
+<tr class="codeline" data-linenumber="1235"><td class="num" id="LN1235">1235</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1236"><td class="num" id="LN1236">1236</td><td class="line"> <span class='keyword'>if</span> (old_visible != new_visible) {</td></tr>
+<tr class="codeline" data-linenumber="1237"><td class="num" id="LN1237">1237</td><td class="line"> <span class='keyword'>if</span> (old_visible) {</td></tr>
+<tr class="codeline" data-linenumber="1238"><td class="num" id="LN1238">1238</td><td class="line"> node-&gt;inserted = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1239"><td class="num" id="LN1239">1239</td><td class="line"> row_deleted (model, *path);</td></tr>
+<tr class="codeline" data-linenumber="1240"><td class="num" id="LN1240">1240</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="1241"><td class="num" id="LN1241">1241</td><td class="line"> iter.user_data = node;</td></tr>
+<tr class="codeline" data-linenumber="1242"><td class="num" id="LN1242">1242</td><td class="line"> row_inserted (model, path, &amp;iter);</td></tr>
+<tr class="codeline" data-linenumber="1243"><td class="num" id="LN1243">1243</td><td class="line"> gtk_tree_path_next (*path);</td></tr>
+<tr class="codeline" data-linenumber="1244"><td class="num" id="LN1244">1244</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1245"><td class="num" id="LN1245">1245</td><td class="line"> } <span class='keyword'>else</span> <span class='keyword'>if</span> (old_visible) {</td></tr>
+<tr class="codeline" data-linenumber="1246"><td class="num" id="LN1246">1246</td><td class="line"> gtk_tree_path_next (*path);</td></tr>
+<tr class="codeline" data-linenumber="1247"><td class="num" id="LN1247">1247</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1248"><td class="num" id="LN1248">1248</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1249"><td class="num" id="LN1249">1249</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1250"><td class="num" id="LN1250">1250</td><td class="line"> model_check_dummy (model, node);</td></tr>
+<tr class="codeline" data-linenumber="1251"><td class="num" id="LN1251">1251</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1252"><td class="num" id="LN1252">1252</td><td class="line"> <span class='keyword'>if</span> (tmppath)</td></tr>
+<tr class="codeline" data-linenumber="1253"><td class="num" id="LN1253">1253</td><td class="line"> gtk_tree_path_free (tmppath);</td></tr>
+<tr class="codeline" data-linenumber="1254"><td class="num" id="LN1254">1254</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1255"><td class="num" id="LN1255">1255</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1256"><td class="num" id="LN1256">1256</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1257"><td class="num" id="LN1257">1257</td><td class="line">model_refilter (PlumaFileBrowserStore * model)</td></tr>
+<tr class="codeline" data-linenumber="1258"><td class="num" id="LN1258">1258</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1259"><td class="num" id="LN1259">1259</td><td class="line"> model_refilter_node (model, model-&gt;priv-&gt;root, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1260"><td class="num" id="LN1260">1260</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1261"><td class="num" id="LN1261">1261</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1262"><td class="num" id="LN1262">1262</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1263"><td class="num" id="LN1263">1263</td><td class="line">file_browser_node_set_name (FileBrowserNode * node)</td></tr>
+<tr class="codeline" data-linenumber="1264"><td class="num" id="LN1264">1264</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1265"><td class="num" id="LN1265">1265</td><td class="line"> g_free (node-&gt;name);</td></tr>
+<tr class="codeline" data-linenumber="1266"><td class="num" id="LN1266">1266</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1267"><td class="num" id="LN1267">1267</td><td class="line"> <span class='keyword'>if</span> (node-&gt;file) {</td></tr>
+<tr class="codeline" data-linenumber="1268"><td class="num" id="LN1268">1268</td><td class="line"> node-&gt;name = pluma_file_browser_utils_file_basename (node-&gt;file);</td></tr>
+<tr class="codeline" data-linenumber="1269"><td class="num" id="LN1269">1269</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="1270"><td class="num" id="LN1270">1270</td><td class="line"> node-&gt;name = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1271"><td class="num" id="LN1271">1271</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1272"><td class="num" id="LN1272">1272</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1273"><td class="num" id="LN1273">1273</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1274"><td class="num" id="LN1274">1274</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1275"><td class="num" id="LN1275">1275</td><td class="line">file_browser_node_init (FileBrowserNode * node, GFile * file,</td></tr>
+<tr class="codeline" data-linenumber="1276"><td class="num" id="LN1276">1276</td><td class="line"> FileBrowserNode * parent)</td></tr>
+<tr class="codeline" data-linenumber="1277"><td class="num" id="LN1277">1277</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1278"><td class="num" id="LN1278">1278</td><td class="line"> <span class='keyword'>if</span> (file != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1279"><td class="num" id="LN1279">1279</td><td class="line"> node-&gt;file = <span class='macro'>g_object_ref (file)<span class='macro_popup'>((__typeof__ (file)) (g_object_ref) (file))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1280"><td class="num" id="LN1280">1280</td><td class="line"> file_browser_node_set_name (node);</td></tr>
+<tr class="codeline" data-linenumber="1281"><td class="num" id="LN1281">1281</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1282"><td class="num" id="LN1282">1282</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1283"><td class="num" id="LN1283">1283</td><td class="line"> node-&gt;parent = parent;</td></tr>
+<tr class="codeline" data-linenumber="1284"><td class="num" id="LN1284">1284</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1285"><td class="num" id="LN1285">1285</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1286"><td class="num" id="LN1286">1286</td><td class="line"><span class='keyword'>static</span> FileBrowserNode *</td></tr>
+<tr class="codeline" data-linenumber="1287"><td class="num" id="LN1287">1287</td><td class="line">file_browser_node_new (GFile * file, FileBrowserNode * parent)</td></tr>
+<tr class="codeline" data-linenumber="1288"><td class="num" id="LN1288">1288</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1289"><td class="num" id="LN1289">1289</td><td class="line"> FileBrowserNode *node = <span class='macro'>g_slice_new0 (FileBrowserNode)<span class='macro_popup'>(FileBrowserNode *) (__extension__ ({ gsize __s = sizeof (FileBrowserNode<br>); gpointer __p; __p = g_slice_alloc (__s); memset (__p, 0, __s<br>); __p; }))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1290"><td class="num" id="LN1290">1290</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1291"><td class="num" id="LN1291">1291</td><td class="line"> file_browser_node_init (node, file, parent);</td></tr>
+<tr class="codeline" data-linenumber="1292"><td class="num" id="LN1292">1292</td><td class="line"> <span class='keyword'>return</span> node;</td></tr>
+<tr class="codeline" data-linenumber="1293"><td class="num" id="LN1293">1293</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1294"><td class="num" id="LN1294">1294</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1295"><td class="num" id="LN1295">1295</td><td class="line"><span class='keyword'>static</span> FileBrowserNode *</td></tr>
+<tr class="codeline" data-linenumber="1296"><td class="num" id="LN1296">1296</td><td class="line">file_browser_node_dir_new (PlumaFileBrowserStore * model,</td></tr>
+<tr class="codeline" data-linenumber="1297"><td class="num" id="LN1297">1297</td><td class="line"> GFile * file, FileBrowserNode * parent)</td></tr>
+<tr class="codeline" data-linenumber="1298"><td class="num" id="LN1298">1298</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1299"><td class="num" id="LN1299">1299</td><td class="line"> FileBrowserNode *node =</td></tr>
+<tr class="codeline" data-linenumber="1300"><td class="num" id="LN1300">1300</td><td class="line"> (FileBrowserNode *) <span class='macro'>g_slice_new0 (FileBrowserNodeDir)<span class='macro_popup'>(FileBrowserNodeDir *) (__extension__ ({ gsize __s = sizeof (<br>FileBrowserNodeDir); gpointer __p; __p = g_slice_alloc (__s);<br> memset (__p, 0, __s); __p; }))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1301"><td class="num" id="LN1301">1301</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1302"><td class="num" id="LN1302">1302</td><td class="line"> file_browser_node_init (node, file, parent);</td></tr>
+<tr class="codeline" data-linenumber="1303"><td class="num" id="LN1303">1303</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1304"><td class="num" id="LN1304">1304</td><td class="line"> node-&gt;flags |= PLUMA_FILE_BROWSER_STORE_FLAG_IS_DIRECTORY;</td></tr>
+<tr class="codeline" data-linenumber="1305"><td class="num" id="LN1305">1305</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1306"><td class="num" id="LN1306">1306</td><td class="line"> <span class='macro'>FILE_BROWSER_NODE_DIR (node)<span class='macro_popup'>((FileBrowserNodeDir *)(node))</span></span>-&gt;model = model;</td></tr>
+<tr class="codeline" data-linenumber="1307"><td class="num" id="LN1307">1307</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1308"><td class="num" id="LN1308">1308</td><td class="line"> <span class='keyword'>return</span> node;</td></tr>
+<tr class="codeline" data-linenumber="1309"><td class="num" id="LN1309">1309</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1310"><td class="num" id="LN1310">1310</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1311"><td class="num" id="LN1311">1311</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1312"><td class="num" id="LN1312">1312</td><td class="line">file_browser_node_free_children (PlumaFileBrowserStore * model,</td></tr>
+<tr class="codeline" data-linenumber="1313"><td class="num" id="LN1313">1313</td><td class="line"> FileBrowserNode * node)</td></tr>
+<tr class="codeline" data-linenumber="1314"><td class="num" id="LN1314">1314</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1315"><td class="num" id="LN1315">1315</td><td class="line"> GSList *item;</td></tr>
+<tr class="codeline" data-linenumber="1316"><td class="num" id="LN1316">1316</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1317"><td class="num" id="LN1317">1317</td><td class="line"> <span class='keyword'>if</span> (node == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="1318"><td class="num" id="LN1318">1318</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="1319"><td class="num" id="LN1319">1319</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1320"><td class="num" id="LN1320">1320</td><td class="line"> <span class='keyword'>if</span> (<span class='macro'>NODE_IS_DIR (node)<span class='macro_popup'>(((node)-&gt;flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_DIRECTORY<br>))</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1321"><td class="num" id="LN1321">1321</td><td class="line"> <span class='keyword'>for</span> (item = <span class='macro'>FILE_BROWSER_NODE_DIR (node)<span class='macro_popup'>((FileBrowserNodeDir *)(node))</span></span>-&gt;children; item;</td></tr>
+<tr class="codeline" data-linenumber="1322"><td class="num" id="LN1322">1322</td><td class="line"> item = item-&gt;next)</td></tr>
+<tr class="codeline" data-linenumber="1323"><td class="num" id="LN1323">1323</td><td class="line"> file_browser_node_free (model,</td></tr>
+<tr class="codeline" data-linenumber="1324"><td class="num" id="LN1324">1324</td><td class="line"> (FileBrowserNode *) (item-&gt;</td></tr>
+<tr class="codeline" data-linenumber="1325"><td class="num" id="LN1325">1325</td><td class="line"> data));</td></tr>
+<tr class="codeline" data-linenumber="1326"><td class="num" id="LN1326">1326</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1327"><td class="num" id="LN1327">1327</td><td class="line"> g_slist_free (<span class='macro'>FILE_BROWSER_NODE_DIR (node)<span class='macro_popup'>((FileBrowserNodeDir *)(node))</span></span>-&gt;children);</td></tr>
+<tr class="codeline" data-linenumber="1328"><td class="num" id="LN1328">1328</td><td class="line"> <span class='macro'>FILE_BROWSER_NODE_DIR (node)<span class='macro_popup'>((FileBrowserNodeDir *)(node))</span></span>-&gt;children = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1329"><td class="num" id="LN1329">1329</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1330"><td class="num" id="LN1330">1330</td><td class="line"> <span class='comment'>/* This node is no longer loaded */</span></td></tr>
+<tr class="codeline" data-linenumber="1331"><td class="num" id="LN1331">1331</td><td class="line"> node-&gt;flags &amp;= ~PLUMA_FILE_BROWSER_STORE_FLAG_LOADED;</td></tr>
+<tr class="codeline" data-linenumber="1332"><td class="num" id="LN1332">1332</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1333"><td class="num" id="LN1333">1333</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1334"><td class="num" id="LN1334">1334</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1335"><td class="num" id="LN1335">1335</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1336"><td class="num" id="LN1336">1336</td><td class="line">file_browser_node_free (PlumaFileBrowserStore * model,</td></tr>
+<tr class="codeline" data-linenumber="1337"><td class="num" id="LN1337">1337</td><td class="line"> FileBrowserNode * node)</td></tr>
+<tr class="codeline" data-linenumber="1338"><td class="num" id="LN1338">1338</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1339"><td class="num" id="LN1339">1339</td><td class="line"> gchar *uri;</td></tr>
+<tr class="codeline" data-linenumber="1340"><td class="num" id="LN1340">1340</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1341"><td class="num" id="LN1341">1341</td><td class="line"> <span class='keyword'>if</span> (node == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="1342"><td class="num" id="LN1342">1342</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="1343"><td class="num" id="LN1343">1343</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1344"><td class="num" id="LN1344">1344</td><td class="line"> <span class='keyword'>if</span> (<span class='macro'>NODE_IS_DIR (node)<span class='macro_popup'>(((node)-&gt;flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_DIRECTORY<br>))</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="1345"><td class="num" id="LN1345">1345</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="1346"><td class="num" id="LN1346">1346</td><td class="line"> FileBrowserNodeDir *dir;</td></tr>
+<tr class="codeline" data-linenumber="1347"><td class="num" id="LN1347">1347</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1348"><td class="num" id="LN1348">1348</td><td class="line"> dir = <span class='macro'>FILE_BROWSER_NODE_DIR (node)<span class='macro_popup'>((FileBrowserNodeDir *)(node))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1349"><td class="num" id="LN1349">1349</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1350"><td class="num" id="LN1350">1350</td><td class="line"> <span class='keyword'>if</span> (dir-&gt;cancellable) {</td></tr>
+<tr class="codeline" data-linenumber="1351"><td class="num" id="LN1351">1351</td><td class="line"> g_cancellable_cancel (dir-&gt;cancellable);</td></tr>
+<tr class="codeline" data-linenumber="1352"><td class="num" id="LN1352">1352</td><td class="line"> g_object_unref (dir-&gt;cancellable);</td></tr>
+<tr class="codeline" data-linenumber="1353"><td class="num" id="LN1353">1353</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1354"><td class="num" id="LN1354">1354</td><td class="line"> model_end_loading (model, node);</td></tr>
+<tr class="codeline" data-linenumber="1355"><td class="num" id="LN1355">1355</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1356"><td class="num" id="LN1356">1356</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1357"><td class="num" id="LN1357">1357</td><td class="line"> file_browser_node_free_children (model, node);</td></tr>
+<tr class="codeline" data-linenumber="1358"><td class="num" id="LN1358">1358</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1359"><td class="num" id="LN1359">1359</td><td class="line"> <span class='keyword'>if</span> (dir-&gt;monitor) {</td></tr>
+<tr class="codeline" data-linenumber="1360"><td class="num" id="LN1360">1360</td><td class="line"> g_file_monitor_cancel (dir-&gt;monitor);</td></tr>
+<tr class="codeline" data-linenumber="1361"><td class="num" id="LN1361">1361</td><td class="line"> g_object_unref (dir-&gt;monitor);</td></tr>
+<tr class="codeline" data-linenumber="1362"><td class="num" id="LN1362">1362</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1363"><td class="num" id="LN1363">1363</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1364"><td class="num" id="LN1364">1364</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1365"><td class="num" id="LN1365">1365</td><td class="line"> <span class='keyword'>if</span> (node-&gt;file)</td></tr>
+<tr class="codeline" data-linenumber="1366"><td class="num" id="LN1366">1366</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="1367"><td class="num" id="LN1367">1367</td><td class="line"> uri = g_file_get_uri (node-&gt;file);</td></tr>
+<tr class="codeline" data-linenumber="1368"><td class="num" id="LN1368">1368</td><td class="line"> g_signal_emit (model, model_signals[UNLOAD], 0, uri);</td></tr>
+<tr class="codeline" data-linenumber="1369"><td class="num" id="LN1369">1369</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1370"><td class="num" id="LN1370">1370</td><td class="line"> g_free (uri);</td></tr>
+<tr class="codeline" data-linenumber="1371"><td class="num" id="LN1371">1371</td><td class="line"> g_object_unref (node-&gt;file);</td></tr>
+<tr class="codeline" data-linenumber="1372"><td class="num" id="LN1372">1372</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1373"><td class="num" id="LN1373">1373</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1374"><td class="num" id="LN1374">1374</td><td class="line"> <span class='keyword'>if</span> (node-&gt;icon)</td></tr>
+<tr class="codeline" data-linenumber="1375"><td class="num" id="LN1375">1375</td><td class="line"> g_object_unref (node-&gt;icon);</td></tr>
+<tr class="codeline" data-linenumber="1376"><td class="num" id="LN1376">1376</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1377"><td class="num" id="LN1377">1377</td><td class="line"> <span class='keyword'>if</span> (node-&gt;emblem)</td></tr>
+<tr class="codeline" data-linenumber="1378"><td class="num" id="LN1378">1378</td><td class="line"> g_object_unref (node-&gt;emblem);</td></tr>
+<tr class="codeline" data-linenumber="1379"><td class="num" id="LN1379">1379</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1380"><td class="num" id="LN1380">1380</td><td class="line"> g_free (node-&gt;name);</td></tr>
+<tr class="codeline" data-linenumber="1381"><td class="num" id="LN1381">1381</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1382"><td class="num" id="LN1382">1382</td><td class="line"> <span class='keyword'>if</span> (<span class='macro'>NODE_IS_DIR (node)<span class='macro_popup'>(((node)-&gt;flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_DIRECTORY<br>))</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="1383"><td class="num" id="LN1383">1383</td><td class="line"> <span class='macro'>g_slice_free (FileBrowserNodeDir, (FileBrowserNodeDir *)node)<span class='macro_popup'>do { if (1) g_slice_free1 (sizeof (FileBrowserNodeDir), ((FileBrowserNodeDir<br> *)node)); else (void) ((FileBrowserNodeDir*) 0 == ((FileBrowserNodeDir<br> *)node)); } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1384"><td class="num" id="LN1384">1384</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="1385"><td class="num" id="LN1385">1385</td><td class="line"> <span class='macro'>g_slice_free (FileBrowserNode, (FileBrowserNode *)node)<span class='macro_popup'>do { if (1) g_slice_free1 (sizeof (FileBrowserNode), ((FileBrowserNode<br> *)node)); else (void) ((FileBrowserNode*) 0 == ((FileBrowserNode<br> *)node)); } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1386"><td class="num" id="LN1386">1386</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1387"><td class="num" id="LN1387">1387</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1388"><td class="num" id="LN1388">1388</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="1389"><td class="num" id="LN1389">1389</td><td class="line"> <span class='comment'>* model_remove_node_children:</span></td></tr>
+<tr class="codeline" data-linenumber="1390"><td class="num" id="LN1390">1390</td><td class="line"> <span class='comment'>* @model: the #PlumaFileBrowserStore</span></td></tr>
+<tr class="codeline" data-linenumber="1391"><td class="num" id="LN1391">1391</td><td class="line"> <span class='comment'>* @node: the FileBrowserNode to remove</span></td></tr>
+<tr class="codeline" data-linenumber="1392"><td class="num" id="LN1392">1392</td><td class="line"> <span class='comment'>* @path: the path of the node, or NULL to let the path be calculated</span></td></tr>
+<tr class="codeline" data-linenumber="1393"><td class="num" id="LN1393">1393</td><td class="line"> <span class='comment'>* @free_nodes: whether to also remove the nodes from memory</span></td></tr>
+<tr class="codeline" data-linenumber="1394"><td class="num" id="LN1394">1394</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="1395"><td class="num" id="LN1395">1395</td><td class="line"> <span class='comment'>* Removes all the children of node from the model. This function is used</span></td></tr>
+<tr class="codeline" data-linenumber="1396"><td class="num" id="LN1396">1396</td><td class="line"> <span class='comment'>* to remove the child nodes from the _model_. Don't use it to just free</span></td></tr>
+<tr class="codeline" data-linenumber="1397"><td class="num" id="LN1397">1397</td><td class="line"> <span class='comment'>* a node.</span></td></tr>
+<tr class="codeline" data-linenumber="1398"><td class="num" id="LN1398">1398</td><td class="line"> <span class='comment'>**/</span></td></tr>
+<tr class="codeline" data-linenumber="1399"><td class="num" id="LN1399">1399</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1400"><td class="num" id="LN1400">1400</td><td class="line">model_remove_node_children (PlumaFileBrowserStore * model,</td></tr>
+<tr class="codeline" data-linenumber="1401"><td class="num" id="LN1401">1401</td><td class="line"> FileBrowserNode * node,</td></tr>
+<tr class="codeline" data-linenumber="1402"><td class="num" id="LN1402">1402</td><td class="line"> GtkTreePath * path,</td></tr>
+<tr class="codeline" data-linenumber="1403"><td class="num" id="LN1403">1403</td><td class="line"> gboolean free_nodes)</td></tr>
+<tr class="codeline" data-linenumber="1404"><td class="num" id="LN1404">1404</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1405"><td class="num" id="LN1405">1405</td><td class="line"> FileBrowserNodeDir *dir;</td></tr>
+<tr class="codeline" data-linenumber="1406"><td class="num" id="LN1406">1406</td><td class="line"> GtkTreePath *path_child;</td></tr>
+<tr class="codeline" data-linenumber="1407"><td class="num" id="LN1407">1407</td><td class="line"> GSList *list;</td></tr>
+<tr class="codeline" data-linenumber="1408"><td class="num" id="LN1408">1408</td><td class="line"> GSList *item;</td></tr>
+<tr class="codeline" data-linenumber="1409"><td class="num" id="LN1409">1409</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1410"><td class="num" id="LN1410">1410</td><td class="line"> <span class='keyword'>if</span> (node == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> || !<span class='macro'>NODE_IS_DIR (node)<span class='macro_popup'>(((node)-&gt;flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_DIRECTORY<br>))</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="1411"><td class="num" id="LN1411">1411</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="1412"><td class="num" id="LN1412">1412</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1413"><td class="num" id="LN1413">1413</td><td class="line"> dir = <span class='macro'>FILE_BROWSER_NODE_DIR (node)<span class='macro_popup'>((FileBrowserNodeDir *)(node))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1414"><td class="num" id="LN1414">1414</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1415"><td class="num" id="LN1415">1415</td><td class="line"> <span class='keyword'>if</span> (dir-&gt;children == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="1416"><td class="num" id="LN1416">1416</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="1417"><td class="num" id="LN1417">1417</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1418"><td class="num" id="LN1418">1418</td><td class="line"> <span class='keyword'>if</span> (!model_node_visibility (model, node)) {</td></tr>
+<tr class="codeline" data-linenumber="1419"><td class="num" id="LN1419">1419</td><td class="line"> <span class='comment'>// Node is invisible and therefore the children can just</span></td></tr>
+<tr class="codeline" data-linenumber="1420"><td class="num" id="LN1420">1420</td><td class="line"> <span class='comment'>// be freed</span></td></tr>
+<tr class="codeline" data-linenumber="1421"><td class="num" id="LN1421">1421</td><td class="line"> <span class='keyword'>if</span> (free_nodes)</td></tr>
+<tr class="codeline" data-linenumber="1422"><td class="num" id="LN1422">1422</td><td class="line"> file_browser_node_free_children (model, node);</td></tr>
+<tr class="codeline" data-linenumber="1423"><td class="num" id="LN1423">1423</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1424"><td class="num" id="LN1424">1424</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="1425"><td class="num" id="LN1425">1425</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1426"><td class="num" id="LN1426">1426</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1427"><td class="num" id="LN1427">1427</td><td class="line"> <span class='keyword'>if</span> (path == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="1428"><td class="num" id="LN1428">1428</td><td class="line"> path_child =</td></tr>
+<tr class="codeline" data-linenumber="1429"><td class="num" id="LN1429">1429</td><td class="line"> pluma_file_browser_store_get_path_real (model, node);</td></tr>
+<tr class="codeline" data-linenumber="1430"><td class="num" id="LN1430">1430</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="1431"><td class="num" id="LN1431">1431</td><td class="line"> path_child = gtk_tree_path_copy (path);</td></tr>
+<tr class="codeline" data-linenumber="1432"><td class="num" id="LN1432">1432</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1433"><td class="num" id="LN1433">1433</td><td class="line"> gtk_tree_path_down (path_child);</td></tr>
+<tr class="codeline" data-linenumber="1434"><td class="num" id="LN1434">1434</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1435"><td class="num" id="LN1435">1435</td><td class="line"> list = g_slist_copy (dir-&gt;children);</td></tr>
+<tr class="codeline" data-linenumber="1436"><td class="num" id="LN1436">1436</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1437"><td class="num" id="LN1437">1437</td><td class="line"> <span class='keyword'>for</span> (item = list; item; item = item-&gt;next) {</td></tr>
+<tr class="codeline" data-linenumber="1438"><td class="num" id="LN1438">1438</td><td class="line"> model_remove_node (model, (FileBrowserNode *) (item-&gt;data),</td></tr>
+<tr class="codeline" data-linenumber="1439"><td class="num" id="LN1439">1439</td><td class="line"> path_child, free_nodes);</td></tr>
+<tr class="codeline" data-linenumber="1440"><td class="num" id="LN1440">1440</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1441"><td class="num" id="LN1441">1441</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1442"><td class="num" id="LN1442">1442</td><td class="line"> g_slist_free (list);</td></tr>
+<tr class="codeline" data-linenumber="1443"><td class="num" id="LN1443">1443</td><td class="line"> gtk_tree_path_free (path_child);</td></tr>
+<tr class="codeline" data-linenumber="1444"><td class="num" id="LN1444">1444</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1445"><td class="num" id="LN1445">1445</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1446"><td class="num" id="LN1446">1446</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="1447"><td class="num" id="LN1447">1447</td><td class="line"> <span class='comment'>* model_remove_node:</span></td></tr>
+<tr class="codeline" data-linenumber="1448"><td class="num" id="LN1448">1448</td><td class="line"> <span class='comment'>* @model: the #PlumaFileBrowserStore</span></td></tr>
+<tr class="codeline" data-linenumber="1449"><td class="num" id="LN1449">1449</td><td class="line"> <span class='comment'>* @node: the FileBrowserNode to remove</span></td></tr>
+<tr class="codeline" data-linenumber="1450"><td class="num" id="LN1450">1450</td><td class="line"> <span class='comment'>* @path: the path to use to remove this node, or NULL to use the path</span></td></tr>
+<tr class="codeline" data-linenumber="1451"><td class="num" id="LN1451">1451</td><td class="line"> <span class='comment'>* calculated from the node itself</span></td></tr>
+<tr class="codeline" data-linenumber="1452"><td class="num" id="LN1452">1452</td><td class="line"> <span class='comment'>* @free_nodes: whether to also remove the nodes from memory</span></td></tr>
+<tr class="codeline" data-linenumber="1453"><td class="num" id="LN1453">1453</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="1454"><td class="num" id="LN1454">1454</td><td class="line"> <span class='comment'>* Removes this node and all its children from the model. This function is used</span></td></tr>
+<tr class="codeline" data-linenumber="1455"><td class="num" id="LN1455">1455</td><td class="line"> <span class='comment'>* to remove the node from the _model_. Don't use it to just free</span></td></tr>
+<tr class="codeline" data-linenumber="1456"><td class="num" id="LN1456">1456</td><td class="line"> <span class='comment'>* a node.</span></td></tr>
+<tr class="codeline" data-linenumber="1457"><td class="num" id="LN1457">1457</td><td class="line"> <span class='comment'>**/</span></td></tr>
+<tr class="codeline" data-linenumber="1458"><td class="num" id="LN1458">1458</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1459"><td class="num" id="LN1459">1459</td><td class="line">model_remove_node (PlumaFileBrowserStore * model,</td></tr>
+<tr class="codeline" data-linenumber="1460"><td class="num" id="LN1460">1460</td><td class="line"> FileBrowserNode * node,</td></tr>
+<tr class="codeline" data-linenumber="1461"><td class="num" id="LN1461">1461</td><td class="line"> GtkTreePath * path,</td></tr>
+<tr class="codeline" data-linenumber="1462"><td class="num" id="LN1462">1462</td><td class="line"> gboolean free_nodes)</td></tr>
+<tr class="codeline" data-linenumber="1463"><td class="num" id="LN1463">1463</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1464"><td class="num" id="LN1464">1464</td><td class="line"> gboolean free_path = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1465"><td class="num" id="LN1465">1465</td><td class="line"> FileBrowserNode *parent;</td></tr>
+<tr class="codeline" data-linenumber="1466"><td class="num" id="LN1466">1466</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1467"><td class="num" id="LN1467">1467</td><td class="line"> <span class='keyword'>if</span> (path == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1468"><td class="num" id="LN1468">1468</td><td class="line"> path =</td></tr>
+<tr class="codeline" data-linenumber="1469"><td class="num" id="LN1469">1469</td><td class="line"> pluma_file_browser_store_get_path_real (model, node);</td></tr>
+<tr class="codeline" data-linenumber="1470"><td class="num" id="LN1470">1470</td><td class="line"> free_path = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1471"><td class="num" id="LN1471">1471</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1472"><td class="num" id="LN1472">1472</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1473"><td class="num" id="LN1473">1473</td><td class="line"> model_remove_node_children (model, node, path, free_nodes);</td></tr>
+<tr class="codeline" data-linenumber="1474"><td class="num" id="LN1474">1474</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1475"><td class="num" id="LN1475">1475</td><td class="line"> <span class='comment'>/* Only delete if the node is visible in the tree (but only when it's</span></td></tr>
+<tr class="codeline" data-linenumber="1476"><td class="num" id="LN1476">1476</td><td class="line"> <span class='comment'>not the virtual root) */</span></td></tr>
+<tr class="codeline" data-linenumber="1477"><td class="num" id="LN1477">1477</td><td class="line"> <span class='keyword'>if</span> (model_node_visibility (model, node) &amp;&amp; node != model-&gt;priv-&gt;virtual_root)</td></tr>
+<tr class="codeline" data-linenumber="1478"><td class="num" id="LN1478">1478</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="1479"><td class="num" id="LN1479">1479</td><td class="line"> node-&gt;inserted = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1480"><td class="num" id="LN1480">1480</td><td class="line"> row_deleted (model, path);</td></tr>
+<tr class="codeline" data-linenumber="1481"><td class="num" id="LN1481">1481</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1482"><td class="num" id="LN1482">1482</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1483"><td class="num" id="LN1483">1483</td><td class="line"> <span class='keyword'>if</span> (free_path)</td></tr>
+<tr class="codeline" data-linenumber="1484"><td class="num" id="LN1484">1484</td><td class="line"> gtk_tree_path_free (path);</td></tr>
+<tr class="codeline" data-linenumber="1485"><td class="num" id="LN1485">1485</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1486"><td class="num" id="LN1486">1486</td><td class="line"> parent = node-&gt;parent;</td></tr>
+<tr class="codeline" data-linenumber="1487"><td class="num" id="LN1487">1487</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1488"><td class="num" id="LN1488">1488</td><td class="line"> <span class='keyword'>if</span> (free_nodes) {</td></tr>
+<tr class="codeline" data-linenumber="1489"><td class="num" id="LN1489">1489</td><td class="line"> <span class='comment'>/* Remove the node from the parents children list */</span></td></tr>
+<tr class="codeline" data-linenumber="1490"><td class="num" id="LN1490">1490</td><td class="line"> <span class='keyword'>if</span> (parent)</td></tr>
+<tr class="codeline" data-linenumber="1491"><td class="num" id="LN1491">1491</td><td class="line"> <span class='macro'>FILE_BROWSER_NODE_DIR (node-&gt;parent)<span class='macro_popup'>((FileBrowserNodeDir *)(node-&gt;parent))</span></span>-&gt;children =</td></tr>
+<tr class="codeline" data-linenumber="1492"><td class="num" id="LN1492">1492</td><td class="line"> g_slist_remove (<span class='macro'>FILE_BROWSER_NODE_DIR<span class='macro_popup'>((FileBrowserNodeDir *)(node-&gt;parent))</span></span></td></tr>
+<tr class="codeline" data-linenumber="1493"><td class="num" id="LN1493">1493</td><td class="line"> <span class='macro'>(node-&gt;parent)<span class='macro_popup'>((FileBrowserNodeDir *)(node-&gt;parent))</span></span>-&gt;children,</td></tr>
+<tr class="codeline" data-linenumber="1494"><td class="num" id="LN1494">1494</td><td class="line"> node);</td></tr>
+<tr class="codeline" data-linenumber="1495"><td class="num" id="LN1495">1495</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1496"><td class="num" id="LN1496">1496</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1497"><td class="num" id="LN1497">1497</td><td class="line"> <span class='comment'>/* If this is the virtual root, than set the parent as the virtual root */</span></td></tr>
+<tr class="codeline" data-linenumber="1498"><td class="num" id="LN1498">1498</td><td class="line"> <span class='keyword'>if</span> (node == model-&gt;priv-&gt;virtual_root)</td></tr>
+<tr class="codeline" data-linenumber="1499"><td class="num" id="LN1499">1499</td><td class="line"> set_virtual_root_from_node (model, parent);</td></tr>
+<tr class="codeline" data-linenumber="1500"><td class="num" id="LN1500">1500</td><td class="line"> <span class='keyword'>else</span> <span class='keyword'>if</span> (parent &amp;&amp; model_node_visibility (model, parent) &amp;&amp; !(free_nodes &amp;&amp; <span class='macro'>NODE_IS_DUMMY(node)<span class='macro_popup'>(((node)-&gt;flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_DUMMY<br>))</span></span>))</td></tr>
+<tr class="codeline" data-linenumber="1501"><td class="num" id="LN1501">1501</td><td class="line"> model_check_dummy (model, parent);</td></tr>
+<tr class="codeline" data-linenumber="1502"><td class="num" id="LN1502">1502</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1503"><td class="num" id="LN1503">1503</td><td class="line"> <span class='comment'>/* Now free the node if necessary */</span></td></tr>
+<tr class="codeline" data-linenumber="1504"><td class="num" id="LN1504">1504</td><td class="line"> <span class='keyword'>if</span> (free_nodes)</td></tr>
+<tr class="codeline" data-linenumber="1505"><td class="num" id="LN1505">1505</td><td class="line"> file_browser_node_free (model, node);</td></tr>
+<tr class="codeline" data-linenumber="1506"><td class="num" id="LN1506">1506</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1507"><td class="num" id="LN1507">1507</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1508"><td class="num" id="LN1508">1508</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="1509"><td class="num" id="LN1509">1509</td><td class="line"> <span class='comment'>* model_clear:</span></td></tr>
+<tr class="codeline" data-linenumber="1510"><td class="num" id="LN1510">1510</td><td class="line"> <span class='comment'>* @model: the #PlumaFileBrowserStore</span></td></tr>
+<tr class="codeline" data-linenumber="1511"><td class="num" id="LN1511">1511</td><td class="line"> <span class='comment'>* @free_nodes: whether to also remove the nodes from memory</span></td></tr>
+<tr class="codeline" data-linenumber="1512"><td class="num" id="LN1512">1512</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="1513"><td class="num" id="LN1513">1513</td><td class="line"> <span class='comment'>* Removes all nodes from the model. This function is used</span></td></tr>
+<tr class="codeline" data-linenumber="1514"><td class="num" id="LN1514">1514</td><td class="line"> <span class='comment'>* to remove all the nodes from the _model_. Don't use it to just free the</span></td></tr>
+<tr class="codeline" data-linenumber="1515"><td class="num" id="LN1515">1515</td><td class="line"> <span class='comment'>* nodes in the model.</span></td></tr>
+<tr class="codeline" data-linenumber="1516"><td class="num" id="LN1516">1516</td><td class="line"> <span class='comment'>**/</span></td></tr>
+<tr class="codeline" data-linenumber="1517"><td class="num" id="LN1517">1517</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1518"><td class="num" id="LN1518">1518</td><td class="line">model_clear (PlumaFileBrowserStore * model, gboolean free_nodes)</td></tr>
+<tr class="codeline" data-linenumber="1519"><td class="num" id="LN1519">1519</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1520"><td class="num" id="LN1520">1520</td><td class="line"> GtkTreePath *path;</td></tr>
+<tr class="codeline" data-linenumber="1521"><td class="num" id="LN1521">1521</td><td class="line"> FileBrowserNodeDir *dir;</td></tr>
+<tr class="codeline" data-linenumber="1522"><td class="num" id="LN1522">1522</td><td class="line"> FileBrowserNode *dummy;</td></tr>
+<tr class="codeline" data-linenumber="1523"><td class="num" id="LN1523">1523</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1524"><td class="num" id="LN1524">1524</td><td class="line"> path = gtk_tree_path_new ();</td></tr>
+<tr class="codeline" data-linenumber="1525"><td class="num" id="LN1525">1525</td><td class="line"> model_remove_node_children (model, model-&gt;priv-&gt;virtual_root, path,</td></tr>
+<tr class="codeline" data-linenumber="1526"><td class="num" id="LN1526">1526</td><td class="line"> free_nodes);</td></tr>
+<tr class="codeline" data-linenumber="1527"><td class="num" id="LN1527">1527</td><td class="line"> gtk_tree_path_free (path);</td></tr>
+<tr class="codeline" data-linenumber="1528"><td class="num" id="LN1528">1528</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1529"><td class="num" id="LN1529">1529</td><td class="line"> <span class='comment'>/* Remove the dummy if there is one */</span></td></tr>
+<tr class="codeline" data-linenumber="1530"><td class="num" id="LN1530">1530</td><td class="line"> <span class='keyword'>if</span> (model-&gt;priv-&gt;virtual_root) {</td></tr>
+<tr class="codeline" data-linenumber="1531"><td class="num" id="LN1531">1531</td><td class="line"> dir = <span class='macro'>FILE_BROWSER_NODE_DIR (model-&gt;priv-&gt;virtual_root)<span class='macro_popup'>((FileBrowserNodeDir *)(model-&gt;priv-&gt;virtual_root))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1532"><td class="num" id="LN1532">1532</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1533"><td class="num" id="LN1533">1533</td><td class="line"> <span class='keyword'>if</span> (dir-&gt;children != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1534"><td class="num" id="LN1534">1534</td><td class="line"> dummy = (FileBrowserNode *) (dir-&gt;children-&gt;data);</td></tr>
+<tr class="codeline" data-linenumber="1535"><td class="num" id="LN1535">1535</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1536"><td class="num" id="LN1536">1536</td><td class="line"> <span class='keyword'>if</span> (<span class='macro'>NODE_IS_DUMMY (dummy)<span class='macro_popup'>(((dummy)-&gt;flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_DUMMY<br>))</span></span></td></tr>
+<tr class="codeline" data-linenumber="1537"><td class="num" id="LN1537">1537</td><td class="line"> &amp;&amp; model_node_visibility (model, dummy)) {</td></tr>
+<tr class="codeline" data-linenumber="1538"><td class="num" id="LN1538">1538</td><td class="line"> path = gtk_tree_path_new_first ();</td></tr>
+<tr class="codeline" data-linenumber="1539"><td class="num" id="LN1539">1539</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1540"><td class="num" id="LN1540">1540</td><td class="line"> dummy-&gt;inserted = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1541"><td class="num" id="LN1541">1541</td><td class="line"> row_deleted (model, path);</td></tr>
+<tr class="codeline" data-linenumber="1542"><td class="num" id="LN1542">1542</td><td class="line"> gtk_tree_path_free (path);</td></tr>
+<tr class="codeline" data-linenumber="1543"><td class="num" id="LN1543">1543</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1544"><td class="num" id="LN1544">1544</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1545"><td class="num" id="LN1545">1545</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1546"><td class="num" id="LN1546">1546</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1547"><td class="num" id="LN1547">1547</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1548"><td class="num" id="LN1548">1548</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1549"><td class="num" id="LN1549">1549</td><td class="line">file_browser_node_unload (PlumaFileBrowserStore * model,</td></tr>
+<tr class="codeline" data-linenumber="1550"><td class="num" id="LN1550">1550</td><td class="line"> FileBrowserNode * node, gboolean remove_children)</td></tr>
+<tr class="codeline" data-linenumber="1551"><td class="num" id="LN1551">1551</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1552"><td class="num" id="LN1552">1552</td><td class="line"> FileBrowserNodeDir *dir;</td></tr>
+<tr class="codeline" data-linenumber="1553"><td class="num" id="LN1553">1553</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1554"><td class="num" id="LN1554">1554</td><td class="line"> <span class='keyword'>if</span> (node == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="1555"><td class="num" id="LN1555">1555</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="1556"><td class="num" id="LN1556">1556</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1557"><td class="num" id="LN1557">1557</td><td class="line"> <span class='keyword'>if</span> (!<span class='macro'>NODE_IS_DIR (node)<span class='macro_popup'>(((node)-&gt;flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_DIRECTORY<br>))</span></span> || !<span class='macro'>NODE_LOADED (node)<span class='macro_popup'>(((node)-&gt;flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_LOADED<br>))</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="1558"><td class="num" id="LN1558">1558</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="1559"><td class="num" id="LN1559">1559</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1560"><td class="num" id="LN1560">1560</td><td class="line"> dir = <span class='macro'>FILE_BROWSER_NODE_DIR (node)<span class='macro_popup'>((FileBrowserNodeDir *)(node))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1561"><td class="num" id="LN1561">1561</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1562"><td class="num" id="LN1562">1562</td><td class="line"> <span class='keyword'>if</span> (remove_children)</td></tr>
+<tr class="codeline" data-linenumber="1563"><td class="num" id="LN1563">1563</td><td class="line"> model_remove_node_children (model, node, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1564"><td class="num" id="LN1564">1564</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1565"><td class="num" id="LN1565">1565</td><td class="line"> <span class='keyword'>if</span> (dir-&gt;cancellable) {</td></tr>
+<tr class="codeline" data-linenumber="1566"><td class="num" id="LN1566">1566</td><td class="line"> g_cancellable_cancel (dir-&gt;cancellable);</td></tr>
+<tr class="codeline" data-linenumber="1567"><td class="num" id="LN1567">1567</td><td class="line"> g_object_unref (dir-&gt;cancellable);</td></tr>
+<tr class="codeline" data-linenumber="1568"><td class="num" id="LN1568">1568</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1569"><td class="num" id="LN1569">1569</td><td class="line"> model_end_loading (model, node);</td></tr>
+<tr class="codeline" data-linenumber="1570"><td class="num" id="LN1570">1570</td><td class="line"> dir-&gt;cancellable = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1571"><td class="num" id="LN1571">1571</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1572"><td class="num" id="LN1572">1572</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1573"><td class="num" id="LN1573">1573</td><td class="line"> <span class='keyword'>if</span> (dir-&gt;monitor) {</td></tr>
+<tr class="codeline" data-linenumber="1574"><td class="num" id="LN1574">1574</td><td class="line"> g_file_monitor_cancel (dir-&gt;monitor);</td></tr>
+<tr class="codeline" data-linenumber="1575"><td class="num" id="LN1575">1575</td><td class="line"> g_object_unref (dir-&gt;monitor);</td></tr>
+<tr class="codeline" data-linenumber="1576"><td class="num" id="LN1576">1576</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1577"><td class="num" id="LN1577">1577</td><td class="line"> dir-&gt;monitor = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1578"><td class="num" id="LN1578">1578</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1579"><td class="num" id="LN1579">1579</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1580"><td class="num" id="LN1580">1580</td><td class="line"> node-&gt;flags &amp;= ~PLUMA_FILE_BROWSER_STORE_FLAG_LOADED;</td></tr>
+<tr class="codeline" data-linenumber="1581"><td class="num" id="LN1581">1581</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1582"><td class="num" id="LN1582">1582</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1583"><td class="num" id="LN1583">1583</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1584"><td class="num" id="LN1584">1584</td><td class="line">model_recomposite_icon_real (PlumaFileBrowserStore * tree_model,</td></tr>
+<tr class="codeline" data-linenumber="1585"><td class="num" id="LN1585">1585</td><td class="line"> FileBrowserNode * node,</td></tr>
+<tr class="codeline" data-linenumber="1586"><td class="num" id="LN1586">1586</td><td class="line"> GFileInfo * info)</td></tr>
+<tr class="codeline" data-linenumber="1587"><td class="num" id="LN1587">1587</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1588"><td class="num" id="LN1588">1588</td><td class="line"> GdkPixbuf *icon;</td></tr>
+<tr class="codeline" data-linenumber="1589"><td class="num" id="LN1589">1589</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1590"><td class="num" id="LN1590">1590</td><td class="line"> <span class='macro'>g_return_if_fail (PLUMA_IS_FILE_BROWSER_STORE (tree_model))<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_125<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((tree_model)); GType __t = ((pluma_file_browser_store_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_125 = 1; else _g_boolean_var_125 =<br> 0; _g_boolean_var_125; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "PLUMA_IS_FILE_BROWSER_STORE (tree_model)"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1591"><td class="num" id="LN1591">1591</td><td class="line"> <span class='macro'>g_return_if_fail (node != NULL)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_126<br>; if (node != ((void*)0)) _g_boolean_var_126 = 1; else _g_boolean_var_126<br> = 0; _g_boolean_var_126; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "node != NULL"); return<br>; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1592"><td class="num" id="LN1592">1592</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1593"><td class="num" id="LN1593">1593</td><td class="line"> <span class='keyword'>if</span> (node-&gt;file == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="1594"><td class="num" id="LN1594">1594</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="1595"><td class="num" id="LN1595">1595</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1596"><td class="num" id="LN1596">1596</td><td class="line"> <span class='keyword'>if</span> (info) {</td></tr>
+<tr class="codeline" data-linenumber="1597"><td class="num" id="LN1597">1597</td><td class="line"> GIcon *gicon = g_file_info_get_icon (info);</td></tr>
+<tr class="codeline" data-linenumber="1598"><td class="num" id="LN1598">1598</td><td class="line"> <span class='keyword'>if</span> (gicon != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="1599"><td class="num" id="LN1599">1599</td><td class="line"> icon = pluma_file_browser_utils_pixbuf_from_icon (gicon, GTK_ICON_SIZE_MENU);</td></tr>
+<tr class="codeline" data-linenumber="1600"><td class="num" id="LN1600">1600</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="1601"><td class="num" id="LN1601">1601</td><td class="line"> icon = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1602"><td class="num" id="LN1602">1602</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="1603"><td class="num" id="LN1603">1603</td><td class="line"> icon = pluma_file_browser_utils_pixbuf_from_file (node-&gt;file, GTK_ICON_SIZE_MENU);</td></tr>
+<tr class="codeline" data-linenumber="1604"><td class="num" id="LN1604">1604</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1605"><td class="num" id="LN1605">1605</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1606"><td class="num" id="LN1606">1606</td><td class="line"> <span class='keyword'>if</span> (node-&gt;icon)</td></tr>
+<tr class="codeline" data-linenumber="1607"><td class="num" id="LN1607">1607</td><td class="line"> g_object_unref (node-&gt;icon);</td></tr>
+<tr class="codeline" data-linenumber="1608"><td class="num" id="LN1608">1608</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1609"><td class="num" id="LN1609">1609</td><td class="line"> <span class='keyword'>if</span> (node-&gt;emblem) {</td></tr>
+<tr class="codeline" data-linenumber="1610"><td class="num" id="LN1610">1610</td><td class="line"> gint icon_size;</td></tr>
+<tr class="codeline" data-linenumber="1611"><td class="num" id="LN1611">1611</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1612"><td class="num" id="LN1612">1612</td><td class="line"> gtk_icon_size_lookup (GTK_ICON_SIZE_MENU, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, &amp;icon_size);</td></tr>
+<tr class="codeline" data-linenumber="1613"><td class="num" id="LN1613">1613</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1614"><td class="num" id="LN1614">1614</td><td class="line"> <span class='keyword'>if</span> (icon == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1615"><td class="num" id="LN1615">1615</td><td class="line"> node-&gt;icon =</td></tr>
+<tr class="codeline" data-linenumber="1616"><td class="num" id="LN1616">1616</td><td class="line"> gdk_pixbuf_new (gdk_pixbuf_get_colorspace (node-&gt;emblem),</td></tr>
+<tr class="codeline" data-linenumber="1617"><td class="num" id="LN1617">1617</td><td class="line"> gdk_pixbuf_get_has_alpha (node-&gt;emblem),</td></tr>
+<tr class="codeline" data-linenumber="1618"><td class="num" id="LN1618">1618</td><td class="line"> gdk_pixbuf_get_bits_per_sample (node-&gt;emblem),</td></tr>
+<tr class="codeline" data-linenumber="1619"><td class="num" id="LN1619">1619</td><td class="line"> icon_size,</td></tr>
+<tr class="codeline" data-linenumber="1620"><td class="num" id="LN1620">1620</td><td class="line"> icon_size);</td></tr>
+<tr class="codeline" data-linenumber="1621"><td class="num" id="LN1621">1621</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="1622"><td class="num" id="LN1622">1622</td><td class="line"> node-&gt;icon = gdk_pixbuf_copy (icon);</td></tr>
+<tr class="codeline" data-linenumber="1623"><td class="num" id="LN1623">1623</td><td class="line"> g_object_unref (icon);</td></tr>
+<tr class="codeline" data-linenumber="1624"><td class="num" id="LN1624">1624</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1625"><td class="num" id="LN1625">1625</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1626"><td class="num" id="LN1626">1626</td><td class="line"> gdk_pixbuf_composite (node-&gt;emblem, node-&gt;icon,</td></tr>
+<tr class="codeline" data-linenumber="1627"><td class="num" id="LN1627">1627</td><td class="line"> icon_size - 10, icon_size - 10, 10,</td></tr>
+<tr class="codeline" data-linenumber="1628"><td class="num" id="LN1628">1628</td><td class="line"> 10, icon_size - 10, icon_size - 10,</td></tr>
+<tr class="codeline" data-linenumber="1629"><td class="num" id="LN1629">1629</td><td class="line"> 1, 1, GDK_INTERP_NEAREST, 255);</td></tr>
+<tr class="codeline" data-linenumber="1630"><td class="num" id="LN1630">1630</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="1631"><td class="num" id="LN1631">1631</td><td class="line"> node-&gt;icon = icon;</td></tr>
+<tr class="codeline" data-linenumber="1632"><td class="num" id="LN1632">1632</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1633"><td class="num" id="LN1633">1633</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1634"><td class="num" id="LN1634">1634</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1635"><td class="num" id="LN1635">1635</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1636"><td class="num" id="LN1636">1636</td><td class="line">model_recomposite_icon (PlumaFileBrowserStore * tree_model,</td></tr>
+<tr class="codeline" data-linenumber="1637"><td class="num" id="LN1637">1637</td><td class="line"> GtkTreeIter * iter)</td></tr>
+<tr class="codeline" data-linenumber="1638"><td class="num" id="LN1638">1638</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1639"><td class="num" id="LN1639">1639</td><td class="line"> <span class='macro'>g_return_if_fail (PLUMA_IS_FILE_BROWSER_STORE (tree_model))<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_127<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((tree_model)); GType __t = ((pluma_file_browser_store_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_127 = 1; else _g_boolean_var_127 =<br> 0; _g_boolean_var_127; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "PLUMA_IS_FILE_BROWSER_STORE (tree_model)"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1640"><td class="num" id="LN1640">1640</td><td class="line"> <span class='macro'>g_return_if_fail (iter != NULL)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_128<br>; if (iter != ((void*)0)) _g_boolean_var_128 = 1; else _g_boolean_var_128<br> = 0; _g_boolean_var_128; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "iter != NULL"); return<br>; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1641"><td class="num" id="LN1641">1641</td><td class="line"> <span class='macro'>g_return_if_fail (iter-&gt;user_data != NULL)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_129<br>; if (iter-&gt;user_data != ((void*)0)) _g_boolean_var_129 = 1<br>; else _g_boolean_var_129 = 0; _g_boolean_var_129; }), 1))) {<br> } else { g_return_if_fail_warning (((gchar*) 0), ((const char<br>*) (__func__)), "iter-&gt;user_data != NULL"); return; } } while<br> (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1642"><td class="num" id="LN1642">1642</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1643"><td class="num" id="LN1643">1643</td><td class="line"> model_recomposite_icon_real (tree_model,</td></tr>
+<tr class="codeline" data-linenumber="1644"><td class="num" id="LN1644">1644</td><td class="line"> (FileBrowserNode *) (iter-&gt;user_data),</td></tr>
+<tr class="codeline" data-linenumber="1645"><td class="num" id="LN1645">1645</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1646"><td class="num" id="LN1646">1646</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1647"><td class="num" id="LN1647">1647</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1648"><td class="num" id="LN1648">1648</td><td class="line"><span class='keyword'>static</span> FileBrowserNode *</td></tr>
+<tr class="codeline" data-linenumber="1649"><td class="num" id="LN1649">1649</td><td class="line">model_create_dummy_node (PlumaFileBrowserStore * model,</td></tr>
+<tr class="codeline" data-linenumber="1650"><td class="num" id="LN1650">1650</td><td class="line"> FileBrowserNode * parent)</td></tr>
+<tr class="codeline" data-linenumber="1651"><td class="num" id="LN1651">1651</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1652"><td class="num" id="LN1652">1652</td><td class="line"> FileBrowserNode *dummy;</td></tr>
+<tr class="codeline" data-linenumber="1653"><td class="num" id="LN1653">1653</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1654"><td class="num" id="LN1654">1654</td><td class="line"> dummy = file_browser_node_new (<span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, parent);</td></tr>
+<tr class="codeline" data-linenumber="1655"><td class="num" id="LN1655">1655</td><td class="line"> dummy-&gt;name = <span class='macro'>g_strdup (_(<span class='string_literal'>"(Empty)"</span>))<span class='macro_popup'>g_strdup_inline (((char *) g_dgettext ("pluma", "(Empty)")))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1656"><td class="num" id="LN1656">1656</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1657"><td class="num" id="LN1657">1657</td><td class="line"> dummy-&gt;flags |= PLUMA_FILE_BROWSER_STORE_FLAG_IS_DUMMY;</td></tr>
+<tr class="codeline" data-linenumber="1658"><td class="num" id="LN1658">1658</td><td class="line"> dummy-&gt;flags |= PLUMA_FILE_BROWSER_STORE_FLAG_IS_HIDDEN;</td></tr>
+<tr class="codeline" data-linenumber="1659"><td class="num" id="LN1659">1659</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1660"><td class="num" id="LN1660">1660</td><td class="line"> <span class='keyword'>return</span> dummy;</td></tr>
+<tr class="codeline" data-linenumber="1661"><td class="num" id="LN1661">1661</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1662"><td class="num" id="LN1662">1662</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1663"><td class="num" id="LN1663">1663</td><td class="line"><span class='keyword'>static</span> FileBrowserNode *</td></tr>
+<tr class="codeline" data-linenumber="1664"><td class="num" id="LN1664">1664</td><td class="line">model_add_dummy_node (PlumaFileBrowserStore * model,</td></tr>
+<tr class="codeline" data-linenumber="1665"><td class="num" id="LN1665">1665</td><td class="line"> FileBrowserNode * parent)</td></tr>
+<tr class="codeline" data-linenumber="1666"><td class="num" id="LN1666">1666</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1667"><td class="num" id="LN1667">1667</td><td class="line"> FileBrowserNode *dummy;</td></tr>
+<tr class="codeline" data-linenumber="1668"><td class="num" id="LN1668">1668</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1669"><td class="num" id="LN1669">1669</td><td class="line"> dummy = model_create_dummy_node (model, parent);</td></tr>
+<tr class="codeline" data-linenumber="1670"><td class="num" id="LN1670">1670</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1671"><td class="num" id="LN1671">1671</td><td class="line"> <span class='keyword'>if</span> (model_node_visibility (model, parent))</td></tr>
+<tr class="codeline" data-linenumber="1672"><td class="num" id="LN1672">1672</td><td class="line"> dummy-&gt;flags &amp;= ~PLUMA_FILE_BROWSER_STORE_FLAG_IS_HIDDEN;</td></tr>
+<tr class="codeline" data-linenumber="1673"><td class="num" id="LN1673">1673</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1674"><td class="num" id="LN1674">1674</td><td class="line"> model_add_node (model, dummy, parent);</td></tr>
+<tr class="codeline" data-linenumber="1675"><td class="num" id="LN1675">1675</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1676"><td class="num" id="LN1676">1676</td><td class="line"> <span class='keyword'>return</span> dummy;</td></tr>
+<tr class="codeline" data-linenumber="1677"><td class="num" id="LN1677">1677</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1678"><td class="num" id="LN1678">1678</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1679"><td class="num" id="LN1679">1679</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1680"><td class="num" id="LN1680">1680</td><td class="line">model_check_dummy (PlumaFileBrowserStore * model, FileBrowserNode * node)</td></tr>
+<tr class="codeline" data-linenumber="1681"><td class="num" id="LN1681">1681</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1682"><td class="num" id="LN1682">1682</td><td class="line"> <span class='comment'>// Hide the dummy child if needed</span></td></tr>
+<tr class="codeline" data-linenumber="1683"><td class="num" id="LN1683">1683</td><td class="line"> <span class='keyword'>if</span> (<span class='macro'>NODE_IS_DIR (node)<span class='macro_popup'>(((node)-&gt;flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_DIRECTORY<br>))</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1684"><td class="num" id="LN1684">1684</td><td class="line"> FileBrowserNode *dummy;</td></tr>
+<tr class="codeline" data-linenumber="1685"><td class="num" id="LN1685">1685</td><td class="line"> GtkTreeIter iter;</td></tr>
+<tr class="codeline" data-linenumber="1686"><td class="num" id="LN1686">1686</td><td class="line"> GtkTreePath *path;</td></tr>
+<tr class="codeline" data-linenumber="1687"><td class="num" id="LN1687">1687</td><td class="line"> guint flags;</td></tr>
+<tr class="codeline" data-linenumber="1688"><td class="num" id="LN1688">1688</td><td class="line"> FileBrowserNodeDir *dir;</td></tr>
+<tr class="codeline" data-linenumber="1689"><td class="num" id="LN1689">1689</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1690"><td class="num" id="LN1690">1690</td><td class="line"> dir = <span class='macro'>FILE_BROWSER_NODE_DIR (node)<span class='macro_popup'>((FileBrowserNodeDir *)(node))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1691"><td class="num" id="LN1691">1691</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1692"><td class="num" id="LN1692">1692</td><td class="line"> <span class='keyword'>if</span> (dir-&gt;children == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1693"><td class="num" id="LN1693">1693</td><td class="line"> model_add_dummy_node (model, node);</td></tr>
+<tr class="codeline" data-linenumber="1694"><td class="num" id="LN1694">1694</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="1695"><td class="num" id="LN1695">1695</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1696"><td class="num" id="LN1696">1696</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1697"><td class="num" id="LN1697">1697</td><td class="line"> dummy = (FileBrowserNode *) (dir-&gt;children-&gt;data);</td></tr>
+<tr class="codeline" data-linenumber="1698"><td class="num" id="LN1698">1698</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1699"><td class="num" id="LN1699">1699</td><td class="line"> <span class='keyword'>if</span> (!<span class='macro'>NODE_IS_DUMMY (dummy)<span class='macro_popup'>(((dummy)-&gt;flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_DUMMY<br>))</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1700"><td class="num" id="LN1700">1700</td><td class="line"> dummy = model_create_dummy_node (model, node);</td></tr>
+<tr class="codeline" data-linenumber="1701"><td class="num" id="LN1701">1701</td><td class="line"> dir-&gt;children = g_slist_prepend (dir-&gt;children, dummy);</td></tr>
+<tr class="codeline" data-linenumber="1702"><td class="num" id="LN1702">1702</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1703"><td class="num" id="LN1703">1703</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1704"><td class="num" id="LN1704">1704</td><td class="line"> <span class='keyword'>if</span> (!model_node_visibility (model, node)) {</td></tr>
+<tr class="codeline" data-linenumber="1705"><td class="num" id="LN1705">1705</td><td class="line"> dummy-&gt;flags |=</td></tr>
+<tr class="codeline" data-linenumber="1706"><td class="num" id="LN1706">1706</td><td class="line"> PLUMA_FILE_BROWSER_STORE_FLAG_IS_HIDDEN;</td></tr>
+<tr class="codeline" data-linenumber="1707"><td class="num" id="LN1707">1707</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="1708"><td class="num" id="LN1708">1708</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1709"><td class="num" id="LN1709">1709</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1710"><td class="num" id="LN1710">1710</td><td class="line"> <span class='comment'>/* Temporarily set the node to invisible to check</span></td></tr>
+<tr class="codeline" data-linenumber="1711"><td class="num" id="LN1711">1711</td><td class="line"> <span class='comment'>* for real children */</span></td></tr>
+<tr class="codeline" data-linenumber="1712"><td class="num" id="LN1712">1712</td><td class="line"> flags = dummy-&gt;flags;</td></tr>
+<tr class="codeline" data-linenumber="1713"><td class="num" id="LN1713">1713</td><td class="line"> dummy-&gt;flags |= PLUMA_FILE_BROWSER_STORE_FLAG_IS_HIDDEN;</td></tr>
+<tr class="codeline" data-linenumber="1714"><td class="num" id="LN1714">1714</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1715"><td class="num" id="LN1715">1715</td><td class="line"> <span class='keyword'>if</span> (!filter_tree_model_iter_has_child_real (model, node)) {</td></tr>
+<tr class="codeline" data-linenumber="1716"><td class="num" id="LN1716">1716</td><td class="line"> dummy-&gt;flags &amp;=</td></tr>
+<tr class="codeline" data-linenumber="1717"><td class="num" id="LN1717">1717</td><td class="line"> ~PLUMA_FILE_BROWSER_STORE_FLAG_IS_HIDDEN;</td></tr>
+<tr class="codeline" data-linenumber="1718"><td class="num" id="LN1718">1718</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1719"><td class="num" id="LN1719">1719</td><td class="line"> <span class='keyword'>if</span> (<span class='macro'>FILE_IS_HIDDEN (flags)<span class='macro_popup'>(flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_HIDDEN)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1720"><td class="num" id="LN1720">1720</td><td class="line"> <span class='comment'>// Was hidden, needs to be inserted</span></td></tr>
+<tr class="codeline" data-linenumber="1721"><td class="num" id="LN1721">1721</td><td class="line"> iter.user_data = dummy;</td></tr>
+<tr class="codeline" data-linenumber="1722"><td class="num" id="LN1722">1722</td><td class="line"> path =</td></tr>
+<tr class="codeline" data-linenumber="1723"><td class="num" id="LN1723">1723</td><td class="line"> pluma_file_browser_store_get_path_real</td></tr>
+<tr class="codeline" data-linenumber="1724"><td class="num" id="LN1724">1724</td><td class="line"> (model, dummy);</td></tr>
+<tr class="codeline" data-linenumber="1725"><td class="num" id="LN1725">1725</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1726"><td class="num" id="LN1726">1726</td><td class="line"> row_inserted (model, &amp;path, &amp;iter);</td></tr>
+<tr class="codeline" data-linenumber="1727"><td class="num" id="LN1727">1727</td><td class="line"> gtk_tree_path_free (path);</td></tr>
+<tr class="codeline" data-linenumber="1728"><td class="num" id="LN1728">1728</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1729"><td class="num" id="LN1729">1729</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="1730"><td class="num" id="LN1730">1730</td><td class="line"> <span class='keyword'>if</span> (!<span class='macro'>FILE_IS_HIDDEN (flags)<span class='macro_popup'>(flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_HIDDEN)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1731"><td class="num" id="LN1731">1731</td><td class="line"> <span class='comment'>// Was shown, needs to be removed</span></td></tr>
+<tr class="codeline" data-linenumber="1732"><td class="num" id="LN1732">1732</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1733"><td class="num" id="LN1733">1733</td><td class="line"> <span class='comment'>// To get the path we need to set it to visible temporarily</span></td></tr>
+<tr class="codeline" data-linenumber="1734"><td class="num" id="LN1734">1734</td><td class="line"> dummy-&gt;flags &amp;=</td></tr>
+<tr class="codeline" data-linenumber="1735"><td class="num" id="LN1735">1735</td><td class="line"> ~PLUMA_FILE_BROWSER_STORE_FLAG_IS_HIDDEN;</td></tr>
+<tr class="codeline" data-linenumber="1736"><td class="num" id="LN1736">1736</td><td class="line"> path =</td></tr>
+<tr class="codeline" data-linenumber="1737"><td class="num" id="LN1737">1737</td><td class="line"> pluma_file_browser_store_get_path_real</td></tr>
+<tr class="codeline" data-linenumber="1738"><td class="num" id="LN1738">1738</td><td class="line"> (model, dummy);</td></tr>
+<tr class="codeline" data-linenumber="1739"><td class="num" id="LN1739">1739</td><td class="line"> dummy-&gt;flags |=</td></tr>
+<tr class="codeline" data-linenumber="1740"><td class="num" id="LN1740">1740</td><td class="line"> PLUMA_FILE_BROWSER_STORE_FLAG_IS_HIDDEN;</td></tr>
+<tr class="codeline" data-linenumber="1741"><td class="num" id="LN1741">1741</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1742"><td class="num" id="LN1742">1742</td><td class="line"> dummy-&gt;inserted = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1743"><td class="num" id="LN1743">1743</td><td class="line"> row_deleted (model, path);</td></tr>
+<tr class="codeline" data-linenumber="1744"><td class="num" id="LN1744">1744</td><td class="line"> gtk_tree_path_free (path);</td></tr>
+<tr class="codeline" data-linenumber="1745"><td class="num" id="LN1745">1745</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1746"><td class="num" id="LN1746">1746</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1747"><td class="num" id="LN1747">1747</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1748"><td class="num" id="LN1748">1748</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1749"><td class="num" id="LN1749">1749</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1750"><td class="num" id="LN1750">1750</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1751"><td class="num" id="LN1751">1751</td><td class="line">insert_node_sorted (PlumaFileBrowserStore * model,</td></tr>
+<tr class="codeline" data-linenumber="1752"><td class="num" id="LN1752">1752</td><td class="line"> FileBrowserNode * child,</td></tr>
+<tr class="codeline" data-linenumber="1753"><td class="num" id="LN1753">1753</td><td class="line"> FileBrowserNode * parent)</td></tr>
+<tr class="codeline" data-linenumber="1754"><td class="num" id="LN1754">1754</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1755"><td class="num" id="LN1755">1755</td><td class="line"> FileBrowserNodeDir *dir;</td></tr>
+<tr class="codeline" data-linenumber="1756"><td class="num" id="LN1756">1756</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1757"><td class="num" id="LN1757">1757</td><td class="line"> dir = <span class='macro'>FILE_BROWSER_NODE_DIR (parent)<span class='macro_popup'>((FileBrowserNodeDir *)(parent))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1758"><td class="num" id="LN1758">1758</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1759"><td class="num" id="LN1759">1759</td><td class="line"> <span class='keyword'>if</span> (model-&gt;priv-&gt;sort_func == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1760"><td class="num" id="LN1760">1760</td><td class="line"> dir-&gt;children = g_slist_append (dir-&gt;children, child);</td></tr>
+<tr class="codeline" data-linenumber="1761"><td class="num" id="LN1761">1761</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="1762"><td class="num" id="LN1762">1762</td><td class="line"> dir-&gt;children =</td></tr>
+<tr class="codeline" data-linenumber="1763"><td class="num" id="LN1763">1763</td><td class="line"> g_slist_insert_sorted (dir-&gt;children, child,</td></tr>
+<tr class="codeline" data-linenumber="1764"><td class="num" id="LN1764">1764</td><td class="line"> (GCompareFunc) (model-&gt;priv-&gt;</td></tr>
+<tr class="codeline" data-linenumber="1765"><td class="num" id="LN1765">1765</td><td class="line"> sort_func));</td></tr>
+<tr class="codeline" data-linenumber="1766"><td class="num" id="LN1766">1766</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1767"><td class="num" id="LN1767">1767</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1768"><td class="num" id="LN1768">1768</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1769"><td class="num" id="LN1769">1769</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1770"><td class="num" id="LN1770">1770</td><td class="line">model_add_node (PlumaFileBrowserStore * model, FileBrowserNode * child,</td></tr>
+<tr class="codeline" data-linenumber="1771"><td class="num" id="LN1771">1771</td><td class="line"> FileBrowserNode * parent)</td></tr>
+<tr class="codeline" data-linenumber="1772"><td class="num" id="LN1772">1772</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1773"><td class="num" id="LN1773">1773</td><td class="line"> <span class='comment'>/* Add child to parents children */</span></td></tr>
+<tr class="codeline" data-linenumber="1774"><td class="num" id="LN1774">1774</td><td class="line"> insert_node_sorted (model, child, parent);</td></tr>
+<tr class="codeline" data-linenumber="1775"><td class="num" id="LN1775">1775</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1776"><td class="num" id="LN1776">1776</td><td class="line"> <span class='keyword'>if</span> (model_node_visibility (model, parent) &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="1777"><td class="num" id="LN1777">1777</td><td class="line"> model_node_visibility (model, child)) {</td></tr>
+<tr class="codeline" data-linenumber="1778"><td class="num" id="LN1778">1778</td><td class="line"> GtkTreeIter iter;</td></tr>
+<tr class="codeline" data-linenumber="1779"><td class="num" id="LN1779">1779</td><td class="line"> GtkTreePath *path;</td></tr>
+<tr class="codeline" data-linenumber="1780"><td class="num" id="LN1780">1780</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1781"><td class="num" id="LN1781">1781</td><td class="line"> iter.user_data = child;</td></tr>
+<tr class="codeline" data-linenumber="1782"><td class="num" id="LN1782">1782</td><td class="line"> path = pluma_file_browser_store_get_path_real (model, child);</td></tr>
+<tr class="codeline" data-linenumber="1783"><td class="num" id="LN1783">1783</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1784"><td class="num" id="LN1784">1784</td><td class="line"> <span class='comment'>/* Emit row inserted */</span></td></tr>
+<tr class="codeline" data-linenumber="1785"><td class="num" id="LN1785">1785</td><td class="line"> row_inserted (model, &amp;path, &amp;iter);</td></tr>
+<tr class="codeline" data-linenumber="1786"><td class="num" id="LN1786">1786</td><td class="line"> gtk_tree_path_free (path);</td></tr>
+<tr class="codeline" data-linenumber="1787"><td class="num" id="LN1787">1787</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1788"><td class="num" id="LN1788">1788</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1789"><td class="num" id="LN1789">1789</td><td class="line"> model_check_dummy (model, parent);</td></tr>
+<tr class="codeline" data-linenumber="1790"><td class="num" id="LN1790">1790</td><td class="line"> model_check_dummy (model, child);</td></tr>
+<tr class="codeline" data-linenumber="1791"><td class="num" id="LN1791">1791</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1792"><td class="num" id="LN1792">1792</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1793"><td class="num" id="LN1793">1793</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1794"><td class="num" id="LN1794">1794</td><td class="line">model_add_nodes_batch (PlumaFileBrowserStore * model,</td></tr>
+<tr class="codeline" data-linenumber="1795"><td class="num" id="LN1795">1795</td><td class="line"> GSList * children,</td></tr>
+<tr class="codeline" data-linenumber="1796"><td class="num" id="LN1796">1796</td><td class="line"> FileBrowserNode * parent)</td></tr>
+<tr class="codeline" data-linenumber="1797"><td class="num" id="LN1797">1797</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1798"><td class="num" id="LN1798">1798</td><td class="line"> GSList *sorted_children;</td></tr>
+<tr class="codeline" data-linenumber="1799"><td class="num" id="LN1799">1799</td><td class="line"> GSList *child;</td></tr>
+<tr class="codeline" data-linenumber="1800"><td class="num" id="LN1800">1800</td><td class="line"> GSList *prev;</td></tr>
+<tr class="codeline" data-linenumber="1801"><td class="num" id="LN1801">1801</td><td class="line"> GSList *l;</td></tr>
+<tr class="codeline" data-linenumber="1802"><td class="num" id="LN1802">1802</td><td class="line"> FileBrowserNodeDir *dir;</td></tr>
+<tr class="codeline" data-linenumber="1803"><td class="num" id="LN1803">1803</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1804"><td class="num" id="LN1804">1804</td><td class="line"> dir = <span class='macro'>FILE_BROWSER_NODE_DIR (parent)<span class='macro_popup'>((FileBrowserNodeDir *)(parent))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1805"><td class="num" id="LN1805">1805</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1806"><td class="num" id="LN1806">1806</td><td class="line"> sorted_children = g_slist_sort (children, (GCompareFunc) model-&gt;priv-&gt;sort_func);</td></tr>
+<tr class="codeline" data-linenumber="1807"><td class="num" id="LN1807">1807</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1808"><td class="num" id="LN1808">1808</td><td class="line"> child = sorted_children;</td></tr>
+<tr class="codeline" data-linenumber="1809"><td class="num" id="LN1809">1809</td><td class="line"> l = dir-&gt;children;</td></tr>
+<tr class="codeline" data-linenumber="1810"><td class="num" id="LN1810">1810</td><td class="line"> prev = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1811"><td class="num" id="LN1811">1811</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1812"><td class="num" id="LN1812">1812</td><td class="line"> model_check_dummy (model, parent);</td></tr>
+<tr class="codeline" data-linenumber="1813"><td class="num" id="LN1813">1813</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1814"><td class="num" id="LN1814">1814</td><td class="line"> <span class='keyword'>while</span> (child) {</td></tr>
+<tr class="codeline" data-linenumber="1815"><td class="num" id="LN1815">1815</td><td class="line"> FileBrowserNode *node = child-&gt;data;</td></tr>
+<tr class="codeline" data-linenumber="1816"><td class="num" id="LN1816">1816</td><td class="line"> GtkTreeIter iter;</td></tr>
+<tr class="codeline" data-linenumber="1817"><td class="num" id="LN1817">1817</td><td class="line"> GtkTreePath *path;</td></tr>
+<tr class="codeline" data-linenumber="1818"><td class="num" id="LN1818">1818</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1819"><td class="num" id="LN1819">1819</td><td class="line"> <span class='comment'>/* reached the end of the first list, just append the second */</span></td></tr>
+<tr class="codeline" data-linenumber="1820"><td class="num" id="LN1820">1820</td><td class="line"> <span class='keyword'>if</span> (l == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1821"><td class="num" id="LN1821">1821</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1822"><td class="num" id="LN1822">1822</td><td class="line"> dir-&gt;children = g_slist_concat (dir-&gt;children, child);</td></tr>
+<tr class="codeline" data-linenumber="1823"><td class="num" id="LN1823">1823</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1824"><td class="num" id="LN1824">1824</td><td class="line"> <span class='keyword'>for</span> (l = child; l; l = l-&gt;next) {</td></tr>
+<tr class="codeline" data-linenumber="1825"><td class="num" id="LN1825">1825</td><td class="line"> <span class='keyword'>if</span> (model_node_visibility (model, parent) &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="1826"><td class="num" id="LN1826">1826</td><td class="line"> model_node_visibility (model, l-&gt;data)) {</td></tr>
+<tr class="codeline" data-linenumber="1827"><td class="num" id="LN1827">1827</td><td class="line"> iter.user_data = l-&gt;data;</td></tr>
+<tr class="codeline" data-linenumber="1828"><td class="num" id="LN1828">1828</td><td class="line"> path = pluma_file_browser_store_get_path_real (model, l-&gt;data);</td></tr>
+<tr class="codeline" data-linenumber="1829"><td class="num" id="LN1829">1829</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1830"><td class="num" id="LN1830">1830</td><td class="line"> <span class='comment'>// Emit row inserted</span></td></tr>
+<tr class="codeline" data-linenumber="1831"><td class="num" id="LN1831">1831</td><td class="line"> row_inserted (model, &amp;path, &amp;iter);</td></tr>
+<tr class="codeline" data-linenumber="1832"><td class="num" id="LN1832">1832</td><td class="line"> gtk_tree_path_free (path);</td></tr>
+<tr class="codeline" data-linenumber="1833"><td class="num" id="LN1833">1833</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1834"><td class="num" id="LN1834">1834</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1835"><td class="num" id="LN1835">1835</td><td class="line"> model_check_dummy (model, l-&gt;data);</td></tr>
+<tr class="codeline" data-linenumber="1836"><td class="num" id="LN1836">1836</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1837"><td class="num" id="LN1837">1837</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1838"><td class="num" id="LN1838">1838</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1839"><td class="num" id="LN1839">1839</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1840"><td class="num" id="LN1840">1840</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1841"><td class="num" id="LN1841">1841</td><td class="line"> <span class='keyword'>if</span> (model-&gt;priv-&gt;sort_func (l-&gt;data, node) &gt; 0) {</td></tr>
+<tr class="codeline" data-linenumber="1842"><td class="num" id="LN1842">1842</td><td class="line"> GSList *next_child;</td></tr>
+<tr class="codeline" data-linenumber="1843"><td class="num" id="LN1843">1843</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1844"><td class="num" id="LN1844">1844</td><td class="line"> <span class='keyword'>if</span> (prev == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1845"><td class="num" id="LN1845">1845</td><td class="line"> <span class='comment'>/* prepend to the list */</span></td></tr>
+<tr class="codeline" data-linenumber="1846"><td class="num" id="LN1846">1846</td><td class="line"> dir-&gt;children = g_slist_prepend (dir-&gt;children, child);</td></tr>
+<tr class="codeline" data-linenumber="1847"><td class="num" id="LN1847">1847</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="1848"><td class="num" id="LN1848">1848</td><td class="line"> prev-&gt;next = child;</td></tr>
+<tr class="codeline" data-linenumber="1849"><td class="num" id="LN1849">1849</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1850"><td class="num" id="LN1850">1850</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1851"><td class="num" id="LN1851">1851</td><td class="line"> next_child = child-&gt;next;</td></tr>
+<tr class="codeline" data-linenumber="1852"><td class="num" id="LN1852">1852</td><td class="line"> prev = child;</td></tr>
+<tr class="codeline" data-linenumber="1853"><td class="num" id="LN1853">1853</td><td class="line"> child-&gt;next = l;</td></tr>
+<tr class="codeline" data-linenumber="1854"><td class="num" id="LN1854">1854</td><td class="line"> child = next_child;</td></tr>
+<tr class="codeline" data-linenumber="1855"><td class="num" id="LN1855">1855</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1856"><td class="num" id="LN1856">1856</td><td class="line"> <span class='keyword'>if</span> (model_node_visibility (model, parent) &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="1857"><td class="num" id="LN1857">1857</td><td class="line"> model_node_visibility (model, node)) {</td></tr>
+<tr class="codeline" data-linenumber="1858"><td class="num" id="LN1858">1858</td><td class="line"> iter.user_data = node;</td></tr>
+<tr class="codeline" data-linenumber="1859"><td class="num" id="LN1859">1859</td><td class="line"> path = pluma_file_browser_store_get_path_real (model, node);</td></tr>
+<tr class="codeline" data-linenumber="1860"><td class="num" id="LN1860">1860</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1861"><td class="num" id="LN1861">1861</td><td class="line"> <span class='comment'>// Emit row inserted</span></td></tr>
+<tr class="codeline" data-linenumber="1862"><td class="num" id="LN1862">1862</td><td class="line"> row_inserted (model, &amp;path, &amp;iter);</td></tr>
+<tr class="codeline" data-linenumber="1863"><td class="num" id="LN1863">1863</td><td class="line"> gtk_tree_path_free (path);</td></tr>
+<tr class="codeline" data-linenumber="1864"><td class="num" id="LN1864">1864</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1865"><td class="num" id="LN1865">1865</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1866"><td class="num" id="LN1866">1866</td><td class="line"> model_check_dummy (model, node);</td></tr>
+<tr class="codeline" data-linenumber="1867"><td class="num" id="LN1867">1867</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1868"><td class="num" id="LN1868">1868</td><td class="line"> <span class='comment'>/* try again at the same l position with the</span></td></tr>
+<tr class="codeline" data-linenumber="1869"><td class="num" id="LN1869">1869</td><td class="line"> <span class='comment'>* next child */</span></td></tr>
+<tr class="codeline" data-linenumber="1870"><td class="num" id="LN1870">1870</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="1871"><td class="num" id="LN1871">1871</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1872"><td class="num" id="LN1872">1872</td><td class="line"> <span class='comment'>/* Move to the next item in the list */</span></td></tr>
+<tr class="codeline" data-linenumber="1873"><td class="num" id="LN1873">1873</td><td class="line"> prev = l;</td></tr>
+<tr class="codeline" data-linenumber="1874"><td class="num" id="LN1874">1874</td><td class="line"> l = l-&gt;next;</td></tr>
+<tr class="codeline" data-linenumber="1875"><td class="num" id="LN1875">1875</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1876"><td class="num" id="LN1876">1876</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1877"><td class="num" id="LN1877">1877</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1878"><td class="num" id="LN1878">1878</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1879"><td class="num" id="LN1879">1879</td><td class="line"><span class='keyword'>static</span> gchar <span class='keyword'>const</span> *</td></tr>
+<tr class="codeline" data-linenumber="1880"><td class="num" id="LN1880">1880</td><td class="line">backup_content_type (GFileInfo * info)</td></tr>
+<tr class="codeline" data-linenumber="1881"><td class="num" id="LN1881">1881</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1882"><td class="num" id="LN1882">1882</td><td class="line"> gchar <span class='keyword'>const</span> * content;</td></tr>
+<tr class="codeline" data-linenumber="1883"><td class="num" id="LN1883">1883</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1884"><td class="num" id="LN1884">1884</td><td class="line"> <span class='keyword'>if</span> (!g_file_info_get_is_backup (info))</td></tr>
+<tr class="codeline" data-linenumber="1885"><td class="num" id="LN1885">1885</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1886"><td class="num" id="LN1886">1886</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1887"><td class="num" id="LN1887">1887</td><td class="line"> content = g_file_info_get_content_type (info);</td></tr>
+<tr class="codeline" data-linenumber="1888"><td class="num" id="LN1888">1888</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1889"><td class="num" id="LN1889">1889</td><td class="line"> <span class='keyword'>if</span> (!content || g_content_type_equals (content, <span class='string_literal'>"application/x-trash"</span>))</td></tr>
+<tr class="codeline" data-linenumber="1890"><td class="num" id="LN1890">1890</td><td class="line"> <span class='keyword'>return</span> <span class='string_literal'>"text/plain"</span>;</td></tr>
+<tr class="codeline" data-linenumber="1891"><td class="num" id="LN1891">1891</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1892"><td class="num" id="LN1892">1892</td><td class="line"> <span class='keyword'>return</span> content;</td></tr>
+<tr class="codeline" data-linenumber="1893"><td class="num" id="LN1893">1893</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1894"><td class="num" id="LN1894">1894</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1895"><td class="num" id="LN1895">1895</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1896"><td class="num" id="LN1896">1896</td><td class="line">file_browser_node_set_from_info (PlumaFileBrowserStore * model,</td></tr>
+<tr class="codeline" data-linenumber="1897"><td class="num" id="LN1897">1897</td><td class="line"> FileBrowserNode * node,</td></tr>
+<tr class="codeline" data-linenumber="1898"><td class="num" id="LN1898">1898</td><td class="line"> GFileInfo * info,</td></tr>
+<tr class="codeline" data-linenumber="1899"><td class="num" id="LN1899">1899</td><td class="line"> gboolean isadded)</td></tr>
+<tr class="codeline" data-linenumber="1900"><td class="num" id="LN1900">1900</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1901"><td class="num" id="LN1901">1901</td><td class="line"> gchar <span class='keyword'>const</span> * content;</td></tr>
+<tr class="codeline" data-linenumber="1902"><td class="num" id="LN1902">1902</td><td class="line"> gboolean free_info = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1903"><td class="num" id="LN1903">1903</td><td class="line"> GtkTreePath * path;</td></tr>
+<tr class="codeline" data-linenumber="1904"><td class="num" id="LN1904">1904</td><td class="line"> gchar * uri;</td></tr>
+<tr class="codeline" data-linenumber="1905"><td class="num" id="LN1905">1905</td><td class="line"> GError * error = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1906"><td class="num" id="LN1906">1906</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1907"><td class="num" id="LN1907">1907</td><td class="line"> <span class='keyword'>if</span> (info == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1908"><td class="num" id="LN1908">1908</td><td class="line"> info = g_file_query_info (node-&gt;file,</td></tr>
+<tr class="codeline" data-linenumber="1909"><td class="num" id="LN1909">1909</td><td class="line"> <span class='macro'>STANDARD_ATTRIBUTE_TYPES<span class='macro_popup'>"standard::type" "," "standard::is-hidden" "," "standard::is-backup"<br> "," "standard::name" "," "standard::content-type" "," "standard::icon"</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="1910"><td class="num" id="LN1910">1910</td><td class="line"> G_FILE_QUERY_INFO_NONE,</td></tr>
+<tr class="codeline" data-linenumber="1911"><td class="num" id="LN1911">1911</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="1912"><td class="num" id="LN1912">1912</td><td class="line"> &amp;error);</td></tr>
+<tr class="codeline" data-linenumber="1913"><td class="num" id="LN1913">1913</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1914"><td class="num" id="LN1914">1914</td><td class="line"> <span class='keyword'>if</span> (!info) {</td></tr>
+<tr class="codeline" data-linenumber="1915"><td class="num" id="LN1915">1915</td><td class="line"> <span class='keyword'>if</span> (!(error-&gt;domain == <span class='macro'>G_IO_ERROR<span class='macro_popup'>g_io_error_quark()</span></span> &amp;&amp; error-&gt;code == G_IO_ERROR_NOT_FOUND)) {</td></tr>
+<tr class="codeline" data-linenumber="1916"><td class="num" id="LN1916">1916</td><td class="line"> uri = g_file_get_uri (node-&gt;file);</td></tr>
+<tr class="codeline" data-linenumber="1917"><td class="num" id="LN1917">1917</td><td class="line"> g_warning (<span class='string_literal'>"Could not get info for %s: %s"</span>, uri, error-&gt;message);</td></tr>
+<tr class="codeline" data-linenumber="1918"><td class="num" id="LN1918">1918</td><td class="line"> g_free (uri);</td></tr>
+<tr class="codeline" data-linenumber="1919"><td class="num" id="LN1919">1919</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1920"><td class="num" id="LN1920">1920</td><td class="line"> g_error_free (error);</td></tr>
+<tr class="codeline" data-linenumber="1921"><td class="num" id="LN1921">1921</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1922"><td class="num" id="LN1922">1922</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="1923"><td class="num" id="LN1923">1923</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1924"><td class="num" id="LN1924">1924</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1925"><td class="num" id="LN1925">1925</td><td class="line"> free_info = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1926"><td class="num" id="LN1926">1926</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1927"><td class="num" id="LN1927">1927</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1928"><td class="num" id="LN1928">1928</td><td class="line"> <span class='keyword'>if</span> (g_file_info_get_is_hidden (info) || g_file_info_get_is_backup (info))</td></tr>
+<tr class="codeline" data-linenumber="1929"><td class="num" id="LN1929">1929</td><td class="line"> node-&gt;flags |= PLUMA_FILE_BROWSER_STORE_FLAG_IS_HIDDEN;</td></tr>
+<tr class="codeline" data-linenumber="1930"><td class="num" id="LN1930">1930</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1931"><td class="num" id="LN1931">1931</td><td class="line"> <span class='keyword'>if</span> (g_file_info_get_file_type (info) == G_FILE_TYPE_DIRECTORY)</td></tr>
+<tr class="codeline" data-linenumber="1932"><td class="num" id="LN1932">1932</td><td class="line"> node-&gt;flags |= PLUMA_FILE_BROWSER_STORE_FLAG_IS_DIRECTORY;</td></tr>
+<tr class="codeline" data-linenumber="1933"><td class="num" id="LN1933">1933</td><td class="line"> <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="1934"><td class="num" id="LN1934">1934</td><td class="line"> <span class='keyword'>if</span> (!(content = backup_content_type (info)))</td></tr>
+<tr class="codeline" data-linenumber="1935"><td class="num" id="LN1935">1935</td><td class="line"> content = g_file_info_get_content_type (info);</td></tr>
+<tr class="codeline" data-linenumber="1936"><td class="num" id="LN1936">1936</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1937"><td class="num" id="LN1937">1937</td><td class="line"> <span class='keyword'>if</span> (!content ||</td></tr>
+<tr class="codeline" data-linenumber="1938"><td class="num" id="LN1938">1938</td><td class="line"> g_content_type_is_unknown (content) ||</td></tr>
+<tr class="codeline" data-linenumber="1939"><td class="num" id="LN1939">1939</td><td class="line"> g_content_type_is_a (content, <span class='string_literal'>"text/plain"</span>))</td></tr>
+<tr class="codeline" data-linenumber="1940"><td class="num" id="LN1940">1940</td><td class="line"> node-&gt;flags |= PLUMA_FILE_BROWSER_STORE_FLAG_IS_TEXT;</td></tr>
+<tr class="codeline" data-linenumber="1941"><td class="num" id="LN1941">1941</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1942"><td class="num" id="LN1942">1942</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1943"><td class="num" id="LN1943">1943</td><td class="line"> model_recomposite_icon_real (model, node, info);</td></tr>
+<tr class="codeline" data-linenumber="1944"><td class="num" id="LN1944">1944</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1945"><td class="num" id="LN1945">1945</td><td class="line"> <span class='keyword'>if</span> (free_info)</td></tr>
+<tr class="codeline" data-linenumber="1946"><td class="num" id="LN1946">1946</td><td class="line"> g_object_unref (info);</td></tr>
+<tr class="codeline" data-linenumber="1947"><td class="num" id="LN1947">1947</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1948"><td class="num" id="LN1948">1948</td><td class="line"> <span class='keyword'>if</span> (isadded) {</td></tr>
+<tr class="codeline" data-linenumber="1949"><td class="num" id="LN1949">1949</td><td class="line"> path = pluma_file_browser_store_get_path_real (model, node);</td></tr>
+<tr class="codeline" data-linenumber="1950"><td class="num" id="LN1950">1950</td><td class="line"> model_refilter_node (model, node, &amp;path);</td></tr>
+<tr class="codeline" data-linenumber="1951"><td class="num" id="LN1951">1951</td><td class="line"> gtk_tree_path_free (path);</td></tr>
+<tr class="codeline" data-linenumber="1952"><td class="num" id="LN1952">1952</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1953"><td class="num" id="LN1953">1953</td><td class="line"> model_check_dummy (model, node-&gt;parent);</td></tr>
+<tr class="codeline" data-linenumber="1954"><td class="num" id="LN1954">1954</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="1955"><td class="num" id="LN1955">1955</td><td class="line"> model_node_update_visibility (model, node);</td></tr>
+<tr class="codeline" data-linenumber="1956"><td class="num" id="LN1956">1956</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1957"><td class="num" id="LN1957">1957</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1958"><td class="num" id="LN1958">1958</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1959"><td class="num" id="LN1959">1959</td><td class="line"><span class='keyword'>static</span> FileBrowserNode *</td></tr>
+<tr class="codeline" data-linenumber="1960"><td class="num" id="LN1960">1960</td><td class="line">node_list_contains_file (GSList *children, GFile * file)</td></tr>
+<tr class="codeline" data-linenumber="1961"><td class="num" id="LN1961">1961</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1962"><td class="num" id="LN1962">1962</td><td class="line"> GSList *item;</td></tr>
+<tr class="codeline" data-linenumber="1963"><td class="num" id="LN1963">1963</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1964"><td class="num" id="LN1964">1964</td><td class="line"> <span class='keyword'>for</span> (item = children; item; item = item-&gt;next) {</td></tr>
+<tr class="codeline" data-linenumber="1965"><td class="num" id="LN1965">1965</td><td class="line"> FileBrowserNode *node;</td></tr>
+<tr class="codeline" data-linenumber="1966"><td class="num" id="LN1966">1966</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1967"><td class="num" id="LN1967">1967</td><td class="line"> node = (FileBrowserNode *) (item-&gt;data);</td></tr>
+<tr class="codeline" data-linenumber="1968"><td class="num" id="LN1968">1968</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1969"><td class="num" id="LN1969">1969</td><td class="line"> <span class='keyword'>if</span> (node-&gt;file != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="1970"><td class="num" id="LN1970">1970</td><td class="line"> &amp;&amp; g_file_equal (node-&gt;file, file))</td></tr>
+<tr class="codeline" data-linenumber="1971"><td class="num" id="LN1971">1971</td><td class="line"> <span class='keyword'>return</span> node;</td></tr>
+<tr class="codeline" data-linenumber="1972"><td class="num" id="LN1972">1972</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1973"><td class="num" id="LN1973">1973</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1974"><td class="num" id="LN1974">1974</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1975"><td class="num" id="LN1975">1975</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1976"><td class="num" id="LN1976">1976</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1977"><td class="num" id="LN1977">1977</td><td class="line"><span class='keyword'>static</span> FileBrowserNode *</td></tr>
+<tr class="codeline" data-linenumber="1978"><td class="num" id="LN1978">1978</td><td class="line">model_add_node_from_file (PlumaFileBrowserStore * model,</td></tr>
+<tr class="codeline" data-linenumber="1979"><td class="num" id="LN1979">1979</td><td class="line"> FileBrowserNode * parent,</td></tr>
+<tr class="codeline" data-linenumber="1980"><td class="num" id="LN1980">1980</td><td class="line"> GFile * file,</td></tr>
+<tr class="codeline" data-linenumber="1981"><td class="num" id="LN1981">1981</td><td class="line"> GFileInfo * info)</td></tr>
+<tr class="codeline" data-linenumber="1982"><td class="num" id="LN1982">1982</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1983"><td class="num" id="LN1983">1983</td><td class="line"> FileBrowserNode *node;</td></tr>
+<tr class="codeline" data-linenumber="1984"><td class="num" id="LN1984">1984</td><td class="line"> gboolean free_info = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1985"><td class="num" id="LN1985">1985</td><td class="line"> GError * error = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1986"><td class="num" id="LN1986">1986</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1987"><td class="num" id="LN1987">1987</td><td class="line"> <span class='keyword'>if</span> ((node = node_list_contains_file (<span class='macro'>FILE_BROWSER_NODE_DIR (parent)<span class='macro_popup'>((FileBrowserNodeDir *)(parent))</span></span>-&gt;children, file)) == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1988"><td class="num" id="LN1988">1988</td><td class="line"> <span class='keyword'>if</span> (info == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1989"><td class="num" id="LN1989">1989</td><td class="line"> info = g_file_query_info (file,</td></tr>
+<tr class="codeline" data-linenumber="1990"><td class="num" id="LN1990">1990</td><td class="line"> <span class='macro'>STANDARD_ATTRIBUTE_TYPES<span class='macro_popup'>"standard::type" "," "standard::is-hidden" "," "standard::is-backup"<br> "," "standard::name" "," "standard::content-type" "," "standard::icon"</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="1991"><td class="num" id="LN1991">1991</td><td class="line"> G_FILE_QUERY_INFO_NONE,</td></tr>
+<tr class="codeline" data-linenumber="1992"><td class="num" id="LN1992">1992</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="1993"><td class="num" id="LN1993">1993</td><td class="line"> &amp;error);</td></tr>
+<tr class="codeline" data-linenumber="1994"><td class="num" id="LN1994">1994</td><td class="line"> free_info = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1995"><td class="num" id="LN1995">1995</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1996"><td class="num" id="LN1996">1996</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1997"><td class="num" id="LN1997">1997</td><td class="line"> <span class='keyword'>if</span> (!info) {</td></tr>
+<tr class="codeline" data-linenumber="1998"><td class="num" id="LN1998">1998</td><td class="line"> g_warning (<span class='string_literal'>"Error querying file info: %s"</span>, error-&gt;message);</td></tr>
+<tr class="codeline" data-linenumber="1999"><td class="num" id="LN1999">1999</td><td class="line"> g_error_free (error);</td></tr>
+<tr class="codeline" data-linenumber="2000"><td class="num" id="LN2000">2000</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2001"><td class="num" id="LN2001">2001</td><td class="line"> <span class='comment'>/* FIXME: What to do now then... */</span></td></tr>
+<tr class="codeline" data-linenumber="2002"><td class="num" id="LN2002">2002</td><td class="line"> node = file_browser_node_new (file, parent);</td></tr>
+<tr class="codeline" data-linenumber="2003"><td class="num" id="LN2003">2003</td><td class="line"> } <span class='keyword'>else</span> <span class='keyword'>if</span> (g_file_info_get_file_type (info) == G_FILE_TYPE_DIRECTORY) {</td></tr>
+<tr class="codeline" data-linenumber="2004"><td class="num" id="LN2004">2004</td><td class="line"> node = file_browser_node_dir_new (model, file, parent);</td></tr>
+<tr class="codeline" data-linenumber="2005"><td class="num" id="LN2005">2005</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="2006"><td class="num" id="LN2006">2006</td><td class="line"> node = file_browser_node_new (file, parent);</td></tr>
+<tr class="codeline" data-linenumber="2007"><td class="num" id="LN2007">2007</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2008"><td class="num" id="LN2008">2008</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2009"><td class="num" id="LN2009">2009</td><td class="line"> file_browser_node_set_from_info (model, node, info, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2010"><td class="num" id="LN2010">2010</td><td class="line"> model_add_node (model, node, parent);</td></tr>
+<tr class="codeline" data-linenumber="2011"><td class="num" id="LN2011">2011</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2012"><td class="num" id="LN2012">2012</td><td class="line"> <span class='keyword'>if</span> (info &amp;&amp; free_info)</td></tr>
+<tr class="codeline" data-linenumber="2013"><td class="num" id="LN2013">2013</td><td class="line"> g_object_unref (info);</td></tr>
+<tr class="codeline" data-linenumber="2014"><td class="num" id="LN2014">2014</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2015"><td class="num" id="LN2015">2015</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2016"><td class="num" id="LN2016">2016</td><td class="line"> <span class='keyword'>return</span> node;</td></tr>
+<tr class="codeline" data-linenumber="2017"><td class="num" id="LN2017">2017</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2018"><td class="num" id="LN2018">2018</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2019"><td class="num" id="LN2019">2019</td><td class="line"><span class='comment'>/* We pass in a copy of the list of parent-&gt;children so that we do</span></td></tr>
+<tr class="codeline" data-linenumber="2020"><td class="num" id="LN2020">2020</td><td class="line"> <span class='comment'>* not have to check if a file already exists among the ones we just</span></td></tr>
+<tr class="codeline" data-linenumber="2021"><td class="num" id="LN2021">2021</td><td class="line"> <span class='comment'>* added */</span></td></tr>
+<tr class="codeline" data-linenumber="2022"><td class="num" id="LN2022">2022</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2023"><td class="num" id="LN2023">2023</td><td class="line">model_add_nodes_from_files (PlumaFileBrowserStore * model,</td></tr>
+<tr class="codeline" data-linenumber="2024"><td class="num" id="LN2024">2024</td><td class="line"> FileBrowserNode * parent,</td></tr>
+<tr class="codeline" data-linenumber="2025"><td class="num" id="LN2025">2025</td><td class="line"> GSList * original_children,</td></tr>
+<tr class="codeline" data-linenumber="2026"><td class="num" id="LN2026">2026</td><td class="line"> GList * files)</td></tr>
+<tr class="codeline" data-linenumber="2027"><td class="num" id="LN2027">2027</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2028"><td class="num" id="LN2028">2028</td><td class="line"> GList *item;</td></tr>
+<tr class="codeline" data-linenumber="2029"><td class="num" id="LN2029">2029</td><td class="line"> GSList *nodes = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2030"><td class="num" id="LN2030">2030</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2031"><td class="num" id="LN2031">2031</td><td class="line"> <span class='keyword'>for</span> (item = files; item; item = item-&gt;next) {</td></tr>
+<tr class="codeline" data-linenumber="2032"><td class="num" id="LN2032">2032</td><td class="line"> GFileInfo *info = <span class='macro'>G_FILE_INFO (item-&gt;data)<span class='macro_popup'>((((GFileInfo*) (void *) ((item-&gt;data)))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2033"><td class="num" id="LN2033">2033</td><td class="line"> GFileType type;</td></tr>
+<tr class="codeline" data-linenumber="2034"><td class="num" id="LN2034">2034</td><td class="line"> gchar <span class='keyword'>const</span> * name;</td></tr>
+<tr class="codeline" data-linenumber="2035"><td class="num" id="LN2035">2035</td><td class="line"> GFile * file;</td></tr>
+<tr class="codeline" data-linenumber="2036"><td class="num" id="LN2036">2036</td><td class="line"> FileBrowserNode *node;</td></tr>
+<tr class="codeline" data-linenumber="2037"><td class="num" id="LN2037">2037</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2038"><td class="num" id="LN2038">2038</td><td class="line"> type = g_file_info_get_file_type (info);</td></tr>
+<tr class="codeline" data-linenumber="2039"><td class="num" id="LN2039">2039</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2040"><td class="num" id="LN2040">2040</td><td class="line"> <span class='comment'>/* Skip all non regular, non directory files */</span></td></tr>
+<tr class="codeline" data-linenumber="2041"><td class="num" id="LN2041">2041</td><td class="line"> <span class='keyword'>if</span> (type != G_FILE_TYPE_REGULAR &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="2042"><td class="num" id="LN2042">2042</td><td class="line"> type != G_FILE_TYPE_DIRECTORY &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="2043"><td class="num" id="LN2043">2043</td><td class="line"> type != G_FILE_TYPE_SYMBOLIC_LINK) {</td></tr>
+<tr class="codeline" data-linenumber="2044"><td class="num" id="LN2044">2044</td><td class="line"> g_object_unref (info);</td></tr>
+<tr class="codeline" data-linenumber="2045"><td class="num" id="LN2045">2045</td><td class="line"> <span class='keyword'>continue</span>;</td></tr>
+<tr class="codeline" data-linenumber="2046"><td class="num" id="LN2046">2046</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2047"><td class="num" id="LN2047">2047</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2048"><td class="num" id="LN2048">2048</td><td class="line"> name = g_file_info_get_name (info);</td></tr>
+<tr class="codeline" data-linenumber="2049"><td class="num" id="LN2049">2049</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2050"><td class="num" id="LN2050">2050</td><td class="line"> <span class='comment'>/* Skip '.' and '..' directories */</span></td></tr>
+<tr class="codeline" data-linenumber="2051"><td class="num" id="LN2051">2051</td><td class="line"> <span class='keyword'>if</span> (type == G_FILE_TYPE_DIRECTORY &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="2052"><td class="num" id="LN2052">2052</td><td class="line"> (strcmp (name, <span class='string_literal'>"."</span>) == 0 ||</td></tr>
+<tr class="codeline" data-linenumber="2053"><td class="num" id="LN2053">2053</td><td class="line"> strcmp (name, <span class='string_literal'>".."</span>) == 0)) {</td></tr>
+<tr class="codeline" data-linenumber="2054"><td class="num" id="LN2054">2054</td><td class="line"> <span class='keyword'>continue</span>;</td></tr>
+<tr class="codeline" data-linenumber="2055"><td class="num" id="LN2055">2055</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2056"><td class="num" id="LN2056">2056</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2057"><td class="num" id="LN2057">2057</td><td class="line"> file = g_file_get_child (parent-&gt;file, name);</td></tr>
+<tr class="codeline" data-linenumber="2058"><td class="num" id="LN2058">2058</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2059"><td class="num" id="LN2059">2059</td><td class="line"> <span class='keyword'>if</span> ((node = node_list_contains_file (original_children, file)) == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="2060"><td class="num" id="LN2060">2060</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2061"><td class="num" id="LN2061">2061</td><td class="line"> <span class='keyword'>if</span> (g_file_info_get_file_type (info) == G_FILE_TYPE_DIRECTORY) {</td></tr>
+<tr class="codeline" data-linenumber="2062"><td class="num" id="LN2062">2062</td><td class="line"> node = file_browser_node_dir_new (model, file, parent);</td></tr>
+<tr class="codeline" data-linenumber="2063"><td class="num" id="LN2063">2063</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="2064"><td class="num" id="LN2064">2064</td><td class="line"> node = file_browser_node_new (file, parent);</td></tr>
+<tr class="codeline" data-linenumber="2065"><td class="num" id="LN2065">2065</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2066"><td class="num" id="LN2066">2066</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2067"><td class="num" id="LN2067">2067</td><td class="line"> file_browser_node_set_from_info (model, node, info, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2068"><td class="num" id="LN2068">2068</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2069"><td class="num" id="LN2069">2069</td><td class="line"> nodes = g_slist_prepend (nodes, node);</td></tr>
+<tr class="codeline" data-linenumber="2070"><td class="num" id="LN2070">2070</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2071"><td class="num" id="LN2071">2071</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2072"><td class="num" id="LN2072">2072</td><td class="line"> g_object_unref (file);</td></tr>
+<tr class="codeline" data-linenumber="2073"><td class="num" id="LN2073">2073</td><td class="line"> g_object_unref (info);</td></tr>
+<tr class="codeline" data-linenumber="2074"><td class="num" id="LN2074">2074</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2075"><td class="num" id="LN2075">2075</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2076"><td class="num" id="LN2076">2076</td><td class="line"> <span class='keyword'>if</span> (nodes)</td></tr>
+<tr class="codeline" data-linenumber="2077"><td class="num" id="LN2077">2077</td><td class="line"> model_add_nodes_batch (model, nodes, parent);</td></tr>
+<tr class="codeline" data-linenumber="2078"><td class="num" id="LN2078">2078</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2079"><td class="num" id="LN2079">2079</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2080"><td class="num" id="LN2080">2080</td><td class="line"><span class='keyword'>static</span> FileBrowserNode *</td></tr>
+<tr class="codeline" data-linenumber="2081"><td class="num" id="LN2081">2081</td><td class="line">model_add_node_from_dir (PlumaFileBrowserStore * model,</td></tr>
+<tr class="codeline" data-linenumber="2082"><td class="num" id="LN2082">2082</td><td class="line"> FileBrowserNode * parent,</td></tr>
+<tr class="codeline" data-linenumber="2083"><td class="num" id="LN2083">2083</td><td class="line"> GFile * file)</td></tr>
+<tr class="codeline" data-linenumber="2084"><td class="num" id="LN2084">2084</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2085"><td class="num" id="LN2085">2085</td><td class="line"> FileBrowserNode *node;</td></tr>
+<tr class="codeline" data-linenumber="2086"><td class="num" id="LN2086">2086</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2087"><td class="num" id="LN2087">2087</td><td class="line"> <span class='comment'>/* Check if it already exists */</span></td></tr>
+<tr class="codeline" data-linenumber="2088"><td class="num" id="LN2088">2088</td><td class="line"> <span class='keyword'>if</span> ((node = node_list_contains_file (<span class='macro'>FILE_BROWSER_NODE_DIR (parent)<span class='macro_popup'>((FileBrowserNodeDir *)(parent))</span></span>-&gt;children, file)) == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="2089"><td class="num" id="LN2089">2089</td><td class="line"> node = file_browser_node_dir_new (model, file, parent);</td></tr>
+<tr class="codeline" data-linenumber="2090"><td class="num" id="LN2090">2090</td><td class="line"> file_browser_node_set_from_info (model, node, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2091"><td class="num" id="LN2091">2091</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2092"><td class="num" id="LN2092">2092</td><td class="line"> <span class='keyword'>if</span> (node-&gt;name == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="2093"><td class="num" id="LN2093">2093</td><td class="line"> file_browser_node_set_name (node);</td></tr>
+<tr class="codeline" data-linenumber="2094"><td class="num" id="LN2094">2094</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2095"><td class="num" id="LN2095">2095</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2096"><td class="num" id="LN2096">2096</td><td class="line"> <span class='keyword'>if</span> (node-&gt;icon == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="2097"><td class="num" id="LN2097">2097</td><td class="line"> node-&gt;icon = pluma_file_browser_utils_pixbuf_from_theme (<span class='string_literal'>"folder"</span>, GTK_ICON_SIZE_MENU);</td></tr>
+<tr class="codeline" data-linenumber="2098"><td class="num" id="LN2098">2098</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2099"><td class="num" id="LN2099">2099</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2100"><td class="num" id="LN2100">2100</td><td class="line"> model_add_node (model, node, parent);</td></tr>
+<tr class="codeline" data-linenumber="2101"><td class="num" id="LN2101">2101</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2102"><td class="num" id="LN2102">2102</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2103"><td class="num" id="LN2103">2103</td><td class="line"> <span class='keyword'>return</span> node;</td></tr>
+<tr class="codeline" data-linenumber="2104"><td class="num" id="LN2104">2104</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2105"><td class="num" id="LN2105">2105</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2106"><td class="num" id="LN2106">2106</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2107"><td class="num" id="LN2107">2107</td><td class="line">on_directory_monitor_event (GFileMonitor * monitor,</td></tr>
+<tr class="codeline" data-linenumber="2108"><td class="num" id="LN2108">2108</td><td class="line"> GFile * file,</td></tr>
+<tr class="codeline" data-linenumber="2109"><td class="num" id="LN2109">2109</td><td class="line"> GFile * other_file,</td></tr>
+<tr class="codeline" data-linenumber="2110"><td class="num" id="LN2110">2110</td><td class="line"> GFileMonitorEvent event_type,</td></tr>
+<tr class="codeline" data-linenumber="2111"><td class="num" id="LN2111">2111</td><td class="line"> FileBrowserNode * parent)</td></tr>
+<tr class="codeline" data-linenumber="2112"><td class="num" id="LN2112">2112</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2113"><td class="num" id="LN2113">2113</td><td class="line"> FileBrowserNode *node;</td></tr>
+<tr class="codeline" data-linenumber="2114"><td class="num" id="LN2114">2114</td><td class="line"> FileBrowserNodeDir *dir = <span class='macro'>FILE_BROWSER_NODE_DIR (parent)<span class='macro_popup'>((FileBrowserNodeDir *)(parent))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2115"><td class="num" id="LN2115">2115</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2116"><td class="num" id="LN2116">2116</td><td class="line"> <span class='keyword'>switch</span> (event_type) {</td></tr>
+<tr class="codeline" data-linenumber="2117"><td class="num" id="LN2117">2117</td><td class="line"> <span class='keyword'>case</span> G_FILE_MONITOR_EVENT_DELETED:</td></tr>
+<tr class="codeline" data-linenumber="2118"><td class="num" id="LN2118">2118</td><td class="line"> node = node_list_contains_file (dir-&gt;children, file);</td></tr>
+<tr class="codeline" data-linenumber="2119"><td class="num" id="LN2119">2119</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2120"><td class="num" id="LN2120">2120</td><td class="line"> <span class='keyword'>if</span> (node != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="2121"><td class="num" id="LN2121">2121</td><td class="line"> model_remove_node (dir-&gt;model, node, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2122"><td class="num" id="LN2122">2122</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2123"><td class="num" id="LN2123">2123</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="2124"><td class="num" id="LN2124">2124</td><td class="line"> <span class='keyword'>case</span> G_FILE_MONITOR_EVENT_CREATED:</td></tr>
+<tr class="codeline" data-linenumber="2125"><td class="num" id="LN2125">2125</td><td class="line"> <span class='keyword'>if</span> (g_file_query_exists (file, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)) {</td></tr>
+<tr class="codeline" data-linenumber="2126"><td class="num" id="LN2126">2126</td><td class="line"> model_add_node_from_file (dir-&gt;model, parent, file, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2127"><td class="num" id="LN2127">2127</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2128"><td class="num" id="LN2128">2128</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2129"><td class="num" id="LN2129">2129</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="2130"><td class="num" id="LN2130">2130</td><td class="line"> <span class='keyword'>default</span>:</td></tr>
+<tr class="codeline" data-linenumber="2131"><td class="num" id="LN2131">2131</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="2132"><td class="num" id="LN2132">2132</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2133"><td class="num" id="LN2133">2133</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2134"><td class="num" id="LN2134">2134</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2135"><td class="num" id="LN2135">2135</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2136"><td class="num" id="LN2136">2136</td><td class="line">async_node_free (AsyncNode *async)</td></tr>
+<tr class="codeline" data-linenumber="2137"><td class="num" id="LN2137">2137</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2138"><td class="num" id="LN2138">2138</td><td class="line"> g_object_unref (async-&gt;cancellable);</td></tr>
+<tr class="codeline" data-linenumber="2139"><td class="num" id="LN2139">2139</td><td class="line"> g_slist_free (async-&gt;original_children);</td></tr>
+<tr class="codeline" data-linenumber="2140"><td class="num" id="LN2140">2140</td><td class="line"> g_free (async);</td></tr>
+<tr class="codeline" data-linenumber="2141"><td class="num" id="LN2141">2141</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2142"><td class="num" id="LN2142">2142</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2143"><td class="num" id="LN2143">2143</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2144"><td class="num" id="LN2144">2144</td><td class="line">model_iterate_next_files_cb (GFileEnumerator * enumerator,</td></tr>
+<tr class="codeline" data-linenumber="2145"><td class="num" id="LN2145">2145</td><td class="line"> GAsyncResult * result,</td></tr>
+<tr class="codeline" data-linenumber="2146"><td class="num" id="LN2146">2146</td><td class="line"> AsyncNode * async)</td></tr>
+<tr class="codeline" data-linenumber="2147"><td class="num" id="LN2147">2147</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2148"><td class="num" id="LN2148">2148</td><td class="line"> GList * files;</td></tr>
+<tr class="codeline" data-linenumber="2149"><td class="num" id="LN2149">2149</td><td class="line"> GError * error = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2150"><td class="num" id="LN2150">2150</td><td class="line"> FileBrowserNodeDir * dir = async-&gt;dir;</td></tr>
+<tr class="codeline" data-linenumber="2151"><td class="num" id="LN2151">2151</td><td class="line"> FileBrowserNode * parent = (FileBrowserNode *)dir;</td></tr>
+<tr class="codeline" data-linenumber="2152"><td class="num" id="LN2152">2152</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2153"><td class="num" id="LN2153">2153</td><td class="line"> files = g_file_enumerator_next_files_finish (enumerator, result, &amp;error);</td></tr>
+<tr class="codeline" data-linenumber="2154"><td class="num" id="LN2154">2154</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2155"><td class="num" id="LN2155">2155</td><td class="line"> <span class='keyword'>if</span> (files == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="2156"><td class="num" id="LN2156">2156</td><td class="line"> g_file_enumerator_close (enumerator, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2157"><td class="num" id="LN2157">2157</td><td class="line"> async_node_free (async);</td></tr>
+<tr class="codeline" data-linenumber="2158"><td class="num" id="LN2158">2158</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2159"><td class="num" id="LN2159">2159</td><td class="line"> <span class='keyword'>if</span> (!error)</td></tr>
+<tr class="codeline" data-linenumber="2160"><td class="num" id="LN2160">2160</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="2161"><td class="num" id="LN2161">2161</td><td class="line"> <span class='comment'>/* We're done loading */</span></td></tr>
+<tr class="codeline" data-linenumber="2162"><td class="num" id="LN2162">2162</td><td class="line"> g_object_unref (dir-&gt;cancellable);</td></tr>
+<tr class="codeline" data-linenumber="2163"><td class="num" id="LN2163">2163</td><td class="line"> dir-&gt;cancellable = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2164"><td class="num" id="LN2164">2164</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2165"><td class="num" id="LN2165">2165</td><td class="line"><span class='comment'>/*</span></td></tr>
+<tr class="codeline" data-linenumber="2166"><td class="num" id="LN2166">2166</td><td class="line"> <span class='comment'>* FIXME: This is temporarly, it is a bug in gio:</span></td></tr>
+<tr class="codeline" data-linenumber="2167"><td class="num" id="LN2167">2167</td><td class="line"> <span class='comment'>* http://bugzilla.gnome.org/show_bug.cgi?id=565924</span></td></tr>
+<tr class="codeline" data-linenumber="2168"><td class="num" id="LN2168">2168</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="2169"><td class="num" id="LN2169">2169</td><td class="line"> <span class='keyword'>if</span> (g_file_is_native (parent-&gt;file) &amp;&amp; dir-&gt;monitor == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="2170"><td class="num" id="LN2170">2170</td><td class="line"> dir-&gt;monitor = g_file_monitor_directory (parent-&gt;file,</td></tr>
+<tr class="codeline" data-linenumber="2171"><td class="num" id="LN2171">2171</td><td class="line"> G_FILE_MONITOR_NONE,</td></tr>
+<tr class="codeline" data-linenumber="2172"><td class="num" id="LN2172">2172</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="2173"><td class="num" id="LN2173">2173</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2174"><td class="num" id="LN2174">2174</td><td class="line"> <span class='keyword'>if</span> (dir-&gt;monitor != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="2175"><td class="num" id="LN2175">2175</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="2176"><td class="num" id="LN2176">2176</td><td class="line"> <span class='macro'>g_signal_connect (dir-&gt;monitor,<span class='macro_popup'>g_signal_connect_data ((dir-&gt;monitor), ("changed"), (((GCallback<br>) (on_directory_monitor_event))), (parent), ((void*)0), (GConnectFlags<br>) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="2177"><td class="num" id="LN2177">2177</td><td class="line"> <span class='string_literal'><span class='macro'>"changed"</span>,<span class='macro_popup'>g_signal_connect_data ((dir-&gt;monitor), ("changed"), (((GCallback<br>) (on_directory_monitor_event))), (parent), ((void*)0), (GConnectFlags<br>) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="2178"><td class="num" id="LN2178">2178</td><td class="line"> <span class='macro'>G_CALLBACK (on_directory_monitor_event),<span class='macro_popup'>g_signal_connect_data ((dir-&gt;monitor), ("changed"), (((GCallback<br>) (on_directory_monitor_event))), (parent), ((void*)0), (GConnectFlags<br>) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="2179"><td class="num" id="LN2179">2179</td><td class="line"> <span class='macro'>parent)<span class='macro_popup'>g_signal_connect_data ((dir-&gt;monitor), ("changed"), (((GCallback<br>) (on_directory_monitor_event))), (parent), ((void*)0), (GConnectFlags<br>) 0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2180"><td class="num" id="LN2180">2180</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2181"><td class="num" id="LN2181">2181</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2182"><td class="num" id="LN2182">2182</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2183"><td class="num" id="LN2183">2183</td><td class="line"> model_check_dummy (dir-&gt;model, parent);</td></tr>
+<tr class="codeline" data-linenumber="2184"><td class="num" id="LN2184">2184</td><td class="line"> model_end_loading (dir-&gt;model, parent);</td></tr>
+<tr class="codeline" data-linenumber="2185"><td class="num" id="LN2185">2185</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="2186"><td class="num" id="LN2186">2186</td><td class="line"> <span class='comment'>/* Simply return if we were cancelled */</span></td></tr>
+<tr class="codeline" data-linenumber="2187"><td class="num" id="LN2187">2187</td><td class="line"> <span class='keyword'>if</span> (error-&gt;domain == <span class='macro'>G_IO_ERROR<span class='macro_popup'>g_io_error_quark()</span></span> &amp;&amp; error-&gt;code == G_IO_ERROR_CANCELLED)</td></tr>
+<tr class="codeline" data-linenumber="2188"><td class="num" id="LN2188">2188</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="2189"><td class="num" id="LN2189">2189</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2190"><td class="num" id="LN2190">2190</td><td class="line"> <span class='comment'>/* Otherwise handle the error appropriately */</span></td></tr>
+<tr class="codeline" data-linenumber="2191"><td class="num" id="LN2191">2191</td><td class="line"> g_signal_emit (dir-&gt;model,</td></tr>
+<tr class="codeline" data-linenumber="2192"><td class="num" id="LN2192">2192</td><td class="line"> model_signals[ERROR],</td></tr>
+<tr class="codeline" data-linenumber="2193"><td class="num" id="LN2193">2193</td><td class="line"> 0,</td></tr>
+<tr class="codeline" data-linenumber="2194"><td class="num" id="LN2194">2194</td><td class="line"> PLUMA_FILE_BROWSER_ERROR_LOAD_DIRECTORY,</td></tr>
+<tr class="codeline" data-linenumber="2195"><td class="num" id="LN2195">2195</td><td class="line"> error-&gt;message);</td></tr>
+<tr class="codeline" data-linenumber="2196"><td class="num" id="LN2196">2196</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2197"><td class="num" id="LN2197">2197</td><td class="line"> file_browser_node_unload (dir-&gt;model, (FileBrowserNode *)parent, <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2198"><td class="num" id="LN2198">2198</td><td class="line"> g_error_free (error);</td></tr>
+<tr class="codeline" data-linenumber="2199"><td class="num" id="LN2199">2199</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2200"><td class="num" id="LN2200">2200</td><td class="line"> } <span class='keyword'>else</span> <span class='keyword'>if</span> (g_cancellable_is_cancelled (async-&gt;cancellable)) {</td></tr>
+<tr class="codeline" data-linenumber="2201"><td class="num" id="LN2201">2201</td><td class="line"> <span class='comment'>/* Check cancel state manually */</span></td></tr>
+<tr class="codeline" data-linenumber="2202"><td class="num" id="LN2202">2202</td><td class="line"> g_file_enumerator_close (enumerator, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2203"><td class="num" id="LN2203">2203</td><td class="line"> async_node_free (async);</td></tr>
+<tr class="codeline" data-linenumber="2204"><td class="num" id="LN2204">2204</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="2205"><td class="num" id="LN2205">2205</td><td class="line"> model_add_nodes_from_files (dir-&gt;model, parent, async-&gt;original_children, files);</td></tr>
+<tr class="codeline" data-linenumber="2206"><td class="num" id="LN2206">2206</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2207"><td class="num" id="LN2207">2207</td><td class="line"> g_list_free (files);</td></tr>
+<tr class="codeline" data-linenumber="2208"><td class="num" id="LN2208">2208</td><td class="line"> next_files_async (enumerator, async);</td></tr>
+<tr class="codeline" data-linenumber="2209"><td class="num" id="LN2209">2209</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2210"><td class="num" id="LN2210">2210</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2211"><td class="num" id="LN2211">2211</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2212"><td class="num" id="LN2212">2212</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2213"><td class="num" id="LN2213">2213</td><td class="line">next_files_async (GFileEnumerator * enumerator,</td></tr>
+<tr class="codeline" data-linenumber="2214"><td class="num" id="LN2214">2214</td><td class="line"> AsyncNode * async)</td></tr>
+<tr class="codeline" data-linenumber="2215"><td class="num" id="LN2215">2215</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2216"><td class="num" id="LN2216">2216</td><td class="line"> g_file_enumerator_next_files_async (enumerator,</td></tr>
+<tr class="codeline" data-linenumber="2217"><td class="num" id="LN2217">2217</td><td class="line"> <span class='macro'>DIRECTORY_LOAD_ITEMS_PER_CALLBACK<span class='macro_popup'>100</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="2218"><td class="num" id="LN2218">2218</td><td class="line"> <span class='macro'>G_PRIORITY_DEFAULT<span class='macro_popup'>0</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="2219"><td class="num" id="LN2219">2219</td><td class="line"> async-&gt;cancellable,</td></tr>
+<tr class="codeline" data-linenumber="2220"><td class="num" id="LN2220">2220</td><td class="line"> (GAsyncReadyCallback)model_iterate_next_files_cb,</td></tr>
+<tr class="codeline" data-linenumber="2221"><td class="num" id="LN2221">2221</td><td class="line"> async);</td></tr>
+<tr class="codeline" data-linenumber="2222"><td class="num" id="LN2222">2222</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2223"><td class="num" id="LN2223">2223</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2224"><td class="num" id="LN2224">2224</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2225"><td class="num" id="LN2225">2225</td><td class="line">model_iterate_children_cb (GFile * file,</td></tr>
+<tr class="codeline" data-linenumber="2226"><td class="num" id="LN2226">2226</td><td class="line"> GAsyncResult * result,</td></tr>
+<tr class="codeline" data-linenumber="2227"><td class="num" id="LN2227">2227</td><td class="line"> AsyncNode * async)</td></tr>
+<tr class="codeline" data-linenumber="2228"><td class="num" id="LN2228">2228</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2229"><td class="num" id="LN2229">2229</td><td class="line"> GError * error = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2230"><td class="num" id="LN2230">2230</td><td class="line"> GFileEnumerator * enumerator;</td></tr>
+<tr class="codeline" data-linenumber="2231"><td class="num" id="LN2231">2231</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2232"><td class="num" id="LN2232">2232</td><td class="line"> <span class='keyword'>if</span> (g_cancellable_is_cancelled (async-&gt;cancellable))</td></tr>
+<tr class="codeline" data-linenumber="2233"><td class="num" id="LN2233">2233</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="2234"><td class="num" id="LN2234">2234</td><td class="line"> async_node_free (async);</td></tr>
+<tr class="codeline" data-linenumber="2235"><td class="num" id="LN2235">2235</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="2236"><td class="num" id="LN2236">2236</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2237"><td class="num" id="LN2237">2237</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2238"><td class="num" id="LN2238">2238</td><td class="line"> enumerator = g_file_enumerate_children_finish (file, result, &amp;error);</td></tr>
+<tr class="codeline" data-linenumber="2239"><td class="num" id="LN2239">2239</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2240"><td class="num" id="LN2240">2240</td><td class="line"> <span class='keyword'>if</span> (enumerator == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="2241"><td class="num" id="LN2241">2241</td><td class="line"> <span class='comment'>/* Simply return if we were cancelled or if the dir is not there */</span></td></tr>
+<tr class="codeline" data-linenumber="2242"><td class="num" id="LN2242">2242</td><td class="line"> FileBrowserNodeDir *dir = async-&gt;dir;</td></tr>
+<tr class="codeline" data-linenumber="2243"><td class="num" id="LN2243">2243</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2244"><td class="num" id="LN2244">2244</td><td class="line"> <span class='comment'>/* Otherwise handle the error appropriately */</span></td></tr>
+<tr class="codeline" data-linenumber="2245"><td class="num" id="LN2245">2245</td><td class="line"> g_signal_emit (dir-&gt;model,</td></tr>
+<tr class="codeline" data-linenumber="2246"><td class="num" id="LN2246">2246</td><td class="line"> model_signals[ERROR],</td></tr>
+<tr class="codeline" data-linenumber="2247"><td class="num" id="LN2247">2247</td><td class="line"> 0,</td></tr>
+<tr class="codeline" data-linenumber="2248"><td class="num" id="LN2248">2248</td><td class="line"> PLUMA_FILE_BROWSER_ERROR_LOAD_DIRECTORY,</td></tr>
+<tr class="codeline" data-linenumber="2249"><td class="num" id="LN2249">2249</td><td class="line"> error-&gt;message);</td></tr>
+<tr class="codeline" data-linenumber="2250"><td class="num" id="LN2250">2250</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2251"><td class="num" id="LN2251">2251</td><td class="line"> file_browser_node_unload (dir-&gt;model, (FileBrowserNode *)dir, <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2252"><td class="num" id="LN2252">2252</td><td class="line"> g_error_free (error);</td></tr>
+<tr class="codeline" data-linenumber="2253"><td class="num" id="LN2253">2253</td><td class="line"> async_node_free (async);</td></tr>
+<tr class="codeline" data-linenumber="2254"><td class="num" id="LN2254">2254</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="2255"><td class="num" id="LN2255">2255</td><td class="line"> next_files_async (enumerator, async);</td></tr>
+<tr class="codeline" data-linenumber="2256"><td class="num" id="LN2256">2256</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2257"><td class="num" id="LN2257">2257</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2258"><td class="num" id="LN2258">2258</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2259"><td class="num" id="LN2259">2259</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2260"><td class="num" id="LN2260">2260</td><td class="line">model_load_directory (PlumaFileBrowserStore * model,</td></tr>
+<tr class="codeline" data-linenumber="2261"><td class="num" id="LN2261">2261</td><td class="line"> FileBrowserNode * node)</td></tr>
+<tr class="codeline" data-linenumber="2262"><td class="num" id="LN2262">2262</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2263"><td class="num" id="LN2263">2263</td><td class="line"> FileBrowserNodeDir *dir;</td></tr>
+<tr class="codeline" data-linenumber="2264"><td class="num" id="LN2264">2264</td><td class="line"> AsyncNode *async;</td></tr>
+<tr class="codeline" data-linenumber="2265"><td class="num" id="LN2265">2265</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2266"><td class="num" id="LN2266">2266</td><td class="line"> <span class='macro'>g_return_if_fail (NODE_IS_DIR (node))<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_130<br>; if ((((node)-&gt;flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_DIRECTORY<br>))) _g_boolean_var_130 = 1; else _g_boolean_var_130 = 0; _g_boolean_var_130<br>; }), 1))) { } else { g_return_if_fail_warning (((gchar*) 0),<br> ((const char*) (__func__)), "NODE_IS_DIR (node)"); return; }<br> } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2267"><td class="num" id="LN2267">2267</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2268"><td class="num" id="LN2268">2268</td><td class="line"> dir = <span class='macro'>FILE_BROWSER_NODE_DIR (node)<span class='macro_popup'>((FileBrowserNodeDir *)(node))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2269"><td class="num" id="LN2269">2269</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2270"><td class="num" id="LN2270">2270</td><td class="line"> <span class='comment'>/* Cancel a previous load */</span></td></tr>
+<tr class="codeline" data-linenumber="2271"><td class="num" id="LN2271">2271</td><td class="line"> <span class='keyword'>if</span> (dir-&gt;cancellable != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="2272"><td class="num" id="LN2272">2272</td><td class="line"> file_browser_node_unload (dir-&gt;model, node, <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2273"><td class="num" id="LN2273">2273</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2274"><td class="num" id="LN2274">2274</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2275"><td class="num" id="LN2275">2275</td><td class="line"> node-&gt;flags |= PLUMA_FILE_BROWSER_STORE_FLAG_LOADED;</td></tr>
+<tr class="codeline" data-linenumber="2276"><td class="num" id="LN2276">2276</td><td class="line"> model_begin_loading (model, node);</td></tr>
+<tr class="codeline" data-linenumber="2277"><td class="num" id="LN2277">2277</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2278"><td class="num" id="LN2278">2278</td><td class="line"> dir-&gt;cancellable = g_cancellable_new ();</td></tr>
+<tr class="codeline" data-linenumber="2279"><td class="num" id="LN2279">2279</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2280"><td class="num" id="LN2280">2280</td><td class="line"> async = <span class='macro'>g_new (AsyncNode, 1)<span class='macro_popup'>(AsyncNode *) (__extension__ ({ gsize __n = (gsize) (1); gsize<br> __s = sizeof (AsyncNode); gpointer __p; if (__s == 1) __p = g_malloc<br> (__n); else if (__builtin_constant_p (__n) &amp;&amp; (__s ==<br> 0 || __n &lt;= (9223372036854775807L *2UL+1UL) / __s)) __p =<br> g_malloc (__n * __s); else __p = g_malloc_n (__n, __s); __p;<br> }))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2281"><td class="num" id="LN2281">2281</td><td class="line"> async-&gt;dir = dir;</td></tr>
+<tr class="codeline" data-linenumber="2282"><td class="num" id="LN2282">2282</td><td class="line"> async-&gt;cancellable = <span class='macro'>g_object_ref (dir-&gt;cancellable)<span class='macro_popup'>((__typeof__ (dir-&gt;cancellable)) (g_object_ref) (dir-&gt;cancellable<br>))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2283"><td class="num" id="LN2283">2283</td><td class="line"> async-&gt;original_children = g_slist_copy (dir-&gt;children);</td></tr>
+<tr class="codeline" data-linenumber="2284"><td class="num" id="LN2284">2284</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2285"><td class="num" id="LN2285">2285</td><td class="line"> <span class='comment'>/* Start loading async */</span></td></tr>
+<tr class="codeline" data-linenumber="2286"><td class="num" id="LN2286">2286</td><td class="line"> g_file_enumerate_children_async (node-&gt;file,</td></tr>
+<tr class="codeline" data-linenumber="2287"><td class="num" id="LN2287">2287</td><td class="line"> <span class='macro'>STANDARD_ATTRIBUTE_TYPES<span class='macro_popup'>"standard::type" "," "standard::is-hidden" "," "standard::is-backup"<br> "," "standard::name" "," "standard::content-type" "," "standard::icon"</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="2288"><td class="num" id="LN2288">2288</td><td class="line"> G_FILE_QUERY_INFO_NONE,</td></tr>
+<tr class="codeline" data-linenumber="2289"><td class="num" id="LN2289">2289</td><td class="line"> <span class='macro'>G_PRIORITY_DEFAULT<span class='macro_popup'>0</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="2290"><td class="num" id="LN2290">2290</td><td class="line"> async-&gt;cancellable,</td></tr>
+<tr class="codeline" data-linenumber="2291"><td class="num" id="LN2291">2291</td><td class="line"> (GAsyncReadyCallback)model_iterate_children_cb,</td></tr>
+<tr class="codeline" data-linenumber="2292"><td class="num" id="LN2292">2292</td><td class="line"> async);</td></tr>
+<tr class="codeline" data-linenumber="2293"><td class="num" id="LN2293">2293</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2294"><td class="num" id="LN2294">2294</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2295"><td class="num" id="LN2295">2295</td><td class="line"><span class='keyword'>static</span> GList *</td></tr>
+<tr class="codeline" data-linenumber="2296"><td class="num" id="LN2296">2296</td><td class="line">get_parent_files (PlumaFileBrowserStore * model, GFile * file)</td></tr>
+<tr class="codeline" data-linenumber="2297"><td class="num" id="LN2297">2297</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2298"><td class="num" id="LN2298">2298</td><td class="line"> GList * result = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2299"><td class="num" id="LN2299">2299</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2300"><td class="num" id="LN2300">2300</td><td class="line"> result = g_list_prepend (result, <span class='macro'>g_object_ref (file)<span class='macro_popup'>((__typeof__ (file)) (g_object_ref) (file))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2301"><td class="num" id="LN2301">2301</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2302"><td class="num" id="LN2302">2302</td><td class="line"> <span class='keyword'>while</span> ((file = g_file_get_parent (file))) {</td></tr>
+<tr class="codeline" data-linenumber="2303"><td class="num" id="LN2303">2303</td><td class="line"> <span class='keyword'>if</span> (g_file_equal (file, model-&gt;priv-&gt;root-&gt;file)) {</td></tr>
+<tr class="codeline" data-linenumber="2304"><td class="num" id="LN2304">2304</td><td class="line"> g_object_unref (file);</td></tr>
+<tr class="codeline" data-linenumber="2305"><td class="num" id="LN2305">2305</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="2306"><td class="num" id="LN2306">2306</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2307"><td class="num" id="LN2307">2307</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2308"><td class="num" id="LN2308">2308</td><td class="line"> result = g_list_prepend (result, file);</td></tr>
+<tr class="codeline" data-linenumber="2309"><td class="num" id="LN2309">2309</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2310"><td class="num" id="LN2310">2310</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2311"><td class="num" id="LN2311">2311</td><td class="line"> <span class='keyword'>return</span> result;</td></tr>
+<tr class="codeline" data-linenumber="2312"><td class="num" id="LN2312">2312</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2313"><td class="num" id="LN2313">2313</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2314"><td class="num" id="LN2314">2314</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2315"><td class="num" id="LN2315">2315</td><td class="line">model_fill (PlumaFileBrowserStore * model, FileBrowserNode * node,</td></tr>
+<tr class="codeline" data-linenumber="2316"><td class="num" id="LN2316">2316</td><td class="line"> GtkTreePath ** path)</td></tr>
+<tr class="codeline" data-linenumber="2317"><td class="num" id="LN2317">2317</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2318"><td class="num" id="LN2318">2318</td><td class="line"> gboolean free_path = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2319"><td class="num" id="LN2319">2319</td><td class="line"> GtkTreeIter iter = {0,};</td></tr>
+<tr class="codeline" data-linenumber="2320"><td class="num" id="LN2320">2320</td><td class="line"> GSList *item;</td></tr>
+<tr class="codeline" data-linenumber="2321"><td class="num" id="LN2321">2321</td><td class="line"> FileBrowserNode *child;</td></tr>
+<tr class="codeline" data-linenumber="2322"><td class="num" id="LN2322">2322</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2323"><td class="num" id="LN2323">2323</td><td class="line"> <span class='keyword'>if</span> (node == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="2324"><td class="num" id="LN2324">2324</td><td class="line"> node = model-&gt;priv-&gt;virtual_root;</td></tr>
+<tr class="codeline" data-linenumber="2325"><td class="num" id="LN2325">2325</td><td class="line"> *path = gtk_tree_path_new ();</td></tr>
+<tr class="codeline" data-linenumber="2326"><td class="num" id="LN2326">2326</td><td class="line"> free_path = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2327"><td class="num" id="LN2327">2327</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2328"><td class="num" id="LN2328">2328</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2329"><td class="num" id="LN2329">2329</td><td class="line"> <span class='keyword'>if</span> (*path == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="2330"><td class="num" id="LN2330">2330</td><td class="line"> *path =</td></tr>
+<tr class="codeline" data-linenumber="2331"><td class="num" id="LN2331">2331</td><td class="line"> pluma_file_browser_store_get_path_real (model, node);</td></tr>
+<tr class="codeline" data-linenumber="2332"><td class="num" id="LN2332">2332</td><td class="line"> free_path = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2333"><td class="num" id="LN2333">2333</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2334"><td class="num" id="LN2334">2334</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2335"><td class="num" id="LN2335">2335</td><td class="line"> <span class='keyword'>if</span> (!model_node_visibility (model, node)) {</td></tr>
+<tr class="codeline" data-linenumber="2336"><td class="num" id="LN2336">2336</td><td class="line"> <span class='keyword'>if</span> (free_path)</td></tr>
+<tr class="codeline" data-linenumber="2337"><td class="num" id="LN2337">2337</td><td class="line"> gtk_tree_path_free (*path);</td></tr>
+<tr class="codeline" data-linenumber="2338"><td class="num" id="LN2338">2338</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2339"><td class="num" id="LN2339">2339</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="2340"><td class="num" id="LN2340">2340</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2341"><td class="num" id="LN2341">2341</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2342"><td class="num" id="LN2342">2342</td><td class="line"> <span class='keyword'>if</span> (node != model-&gt;priv-&gt;virtual_root) {</td></tr>
+<tr class="codeline" data-linenumber="2343"><td class="num" id="LN2343">2343</td><td class="line"> <span class='comment'>/* Insert node */</span></td></tr>
+<tr class="codeline" data-linenumber="2344"><td class="num" id="LN2344">2344</td><td class="line"> iter.user_data = node;</td></tr>
+<tr class="codeline" data-linenumber="2345"><td class="num" id="LN2345">2345</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2346"><td class="num" id="LN2346">2346</td><td class="line"> row_inserted(model, path, &amp;iter);</td></tr>
+<tr class="codeline" data-linenumber="2347"><td class="num" id="LN2347">2347</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2348"><td class="num" id="LN2348">2348</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2349"><td class="num" id="LN2349">2349</td><td class="line"> <span class='keyword'>if</span> (<span class='macro'>NODE_IS_DIR (node)<span class='macro_popup'>(((node)-&gt;flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_DIRECTORY<br>))</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="2350"><td class="num" id="LN2350">2350</td><td class="line"> <span class='comment'>/* Go to the first child */</span></td></tr>
+<tr class="codeline" data-linenumber="2351"><td class="num" id="LN2351">2351</td><td class="line"> gtk_tree_path_down (*path);</td></tr>
+<tr class="codeline" data-linenumber="2352"><td class="num" id="LN2352">2352</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2353"><td class="num" id="LN2353">2353</td><td class="line"> <span class='keyword'>for</span> (item = <span class='macro'>FILE_BROWSER_NODE_DIR (node)<span class='macro_popup'>((FileBrowserNodeDir *)(node))</span></span>-&gt;children; item;</td></tr>
+<tr class="codeline" data-linenumber="2354"><td class="num" id="LN2354">2354</td><td class="line"> item = item-&gt;next) {</td></tr>
+<tr class="codeline" data-linenumber="2355"><td class="num" id="LN2355">2355</td><td class="line"> child = (FileBrowserNode *) (item-&gt;data);</td></tr>
+<tr class="codeline" data-linenumber="2356"><td class="num" id="LN2356">2356</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2357"><td class="num" id="LN2357">2357</td><td class="line"> <span class='keyword'>if</span> (model_node_visibility (model, child)) {</td></tr>
+<tr class="codeline" data-linenumber="2358"><td class="num" id="LN2358">2358</td><td class="line"> model_fill (model, child, path);</td></tr>
+<tr class="codeline" data-linenumber="2359"><td class="num" id="LN2359">2359</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2360"><td class="num" id="LN2360">2360</td><td class="line"> <span class='comment'>/* Increase path for next child */</span></td></tr>
+<tr class="codeline" data-linenumber="2361"><td class="num" id="LN2361">2361</td><td class="line"> gtk_tree_path_next (*path);</td></tr>
+<tr class="codeline" data-linenumber="2362"><td class="num" id="LN2362">2362</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2363"><td class="num" id="LN2363">2363</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2364"><td class="num" id="LN2364">2364</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2365"><td class="num" id="LN2365">2365</td><td class="line"> <span class='comment'>/* Move back up to node path */</span></td></tr>
+<tr class="codeline" data-linenumber="2366"><td class="num" id="LN2366">2366</td><td class="line"> gtk_tree_path_up (*path);</td></tr>
+<tr class="codeline" data-linenumber="2367"><td class="num" id="LN2367">2367</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2368"><td class="num" id="LN2368">2368</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2369"><td class="num" id="LN2369">2369</td><td class="line"> model_check_dummy (model, node);</td></tr>
+<tr class="codeline" data-linenumber="2370"><td class="num" id="LN2370">2370</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2371"><td class="num" id="LN2371">2371</td><td class="line"> <span class='keyword'>if</span> (free_path)</td></tr>
+<tr class="codeline" data-linenumber="2372"><td class="num" id="LN2372">2372</td><td class="line"> gtk_tree_path_free (*path);</td></tr>
+<tr class="codeline" data-linenumber="2373"><td class="num" id="LN2373">2373</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2374"><td class="num" id="LN2374">2374</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2375"><td class="num" id="LN2375">2375</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2376"><td class="num" id="LN2376">2376</td><td class="line">set_virtual_root_from_node (PlumaFileBrowserStore * model,</td></tr>
+<tr class="codeline" data-linenumber="2377"><td class="num" id="LN2377">2377</td><td class="line"> FileBrowserNode * node)</td></tr>
+<tr class="codeline" data-linenumber="2378"><td class="num" id="LN2378">2378</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2379"><td class="num" id="LN2379">2379</td><td class="line"> FileBrowserNode *next;</td></tr>
+<tr class="codeline" data-linenumber="2380"><td class="num" id="LN2380">2380</td><td class="line"> FileBrowserNode *prev;</td></tr>
+<tr class="codeline" data-linenumber="2381"><td class="num" id="LN2381">2381</td><td class="line"> FileBrowserNode *check;</td></tr>
+<tr class="codeline" data-linenumber="2382"><td class="num" id="LN2382">2382</td><td class="line"> FileBrowserNodeDir *dir;</td></tr>
+<tr class="codeline" data-linenumber="2383"><td class="num" id="LN2383">2383</td><td class="line"> GSList *item;</td></tr>
+<tr class="codeline" data-linenumber="2384"><td class="num" id="LN2384">2384</td><td class="line"> GSList *copy;</td></tr>
+<tr class="codeline" data-linenumber="2385"><td class="num" id="LN2385">2385</td><td class="line"> GtkTreePath *empty = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2386"><td class="num" id="LN2386">2386</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2387"><td class="num" id="LN2387">2387</td><td class="line"> <span class='macro'>g_assert (node != NULL)<span class='macro_popup'>do { if (__builtin_expect (__extension__ ({ int _g_boolean_var_131<br>; if (node != ((void*)0)) _g_boolean_var_131 = 1; else _g_boolean_var_131<br> = 0; _g_boolean_var_131; }), 1)) ; else g_assertion_message_expr<br> (((gchar*) 0), "pluma-file-browser-store.c", 2387, ((const char<br>*) (__func__)), "node != NULL"); } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2388"><td class="num" id="LN2388">2388</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2389"><td class="num" id="LN2389">2389</td><td class="line"> prev = node;</td></tr>
+<tr class="codeline" data-linenumber="2390"><td class="num" id="LN2390">2390</td><td class="line"> next = prev-&gt;parent;</td></tr>
+<tr class="codeline" data-linenumber="2391"><td class="num" id="LN2391">2391</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2392"><td class="num" id="LN2392">2392</td><td class="line"> <span class='comment'>/* Free all the nodes below that we don't need in cache */</span></td></tr>
+<tr class="codeline" data-linenumber="2393"><td class="num" id="LN2393">2393</td><td class="line"> <span class='keyword'>while</span> (prev != model-&gt;priv-&gt;root) {</td></tr>
+<tr class="codeline" data-linenumber="2394"><td class="num" id="LN2394">2394</td><td class="line"> dir = <span class='macro'>FILE_BROWSER_NODE_DIR (next)<span class='macro_popup'>((FileBrowserNodeDir *)(next))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2395"><td class="num" id="LN2395">2395</td><td class="line"> copy = g_slist_copy (dir-&gt;children);</td></tr>
+<tr class="codeline" data-linenumber="2396"><td class="num" id="LN2396">2396</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2397"><td class="num" id="LN2397">2397</td><td class="line"> <span class='keyword'>for</span> (item = copy; item; item = item-&gt;next) {</td></tr>
+<tr class="codeline" data-linenumber="2398"><td class="num" id="LN2398">2398</td><td class="line"> check = (FileBrowserNode *) (item-&gt;data);</td></tr>
+<tr class="codeline" data-linenumber="2399"><td class="num" id="LN2399">2399</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2400"><td class="num" id="LN2400">2400</td><td class="line"> <span class='keyword'>if</span> (prev == node) {</td></tr>
+<tr class="codeline" data-linenumber="2401"><td class="num" id="LN2401">2401</td><td class="line"> <span class='comment'>/* Only free the children, keeping this depth in cache */</span></td></tr>
+<tr class="codeline" data-linenumber="2402"><td class="num" id="LN2402">2402</td><td class="line"> <span class='keyword'>if</span> (check != node) {</td></tr>
+<tr class="codeline" data-linenumber="2403"><td class="num" id="LN2403">2403</td><td class="line"> file_browser_node_free_children</td></tr>
+<tr class="codeline" data-linenumber="2404"><td class="num" id="LN2404">2404</td><td class="line"> (model, check);</td></tr>
+<tr class="codeline" data-linenumber="2405"><td class="num" id="LN2405">2405</td><td class="line"> file_browser_node_unload (model,</td></tr>
+<tr class="codeline" data-linenumber="2406"><td class="num" id="LN2406">2406</td><td class="line"> check,</td></tr>
+<tr class="codeline" data-linenumber="2407"><td class="num" id="LN2407">2407</td><td class="line"> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2408"><td class="num" id="LN2408">2408</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2409"><td class="num" id="LN2409">2409</td><td class="line"> } <span class='keyword'>else</span> <span class='keyword'>if</span> (check != prev) {</td></tr>
+<tr class="codeline" data-linenumber="2410"><td class="num" id="LN2410">2410</td><td class="line"> <span class='comment'>/* Only free when the node is not in the chain */</span></td></tr>
+<tr class="codeline" data-linenumber="2411"><td class="num" id="LN2411">2411</td><td class="line"> dir-&gt;children =</td></tr>
+<tr class="codeline" data-linenumber="2412"><td class="num" id="LN2412">2412</td><td class="line"> g_slist_remove (dir-&gt;children, check);</td></tr>
+<tr class="codeline" data-linenumber="2413"><td class="num" id="LN2413">2413</td><td class="line"> file_browser_node_free (model, check);</td></tr>
+<tr class="codeline" data-linenumber="2414"><td class="num" id="LN2414">2414</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2415"><td class="num" id="LN2415">2415</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2416"><td class="num" id="LN2416">2416</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2417"><td class="num" id="LN2417">2417</td><td class="line"> <span class='keyword'>if</span> (prev != node)</td></tr>
+<tr class="codeline" data-linenumber="2418"><td class="num" id="LN2418">2418</td><td class="line"> file_browser_node_unload (model, next, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2419"><td class="num" id="LN2419">2419</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2420"><td class="num" id="LN2420">2420</td><td class="line"> g_slist_free (copy);</td></tr>
+<tr class="codeline" data-linenumber="2421"><td class="num" id="LN2421">2421</td><td class="line"> prev = next;</td></tr>
+<tr class="codeline" data-linenumber="2422"><td class="num" id="LN2422">2422</td><td class="line"> next = prev-&gt;parent;</td></tr>
+<tr class="codeline" data-linenumber="2423"><td class="num" id="LN2423">2423</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2424"><td class="num" id="LN2424">2424</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2425"><td class="num" id="LN2425">2425</td><td class="line"> <span class='comment'>/* Free all the nodes up that we don't need in cache */</span></td></tr>
+<tr class="codeline" data-linenumber="2426"><td class="num" id="LN2426">2426</td><td class="line"> <span class='keyword'>for</span> (item = <span class='macro'>FILE_BROWSER_NODE_DIR (node)<span class='macro_popup'>((FileBrowserNodeDir *)(node))</span></span>-&gt;children; item;</td></tr>
+<tr class="codeline" data-linenumber="2427"><td class="num" id="LN2427">2427</td><td class="line"> item = item-&gt;next) {</td></tr>
+<tr class="codeline" data-linenumber="2428"><td class="num" id="LN2428">2428</td><td class="line"> check = (FileBrowserNode *) (item-&gt;data);</td></tr>
+<tr class="codeline" data-linenumber="2429"><td class="num" id="LN2429">2429</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2430"><td class="num" id="LN2430">2430</td><td class="line"> <span class='keyword'>if</span> (<span class='macro'>NODE_IS_DIR (check)<span class='macro_popup'>(((check)-&gt;flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_DIRECTORY<br>))</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="2431"><td class="num" id="LN2431">2431</td><td class="line"> <span class='keyword'>for</span> (copy =</td></tr>
+<tr class="codeline" data-linenumber="2432"><td class="num" id="LN2432">2432</td><td class="line"> <span class='macro'>FILE_BROWSER_NODE_DIR (check)<span class='macro_popup'>((FileBrowserNodeDir *)(check))</span></span>-&gt;children; copy;</td></tr>
+<tr class="codeline" data-linenumber="2433"><td class="num" id="LN2433">2433</td><td class="line"> copy = copy-&gt;next) {</td></tr>
+<tr class="codeline" data-linenumber="2434"><td class="num" id="LN2434">2434</td><td class="line"> file_browser_node_free_children (model,</td></tr>
+<tr class="codeline" data-linenumber="2435"><td class="num" id="LN2435">2435</td><td class="line"> (FileBrowserNode</td></tr>
+<tr class="codeline" data-linenumber="2436"><td class="num" id="LN2436">2436</td><td class="line"> *)</td></tr>
+<tr class="codeline" data-linenumber="2437"><td class="num" id="LN2437">2437</td><td class="line"> (copy-&gt;</td></tr>
+<tr class="codeline" data-linenumber="2438"><td class="num" id="LN2438">2438</td><td class="line"> data));</td></tr>
+<tr class="codeline" data-linenumber="2439"><td class="num" id="LN2439">2439</td><td class="line"> file_browser_node_unload (model,</td></tr>
+<tr class="codeline" data-linenumber="2440"><td class="num" id="LN2440">2440</td><td class="line"> (FileBrowserNode</td></tr>
+<tr class="codeline" data-linenumber="2441"><td class="num" id="LN2441">2441</td><td class="line"> *) (copy-&gt;data),</td></tr>
+<tr class="codeline" data-linenumber="2442"><td class="num" id="LN2442">2442</td><td class="line"> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2443"><td class="num" id="LN2443">2443</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2444"><td class="num" id="LN2444">2444</td><td class="line"> } <span class='keyword'>else</span> <span class='keyword'>if</span> (<span class='macro'>NODE_IS_DUMMY (check)<span class='macro_popup'>(((check)-&gt;flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_DUMMY<br>))</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="2445"><td class="num" id="LN2445">2445</td><td class="line"> check-&gt;flags |=</td></tr>
+<tr class="codeline" data-linenumber="2446"><td class="num" id="LN2446">2446</td><td class="line"> PLUMA_FILE_BROWSER_STORE_FLAG_IS_HIDDEN;</td></tr>
+<tr class="codeline" data-linenumber="2447"><td class="num" id="LN2447">2447</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2448"><td class="num" id="LN2448">2448</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2449"><td class="num" id="LN2449">2449</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2450"><td class="num" id="LN2450">2450</td><td class="line"> <span class='comment'>/* Now finally, set the virtual root, and load it up! */</span></td></tr>
+<tr class="codeline" data-linenumber="2451"><td class="num" id="LN2451">2451</td><td class="line"> model-&gt;priv-&gt;virtual_root = node;</td></tr>
+<tr class="codeline" data-linenumber="2452"><td class="num" id="LN2452">2452</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2453"><td class="num" id="LN2453">2453</td><td class="line"> <span class='comment'>/* Notify that the virtual-root has changed before loading up new nodes so that the</span></td></tr>
+<tr class="codeline" data-linenumber="2454"><td class="num" id="LN2454">2454</td><td class="line"> <span class='comment'>"root_changed" signal can be emitted before any "inserted" signals */</span></td></tr>
+<tr class="codeline" data-linenumber="2455"><td class="num" id="LN2455">2455</td><td class="line"> g_object_notify (<span class='macro'>G_OBJECT (model)<span class='macro_popup'>((((GObject*) (void *) ((model)))))</span></span>, <span class='string_literal'>"virtual-root"</span>);</td></tr>
+<tr class="codeline" data-linenumber="2456"><td class="num" id="LN2456">2456</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2457"><td class="num" id="LN2457">2457</td><td class="line"> model_fill (model, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, &amp;empty);</td></tr>
+<tr class="codeline" data-linenumber="2458"><td class="num" id="LN2458">2458</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2459"><td class="num" id="LN2459">2459</td><td class="line"> <span class='keyword'>if</span> (!<span class='macro'>NODE_LOADED (node)<span class='macro_popup'>(((node)-&gt;flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_LOADED<br>))</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="2460"><td class="num" id="LN2460">2460</td><td class="line"> model_load_directory (model, node);</td></tr>
+<tr class="codeline" data-linenumber="2461"><td class="num" id="LN2461">2461</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2462"><td class="num" id="LN2462">2462</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2463"><td class="num" id="LN2463">2463</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2464"><td class="num" id="LN2464">2464</td><td class="line">set_virtual_root_from_file (PlumaFileBrowserStore * model,</td></tr>
+<tr class="codeline" data-linenumber="2465"><td class="num" id="LN2465">2465</td><td class="line"> GFile * file)</td></tr>
+<tr class="codeline" data-linenumber="2466"><td class="num" id="LN2466">2466</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2467"><td class="num" id="LN2467">2467</td><td class="line"> GList * files;</td></tr>
+<tr class="codeline" data-linenumber="2468"><td class="num" id="LN2468">2468</td><td class="line"> GList * item;</td></tr>
+<tr class="codeline" data-linenumber="2469"><td class="num" id="LN2469">2469</td><td class="line"> FileBrowserNode * parent;</td></tr>
+<tr class="codeline" data-linenumber="2470"><td class="num" id="LN2470">2470</td><td class="line"> GFile * check;</td></tr>
+<tr class="codeline" data-linenumber="2471"><td class="num" id="LN2471">2471</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2472"><td class="num" id="LN2472">2472</td><td class="line"> <span class='comment'>/* Always clear the model before altering the nodes */</span></td></tr>
+<tr class="codeline" data-linenumber="2473"><td class="num" id="LN2473">2473</td><td class="line"> model_clear (model, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2474"><td class="num" id="LN2474">2474</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2475"><td class="num" id="LN2475">2475</td><td class="line"> <span class='comment'>/* Create the node path, get all the uri's */</span></td></tr>
+<tr class="codeline" data-linenumber="2476"><td class="num" id="LN2476">2476</td><td class="line"> files = get_parent_files (model, file);</td></tr>
+<tr class="codeline" data-linenumber="2477"><td class="num" id="LN2477">2477</td><td class="line"> parent = model-&gt;priv-&gt;root;</td></tr>
+<tr class="codeline" data-linenumber="2478"><td class="num" id="LN2478">2478</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2479"><td class="num" id="LN2479">2479</td><td class="line"> <span class='keyword'>for</span> (item = files; item; item = item-&gt;next) {</td></tr>
+<tr class="codeline" data-linenumber="2480"><td class="num" id="LN2480">2480</td><td class="line"> check = <span class='macro'>G_FILE (item-&gt;data)<span class='macro_popup'>((((GFile*) (void *) ((item-&gt;data)))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2481"><td class="num" id="LN2481">2481</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2482"><td class="num" id="LN2482">2482</td><td class="line"> parent = model_add_node_from_dir (model, parent, check);</td></tr>
+<tr class="codeline" data-linenumber="2483"><td class="num" id="LN2483">2483</td><td class="line"> g_object_unref (check);</td></tr>
+<tr class="codeline" data-linenumber="2484"><td class="num" id="LN2484">2484</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2485"><td class="num" id="LN2485">2485</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2486"><td class="num" id="LN2486">2486</td><td class="line"> g_list_free (files);</td></tr>
+<tr class="codeline" data-linenumber="2487"><td class="num" id="LN2487">2487</td><td class="line"> set_virtual_root_from_node (model, parent);</td></tr>
+<tr class="codeline" data-linenumber="2488"><td class="num" id="LN2488">2488</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2489"><td class="num" id="LN2489">2489</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2490"><td class="num" id="LN2490">2490</td><td class="line"><span class='keyword'>static</span> FileBrowserNode *</td></tr>
+<tr class="codeline" data-linenumber="2491"><td class="num" id="LN2491">2491</td><td class="line">model_find_node_children (PlumaFileBrowserStore * model,</td></tr>
+<tr class="codeline" data-linenumber="2492"><td class="num" id="LN2492">2492</td><td class="line"> FileBrowserNode * parent,</td></tr>
+<tr class="codeline" data-linenumber="2493"><td class="num" id="LN2493">2493</td><td class="line"> GFile * file)</td></tr>
+<tr class="codeline" data-linenumber="2494"><td class="num" id="LN2494">2494</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2495"><td class="num" id="LN2495">2495</td><td class="line"> FileBrowserNodeDir *dir;</td></tr>
+<tr class="codeline" data-linenumber="2496"><td class="num" id="LN2496">2496</td><td class="line"> FileBrowserNode *child;</td></tr>
+<tr class="codeline" data-linenumber="2497"><td class="num" id="LN2497">2497</td><td class="line"> FileBrowserNode *result;</td></tr>
+<tr class="codeline" data-linenumber="2498"><td class="num" id="LN2498">2498</td><td class="line"> GSList *children;</td></tr>
+<tr class="codeline" data-linenumber="2499"><td class="num" id="LN2499">2499</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2500"><td class="num" id="LN2500">2500</td><td class="line"> <span class='keyword'>if</span> (!<span class='macro'>NODE_IS_DIR (parent)<span class='macro_popup'>(((parent)-&gt;flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_DIRECTORY<br>))</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="2501"><td class="num" id="LN2501">2501</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2502"><td class="num" id="LN2502">2502</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2503"><td class="num" id="LN2503">2503</td><td class="line"> dir = <span class='macro'>FILE_BROWSER_NODE_DIR (parent)<span class='macro_popup'>((FileBrowserNodeDir *)(parent))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2504"><td class="num" id="LN2504">2504</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2505"><td class="num" id="LN2505">2505</td><td class="line"> <span class='keyword'>for</span> (children = dir-&gt;children; children; children = children-&gt;next) {</td></tr>
+<tr class="codeline" data-linenumber="2506"><td class="num" id="LN2506">2506</td><td class="line"> child = (FileBrowserNode *)(children-&gt;data);</td></tr>
+<tr class="codeline" data-linenumber="2507"><td class="num" id="LN2507">2507</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2508"><td class="num" id="LN2508">2508</td><td class="line"> result = model_find_node (model, child, file);</td></tr>
+<tr class="codeline" data-linenumber="2509"><td class="num" id="LN2509">2509</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2510"><td class="num" id="LN2510">2510</td><td class="line"> <span class='keyword'>if</span> (result)</td></tr>
+<tr class="codeline" data-linenumber="2511"><td class="num" id="LN2511">2511</td><td class="line"> <span class='keyword'>return</span> result;</td></tr>
+<tr class="codeline" data-linenumber="2512"><td class="num" id="LN2512">2512</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2513"><td class="num" id="LN2513">2513</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2514"><td class="num" id="LN2514">2514</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2515"><td class="num" id="LN2515">2515</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2516"><td class="num" id="LN2516">2516</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2517"><td class="num" id="LN2517">2517</td><td class="line"><span class='keyword'>static</span> FileBrowserNode *</td></tr>
+<tr class="codeline" data-linenumber="2518"><td class="num" id="LN2518">2518</td><td class="line">model_find_node (PlumaFileBrowserStore * model,</td></tr>
+<tr class="codeline" data-linenumber="2519"><td class="num" id="LN2519">2519</td><td class="line"> FileBrowserNode * node,</td></tr>
+<tr class="codeline" data-linenumber="2520"><td class="num" id="LN2520">2520</td><td class="line"> GFile * file)</td></tr>
+<tr class="codeline" data-linenumber="2521"><td class="num" id="LN2521">2521</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2522"><td class="num" id="LN2522">2522</td><td class="line"> <span class='keyword'>if</span> (node == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="2523"><td class="num" id="LN2523">2523</td><td class="line"> node = model-&gt;priv-&gt;root;</td></tr>
+<tr class="codeline" data-linenumber="2524"><td class="num" id="LN2524">2524</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2525"><td class="num" id="LN2525">2525</td><td class="line"> <span class='keyword'>if</span> (node-&gt;file &amp;&amp; g_file_equal (node-&gt;file, file))</td></tr>
+<tr class="codeline" data-linenumber="2526"><td class="num" id="LN2526">2526</td><td class="line"> <span class='keyword'>return</span> node;</td></tr>
+<tr class="codeline" data-linenumber="2527"><td class="num" id="LN2527">2527</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2528"><td class="num" id="LN2528">2528</td><td class="line"> <span class='keyword'>if</span> (<span class='macro'>NODE_IS_DIR (node)<span class='macro_popup'>(((node)-&gt;flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_DIRECTORY<br>))</span></span> &amp;&amp; g_file_has_prefix (file, node-&gt;file))</td></tr>
+<tr class="codeline" data-linenumber="2529"><td class="num" id="LN2529">2529</td><td class="line"> <span class='keyword'>return</span> model_find_node_children (model, node, file);</td></tr>
+<tr class="codeline" data-linenumber="2530"><td class="num" id="LN2530">2530</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2531"><td class="num" id="LN2531">2531</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2532"><td class="num" id="LN2532">2532</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2533"><td class="num" id="LN2533">2533</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2534"><td class="num" id="LN2534">2534</td><td class="line"><span class='keyword'>static</span> GQuark</td></tr>
+<tr class="codeline" data-linenumber="2535"><td class="num" id="LN2535">2535</td><td class="line">pluma_file_browser_store_error_quark (<span class='keyword'>void</span>)</td></tr>
+<tr class="codeline" data-linenumber="2536"><td class="num" id="LN2536">2536</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2537"><td class="num" id="LN2537">2537</td><td class="line"> <span class='keyword'>static</span> GQuark quark = 0;</td></tr>
+<tr class="codeline" data-linenumber="2538"><td class="num" id="LN2538">2538</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2539"><td class="num" id="LN2539">2539</td><td class="line"> <span class='keyword'>if</span> (<span class='macro'>G_UNLIKELY (quark == 0)<span class='macro_popup'>(__builtin_expect (__extension__ ({ int _g_boolean_var_132; if<br> (quark == 0) _g_boolean_var_132 = 1; else _g_boolean_var_132<br> = 0; _g_boolean_var_132; }), 0))</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="2540"><td class="num" id="LN2540">2540</td><td class="line"> quark = g_quark_from_string (<span class='string_literal'>"pluma_file_browser_store_error"</span>);</td></tr>
+<tr class="codeline" data-linenumber="2541"><td class="num" id="LN2541">2541</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2542"><td class="num" id="LN2542">2542</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2543"><td class="num" id="LN2543">2543</td><td class="line"> <span class='keyword'>return</span> quark;</td></tr>
+<tr class="codeline" data-linenumber="2544"><td class="num" id="LN2544">2544</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2545"><td class="num" id="LN2545">2545</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2546"><td class="num" id="LN2546">2546</td><td class="line"><span class='keyword'>static</span> GFile *</td></tr>
+<tr class="codeline" data-linenumber="2547"><td class="num" id="LN2547">2547</td><td class="line">unique_new_name (GFile * directory, gchar <span class='keyword'>const</span> * name)</td></tr>
+<tr class="codeline" data-linenumber="2548"><td class="num" id="LN2548">2548</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2549"><td class="num" id="LN2549">2549</td><td class="line"> GFile * newuri = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2550"><td class="num" id="LN2550">2550</td><td class="line"> guint num = 0;</td></tr>
+<tr class="codeline" data-linenumber="2551"><td class="num" id="LN2551">2551</td><td class="line"> gchar * newname;</td></tr>
+<tr class="codeline" data-linenumber="2552"><td class="num" id="LN2552">2552</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2553"><td class="num" id="LN2553">2553</td><td class="line"> <span class='keyword'>while</span> (newuri == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> || g_file_query_exists (newuri, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)) {</td></tr>
+<tr class="codeline" data-linenumber="2554"><td class="num" id="LN2554">2554</td><td class="line"> <span class='keyword'>if</span> (newuri != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="2555"><td class="num" id="LN2555">2555</td><td class="line"> g_object_unref (newuri);</td></tr>
+<tr class="codeline" data-linenumber="2556"><td class="num" id="LN2556">2556</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2557"><td class="num" id="LN2557">2557</td><td class="line"> <span class='keyword'>if</span> (num == 0)</td></tr>
+<tr class="codeline" data-linenumber="2558"><td class="num" id="LN2558">2558</td><td class="line"> newname = <span class='macro'>g_strdup (name)<span class='macro_popup'>g_strdup_inline (name)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2559"><td class="num" id="LN2559">2559</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="2560"><td class="num" id="LN2560">2560</td><td class="line"> newname = g_strdup_printf (<span class='string_literal'>"%s(%d)"</span>, name, num);</td></tr>
+<tr class="codeline" data-linenumber="2561"><td class="num" id="LN2561">2561</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2562"><td class="num" id="LN2562">2562</td><td class="line"> newuri = g_file_get_child (directory, newname);</td></tr>
+<tr class="codeline" data-linenumber="2563"><td class="num" id="LN2563">2563</td><td class="line"> g_free (newname);</td></tr>
+<tr class="codeline" data-linenumber="2564"><td class="num" id="LN2564">2564</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2565"><td class="num" id="LN2565">2565</td><td class="line"> ++num;</td></tr>
+<tr class="codeline" data-linenumber="2566"><td class="num" id="LN2566">2566</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2567"><td class="num" id="LN2567">2567</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2568"><td class="num" id="LN2568">2568</td><td class="line"> <span class='keyword'>return</span> newuri;</td></tr>
+<tr class="codeline" data-linenumber="2569"><td class="num" id="LN2569">2569</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2570"><td class="num" id="LN2570">2570</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2571"><td class="num" id="LN2571">2571</td><td class="line"><span class='keyword'>static</span> PlumaFileBrowserStoreResult</td></tr>
+<tr class="codeline" data-linenumber="2572"><td class="num" id="LN2572">2572</td><td class="line">model_root_mounted (PlumaFileBrowserStore * model, gchar <span class='keyword'>const</span> * virtual_root)</td></tr>
+<tr class="codeline" data-linenumber="2573"><td class="num" id="LN2573">2573</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2574"><td class="num" id="LN2574">2574</td><td class="line"> model_check_dummy (model, model-&gt;priv-&gt;root);</td></tr>
+<tr class="codeline" data-linenumber="2575"><td class="num" id="LN2575">2575</td><td class="line"> g_object_notify (<span class='macro'>G_OBJECT (model)<span class='macro_popup'>((((GObject*) (void *) ((model)))))</span></span>, <span class='string_literal'>"root"</span>);</td></tr>
+<tr class="codeline" data-linenumber="2576"><td class="num" id="LN2576">2576</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2577"><td class="num" id="LN2577">2577</td><td class="line"> <span class='keyword'>if</span> (virtual_root != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="2578"><td class="num" id="LN2578">2578</td><td class="line"> <span class='keyword'>return</span></td></tr>
+<tr class="codeline" data-linenumber="2579"><td class="num" id="LN2579">2579</td><td class="line"> pluma_file_browser_store_set_virtual_root_from_string</td></tr>
+<tr class="codeline" data-linenumber="2580"><td class="num" id="LN2580">2580</td><td class="line"> (model, virtual_root);</td></tr>
+<tr class="codeline" data-linenumber="2581"><td class="num" id="LN2581">2581</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="2582"><td class="num" id="LN2582">2582</td><td class="line"> set_virtual_root_from_node (model,</td></tr>
+<tr class="codeline" data-linenumber="2583"><td class="num" id="LN2583">2583</td><td class="line"> model-&gt;priv-&gt;root);</td></tr>
+<tr class="codeline" data-linenumber="2584"><td class="num" id="LN2584">2584</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2585"><td class="num" id="LN2585">2585</td><td class="line"> <span class='keyword'>return</span> PLUMA_FILE_BROWSER_STORE_RESULT_OK;</td></tr>
+<tr class="codeline" data-linenumber="2586"><td class="num" id="LN2586">2586</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2587"><td class="num" id="LN2587">2587</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2588"><td class="num" id="LN2588">2588</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2589"><td class="num" id="LN2589">2589</td><td class="line">handle_root_error (PlumaFileBrowserStore * model, GError *error)</td></tr>
+<tr class="codeline" data-linenumber="2590"><td class="num" id="LN2590">2590</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2591"><td class="num" id="LN2591">2591</td><td class="line"> FileBrowserNode * root;</td></tr>
+<tr class="codeline" data-linenumber="2592"><td class="num" id="LN2592">2592</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2593"><td class="num" id="LN2593">2593</td><td class="line"> g_signal_emit (model,</td></tr>
+<tr class="codeline" data-linenumber="2594"><td class="num" id="LN2594">2594</td><td class="line"> model_signals[ERROR],</td></tr>
+<tr class="codeline" data-linenumber="2595"><td class="num" id="LN2595">2595</td><td class="line"> 0,</td></tr>
+<tr class="codeline" data-linenumber="2596"><td class="num" id="LN2596">2596</td><td class="line"> PLUMA_FILE_BROWSER_ERROR_SET_ROOT,</td></tr>
+<tr class="codeline" data-linenumber="2597"><td class="num" id="LN2597">2597</td><td class="line"> error-&gt;message);</td></tr>
+<tr class="codeline" data-linenumber="2598"><td class="num" id="LN2598">2598</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2599"><td class="num" id="LN2599">2599</td><td class="line"> <span class='comment'>/* Set the virtual root to the root */</span></td></tr>
+<tr class="codeline" data-linenumber="2600"><td class="num" id="LN2600">2600</td><td class="line"> root = model-&gt;priv-&gt;root;</td></tr>
+<tr class="codeline" data-linenumber="2601"><td class="num" id="LN2601">2601</td><td class="line"> model-&gt;priv-&gt;virtual_root = root;</td></tr>
+<tr class="codeline" data-linenumber="2602"><td class="num" id="LN2602">2602</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2603"><td class="num" id="LN2603">2603</td><td class="line"> <span class='comment'>/* Set the root to be loaded */</span></td></tr>
+<tr class="codeline" data-linenumber="2604"><td class="num" id="LN2604">2604</td><td class="line"> root-&gt;flags |= PLUMA_FILE_BROWSER_STORE_FLAG_LOADED;</td></tr>
+<tr class="codeline" data-linenumber="2605"><td class="num" id="LN2605">2605</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2606"><td class="num" id="LN2606">2606</td><td class="line"> <span class='comment'>/* Check the dummy */</span></td></tr>
+<tr class="codeline" data-linenumber="2607"><td class="num" id="LN2607">2607</td><td class="line"> model_check_dummy (model, root);</td></tr>
+<tr class="codeline" data-linenumber="2608"><td class="num" id="LN2608">2608</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2609"><td class="num" id="LN2609">2609</td><td class="line"> g_object_notify (<span class='macro'>G_OBJECT (model)<span class='macro_popup'>((((GObject*) (void *) ((model)))))</span></span>, <span class='string_literal'>"root"</span>);</td></tr>
+<tr class="codeline" data-linenumber="2610"><td class="num" id="LN2610">2610</td><td class="line"> g_object_notify (<span class='macro'>G_OBJECT (model)<span class='macro_popup'>((((GObject*) (void *) ((model)))))</span></span>, <span class='string_literal'>"virtual-root"</span>);</td></tr>
+<tr class="codeline" data-linenumber="2611"><td class="num" id="LN2611">2611</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2612"><td class="num" id="LN2612">2612</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2613"><td class="num" id="LN2613">2613</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2614"><td class="num" id="LN2614">2614</td><td class="line">mount_cb (GFile * file,</td></tr>
+<tr class="codeline" data-linenumber="2615"><td class="num" id="LN2615">2615</td><td class="line"> GAsyncResult * res,</td></tr>
+<tr class="codeline" data-linenumber="2616"><td class="num" id="LN2616">2616</td><td class="line"> MountInfo * mount_info)</td></tr>
+<tr class="codeline" data-linenumber="2617"><td class="num" id="LN2617">2617</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2618"><td class="num" id="LN2618">2618</td><td class="line"> gboolean mounted;</td></tr>
+<tr class="codeline" data-linenumber="2619"><td class="num" id="LN2619">2619</td><td class="line"> GError * error = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2620"><td class="num" id="LN2620">2620</td><td class="line"> PlumaFileBrowserStore * model = mount_info-&gt;model;</td></tr>
+<tr class="codeline" data-linenumber="2621"><td class="num" id="LN2621">2621</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2622"><td class="num" id="LN2622">2622</td><td class="line"> mounted = g_file_mount_enclosing_volume_finish (file, res, &amp;error);</td></tr>
+<tr class="codeline" data-linenumber="2623"><td class="num" id="LN2623">2623</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2624"><td class="num" id="LN2624">2624</td><td class="line"> <span class='keyword'>if</span> (mount_info-&gt;model)</td></tr>
+<tr class="codeline" data-linenumber="2625"><td class="num" id="LN2625">2625</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="2626"><td class="num" id="LN2626">2626</td><td class="line"> model-&gt;priv-&gt;mount_info = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2627"><td class="num" id="LN2627">2627</td><td class="line"> model_end_loading (model, model-&gt;priv-&gt;root);</td></tr>
+<tr class="codeline" data-linenumber="2628"><td class="num" id="LN2628">2628</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2629"><td class="num" id="LN2629">2629</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2630"><td class="num" id="LN2630">2630</td><td class="line"> <span class='keyword'>if</span> (!mount_info-&gt;model || g_cancellable_is_cancelled (mount_info-&gt;cancellable))</td></tr>
+<tr class="codeline" data-linenumber="2631"><td class="num" id="LN2631">2631</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="2632"><td class="num" id="LN2632">2632</td><td class="line"> <span class='comment'>// Reset because it might be reused?</span></td></tr>
+<tr class="codeline" data-linenumber="2633"><td class="num" id="LN2633">2633</td><td class="line"> g_cancellable_reset (mount_info-&gt;cancellable);</td></tr>
+<tr class="codeline" data-linenumber="2634"><td class="num" id="LN2634">2634</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2635"><td class="num" id="LN2635">2635</td><td class="line"> <span class='keyword'>else</span> <span class='keyword'>if</span> (mounted)</td></tr>
+<tr class="codeline" data-linenumber="2636"><td class="num" id="LN2636">2636</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="2637"><td class="num" id="LN2637">2637</td><td class="line"> model_root_mounted (model, mount_info-&gt;virtual_root);</td></tr>
+<tr class="codeline" data-linenumber="2638"><td class="num" id="LN2638">2638</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2639"><td class="num" id="LN2639">2639</td><td class="line"> <span class='keyword'>else</span> <span class='keyword'>if</span> (error-&gt;code != G_IO_ERROR_CANCELLED)</td></tr>
+<tr class="codeline" data-linenumber="2640"><td class="num" id="LN2640">2640</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="2641"><td class="num" id="LN2641">2641</td><td class="line"> handle_root_error (model, error);</td></tr>
+<tr class="codeline" data-linenumber="2642"><td class="num" id="LN2642">2642</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2643"><td class="num" id="LN2643">2643</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2644"><td class="num" id="LN2644">2644</td><td class="line"> <span class='keyword'>if</span> (error)</td></tr>
+<tr class="codeline" data-linenumber="2645"><td class="num" id="LN2645">2645</td><td class="line"> g_error_free (error);</td></tr>
+<tr class="codeline" data-linenumber="2646"><td class="num" id="LN2646">2646</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2647"><td class="num" id="LN2647">2647</td><td class="line"> g_object_unref (mount_info-&gt;operation);</td></tr>
+<tr class="codeline" data-linenumber="2648"><td class="num" id="LN2648">2648</td><td class="line"> g_object_unref (mount_info-&gt;cancellable);</td></tr>
+<tr class="codeline" data-linenumber="2649"><td class="num" id="LN2649">2649</td><td class="line"> g_free (mount_info-&gt;virtual_root);</td></tr>
+<tr class="codeline" data-linenumber="2650"><td class="num" id="LN2650">2650</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2651"><td class="num" id="LN2651">2651</td><td class="line"> g_free (mount_info);</td></tr>
+<tr class="codeline" data-linenumber="2652"><td class="num" id="LN2652">2652</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2653"><td class="num" id="LN2653">2653</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2654"><td class="num" id="LN2654">2654</td><td class="line"><span class='keyword'>static</span> PlumaFileBrowserStoreResult</td></tr>
+<tr class="codeline" data-linenumber="2655"><td class="num" id="LN2655">2655</td><td class="line">model_mount_root (PlumaFileBrowserStore * model, gchar <span class='keyword'>const</span> * virtual_root)</td></tr>
+<tr class="codeline" data-linenumber="2656"><td class="num" id="LN2656">2656</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2657"><td class="num" id="LN2657">2657</td><td class="line"> GFileInfo * info;</td></tr>
+<tr class="codeline" data-linenumber="2658"><td class="num" id="LN2658">2658</td><td class="line"> GError * error = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2659"><td class="num" id="LN2659">2659</td><td class="line"> MountInfo * mount_info;</td></tr>
+<tr class="codeline" data-linenumber="2660"><td class="num" id="LN2660">2660</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2661"><td class="num" id="LN2661">2661</td><td class="line"> info = g_file_query_info (model-&gt;priv-&gt;root-&gt;file,</td></tr>
+<tr class="codeline" data-linenumber="2662"><td class="num" id="LN2662">2662</td><td class="line"> <span class='macro'>G_FILE_ATTRIBUTE_STANDARD_TYPE<span class='macro_popup'>"standard::type"</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="2663"><td class="num" id="LN2663">2663</td><td class="line"> G_FILE_QUERY_INFO_NONE,</td></tr>
+<tr class="codeline" data-linenumber="2664"><td class="num" id="LN2664">2664</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="2665"><td class="num" id="LN2665">2665</td><td class="line"> &amp;error);</td></tr>
+<tr class="codeline" data-linenumber="2666"><td class="num" id="LN2666">2666</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2667"><td class="num" id="LN2667">2667</td><td class="line"> <span class='keyword'>if</span> (!info) {</td></tr>
+<tr class="codeline" data-linenumber="2668"><td class="num" id="LN2668">2668</td><td class="line"> <span class='keyword'>if</span> (error-&gt;code == G_IO_ERROR_NOT_MOUNTED) {</td></tr>
+<tr class="codeline" data-linenumber="2669"><td class="num" id="LN2669">2669</td><td class="line"> <span class='comment'>/* Try to mount it */</span></td></tr>
+<tr class="codeline" data-linenumber="2670"><td class="num" id="LN2670">2670</td><td class="line"> <span class='macro'>FILE_BROWSER_NODE_DIR (model-&gt;priv-&gt;root)<span class='macro_popup'>((FileBrowserNodeDir *)(model-&gt;priv-&gt;root))</span></span>-&gt;cancellable = g_cancellable_new ();</td></tr>
+<tr class="codeline" data-linenumber="2671"><td class="num" id="LN2671">2671</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2672"><td class="num" id="LN2672">2672</td><td class="line"> mount_info = <span class='macro'>g_new(MountInfo, 1)<span class='macro_popup'>(MountInfo *) (__extension__ ({ gsize __n = (gsize) (1); gsize<br> __s = sizeof (MountInfo); gpointer __p; if (__s == 1) __p = g_malloc<br> (__n); else if (__builtin_constant_p (__n) &amp;&amp; (__s ==<br> 0 || __n &lt;= (9223372036854775807L *2UL+1UL) / __s)) __p =<br> g_malloc (__n * __s); else __p = g_malloc_n (__n, __s); __p;<br> }))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2673"><td class="num" id="LN2673">2673</td><td class="line"> mount_info-&gt;model = model;</td></tr>
+<tr class="codeline" data-linenumber="2674"><td class="num" id="LN2674">2674</td><td class="line"> mount_info-&gt;virtual_root = <span class='macro'>g_strdup (virtual_root)<span class='macro_popup'>g_strdup_inline (virtual_root)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2675"><td class="num" id="LN2675">2675</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2676"><td class="num" id="LN2676">2676</td><td class="line"> <span class='comment'>/* FIXME: we should be setting the correct window */</span></td></tr>
+<tr class="codeline" data-linenumber="2677"><td class="num" id="LN2677">2677</td><td class="line"> mount_info-&gt;operation = gtk_mount_operation_new (<span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2678"><td class="num" id="LN2678">2678</td><td class="line"> mount_info-&gt;cancellable = <span class='macro'>g_object_ref (FILE_BROWSER_NODE_DIR (model-&gt;priv-&gt;root)-&gt;cancellable)<span class='macro_popup'>((__typeof__ (((FileBrowserNodeDir *)(model-&gt;priv-&gt;root<br>))-&gt;cancellable)) (g_object_ref) (((FileBrowserNodeDir *)(<br>model-&gt;priv-&gt;root))-&gt;cancellable))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2679"><td class="num" id="LN2679">2679</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2680"><td class="num" id="LN2680">2680</td><td class="line"> model_begin_loading (model, model-&gt;priv-&gt;root);</td></tr>
+<tr class="codeline" data-linenumber="2681"><td class="num" id="LN2681">2681</td><td class="line"> g_file_mount_enclosing_volume (model-&gt;priv-&gt;root-&gt;file,</td></tr>
+<tr class="codeline" data-linenumber="2682"><td class="num" id="LN2682">2682</td><td class="line"> G_MOUNT_MOUNT_NONE,</td></tr>
+<tr class="codeline" data-linenumber="2683"><td class="num" id="LN2683">2683</td><td class="line"> mount_info-&gt;operation,</td></tr>
+<tr class="codeline" data-linenumber="2684"><td class="num" id="LN2684">2684</td><td class="line"> mount_info-&gt;cancellable,</td></tr>
+<tr class="codeline" data-linenumber="2685"><td class="num" id="LN2685">2685</td><td class="line"> (GAsyncReadyCallback)mount_cb,</td></tr>
+<tr class="codeline" data-linenumber="2686"><td class="num" id="LN2686">2686</td><td class="line"> mount_info);</td></tr>
+<tr class="codeline" data-linenumber="2687"><td class="num" id="LN2687">2687</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2688"><td class="num" id="LN2688">2688</td><td class="line"> model-&gt;priv-&gt;mount_info = mount_info;</td></tr>
+<tr class="codeline" data-linenumber="2689"><td class="num" id="LN2689">2689</td><td class="line"> <span class='keyword'>return</span> PLUMA_FILE_BROWSER_STORE_RESULT_MOUNTING;</td></tr>
+<tr class="codeline" data-linenumber="2690"><td class="num" id="LN2690">2690</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2691"><td class="num" id="LN2691">2691</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="2692"><td class="num" id="LN2692">2692</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="2693"><td class="num" id="LN2693">2693</td><td class="line"> handle_root_error (model, error);</td></tr>
+<tr class="codeline" data-linenumber="2694"><td class="num" id="LN2694">2694</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2695"><td class="num" id="LN2695">2695</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2696"><td class="num" id="LN2696">2696</td><td class="line"> g_error_free (error);</td></tr>
+<tr class="codeline" data-linenumber="2697"><td class="num" id="LN2697">2697</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="2698"><td class="num" id="LN2698">2698</td><td class="line"> g_object_unref (info);</td></tr>
+<tr class="codeline" data-linenumber="2699"><td class="num" id="LN2699">2699</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2700"><td class="num" id="LN2700">2700</td><td class="line"> <span class='keyword'>return</span> model_root_mounted (model, virtual_root);</td></tr>
+<tr class="codeline" data-linenumber="2701"><td class="num" id="LN2701">2701</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2702"><td class="num" id="LN2702">2702</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2703"><td class="num" id="LN2703">2703</td><td class="line"> <span class='keyword'>return</span> PLUMA_FILE_BROWSER_STORE_RESULT_OK;</td></tr>
+<tr class="codeline" data-linenumber="2704"><td class="num" id="LN2704">2704</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2705"><td class="num" id="LN2705">2705</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2706"><td class="num" id="LN2706">2706</td><td class="line"><span class='comment'>/* Public */</span></td></tr>
+<tr class="codeline" data-linenumber="2707"><td class="num" id="LN2707">2707</td><td class="line">PlumaFileBrowserStore *</td></tr>
+<tr class="codeline" data-linenumber="2708"><td class="num" id="LN2708">2708</td><td class="line">pluma_file_browser_store_new (gchar <span class='keyword'>const</span> *root)</td></tr>
+<tr class="codeline" data-linenumber="2709"><td class="num" id="LN2709">2709</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2710"><td class="num" id="LN2710">2710</td><td class="line"> PlumaFileBrowserStore *obj =</td></tr>
+<tr class="codeline" data-linenumber="2711"><td class="num" id="LN2711">2711</td><td class="line"> <span class='macro'>PLUMA_FILE_BROWSER_STORE (g_object_new<span class='macro_popup'>((((PlumaFileBrowserStore*) (void *) ((g_object_new ((pluma_file_browser_store_get_type<br> ()), ((void*)0)))))))</span></span></td></tr>
+<tr class="codeline" data-linenumber="2712"><td class="num" id="LN2712">2712</td><td class="line"> <span class='macro'>(PLUMA_TYPE_FILE_BROWSER_STORE,<span class='macro_popup'>((((PlumaFileBrowserStore*) (void *) ((g_object_new ((pluma_file_browser_store_get_type<br> ()), ((void*)0)))))))</span></span></td></tr>
+<tr class="codeline" data-linenumber="2713"><td class="num" id="LN2713">2713</td><td class="line"> <span class='macro'>NULL))<span class='macro_popup'>((((PlumaFileBrowserStore*) (void *) ((g_object_new ((pluma_file_browser_store_get_type<br> ()), ((void*)0)))))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2714"><td class="num" id="LN2714">2714</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2715"><td class="num" id="LN2715">2715</td><td class="line"> pluma_file_browser_store_set_root (obj, root);</td></tr>
+<tr class="codeline" data-linenumber="2716"><td class="num" id="LN2716">2716</td><td class="line"> <span class='keyword'>return</span> obj;</td></tr>
+<tr class="codeline" data-linenumber="2717"><td class="num" id="LN2717">2717</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2718"><td class="num" id="LN2718">2718</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2719"><td class="num" id="LN2719">2719</td><td class="line"><span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2720"><td class="num" id="LN2720">2720</td><td class="line">pluma_file_browser_store_set_value (PlumaFileBrowserStore * tree_model,</td></tr>
+<tr class="codeline" data-linenumber="2721"><td class="num" id="LN2721">2721</td><td class="line"> GtkTreeIter * iter, gint column,</td></tr>
+<tr class="codeline" data-linenumber="2722"><td class="num" id="LN2722">2722</td><td class="line"> GValue * value)</td></tr>
+<tr class="codeline" data-linenumber="2723"><td class="num" id="LN2723">2723</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2724"><td class="num" id="LN2724">2724</td><td class="line"> gpointer data;</td></tr>
+<tr class="codeline" data-linenumber="2725"><td class="num" id="LN2725">2725</td><td class="line"> FileBrowserNode *node;</td></tr>
+<tr class="codeline" data-linenumber="2726"><td class="num" id="LN2726">2726</td><td class="line"> GtkTreePath *path;</td></tr>
+<tr class="codeline" data-linenumber="2727"><td class="num" id="LN2727">2727</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2728"><td class="num" id="LN2728">2728</td><td class="line"> <span class='macro'>g_return_if_fail (PLUMA_IS_FILE_BROWSER_STORE (tree_model))<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_133<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((tree_model)); GType __t = ((pluma_file_browser_store_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_133 = 1; else _g_boolean_var_133 =<br> 0; _g_boolean_var_133; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "PLUMA_IS_FILE_BROWSER_STORE (tree_model)"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2729"><td class="num" id="LN2729">2729</td><td class="line"> <span class='macro'>g_return_if_fail (column ==<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_134<br>; if (column == PLUMA_FILE_BROWSER_STORE_COLUMN_EMBLEM) _g_boolean_var_134<br> = 1; else _g_boolean_var_134 = 0; _g_boolean_var_134; }), 1)<br>)) { } else { g_return_if_fail_warning (((gchar*) 0), ((const<br> char*) (__func__)), "column == PLUMA_FILE_BROWSER_STORE_COLUMN_EMBLEM"<br>); return; } } while (0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="2730"><td class="num" id="LN2730">2730</td><td class="line"> <span class='macro'>PLUMA_FILE_BROWSER_STORE_COLUMN_EMBLEM)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_134<br>; if (column == PLUMA_FILE_BROWSER_STORE_COLUMN_EMBLEM) _g_boolean_var_134<br> = 1; else _g_boolean_var_134 = 0; _g_boolean_var_134; }), 1)<br>)) { } else { g_return_if_fail_warning (((gchar*) 0), ((const<br> char*) (__func__)), "column == PLUMA_FILE_BROWSER_STORE_COLUMN_EMBLEM"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2731"><td class="num" id="LN2731">2731</td><td class="line"> <span class='macro'>g_return_if_fail (G_VALUE_HOLDS_OBJECT (value))<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_135<br>; if ((((__extension__ ({ const GValue *__val = (const GValue<br>*) ((value)); GType __t = (((GType) ((20) &lt;&lt; (2)))); gboolean<br> __r; if (!__val) __r = (0); else if (__val-&gt;g_type == __t<br>) __r = (!(0)); else __r = g_type_check_value_holds (__val, __t<br>); __r; }))))) _g_boolean_var_135 = 1; else _g_boolean_var_135<br> = 0; _g_boolean_var_135; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "G_VALUE_HOLDS_OBJECT (value)"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2732"><td class="num" id="LN2732">2732</td><td class="line"> <span class='macro'>g_return_if_fail (iter != NULL)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_136<br>; if (iter != ((void*)0)) _g_boolean_var_136 = 1; else _g_boolean_var_136<br> = 0; _g_boolean_var_136; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "iter != NULL"); return<br>; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2733"><td class="num" id="LN2733">2733</td><td class="line"> <span class='macro'>g_return_if_fail (iter-&gt;user_data != NULL)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_137<br>; if (iter-&gt;user_data != ((void*)0)) _g_boolean_var_137 = 1<br>; else _g_boolean_var_137 = 0; _g_boolean_var_137; }), 1))) {<br> } else { g_return_if_fail_warning (((gchar*) 0), ((const char<br>*) (__func__)), "iter-&gt;user_data != NULL"); return; } } while<br> (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2734"><td class="num" id="LN2734">2734</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2735"><td class="num" id="LN2735">2735</td><td class="line"> data = g_value_get_object (value);</td></tr>
+<tr class="codeline" data-linenumber="2736"><td class="num" id="LN2736">2736</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2737"><td class="num" id="LN2737">2737</td><td class="line"> <span class='keyword'>if</span> (data)</td></tr>
+<tr class="codeline" data-linenumber="2738"><td class="num" id="LN2738">2738</td><td class="line"> <span class='macro'>g_return_if_fail (GDK_IS_PIXBUF (data))<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_138<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((data)); GType __t = ((gdk_pixbuf_get_type ())); gboolean<br> __r; if (!__inst) __r = (0); else if (__inst-&gt;g_class &amp;&amp;<br> __inst-&gt;g_class-&gt;g_type == __t) __r = (!(0)); else __r<br> = g_type_check_instance_is_a (__inst, __t); __r; }))))) _g_boolean_var_138<br> = 1; else _g_boolean_var_138 = 0; _g_boolean_var_138; }), 1)<br>)) { } else { g_return_if_fail_warning (((gchar*) 0), ((const<br> char*) (__func__)), "GDK_IS_PIXBUF (data)"); return; } } while<br> (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2739"><td class="num" id="LN2739">2739</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2740"><td class="num" id="LN2740">2740</td><td class="line"> node = (FileBrowserNode *) (iter-&gt;user_data);</td></tr>
+<tr class="codeline" data-linenumber="2741"><td class="num" id="LN2741">2741</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2742"><td class="num" id="LN2742">2742</td><td class="line"> <span class='keyword'>if</span> (node-&gt;emblem)</td></tr>
+<tr class="codeline" data-linenumber="2743"><td class="num" id="LN2743">2743</td><td class="line"> g_object_unref (node-&gt;emblem);</td></tr>
+<tr class="codeline" data-linenumber="2744"><td class="num" id="LN2744">2744</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2745"><td class="num" id="LN2745">2745</td><td class="line"> <span class='keyword'>if</span> (data)</td></tr>
+<tr class="codeline" data-linenumber="2746"><td class="num" id="LN2746">2746</td><td class="line"> node-&gt;emblem = <span class='macro'>g_object_ref (GDK_PIXBUF (data))<span class='macro_popup'>((__typeof__ (((((GdkPixbuf*) (void *) ((data))))))) (g_object_ref<br>) (((((GdkPixbuf*) (void *) ((data)))))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2747"><td class="num" id="LN2747">2747</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="2748"><td class="num" id="LN2748">2748</td><td class="line"> node-&gt;emblem = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2749"><td class="num" id="LN2749">2749</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2750"><td class="num" id="LN2750">2750</td><td class="line"> model_recomposite_icon (tree_model, iter);</td></tr>
+<tr class="codeline" data-linenumber="2751"><td class="num" id="LN2751">2751</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2752"><td class="num" id="LN2752">2752</td><td class="line"> <span class='keyword'>if</span> (model_node_visibility (tree_model, node)) {</td></tr>
+<tr class="codeline" data-linenumber="2753"><td class="num" id="LN2753">2753</td><td class="line"> path = pluma_file_browser_store_get_path (<span class='macro'>GTK_TREE_MODEL (tree_model)<span class='macro_popup'>((((GtkTreeModel*) (void *) ((tree_model)))))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="2754"><td class="num" id="LN2754">2754</td><td class="line"> iter);</td></tr>
+<tr class="codeline" data-linenumber="2755"><td class="num" id="LN2755">2755</td><td class="line"> row_changed (tree_model, &amp;path, iter);</td></tr>
+<tr class="codeline" data-linenumber="2756"><td class="num" id="LN2756">2756</td><td class="line"> gtk_tree_path_free (path);</td></tr>
+<tr class="codeline" data-linenumber="2757"><td class="num" id="LN2757">2757</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2758"><td class="num" id="LN2758">2758</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2759"><td class="num" id="LN2759">2759</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2760"><td class="num" id="LN2760">2760</td><td class="line">PlumaFileBrowserStoreResult</td></tr>
+<tr class="codeline" data-linenumber="2761"><td class="num" id="LN2761">2761</td><td class="line">pluma_file_browser_store_set_virtual_root (PlumaFileBrowserStore * model,</td></tr>
+<tr class="codeline" data-linenumber="2762"><td class="num" id="LN2762">2762</td><td class="line"> GtkTreeIter * iter)</td></tr>
+<tr class="codeline" data-linenumber="2763"><td class="num" id="LN2763">2763</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2764"><td class="num" id="LN2764">2764</td><td class="line"> <span class='macro'>g_return_val_if_fail (PLUMA_IS_FILE_BROWSER_STORE (model),<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_139<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((model)); GType __t = ((pluma_file_browser_store_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_139 = 1; else _g_boolean_var_139 =<br> 0; _g_boolean_var_139; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "PLUMA_IS_FILE_BROWSER_STORE (model)"<br>); return (PLUMA_FILE_BROWSER_STORE_RESULT_NO_CHANGE); } } while<br> (0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="2765"><td class="num" id="LN2765">2765</td><td class="line"> <span class='macro'>PLUMA_FILE_BROWSER_STORE_RESULT_NO_CHANGE)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_139<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((model)); GType __t = ((pluma_file_browser_store_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_139 = 1; else _g_boolean_var_139 =<br> 0; _g_boolean_var_139; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "PLUMA_IS_FILE_BROWSER_STORE (model)"<br>); return (PLUMA_FILE_BROWSER_STORE_RESULT_NO_CHANGE); } } while<br> (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2766"><td class="num" id="LN2766">2766</td><td class="line"> <span class='macro'>g_return_val_if_fail (iter != NULL,<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_140<br>; if (iter != ((void*)0)) _g_boolean_var_140 = 1; else _g_boolean_var_140<br> = 0; _g_boolean_var_140; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "iter != NULL"); return<br> (PLUMA_FILE_BROWSER_STORE_RESULT_NO_CHANGE); } } while (0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="2767"><td class="num" id="LN2767">2767</td><td class="line"> <span class='macro'>PLUMA_FILE_BROWSER_STORE_RESULT_NO_CHANGE)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_140<br>; if (iter != ((void*)0)) _g_boolean_var_140 = 1; else _g_boolean_var_140<br> = 0; _g_boolean_var_140; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "iter != NULL"); return<br> (PLUMA_FILE_BROWSER_STORE_RESULT_NO_CHANGE); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2768"><td class="num" id="LN2768">2768</td><td class="line"> <span class='macro'>g_return_val_if_fail (iter-&gt;user_data != NULL,<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_141<br>; if (iter-&gt;user_data != ((void*)0)) _g_boolean_var_141 = 1<br>; else _g_boolean_var_141 = 0; _g_boolean_var_141; }), 1))) {<br> } else { g_return_if_fail_warning (((gchar*) 0), ((const char<br>*) (__func__)), "iter-&gt;user_data != NULL"); return (PLUMA_FILE_BROWSER_STORE_RESULT_NO_CHANGE<br>); } } while (0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="2769"><td class="num" id="LN2769">2769</td><td class="line"> <span class='macro'>PLUMA_FILE_BROWSER_STORE_RESULT_NO_CHANGE)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_141<br>; if (iter-&gt;user_data != ((void*)0)) _g_boolean_var_141 = 1<br>; else _g_boolean_var_141 = 0; _g_boolean_var_141; }), 1))) {<br> } else { g_return_if_fail_warning (((gchar*) 0), ((const char<br>*) (__func__)), "iter-&gt;user_data != NULL"); return (PLUMA_FILE_BROWSER_STORE_RESULT_NO_CHANGE<br>); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2770"><td class="num" id="LN2770">2770</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2771"><td class="num" id="LN2771">2771</td><td class="line"> model_clear (model, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2772"><td class="num" id="LN2772">2772</td><td class="line"> set_virtual_root_from_node (model,</td></tr>
+<tr class="codeline" data-linenumber="2773"><td class="num" id="LN2773">2773</td><td class="line"> (FileBrowserNode *) (iter-&gt;user_data));</td></tr>
+<tr class="codeline" data-linenumber="2774"><td class="num" id="LN2774">2774</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2775"><td class="num" id="LN2775">2775</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2776"><td class="num" id="LN2776">2776</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2777"><td class="num" id="LN2777">2777</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2778"><td class="num" id="LN2778">2778</td><td class="line">PlumaFileBrowserStoreResult</td></tr>
+<tr class="codeline" data-linenumber="2779"><td class="num" id="LN2779">2779</td><td class="line">pluma_file_browser_store_set_virtual_root_from_string</td></tr>
+<tr class="codeline" data-linenumber="2780"><td class="num" id="LN2780">2780</td><td class="line"> (PlumaFileBrowserStore * model, gchar <span class='keyword'>const</span> *root) {</td></tr>
+<tr class="codeline" data-linenumber="2781"><td class="num" id="LN2781">2781</td><td class="line"> GFile *file;</td></tr>
+<tr class="codeline" data-linenumber="2782"><td class="num" id="LN2782">2782</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2783"><td class="num" id="LN2783">2783</td><td class="line"> <span class='macro'>g_return_val_if_fail (PLUMA_IS_FILE_BROWSER_STORE (model),<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_142<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((model)); GType __t = ((pluma_file_browser_store_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_142 = 1; else _g_boolean_var_142 =<br> 0; _g_boolean_var_142; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "PLUMA_IS_FILE_BROWSER_STORE (model)"<br>); return (PLUMA_FILE_BROWSER_STORE_RESULT_NO_CHANGE); } } while<br> (0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="2784"><td class="num" id="LN2784">2784</td><td class="line"> <span class='macro'>PLUMA_FILE_BROWSER_STORE_RESULT_NO_CHANGE)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_142<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((model)); GType __t = ((pluma_file_browser_store_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_142 = 1; else _g_boolean_var_142 =<br> 0; _g_boolean_var_142; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "PLUMA_IS_FILE_BROWSER_STORE (model)"<br>); return (PLUMA_FILE_BROWSER_STORE_RESULT_NO_CHANGE); } } while<br> (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2785"><td class="num" id="LN2785">2785</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2786"><td class="num" id="LN2786">2786</td><td class="line"> file = g_file_new_for_uri (root);</td></tr>
+<tr class="codeline" data-linenumber="2787"><td class="num" id="LN2787">2787</td><td class="line"> <span class='keyword'>if</span> (file == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="2788"><td class="num" id="LN2788">2788</td><td class="line"> g_warning (<span class='string_literal'>"Invalid uri (%s)"</span>, root);</td></tr>
+<tr class="codeline" data-linenumber="2789"><td class="num" id="LN2789">2789</td><td class="line"> <span class='keyword'>return</span> PLUMA_FILE_BROWSER_STORE_RESULT_NO_CHANGE;</td></tr>
+<tr class="codeline" data-linenumber="2790"><td class="num" id="LN2790">2790</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2791"><td class="num" id="LN2791">2791</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2792"><td class="num" id="LN2792">2792</td><td class="line"> <span class='comment'>/* Check if uri is already the virtual root */</span></td></tr>
+<tr class="codeline" data-linenumber="2793"><td class="num" id="LN2793">2793</td><td class="line"> <span class='keyword'>if</span> (model-&gt;priv-&gt;virtual_root &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="2794"><td class="num" id="LN2794">2794</td><td class="line"> g_file_equal (model-&gt;priv-&gt;virtual_root-&gt;file, file)) {</td></tr>
+<tr class="codeline" data-linenumber="2795"><td class="num" id="LN2795">2795</td><td class="line"> g_object_unref (file);</td></tr>
+<tr class="codeline" data-linenumber="2796"><td class="num" id="LN2796">2796</td><td class="line"> <span class='keyword'>return</span> PLUMA_FILE_BROWSER_STORE_RESULT_NO_CHANGE;</td></tr>
+<tr class="codeline" data-linenumber="2797"><td class="num" id="LN2797">2797</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2798"><td class="num" id="LN2798">2798</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2799"><td class="num" id="LN2799">2799</td><td class="line"> <span class='comment'>/* Check if uri is the root itself */</span></td></tr>
+<tr class="codeline" data-linenumber="2800"><td class="num" id="LN2800">2800</td><td class="line"> <span class='keyword'>if</span> (g_file_equal (model-&gt;priv-&gt;root-&gt;file, file)) {</td></tr>
+<tr class="codeline" data-linenumber="2801"><td class="num" id="LN2801">2801</td><td class="line"> g_object_unref (file);</td></tr>
+<tr class="codeline" data-linenumber="2802"><td class="num" id="LN2802">2802</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2803"><td class="num" id="LN2803">2803</td><td class="line"> <span class='comment'>/* Always clear the model before altering the nodes */</span></td></tr>
+<tr class="codeline" data-linenumber="2804"><td class="num" id="LN2804">2804</td><td class="line"> model_clear (model, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2805"><td class="num" id="LN2805">2805</td><td class="line"> set_virtual_root_from_node (model, model-&gt;priv-&gt;root);</td></tr>
+<tr class="codeline" data-linenumber="2806"><td class="num" id="LN2806">2806</td><td class="line"> <span class='keyword'>return</span> PLUMA_FILE_BROWSER_STORE_RESULT_OK;</td></tr>
+<tr class="codeline" data-linenumber="2807"><td class="num" id="LN2807">2807</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2808"><td class="num" id="LN2808">2808</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2809"><td class="num" id="LN2809">2809</td><td class="line"> <span class='keyword'>if</span> (!g_file_has_prefix (file, model-&gt;priv-&gt;root-&gt;file)) {</td></tr>
+<tr class="codeline" data-linenumber="2810"><td class="num" id="LN2810">2810</td><td class="line"> gchar *str, *str1;</td></tr>
+<tr class="codeline" data-linenumber="2811"><td class="num" id="LN2811">2811</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2812"><td class="num" id="LN2812">2812</td><td class="line"> str = g_file_get_parse_name (model-&gt;priv-&gt;root-&gt;file);</td></tr>
+<tr class="codeline" data-linenumber="2813"><td class="num" id="LN2813">2813</td><td class="line"> str1 = g_file_get_parse_name (file);</td></tr>
+<tr class="codeline" data-linenumber="2814"><td class="num" id="LN2814">2814</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2815"><td class="num" id="LN2815">2815</td><td class="line"> g_warning</td></tr>
+<tr class="codeline" data-linenumber="2816"><td class="num" id="LN2816">2816</td><td class="line"> (<span class='string_literal'>"Virtual root (%s) is not below actual root (%s)"</span>,</td></tr>
+<tr class="codeline" data-linenumber="2817"><td class="num" id="LN2817">2817</td><td class="line"> str1, str);</td></tr>
+<tr class="codeline" data-linenumber="2818"><td class="num" id="LN2818">2818</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2819"><td class="num" id="LN2819">2819</td><td class="line"> g_free (str);</td></tr>
+<tr class="codeline" data-linenumber="2820"><td class="num" id="LN2820">2820</td><td class="line"> g_free (str1);</td></tr>
+<tr class="codeline" data-linenumber="2821"><td class="num" id="LN2821">2821</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2822"><td class="num" id="LN2822">2822</td><td class="line"> g_object_unref (file);</td></tr>
+<tr class="codeline" data-linenumber="2823"><td class="num" id="LN2823">2823</td><td class="line"> <span class='keyword'>return</span> PLUMA_FILE_BROWSER_STORE_RESULT_ERROR;</td></tr>
+<tr class="codeline" data-linenumber="2824"><td class="num" id="LN2824">2824</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2825"><td class="num" id="LN2825">2825</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2826"><td class="num" id="LN2826">2826</td><td class="line"> set_virtual_root_from_file (model, file);</td></tr>
+<tr class="codeline" data-linenumber="2827"><td class="num" id="LN2827">2827</td><td class="line"> g_object_unref (file);</td></tr>
+<tr class="codeline" data-linenumber="2828"><td class="num" id="LN2828">2828</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2829"><td class="num" id="LN2829">2829</td><td class="line"> <span class='keyword'>return</span> PLUMA_FILE_BROWSER_STORE_RESULT_OK;</td></tr>
+<tr class="codeline" data-linenumber="2830"><td class="num" id="LN2830">2830</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2831"><td class="num" id="LN2831">2831</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2832"><td class="num" id="LN2832">2832</td><td class="line">PlumaFileBrowserStoreResult</td></tr>
+<tr class="codeline" data-linenumber="2833"><td class="num" id="LN2833">2833</td><td class="line">pluma_file_browser_store_set_virtual_root_top (PlumaFileBrowserStore *</td></tr>
+<tr class="codeline" data-linenumber="2834"><td class="num" id="LN2834">2834</td><td class="line"> model)</td></tr>
+<tr class="codeline" data-linenumber="2835"><td class="num" id="LN2835">2835</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2836"><td class="num" id="LN2836">2836</td><td class="line"> <span class='macro'>g_return_val_if_fail (PLUMA_IS_FILE_BROWSER_STORE (model),<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_143<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((model)); GType __t = ((pluma_file_browser_store_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_143 = 1; else _g_boolean_var_143 =<br> 0; _g_boolean_var_143; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "PLUMA_IS_FILE_BROWSER_STORE (model)"<br>); return (PLUMA_FILE_BROWSER_STORE_RESULT_NO_CHANGE); } } while<br> (0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="2837"><td class="num" id="LN2837">2837</td><td class="line"> <span class='macro'>PLUMA_FILE_BROWSER_STORE_RESULT_NO_CHANGE)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_143<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((model)); GType __t = ((pluma_file_browser_store_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_143 = 1; else _g_boolean_var_143 =<br> 0; _g_boolean_var_143; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "PLUMA_IS_FILE_BROWSER_STORE (model)"<br>); return (PLUMA_FILE_BROWSER_STORE_RESULT_NO_CHANGE); } } while<br> (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2838"><td class="num" id="LN2838">2838</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2839"><td class="num" id="LN2839">2839</td><td class="line"> <span class='keyword'>if</span> (model-&gt;priv-&gt;virtual_root == model-&gt;priv-&gt;root)</td></tr>
+<tr class="codeline" data-linenumber="2840"><td class="num" id="LN2840">2840</td><td class="line"> <span class='keyword'>return</span> PLUMA_FILE_BROWSER_STORE_RESULT_NO_CHANGE;</td></tr>
+<tr class="codeline" data-linenumber="2841"><td class="num" id="LN2841">2841</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2842"><td class="num" id="LN2842">2842</td><td class="line"> model_clear (model, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2843"><td class="num" id="LN2843">2843</td><td class="line"> set_virtual_root_from_node (model, model-&gt;priv-&gt;root);</td></tr>
+<tr class="codeline" data-linenumber="2844"><td class="num" id="LN2844">2844</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2845"><td class="num" id="LN2845">2845</td><td class="line"> <span class='keyword'>return</span> PLUMA_FILE_BROWSER_STORE_RESULT_OK;</td></tr>
+<tr class="codeline" data-linenumber="2846"><td class="num" id="LN2846">2846</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2847"><td class="num" id="LN2847">2847</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2848"><td class="num" id="LN2848">2848</td><td class="line">PlumaFileBrowserStoreResult</td></tr>
+<tr class="codeline" data-linenumber="2849"><td class="num" id="LN2849">2849</td><td class="line">pluma_file_browser_store_set_virtual_root_up (PlumaFileBrowserStore *</td></tr>
+<tr class="codeline" data-linenumber="2850"><td class="num" id="LN2850">2850</td><td class="line"> model)</td></tr>
+<tr class="codeline" data-linenumber="2851"><td class="num" id="LN2851">2851</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2852"><td class="num" id="LN2852">2852</td><td class="line"> <span class='macro'>g_return_val_if_fail (PLUMA_IS_FILE_BROWSER_STORE (model),<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_144<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((model)); GType __t = ((pluma_file_browser_store_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_144 = 1; else _g_boolean_var_144 =<br> 0; _g_boolean_var_144; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "PLUMA_IS_FILE_BROWSER_STORE (model)"<br>); return (PLUMA_FILE_BROWSER_STORE_RESULT_NO_CHANGE); } } while<br> (0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="2853"><td class="num" id="LN2853">2853</td><td class="line"> <span class='macro'>PLUMA_FILE_BROWSER_STORE_RESULT_NO_CHANGE)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_144<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((model)); GType __t = ((pluma_file_browser_store_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_144 = 1; else _g_boolean_var_144 =<br> 0; _g_boolean_var_144; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "PLUMA_IS_FILE_BROWSER_STORE (model)"<br>); return (PLUMA_FILE_BROWSER_STORE_RESULT_NO_CHANGE); } } while<br> (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2854"><td class="num" id="LN2854">2854</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2855"><td class="num" id="LN2855">2855</td><td class="line"> <span class='keyword'>if</span> (model-&gt;priv-&gt;virtual_root == model-&gt;priv-&gt;root)</td></tr>
+<tr class="codeline" data-linenumber="2856"><td class="num" id="LN2856">2856</td><td class="line"> <span class='keyword'>return</span> PLUMA_FILE_BROWSER_STORE_RESULT_NO_CHANGE;</td></tr>
+<tr class="codeline" data-linenumber="2857"><td class="num" id="LN2857">2857</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2858"><td class="num" id="LN2858">2858</td><td class="line"> model_clear (model, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2859"><td class="num" id="LN2859">2859</td><td class="line"> set_virtual_root_from_node (model,</td></tr>
+<tr class="codeline" data-linenumber="2860"><td class="num" id="LN2860">2860</td><td class="line"> model-&gt;priv-&gt;virtual_root-&gt;parent);</td></tr>
+<tr class="codeline" data-linenumber="2861"><td class="num" id="LN2861">2861</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2862"><td class="num" id="LN2862">2862</td><td class="line"> <span class='keyword'>return</span> PLUMA_FILE_BROWSER_STORE_RESULT_OK;</td></tr>
+<tr class="codeline" data-linenumber="2863"><td class="num" id="LN2863">2863</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2864"><td class="num" id="LN2864">2864</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2865"><td class="num" id="LN2865">2865</td><td class="line">gboolean</td></tr>
+<tr class="codeline" data-linenumber="2866"><td class="num" id="LN2866">2866</td><td class="line">pluma_file_browser_store_get_iter_virtual_root (PlumaFileBrowserStore *</td></tr>
+<tr class="codeline" data-linenumber="2867"><td class="num" id="LN2867">2867</td><td class="line"> model, GtkTreeIter * iter)</td></tr>
+<tr class="codeline" data-linenumber="2868"><td class="num" id="LN2868">2868</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2869"><td class="num" id="LN2869">2869</td><td class="line"> <span class='macro'>g_return_val_if_fail (PLUMA_IS_FILE_BROWSER_STORE (model), FALSE)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_145<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((model)); GType __t = ((pluma_file_browser_store_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_145 = 1; else _g_boolean_var_145 =<br> 0; _g_boolean_var_145; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "PLUMA_IS_FILE_BROWSER_STORE (model)"<br>); return ((0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2870"><td class="num" id="LN2870">2870</td><td class="line"> <span class='macro'>g_return_val_if_fail (iter != NULL, FALSE)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_146<br>; if (iter != ((void*)0)) _g_boolean_var_146 = 1; else _g_boolean_var_146<br> = 0; _g_boolean_var_146; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "iter != NULL"); return<br> ((0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2871"><td class="num" id="LN2871">2871</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2872"><td class="num" id="LN2872">2872</td><td class="line"> <span class='keyword'>if</span> (model-&gt;priv-&gt;virtual_root == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="2873"><td class="num" id="LN2873">2873</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2874"><td class="num" id="LN2874">2874</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2875"><td class="num" id="LN2875">2875</td><td class="line"> iter-&gt;user_data = model-&gt;priv-&gt;virtual_root;</td></tr>
+<tr class="codeline" data-linenumber="2876"><td class="num" id="LN2876">2876</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2877"><td class="num" id="LN2877">2877</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2878"><td class="num" id="LN2878">2878</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2879"><td class="num" id="LN2879">2879</td><td class="line">gboolean</td></tr>
+<tr class="codeline" data-linenumber="2880"><td class="num" id="LN2880">2880</td><td class="line">pluma_file_browser_store_get_iter_root (PlumaFileBrowserStore * model,</td></tr>
+<tr class="codeline" data-linenumber="2881"><td class="num" id="LN2881">2881</td><td class="line"> GtkTreeIter * iter)</td></tr>
+<tr class="codeline" data-linenumber="2882"><td class="num" id="LN2882">2882</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2883"><td class="num" id="LN2883">2883</td><td class="line"> <span class='macro'>g_return_val_if_fail (PLUMA_IS_FILE_BROWSER_STORE (model), FALSE)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_147<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((model)); GType __t = ((pluma_file_browser_store_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_147 = 1; else _g_boolean_var_147 =<br> 0; _g_boolean_var_147; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "PLUMA_IS_FILE_BROWSER_STORE (model)"<br>); return ((0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2884"><td class="num" id="LN2884">2884</td><td class="line"> <span class='macro'>g_return_val_if_fail (iter != NULL, FALSE)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_148<br>; if (iter != ((void*)0)) _g_boolean_var_148 = 1; else _g_boolean_var_148<br> = 0; _g_boolean_var_148; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "iter != NULL"); return<br> ((0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2885"><td class="num" id="LN2885">2885</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2886"><td class="num" id="LN2886">2886</td><td class="line"> <span class='keyword'>if</span> (model-&gt;priv-&gt;root == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="2887"><td class="num" id="LN2887">2887</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2888"><td class="num" id="LN2888">2888</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2889"><td class="num" id="LN2889">2889</td><td class="line"> iter-&gt;user_data = model-&gt;priv-&gt;root;</td></tr>
+<tr class="codeline" data-linenumber="2890"><td class="num" id="LN2890">2890</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2891"><td class="num" id="LN2891">2891</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2892"><td class="num" id="LN2892">2892</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2893"><td class="num" id="LN2893">2893</td><td class="line">gboolean</td></tr>
+<tr class="codeline" data-linenumber="2894"><td class="num" id="LN2894">2894</td><td class="line">pluma_file_browser_store_iter_equal (PlumaFileBrowserStore * model,</td></tr>
+<tr class="codeline" data-linenumber="2895"><td class="num" id="LN2895">2895</td><td class="line"> GtkTreeIter * iter1,</td></tr>
+<tr class="codeline" data-linenumber="2896"><td class="num" id="LN2896">2896</td><td class="line"> GtkTreeIter * iter2)</td></tr>
+<tr class="codeline" data-linenumber="2897"><td class="num" id="LN2897">2897</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2898"><td class="num" id="LN2898">2898</td><td class="line"> <span class='macro'>g_return_val_if_fail (PLUMA_IS_FILE_BROWSER_STORE (model), FALSE)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_149<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((model)); GType __t = ((pluma_file_browser_store_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_149 = 1; else _g_boolean_var_149 =<br> 0; _g_boolean_var_149; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "PLUMA_IS_FILE_BROWSER_STORE (model)"<br>); return ((0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2899"><td class="num" id="LN2899">2899</td><td class="line"> <span class='macro'>g_return_val_if_fail (iter1 != NULL, FALSE)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_150<br>; if (iter1 != ((void*)0)) _g_boolean_var_150 = 1; else _g_boolean_var_150<br> = 0; _g_boolean_var_150; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "iter1 != NULL");<br> return ((0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2900"><td class="num" id="LN2900">2900</td><td class="line"> <span class='macro'>g_return_val_if_fail (iter2 != NULL, FALSE)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_151<br>; if (iter2 != ((void*)0)) _g_boolean_var_151 = 1; else _g_boolean_var_151<br> = 0; _g_boolean_var_151; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "iter2 != NULL");<br> return ((0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2901"><td class="num" id="LN2901">2901</td><td class="line"> <span class='macro'>g_return_val_if_fail (iter1-&gt;user_data != NULL, FALSE)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_152<br>; if (iter1-&gt;user_data != ((void*)0)) _g_boolean_var_152 =<br> 1; else _g_boolean_var_152 = 0; _g_boolean_var_152; }), 1)))<br> { } else { g_return_if_fail_warning (((gchar*) 0), ((const char<br>*) (__func__)), "iter1-&gt;user_data != NULL"); return ((0));<br> } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2902"><td class="num" id="LN2902">2902</td><td class="line"> <span class='macro'>g_return_val_if_fail (iter2-&gt;user_data != NULL, FALSE)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_153<br>; if (iter2-&gt;user_data != ((void*)0)) _g_boolean_var_153 =<br> 1; else _g_boolean_var_153 = 0; _g_boolean_var_153; }), 1)))<br> { } else { g_return_if_fail_warning (((gchar*) 0), ((const char<br>*) (__func__)), "iter2-&gt;user_data != NULL"); return ((0));<br> } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2903"><td class="num" id="LN2903">2903</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2904"><td class="num" id="LN2904">2904</td><td class="line"> <span class='keyword'>return</span> (iter1-&gt;user_data == iter2-&gt;user_data);</td></tr>
+<tr class="codeline" data-linenumber="2905"><td class="num" id="LN2905">2905</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2906"><td class="num" id="LN2906">2906</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2907"><td class="num" id="LN2907">2907</td><td class="line"><span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2908"><td class="num" id="LN2908">2908</td><td class="line">pluma_file_browser_store_cancel_mount_operation (PlumaFileBrowserStore *store)</td></tr>
+<tr class="codeline" data-linenumber="2909"><td class="num" id="LN2909">2909</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2910"><td class="num" id="LN2910">2910</td><td class="line"> <span class='macro'>g_return_if_fail (PLUMA_IS_FILE_BROWSER_STORE (store))<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_154<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((store)); GType __t = ((pluma_file_browser_store_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_154 = 1; else _g_boolean_var_154 =<br> 0; _g_boolean_var_154; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "PLUMA_IS_FILE_BROWSER_STORE (store)"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2911"><td class="num" id="LN2911">2911</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2912"><td class="num" id="LN2912">2912</td><td class="line"> cancel_mount_operation (store);</td></tr>
+<tr class="codeline" data-linenumber="2913"><td class="num" id="LN2913">2913</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2914"><td class="num" id="LN2914">2914</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2915"><td class="num" id="LN2915">2915</td><td class="line">PlumaFileBrowserStoreResult</td></tr>
+<tr class="codeline" data-linenumber="2916"><td class="num" id="LN2916">2916</td><td class="line">pluma_file_browser_store_set_root_and_virtual_root (PlumaFileBrowserStore *</td></tr>
+<tr class="codeline" data-linenumber="2917"><td class="num" id="LN2917">2917</td><td class="line"> model,</td></tr>
+<tr class="codeline" data-linenumber="2918"><td class="num" id="LN2918">2918</td><td class="line"> gchar <span class='keyword'>const</span> *root,</td></tr>
+<tr class="codeline" data-linenumber="2919"><td class="num" id="LN2919">2919</td><td class="line"> gchar <span class='keyword'>const</span> *virtual_root)</td></tr>
+<tr class="codeline" data-linenumber="2920"><td class="num" id="LN2920">2920</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2921"><td class="num" id="LN2921">2921</td><td class="line"> GFile * file = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2922"><td class="num" id="LN2922">2922</td><td class="line"> GFile * vfile = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2923"><td class="num" id="LN2923">2923</td><td class="line"> FileBrowserNode * node;</td></tr>
+<tr class="codeline" data-linenumber="2924"><td class="num" id="LN2924">2924</td><td class="line"> gboolean equal = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2925"><td class="num" id="LN2925">2925</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2926"><td class="num" id="LN2926">2926</td><td class="line"> <span class='macro'>g_return_val_if_fail (PLUMA_IS_FILE_BROWSER_STORE (model),<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_155<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((model)); GType __t = ((pluma_file_browser_store_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_155 = 1; else _g_boolean_var_155 =<br> 0; _g_boolean_var_155; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "PLUMA_IS_FILE_BROWSER_STORE (model)"<br>); return (PLUMA_FILE_BROWSER_STORE_RESULT_NO_CHANGE); } } while<br> (0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="2927"><td class="num" id="LN2927">2927</td><td class="line"> <span class='macro'>PLUMA_FILE_BROWSER_STORE_RESULT_NO_CHANGE)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_155<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((model)); GType __t = ((pluma_file_browser_store_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_155 = 1; else _g_boolean_var_155 =<br> 0; _g_boolean_var_155; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "PLUMA_IS_FILE_BROWSER_STORE (model)"<br>); return (PLUMA_FILE_BROWSER_STORE_RESULT_NO_CHANGE); } } while<br> (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2928"><td class="num" id="LN2928">2928</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2929"><td class="num" id="LN2929">2929</td><td class="line"> <span class='keyword'>if</span> (root == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> &amp;&amp; model-&gt;priv-&gt;root == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="2930"><td class="num" id="LN2930">2930</td><td class="line"> <span class='keyword'>return</span> PLUMA_FILE_BROWSER_STORE_RESULT_NO_CHANGE;</td></tr>
+<tr class="codeline" data-linenumber="2931"><td class="num" id="LN2931">2931</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2932"><td class="num" id="LN2932">2932</td><td class="line"> <span class='keyword'>if</span> (root != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="2933"><td class="num" id="LN2933">2933</td><td class="line"> file = g_file_new_for_uri (root);</td></tr>
+<tr class="codeline" data-linenumber="2934"><td class="num" id="LN2934">2934</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2935"><td class="num" id="LN2935">2935</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2936"><td class="num" id="LN2936">2936</td><td class="line"> <span class='keyword'>if</span> (root != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> &amp;&amp; model-&gt;priv-&gt;root != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="2937"><td class="num" id="LN2937">2937</td><td class="line"> equal = g_file_equal (file, model-&gt;priv-&gt;root-&gt;file);</td></tr>
+<tr class="codeline" data-linenumber="2938"><td class="num" id="LN2938">2938</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2939"><td class="num" id="LN2939">2939</td><td class="line"> <span class='keyword'>if</span> (equal &amp;&amp; virtual_root == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="2940"><td class="num" id="LN2940">2940</td><td class="line"> g_object_unref (file);</td></tr>
+<tr class="codeline" data-linenumber="2941"><td class="num" id="LN2941">2941</td><td class="line"> <span class='keyword'>return</span> PLUMA_FILE_BROWSER_STORE_RESULT_NO_CHANGE;</td></tr>
+<tr class="codeline" data-linenumber="2942"><td class="num" id="LN2942">2942</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2943"><td class="num" id="LN2943">2943</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2944"><td class="num" id="LN2944">2944</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2945"><td class="num" id="LN2945">2945</td><td class="line"> <span class='keyword'>if</span> (virtual_root) {</td></tr>
+<tr class="codeline" data-linenumber="2946"><td class="num" id="LN2946">2946</td><td class="line"> vfile = g_file_new_for_uri (virtual_root);</td></tr>
+<tr class="codeline" data-linenumber="2947"><td class="num" id="LN2947">2947</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2948"><td class="num" id="LN2948">2948</td><td class="line"> <span class='keyword'>if</span> (equal &amp;&amp; g_file_equal (vfile, model-&gt;priv-&gt;virtual_root-&gt;file)) {</td></tr>
+<tr class="codeline" data-linenumber="2949"><td class="num" id="LN2949">2949</td><td class="line"> <span class='keyword'>if</span> (file)</td></tr>
+<tr class="codeline" data-linenumber="2950"><td class="num" id="LN2950">2950</td><td class="line"> g_object_unref (file);</td></tr>
+<tr class="codeline" data-linenumber="2951"><td class="num" id="LN2951">2951</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2952"><td class="num" id="LN2952">2952</td><td class="line"> g_object_unref (vfile);</td></tr>
+<tr class="codeline" data-linenumber="2953"><td class="num" id="LN2953">2953</td><td class="line"> <span class='keyword'>return</span> PLUMA_FILE_BROWSER_STORE_RESULT_NO_CHANGE;</td></tr>
+<tr class="codeline" data-linenumber="2954"><td class="num" id="LN2954">2954</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2955"><td class="num" id="LN2955">2955</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2956"><td class="num" id="LN2956">2956</td><td class="line"> g_object_unref (vfile);</td></tr>
+<tr class="codeline" data-linenumber="2957"><td class="num" id="LN2957">2957</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2958"><td class="num" id="LN2958">2958</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2959"><td class="num" id="LN2959">2959</td><td class="line"> <span class='comment'>/* make sure to cancel any previous mount operations */</span></td></tr>
+<tr class="codeline" data-linenumber="2960"><td class="num" id="LN2960">2960</td><td class="line"> cancel_mount_operation (model);</td></tr>
+<tr class="codeline" data-linenumber="2961"><td class="num" id="LN2961">2961</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2962"><td class="num" id="LN2962">2962</td><td class="line"> <span class='comment'>/* Always clear the model before altering the nodes */</span></td></tr>
+<tr class="codeline" data-linenumber="2963"><td class="num" id="LN2963">2963</td><td class="line"> model_clear (model, <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2964"><td class="num" id="LN2964">2964</td><td class="line"> file_browser_node_free (model, model-&gt;priv-&gt;root);</td></tr>
+<tr class="codeline" data-linenumber="2965"><td class="num" id="LN2965">2965</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2966"><td class="num" id="LN2966">2966</td><td class="line"> model-&gt;priv-&gt;root = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2967"><td class="num" id="LN2967">2967</td><td class="line"> model-&gt;priv-&gt;virtual_root = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2968"><td class="num" id="LN2968">2968</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2969"><td class="num" id="LN2969">2969</td><td class="line"> <span class='keyword'>if</span> (file != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="2970"><td class="num" id="LN2970">2970</td><td class="line"> <span class='comment'>/* Create the root node */</span></td></tr>
+<tr class="codeline" data-linenumber="2971"><td class="num" id="LN2971">2971</td><td class="line"> node = file_browser_node_dir_new (model, file, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2972"><td class="num" id="LN2972">2972</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2973"><td class="num" id="LN2973">2973</td><td class="line"> g_object_unref (file);</td></tr>
+<tr class="codeline" data-linenumber="2974"><td class="num" id="LN2974">2974</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2975"><td class="num" id="LN2975">2975</td><td class="line"> model-&gt;priv-&gt;root = node;</td></tr>
+<tr class="codeline" data-linenumber="2976"><td class="num" id="LN2976">2976</td><td class="line"> <span class='keyword'>return</span> model_mount_root (model, virtual_root);</td></tr>
+<tr class="codeline" data-linenumber="2977"><td class="num" id="LN2977">2977</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="2978"><td class="num" id="LN2978">2978</td><td class="line"> g_object_notify (<span class='macro'>G_OBJECT (model)<span class='macro_popup'>((((GObject*) (void *) ((model)))))</span></span>, <span class='string_literal'>"root"</span>);</td></tr>
+<tr class="codeline" data-linenumber="2979"><td class="num" id="LN2979">2979</td><td class="line"> g_object_notify (<span class='macro'>G_OBJECT (model)<span class='macro_popup'>((((GObject*) (void *) ((model)))))</span></span>, <span class='string_literal'>"virtual-root"</span>);</td></tr>
+<tr class="codeline" data-linenumber="2980"><td class="num" id="LN2980">2980</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2981"><td class="num" id="LN2981">2981</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2982"><td class="num" id="LN2982">2982</td><td class="line"> <span class='keyword'>return</span> PLUMA_FILE_BROWSER_STORE_RESULT_OK;</td></tr>
+<tr class="codeline" data-linenumber="2983"><td class="num" id="LN2983">2983</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2984"><td class="num" id="LN2984">2984</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2985"><td class="num" id="LN2985">2985</td><td class="line">PlumaFileBrowserStoreResult</td></tr>
+<tr class="codeline" data-linenumber="2986"><td class="num" id="LN2986">2986</td><td class="line">pluma_file_browser_store_set_root (PlumaFileBrowserStore * model,</td></tr>
+<tr class="codeline" data-linenumber="2987"><td class="num" id="LN2987">2987</td><td class="line"> gchar <span class='keyword'>const</span> *root)</td></tr>
+<tr class="codeline" data-linenumber="2988"><td class="num" id="LN2988">2988</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2989"><td class="num" id="LN2989">2989</td><td class="line"> <span class='macro'>g_return_val_if_fail (PLUMA_IS_FILE_BROWSER_STORE (model),<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_156<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((model)); GType __t = ((pluma_file_browser_store_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_156 = 1; else _g_boolean_var_156 =<br> 0; _g_boolean_var_156; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "PLUMA_IS_FILE_BROWSER_STORE (model)"<br>); return (PLUMA_FILE_BROWSER_STORE_RESULT_NO_CHANGE); } } while<br> (0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="2990"><td class="num" id="LN2990">2990</td><td class="line"> <span class='macro'>PLUMA_FILE_BROWSER_STORE_RESULT_NO_CHANGE)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_156<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((model)); GType __t = ((pluma_file_browser_store_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_156 = 1; else _g_boolean_var_156 =<br> 0; _g_boolean_var_156; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "PLUMA_IS_FILE_BROWSER_STORE (model)"<br>); return (PLUMA_FILE_BROWSER_STORE_RESULT_NO_CHANGE); } } while<br> (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2991"><td class="num" id="LN2991">2991</td><td class="line"> <span class='keyword'>return</span> pluma_file_browser_store_set_root_and_virtual_root (model,</td></tr>
+<tr class="codeline" data-linenumber="2992"><td class="num" id="LN2992">2992</td><td class="line"> root,</td></tr>
+<tr class="codeline" data-linenumber="2993"><td class="num" id="LN2993">2993</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2994"><td class="num" id="LN2994">2994</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2995"><td class="num" id="LN2995">2995</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2996"><td class="num" id="LN2996">2996</td><td class="line">gchar *</td></tr>
+<tr class="codeline" data-linenumber="2997"><td class="num" id="LN2997">2997</td><td class="line">pluma_file_browser_store_get_root (PlumaFileBrowserStore * model)</td></tr>
+<tr class="codeline" data-linenumber="2998"><td class="num" id="LN2998">2998</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2999"><td class="num" id="LN2999">2999</td><td class="line"> <span class='macro'>g_return_val_if_fail (PLUMA_IS_FILE_BROWSER_STORE (model), NULL)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_157<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((model)); GType __t = ((pluma_file_browser_store_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_157 = 1; else _g_boolean_var_157 =<br> 0; _g_boolean_var_157; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "PLUMA_IS_FILE_BROWSER_STORE (model)"<br>); return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3000"><td class="num" id="LN3000">3000</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3001"><td class="num" id="LN3001">3001</td><td class="line"> <span class='keyword'>if</span> (model-&gt;priv-&gt;root == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> || model-&gt;priv-&gt;root-&gt;file == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="3002"><td class="num" id="LN3002">3002</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3003"><td class="num" id="LN3003">3003</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="3004"><td class="num" id="LN3004">3004</td><td class="line"> <span class='keyword'>return</span> g_file_get_uri (model-&gt;priv-&gt;root-&gt;file);</td></tr>
+<tr class="codeline" data-linenumber="3005"><td class="num" id="LN3005">3005</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3006"><td class="num" id="LN3006">3006</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3007"><td class="num" id="LN3007">3007</td><td class="line">gchar *</td></tr>
+<tr class="codeline" data-linenumber="3008"><td class="num" id="LN3008">3008</td><td class="line">pluma_file_browser_store_get_virtual_root (PlumaFileBrowserStore * model)</td></tr>
+<tr class="codeline" data-linenumber="3009"><td class="num" id="LN3009">3009</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3010"><td class="num" id="LN3010">3010</td><td class="line"> <span class='macro'>g_return_val_if_fail (PLUMA_IS_FILE_BROWSER_STORE (model), NULL)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_158<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((model)); GType __t = ((pluma_file_browser_store_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_158 = 1; else _g_boolean_var_158 =<br> 0; _g_boolean_var_158; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "PLUMA_IS_FILE_BROWSER_STORE (model)"<br>); return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3011"><td class="num" id="LN3011">3011</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3012"><td class="num" id="LN3012">3012</td><td class="line"> <span class='keyword'>if</span> (model-&gt;priv-&gt;virtual_root == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> || model-&gt;priv-&gt;virtual_root-&gt;file == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="3013"><td class="num" id="LN3013">3013</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3014"><td class="num" id="LN3014">3014</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="3015"><td class="num" id="LN3015">3015</td><td class="line"> <span class='keyword'>return</span> g_file_get_uri (model-&gt;priv-&gt;virtual_root-&gt;file);</td></tr>
+<tr class="codeline" data-linenumber="3016"><td class="num" id="LN3016">3016</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3017"><td class="num" id="LN3017">3017</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3018"><td class="num" id="LN3018">3018</td><td class="line"><span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="3019"><td class="num" id="LN3019">3019</td><td class="line">_pluma_file_browser_store_iter_expanded (PlumaFileBrowserStore * model,</td></tr>
+<tr class="codeline" data-linenumber="3020"><td class="num" id="LN3020">3020</td><td class="line"> GtkTreeIter * iter)</td></tr>
+<tr class="codeline" data-linenumber="3021"><td class="num" id="LN3021">3021</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3022"><td class="num" id="LN3022">3022</td><td class="line"> FileBrowserNode *node;</td></tr>
+<tr class="codeline" data-linenumber="3023"><td class="num" id="LN3023">3023</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3024"><td class="num" id="LN3024">3024</td><td class="line"> <span class='macro'>g_return_if_fail (PLUMA_IS_FILE_BROWSER_STORE (model))<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_159<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((model)); GType __t = ((pluma_file_browser_store_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_159 = 1; else _g_boolean_var_159 =<br> 0; _g_boolean_var_159; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "PLUMA_IS_FILE_BROWSER_STORE (model)"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3025"><td class="num" id="LN3025">3025</td><td class="line"> <span class='macro'>g_return_if_fail (iter != NULL)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_160<br>; if (iter != ((void*)0)) _g_boolean_var_160 = 1; else _g_boolean_var_160<br> = 0; _g_boolean_var_160; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "iter != NULL"); return<br>; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3026"><td class="num" id="LN3026">3026</td><td class="line"> <span class='macro'>g_return_if_fail (iter-&gt;user_data != NULL)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_161<br>; if (iter-&gt;user_data != ((void*)0)) _g_boolean_var_161 = 1<br>; else _g_boolean_var_161 = 0; _g_boolean_var_161; }), 1))) {<br> } else { g_return_if_fail_warning (((gchar*) 0), ((const char<br>*) (__func__)), "iter-&gt;user_data != NULL"); return; } } while<br> (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3027"><td class="num" id="LN3027">3027</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3028"><td class="num" id="LN3028">3028</td><td class="line"> node = (FileBrowserNode *) (iter-&gt;user_data);</td></tr>
+<tr class="codeline" data-linenumber="3029"><td class="num" id="LN3029">3029</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3030"><td class="num" id="LN3030">3030</td><td class="line"> <span class='keyword'>if</span> (<span class='macro'>NODE_IS_DIR (node)<span class='macro_popup'>(((node)-&gt;flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_DIRECTORY<br>))</span></span> &amp;&amp; !<span class='macro'>NODE_LOADED (node)<span class='macro_popup'>(((node)-&gt;flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_LOADED<br>))</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3031"><td class="num" id="LN3031">3031</td><td class="line"> <span class='comment'>/* Load it now */</span></td></tr>
+<tr class="codeline" data-linenumber="3032"><td class="num" id="LN3032">3032</td><td class="line"> model_load_directory (model, node);</td></tr>
+<tr class="codeline" data-linenumber="3033"><td class="num" id="LN3033">3033</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3034"><td class="num" id="LN3034">3034</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3035"><td class="num" id="LN3035">3035</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3036"><td class="num" id="LN3036">3036</td><td class="line"><span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="3037"><td class="num" id="LN3037">3037</td><td class="line">_pluma_file_browser_store_iter_collapsed (PlumaFileBrowserStore * model,</td></tr>
+<tr class="codeline" data-linenumber="3038"><td class="num" id="LN3038">3038</td><td class="line"> GtkTreeIter * iter)</td></tr>
+<tr class="codeline" data-linenumber="3039"><td class="num" id="LN3039">3039</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3040"><td class="num" id="LN3040">3040</td><td class="line"> FileBrowserNode *node;</td></tr>
+<tr class="codeline" data-linenumber="3041"><td class="num" id="LN3041">3041</td><td class="line"> GSList *item;</td></tr>
+<tr class="codeline" data-linenumber="3042"><td class="num" id="LN3042">3042</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3043"><td class="num" id="LN3043">3043</td><td class="line"> <span class='macro'>g_return_if_fail (PLUMA_IS_FILE_BROWSER_STORE (model))<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_162<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((model)); GType __t = ((pluma_file_browser_store_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_162 = 1; else _g_boolean_var_162 =<br> 0; _g_boolean_var_162; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "PLUMA_IS_FILE_BROWSER_STORE (model)"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3044"><td class="num" id="LN3044">3044</td><td class="line"> <span class='macro'>g_return_if_fail (iter != NULL)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_163<br>; if (iter != ((void*)0)) _g_boolean_var_163 = 1; else _g_boolean_var_163<br> = 0; _g_boolean_var_163; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "iter != NULL"); return<br>; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3045"><td class="num" id="LN3045">3045</td><td class="line"> <span class='macro'>g_return_if_fail (iter-&gt;user_data != NULL)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_164<br>; if (iter-&gt;user_data != ((void*)0)) _g_boolean_var_164 = 1<br>; else _g_boolean_var_164 = 0; _g_boolean_var_164; }), 1))) {<br> } else { g_return_if_fail_warning (((gchar*) 0), ((const char<br>*) (__func__)), "iter-&gt;user_data != NULL"); return; } } while<br> (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3046"><td class="num" id="LN3046">3046</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3047"><td class="num" id="LN3047">3047</td><td class="line"> node = (FileBrowserNode *) (iter-&gt;user_data);</td></tr>
+<tr class="codeline" data-linenumber="3048"><td class="num" id="LN3048">3048</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3049"><td class="num" id="LN3049">3049</td><td class="line"> <span class='keyword'>if</span> (<span class='macro'>NODE_IS_DIR (node)<span class='macro_popup'>(((node)-&gt;flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_DIRECTORY<br>))</span></span> &amp;&amp; <span class='macro'>NODE_LOADED (node)<span class='macro_popup'>(((node)-&gt;flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_LOADED<br>))</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3050"><td class="num" id="LN3050">3050</td><td class="line"> <span class='comment'>/* Unload children of the children, keeping 1 depth in cache */</span></td></tr>
+<tr class="codeline" data-linenumber="3051"><td class="num" id="LN3051">3051</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3052"><td class="num" id="LN3052">3052</td><td class="line"> <span class='keyword'>for</span> (item = <span class='macro'>FILE_BROWSER_NODE_DIR (node)<span class='macro_popup'>((FileBrowserNodeDir *)(node))</span></span>-&gt;children; item;</td></tr>
+<tr class="codeline" data-linenumber="3053"><td class="num" id="LN3053">3053</td><td class="line"> item = item-&gt;next) {</td></tr>
+<tr class="codeline" data-linenumber="3054"><td class="num" id="LN3054">3054</td><td class="line"> node = (FileBrowserNode *) (item-&gt;data);</td></tr>
+<tr class="codeline" data-linenumber="3055"><td class="num" id="LN3055">3055</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3056"><td class="num" id="LN3056">3056</td><td class="line"> <span class='keyword'>if</span> (<span class='macro'>NODE_IS_DIR (node)<span class='macro_popup'>(((node)-&gt;flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_DIRECTORY<br>))</span></span> &amp;&amp; <span class='macro'>NODE_LOADED (node)<span class='macro_popup'>(((node)-&gt;flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_LOADED<br>))</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3057"><td class="num" id="LN3057">3057</td><td class="line"> file_browser_node_unload (model, node,</td></tr>
+<tr class="codeline" data-linenumber="3058"><td class="num" id="LN3058">3058</td><td class="line"> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3059"><td class="num" id="LN3059">3059</td><td class="line"> model_check_dummy (model, node);</td></tr>
+<tr class="codeline" data-linenumber="3060"><td class="num" id="LN3060">3060</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3061"><td class="num" id="LN3061">3061</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3062"><td class="num" id="LN3062">3062</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3063"><td class="num" id="LN3063">3063</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3064"><td class="num" id="LN3064">3064</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3065"><td class="num" id="LN3065">3065</td><td class="line">PlumaFileBrowserStoreFilterMode</td></tr>
+<tr class="codeline" data-linenumber="3066"><td class="num" id="LN3066">3066</td><td class="line">pluma_file_browser_store_get_filter_mode (PlumaFileBrowserStore * model)</td></tr>
+<tr class="codeline" data-linenumber="3067"><td class="num" id="LN3067">3067</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3068"><td class="num" id="LN3068">3068</td><td class="line"> <span class='keyword'>return</span> model-&gt;priv-&gt;filter_mode;</td></tr>
+<tr class="codeline" data-linenumber="3069"><td class="num" id="LN3069">3069</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3070"><td class="num" id="LN3070">3070</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3071"><td class="num" id="LN3071">3071</td><td class="line"><span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="3072"><td class="num" id="LN3072">3072</td><td class="line">pluma_file_browser_store_set_filter_mode (PlumaFileBrowserStore * model,</td></tr>
+<tr class="codeline" data-linenumber="3073"><td class="num" id="LN3073">3073</td><td class="line"> PlumaFileBrowserStoreFilterMode</td></tr>
+<tr class="codeline" data-linenumber="3074"><td class="num" id="LN3074">3074</td><td class="line"> mode)</td></tr>
+<tr class="codeline" data-linenumber="3075"><td class="num" id="LN3075">3075</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3076"><td class="num" id="LN3076">3076</td><td class="line"> <span class='macro'>g_return_if_fail (PLUMA_IS_FILE_BROWSER_STORE (model))<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_165<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((model)); GType __t = ((pluma_file_browser_store_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_165 = 1; else _g_boolean_var_165 =<br> 0; _g_boolean_var_165; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "PLUMA_IS_FILE_BROWSER_STORE (model)"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3077"><td class="num" id="LN3077">3077</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3078"><td class="num" id="LN3078">3078</td><td class="line"> <span class='keyword'>if</span> (model-&gt;priv-&gt;filter_mode == mode)</td></tr>
+<tr class="codeline" data-linenumber="3079"><td class="num" id="LN3079">3079</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="3080"><td class="num" id="LN3080">3080</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3081"><td class="num" id="LN3081">3081</td><td class="line"> model-&gt;priv-&gt;filter_mode = mode;</td></tr>
+<tr class="codeline" data-linenumber="3082"><td class="num" id="LN3082">3082</td><td class="line"> model_refilter (model);</td></tr>
+<tr class="codeline" data-linenumber="3083"><td class="num" id="LN3083">3083</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3084"><td class="num" id="LN3084">3084</td><td class="line"> g_object_notify (<span class='macro'>G_OBJECT (model)<span class='macro_popup'>((((GObject*) (void *) ((model)))))</span></span>, <span class='string_literal'>"filter-mode"</span>);</td></tr>
+<tr class="codeline" data-linenumber="3085"><td class="num" id="LN3085">3085</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3086"><td class="num" id="LN3086">3086</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3087"><td class="num" id="LN3087">3087</td><td class="line"><span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="3088"><td class="num" id="LN3088">3088</td><td class="line">pluma_file_browser_store_set_filter_func (PlumaFileBrowserStore * model,</td></tr>
+<tr class="codeline" data-linenumber="3089"><td class="num" id="LN3089">3089</td><td class="line"> PlumaFileBrowserStoreFilterFunc</td></tr>
+<tr class="codeline" data-linenumber="3090"><td class="num" id="LN3090">3090</td><td class="line"> func, gpointer user_data)</td></tr>
+<tr class="codeline" data-linenumber="3091"><td class="num" id="LN3091">3091</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3092"><td class="num" id="LN3092">3092</td><td class="line"> <span class='macro'>g_return_if_fail (PLUMA_IS_FILE_BROWSER_STORE (model))<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_166<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((model)); GType __t = ((pluma_file_browser_store_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_166 = 1; else _g_boolean_var_166 =<br> 0; _g_boolean_var_166; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "PLUMA_IS_FILE_BROWSER_STORE (model)"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3093"><td class="num" id="LN3093">3093</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3094"><td class="num" id="LN3094">3094</td><td class="line"> model-&gt;priv-&gt;filter_func = func;</td></tr>
+<tr class="codeline" data-linenumber="3095"><td class="num" id="LN3095">3095</td><td class="line"> model-&gt;priv-&gt;filter_user_data = user_data;</td></tr>
+<tr class="codeline" data-linenumber="3096"><td class="num" id="LN3096">3096</td><td class="line"> model_refilter (model);</td></tr>
+<tr class="codeline" data-linenumber="3097"><td class="num" id="LN3097">3097</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3098"><td class="num" id="LN3098">3098</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3099"><td class="num" id="LN3099">3099</td><td class="line"><span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="3100"><td class="num" id="LN3100">3100</td><td class="line">pluma_file_browser_store_refilter (PlumaFileBrowserStore * model)</td></tr>
+<tr class="codeline" data-linenumber="3101"><td class="num" id="LN3101">3101</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3102"><td class="num" id="LN3102">3102</td><td class="line"> model_refilter (model);</td></tr>
+<tr class="codeline" data-linenumber="3103"><td class="num" id="LN3103">3103</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3104"><td class="num" id="LN3104">3104</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3105"><td class="num" id="LN3105">3105</td><td class="line">PlumaFileBrowserStoreFilterMode</td></tr>
+<tr class="codeline" data-linenumber="3106"><td class="num" id="LN3106">3106</td><td class="line">pluma_file_browser_store_filter_mode_get_default (<span class='keyword'>void</span>)</td></tr>
+<tr class="codeline" data-linenumber="3107"><td class="num" id="LN3107">3107</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3108"><td class="num" id="LN3108">3108</td><td class="line"> <span class='keyword'>return</span> PLUMA_FILE_BROWSER_STORE_FILTER_MODE_HIDE_HIDDEN;</td></tr>
+<tr class="codeline" data-linenumber="3109"><td class="num" id="LN3109">3109</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3110"><td class="num" id="LN3110">3110</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3111"><td class="num" id="LN3111">3111</td><td class="line"><span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="3112"><td class="num" id="LN3112">3112</td><td class="line">pluma_file_browser_store_refresh (PlumaFileBrowserStore * model)</td></tr>
+<tr class="codeline" data-linenumber="3113"><td class="num" id="LN3113">3113</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3114"><td class="num" id="LN3114">3114</td><td class="line"> <span class='macro'>g_return_if_fail (PLUMA_IS_FILE_BROWSER_STORE (model))<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_167<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((model)); GType __t = ((pluma_file_browser_store_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_167 = 1; else _g_boolean_var_167 =<br> 0; _g_boolean_var_167; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "PLUMA_IS_FILE_BROWSER_STORE (model)"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3115"><td class="num" id="LN3115">3115</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3116"><td class="num" id="LN3116">3116</td><td class="line"> <span class='keyword'>if</span> (model-&gt;priv-&gt;root == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> || model-&gt;priv-&gt;virtual_root == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="3117"><td class="num" id="LN3117">3117</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="3118"><td class="num" id="LN3118">3118</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3119"><td class="num" id="LN3119">3119</td><td class="line"> <span class='comment'>/* Clear the model */</span></td></tr>
+<tr class="codeline" data-linenumber="3120"><td class="num" id="LN3120">3120</td><td class="line"> g_signal_emit (model, model_signals[BEGIN_REFRESH], 0);</td></tr>
+<tr class="codeline" data-linenumber="3121"><td class="num" id="LN3121">3121</td><td class="line"> file_browser_node_unload (model, model-&gt;priv-&gt;virtual_root, <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3122"><td class="num" id="LN3122">3122</td><td class="line"> model_load_directory (model, model-&gt;priv-&gt;virtual_root);</td></tr>
+<tr class="codeline" data-linenumber="3123"><td class="num" id="LN3123">3123</td><td class="line"> g_signal_emit (model, model_signals[END_REFRESH], 0);</td></tr>
+<tr class="codeline" data-linenumber="3124"><td class="num" id="LN3124">3124</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3125"><td class="num" id="LN3125">3125</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3126"><td class="num" id="LN3126">3126</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="3127"><td class="num" id="LN3127">3127</td><td class="line">reparent_node (FileBrowserNode * node, gboolean reparent)</td></tr>
+<tr class="codeline" data-linenumber="3128"><td class="num" id="LN3128">3128</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3129"><td class="num" id="LN3129">3129</td><td class="line"> FileBrowserNodeDir * dir;</td></tr>
+<tr class="codeline" data-linenumber="3130"><td class="num" id="LN3130">3130</td><td class="line"> GSList * child;</td></tr>
+<tr class="codeline" data-linenumber="3131"><td class="num" id="LN3131">3131</td><td class="line"> GFile * parent;</td></tr>
+<tr class="codeline" data-linenumber="3132"><td class="num" id="LN3132">3132</td><td class="line"> gchar * base;</td></tr>
+<tr class="codeline" data-linenumber="3133"><td class="num" id="LN3133">3133</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3134"><td class="num" id="LN3134">3134</td><td class="line"> <span class='keyword'>if</span> (!node-&gt;file) {</td></tr>
+<tr class="codeline" data-linenumber="3135"><td class="num" id="LN3135">3135</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="3136"><td class="num" id="LN3136">3136</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3137"><td class="num" id="LN3137">3137</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3138"><td class="num" id="LN3138">3138</td><td class="line"> <span class='keyword'>if</span> (reparent) {</td></tr>
+<tr class="codeline" data-linenumber="3139"><td class="num" id="LN3139">3139</td><td class="line"> parent = node-&gt;parent-&gt;file;</td></tr>
+<tr class="codeline" data-linenumber="3140"><td class="num" id="LN3140">3140</td><td class="line"> base = g_file_get_basename (node-&gt;file);</td></tr>
+<tr class="codeline" data-linenumber="3141"><td class="num" id="LN3141">3141</td><td class="line"> g_object_unref (node-&gt;file);</td></tr>
+<tr class="codeline" data-linenumber="3142"><td class="num" id="LN3142">3142</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3143"><td class="num" id="LN3143">3143</td><td class="line"> node-&gt;file = g_file_get_child (parent, base);</td></tr>
+<tr class="codeline" data-linenumber="3144"><td class="num" id="LN3144">3144</td><td class="line"> g_free (base);</td></tr>
+<tr class="codeline" data-linenumber="3145"><td class="num" id="LN3145">3145</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3146"><td class="num" id="LN3146">3146</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3147"><td class="num" id="LN3147">3147</td><td class="line"> <span class='keyword'>if</span> (<span class='macro'>NODE_IS_DIR (node)<span class='macro_popup'>(((node)-&gt;flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_DIRECTORY<br>))</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3148"><td class="num" id="LN3148">3148</td><td class="line"> dir = <span class='macro'>FILE_BROWSER_NODE_DIR (node)<span class='macro_popup'>((FileBrowserNodeDir *)(node))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3149"><td class="num" id="LN3149">3149</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3150"><td class="num" id="LN3150">3150</td><td class="line"> <span class='keyword'>for</span> (child = dir-&gt;children; child; child = child-&gt;next) {</td></tr>
+<tr class="codeline" data-linenumber="3151"><td class="num" id="LN3151">3151</td><td class="line"> reparent_node ((FileBrowserNode *)child-&gt;data, <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3152"><td class="num" id="LN3152">3152</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3153"><td class="num" id="LN3153">3153</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3154"><td class="num" id="LN3154">3154</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3155"><td class="num" id="LN3155">3155</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3156"><td class="num" id="LN3156">3156</td><td class="line">gboolean</td></tr>
+<tr class="codeline" data-linenumber="3157"><td class="num" id="LN3157">3157</td><td class="line">pluma_file_browser_store_rename (PlumaFileBrowserStore * model,</td></tr>
+<tr class="codeline" data-linenumber="3158"><td class="num" id="LN3158">3158</td><td class="line"> GtkTreeIter * iter,</td></tr>
+<tr class="codeline" data-linenumber="3159"><td class="num" id="LN3159">3159</td><td class="line"> <span class='keyword'>const</span> gchar * new_name,</td></tr>
+<tr class="codeline" data-linenumber="3160"><td class="num" id="LN3160">3160</td><td class="line"> GError ** error)</td></tr>
+<tr class="codeline" data-linenumber="3161"><td class="num" id="LN3161">3161</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3162"><td class="num" id="LN3162">3162</td><td class="line"> FileBrowserNode *node;</td></tr>
+<tr class="codeline" data-linenumber="3163"><td class="num" id="LN3163">3163</td><td class="line"> GFile * file;</td></tr>
+<tr class="codeline" data-linenumber="3164"><td class="num" id="LN3164">3164</td><td class="line"> GFile * parent;</td></tr>
+<tr class="codeline" data-linenumber="3165"><td class="num" id="LN3165">3165</td><td class="line"> GFile * previous;</td></tr>
+<tr class="codeline" data-linenumber="3166"><td class="num" id="LN3166">3166</td><td class="line"> GError * err = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3167"><td class="num" id="LN3167">3167</td><td class="line"> gchar * olduri;</td></tr>
+<tr class="codeline" data-linenumber="3168"><td class="num" id="LN3168">3168</td><td class="line"> gchar * newuri;</td></tr>
+<tr class="codeline" data-linenumber="3169"><td class="num" id="LN3169">3169</td><td class="line"> GtkTreePath *path;</td></tr>
+<tr class="codeline" data-linenumber="3170"><td class="num" id="LN3170">3170</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3171"><td class="num" id="LN3171">3171</td><td class="line"> <span class='macro'>g_return_val_if_fail (PLUMA_IS_FILE_BROWSER_STORE (model), FALSE)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_168<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((model)); GType __t = ((pluma_file_browser_store_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_168 = 1; else _g_boolean_var_168 =<br> 0; _g_boolean_var_168; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "PLUMA_IS_FILE_BROWSER_STORE (model)"<br>); return ((0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3172"><td class="num" id="LN3172">3172</td><td class="line"> <span class='macro'>g_return_val_if_fail (iter != NULL, FALSE)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_169<br>; if (iter != ((void*)0)) _g_boolean_var_169 = 1; else _g_boolean_var_169<br> = 0; _g_boolean_var_169; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "iter != NULL"); return<br> ((0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3173"><td class="num" id="LN3173">3173</td><td class="line"> <span class='macro'>g_return_val_if_fail (iter-&gt;user_data != NULL, FALSE)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_170<br>; if (iter-&gt;user_data != ((void*)0)) _g_boolean_var_170 = 1<br>; else _g_boolean_var_170 = 0; _g_boolean_var_170; }), 1))) {<br> } else { g_return_if_fail_warning (((gchar*) 0), ((const char<br>*) (__func__)), "iter-&gt;user_data != NULL"); return ((0)); }<br> } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3174"><td class="num" id="LN3174">3174</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3175"><td class="num" id="LN3175">3175</td><td class="line"> node = (FileBrowserNode *) (iter-&gt;user_data);</td></tr>
+<tr class="codeline" data-linenumber="3176"><td class="num" id="LN3176">3176</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3177"><td class="num" id="LN3177">3177</td><td class="line"> parent = g_file_get_parent (node-&gt;file);</td></tr>
+<tr class="codeline" data-linenumber="3178"><td class="num" id="LN3178">3178</td><td class="line"> <span class='macro'>g_return_val_if_fail (parent != NULL, FALSE)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_171<br>; if (parent != ((void*)0)) _g_boolean_var_171 = 1; else _g_boolean_var_171<br> = 0; _g_boolean_var_171; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "parent != NULL")<br>; return ((0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3179"><td class="num" id="LN3179">3179</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3180"><td class="num" id="LN3180">3180</td><td class="line"> file = g_file_get_child (parent, new_name);</td></tr>
+<tr class="codeline" data-linenumber="3181"><td class="num" id="LN3181">3181</td><td class="line"> g_object_unref (parent);</td></tr>
+<tr class="codeline" data-linenumber="3182"><td class="num" id="LN3182">3182</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3183"><td class="num" id="LN3183">3183</td><td class="line"> <span class='keyword'>if</span> (g_file_equal (node-&gt;file, file)) {</td></tr>
+<tr class="codeline" data-linenumber="3184"><td class="num" id="LN3184">3184</td><td class="line"> g_object_unref (file);</td></tr>
+<tr class="codeline" data-linenumber="3185"><td class="num" id="LN3185">3185</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3186"><td class="num" id="LN3186">3186</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3187"><td class="num" id="LN3187">3187</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3188"><td class="num" id="LN3188">3188</td><td class="line"> <span class='keyword'>if</span> (g_file_move (node-&gt;file, file, G_FILE_COPY_NONE, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, &amp;err)) {</td></tr>
+<tr class="codeline" data-linenumber="3189"><td class="num" id="LN3189">3189</td><td class="line"> previous = node-&gt;file;</td></tr>
+<tr class="codeline" data-linenumber="3190"><td class="num" id="LN3190">3190</td><td class="line"> node-&gt;file = file;</td></tr>
+<tr class="codeline" data-linenumber="3191"><td class="num" id="LN3191">3191</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3192"><td class="num" id="LN3192">3192</td><td class="line"> <span class='comment'>/* This makes sure the actual info for the node is requeried */</span></td></tr>
+<tr class="codeline" data-linenumber="3193"><td class="num" id="LN3193">3193</td><td class="line"> file_browser_node_set_name (node);</td></tr>
+<tr class="codeline" data-linenumber="3194"><td class="num" id="LN3194">3194</td><td class="line"> file_browser_node_set_from_info (model, node, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3195"><td class="num" id="LN3195">3195</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3196"><td class="num" id="LN3196">3196</td><td class="line"> reparent_node (node, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3197"><td class="num" id="LN3197">3197</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3198"><td class="num" id="LN3198">3198</td><td class="line"> <span class='keyword'>if</span> (model_node_visibility (model, node)) {</td></tr>
+<tr class="codeline" data-linenumber="3199"><td class="num" id="LN3199">3199</td><td class="line"> path = pluma_file_browser_store_get_path_real (model, node);</td></tr>
+<tr class="codeline" data-linenumber="3200"><td class="num" id="LN3200">3200</td><td class="line"> row_changed (model, &amp;path, iter);</td></tr>
+<tr class="codeline" data-linenumber="3201"><td class="num" id="LN3201">3201</td><td class="line"> gtk_tree_path_free (path);</td></tr>
+<tr class="codeline" data-linenumber="3202"><td class="num" id="LN3202">3202</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3203"><td class="num" id="LN3203">3203</td><td class="line"> <span class='comment'>/* Reorder this item */</span></td></tr>
+<tr class="codeline" data-linenumber="3204"><td class="num" id="LN3204">3204</td><td class="line"> model_resort_node (model, node);</td></tr>
+<tr class="codeline" data-linenumber="3205"><td class="num" id="LN3205">3205</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="3206"><td class="num" id="LN3206">3206</td><td class="line"> g_object_unref (previous);</td></tr>
+<tr class="codeline" data-linenumber="3207"><td class="num" id="LN3207">3207</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3208"><td class="num" id="LN3208">3208</td><td class="line"> <span class='keyword'>if</span> (error != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="3209"><td class="num" id="LN3209">3209</td><td class="line"> *error = g_error_new_literal (pluma_file_browser_store_error_quark (),</td></tr>
+<tr class="codeline" data-linenumber="3210"><td class="num" id="LN3210">3210</td><td class="line"> PLUMA_FILE_BROWSER_ERROR_RENAME,</td></tr>
+<tr class="codeline" data-linenumber="3211"><td class="num" id="LN3211">3211</td><td class="line"> <span class='macro'>_(<span class='string_literal'>"The renamed file is currently filtered out. You need to adjust your filter settings to make the file visible"</span>)<span class='macro_popup'>((char *) g_dgettext ("pluma", "The renamed file is currently filtered out. You need to adjust your filter settings to make the file visible"<br>))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3212"><td class="num" id="LN3212">3212</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3213"><td class="num" id="LN3213">3213</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3214"><td class="num" id="LN3214">3214</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3215"><td class="num" id="LN3215">3215</td><td class="line"> olduri = g_file_get_uri (previous);</td></tr>
+<tr class="codeline" data-linenumber="3216"><td class="num" id="LN3216">3216</td><td class="line"> newuri = g_file_get_uri (node-&gt;file);</td></tr>
+<tr class="codeline" data-linenumber="3217"><td class="num" id="LN3217">3217</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3218"><td class="num" id="LN3218">3218</td><td class="line"> g_signal_emit (model, model_signals[RENAME], 0, olduri, newuri);</td></tr>
+<tr class="codeline" data-linenumber="3219"><td class="num" id="LN3219">3219</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3220"><td class="num" id="LN3220">3220</td><td class="line"> g_object_unref (previous);</td></tr>
+<tr class="codeline" data-linenumber="3221"><td class="num" id="LN3221">3221</td><td class="line"> g_free (olduri);</td></tr>
+<tr class="codeline" data-linenumber="3222"><td class="num" id="LN3222">3222</td><td class="line"> g_free (newuri);</td></tr>
+<tr class="codeline" data-linenumber="3223"><td class="num" id="LN3223">3223</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3224"><td class="num" id="LN3224">3224</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3225"><td class="num" id="LN3225">3225</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="3226"><td class="num" id="LN3226">3226</td><td class="line"> g_object_unref (file);</td></tr>
+<tr class="codeline" data-linenumber="3227"><td class="num" id="LN3227">3227</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3228"><td class="num" id="LN3228">3228</td><td class="line"> <span class='keyword'>if</span> (err) {</td></tr>
+<tr class="codeline" data-linenumber="3229"><td class="num" id="LN3229">3229</td><td class="line"> <span class='keyword'>if</span> (error != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3230"><td class="num" id="LN3230">3230</td><td class="line"> *error =</td></tr>
+<tr class="codeline" data-linenumber="3231"><td class="num" id="LN3231">3231</td><td class="line"> g_error_new_literal</td></tr>
+<tr class="codeline" data-linenumber="3232"><td class="num" id="LN3232">3232</td><td class="line"> (pluma_file_browser_store_error_quark (),</td></tr>
+<tr class="codeline" data-linenumber="3233"><td class="num" id="LN3233">3233</td><td class="line"> PLUMA_FILE_BROWSER_ERROR_RENAME,</td></tr>
+<tr class="codeline" data-linenumber="3234"><td class="num" id="LN3234">3234</td><td class="line"> err-&gt;message);</td></tr>
+<tr class="codeline" data-linenumber="3235"><td class="num" id="LN3235">3235</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3236"><td class="num" id="LN3236">3236</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3237"><td class="num" id="LN3237">3237</td><td class="line"> g_error_free (err);</td></tr>
+<tr class="codeline" data-linenumber="3238"><td class="num" id="LN3238">3238</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3239"><td class="num" id="LN3239">3239</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3240"><td class="num" id="LN3240">3240</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3241"><td class="num" id="LN3241">3241</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3242"><td class="num" id="LN3242">3242</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3243"><td class="num" id="LN3243">3243</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3244"><td class="num" id="LN3244">3244</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="3245"><td class="num" id="LN3245">3245</td><td class="line">async_data_free (AsyncData * data)</td></tr>
+<tr class="codeline" data-linenumber="3246"><td class="num" id="LN3246">3246</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3247"><td class="num" id="LN3247">3247</td><td class="line"> g_object_unref (data-&gt;cancellable);</td></tr>
+<tr class="codeline" data-linenumber="3248"><td class="num" id="LN3248">3248</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3249"><td class="num" id="LN3249">3249</td><td class="line"> g_list_free_full (data-&gt;files, g_object_unref);</td></tr>
+<tr class="codeline" data-linenumber="3250"><td class="num" id="LN3250">3250</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3251"><td class="num" id="LN3251">3251</td><td class="line"> <span class='keyword'>if</span> (!data-&gt;removed)</td></tr>
+<tr class="codeline" data-linenumber="3252"><td class="num" id="LN3252">3252</td><td class="line"> data-&gt;model-&gt;priv-&gt;async_handles = g_slist_remove (data-&gt;model-&gt;priv-&gt;async_handles, data);</td></tr>
+<tr class="codeline" data-linenumber="3253"><td class="num" id="LN3253">3253</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3254"><td class="num" id="LN3254">3254</td><td class="line"> g_free (data);</td></tr>
+<tr class="codeline" data-linenumber="3255"><td class="num" id="LN3255">3255</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3256"><td class="num" id="LN3256">3256</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3257"><td class="num" id="LN3257">3257</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="3258"><td class="num" id="LN3258">3258</td><td class="line">emit_no_trash (AsyncData * data)</td></tr>
+<tr class="codeline" data-linenumber="3259"><td class="num" id="LN3259">3259</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3260"><td class="num" id="LN3260">3260</td><td class="line"> <span class='comment'>/* Emit the no trash error */</span></td></tr>
+<tr class="codeline" data-linenumber="3261"><td class="num" id="LN3261">3261</td><td class="line"> gboolean ret;</td></tr>
+<tr class="codeline" data-linenumber="3262"><td class="num" id="LN3262">3262</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3263"><td class="num" id="LN3263">3263</td><td class="line"> g_signal_emit (data-&gt;model, model_signals[NO_TRASH], 0, data-&gt;files, &amp;ret);</td></tr>
+<tr class="codeline" data-linenumber="3264"><td class="num" id="LN3264">3264</td><td class="line"> <span class='keyword'>return</span> ret;</td></tr>
+<tr class="codeline" data-linenumber="3265"><td class="num" id="LN3265">3265</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3266"><td class="num" id="LN3266">3266</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3267"><td class="num" id="LN3267">3267</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="3268"><td class="num" id="LN3268">3268</td><td class="line">delete_file_finished (GFile *file,</td></tr>
+<tr class="codeline" data-linenumber="3269"><td class="num" id="LN3269">3269</td><td class="line"> GAsyncResult *res,</td></tr>
+<tr class="codeline" data-linenumber="3270"><td class="num" id="LN3270">3270</td><td class="line"> AsyncData *data)</td></tr>
+<tr class="codeline" data-linenumber="3271"><td class="num" id="LN3271">3271</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3272"><td class="num" id="LN3272">3272</td><td class="line"> GError * error = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3273"><td class="num" id="LN3273">3273</td><td class="line"> gboolean ok;</td></tr>
+<tr class="codeline" data-linenumber="3274"><td class="num" id="LN3274">3274</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3275"><td class="num" id="LN3275">3275</td><td class="line"> <span class='keyword'>if</span> (data-&gt;trash)</td></tr>
+<tr class="codeline" data-linenumber="3276"><td class="num" id="LN3276">3276</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="3277"><td class="num" id="LN3277">3277</td><td class="line"> ok = g_file_trash_finish (file, res, &amp;error);</td></tr>
+<tr class="codeline" data-linenumber="3278"><td class="num" id="LN3278">3278</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3279"><td class="num" id="LN3279">3279</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="3280"><td class="num" id="LN3280">3280</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="3281"><td class="num" id="LN3281">3281</td><td class="line"> ok = g_file_delete_finish (file, res, &amp;error);</td></tr>
+<tr class="codeline" data-linenumber="3282"><td class="num" id="LN3282">3282</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3283"><td class="num" id="LN3283">3283</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3284"><td class="num" id="LN3284">3284</td><td class="line"> <span class='keyword'>if</span> (ok)</td></tr>
+<tr class="codeline" data-linenumber="3285"><td class="num" id="LN3285">3285</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="3286"><td class="num" id="LN3286">3286</td><td class="line"> <span class='comment'>/* Remove the file from the model */</span></td></tr>
+<tr class="codeline" data-linenumber="3287"><td class="num" id="LN3287">3287</td><td class="line"> FileBrowserNode *node = model_find_node (data-&gt;model, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, file);</td></tr>
+<tr class="codeline" data-linenumber="3288"><td class="num" id="LN3288">3288</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3289"><td class="num" id="LN3289">3289</td><td class="line"> <span class='keyword'>if</span> (node != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="3290"><td class="num" id="LN3290">3290</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="3291"><td class="num" id="LN3291">3291</td><td class="line"> model_remove_node (data-&gt;model, node, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3292"><td class="num" id="LN3292">3292</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3293"><td class="num" id="LN3293">3293</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3294"><td class="num" id="LN3294">3294</td><td class="line"> <span class='comment'>/* Process the next file */</span></td></tr>
+<tr class="codeline" data-linenumber="3295"><td class="num" id="LN3295">3295</td><td class="line"> data-&gt;iter = data-&gt;iter-&gt;next;</td></tr>
+<tr class="codeline" data-linenumber="3296"><td class="num" id="LN3296">3296</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3297"><td class="num" id="LN3297">3297</td><td class="line"> <span class='keyword'>else</span> <span class='keyword'>if</span> (!ok &amp;&amp; error != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="3298"><td class="num" id="LN3298">3298</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="3299"><td class="num" id="LN3299">3299</td><td class="line"> gint code = error-&gt;code;</td></tr>
+<tr class="codeline" data-linenumber="3300"><td class="num" id="LN3300">3300</td><td class="line"> g_error_free (error);</td></tr>
+<tr class="codeline" data-linenumber="3301"><td class="num" id="LN3301">3301</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3302"><td class="num" id="LN3302">3302</td><td class="line"> <span class='keyword'>if</span> (data-&gt;trash &amp;&amp; code == G_IO_ERROR_NOT_SUPPORTED) {</td></tr>
+<tr class="codeline" data-linenumber="3303"><td class="num" id="LN3303">3303</td><td class="line"> <span class='comment'>/* Trash is not supported on this system. Ask the user</span></td></tr>
+<tr class="codeline" data-linenumber="3304"><td class="num" id="LN3304">3304</td><td class="line"> <span class='comment'>* if he wants to delete completely the files instead.</span></td></tr>
+<tr class="codeline" data-linenumber="3305"><td class="num" id="LN3305">3305</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="3306"><td class="num" id="LN3306">3306</td><td class="line"> <span class='keyword'>if</span> (emit_no_trash (data))</td></tr>
+<tr class="codeline" data-linenumber="3307"><td class="num" id="LN3307">3307</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="3308"><td class="num" id="LN3308">3308</td><td class="line"> <span class='comment'>/* Changes this into a delete job */</span></td></tr>
+<tr class="codeline" data-linenumber="3309"><td class="num" id="LN3309">3309</td><td class="line"> data-&gt;trash = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3310"><td class="num" id="LN3310">3310</td><td class="line"> data-&gt;iter = data-&gt;files;</td></tr>
+<tr class="codeline" data-linenumber="3311"><td class="num" id="LN3311">3311</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3312"><td class="num" id="LN3312">3312</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="3313"><td class="num" id="LN3313">3313</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="3314"><td class="num" id="LN3314">3314</td><td class="line"> <span class='comment'>/* End the job */</span></td></tr>
+<tr class="codeline" data-linenumber="3315"><td class="num" id="LN3315">3315</td><td class="line"> async_data_free (data);</td></tr>
+<tr class="codeline" data-linenumber="3316"><td class="num" id="LN3316">3316</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="3317"><td class="num" id="LN3317">3317</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3318"><td class="num" id="LN3318">3318</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3319"><td class="num" id="LN3319">3319</td><td class="line"> <span class='keyword'>else</span> <span class='keyword'>if</span> (code == G_IO_ERROR_CANCELLED)</td></tr>
+<tr class="codeline" data-linenumber="3320"><td class="num" id="LN3320">3320</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="3321"><td class="num" id="LN3321">3321</td><td class="line"> <span class='comment'>/* Job has been cancelled, end the job */</span></td></tr>
+<tr class="codeline" data-linenumber="3322"><td class="num" id="LN3322">3322</td><td class="line"> async_data_free (data);</td></tr>
+<tr class="codeline" data-linenumber="3323"><td class="num" id="LN3323">3323</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="3324"><td class="num" id="LN3324">3324</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3325"><td class="num" id="LN3325">3325</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3326"><td class="num" id="LN3326">3326</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3327"><td class="num" id="LN3327">3327</td><td class="line"> <span class='comment'>/* Continue the job */</span></td></tr>
+<tr class="codeline" data-linenumber="3328"><td class="num" id="LN3328">3328</td><td class="line"> delete_files (data);</td></tr>
+<tr class="codeline" data-linenumber="3329"><td class="num" id="LN3329">3329</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3330"><td class="num" id="LN3330">3330</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3331"><td class="num" id="LN3331">3331</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="3332"><td class="num" id="LN3332">3332</td><td class="line">delete_files (AsyncData *data)</td></tr>
+<tr class="codeline" data-linenumber="3333"><td class="num" id="LN3333">3333</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3334"><td class="num" id="LN3334">3334</td><td class="line"> GFile *file;</td></tr>
+<tr class="codeline" data-linenumber="3335"><td class="num" id="LN3335">3335</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3336"><td class="num" id="LN3336">3336</td><td class="line"> <span class='comment'>/* Check if our job is done */</span></td></tr>
+<tr class="codeline" data-linenumber="3337"><td class="num" id="LN3337">3337</td><td class="line"> <span class='keyword'>if</span> (data-&gt;iter == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="3338"><td class="num" id="LN3338">3338</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="3339"><td class="num" id="LN3339">3339</td><td class="line"> async_data_free (data);</td></tr>
+<tr class="codeline" data-linenumber="3340"><td class="num" id="LN3340">3340</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="3341"><td class="num" id="LN3341">3341</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3342"><td class="num" id="LN3342">3342</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3343"><td class="num" id="LN3343">3343</td><td class="line"> file = <span class='macro'>G_FILE (data-&gt;iter-&gt;data)<span class='macro_popup'>((((GFile*) (void *) ((data-&gt;iter-&gt;data)))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3344"><td class="num" id="LN3344">3344</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3345"><td class="num" id="LN3345">3345</td><td class="line"> <span class='keyword'>if</span> (data-&gt;trash)</td></tr>
+<tr class="codeline" data-linenumber="3346"><td class="num" id="LN3346">3346</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="3347"><td class="num" id="LN3347">3347</td><td class="line"> g_file_trash_async (file,</td></tr>
+<tr class="codeline" data-linenumber="3348"><td class="num" id="LN3348">3348</td><td class="line"> <span class='macro'>G_PRIORITY_DEFAULT<span class='macro_popup'>0</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="3349"><td class="num" id="LN3349">3349</td><td class="line"> data-&gt;cancellable,</td></tr>
+<tr class="codeline" data-linenumber="3350"><td class="num" id="LN3350">3350</td><td class="line"> (GAsyncReadyCallback)delete_file_finished,</td></tr>
+<tr class="codeline" data-linenumber="3351"><td class="num" id="LN3351">3351</td><td class="line"> data);</td></tr>
+<tr class="codeline" data-linenumber="3352"><td class="num" id="LN3352">3352</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3353"><td class="num" id="LN3353">3353</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="3354"><td class="num" id="LN3354">3354</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="3355"><td class="num" id="LN3355">3355</td><td class="line"> g_file_delete_async (file,</td></tr>
+<tr class="codeline" data-linenumber="3356"><td class="num" id="LN3356">3356</td><td class="line"> <span class='macro'>G_PRIORITY_DEFAULT<span class='macro_popup'>0</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="3357"><td class="num" id="LN3357">3357</td><td class="line"> data-&gt;cancellable,</td></tr>
+<tr class="codeline" data-linenumber="3358"><td class="num" id="LN3358">3358</td><td class="line"> (GAsyncReadyCallback)delete_file_finished,</td></tr>
+<tr class="codeline" data-linenumber="3359"><td class="num" id="LN3359">3359</td><td class="line"> data);</td></tr>
+<tr class="codeline" data-linenumber="3360"><td class="num" id="LN3360">3360</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3361"><td class="num" id="LN3361">3361</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3362"><td class="num" id="LN3362">3362</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3363"><td class="num" id="LN3363">3363</td><td class="line">PlumaFileBrowserStoreResult</td></tr>
+<tr class="codeline" data-linenumber="3364"><td class="num" id="LN3364">3364</td><td class="line">pluma_file_browser_store_delete_all (PlumaFileBrowserStore *model,</td></tr>
+<tr class="codeline" data-linenumber="3365"><td class="num" id="LN3365">3365</td><td class="line"> GList *rows, gboolean trash)</td></tr>
+<tr class="codeline" data-linenumber="3366"><td class="num" id="LN3366">3366</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3367"><td class="num" id="LN3367">3367</td><td class="line"> FileBrowserNode * node;</td></tr>
+<tr class="codeline" data-linenumber="3368"><td class="num" id="LN3368">3368</td><td class="line"> AsyncData * data;</td></tr>
+<tr class="codeline" data-linenumber="3369"><td class="num" id="LN3369">3369</td><td class="line"> GList * files = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3370"><td class="num" id="LN3370">3370</td><td class="line"> GList * row;</td></tr>
+<tr class="codeline" data-linenumber="3371"><td class="num" id="LN3371">3371</td><td class="line"> GtkTreeIter iter;</td></tr>
+<tr class="codeline" data-linenumber="3372"><td class="num" id="LN3372">3372</td><td class="line"> GtkTreePath * prev = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3373"><td class="num" id="LN3373">3373</td><td class="line"> GtkTreePath * path;</td></tr>
+<tr class="codeline" data-linenumber="3374"><td class="num" id="LN3374">3374</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3375"><td class="num" id="LN3375">3375</td><td class="line"> <span class='macro'>g_return_val_if_fail (PLUMA_IS_FILE_BROWSER_STORE (model), PLUMA_FILE_BROWSER_STORE_RESULT_NO_CHANGE)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_172<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((model)); GType __t = ((pluma_file_browser_store_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_172 = 1; else _g_boolean_var_172 =<br> 0; _g_boolean_var_172; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "PLUMA_IS_FILE_BROWSER_STORE (model)"<br>); return (PLUMA_FILE_BROWSER_STORE_RESULT_NO_CHANGE); } } while<br> (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3376"><td class="num" id="LN3376">3376</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3377"><td class="num" id="LN3377">3377</td><td class="line"> <span class='keyword'>if</span> (rows == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="3378"><td class="num" id="LN3378">3378</td><td class="line"> <span class='keyword'>return</span> PLUMA_FILE_BROWSER_STORE_RESULT_NO_CHANGE;</td></tr>
+<tr class="codeline" data-linenumber="3379"><td class="num" id="LN3379">3379</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3380"><td class="num" id="LN3380">3380</td><td class="line"> <span class='comment'>/* First we sort the paths so that we can later on remove any</span></td></tr>
+<tr class="codeline" data-linenumber="3381"><td class="num" id="LN3381">3381</td><td class="line"> <span class='comment'>files/directories that are actually subfiles/directories of</span></td></tr>
+<tr class="codeline" data-linenumber="3382"><td class="num" id="LN3382">3382</td><td class="line"> <span class='comment'>a directory that's also deleted */</span></td></tr>
+<tr class="codeline" data-linenumber="3383"><td class="num" id="LN3383">3383</td><td class="line"> rows = g_list_sort (g_list_copy (rows), (GCompareFunc)gtk_tree_path_compare);</td></tr>
+<tr class="codeline" data-linenumber="3384"><td class="num" id="LN3384">3384</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3385"><td class="num" id="LN3385">3385</td><td class="line"> <span class='keyword'>for</span> (row = rows; row; row = row-&gt;next) {</td></tr>
+<tr class="codeline" data-linenumber="3386"><td class="num" id="LN3386">3386</td><td class="line"> path = (GtkTreePath *)(row-&gt;data);</td></tr>
+<tr class="codeline" data-linenumber="3387"><td class="num" id="LN3387">3387</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3388"><td class="num" id="LN3388">3388</td><td class="line"> <span class='keyword'>if</span> (!gtk_tree_model_get_iter (<span class='macro'>GTK_TREE_MODEL (model)<span class='macro_popup'>((((GtkTreeModel*) (void *) ((model)))))</span></span>, &amp;iter, path))</td></tr>
+<tr class="codeline" data-linenumber="3389"><td class="num" id="LN3389">3389</td><td class="line"> <span class='keyword'>continue</span>;</td></tr>
+<tr class="codeline" data-linenumber="3390"><td class="num" id="LN3390">3390</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3391"><td class="num" id="LN3391">3391</td><td class="line"> <span class='comment'>/* Skip if the current path is actually a descendant of the</span></td></tr>
+<tr class="codeline" data-linenumber="3392"><td class="num" id="LN3392">3392</td><td class="line"> <span class='comment'>previous path */</span></td></tr>
+<tr class="codeline" data-linenumber="3393"><td class="num" id="LN3393">3393</td><td class="line"> <span class='keyword'>if</span> (prev != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> &amp;&amp; gtk_tree_path_is_descendant (path, prev))</td></tr>
+<tr class="codeline" data-linenumber="3394"><td class="num" id="LN3394">3394</td><td class="line"> <span class='keyword'>continue</span>;</td></tr>
+<tr class="codeline" data-linenumber="3395"><td class="num" id="LN3395">3395</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3396"><td class="num" id="LN3396">3396</td><td class="line"> prev = path;</td></tr>
+<tr class="codeline" data-linenumber="3397"><td class="num" id="LN3397">3397</td><td class="line"> node = (FileBrowserNode *)(iter.user_data);</td></tr>
+<tr class="codeline" data-linenumber="3398"><td class="num" id="LN3398">3398</td><td class="line"> files = g_list_prepend (files, <span class='macro'>g_object_ref (node-&gt;file)<span class='macro_popup'>((__typeof__ (node-&gt;file)) (g_object_ref) (node-&gt;file))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3399"><td class="num" id="LN3399">3399</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3400"><td class="num" id="LN3400">3400</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3401"><td class="num" id="LN3401">3401</td><td class="line"> data = <span class='macro'>g_new (AsyncData, 1)<span class='macro_popup'>(AsyncData *) (__extension__ ({ gsize __n = (gsize) (1); gsize<br> __s = sizeof (AsyncData); gpointer __p; if (__s == 1) __p = g_malloc<br> (__n); else if (__builtin_constant_p (__n) &amp;&amp; (__s ==<br> 0 || __n &lt;= (9223372036854775807L *2UL+1UL) / __s)) __p =<br> g_malloc (__n * __s); else __p = g_malloc_n (__n, __s); __p;<br> }))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3402"><td class="num" id="LN3402">3402</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3403"><td class="num" id="LN3403">3403</td><td class="line"> data-&gt;model = model;</td></tr>
+<tr class="codeline" data-linenumber="3404"><td class="num" id="LN3404">3404</td><td class="line"> data-&gt;cancellable = g_cancellable_new ();</td></tr>
+<tr class="codeline" data-linenumber="3405"><td class="num" id="LN3405">3405</td><td class="line"> data-&gt;files = files;</td></tr>
+<tr class="codeline" data-linenumber="3406"><td class="num" id="LN3406">3406</td><td class="line"> data-&gt;trash = trash;</td></tr>
+<tr class="codeline" data-linenumber="3407"><td class="num" id="LN3407">3407</td><td class="line"> data-&gt;iter = files;</td></tr>
+<tr class="codeline" data-linenumber="3408"><td class="num" id="LN3408">3408</td><td class="line"> data-&gt;removed = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3409"><td class="num" id="LN3409">3409</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3410"><td class="num" id="LN3410">3410</td><td class="line"> model-&gt;priv-&gt;async_handles =</td></tr>
+<tr class="codeline" data-linenumber="3411"><td class="num" id="LN3411">3411</td><td class="line"> g_slist_prepend (model-&gt;priv-&gt;async_handles, data);</td></tr>
+<tr class="codeline" data-linenumber="3412"><td class="num" id="LN3412">3412</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3413"><td class="num" id="LN3413">3413</td><td class="line"> delete_files (data);</td></tr>
+<tr class="codeline" data-linenumber="3414"><td class="num" id="LN3414">3414</td><td class="line"> g_list_free (rows);</td></tr>
+<tr class="codeline" data-linenumber="3415"><td class="num" id="LN3415">3415</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3416"><td class="num" id="LN3416">3416</td><td class="line"> <span class='keyword'>return</span> PLUMA_FILE_BROWSER_STORE_RESULT_OK;</td></tr>
+<tr class="codeline" data-linenumber="3417"><td class="num" id="LN3417">3417</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3418"><td class="num" id="LN3418">3418</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3419"><td class="num" id="LN3419">3419</td><td class="line">PlumaFileBrowserStoreResult</td></tr>
+<tr class="codeline" data-linenumber="3420"><td class="num" id="LN3420">3420</td><td class="line">pluma_file_browser_store_delete (PlumaFileBrowserStore * model,</td></tr>
+<tr class="codeline" data-linenumber="3421"><td class="num" id="LN3421">3421</td><td class="line"> GtkTreeIter * iter, gboolean trash)</td></tr>
+<tr class="codeline" data-linenumber="3422"><td class="num" id="LN3422">3422</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3423"><td class="num" id="LN3423">3423</td><td class="line"> FileBrowserNode *node;</td></tr>
+<tr class="codeline" data-linenumber="3424"><td class="num" id="LN3424">3424</td><td class="line"> GList *rows = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3425"><td class="num" id="LN3425">3425</td><td class="line"> PlumaFileBrowserStoreResult result;</td></tr>
+<tr class="codeline" data-linenumber="3426"><td class="num" id="LN3426">3426</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3427"><td class="num" id="LN3427">3427</td><td class="line"> <span class='macro'>g_return_val_if_fail (PLUMA_IS_FILE_BROWSER_STORE (model), PLUMA_FILE_BROWSER_STORE_RESULT_NO_CHANGE)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_173<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((model)); GType __t = ((pluma_file_browser_store_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_173 = 1; else _g_boolean_var_173 =<br> 0; _g_boolean_var_173; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "PLUMA_IS_FILE_BROWSER_STORE (model)"<br>); return (PLUMA_FILE_BROWSER_STORE_RESULT_NO_CHANGE); } } while<br> (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3428"><td class="num" id="LN3428">3428</td><td class="line"> <span class='macro'>g_return_val_if_fail (iter != NULL, PLUMA_FILE_BROWSER_STORE_RESULT_NO_CHANGE)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_174<br>; if (iter != ((void*)0)) _g_boolean_var_174 = 1; else _g_boolean_var_174<br> = 0; _g_boolean_var_174; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "iter != NULL"); return<br> (PLUMA_FILE_BROWSER_STORE_RESULT_NO_CHANGE); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3429"><td class="num" id="LN3429">3429</td><td class="line"> <span class='macro'>g_return_val_if_fail (iter-&gt;user_data != NULL, PLUMA_FILE_BROWSER_STORE_RESULT_NO_CHANGE)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_175<br>; if (iter-&gt;user_data != ((void*)0)) _g_boolean_var_175 = 1<br>; else _g_boolean_var_175 = 0; _g_boolean_var_175; }), 1))) {<br> } else { g_return_if_fail_warning (((gchar*) 0), ((const char<br>*) (__func__)), "iter-&gt;user_data != NULL"); return (PLUMA_FILE_BROWSER_STORE_RESULT_NO_CHANGE<br>); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3430"><td class="num" id="LN3430">3430</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3431"><td class="num" id="LN3431">3431</td><td class="line"> node = (FileBrowserNode *) (iter-&gt;user_data);</td></tr>
+<tr class="codeline" data-linenumber="3432"><td class="num" id="LN3432">3432</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3433"><td class="num" id="LN3433">3433</td><td class="line"> <span class='keyword'>if</span> (<span class='macro'>NODE_IS_DUMMY (node)<span class='macro_popup'>(((node)-&gt;flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_DUMMY<br>))</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="3434"><td class="num" id="LN3434">3434</td><td class="line"> <span class='keyword'>return</span> PLUMA_FILE_BROWSER_STORE_RESULT_NO_CHANGE;</td></tr>
+<tr class="codeline" data-linenumber="3435"><td class="num" id="LN3435">3435</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3436"><td class="num" id="LN3436">3436</td><td class="line"> rows = g_list_append(<span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, pluma_file_browser_store_get_path_real (model, node));</td></tr>
+<tr class="codeline" data-linenumber="3437"><td class="num" id="LN3437">3437</td><td class="line"> result = pluma_file_browser_store_delete_all (model, rows, trash);</td></tr>
+<tr class="codeline" data-linenumber="3438"><td class="num" id="LN3438">3438</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3439"><td class="num" id="LN3439">3439</td><td class="line"> g_list_free_full (rows, (GDestroyNotify) gtk_tree_path_free);</td></tr>
+<tr class="codeline" data-linenumber="3440"><td class="num" id="LN3440">3440</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3441"><td class="num" id="LN3441">3441</td><td class="line"> <span class='keyword'>return</span> result;</td></tr>
+<tr class="codeline" data-linenumber="3442"><td class="num" id="LN3442">3442</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3443"><td class="num" id="LN3443">3443</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3444"><td class="num" id="LN3444">3444</td><td class="line">gboolean</td></tr>
+<tr class="codeline" data-linenumber="3445"><td class="num" id="LN3445">3445</td><td class="line">pluma_file_browser_store_new_file (PlumaFileBrowserStore * model,</td></tr>
+<tr class="codeline" data-linenumber="3446"><td class="num" id="LN3446">3446</td><td class="line"> GtkTreeIter * parent,</td></tr>
+<tr class="codeline" data-linenumber="3447"><td class="num" id="LN3447">3447</td><td class="line"> GtkTreeIter * iter)</td></tr>
+<tr class="codeline" data-linenumber="3448"><td class="num" id="LN3448">3448</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3449"><td class="num" id="LN3449">3449</td><td class="line"> GFile * file;</td></tr>
+<tr class="codeline" data-linenumber="3450"><td class="num" id="LN3450">3450</td><td class="line"> GFileOutputStream * stream;</td></tr>
+<tr class="codeline" data-linenumber="3451"><td class="num" id="LN3451">3451</td><td class="line"> FileBrowserNodeDir *parent_node;</td></tr>
+<tr class="codeline" data-linenumber="3452"><td class="num" id="LN3452">3452</td><td class="line"> gboolean result = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3453"><td class="num" id="LN3453">3453</td><td class="line"> FileBrowserNode *node;</td></tr>
+<tr class="codeline" data-linenumber="3454"><td class="num" id="LN3454">3454</td><td class="line"> GError * error = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3455"><td class="num" id="LN3455">3455</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3456"><td class="num" id="LN3456">3456</td><td class="line"> <span class='macro'>g_return_val_if_fail (PLUMA_IS_FILE_BROWSER_STORE (model), FALSE)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_176<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((model)); GType __t = ((pluma_file_browser_store_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_176 = 1; else _g_boolean_var_176 =<br> 0; _g_boolean_var_176; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "PLUMA_IS_FILE_BROWSER_STORE (model)"<br>); return ((0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3457"><td class="num" id="LN3457">3457</td><td class="line"> <span class='macro'>g_return_val_if_fail (parent != NULL, FALSE)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_177<br>; if (parent != ((void*)0)) _g_boolean_var_177 = 1; else _g_boolean_var_177<br> = 0; _g_boolean_var_177; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "parent != NULL")<br>; return ((0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3458"><td class="num" id="LN3458">3458</td><td class="line"> <span class='macro'>g_return_val_if_fail (parent-&gt;user_data != NULL, FALSE)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_178<br>; if (parent-&gt;user_data != ((void*)0)) _g_boolean_var_178 =<br> 1; else _g_boolean_var_178 = 0; _g_boolean_var_178; }), 1)))<br> { } else { g_return_if_fail_warning (((gchar*) 0), ((const char<br>*) (__func__)), "parent-&gt;user_data != NULL"); return ((0))<br>; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3459"><td class="num" id="LN3459">3459</td><td class="line"> <span class='macro'>g_return_val_if_fail (NODE_IS_DIR<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_179<br>; if (((((FileBrowserNode *) (parent-&gt;user_data))-&gt;flags<br> &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_DIRECTORY))) _g_boolean_var_179<br> = 1; else _g_boolean_var_179 = 0; _g_boolean_var_179; }), 1)<br>)) { } else { g_return_if_fail_warning (((gchar*) 0), ((const<br> char*) (__func__)), "NODE_IS_DIR ((FileBrowserNode *) (parent-&gt;user_data))"<br>); return ((0)); } } while (0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="3460"><td class="num" id="LN3460">3460</td><td class="line"> <span class='macro'>((FileBrowserNode *) (parent-&gt;user_data)),<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_179<br>; if (((((FileBrowserNode *) (parent-&gt;user_data))-&gt;flags<br> &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_DIRECTORY))) _g_boolean_var_179<br> = 1; else _g_boolean_var_179 = 0; _g_boolean_var_179; }), 1)<br>)) { } else { g_return_if_fail_warning (((gchar*) 0), ((const<br> char*) (__func__)), "NODE_IS_DIR ((FileBrowserNode *) (parent-&gt;user_data))"<br>); return ((0)); } } while (0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="3461"><td class="num" id="LN3461">3461</td><td class="line"> <span class='macro'>FALSE)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_179<br>; if (((((FileBrowserNode *) (parent-&gt;user_data))-&gt;flags<br> &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_DIRECTORY))) _g_boolean_var_179<br> = 1; else _g_boolean_var_179 = 0; _g_boolean_var_179; }), 1)<br>)) { } else { g_return_if_fail_warning (((gchar*) 0), ((const<br> char*) (__func__)), "NODE_IS_DIR ((FileBrowserNode *) (parent-&gt;user_data))"<br>); return ((0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3462"><td class="num" id="LN3462">3462</td><td class="line"> <span class='macro'>g_return_val_if_fail (iter != NULL, FALSE)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_180<br>; if (iter != ((void*)0)) _g_boolean_var_180 = 1; else _g_boolean_var_180<br> = 0; _g_boolean_var_180; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "iter != NULL"); return<br> ((0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3463"><td class="num" id="LN3463">3463</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3464"><td class="num" id="LN3464">3464</td><td class="line"> parent_node = <span class='macro'>FILE_BROWSER_NODE_DIR (parent-&gt;user_data)<span class='macro_popup'>((FileBrowserNodeDir *)(parent-&gt;user_data))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3465"><td class="num" id="LN3465">3465</td><td class="line"> <span class='comment'>/* Translators: This is the default name of new files created by the file browser pane. */</span></td></tr>
+<tr class="codeline" data-linenumber="3466"><td class="num" id="LN3466">3466</td><td class="line"> file = unique_new_name (((FileBrowserNode *) parent_node)-&gt;file, <span class='macro'>_(<span class='string_literal'>"file"</span>)<span class='macro_popup'>((char *) g_dgettext ("pluma", "file"))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3467"><td class="num" id="LN3467">3467</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3468"><td class="num" id="LN3468">3468</td><td class="line"> stream = g_file_create (file, G_FILE_CREATE_NONE, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, &amp;error);</td></tr>
+<tr class="codeline" data-linenumber="3469"><td class="num" id="LN3469">3469</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3470"><td class="num" id="LN3470">3470</td><td class="line"> <span class='keyword'>if</span> (!stream)</td></tr>
+<tr class="codeline" data-linenumber="3471"><td class="num" id="LN3471">3471</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="3472"><td class="num" id="LN3472">3472</td><td class="line"> g_signal_emit (model, model_signals[ERROR], 0,</td></tr>
+<tr class="codeline" data-linenumber="3473"><td class="num" id="LN3473">3473</td><td class="line"> PLUMA_FILE_BROWSER_ERROR_NEW_FILE,</td></tr>
+<tr class="codeline" data-linenumber="3474"><td class="num" id="LN3474">3474</td><td class="line"> error-&gt;message);</td></tr>
+<tr class="codeline" data-linenumber="3475"><td class="num" id="LN3475">3475</td><td class="line"> g_error_free (error);</td></tr>
+<tr class="codeline" data-linenumber="3476"><td class="num" id="LN3476">3476</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="3477"><td class="num" id="LN3477">3477</td><td class="line"> g_object_unref (stream);</td></tr>
+<tr class="codeline" data-linenumber="3478"><td class="num" id="LN3478">3478</td><td class="line"> node = model_add_node_from_file (model,</td></tr>
+<tr class="codeline" data-linenumber="3479"><td class="num" id="LN3479">3479</td><td class="line"> (FileBrowserNode *)parent_node,</td></tr>
+<tr class="codeline" data-linenumber="3480"><td class="num" id="LN3480">3480</td><td class="line"> file,</td></tr>
+<tr class="codeline" data-linenumber="3481"><td class="num" id="LN3481">3481</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3482"><td class="num" id="LN3482">3482</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3483"><td class="num" id="LN3483">3483</td><td class="line"> <span class='keyword'>if</span> (model_node_visibility (model, node)) {</td></tr>
+<tr class="codeline" data-linenumber="3484"><td class="num" id="LN3484">3484</td><td class="line"> iter-&gt;user_data = node;</td></tr>
+<tr class="codeline" data-linenumber="3485"><td class="num" id="LN3485">3485</td><td class="line"> result = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3486"><td class="num" id="LN3486">3486</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="3487"><td class="num" id="LN3487">3487</td><td class="line"> g_signal_emit (model, model_signals[ERROR], 0,</td></tr>
+<tr class="codeline" data-linenumber="3488"><td class="num" id="LN3488">3488</td><td class="line"> PLUMA_FILE_BROWSER_ERROR_NEW_FILE,</td></tr>
+<tr class="codeline" data-linenumber="3489"><td class="num" id="LN3489">3489</td><td class="line"> <span class='macro'>_<span class='macro_popup'>((char *) g_dgettext ("pluma", "The new file is currently filtered out. You need to adjust your filter settings to make the file visible"<br>))</span></span></td></tr>
+<tr class="codeline" data-linenumber="3490"><td class="num" id="LN3490">3490</td><td class="line"> <span class='macro'>(<span class='string_literal'>"The new file is currently filtered out. You need to adjust your filter settings to make the file visible"</span>)<span class='macro_popup'>((char *) g_dgettext ("pluma", "The new file is currently filtered out. You need to adjust your filter settings to make the file visible"<br>))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3491"><td class="num" id="LN3491">3491</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3492"><td class="num" id="LN3492">3492</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3493"><td class="num" id="LN3493">3493</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3494"><td class="num" id="LN3494">3494</td><td class="line"> g_object_unref (file);</td></tr>
+<tr class="codeline" data-linenumber="3495"><td class="num" id="LN3495">3495</td><td class="line"> <span class='keyword'>return</span> result;</td></tr>
+<tr class="codeline" data-linenumber="3496"><td class="num" id="LN3496">3496</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3497"><td class="num" id="LN3497">3497</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3498"><td class="num" id="LN3498">3498</td><td class="line">gboolean</td></tr>
+<tr class="codeline" data-linenumber="3499"><td class="num" id="LN3499">3499</td><td class="line">pluma_file_browser_store_new_directory (PlumaFileBrowserStore * model,</td></tr>
+<tr class="codeline" data-linenumber="3500"><td class="num" id="LN3500">3500</td><td class="line"> GtkTreeIter * parent,</td></tr>
+<tr class="codeline" data-linenumber="3501"><td class="num" id="LN3501">3501</td><td class="line"> GtkTreeIter * iter)</td></tr>
+<tr class="codeline" data-linenumber="3502"><td class="num" id="LN3502">3502</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3503"><td class="num" id="LN3503">3503</td><td class="line"> GFile * file;</td></tr>
+<tr class="codeline" data-linenumber="3504"><td class="num" id="LN3504">3504</td><td class="line"> FileBrowserNodeDir *parent_node;</td></tr>
+<tr class="codeline" data-linenumber="3505"><td class="num" id="LN3505">3505</td><td class="line"> GError * error = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3506"><td class="num" id="LN3506">3506</td><td class="line"> FileBrowserNode *node;</td></tr>
+<tr class="codeline" data-linenumber="3507"><td class="num" id="LN3507">3507</td><td class="line"> gboolean result = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3508"><td class="num" id="LN3508">3508</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3509"><td class="num" id="LN3509">3509</td><td class="line"> <span class='macro'>g_return_val_if_fail (PLUMA_IS_FILE_BROWSER_STORE (model), FALSE)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_181<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((model)); GType __t = ((pluma_file_browser_store_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_181 = 1; else _g_boolean_var_181 =<br> 0; _g_boolean_var_181; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "PLUMA_IS_FILE_BROWSER_STORE (model)"<br>); return ((0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3510"><td class="num" id="LN3510">3510</td><td class="line"> <span class='macro'>g_return_val_if_fail (parent != NULL, FALSE)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_182<br>; if (parent != ((void*)0)) _g_boolean_var_182 = 1; else _g_boolean_var_182<br> = 0; _g_boolean_var_182; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "parent != NULL")<br>; return ((0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3511"><td class="num" id="LN3511">3511</td><td class="line"> <span class='macro'>g_return_val_if_fail (parent-&gt;user_data != NULL, FALSE)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_183<br>; if (parent-&gt;user_data != ((void*)0)) _g_boolean_var_183 =<br> 1; else _g_boolean_var_183 = 0; _g_boolean_var_183; }), 1)))<br> { } else { g_return_if_fail_warning (((gchar*) 0), ((const char<br>*) (__func__)), "parent-&gt;user_data != NULL"); return ((0))<br>; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3512"><td class="num" id="LN3512">3512</td><td class="line"> <span class='macro'>g_return_val_if_fail (NODE_IS_DIR<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_184<br>; if (((((FileBrowserNode *) (parent-&gt;user_data))-&gt;flags<br> &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_DIRECTORY))) _g_boolean_var_184<br> = 1; else _g_boolean_var_184 = 0; _g_boolean_var_184; }), 1)<br>)) { } else { g_return_if_fail_warning (((gchar*) 0), ((const<br> char*) (__func__)), "NODE_IS_DIR ((FileBrowserNode *) (parent-&gt;user_data))"<br>); return ((0)); } } while (0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="3513"><td class="num" id="LN3513">3513</td><td class="line"> <span class='macro'>((FileBrowserNode *) (parent-&gt;user_data)),<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_184<br>; if (((((FileBrowserNode *) (parent-&gt;user_data))-&gt;flags<br> &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_DIRECTORY))) _g_boolean_var_184<br> = 1; else _g_boolean_var_184 = 0; _g_boolean_var_184; }), 1)<br>)) { } else { g_return_if_fail_warning (((gchar*) 0), ((const<br> char*) (__func__)), "NODE_IS_DIR ((FileBrowserNode *) (parent-&gt;user_data))"<br>); return ((0)); } } while (0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="3514"><td class="num" id="LN3514">3514</td><td class="line"> <span class='macro'>FALSE)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_184<br>; if (((((FileBrowserNode *) (parent-&gt;user_data))-&gt;flags<br> &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_DIRECTORY))) _g_boolean_var_184<br> = 1; else _g_boolean_var_184 = 0; _g_boolean_var_184; }), 1)<br>)) { } else { g_return_if_fail_warning (((gchar*) 0), ((const<br> char*) (__func__)), "NODE_IS_DIR ((FileBrowserNode *) (parent-&gt;user_data))"<br>); return ((0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3515"><td class="num" id="LN3515">3515</td><td class="line"> <span class='macro'>g_return_val_if_fail (iter != NULL, FALSE)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_185<br>; if (iter != ((void*)0)) _g_boolean_var_185 = 1; else _g_boolean_var_185<br> = 0; _g_boolean_var_185; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "iter != NULL"); return<br> ((0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3516"><td class="num" id="LN3516">3516</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3517"><td class="num" id="LN3517">3517</td><td class="line"> parent_node = <span class='macro'>FILE_BROWSER_NODE_DIR (parent-&gt;user_data)<span class='macro_popup'>((FileBrowserNodeDir *)(parent-&gt;user_data))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3518"><td class="num" id="LN3518">3518</td><td class="line"> <span class='comment'>/* Translators: This is the default name of new directories created by the file browser pane. */</span></td></tr>
+<tr class="codeline" data-linenumber="3519"><td class="num" id="LN3519">3519</td><td class="line"> file = unique_new_name (((FileBrowserNode *) parent_node)-&gt;file, <span class='macro'>_(<span class='string_literal'>"directory"</span>)<span class='macro_popup'>((char *) g_dgettext ("pluma", "directory"))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3520"><td class="num" id="LN3520">3520</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3521"><td class="num" id="LN3521">3521</td><td class="line"> <span class='keyword'>if</span> (!g_file_make_directory (file, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, &amp;error)) {</td></tr>
+<tr class="codeline" data-linenumber="3522"><td class="num" id="LN3522">3522</td><td class="line"> g_signal_emit (model, model_signals[ERROR], 0,</td></tr>
+<tr class="codeline" data-linenumber="3523"><td class="num" id="LN3523">3523</td><td class="line"> PLUMA_FILE_BROWSER_ERROR_NEW_DIRECTORY,</td></tr>
+<tr class="codeline" data-linenumber="3524"><td class="num" id="LN3524">3524</td><td class="line"> error-&gt;message);</td></tr>
+<tr class="codeline" data-linenumber="3525"><td class="num" id="LN3525">3525</td><td class="line"> g_error_free (error);</td></tr>
+<tr class="codeline" data-linenumber="3526"><td class="num" id="LN3526">3526</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="3527"><td class="num" id="LN3527">3527</td><td class="line"> node = model_add_node_from_file (model,</td></tr>
+<tr class="codeline" data-linenumber="3528"><td class="num" id="LN3528">3528</td><td class="line"> (FileBrowserNode *)parent_node,</td></tr>
+<tr class="codeline" data-linenumber="3529"><td class="num" id="LN3529">3529</td><td class="line"> file,</td></tr>
+<tr class="codeline" data-linenumber="3530"><td class="num" id="LN3530">3530</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3531"><td class="num" id="LN3531">3531</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3532"><td class="num" id="LN3532">3532</td><td class="line"> <span class='keyword'>if</span> (model_node_visibility (model, node)) {</td></tr>
+<tr class="codeline" data-linenumber="3533"><td class="num" id="LN3533">3533</td><td class="line"> iter-&gt;user_data = node;</td></tr>
+<tr class="codeline" data-linenumber="3534"><td class="num" id="LN3534">3534</td><td class="line"> result = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3535"><td class="num" id="LN3535">3535</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="3536"><td class="num" id="LN3536">3536</td><td class="line"> g_signal_emit (model, model_signals[ERROR], 0,</td></tr>
+<tr class="codeline" data-linenumber="3537"><td class="num" id="LN3537">3537</td><td class="line"> PLUMA_FILE_BROWSER_ERROR_NEW_FILE,</td></tr>
+<tr class="codeline" data-linenumber="3538"><td class="num" id="LN3538">3538</td><td class="line"> <span class='macro'>_<span class='macro_popup'>((char *) g_dgettext ("pluma", "The new directory is currently filtered out. You need to adjust your filter settings to make the directory visible"<br>))</span></span></td></tr>
+<tr class="codeline" data-linenumber="3539"><td class="num" id="LN3539">3539</td><td class="line"> <span class='macro'>(<span class='string_literal'>"The new directory is currently filtered out. You need to adjust your filter settings to make the directory visible"</span>)<span class='macro_popup'>((char *) g_dgettext ("pluma", "The new directory is currently filtered out. You need to adjust your filter settings to make the directory visible"<br>))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3540"><td class="num" id="LN3540">3540</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3541"><td class="num" id="LN3541">3541</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3542"><td class="num" id="LN3542">3542</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3543"><td class="num" id="LN3543">3543</td><td class="line"> g_object_unref (file);</td></tr>
+<tr class="codeline" data-linenumber="3544"><td class="num" id="LN3544">3544</td><td class="line"> <span class='keyword'>return</span> result;</td></tr>
+<tr class="codeline" data-linenumber="3545"><td class="num" id="LN3545">3545</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3546"><td class="num" id="LN3546">3546</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3547"><td class="num" id="LN3547">3547</td><td class="line"><span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="3548"><td class="num" id="LN3548">3548</td><td class="line">_pluma_file_browser_store_register_type (GTypeModule *type_module)</td></tr>
+<tr class="codeline" data-linenumber="3549"><td class="num" id="LN3549">3549</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3550"><td class="num" id="LN3550">3550</td><td class="line"> pluma_file_browser_store_register_type (type_module);</td></tr>
+<tr class="codeline" data-linenumber="3551"><td class="num" id="LN3551">3551</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3552"><td class="num" id="LN3552">3552</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3553"><td class="num" id="LN3553">3553</td><td class="line"><span class='comment'>// ex:ts=8:noet:</span></td></tr>
+</table></body></html>
diff --git a/2023-05-28-030536-6612-1@f643dde74cbd_master/report-527848.html b/2023-05-28-030536-6612-1@f643dde74cbd_master/report-527848.html
new file mode 100644
index 00000000..2d34dfc8
--- /dev/null
+++ b/2023-05-28-030536-6612-1@f643dde74cbd_master/report-527848.html
@@ -0,0 +1,1327 @@
+<!doctype html>
+<html>
+<head>
+<title>plumatextregion.c</title>
+
+<style type="text/css">
+body { color:#000000; background-color:#ffffff }
+body { font-family:Helvetica, sans-serif; font-size:10pt }
+h1 { font-size:14pt }
+.FileName { margin-top: 5px; margin-bottom: 5px; display: inline; }
+.FileNav { margin-left: 5px; margin-right: 5px; display: inline; }
+.FileNav a { text-decoration:none; font-size: larger; }
+.divider { margin-top: 30px; margin-bottom: 30px; height: 15px; }
+.divider { background-color: gray; }
+.code { border-collapse:collapse; width:100%; }
+.code { font-family: "Monospace", monospace; font-size:10pt }
+.code { line-height: 1.2em }
+.comment { color: green; font-style: oblique }
+.keyword { color: blue }
+.string_literal { color: red }
+.directive { color: darkmagenta }
+
+/* Macros and variables could have pop-up notes hidden by default.
+ - Macro pop-up: expansion of the macro
+ - Variable pop-up: value (table) of the variable */
+.macro_popup, .variable_popup { display: none; }
+
+/* Pop-up appears on mouse-hover event. */
+.macro:hover .macro_popup, .variable:hover .variable_popup {
+ display: block;
+ padding: 2px;
+ -webkit-border-radius:5px;
+ -webkit-box-shadow:1px 1px 7px #000;
+ border-radius:5px;
+ box-shadow:1px 1px 7px #000;
+ position: absolute;
+ top: -1em;
+ left:10em;
+ z-index: 1
+}
+
+.macro_popup {
+ border: 2px solid red;
+ background-color:#FFF0F0;
+ font-weight: normal;
+}
+
+.variable_popup {
+ border: 2px solid blue;
+ background-color:#F0F0FF;
+ font-weight: bold;
+ font-family: Helvetica, sans-serif;
+ font-size: 9pt;
+}
+
+/* Pop-up notes needs a relative position as a base where they pops up. */
+.macro, .variable {
+ background-color: PaleGoldenRod;
+ position: relative;
+}
+.macro { color: DarkMagenta; }
+
+#tooltiphint {
+ position: fixed;
+ width: 50em;
+ margin-left: -25em;
+ left: 50%;
+ padding: 10px;
+ border: 1px solid #b0b0b0;
+ border-radius: 2px;
+ box-shadow: 1px 1px 7px black;
+ background-color: #c0c0c0;
+ z-index: 2;
+}
+
+.num { width:2.5em; padding-right:2ex; background-color:#eeeeee }
+.num { text-align:right; font-size:8pt }
+.num { color:#444444 }
+.line { padding-left: 1ex; border-left: 3px solid #ccc }
+.line { white-space: pre }
+.msg { -webkit-box-shadow:1px 1px 7px #000 }
+.msg { box-shadow:1px 1px 7px #000 }
+.msg { -webkit-border-radius:5px }
+.msg { border-radius:5px }
+.msg { font-family:Helvetica, sans-serif; font-size:8pt }
+.msg { float:left }
+.msg { position:relative }
+.msg { padding:0.25em 1ex 0.25em 1ex }
+.msg { margin-top:10px; margin-bottom:10px }
+.msg { font-weight:bold }
+.msg { max-width:60em; word-wrap: break-word; white-space: pre-wrap }
+.msgT { padding:0x; spacing:0x }
+.msgEvent { background-color:#fff8b4; color:#000000 }
+.msgControl { background-color:#bbbbbb; color:#000000 }
+.msgNote { background-color:#ddeeff; color:#000000 }
+.mrange { background-color:#dfddf3 }
+.mrange { border-bottom:1px solid #6F9DBE }
+.PathIndex { font-weight: bold; padding:0px 5px; margin-right:5px; }
+.PathIndex { -webkit-border-radius:8px }
+.PathIndex { border-radius:8px }
+.PathIndexEvent { background-color:#bfba87 }
+.PathIndexControl { background-color:#8c8c8c }
+.PathIndexPopUp { background-color: #879abc; }
+.PathNav a { text-decoration:none; font-size: larger }
+.CodeInsertionHint { font-weight: bold; background-color: #10dd10 }
+.CodeRemovalHint { background-color:#de1010 }
+.CodeRemovalHint { border-bottom:1px solid #6F9DBE }
+.msg.selected{ background-color:orange !important; }
+
+table.simpletable {
+ padding: 5px;
+ font-size:12pt;
+ margin:20px;
+ border-collapse: collapse; border-spacing: 0px;
+}
+td.rowname {
+ text-align: right;
+ vertical-align: top;
+ font-weight: bold;
+ color:#444444;
+ padding-right:2ex;
+}
+
+/* Hidden text. */
+input.spoilerhider + label {
+ cursor: pointer;
+ text-decoration: underline;
+ display: block;
+}
+input.spoilerhider {
+ display: none;
+}
+input.spoilerhider ~ .spoiler {
+ overflow: hidden;
+ margin: 10px auto 0;
+ height: 0;
+ opacity: 0;
+}
+input.spoilerhider:checked + label + .spoiler{
+ height: auto;
+ opacity: 1;
+}
+</style>
+</head>
+<body>
+<!-- BUGDESC Value stored to 'start_node' is never read -->
+
+<!-- BUGTYPE Dead assignment -->
+
+<!-- BUGCATEGORY Unused code -->
+
+<!-- BUGFILE /rootdir/pluma/plumatextregion.c -->
+
+<!-- FILENAME plumatextregion.c -->
+
+<!-- FUNCTIONNAME pluma_text_region_subtract -->
+
+<!-- ISSUEHASHCONTENTOFLINEINCONTEXT 5278481c54db7b7717b97ffb2efad3ce -->
+
+<!-- BUGLINE 332 -->
+
+<!-- BUGCOLUMN 4 -->
+
+<!-- BUGPATHLENGTH 1 -->
+
+<!-- BUGMETAEND -->
+<!-- REPORTHEADER -->
+<h3>Bug Summary</h3>
+<table class="simpletable">
+<tr><td class="rowname">File:</td><td>pluma/plumatextregion.c</td></tr>
+<tr><td class="rowname">Warning:</td><td><a href="#EndPath">line 332, column 4</a><br />Value stored to 'start_node' is never read</td></tr>
+
+</table>
+<!-- REPORTSUMMARYEXTRA -->
+<h3>Annotated Source Code</h3>
+<p>Press <a href="#" onclick="toggleHelp(); return false;">'?'</a>
+ to see keyboard shortcuts</p>
+<input type="checkbox" class="spoilerhider" id="showinvocation" />
+<label for="showinvocation" >Show analyzer invocation</label>
+<div class="spoiler">clang -cc1 -cc1 -triple x86_64-redhat-linux-gnu -analyze -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name plumatextregion.c -analyzer-checker=core -analyzer-checker=apiModeling -analyzer-checker=unix -analyzer-checker=deadcode -analyzer-checker=security.insecureAPI.UncheckedReturn -analyzer-checker=security.insecureAPI.getpw -analyzer-checker=security.insecureAPI.gets -analyzer-checker=security.insecureAPI.mktemp -analyzer-checker=security.insecureAPI.mkstemp -analyzer-checker=security.insecureAPI.vfork -analyzer-checker=nullability.NullPassedToNonnull -analyzer-checker=nullability.NullReturnedFromNonnull -analyzer-output plist -w -setup-static-analyzer -mrelocation-model pic -pic-level 2 -fhalf-no-semantic-interposition -mframe-pointer=none -fmath-errno -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=2 -target-cpu x86-64 -tune-cpu generic -debugger-tuning=gdb -fcoverage-compilation-dir=/rootdir/pluma -resource-dir /usr/lib64/clang/16 -D HAVE_CONFIG_H -I . -I .. -I .. -I . -I ./mate-submodules/libegg -I /usr/include/libxml2 -I /usr/include/glib-2.0 -I /usr/lib64/glib-2.0/include -I /usr/include/sysprof-4 -I /usr/include/libmount -I /usr/include/blkid -I /usr/include/gtk-3.0 -I /usr/include/pango-1.0 -I /usr/include/harfbuzz -I /usr/include/freetype2 -I /usr/include/libpng16 -I /usr/include/fribidi -I /usr/include/cairo -I /usr/include/pixman-1 -I /usr/include/gdk-pixbuf-2.0 -I /usr/include/gio-unix-2.0 -I /usr/include/cloudproviders -I /usr/include/atk-1.0 -I /usr/include/at-spi2-atk/2.0 -I /usr/include/at-spi-2.0 -I /usr/include/dbus-1.0 -I /usr/lib64/dbus-1.0/include -I /usr/include/gtksourceview-4 -I /usr/include/libpeas-1.0 -I /usr/include/gobject-introspection-1.0 -I /usr/include/gobject-introspection-1.0 -I /usr/include/glib-2.0 -I /usr/lib64/glib-2.0/include -I /usr/include/sysprof-4 -D DATADIR="/usr/local/share" -D PLUMA_DATADIR="/usr/local/share/pluma" -D PLUMA_LOCALEDIR="/usr/local/share/locale/" -D LIBDIR="/usr/local/lib" -D PLUMA_LIBDIR="/usr/local/lib/pluma" -D PIC -internal-isystem /usr/lib64/clang/16/include -internal-isystem /usr/local/include -internal-isystem /usr/bin/../lib/gcc/x86_64-redhat-linux/13/../../../../x86_64-redhat-linux/include -internal-externc-isystem /include -internal-externc-isystem /usr/include -O2 -Wno-unused-parameter -fdebug-compilation-dir=/rootdir/pluma -ferror-limit 19 -fgnuc-version=4.2.1 -vectorize-loops -vectorize-slp -analyzer-checker deadcode.DeadStores -analyzer-checker alpha.deadcode.UnreachableCode -analyzer-checker alpha.core.CastSize -analyzer-checker alpha.core.CastToStruct -analyzer-checker alpha.core.IdenticalExpr -analyzer-checker alpha.core.SizeofPtr -analyzer-checker alpha.security.ArrayBoundV2 -analyzer-checker alpha.security.MallocOverflow -analyzer-checker alpha.security.ReturnPtrRange -analyzer-checker alpha.unix.SimpleStream -analyzer-checker alpha.unix.cstring.BufferOverlap -analyzer-checker alpha.unix.cstring.NotNullTerminated -analyzer-checker alpha.unix.cstring.OutOfBounds -analyzer-checker alpha.core.FixedAddr -analyzer-checker security.insecureAPI.strcpy -analyzer-output=html -faddrsig -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o /rootdir/html-report/2023-05-28-030536-6612-1 -x c plumatextregion.c
+</div>
+<div id='tooltiphint' hidden="true">
+ <p>Keyboard shortcuts: </p>
+ <ul>
+ <li>Use 'j/k' keys for keyboard navigation</li>
+ <li>Use 'Shift+S' to show/hide relevant lines</li>
+ <li>Use '?' to toggle this window</li>
+ </ul>
+ <a href="#" onclick="toggleHelp(); return false;">Close</a>
+</div>
+<script type='text/javascript'>
+var relevant_lines = {"1": {"332": 1}};
+
+var filterCounterexample = function (hide) {
+ var tables = document.getElementsByClassName("code");
+ for (var t=0; t<tables.length; t++) {
+ var table = tables[t];
+ var file_id = table.getAttribute("data-fileid");
+ var lines_in_fid = relevant_lines[file_id];
+ if (!lines_in_fid) {
+ lines_in_fid = {};
+ }
+ var lines = table.getElementsByClassName("codeline");
+ for (var i=0; i<lines.length; i++) {
+ var el = lines[i];
+ var lineNo = el.getAttribute("data-linenumber");
+ if (!lines_in_fid[lineNo]) {
+ if (hide) {
+ el.setAttribute("hidden", "");
+ } else {
+ el.removeAttribute("hidden");
+ }
+ }
+ }
+ }
+}
+
+window.addEventListener("keydown", function (event) {
+ if (event.defaultPrevented) {
+ return;
+ }
+ // SHIFT + S
+ if (event.shiftKey && event.keyCode == 83) {
+ var checked = document.getElementsByName("showCounterexample")[0].checked;
+ filterCounterexample(!checked);
+ document.getElementsByName("showCounterexample")[0].click();
+ } else {
+ return;
+ }
+ event.preventDefault();
+}, true);
+
+document.addEventListener("DOMContentLoaded", function() {
+ document.querySelector('input[name="showCounterexample"]').onchange=
+ function (event) {
+ filterCounterexample(this.checked);
+ };
+});
+</script>
+
+<form>
+ <input type="checkbox" name="showCounterexample" id="showCounterexample" />
+ <label for="showCounterexample">
+ Show only relevant lines
+ </label>
+ <input type="checkbox" name="showArrows"
+ id="showArrows" style="margin-left: 10px" />
+ <label for="showArrows">
+ Show control flow arrows
+ </label>
+</form>
+
+<script type='text/javascript'>
+// Return range of numbers from a range [lower, upper).
+function range(lower, upper) {
+ var array = [];
+ for (var i = lower; i <= upper; ++i) {
+ array.push(i);
+ }
+ return array;
+}
+
+var getRelatedArrowIndices = function(pathId) {
+ // HTML numeration of events is a bit different than it is in the path.
+ // Everything is rotated one step to the right, so the last element
+ // (error diagnostic) has index 0.
+ if (pathId == 0) {
+ // arrowIndices has at least 2 elements
+ pathId = arrowIndices.length - 1;
+ }
+
+ return range(arrowIndices[pathId], arrowIndices[pathId - 1]);
+}
+
+var highlightArrowsForSelectedEvent = function() {
+ const selectedNum = findNum();
+ const arrowIndicesToHighlight = getRelatedArrowIndices(selectedNum);
+ arrowIndicesToHighlight.forEach((index) => {
+ var arrow = document.querySelector("#arrow" + index);
+ if(arrow) {
+ classListAdd(arrow, "selected")
+ }
+ });
+}
+
+var getAbsoluteBoundingRect = function(element) {
+ const relative = element.getBoundingClientRect();
+ return {
+ left: relative.left + window.pageXOffset,
+ right: relative.right + window.pageXOffset,
+ top: relative.top + window.pageYOffset,
+ bottom: relative.bottom + window.pageYOffset,
+ height: relative.height,
+ width: relative.width
+ };
+}
+
+var drawArrow = function(index) {
+ // This function is based on the great answer from SO:
+ // https://stackoverflow.com/a/39575674/11582326
+ var start = document.querySelector("#start" + index);
+ var end = document.querySelector("#end" + index);
+ var arrow = document.querySelector("#arrow" + index);
+
+ var startRect = getAbsoluteBoundingRect(start);
+ var endRect = getAbsoluteBoundingRect(end);
+
+ // It is an arrow from a token to itself, no need to visualize it.
+ if (startRect.top == endRect.top &&
+ startRect.left == endRect.left)
+ return;
+
+ // Each arrow is a very simple Bézier curve, with two nodes and
+ // two handles. So, we need to calculate four points in the window:
+ // * start node
+ var posStart = { x: 0, y: 0 };
+ // * end node
+ var posEnd = { x: 0, y: 0 };
+ // * handle for the start node
+ var startHandle = { x: 0, y: 0 };
+ // * handle for the end node
+ var endHandle = { x: 0, y: 0 };
+ // One can visualize it as follows:
+ //
+ // start handle
+ // /
+ // X"""_.-""""X
+ // .' \
+ // / start node
+ // |
+ // |
+ // | end node
+ // \ /
+ // `->X
+ // X-'
+ // \
+ // end handle
+ //
+ // NOTE: (0, 0) is the top left corner of the window.
+
+ // We have 3 similar, but still different scenarios to cover:
+ //
+ // 1. Two tokens on different lines.
+ // -xxx
+ // /
+ // \
+ // -> xxx
+ // In this situation, we draw arrow on the left curving to the left.
+ // 2. Two tokens on the same line, and the destination is on the right.
+ // ____
+ // / \
+ // / V
+ // xxx xxx
+ // In this situation, we draw arrow above curving upwards.
+ // 3. Two tokens on the same line, and the destination is on the left.
+ // xxx xxx
+ // ^ /
+ // \____/
+ // In this situation, we draw arrow below curving downwards.
+ const onDifferentLines = startRect.top <= endRect.top - 5 ||
+ startRect.top >= endRect.top + 5;
+ const leftToRight = startRect.left < endRect.left;
+
+ // NOTE: various magic constants are chosen empirically for
+ // better positioning and look
+ if (onDifferentLines) {
+ // Case #1
+ const topToBottom = startRect.top < endRect.top;
+ posStart.x = startRect.left - 1;
+ // We don't want to start it at the top left corner of the token,
+ // it doesn't feel like this is where the arrow comes from.
+ // For this reason, we start it in the middle of the left side
+ // of the token.
+ posStart.y = startRect.top + startRect.height / 2;
+
+ // End node has arrow head and we give it a bit more space.
+ posEnd.x = endRect.left - 4;
+ posEnd.y = endRect.top;
+
+ // Utility object with x and y offsets for handles.
+ var curvature = {
+ // We want bottom-to-top arrow to curve a bit more, so it doesn't
+ // overlap much with top-to-bottom curves (much more frequent).
+ x: topToBottom ? 15 : 25,
+ y: Math.min((posEnd.y - posStart.y) / 3, 10)
+ }
+
+ // When destination is on the different line, we can make a
+ // curvier arrow because we have space for it.
+ // So, instead of using
+ //
+ // startHandle.x = posStart.x - curvature.x
+ // endHandle.x = posEnd.x - curvature.x
+ //
+ // We use the leftmost of these two values for both handles.
+ startHandle.x = Math.min(posStart.x, posEnd.x) - curvature.x;
+ endHandle.x = startHandle.x;
+
+ // Curving downwards from the start node...
+ startHandle.y = posStart.y + curvature.y;
+ // ... and upwards from the end node.
+ endHandle.y = posEnd.y - curvature.y;
+
+ } else if (leftToRight) {
+ // Case #2
+ // Starting from the top right corner...
+ posStart.x = startRect.right - 1;
+ posStart.y = startRect.top;
+
+ // ...and ending at the top left corner of the end token.
+ posEnd.x = endRect.left + 1;
+ posEnd.y = endRect.top - 1;
+
+ // Utility object with x and y offsets for handles.
+ var curvature = {
+ x: Math.min((posEnd.x - posStart.x) / 3, 15),
+ y: 5
+ }
+
+ // Curving to the right...
+ startHandle.x = posStart.x + curvature.x;
+ // ... and upwards from the start node.
+ startHandle.y = posStart.y - curvature.y;
+
+ // And to the left...
+ endHandle.x = posEnd.x - curvature.x;
+ // ... and upwards from the end node.
+ endHandle.y = posEnd.y - curvature.y;
+
+ } else {
+ // Case #3
+ // Starting from the bottom right corner...
+ posStart.x = startRect.right;
+ posStart.y = startRect.bottom;
+
+ // ...and ending also at the bottom right corner, but of the end token.
+ posEnd.x = endRect.right - 1;
+ posEnd.y = endRect.bottom + 1;
+
+ // Utility object with x and y offsets for handles.
+ var curvature = {
+ x: Math.min((posStart.x - posEnd.x) / 3, 15),
+ y: 5
+ }
+
+ // Curving to the left...
+ startHandle.x = posStart.x - curvature.x;
+ // ... and downwards from the start node.
+ startHandle.y = posStart.y + curvature.y;
+
+ // And to the right...
+ endHandle.x = posEnd.x + curvature.x;
+ // ... and downwards from the end node.
+ endHandle.y = posEnd.y + curvature.y;
+ }
+
+ // Put it all together into a path.
+ // More information on the format:
+ // https://developer.mozilla.org/en-US/docs/Web/SVG/Tutorial/Paths
+ var pathStr = "M" + posStart.x + "," + posStart.y + " " +
+ "C" + startHandle.x + "," + startHandle.y + " " +
+ endHandle.x + "," + endHandle.y + " " +
+ posEnd.x + "," + posEnd.y;
+
+ arrow.setAttribute("d", pathStr);
+};
+
+var drawArrows = function() {
+ const numOfArrows = document.querySelectorAll("path[id^=arrow]").length;
+ for (var i = 0; i < numOfArrows; ++i) {
+ drawArrow(i);
+ }
+}
+
+var toggleArrows = function(event) {
+ const arrows = document.querySelector("#arrows");
+ if (event.target.checked) {
+ arrows.setAttribute("visibility", "visible");
+ } else {
+ arrows.setAttribute("visibility", "hidden");
+ }
+}
+
+window.addEventListener("resize", drawArrows);
+document.addEventListener("DOMContentLoaded", function() {
+ // Whenever we show invocation, locations change, i.e. we
+ // need to redraw arrows.
+ document
+ .querySelector('input[id="showinvocation"]')
+ .addEventListener("click", drawArrows);
+ // Hiding irrelevant lines also should cause arrow rerender.
+ document
+ .querySelector('input[name="showCounterexample"]')
+ .addEventListener("change", drawArrows);
+ document
+ .querySelector('input[name="showArrows"]')
+ .addEventListener("change", toggleArrows);
+ drawArrows();
+ // Default highlighting for the last event.
+ highlightArrowsForSelectedEvent();
+});
+</script>
+
+<script type='text/javascript'>
+var digitMatcher = new RegExp("[0-9]+");
+
+var querySelectorAllArray = function(selector) {
+ return Array.prototype.slice.call(
+ document.querySelectorAll(selector));
+}
+
+document.addEventListener("DOMContentLoaded", function() {
+ querySelectorAllArray(".PathNav > a").forEach(
+ function(currentValue, currentIndex) {
+ var hrefValue = currentValue.getAttribute("href");
+ currentValue.onclick = function() {
+ scrollTo(document.querySelector(hrefValue));
+ return false;
+ };
+ });
+});
+
+var findNum = function() {
+ var s = document.querySelector(".msg.selected");
+ if (!s || s.id == "EndPath") {
+ return 0;
+ }
+ var out = parseInt(digitMatcher.exec(s.id)[0]);
+ return out;
+};
+
+var classListAdd = function(el, theClass) {
+ if(!el.className.baseVal)
+ el.className += " " + theClass;
+ else
+ el.className.baseVal += " " + theClass;
+};
+
+var classListRemove = function(el, theClass) {
+ var className = (!el.className.baseVal) ?
+ el.className : el.className.baseVal;
+ className = className.replace(" " + theClass, "");
+ if(!el.className.baseVal)
+ el.className = className;
+ else
+ el.className.baseVal = className;
+};
+
+var scrollTo = function(el) {
+ querySelectorAllArray(".selected").forEach(function(s) {
+ classListRemove(s, "selected");
+ });
+ classListAdd(el, "selected");
+ window.scrollBy(0, el.getBoundingClientRect().top -
+ (window.innerHeight / 2));
+ highlightArrowsForSelectedEvent();
+};
+
+var move = function(num, up, numItems) {
+ if (num == 1 && up || num == numItems - 1 && !up) {
+ return 0;
+ } else if (num == 0 && up) {
+ return numItems - 1;
+ } else if (num == 0 && !up) {
+ return 1 % numItems;
+ }
+ return up ? num - 1 : num + 1;
+}
+
+var numToId = function(num) {
+ if (num == 0) {
+ return document.getElementById("EndPath")
+ }
+ return document.getElementById("Path" + num);
+};
+
+var navigateTo = function(up) {
+ var numItems = document.querySelectorAll(
+ ".line > .msgEvent, .line > .msgControl").length;
+ var currentSelected = findNum();
+ var newSelected = move(currentSelected, up, numItems);
+ var newEl = numToId(newSelected, numItems);
+
+ // Scroll element into center.
+ scrollTo(newEl);
+};
+
+window.addEventListener("keydown", function (event) {
+ if (event.defaultPrevented) {
+ return;
+ }
+ // key 'j'
+ if (event.keyCode == 74) {
+ navigateTo(/*up=*/false);
+ // key 'k'
+ } else if (event.keyCode == 75) {
+ navigateTo(/*up=*/true);
+ } else {
+ return;
+ }
+ event.preventDefault();
+}, true);
+</script>
+
+<script type='text/javascript'>
+
+var toggleHelp = function() {
+ var hint = document.querySelector("#tooltiphint");
+ var attributeName = "hidden";
+ if (hint.hasAttribute(attributeName)) {
+ hint.removeAttribute(attributeName);
+ } else {
+ hint.setAttribute("hidden", "true");
+ }
+};
+window.addEventListener("keydown", function (event) {
+ if (event.defaultPrevented) {
+ return;
+ }
+ if (event.key == "?") {
+ toggleHelp();
+ } else {
+ return;
+ }
+ event.preventDefault();
+});
+</script>
+
+<style type="text/css">
+ svg {
+ position:absolute;
+ top:0;
+ left:0;
+ height:100%;
+ width:100%;
+ pointer-events: none;
+ overflow: visible
+ }
+ .arrow {
+ stroke-opacity: 0.2;
+ stroke-width: 1;
+ marker-end: url(#arrowhead);
+ }
+
+ .arrow.selected {
+ stroke-opacity: 0.6;
+ stroke-width: 2;
+ marker-end: url(#arrowheadSelected);
+ }
+
+ .arrowhead {
+ orient: auto;
+ stroke: none;
+ opacity: 0.6;
+ fill: blue;
+ }
+</style>
+<svg xmlns="http://www.w3.org/2000/svg">
+ <defs>
+ <marker id="arrowheadSelected" class="arrowhead" opacity="0.6"
+ viewBox="0 0 10 10" refX="3" refY="5"
+ markerWidth="4" markerHeight="4">
+ <path d="M 0 0 L 10 5 L 0 10 z" />
+ </marker>
+ <marker id="arrowhead" class="arrowhead" opacity="0.2"
+ viewBox="0 0 10 10" refX="3" refY="5"
+ markerWidth="4" markerHeight="4">
+ <path d="M 0 0 L 10 5 L 0 10 z" />
+ </marker>
+ </defs>
+ <g id="arrows" fill="none" stroke="blue" visibility="hidden">
+
+ </g>
+</svg>
+<script type='text/javascript'>
+const arrowIndices = [ 0,0 ]
+</script>
+<table class="code" data-fileid="1">
+<tr class="codeline" data-linenumber="1"><td class="num" id="LN1">1</td><td class="line"><span class='comment'>/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*-</span></td></tr>
+<tr class="codeline" data-linenumber="2"><td class="num" id="LN2">2</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="3"><td class="num" id="LN3">3</td><td class="line"> <span class='comment'>* plumatextregion.h - GtkTextMark based region utility functions</span></td></tr>
+<tr class="codeline" data-linenumber="4"><td class="num" id="LN4">4</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="5"><td class="num" id="LN5">5</td><td class="line"> <span class='comment'>* This file is part of the GtkSourceView widget</span></td></tr>
+<tr class="codeline" data-linenumber="6"><td class="num" id="LN6">6</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="7"><td class="num" id="LN7">7</td><td class="line"> <span class='comment'>* Copyright (C) 2002 Gustavo Giráldez &lt;[email protected]&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="8"><td class="num" id="LN8">8</td><td class="line"> <span class='comment'>* Copyright (C) 2012-2021 MATE Developers</span></td></tr>
+<tr class="codeline" data-linenumber="9"><td class="num" id="LN9">9</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="10"><td class="num" id="LN10">10</td><td class="line"> <span class='comment'>* This program is free software; you can redistribute it and/or modify</span></td></tr>
+<tr class="codeline" data-linenumber="11"><td class="num" id="LN11">11</td><td class="line"> <span class='comment'>* it under the terms of the GNU General Public License as published by</span></td></tr>
+<tr class="codeline" data-linenumber="12"><td class="num" id="LN12">12</td><td class="line"> <span class='comment'>* the Free Software Foundation; either version 2 of the License, or</span></td></tr>
+<tr class="codeline" data-linenumber="13"><td class="num" id="LN13">13</td><td class="line"> <span class='comment'>* (at your option) any later version.</span></td></tr>
+<tr class="codeline" data-linenumber="14"><td class="num" id="LN14">14</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="15"><td class="num" id="LN15">15</td><td class="line"> <span class='comment'>* This program is distributed in the hope that it will be useful,</span></td></tr>
+<tr class="codeline" data-linenumber="16"><td class="num" id="LN16">16</td><td class="line"> <span class='comment'>* but WITHOUT ANY WARRANTY; without even the implied warranty of</span></td></tr>
+<tr class="codeline" data-linenumber="17"><td class="num" id="LN17">17</td><td class="line"> <span class='comment'>* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></td></tr>
+<tr class="codeline" data-linenumber="18"><td class="num" id="LN18">18</td><td class="line"> <span class='comment'>* GNU General Public License for more details.</span></td></tr>
+<tr class="codeline" data-linenumber="19"><td class="num" id="LN19">19</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="20"><td class="num" id="LN20">20</td><td class="line"> <span class='comment'>* You should have received a copy of the GNU General Public License</span></td></tr>
+<tr class="codeline" data-linenumber="21"><td class="num" id="LN21">21</td><td class="line"> <span class='comment'>* along with this program; if not, write to the Free Software</span></td></tr>
+<tr class="codeline" data-linenumber="22"><td class="num" id="LN22">22</td><td class="line"> <span class='comment'>* Foundation, Inc., 51 Franklin St, Fifth Floor,</span></td></tr>
+<tr class="codeline" data-linenumber="23"><td class="num" id="LN23">23</td><td class="line"> <span class='comment'>* Boston, MA 02110-1301, USA.</span></td></tr>
+<tr class="codeline" data-linenumber="24"><td class="num" id="LN24">24</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="25"><td class="num" id="LN25">25</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="26"><td class="num" id="LN26">26</td><td class="line"><span class='directive'>#ifdef <span class='macro'>HAVE_CONFIG_H<span class='macro_popup'>1</span></span></span></td></tr>
+<tr class="codeline" data-linenumber="27"><td class="num" id="LN27">27</td><td class="line"><span class='directive'>#include &lt;config.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="28"><td class="num" id="LN28">28</td><td class="line"><span class='directive'>#endif</span></td></tr>
+<tr class="codeline" data-linenumber="29"><td class="num" id="LN29">29</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="30"><td class="num" id="LN30">30</td><td class="line"><span class='directive'>#include &lt;glib.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="31"><td class="num" id="LN31">31</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="32"><td class="num" id="LN32">32</td><td class="line"><span class='directive'>#include "plumatextregion.h"</span></td></tr>
+<tr class="codeline" data-linenumber="33"><td class="num" id="LN33">33</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="34"><td class="num" id="LN34">34</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="35"><td class="num" id="LN35">35</td><td class="line"><span class='directive'>#undef ENABLE_DEBUG</span></td></tr>
+<tr class="codeline" data-linenumber="36"><td class="num" id="LN36">36</td><td class="line"><span class='comment'>/*</span></td></tr>
+<tr class="codeline" data-linenumber="37"><td class="num" id="LN37">37</td><td class="line"><span class='comment'>#define ENABLE_DEBUG</span></td></tr>
+<tr class="codeline" data-linenumber="38"><td class="num" id="LN38">38</td><td class="line"><span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="39"><td class="num" id="LN39">39</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="40"><td class="num" id="LN40">40</td><td class="line"><span class='directive'>#ifdef ENABLE_DEBUG</span></td></tr>
+<tr class="codeline" data-linenumber="41"><td class="num" id="LN41">41</td><td class="line"><span class='directive'>#define DEBUG(x) (x)</span></td></tr>
+<tr class="codeline" data-linenumber="42"><td class="num" id="LN42">42</td><td class="line"><span class='directive'>#else</span></td></tr>
+<tr class="codeline" data-linenumber="43"><td class="num" id="LN43">43</td><td class="line"><span class='directive'>#define DEBUG(x)</span></td></tr>
+<tr class="codeline" data-linenumber="44"><td class="num" id="LN44">44</td><td class="line"><span class='directive'>#endif</span></td></tr>
+<tr class="codeline" data-linenumber="45"><td class="num" id="LN45">45</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="46"><td class="num" id="LN46">46</td><td class="line"><span class='keyword'>typedef</span> <span class='keyword'>struct</span> _Subregion {</td></tr>
+<tr class="codeline" data-linenumber="47"><td class="num" id="LN47">47</td><td class="line"> GtkTextMark *start;</td></tr>
+<tr class="codeline" data-linenumber="48"><td class="num" id="LN48">48</td><td class="line"> GtkTextMark *end;</td></tr>
+<tr class="codeline" data-linenumber="49"><td class="num" id="LN49">49</td><td class="line">} Subregion;</td></tr>
+<tr class="codeline" data-linenumber="50"><td class="num" id="LN50">50</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="51"><td class="num" id="LN51">51</td><td class="line"><span class='keyword'>struct</span> _PlumaTextRegion {</td></tr>
+<tr class="codeline" data-linenumber="52"><td class="num" id="LN52">52</td><td class="line"> GtkTextBuffer *buffer;</td></tr>
+<tr class="codeline" data-linenumber="53"><td class="num" id="LN53">53</td><td class="line"> GList *subregions;</td></tr>
+<tr class="codeline" data-linenumber="54"><td class="num" id="LN54">54</td><td class="line"> guint32 time_stamp;</td></tr>
+<tr class="codeline" data-linenumber="55"><td class="num" id="LN55">55</td><td class="line">};</td></tr>
+<tr class="codeline" data-linenumber="56"><td class="num" id="LN56">56</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="57"><td class="num" id="LN57">57</td><td class="line"><span class='keyword'>typedef</span> <span class='keyword'>struct</span> _PlumaTextRegionIteratorReal PlumaTextRegionIteratorReal;</td></tr>
+<tr class="codeline" data-linenumber="58"><td class="num" id="LN58">58</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="59"><td class="num" id="LN59">59</td><td class="line"><span class='keyword'>struct</span> _PlumaTextRegionIteratorReal {</td></tr>
+<tr class="codeline" data-linenumber="60"><td class="num" id="LN60">60</td><td class="line"> PlumaTextRegion *region;</td></tr>
+<tr class="codeline" data-linenumber="61"><td class="num" id="LN61">61</td><td class="line"> guint32 region_time_stamp;</td></tr>
+<tr class="codeline" data-linenumber="62"><td class="num" id="LN62">62</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="63"><td class="num" id="LN63">63</td><td class="line"> GList *subregions;</td></tr>
+<tr class="codeline" data-linenumber="64"><td class="num" id="LN64">64</td><td class="line">};</td></tr>
+<tr class="codeline" data-linenumber="65"><td class="num" id="LN65">65</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="66"><td class="num" id="LN66">66</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="67"><td class="num" id="LN67">67</td><td class="line"><span class='comment'>/* ----------------------------------------------------------------------</span></td></tr>
+<tr class="codeline" data-linenumber="68"><td class="num" id="LN68">68</td><td class="line"> <span class='comment'>Private interface</span></td></tr>
+<tr class="codeline" data-linenumber="69"><td class="num" id="LN69">69</td><td class="line"> <span class='comment'>---------------------------------------------------------------------- */</span></td></tr>
+<tr class="codeline" data-linenumber="70"><td class="num" id="LN70">70</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="71"><td class="num" id="LN71">71</td><td class="line"><span class='comment'>/* Find and return a subregion node which contains the given text</span></td></tr>
+<tr class="codeline" data-linenumber="72"><td class="num" id="LN72">72</td><td class="line"> <span class='comment'>iter. If left_side is TRUE, return the subregion which contains</span></td></tr>
+<tr class="codeline" data-linenumber="73"><td class="num" id="LN73">73</td><td class="line"> <span class='comment'>the text iter or which is the leftmost; else return the rightmost</span></td></tr>
+<tr class="codeline" data-linenumber="74"><td class="num" id="LN74">74</td><td class="line"> <span class='comment'>subregion */</span></td></tr>
+<tr class="codeline" data-linenumber="75"><td class="num" id="LN75">75</td><td class="line"><span class='keyword'>static</span> GList *</td></tr>
+<tr class="codeline" data-linenumber="76"><td class="num" id="LN76">76</td><td class="line">find_nearest_subregion (PlumaTextRegion *region,</td></tr>
+<tr class="codeline" data-linenumber="77"><td class="num" id="LN77">77</td><td class="line"> <span class='keyword'>const</span> GtkTextIter *iter,</td></tr>
+<tr class="codeline" data-linenumber="78"><td class="num" id="LN78">78</td><td class="line"> GList *begin,</td></tr>
+<tr class="codeline" data-linenumber="79"><td class="num" id="LN79">79</td><td class="line"> gboolean leftmost,</td></tr>
+<tr class="codeline" data-linenumber="80"><td class="num" id="LN80">80</td><td class="line"> gboolean include_edges)</td></tr>
+<tr class="codeline" data-linenumber="81"><td class="num" id="LN81">81</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="82"><td class="num" id="LN82">82</td><td class="line"> GList *l, *retval;</td></tr>
+<tr class="codeline" data-linenumber="83"><td class="num" id="LN83">83</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="84"><td class="num" id="LN84">84</td><td class="line"> <span class='macro'>g_return_val_if_fail (region != NULL &amp;&amp; iter != NULL, NULL)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_52<br>; if (region != ((void*)0) &amp;&amp; iter != ((void*)0)) _g_boolean_var_52<br> = 1; else _g_boolean_var_52 = 0; _g_boolean_var_52; }), 1)))<br> { } else { g_return_if_fail_warning (((gchar*) 0), ((const char<br>*) (__func__)), "region != NULL &amp;&amp; iter != NULL"); return<br> (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="85"><td class="num" id="LN85">85</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="86"><td class="num" id="LN86">86</td><td class="line"> <span class='keyword'>if</span> (!begin)</td></tr>
+<tr class="codeline" data-linenumber="87"><td class="num" id="LN87">87</td><td class="line"> begin = region-&gt;subregions;</td></tr>
+<tr class="codeline" data-linenumber="88"><td class="num" id="LN88">88</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="89"><td class="num" id="LN89">89</td><td class="line"> <span class='keyword'>if</span> (begin)</td></tr>
+<tr class="codeline" data-linenumber="90"><td class="num" id="LN90">90</td><td class="line"> retval = begin-&gt;prev;</td></tr>
+<tr class="codeline" data-linenumber="91"><td class="num" id="LN91">91</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="92"><td class="num" id="LN92">92</td><td class="line"> retval = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="93"><td class="num" id="LN93">93</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="94"><td class="num" id="LN94">94</td><td class="line"> <span class='keyword'>for</span> (l = begin; l; l = l-&gt;next) {</td></tr>
+<tr class="codeline" data-linenumber="95"><td class="num" id="LN95">95</td><td class="line"> GtkTextIter sr_iter;</td></tr>
+<tr class="codeline" data-linenumber="96"><td class="num" id="LN96">96</td><td class="line"> Subregion *sr = l-&gt;data;</td></tr>
+<tr class="codeline" data-linenumber="97"><td class="num" id="LN97">97</td><td class="line"> gint cmp;</td></tr>
+<tr class="codeline" data-linenumber="98"><td class="num" id="LN98">98</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="99"><td class="num" id="LN99">99</td><td class="line"> <span class='keyword'>if</span> (!leftmost) {</td></tr>
+<tr class="codeline" data-linenumber="100"><td class="num" id="LN100">100</td><td class="line"> gtk_text_buffer_get_iter_at_mark (region-&gt;buffer, &amp;sr_iter, sr-&gt;end);</td></tr>
+<tr class="codeline" data-linenumber="101"><td class="num" id="LN101">101</td><td class="line"> cmp = gtk_text_iter_compare (iter, &amp;sr_iter);</td></tr>
+<tr class="codeline" data-linenumber="102"><td class="num" id="LN102">102</td><td class="line"> <span class='keyword'>if</span> (cmp &lt; 0 || (cmp == 0 &amp;&amp; include_edges)) {</td></tr>
+<tr class="codeline" data-linenumber="103"><td class="num" id="LN103">103</td><td class="line"> retval = l;</td></tr>
+<tr class="codeline" data-linenumber="104"><td class="num" id="LN104">104</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="105"><td class="num" id="LN105">105</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="106"><td class="num" id="LN106">106</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="107"><td class="num" id="LN107">107</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="108"><td class="num" id="LN108">108</td><td class="line"> gtk_text_buffer_get_iter_at_mark (region-&gt;buffer, &amp;sr_iter, sr-&gt;start);</td></tr>
+<tr class="codeline" data-linenumber="109"><td class="num" id="LN109">109</td><td class="line"> cmp = gtk_text_iter_compare (iter, &amp;sr_iter);</td></tr>
+<tr class="codeline" data-linenumber="110"><td class="num" id="LN110">110</td><td class="line"> <span class='keyword'>if</span> (cmp &gt; 0 || (cmp == 0 &amp;&amp; include_edges))</td></tr>
+<tr class="codeline" data-linenumber="111"><td class="num" id="LN111">111</td><td class="line"> retval = l;</td></tr>
+<tr class="codeline" data-linenumber="112"><td class="num" id="LN112">112</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="113"><td class="num" id="LN113">113</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="114"><td class="num" id="LN114">114</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="115"><td class="num" id="LN115">115</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="116"><td class="num" id="LN116">116</td><td class="line"> <span class='keyword'>return</span> retval;</td></tr>
+<tr class="codeline" data-linenumber="117"><td class="num" id="LN117">117</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="118"><td class="num" id="LN118">118</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="119"><td class="num" id="LN119">119</td><td class="line"><span class='comment'>/* ----------------------------------------------------------------------</span></td></tr>
+<tr class="codeline" data-linenumber="120"><td class="num" id="LN120">120</td><td class="line"> <span class='comment'>Public interface</span></td></tr>
+<tr class="codeline" data-linenumber="121"><td class="num" id="LN121">121</td><td class="line"> <span class='comment'>---------------------------------------------------------------------- */</span></td></tr>
+<tr class="codeline" data-linenumber="122"><td class="num" id="LN122">122</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="123"><td class="num" id="LN123">123</td><td class="line">PlumaTextRegion *</td></tr>
+<tr class="codeline" data-linenumber="124"><td class="num" id="LN124">124</td><td class="line">pluma_text_region_new (GtkTextBuffer *buffer)</td></tr>
+<tr class="codeline" data-linenumber="125"><td class="num" id="LN125">125</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="126"><td class="num" id="LN126">126</td><td class="line"> PlumaTextRegion *region;</td></tr>
+<tr class="codeline" data-linenumber="127"><td class="num" id="LN127">127</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="128"><td class="num" id="LN128">128</td><td class="line"> <span class='macro'>g_return_val_if_fail (buffer != NULL, NULL)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_53<br>; if (buffer != ((void*)0)) _g_boolean_var_53 = 1; else _g_boolean_var_53<br> = 0; _g_boolean_var_53; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "buffer != NULL")<br>; return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="129"><td class="num" id="LN129">129</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="130"><td class="num" id="LN130">130</td><td class="line"> region = <span class='macro'>g_new (PlumaTextRegion, 1)<span class='macro_popup'>(PlumaTextRegion *) (__extension__ ({ gsize __n = (gsize) (1)<br>; gsize __s = sizeof (PlumaTextRegion); gpointer __p; if (__s<br> == 1) __p = g_malloc (__n); else if (__builtin_constant_p (__n<br>) &amp;&amp; (__s == 0 || __n &lt;= (9223372036854775807L *2UL<br>+1UL) / __s)) __p = g_malloc (__n * __s); else __p = g_malloc_n<br> (__n, __s); __p; }))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="131"><td class="num" id="LN131">131</td><td class="line"> region-&gt;buffer = buffer;</td></tr>
+<tr class="codeline" data-linenumber="132"><td class="num" id="LN132">132</td><td class="line"> region-&gt;subregions = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="133"><td class="num" id="LN133">133</td><td class="line"> region-&gt;time_stamp = 0;</td></tr>
+<tr class="codeline" data-linenumber="134"><td class="num" id="LN134">134</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="135"><td class="num" id="LN135">135</td><td class="line"> <span class='keyword'>return</span> region;</td></tr>
+<tr class="codeline" data-linenumber="136"><td class="num" id="LN136">136</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="137"><td class="num" id="LN137">137</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="138"><td class="num" id="LN138">138</td><td class="line"><span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="139"><td class="num" id="LN139">139</td><td class="line">pluma_text_region_destroy (PlumaTextRegion *region, gboolean delete_marks)</td></tr>
+<tr class="codeline" data-linenumber="140"><td class="num" id="LN140">140</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="141"><td class="num" id="LN141">141</td><td class="line"> <span class='macro'>g_return_if_fail (region != NULL)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_54<br>; if (region != ((void*)0)) _g_boolean_var_54 = 1; else _g_boolean_var_54<br> = 0; _g_boolean_var_54; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "region != NULL")<br>; return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="142"><td class="num" id="LN142">142</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="143"><td class="num" id="LN143">143</td><td class="line"> <span class='keyword'>while</span> (region-&gt;subregions) {</td></tr>
+<tr class="codeline" data-linenumber="144"><td class="num" id="LN144">144</td><td class="line"> Subregion *sr = region-&gt;subregions-&gt;data;</td></tr>
+<tr class="codeline" data-linenumber="145"><td class="num" id="LN145">145</td><td class="line"> <span class='keyword'>if</span> (delete_marks) {</td></tr>
+<tr class="codeline" data-linenumber="146"><td class="num" id="LN146">146</td><td class="line"> gtk_text_buffer_delete_mark (region-&gt;buffer, sr-&gt;start);</td></tr>
+<tr class="codeline" data-linenumber="147"><td class="num" id="LN147">147</td><td class="line"> gtk_text_buffer_delete_mark (region-&gt;buffer, sr-&gt;end);</td></tr>
+<tr class="codeline" data-linenumber="148"><td class="num" id="LN148">148</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="149"><td class="num" id="LN149">149</td><td class="line"> g_free (sr);</td></tr>
+<tr class="codeline" data-linenumber="150"><td class="num" id="LN150">150</td><td class="line"> region-&gt;subregions = g_list_delete_link (region-&gt;subregions,</td></tr>
+<tr class="codeline" data-linenumber="151"><td class="num" id="LN151">151</td><td class="line"> region-&gt;subregions);</td></tr>
+<tr class="codeline" data-linenumber="152"><td class="num" id="LN152">152</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="153"><td class="num" id="LN153">153</td><td class="line"> region-&gt;buffer = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="154"><td class="num" id="LN154">154</td><td class="line"> region-&gt;time_stamp = 0;</td></tr>
+<tr class="codeline" data-linenumber="155"><td class="num" id="LN155">155</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="156"><td class="num" id="LN156">156</td><td class="line"> g_free (region);</td></tr>
+<tr class="codeline" data-linenumber="157"><td class="num" id="LN157">157</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="158"><td class="num" id="LN158">158</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="159"><td class="num" id="LN159">159</td><td class="line">GtkTextBuffer *</td></tr>
+<tr class="codeline" data-linenumber="160"><td class="num" id="LN160">160</td><td class="line">pluma_text_region_get_buffer (PlumaTextRegion *region)</td></tr>
+<tr class="codeline" data-linenumber="161"><td class="num" id="LN161">161</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="162"><td class="num" id="LN162">162</td><td class="line"> <span class='macro'>g_return_val_if_fail (region != NULL, NULL)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_55<br>; if (region != ((void*)0)) _g_boolean_var_55 = 1; else _g_boolean_var_55<br> = 0; _g_boolean_var_55; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "region != NULL")<br>; return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="163"><td class="num" id="LN163">163</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="164"><td class="num" id="LN164">164</td><td class="line"> <span class='keyword'>return</span> region-&gt;buffer;</td></tr>
+<tr class="codeline" data-linenumber="165"><td class="num" id="LN165">165</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="166"><td class="num" id="LN166">166</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="167"><td class="num" id="LN167">167</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="168"><td class="num" id="LN168">168</td><td class="line">pluma_text_region_clear_zero_length_subregions (PlumaTextRegion *region)</td></tr>
+<tr class="codeline" data-linenumber="169"><td class="num" id="LN169">169</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="170"><td class="num" id="LN170">170</td><td class="line"> GtkTextIter start, end;</td></tr>
+<tr class="codeline" data-linenumber="171"><td class="num" id="LN171">171</td><td class="line"> GList *node;</td></tr>
+<tr class="codeline" data-linenumber="172"><td class="num" id="LN172">172</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="173"><td class="num" id="LN173">173</td><td class="line"> <span class='macro'>g_return_if_fail (region != NULL)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_56<br>; if (region != ((void*)0)) _g_boolean_var_56 = 1; else _g_boolean_var_56<br> = 0; _g_boolean_var_56; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "region != NULL")<br>; return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="174"><td class="num" id="LN174">174</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="175"><td class="num" id="LN175">175</td><td class="line"> <span class='keyword'>for</span> (node = region-&gt;subregions; node; ) {</td></tr>
+<tr class="codeline" data-linenumber="176"><td class="num" id="LN176">176</td><td class="line"> Subregion *sr = node-&gt;data;</td></tr>
+<tr class="codeline" data-linenumber="177"><td class="num" id="LN177">177</td><td class="line"> gtk_text_buffer_get_iter_at_mark (region-&gt;buffer, &amp;start, sr-&gt;start);</td></tr>
+<tr class="codeline" data-linenumber="178"><td class="num" id="LN178">178</td><td class="line"> gtk_text_buffer_get_iter_at_mark (region-&gt;buffer, &amp;end, sr-&gt;end);</td></tr>
+<tr class="codeline" data-linenumber="179"><td class="num" id="LN179">179</td><td class="line"> <span class='keyword'>if</span> (gtk_text_iter_equal (&amp;start, &amp;end)) {</td></tr>
+<tr class="codeline" data-linenumber="180"><td class="num" id="LN180">180</td><td class="line"> gtk_text_buffer_delete_mark (region-&gt;buffer, sr-&gt;start);</td></tr>
+<tr class="codeline" data-linenumber="181"><td class="num" id="LN181">181</td><td class="line"> gtk_text_buffer_delete_mark (region-&gt;buffer, sr-&gt;end);</td></tr>
+<tr class="codeline" data-linenumber="182"><td class="num" id="LN182">182</td><td class="line"> g_free (sr);</td></tr>
+<tr class="codeline" data-linenumber="183"><td class="num" id="LN183">183</td><td class="line"> <span class='keyword'>if</span> (node == region-&gt;subregions)</td></tr>
+<tr class="codeline" data-linenumber="184"><td class="num" id="LN184">184</td><td class="line"> region-&gt;subregions = node = g_list_delete_link (node, node);</td></tr>
+<tr class="codeline" data-linenumber="185"><td class="num" id="LN185">185</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="186"><td class="num" id="LN186">186</td><td class="line"> node = g_list_delete_link (node, node);</td></tr>
+<tr class="codeline" data-linenumber="187"><td class="num" id="LN187">187</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="188"><td class="num" id="LN188">188</td><td class="line"> ++region-&gt;time_stamp;</td></tr>
+<tr class="codeline" data-linenumber="189"><td class="num" id="LN189">189</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="190"><td class="num" id="LN190">190</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="191"><td class="num" id="LN191">191</td><td class="line"> node = node-&gt;next;</td></tr>
+<tr class="codeline" data-linenumber="192"><td class="num" id="LN192">192</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="193"><td class="num" id="LN193">193</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="194"><td class="num" id="LN194">194</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="195"><td class="num" id="LN195">195</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="196"><td class="num" id="LN196">196</td><td class="line"><span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="197"><td class="num" id="LN197">197</td><td class="line">pluma_text_region_add (PlumaTextRegion *region,</td></tr>
+<tr class="codeline" data-linenumber="198"><td class="num" id="LN198">198</td><td class="line"> <span class='keyword'>const</span> GtkTextIter *_start,</td></tr>
+<tr class="codeline" data-linenumber="199"><td class="num" id="LN199">199</td><td class="line"> <span class='keyword'>const</span> GtkTextIter *_end)</td></tr>
+<tr class="codeline" data-linenumber="200"><td class="num" id="LN200">200</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="201"><td class="num" id="LN201">201</td><td class="line"> GList *start_node, *end_node;</td></tr>
+<tr class="codeline" data-linenumber="202"><td class="num" id="LN202">202</td><td class="line"> GtkTextIter start, end;</td></tr>
+<tr class="codeline" data-linenumber="203"><td class="num" id="LN203">203</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="204"><td class="num" id="LN204">204</td><td class="line"> <span class='macro'>g_return_if_fail (region != NULL &amp;&amp; _start != NULL &amp;&amp; _end != NULL)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_57<br>; if (region != ((void*)0) &amp;&amp; _start != ((void*)0) &amp;&amp;<br> _end != ((void*)0)) _g_boolean_var_57 = 1; else _g_boolean_var_57<br> = 0; _g_boolean_var_57; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "region != NULL &amp;&amp; _start != NULL &amp;&amp; _end != NULL"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="205"><td class="num" id="LN205">205</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="206"><td class="num" id="LN206">206</td><td class="line"> start = *_start;</td></tr>
+<tr class="codeline" data-linenumber="207"><td class="num" id="LN207">207</td><td class="line"> end = *_end;</td></tr>
+<tr class="codeline" data-linenumber="208"><td class="num" id="LN208">208</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="209"><td class="num" id="LN209">209</td><td class="line"> DEBUG (g_print (<span class='string_literal'>"---\n"</span>));</td></tr>
+<tr class="codeline" data-linenumber="210"><td class="num" id="LN210">210</td><td class="line"> DEBUG (pluma_text_region_debug_print (region));</td></tr>
+<tr class="codeline" data-linenumber="211"><td class="num" id="LN211">211</td><td class="line"> DEBUG (g_message (<span class='string_literal'>"region_add (%d, %d)"</span>,</td></tr>
+<tr class="codeline" data-linenumber="212"><td class="num" id="LN212">212</td><td class="line"> gtk_text_iter_get_offset (&amp;start),</td></tr>
+<tr class="codeline" data-linenumber="213"><td class="num" id="LN213">213</td><td class="line"> gtk_text_iter_get_offset (&amp;end)));</td></tr>
+<tr class="codeline" data-linenumber="214"><td class="num" id="LN214">214</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="215"><td class="num" id="LN215">215</td><td class="line"> gtk_text_iter_order (&amp;start, &amp;end);</td></tr>
+<tr class="codeline" data-linenumber="216"><td class="num" id="LN216">216</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="217"><td class="num" id="LN217">217</td><td class="line"> <span class='comment'>/* don't add zero-length regions */</span></td></tr>
+<tr class="codeline" data-linenumber="218"><td class="num" id="LN218">218</td><td class="line"> <span class='keyword'>if</span> (gtk_text_iter_equal (&amp;start, &amp;end))</td></tr>
+<tr class="codeline" data-linenumber="219"><td class="num" id="LN219">219</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="220"><td class="num" id="LN220">220</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="221"><td class="num" id="LN221">221</td><td class="line"> <span class='comment'>/* find bounding subregions */</span></td></tr>
+<tr class="codeline" data-linenumber="222"><td class="num" id="LN222">222</td><td class="line"> start_node = find_nearest_subregion (region, &amp;start, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>, <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="223"><td class="num" id="LN223">223</td><td class="line"> end_node = find_nearest_subregion (region, &amp;end, start_node, <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>, <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="224"><td class="num" id="LN224">224</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="225"><td class="num" id="LN225">225</td><td class="line"> <span class='keyword'>if</span> (start_node == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> || end_node == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> || end_node == start_node-&gt;prev) {</td></tr>
+<tr class="codeline" data-linenumber="226"><td class="num" id="LN226">226</td><td class="line"> <span class='comment'>/* create the new subregion */</span></td></tr>
+<tr class="codeline" data-linenumber="227"><td class="num" id="LN227">227</td><td class="line"> Subregion *sr = <span class='macro'>g_new0 (Subregion, 1)<span class='macro_popup'>(Subregion *) (__extension__ ({ gsize __n = (gsize) (1); gsize<br> __s = sizeof (Subregion); gpointer __p; if (__s == 1) __p = g_malloc0<br> (__n); else if (__builtin_constant_p (__n) &amp;&amp; (__s ==<br> 0 || __n &lt;= (9223372036854775807L *2UL+1UL) / __s)) __p =<br> g_malloc0 (__n * __s); else __p = g_malloc0_n (__n, __s); __p<br>; }))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="228"><td class="num" id="LN228">228</td><td class="line"> sr-&gt;start = gtk_text_buffer_create_mark (region-&gt;buffer, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, &amp;start, <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="229"><td class="num" id="LN229">229</td><td class="line"> sr-&gt;end = gtk_text_buffer_create_mark (region-&gt;buffer, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, &amp;end, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="230"><td class="num" id="LN230">230</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="231"><td class="num" id="LN231">231</td><td class="line"> <span class='keyword'>if</span> (start_node == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="232"><td class="num" id="LN232">232</td><td class="line"> <span class='comment'>/* append the new region */</span></td></tr>
+<tr class="codeline" data-linenumber="233"><td class="num" id="LN233">233</td><td class="line"> region-&gt;subregions = g_list_append (region-&gt;subregions, sr);</td></tr>
+<tr class="codeline" data-linenumber="234"><td class="num" id="LN234">234</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="235"><td class="num" id="LN235">235</td><td class="line"> } <span class='keyword'>else</span> <span class='keyword'>if</span> (end_node == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="236"><td class="num" id="LN236">236</td><td class="line"> <span class='comment'>/* prepend the new region */</span></td></tr>
+<tr class="codeline" data-linenumber="237"><td class="num" id="LN237">237</td><td class="line"> region-&gt;subregions = g_list_prepend (region-&gt;subregions, sr);</td></tr>
+<tr class="codeline" data-linenumber="238"><td class="num" id="LN238">238</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="239"><td class="num" id="LN239">239</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="240"><td class="num" id="LN240">240</td><td class="line"> <span class='comment'>/* we are in the middle of two subregions */</span></td></tr>
+<tr class="codeline" data-linenumber="241"><td class="num" id="LN241">241</td><td class="line"> region-&gt;subregions = g_list_insert_before (region-&gt;subregions,</td></tr>
+<tr class="codeline" data-linenumber="242"><td class="num" id="LN242">242</td><td class="line"> start_node, sr);</td></tr>
+<tr class="codeline" data-linenumber="243"><td class="num" id="LN243">243</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="244"><td class="num" id="LN244">244</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="245"><td class="num" id="LN245">245</td><td class="line"> <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="246"><td class="num" id="LN246">246</td><td class="line"> GtkTextIter iter;</td></tr>
+<tr class="codeline" data-linenumber="247"><td class="num" id="LN247">247</td><td class="line"> Subregion *sr = start_node-&gt;data;</td></tr>
+<tr class="codeline" data-linenumber="248"><td class="num" id="LN248">248</td><td class="line"> <span class='keyword'>if</span> (start_node != end_node) {</td></tr>
+<tr class="codeline" data-linenumber="249"><td class="num" id="LN249">249</td><td class="line"> <span class='comment'>/* we need to merge some subregions */</span></td></tr>
+<tr class="codeline" data-linenumber="250"><td class="num" id="LN250">250</td><td class="line"> GList *l = start_node-&gt;next;</td></tr>
+<tr class="codeline" data-linenumber="251"><td class="num" id="LN251">251</td><td class="line"> Subregion *q;</td></tr>
+<tr class="codeline" data-linenumber="252"><td class="num" id="LN252">252</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="253"><td class="num" id="LN253">253</td><td class="line"> gtk_text_buffer_delete_mark (region-&gt;buffer, sr-&gt;end);</td></tr>
+<tr class="codeline" data-linenumber="254"><td class="num" id="LN254">254</td><td class="line"> <span class='keyword'>while</span> (l != end_node) {</td></tr>
+<tr class="codeline" data-linenumber="255"><td class="num" id="LN255">255</td><td class="line"> q = l-&gt;data;</td></tr>
+<tr class="codeline" data-linenumber="256"><td class="num" id="LN256">256</td><td class="line"> gtk_text_buffer_delete_mark (region-&gt;buffer, q-&gt;start);</td></tr>
+<tr class="codeline" data-linenumber="257"><td class="num" id="LN257">257</td><td class="line"> gtk_text_buffer_delete_mark (region-&gt;buffer, q-&gt;end);</td></tr>
+<tr class="codeline" data-linenumber="258"><td class="num" id="LN258">258</td><td class="line"> g_free (q);</td></tr>
+<tr class="codeline" data-linenumber="259"><td class="num" id="LN259">259</td><td class="line"> l = g_list_delete_link (l, l);</td></tr>
+<tr class="codeline" data-linenumber="260"><td class="num" id="LN260">260</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="261"><td class="num" id="LN261">261</td><td class="line"> q = l-&gt;data;</td></tr>
+<tr class="codeline" data-linenumber="262"><td class="num" id="LN262">262</td><td class="line"> gtk_text_buffer_delete_mark (region-&gt;buffer, q-&gt;start);</td></tr>
+<tr class="codeline" data-linenumber="263"><td class="num" id="LN263">263</td><td class="line"> sr-&gt;end = q-&gt;end;</td></tr>
+<tr class="codeline" data-linenumber="264"><td class="num" id="LN264">264</td><td class="line"> g_free (q);</td></tr>
+<tr class="codeline" data-linenumber="265"><td class="num" id="LN265">265</td><td class="line"> l = g_list_delete_link (l, l);</td></tr>
+<tr class="codeline" data-linenumber="266"><td class="num" id="LN266">266</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="267"><td class="num" id="LN267">267</td><td class="line"> <span class='comment'>/* now move marks if that action expands the region */</span></td></tr>
+<tr class="codeline" data-linenumber="268"><td class="num" id="LN268">268</td><td class="line"> gtk_text_buffer_get_iter_at_mark (region-&gt;buffer, &amp;iter, sr-&gt;start);</td></tr>
+<tr class="codeline" data-linenumber="269"><td class="num" id="LN269">269</td><td class="line"> <span class='keyword'>if</span> (gtk_text_iter_compare (&amp;iter, &amp;start) &gt; 0)</td></tr>
+<tr class="codeline" data-linenumber="270"><td class="num" id="LN270">270</td><td class="line"> gtk_text_buffer_move_mark (region-&gt;buffer, sr-&gt;start, &amp;start);</td></tr>
+<tr class="codeline" data-linenumber="271"><td class="num" id="LN271">271</td><td class="line"> gtk_text_buffer_get_iter_at_mark (region-&gt;buffer, &amp;iter, sr-&gt;end);</td></tr>
+<tr class="codeline" data-linenumber="272"><td class="num" id="LN272">272</td><td class="line"> <span class='keyword'>if</span> (gtk_text_iter_compare (&amp;iter, &amp;end) &lt; 0)</td></tr>
+<tr class="codeline" data-linenumber="273"><td class="num" id="LN273">273</td><td class="line"> gtk_text_buffer_move_mark (region-&gt;buffer, sr-&gt;end, &amp;end);</td></tr>
+<tr class="codeline" data-linenumber="274"><td class="num" id="LN274">274</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="275"><td class="num" id="LN275">275</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="276"><td class="num" id="LN276">276</td><td class="line"> ++region-&gt;time_stamp;</td></tr>
+<tr class="codeline" data-linenumber="277"><td class="num" id="LN277">277</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="278"><td class="num" id="LN278">278</td><td class="line"> DEBUG (pluma_text_region_debug_print (region));</td></tr>
+<tr class="codeline" data-linenumber="279"><td class="num" id="LN279">279</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="280"><td class="num" id="LN280">280</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="281"><td class="num" id="LN281">281</td><td class="line"><span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="282"><td class="num" id="LN282">282</td><td class="line">pluma_text_region_subtract (PlumaTextRegion *region,</td></tr>
+<tr class="codeline" data-linenumber="283"><td class="num" id="LN283">283</td><td class="line"> <span class='keyword'>const</span> GtkTextIter *_start,</td></tr>
+<tr class="codeline" data-linenumber="284"><td class="num" id="LN284">284</td><td class="line"> <span class='keyword'>const</span> GtkTextIter *_end)</td></tr>
+<tr class="codeline" data-linenumber="285"><td class="num" id="LN285">285</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="286"><td class="num" id="LN286">286</td><td class="line"> GList *start_node, *end_node, *node;</td></tr>
+<tr class="codeline" data-linenumber="287"><td class="num" id="LN287">287</td><td class="line"> GtkTextIter sr_start_iter, sr_end_iter;</td></tr>
+<tr class="codeline" data-linenumber="288"><td class="num" id="LN288">288</td><td class="line"> gboolean done;</td></tr>
+<tr class="codeline" data-linenumber="289"><td class="num" id="LN289">289</td><td class="line"> gboolean start_is_outside, end_is_outside;</td></tr>
+<tr class="codeline" data-linenumber="290"><td class="num" id="LN290">290</td><td class="line"> Subregion *sr;</td></tr>
+<tr class="codeline" data-linenumber="291"><td class="num" id="LN291">291</td><td class="line"> GtkTextIter start, end;</td></tr>
+<tr class="codeline" data-linenumber="292"><td class="num" id="LN292">292</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="293"><td class="num" id="LN293">293</td><td class="line"> <span class='macro'>g_return_if_fail (region != NULL &amp;&amp; _start != NULL &amp;&amp; _end != NULL)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_58<br>; if (region != ((void*)0) &amp;&amp; _start != ((void*)0) &amp;&amp;<br> _end != ((void*)0)) _g_boolean_var_58 = 1; else _g_boolean_var_58<br> = 0; _g_boolean_var_58; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "region != NULL &amp;&amp; _start != NULL &amp;&amp; _end != NULL"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="294"><td class="num" id="LN294">294</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="295"><td class="num" id="LN295">295</td><td class="line"> start = *_start;</td></tr>
+<tr class="codeline" data-linenumber="296"><td class="num" id="LN296">296</td><td class="line"> end = *_end;</td></tr>
+<tr class="codeline" data-linenumber="297"><td class="num" id="LN297">297</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="298"><td class="num" id="LN298">298</td><td class="line"> DEBUG (g_print (<span class='string_literal'>"---\n"</span>));</td></tr>
+<tr class="codeline" data-linenumber="299"><td class="num" id="LN299">299</td><td class="line"> DEBUG (pluma_text_region_debug_print (region));</td></tr>
+<tr class="codeline" data-linenumber="300"><td class="num" id="LN300">300</td><td class="line"> DEBUG (g_message (<span class='string_literal'>"region_substract (%d, %d)"</span>,</td></tr>
+<tr class="codeline" data-linenumber="301"><td class="num" id="LN301">301</td><td class="line"> gtk_text_iter_get_offset (&amp;start),</td></tr>
+<tr class="codeline" data-linenumber="302"><td class="num" id="LN302">302</td><td class="line"> gtk_text_iter_get_offset (&amp;end)));</td></tr>
+<tr class="codeline" data-linenumber="303"><td class="num" id="LN303">303</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="304"><td class="num" id="LN304">304</td><td class="line"> gtk_text_iter_order (&amp;start, &amp;end);</td></tr>
+<tr class="codeline" data-linenumber="305"><td class="num" id="LN305">305</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="306"><td class="num" id="LN306">306</td><td class="line"> <span class='comment'>/* find bounding subregions */</span></td></tr>
+<tr class="codeline" data-linenumber="307"><td class="num" id="LN307">307</td><td class="line"> start_node = find_nearest_subregion (region, &amp;start, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="308"><td class="num" id="LN308">308</td><td class="line"> end_node = find_nearest_subregion (region, &amp;end, start_node, <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="309"><td class="num" id="LN309">309</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="310"><td class="num" id="LN310">310</td><td class="line"> <span class='comment'>/* easy case first */</span></td></tr>
+<tr class="codeline" data-linenumber="311"><td class="num" id="LN311">311</td><td class="line"> <span class='keyword'>if</span> (start_node == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> || end_node == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> || end_node == start_node-&gt;prev)</td></tr>
+<tr class="codeline" data-linenumber="312"><td class="num" id="LN312">312</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="313"><td class="num" id="LN313">313</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="314"><td class="num" id="LN314">314</td><td class="line"> <span class='comment'>/* deal with the start point */</span></td></tr>
+<tr class="codeline" data-linenumber="315"><td class="num" id="LN315">315</td><td class="line"> start_is_outside = end_is_outside = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="316"><td class="num" id="LN316">316</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="317"><td class="num" id="LN317">317</td><td class="line"> sr = start_node-&gt;data;</td></tr>
+<tr class="codeline" data-linenumber="318"><td class="num" id="LN318">318</td><td class="line"> gtk_text_buffer_get_iter_at_mark (region-&gt;buffer, &amp;sr_start_iter, sr-&gt;start);</td></tr>
+<tr class="codeline" data-linenumber="319"><td class="num" id="LN319">319</td><td class="line"> gtk_text_buffer_get_iter_at_mark (region-&gt;buffer, &amp;sr_end_iter, sr-&gt;end);</td></tr>
+<tr class="codeline" data-linenumber="320"><td class="num" id="LN320">320</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="321"><td class="num" id="LN321">321</td><td class="line"> <span class='keyword'>if</span> (gtk_text_iter_in_range (&amp;start, &amp;sr_start_iter, &amp;sr_end_iter) &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="322"><td class="num" id="LN322">322</td><td class="line"> !gtk_text_iter_equal (&amp;start, &amp;sr_start_iter)) {</td></tr>
+<tr class="codeline" data-linenumber="323"><td class="num" id="LN323">323</td><td class="line"> <span class='comment'>/* the starting point is inside the first subregion */</span></td></tr>
+<tr class="codeline" data-linenumber="324"><td class="num" id="LN324">324</td><td class="line"> <span class='keyword'>if</span> (gtk_text_iter_in_range (&amp;end, &amp;sr_start_iter, &amp;sr_end_iter) &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="325"><td class="num" id="LN325">325</td><td class="line"> !gtk_text_iter_equal (&amp;end, &amp;sr_end_iter)) {</td></tr>
+<tr class="codeline" data-linenumber="326"><td class="num" id="LN326">326</td><td class="line"> <span class='comment'>/* the ending point is also inside the first</span></td></tr>
+<tr class="codeline" data-linenumber="327"><td class="num" id="LN327">327</td><td class="line"> <span class='comment'>subregion: we need to split */</span></td></tr>
+<tr class="codeline" data-linenumber="328"><td class="num" id="LN328">328</td><td class="line"> Subregion *new_sr = <span class='macro'>g_new0 (Subregion, 1)<span class='macro_popup'>(Subregion *) (__extension__ ({ gsize __n = (gsize) (1); gsize<br> __s = sizeof (Subregion); gpointer __p; if (__s == 1) __p = g_malloc0<br> (__n); else if (__builtin_constant_p (__n) &amp;&amp; (__s ==<br> 0 || __n &lt;= (9223372036854775807L *2UL+1UL) / __s)) __p =<br> g_malloc0 (__n * __s); else __p = g_malloc0_n (__n, __s); __p<br>; }))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="329"><td class="num" id="LN329">329</td><td class="line"> new_sr-&gt;end = sr-&gt;end;</td></tr>
+<tr class="codeline" data-linenumber="330"><td class="num" id="LN330">330</td><td class="line"> new_sr-&gt;start = gtk_text_buffer_create_mark (region-&gt;buffer,</td></tr>
+<tr class="codeline" data-linenumber="331"><td class="num" id="LN331">331</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, &amp;end, <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="332"><td class="num" id="LN332">332</td><td class="line"> start_node = <span class="mrange">g_list_insert_before (start_node, start_node-&gt;next, new_sr)</span>;</td></tr>
+<tr><td class="num"></td><td class="line"><div id="EndPath" class="msg msgEvent" style="margin-left:25ex">Value stored to 'start_node' is never read</div></td></tr>
+<tr class="codeline" data-linenumber="333"><td class="num" id="LN333">333</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="334"><td class="num" id="LN334">334</td><td class="line"> sr-&gt;end = gtk_text_buffer_create_mark (region-&gt;buffer,</td></tr>
+<tr class="codeline" data-linenumber="335"><td class="num" id="LN335">335</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, &amp;start, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="336"><td class="num" id="LN336">336</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="337"><td class="num" id="LN337">337</td><td class="line"> <span class='comment'>/* no further processing needed */</span></td></tr>
+<tr class="codeline" data-linenumber="338"><td class="num" id="LN338">338</td><td class="line"> DEBUG (g_message (<span class='string_literal'>"subregion splitted"</span>));</td></tr>
+<tr class="codeline" data-linenumber="339"><td class="num" id="LN339">339</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="340"><td class="num" id="LN340">340</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="341"><td class="num" id="LN341">341</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="342"><td class="num" id="LN342">342</td><td class="line"> <span class='comment'>/* the ending point is outside, so just move</span></td></tr>
+<tr class="codeline" data-linenumber="343"><td class="num" id="LN343">343</td><td class="line"> <span class='comment'>the end of the subregion to the starting point */</span></td></tr>
+<tr class="codeline" data-linenumber="344"><td class="num" id="LN344">344</td><td class="line"> gtk_text_buffer_move_mark (region-&gt;buffer, sr-&gt;end, &amp;start);</td></tr>
+<tr class="codeline" data-linenumber="345"><td class="num" id="LN345">345</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="346"><td class="num" id="LN346">346</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="347"><td class="num" id="LN347">347</td><td class="line"> <span class='comment'>/* the starting point is outside (and so to the left)</span></td></tr>
+<tr class="codeline" data-linenumber="348"><td class="num" id="LN348">348</td><td class="line"> <span class='comment'>of the first subregion */</span></td></tr>
+<tr class="codeline" data-linenumber="349"><td class="num" id="LN349">349</td><td class="line"> DEBUG (g_message (<span class='string_literal'>"start is outside"</span>));</td></tr>
+<tr class="codeline" data-linenumber="350"><td class="num" id="LN350">350</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="351"><td class="num" id="LN351">351</td><td class="line"> start_is_outside = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="352"><td class="num" id="LN352">352</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="353"><td class="num" id="LN353">353</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="354"><td class="num" id="LN354">354</td><td class="line"> <span class='comment'>/* deal with the end point */</span></td></tr>
+<tr class="codeline" data-linenumber="355"><td class="num" id="LN355">355</td><td class="line"> <span class='keyword'>if</span> (start_node != end_node) {</td></tr>
+<tr class="codeline" data-linenumber="356"><td class="num" id="LN356">356</td><td class="line"> sr = end_node-&gt;data;</td></tr>
+<tr class="codeline" data-linenumber="357"><td class="num" id="LN357">357</td><td class="line"> gtk_text_buffer_get_iter_at_mark (region-&gt;buffer, &amp;sr_start_iter, sr-&gt;start);</td></tr>
+<tr class="codeline" data-linenumber="358"><td class="num" id="LN358">358</td><td class="line"> gtk_text_buffer_get_iter_at_mark (region-&gt;buffer, &amp;sr_end_iter, sr-&gt;end);</td></tr>
+<tr class="codeline" data-linenumber="359"><td class="num" id="LN359">359</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="360"><td class="num" id="LN360">360</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="361"><td class="num" id="LN361">361</td><td class="line"> <span class='keyword'>if</span> (gtk_text_iter_in_range (&amp;end, &amp;sr_start_iter, &amp;sr_end_iter) &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="362"><td class="num" id="LN362">362</td><td class="line"> !gtk_text_iter_equal (&amp;end, &amp;sr_end_iter)) {</td></tr>
+<tr class="codeline" data-linenumber="363"><td class="num" id="LN363">363</td><td class="line"> <span class='comment'>/* ending point is inside, move the start mark */</span></td></tr>
+<tr class="codeline" data-linenumber="364"><td class="num" id="LN364">364</td><td class="line"> gtk_text_buffer_move_mark (region-&gt;buffer, sr-&gt;start, &amp;end);</td></tr>
+<tr class="codeline" data-linenumber="365"><td class="num" id="LN365">365</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="366"><td class="num" id="LN366">366</td><td class="line"> end_is_outside = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="367"><td class="num" id="LN367">367</td><td class="line"> DEBUG (g_message (<span class='string_literal'>"end is outside"</span>));</td></tr>
+<tr class="codeline" data-linenumber="368"><td class="num" id="LN368">368</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="369"><td class="num" id="LN369">369</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="370"><td class="num" id="LN370">370</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="371"><td class="num" id="LN371">371</td><td class="line"> <span class='comment'>/* finally remove any intermediate subregions */</span></td></tr>
+<tr class="codeline" data-linenumber="372"><td class="num" id="LN372">372</td><td class="line"> done = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="373"><td class="num" id="LN373">373</td><td class="line"> node = start_node;</td></tr>
+<tr class="codeline" data-linenumber="374"><td class="num" id="LN374">374</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="375"><td class="num" id="LN375">375</td><td class="line"> <span class='keyword'>while</span> (!done) {</td></tr>
+<tr class="codeline" data-linenumber="376"><td class="num" id="LN376">376</td><td class="line"> <span class='keyword'>if</span> (node == end_node)</td></tr>
+<tr class="codeline" data-linenumber="377"><td class="num" id="LN377">377</td><td class="line"> <span class='comment'>/* we are done, exit in the next iteration */</span></td></tr>
+<tr class="codeline" data-linenumber="378"><td class="num" id="LN378">378</td><td class="line"> done = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="379"><td class="num" id="LN379">379</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="380"><td class="num" id="LN380">380</td><td class="line"> <span class='keyword'>if</span> ((node == start_node &amp;&amp; !start_is_outside) ||</td></tr>
+<tr class="codeline" data-linenumber="381"><td class="num" id="LN381">381</td><td class="line"> (node == end_node &amp;&amp; !end_is_outside)) {</td></tr>
+<tr class="codeline" data-linenumber="382"><td class="num" id="LN382">382</td><td class="line"> <span class='comment'>/* skip starting or ending node */</span></td></tr>
+<tr class="codeline" data-linenumber="383"><td class="num" id="LN383">383</td><td class="line"> node = node-&gt;next;</td></tr>
+<tr class="codeline" data-linenumber="384"><td class="num" id="LN384">384</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="385"><td class="num" id="LN385">385</td><td class="line"> GList *l = node-&gt;next;</td></tr>
+<tr class="codeline" data-linenumber="386"><td class="num" id="LN386">386</td><td class="line"> sr = node-&gt;data;</td></tr>
+<tr class="codeline" data-linenumber="387"><td class="num" id="LN387">387</td><td class="line"> gtk_text_buffer_delete_mark (region-&gt;buffer, sr-&gt;start);</td></tr>
+<tr class="codeline" data-linenumber="388"><td class="num" id="LN388">388</td><td class="line"> gtk_text_buffer_delete_mark (region-&gt;buffer, sr-&gt;end);</td></tr>
+<tr class="codeline" data-linenumber="389"><td class="num" id="LN389">389</td><td class="line"> g_free (sr);</td></tr>
+<tr class="codeline" data-linenumber="390"><td class="num" id="LN390">390</td><td class="line"> region-&gt;subregions = g_list_delete_link (region-&gt;subregions,</td></tr>
+<tr class="codeline" data-linenumber="391"><td class="num" id="LN391">391</td><td class="line"> node);</td></tr>
+<tr class="codeline" data-linenumber="392"><td class="num" id="LN392">392</td><td class="line"> node = l;</td></tr>
+<tr class="codeline" data-linenumber="393"><td class="num" id="LN393">393</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="394"><td class="num" id="LN394">394</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="395"><td class="num" id="LN395">395</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="396"><td class="num" id="LN396">396</td><td class="line"> ++region-&gt;time_stamp;</td></tr>
+<tr class="codeline" data-linenumber="397"><td class="num" id="LN397">397</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="398"><td class="num" id="LN398">398</td><td class="line"> DEBUG (pluma_text_region_debug_print (region));</td></tr>
+<tr class="codeline" data-linenumber="399"><td class="num" id="LN399">399</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="400"><td class="num" id="LN400">400</td><td class="line"> <span class='comment'>/* now get rid of empty subregions */</span></td></tr>
+<tr class="codeline" data-linenumber="401"><td class="num" id="LN401">401</td><td class="line"> pluma_text_region_clear_zero_length_subregions (region);</td></tr>
+<tr class="codeline" data-linenumber="402"><td class="num" id="LN402">402</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="403"><td class="num" id="LN403">403</td><td class="line"> DEBUG (pluma_text_region_debug_print (region));</td></tr>
+<tr class="codeline" data-linenumber="404"><td class="num" id="LN404">404</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="405"><td class="num" id="LN405">405</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="406"><td class="num" id="LN406">406</td><td class="line">gint</td></tr>
+<tr class="codeline" data-linenumber="407"><td class="num" id="LN407">407</td><td class="line">pluma_text_region_subregions (PlumaTextRegion *region)</td></tr>
+<tr class="codeline" data-linenumber="408"><td class="num" id="LN408">408</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="409"><td class="num" id="LN409">409</td><td class="line"> <span class='macro'>g_return_val_if_fail (region != NULL, 0)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_59<br>; if (region != ((void*)0)) _g_boolean_var_59 = 1; else _g_boolean_var_59<br> = 0; _g_boolean_var_59; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "region != NULL")<br>; return (0); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="410"><td class="num" id="LN410">410</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="411"><td class="num" id="LN411">411</td><td class="line"> <span class='keyword'>return</span> g_list_length (region-&gt;subregions);</td></tr>
+<tr class="codeline" data-linenumber="412"><td class="num" id="LN412">412</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="413"><td class="num" id="LN413">413</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="414"><td class="num" id="LN414">414</td><td class="line">gboolean</td></tr>
+<tr class="codeline" data-linenumber="415"><td class="num" id="LN415">415</td><td class="line">pluma_text_region_nth_subregion (PlumaTextRegion *region,</td></tr>
+<tr class="codeline" data-linenumber="416"><td class="num" id="LN416">416</td><td class="line"> guint subregion,</td></tr>
+<tr class="codeline" data-linenumber="417"><td class="num" id="LN417">417</td><td class="line"> GtkTextIter *start,</td></tr>
+<tr class="codeline" data-linenumber="418"><td class="num" id="LN418">418</td><td class="line"> GtkTextIter *end)</td></tr>
+<tr class="codeline" data-linenumber="419"><td class="num" id="LN419">419</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="420"><td class="num" id="LN420">420</td><td class="line"> Subregion *sr;</td></tr>
+<tr class="codeline" data-linenumber="421"><td class="num" id="LN421">421</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="422"><td class="num" id="LN422">422</td><td class="line"> <span class='macro'>g_return_val_if_fail (region != NULL, FALSE)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_60<br>; if (region != ((void*)0)) _g_boolean_var_60 = 1; else _g_boolean_var_60<br> = 0; _g_boolean_var_60; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "region != NULL")<br>; return ((0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="423"><td class="num" id="LN423">423</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="424"><td class="num" id="LN424">424</td><td class="line"> sr = g_list_nth_data (region-&gt;subregions, subregion);</td></tr>
+<tr class="codeline" data-linenumber="425"><td class="num" id="LN425">425</td><td class="line"> <span class='keyword'>if</span> (sr == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="426"><td class="num" id="LN426">426</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="427"><td class="num" id="LN427">427</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="428"><td class="num" id="LN428">428</td><td class="line"> <span class='keyword'>if</span> (start)</td></tr>
+<tr class="codeline" data-linenumber="429"><td class="num" id="LN429">429</td><td class="line"> gtk_text_buffer_get_iter_at_mark (region-&gt;buffer, start, sr-&gt;start);</td></tr>
+<tr class="codeline" data-linenumber="430"><td class="num" id="LN430">430</td><td class="line"> <span class='keyword'>if</span> (end)</td></tr>
+<tr class="codeline" data-linenumber="431"><td class="num" id="LN431">431</td><td class="line"> gtk_text_buffer_get_iter_at_mark (region-&gt;buffer, end, sr-&gt;end);</td></tr>
+<tr class="codeline" data-linenumber="432"><td class="num" id="LN432">432</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="433"><td class="num" id="LN433">433</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="434"><td class="num" id="LN434">434</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="435"><td class="num" id="LN435">435</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="436"><td class="num" id="LN436">436</td><td class="line">PlumaTextRegion *</td></tr>
+<tr class="codeline" data-linenumber="437"><td class="num" id="LN437">437</td><td class="line">pluma_text_region_intersect (PlumaTextRegion *region,</td></tr>
+<tr class="codeline" data-linenumber="438"><td class="num" id="LN438">438</td><td class="line"> <span class='keyword'>const</span> GtkTextIter *_start,</td></tr>
+<tr class="codeline" data-linenumber="439"><td class="num" id="LN439">439</td><td class="line"> <span class='keyword'>const</span> GtkTextIter *_end)</td></tr>
+<tr class="codeline" data-linenumber="440"><td class="num" id="LN440">440</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="441"><td class="num" id="LN441">441</td><td class="line"> GList *start_node, *end_node, *node;</td></tr>
+<tr class="codeline" data-linenumber="442"><td class="num" id="LN442">442</td><td class="line"> GtkTextIter sr_start_iter, sr_end_iter;</td></tr>
+<tr class="codeline" data-linenumber="443"><td class="num" id="LN443">443</td><td class="line"> Subregion *sr, *new_sr;</td></tr>
+<tr class="codeline" data-linenumber="444"><td class="num" id="LN444">444</td><td class="line"> gboolean done;</td></tr>
+<tr class="codeline" data-linenumber="445"><td class="num" id="LN445">445</td><td class="line"> PlumaTextRegion *new_region;</td></tr>
+<tr class="codeline" data-linenumber="446"><td class="num" id="LN446">446</td><td class="line"> GtkTextIter start, end;</td></tr>
+<tr class="codeline" data-linenumber="447"><td class="num" id="LN447">447</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="448"><td class="num" id="LN448">448</td><td class="line"> <span class='macro'>g_return_val_if_fail (region != NULL &amp;&amp; _start != NULL &amp;&amp; _end != NULL, NULL)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_61<br>; if (region != ((void*)0) &amp;&amp; _start != ((void*)0) &amp;&amp;<br> _end != ((void*)0)) _g_boolean_var_61 = 1; else _g_boolean_var_61<br> = 0; _g_boolean_var_61; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "region != NULL &amp;&amp; _start != NULL &amp;&amp; _end != NULL"<br>); return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="449"><td class="num" id="LN449">449</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="450"><td class="num" id="LN450">450</td><td class="line"> start = *_start;</td></tr>
+<tr class="codeline" data-linenumber="451"><td class="num" id="LN451">451</td><td class="line"> end = *_end;</td></tr>
+<tr class="codeline" data-linenumber="452"><td class="num" id="LN452">452</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="453"><td class="num" id="LN453">453</td><td class="line"> gtk_text_iter_order (&amp;start, &amp;end);</td></tr>
+<tr class="codeline" data-linenumber="454"><td class="num" id="LN454">454</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="455"><td class="num" id="LN455">455</td><td class="line"> <span class='comment'>/* find bounding subregions */</span></td></tr>
+<tr class="codeline" data-linenumber="456"><td class="num" id="LN456">456</td><td class="line"> start_node = find_nearest_subregion (region, &amp;start, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="457"><td class="num" id="LN457">457</td><td class="line"> end_node = find_nearest_subregion (region, &amp;end, start_node, <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="458"><td class="num" id="LN458">458</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="459"><td class="num" id="LN459">459</td><td class="line"> <span class='comment'>/* easy case first */</span></td></tr>
+<tr class="codeline" data-linenumber="460"><td class="num" id="LN460">460</td><td class="line"> <span class='keyword'>if</span> (start_node == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> || end_node == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> || end_node == start_node-&gt;prev)</td></tr>
+<tr class="codeline" data-linenumber="461"><td class="num" id="LN461">461</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="462"><td class="num" id="LN462">462</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="463"><td class="num" id="LN463">463</td><td class="line"> new_region = pluma_text_region_new (region-&gt;buffer);</td></tr>
+<tr class="codeline" data-linenumber="464"><td class="num" id="LN464">464</td><td class="line"> done = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="465"><td class="num" id="LN465">465</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="466"><td class="num" id="LN466">466</td><td class="line"> sr = start_node-&gt;data;</td></tr>
+<tr class="codeline" data-linenumber="467"><td class="num" id="LN467">467</td><td class="line"> gtk_text_buffer_get_iter_at_mark (region-&gt;buffer, &amp;sr_start_iter, sr-&gt;start);</td></tr>
+<tr class="codeline" data-linenumber="468"><td class="num" id="LN468">468</td><td class="line"> gtk_text_buffer_get_iter_at_mark (region-&gt;buffer, &amp;sr_end_iter, sr-&gt;end);</td></tr>
+<tr class="codeline" data-linenumber="469"><td class="num" id="LN469">469</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="470"><td class="num" id="LN470">470</td><td class="line"> <span class='comment'>/* starting node */</span></td></tr>
+<tr class="codeline" data-linenumber="471"><td class="num" id="LN471">471</td><td class="line"> <span class='keyword'>if</span> (gtk_text_iter_in_range (&amp;start, &amp;sr_start_iter, &amp;sr_end_iter)) {</td></tr>
+<tr class="codeline" data-linenumber="472"><td class="num" id="LN472">472</td><td class="line"> new_sr = <span class='macro'>g_new0 (Subregion, 1)<span class='macro_popup'>(Subregion *) (__extension__ ({ gsize __n = (gsize) (1); gsize<br> __s = sizeof (Subregion); gpointer __p; if (__s == 1) __p = g_malloc0<br> (__n); else if (__builtin_constant_p (__n) &amp;&amp; (__s ==<br> 0 || __n &lt;= (9223372036854775807L *2UL+1UL) / __s)) __p =<br> g_malloc0 (__n * __s); else __p = g_malloc0_n (__n, __s); __p<br>; }))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="473"><td class="num" id="LN473">473</td><td class="line"> new_region-&gt;subregions = g_list_prepend (new_region-&gt;subregions, new_sr);</td></tr>
+<tr class="codeline" data-linenumber="474"><td class="num" id="LN474">474</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="475"><td class="num" id="LN475">475</td><td class="line"> new_sr-&gt;start = gtk_text_buffer_create_mark (new_region-&gt;buffer, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="476"><td class="num" id="LN476">476</td><td class="line"> &amp;start, <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="477"><td class="num" id="LN477">477</td><td class="line"> <span class='keyword'>if</span> (start_node == end_node) {</td></tr>
+<tr class="codeline" data-linenumber="478"><td class="num" id="LN478">478</td><td class="line"> <span class='comment'>/* things will finish shortly */</span></td></tr>
+<tr class="codeline" data-linenumber="479"><td class="num" id="LN479">479</td><td class="line"> done = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="480"><td class="num" id="LN480">480</td><td class="line"> <span class='keyword'>if</span> (gtk_text_iter_in_range (&amp;end, &amp;sr_start_iter, &amp;sr_end_iter))</td></tr>
+<tr class="codeline" data-linenumber="481"><td class="num" id="LN481">481</td><td class="line"> new_sr-&gt;end = gtk_text_buffer_create_mark (new_region-&gt;buffer,</td></tr>
+<tr class="codeline" data-linenumber="482"><td class="num" id="LN482">482</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, &amp;end, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="483"><td class="num" id="LN483">483</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="484"><td class="num" id="LN484">484</td><td class="line"> new_sr-&gt;end = gtk_text_buffer_create_mark (new_region-&gt;buffer,</td></tr>
+<tr class="codeline" data-linenumber="485"><td class="num" id="LN485">485</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, &amp;sr_end_iter,</td></tr>
+<tr class="codeline" data-linenumber="486"><td class="num" id="LN486">486</td><td class="line"> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="487"><td class="num" id="LN487">487</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="488"><td class="num" id="LN488">488</td><td class="line"> new_sr-&gt;end = gtk_text_buffer_create_mark (new_region-&gt;buffer, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="489"><td class="num" id="LN489">489</td><td class="line"> &amp;sr_end_iter, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="490"><td class="num" id="LN490">490</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="491"><td class="num" id="LN491">491</td><td class="line"> node = start_node-&gt;next;</td></tr>
+<tr class="codeline" data-linenumber="492"><td class="num" id="LN492">492</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="493"><td class="num" id="LN493">493</td><td class="line"> <span class='comment'>/* start should be the same as the subregion, so copy it in the loop */</span></td></tr>
+<tr class="codeline" data-linenumber="494"><td class="num" id="LN494">494</td><td class="line"> node = start_node;</td></tr>
+<tr class="codeline" data-linenumber="495"><td class="num" id="LN495">495</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="496"><td class="num" id="LN496">496</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="497"><td class="num" id="LN497">497</td><td class="line"> <span class='keyword'>if</span> (!done) {</td></tr>
+<tr class="codeline" data-linenumber="498"><td class="num" id="LN498">498</td><td class="line"> <span class='keyword'>while</span> (node != end_node) {</td></tr>
+<tr class="codeline" data-linenumber="499"><td class="num" id="LN499">499</td><td class="line"> <span class='comment'>/* copy intermediate subregions verbatim */</span></td></tr>
+<tr class="codeline" data-linenumber="500"><td class="num" id="LN500">500</td><td class="line"> sr = node-&gt;data;</td></tr>
+<tr class="codeline" data-linenumber="501"><td class="num" id="LN501">501</td><td class="line"> gtk_text_buffer_get_iter_at_mark (region-&gt;buffer, &amp;sr_start_iter,</td></tr>
+<tr class="codeline" data-linenumber="502"><td class="num" id="LN502">502</td><td class="line"> sr-&gt;start);</td></tr>
+<tr class="codeline" data-linenumber="503"><td class="num" id="LN503">503</td><td class="line"> gtk_text_buffer_get_iter_at_mark (region-&gt;buffer, &amp;sr_end_iter, sr-&gt;end);</td></tr>
+<tr class="codeline" data-linenumber="504"><td class="num" id="LN504">504</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="505"><td class="num" id="LN505">505</td><td class="line"> new_sr = <span class='macro'>g_new0 (Subregion, 1)<span class='macro_popup'>(Subregion *) (__extension__ ({ gsize __n = (gsize) (1); gsize<br> __s = sizeof (Subregion); gpointer __p; if (__s == 1) __p = g_malloc0<br> (__n); else if (__builtin_constant_p (__n) &amp;&amp; (__s ==<br> 0 || __n &lt;= (9223372036854775807L *2UL+1UL) / __s)) __p =<br> g_malloc0 (__n * __s); else __p = g_malloc0_n (__n, __s); __p<br>; }))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="506"><td class="num" id="LN506">506</td><td class="line"> new_region-&gt;subregions = g_list_prepend (new_region-&gt;subregions, new_sr);</td></tr>
+<tr class="codeline" data-linenumber="507"><td class="num" id="LN507">507</td><td class="line"> new_sr-&gt;start = gtk_text_buffer_create_mark (new_region-&gt;buffer, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="508"><td class="num" id="LN508">508</td><td class="line"> &amp;sr_start_iter, <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="509"><td class="num" id="LN509">509</td><td class="line"> new_sr-&gt;end = gtk_text_buffer_create_mark (new_region-&gt;buffer, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="510"><td class="num" id="LN510">510</td><td class="line"> &amp;sr_end_iter, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="511"><td class="num" id="LN511">511</td><td class="line"> <span class='comment'>/* next node */</span></td></tr>
+<tr class="codeline" data-linenumber="512"><td class="num" id="LN512">512</td><td class="line"> node = node-&gt;next;</td></tr>
+<tr class="codeline" data-linenumber="513"><td class="num" id="LN513">513</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="514"><td class="num" id="LN514">514</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="515"><td class="num" id="LN515">515</td><td class="line"> <span class='comment'>/* ending node */</span></td></tr>
+<tr class="codeline" data-linenumber="516"><td class="num" id="LN516">516</td><td class="line"> sr = node-&gt;data;</td></tr>
+<tr class="codeline" data-linenumber="517"><td class="num" id="LN517">517</td><td class="line"> gtk_text_buffer_get_iter_at_mark (region-&gt;buffer, &amp;sr_start_iter, sr-&gt;start);</td></tr>
+<tr class="codeline" data-linenumber="518"><td class="num" id="LN518">518</td><td class="line"> gtk_text_buffer_get_iter_at_mark (region-&gt;buffer, &amp;sr_end_iter, sr-&gt;end);</td></tr>
+<tr class="codeline" data-linenumber="519"><td class="num" id="LN519">519</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="520"><td class="num" id="LN520">520</td><td class="line"> new_sr = <span class='macro'>g_new0 (Subregion, 1)<span class='macro_popup'>(Subregion *) (__extension__ ({ gsize __n = (gsize) (1); gsize<br> __s = sizeof (Subregion); gpointer __p; if (__s == 1) __p = g_malloc0<br> (__n); else if (__builtin_constant_p (__n) &amp;&amp; (__s ==<br> 0 || __n &lt;= (9223372036854775807L *2UL+1UL) / __s)) __p =<br> g_malloc0 (__n * __s); else __p = g_malloc0_n (__n, __s); __p<br>; }))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="521"><td class="num" id="LN521">521</td><td class="line"> new_region-&gt;subregions = g_list_prepend (new_region-&gt;subregions, new_sr);</td></tr>
+<tr class="codeline" data-linenumber="522"><td class="num" id="LN522">522</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="523"><td class="num" id="LN523">523</td><td class="line"> new_sr-&gt;start = gtk_text_buffer_create_mark (new_region-&gt;buffer, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="524"><td class="num" id="LN524">524</td><td class="line"> &amp;sr_start_iter, <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="525"><td class="num" id="LN525">525</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="526"><td class="num" id="LN526">526</td><td class="line"> <span class='keyword'>if</span> (gtk_text_iter_in_range (&amp;end, &amp;sr_start_iter, &amp;sr_end_iter))</td></tr>
+<tr class="codeline" data-linenumber="527"><td class="num" id="LN527">527</td><td class="line"> new_sr-&gt;end = gtk_text_buffer_create_mark (new_region-&gt;buffer, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="528"><td class="num" id="LN528">528</td><td class="line"> &amp;end, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="529"><td class="num" id="LN529">529</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="530"><td class="num" id="LN530">530</td><td class="line"> new_sr-&gt;end = gtk_text_buffer_create_mark (new_region-&gt;buffer, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="531"><td class="num" id="LN531">531</td><td class="line"> &amp;sr_end_iter, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="532"><td class="num" id="LN532">532</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="533"><td class="num" id="LN533">533</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="534"><td class="num" id="LN534">534</td><td class="line"> new_region-&gt;subregions = g_list_reverse (new_region-&gt;subregions);</td></tr>
+<tr class="codeline" data-linenumber="535"><td class="num" id="LN535">535</td><td class="line"> <span class='keyword'>return</span> new_region;</td></tr>
+<tr class="codeline" data-linenumber="536"><td class="num" id="LN536">536</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="537"><td class="num" id="LN537">537</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="538"><td class="num" id="LN538">538</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="539"><td class="num" id="LN539">539</td><td class="line">check_iterator (PlumaTextRegionIteratorReal *real)</td></tr>
+<tr class="codeline" data-linenumber="540"><td class="num" id="LN540">540</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="541"><td class="num" id="LN541">541</td><td class="line"> <span class='keyword'>if</span> ((real-&gt;region == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) ||</td></tr>
+<tr class="codeline" data-linenumber="542"><td class="num" id="LN542">542</td><td class="line"> (real-&gt;region_time_stamp != real-&gt;region-&gt;time_stamp))</td></tr>
+<tr class="codeline" data-linenumber="543"><td class="num" id="LN543">543</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="544"><td class="num" id="LN544">544</td><td class="line"> g_warning(<span class='string_literal'>"Invalid iterator: either the iterator "</span></td></tr>
+<tr class="codeline" data-linenumber="545"><td class="num" id="LN545">545</td><td class="line"> <span class='string_literal'>"is uninitialized, or the region "</span></td></tr>
+<tr class="codeline" data-linenumber="546"><td class="num" id="LN546">546</td><td class="line"> <span class='string_literal'>"has been modified since the iterator "</span></td></tr>
+<tr class="codeline" data-linenumber="547"><td class="num" id="LN547">547</td><td class="line"> <span class='string_literal'>"was created."</span>);</td></tr>
+<tr class="codeline" data-linenumber="548"><td class="num" id="LN548">548</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="549"><td class="num" id="LN549">549</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="550"><td class="num" id="LN550">550</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="551"><td class="num" id="LN551">551</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="552"><td class="num" id="LN552">552</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="553"><td class="num" id="LN553">553</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="554"><td class="num" id="LN554">554</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="555"><td class="num" id="LN555">555</td><td class="line"><span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="556"><td class="num" id="LN556">556</td><td class="line">pluma_text_region_get_iterator (PlumaTextRegion *region,</td></tr>
+<tr class="codeline" data-linenumber="557"><td class="num" id="LN557">557</td><td class="line"> PlumaTextRegionIterator *iter,</td></tr>
+<tr class="codeline" data-linenumber="558"><td class="num" id="LN558">558</td><td class="line"> guint start)</td></tr>
+<tr class="codeline" data-linenumber="559"><td class="num" id="LN559">559</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="560"><td class="num" id="LN560">560</td><td class="line"> PlumaTextRegionIteratorReal *real;</td></tr>
+<tr class="codeline" data-linenumber="561"><td class="num" id="LN561">561</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="562"><td class="num" id="LN562">562</td><td class="line"> <span class='macro'>g_return_if_fail (region != NULL)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_62<br>; if (region != ((void*)0)) _g_boolean_var_62 = 1; else _g_boolean_var_62<br> = 0; _g_boolean_var_62; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "region != NULL")<br>; return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="563"><td class="num" id="LN563">563</td><td class="line"> <span class='macro'>g_return_if_fail (iter != NULL)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_63<br>; if (iter != ((void*)0)) _g_boolean_var_63 = 1; else _g_boolean_var_63<br> = 0; _g_boolean_var_63; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "iter != NULL"); return<br>; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="564"><td class="num" id="LN564">564</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="565"><td class="num" id="LN565">565</td><td class="line"> real = (PlumaTextRegionIteratorReal *)iter;</td></tr>
+<tr class="codeline" data-linenumber="566"><td class="num" id="LN566">566</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="567"><td class="num" id="LN567">567</td><td class="line"> <span class='comment'>/* region-&gt;subregions may be NULL, -&gt; end iter */</span></td></tr>
+<tr class="codeline" data-linenumber="568"><td class="num" id="LN568">568</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="569"><td class="num" id="LN569">569</td><td class="line"> real-&gt;region = region;</td></tr>
+<tr class="codeline" data-linenumber="570"><td class="num" id="LN570">570</td><td class="line"> real-&gt;subregions = g_list_nth (region-&gt;subregions, start);</td></tr>
+<tr class="codeline" data-linenumber="571"><td class="num" id="LN571">571</td><td class="line"> real-&gt;region_time_stamp = region-&gt;time_stamp;</td></tr>
+<tr class="codeline" data-linenumber="572"><td class="num" id="LN572">572</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="573"><td class="num" id="LN573">573</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="574"><td class="num" id="LN574">574</td><td class="line">gboolean</td></tr>
+<tr class="codeline" data-linenumber="575"><td class="num" id="LN575">575</td><td class="line">pluma_text_region_iterator_is_end (PlumaTextRegionIterator *iter)</td></tr>
+<tr class="codeline" data-linenumber="576"><td class="num" id="LN576">576</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="577"><td class="num" id="LN577">577</td><td class="line"> PlumaTextRegionIteratorReal *real;</td></tr>
+<tr class="codeline" data-linenumber="578"><td class="num" id="LN578">578</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="579"><td class="num" id="LN579">579</td><td class="line"> <span class='macro'>g_return_val_if_fail (iter != NULL, FALSE)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_64<br>; if (iter != ((void*)0)) _g_boolean_var_64 = 1; else _g_boolean_var_64<br> = 0; _g_boolean_var_64; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "iter != NULL"); return<br> ((0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="580"><td class="num" id="LN580">580</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="581"><td class="num" id="LN581">581</td><td class="line"> real = (PlumaTextRegionIteratorReal *)iter;</td></tr>
+<tr class="codeline" data-linenumber="582"><td class="num" id="LN582">582</td><td class="line"> <span class='macro'>g_return_val_if_fail (check_iterator (real), FALSE)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_65<br>; if (check_iterator (real)) _g_boolean_var_65 = 1; else _g_boolean_var_65<br> = 0; _g_boolean_var_65; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "check_iterator (real)"<br>); return ((0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="583"><td class="num" id="LN583">583</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="584"><td class="num" id="LN584">584</td><td class="line"> <span class='keyword'>return</span> (real-&gt;subregions == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="585"><td class="num" id="LN585">585</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="586"><td class="num" id="LN586">586</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="587"><td class="num" id="LN587">587</td><td class="line">gboolean</td></tr>
+<tr class="codeline" data-linenumber="588"><td class="num" id="LN588">588</td><td class="line">pluma_text_region_iterator_next (PlumaTextRegionIterator *iter)</td></tr>
+<tr class="codeline" data-linenumber="589"><td class="num" id="LN589">589</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="590"><td class="num" id="LN590">590</td><td class="line"> PlumaTextRegionIteratorReal *real;</td></tr>
+<tr class="codeline" data-linenumber="591"><td class="num" id="LN591">591</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="592"><td class="num" id="LN592">592</td><td class="line"> <span class='macro'>g_return_val_if_fail (iter != NULL, FALSE)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_66<br>; if (iter != ((void*)0)) _g_boolean_var_66 = 1; else _g_boolean_var_66<br> = 0; _g_boolean_var_66; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "iter != NULL"); return<br> ((0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="593"><td class="num" id="LN593">593</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="594"><td class="num" id="LN594">594</td><td class="line"> real = (PlumaTextRegionIteratorReal *)iter;</td></tr>
+<tr class="codeline" data-linenumber="595"><td class="num" id="LN595">595</td><td class="line"> <span class='macro'>g_return_val_if_fail (check_iterator (real), FALSE)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_67<br>; if (check_iterator (real)) _g_boolean_var_67 = 1; else _g_boolean_var_67<br> = 0; _g_boolean_var_67; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "check_iterator (real)"<br>); return ((0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="596"><td class="num" id="LN596">596</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="597"><td class="num" id="LN597">597</td><td class="line"> <span class='keyword'>if</span> (real-&gt;subregions != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="598"><td class="num" id="LN598">598</td><td class="line"> real-&gt;subregions = <span class='macro'>g_list_next (real-&gt;subregions)<span class='macro_popup'>((real-&gt;subregions) ? (((GList *)(real-&gt;subregions))-&gt;<br>next) : ((void*)0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="599"><td class="num" id="LN599">599</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="600"><td class="num" id="LN600">600</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="601"><td class="num" id="LN601">601</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="602"><td class="num" id="LN602">602</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="603"><td class="num" id="LN603">603</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="604"><td class="num" id="LN604">604</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="605"><td class="num" id="LN605">605</td><td class="line"><span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="606"><td class="num" id="LN606">606</td><td class="line">pluma_text_region_iterator_get_subregion (PlumaTextRegionIterator *iter,</td></tr>
+<tr class="codeline" data-linenumber="607"><td class="num" id="LN607">607</td><td class="line"> GtkTextIter *start,</td></tr>
+<tr class="codeline" data-linenumber="608"><td class="num" id="LN608">608</td><td class="line"> GtkTextIter *end)</td></tr>
+<tr class="codeline" data-linenumber="609"><td class="num" id="LN609">609</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="610"><td class="num" id="LN610">610</td><td class="line"> PlumaTextRegionIteratorReal *real;</td></tr>
+<tr class="codeline" data-linenumber="611"><td class="num" id="LN611">611</td><td class="line"> Subregion *sr;</td></tr>
+<tr class="codeline" data-linenumber="612"><td class="num" id="LN612">612</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="613"><td class="num" id="LN613">613</td><td class="line"> <span class='macro'>g_return_if_fail (iter != NULL)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_68<br>; if (iter != ((void*)0)) _g_boolean_var_68 = 1; else _g_boolean_var_68<br> = 0; _g_boolean_var_68; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "iter != NULL"); return<br>; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="614"><td class="num" id="LN614">614</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="615"><td class="num" id="LN615">615</td><td class="line"> real = (PlumaTextRegionIteratorReal *)iter;</td></tr>
+<tr class="codeline" data-linenumber="616"><td class="num" id="LN616">616</td><td class="line"> <span class='macro'>g_return_if_fail (check_iterator (real))<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_69<br>; if (check_iterator (real)) _g_boolean_var_69 = 1; else _g_boolean_var_69<br> = 0; _g_boolean_var_69; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "check_iterator (real)"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="617"><td class="num" id="LN617">617</td><td class="line"> <span class='macro'>g_return_if_fail (real-&gt;subregions != NULL)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_70<br>; if (real-&gt;subregions != ((void*)0)) _g_boolean_var_70 = 1<br>; else _g_boolean_var_70 = 0; _g_boolean_var_70; }), 1))) { }<br> else { g_return_if_fail_warning (((gchar*) 0), ((const char*<br>) (__func__)), "real-&gt;subregions != NULL"); return; } } while<br> (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="618"><td class="num" id="LN618">618</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="619"><td class="num" id="LN619">619</td><td class="line"> sr = (Subregion*)real-&gt;subregions-&gt;data;</td></tr>
+<tr class="codeline" data-linenumber="620"><td class="num" id="LN620">620</td><td class="line"> <span class='macro'>g_return_if_fail (sr != NULL)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_71<br>; if (sr != ((void*)0)) _g_boolean_var_71 = 1; else _g_boolean_var_71<br> = 0; _g_boolean_var_71; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "sr != NULL"); return<br>; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="621"><td class="num" id="LN621">621</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="622"><td class="num" id="LN622">622</td><td class="line"> <span class='keyword'>if</span> (start)</td></tr>
+<tr class="codeline" data-linenumber="623"><td class="num" id="LN623">623</td><td class="line"> gtk_text_buffer_get_iter_at_mark (real-&gt;region-&gt;buffer, start, sr-&gt;start);</td></tr>
+<tr class="codeline" data-linenumber="624"><td class="num" id="LN624">624</td><td class="line"> <span class='keyword'>if</span> (end)</td></tr>
+<tr class="codeline" data-linenumber="625"><td class="num" id="LN625">625</td><td class="line"> gtk_text_buffer_get_iter_at_mark (real-&gt;region-&gt;buffer, end, sr-&gt;end);</td></tr>
+<tr class="codeline" data-linenumber="626"><td class="num" id="LN626">626</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="627"><td class="num" id="LN627">627</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="628"><td class="num" id="LN628">628</td><td class="line"><span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="629"><td class="num" id="LN629">629</td><td class="line">pluma_text_region_debug_print (PlumaTextRegion *region)</td></tr>
+<tr class="codeline" data-linenumber="630"><td class="num" id="LN630">630</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="631"><td class="num" id="LN631">631</td><td class="line"> GList *l;</td></tr>
+<tr class="codeline" data-linenumber="632"><td class="num" id="LN632">632</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="633"><td class="num" id="LN633">633</td><td class="line"> <span class='macro'>g_return_if_fail (region != NULL)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_72<br>; if (region != ((void*)0)) _g_boolean_var_72 = 1; else _g_boolean_var_72<br> = 0; _g_boolean_var_72; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "region != NULL")<br>; return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="634"><td class="num" id="LN634">634</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="635"><td class="num" id="LN635">635</td><td class="line"> g_print (<span class='string_literal'>"Subregions: "</span>);</td></tr>
+<tr class="codeline" data-linenumber="636"><td class="num" id="LN636">636</td><td class="line"> l = region-&gt;subregions;</td></tr>
+<tr class="codeline" data-linenumber="637"><td class="num" id="LN637">637</td><td class="line"> <span class='keyword'>while</span> (l) {</td></tr>
+<tr class="codeline" data-linenumber="638"><td class="num" id="LN638">638</td><td class="line"> Subregion *sr = l-&gt;data;</td></tr>
+<tr class="codeline" data-linenumber="639"><td class="num" id="LN639">639</td><td class="line"> GtkTextIter iter1, iter2;</td></tr>
+<tr class="codeline" data-linenumber="640"><td class="num" id="LN640">640</td><td class="line"> gtk_text_buffer_get_iter_at_mark (region-&gt;buffer, &amp;iter1, sr-&gt;start);</td></tr>
+<tr class="codeline" data-linenumber="641"><td class="num" id="LN641">641</td><td class="line"> gtk_text_buffer_get_iter_at_mark (region-&gt;buffer, &amp;iter2, sr-&gt;end);</td></tr>
+<tr class="codeline" data-linenumber="642"><td class="num" id="LN642">642</td><td class="line"> g_print (<span class='string_literal'>"%d-%d "</span>, gtk_text_iter_get_offset (&amp;iter1),</td></tr>
+<tr class="codeline" data-linenumber="643"><td class="num" id="LN643">643</td><td class="line"> gtk_text_iter_get_offset (&amp;iter2));</td></tr>
+<tr class="codeline" data-linenumber="644"><td class="num" id="LN644">644</td><td class="line"> l = l-&gt;next;</td></tr>
+<tr class="codeline" data-linenumber="645"><td class="num" id="LN645">645</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="646"><td class="num" id="LN646">646</td><td class="line"> g_print (<span class='string_literal'>"\n"</span>);</td></tr>
+<tr class="codeline" data-linenumber="647"><td class="num" id="LN647">647</td><td class="line">}</td></tr>
+</table></body></html>
diff --git a/2023-05-28-030536-6612-1@f643dde74cbd_master/report-5f782a.html b/2023-05-28-030536-6612-1@f643dde74cbd_master/report-5f782a.html
new file mode 100644
index 00000000..1dfa40c0
--- /dev/null
+++ b/2023-05-28-030536-6612-1@f643dde74cbd_master/report-5f782a.html
@@ -0,0 +1,1544 @@
+<!doctype html>
+<html>
+<head>
+<title>pluma-spell-checker-dialog.c</title>
+
+<style type="text/css">
+body { color:#000000; background-color:#ffffff }
+body { font-family:Helvetica, sans-serif; font-size:10pt }
+h1 { font-size:14pt }
+.FileName { margin-top: 5px; margin-bottom: 5px; display: inline; }
+.FileNav { margin-left: 5px; margin-right: 5px; display: inline; }
+.FileNav a { text-decoration:none; font-size: larger; }
+.divider { margin-top: 30px; margin-bottom: 30px; height: 15px; }
+.divider { background-color: gray; }
+.code { border-collapse:collapse; width:100%; }
+.code { font-family: "Monospace", monospace; font-size:10pt }
+.code { line-height: 1.2em }
+.comment { color: green; font-style: oblique }
+.keyword { color: blue }
+.string_literal { color: red }
+.directive { color: darkmagenta }
+
+/* Macros and variables could have pop-up notes hidden by default.
+ - Macro pop-up: expansion of the macro
+ - Variable pop-up: value (table) of the variable */
+.macro_popup, .variable_popup { display: none; }
+
+/* Pop-up appears on mouse-hover event. */
+.macro:hover .macro_popup, .variable:hover .variable_popup {
+ display: block;
+ padding: 2px;
+ -webkit-border-radius:5px;
+ -webkit-box-shadow:1px 1px 7px #000;
+ border-radius:5px;
+ box-shadow:1px 1px 7px #000;
+ position: absolute;
+ top: -1em;
+ left:10em;
+ z-index: 1
+}
+
+.macro_popup {
+ border: 2px solid red;
+ background-color:#FFF0F0;
+ font-weight: normal;
+}
+
+.variable_popup {
+ border: 2px solid blue;
+ background-color:#F0F0FF;
+ font-weight: bold;
+ font-family: Helvetica, sans-serif;
+ font-size: 9pt;
+}
+
+/* Pop-up notes needs a relative position as a base where they pops up. */
+.macro, .variable {
+ background-color: PaleGoldenRod;
+ position: relative;
+}
+.macro { color: DarkMagenta; }
+
+#tooltiphint {
+ position: fixed;
+ width: 50em;
+ margin-left: -25em;
+ left: 50%;
+ padding: 10px;
+ border: 1px solid #b0b0b0;
+ border-radius: 2px;
+ box-shadow: 1px 1px 7px black;
+ background-color: #c0c0c0;
+ z-index: 2;
+}
+
+.num { width:2.5em; padding-right:2ex; background-color:#eeeeee }
+.num { text-align:right; font-size:8pt }
+.num { color:#444444 }
+.line { padding-left: 1ex; border-left: 3px solid #ccc }
+.line { white-space: pre }
+.msg { -webkit-box-shadow:1px 1px 7px #000 }
+.msg { box-shadow:1px 1px 7px #000 }
+.msg { -webkit-border-radius:5px }
+.msg { border-radius:5px }
+.msg { font-family:Helvetica, sans-serif; font-size:8pt }
+.msg { float:left }
+.msg { position:relative }
+.msg { padding:0.25em 1ex 0.25em 1ex }
+.msg { margin-top:10px; margin-bottom:10px }
+.msg { font-weight:bold }
+.msg { max-width:60em; word-wrap: break-word; white-space: pre-wrap }
+.msgT { padding:0x; spacing:0x }
+.msgEvent { background-color:#fff8b4; color:#000000 }
+.msgControl { background-color:#bbbbbb; color:#000000 }
+.msgNote { background-color:#ddeeff; color:#000000 }
+.mrange { background-color:#dfddf3 }
+.mrange { border-bottom:1px solid #6F9DBE }
+.PathIndex { font-weight: bold; padding:0px 5px; margin-right:5px; }
+.PathIndex { -webkit-border-radius:8px }
+.PathIndex { border-radius:8px }
+.PathIndexEvent { background-color:#bfba87 }
+.PathIndexControl { background-color:#8c8c8c }
+.PathIndexPopUp { background-color: #879abc; }
+.PathNav a { text-decoration:none; font-size: larger }
+.CodeInsertionHint { font-weight: bold; background-color: #10dd10 }
+.CodeRemovalHint { background-color:#de1010 }
+.CodeRemovalHint { border-bottom:1px solid #6F9DBE }
+.msg.selected{ background-color:orange !important; }
+
+table.simpletable {
+ padding: 5px;
+ font-size:12pt;
+ margin:20px;
+ border-collapse: collapse; border-spacing: 0px;
+}
+td.rowname {
+ text-align: right;
+ vertical-align: top;
+ font-weight: bold;
+ color:#444444;
+ padding-right:2ex;
+}
+
+/* Hidden text. */
+input.spoilerhider + label {
+ cursor: pointer;
+ text-decoration: underline;
+ display: block;
+}
+input.spoilerhider {
+ display: none;
+}
+input.spoilerhider ~ .spoiler {
+ overflow: hidden;
+ margin: 10px auto 0;
+ height: 0;
+ opacity: 0;
+}
+input.spoilerhider:checked + label + .spoiler{
+ height: auto;
+ opacity: 1;
+}
+</style>
+</head>
+<body>
+<!-- BUGDESC Use of memory after it is freed -->
+
+<!-- BUGTYPE Use-after-free -->
+
+<!-- BUGCATEGORY Memory error -->
+
+<!-- BUGFILE /rootdir/plugins/spell/pluma-spell-checker-dialog.c -->
+
+<!-- FILENAME pluma-spell-checker-dialog.c -->
+
+<!-- FUNCTIONNAME pluma_spell_checker_dialog_set_misspelled_word -->
+
+<!-- ISSUEHASHCONTENTOFLINEINCONTEXT 5f782afd16fafdae3109605cb601d595 -->
+
+<!-- BUGLINE 411 -->
+
+<!-- BUGCOLUMN 25 -->
+
+<!-- BUGPATHLENGTH 48 -->
+
+<!-- BUGMETAEND -->
+<!-- REPORTHEADER -->
+<h3>Bug Summary</h3>
+<table class="simpletable">
+<tr><td class="rowname">File:</td><td>plugins/spell/pluma-spell-checker-dialog.c</td></tr>
+<tr><td class="rowname">Warning:</td><td><a href="#EndPath">line 411, column 25</a><br />Use of memory after it is freed</td></tr>
+
+</table>
+<!-- REPORTSUMMARYEXTRA -->
+<h3>Annotated Source Code</h3>
+<p>Press <a href="#" onclick="toggleHelp(); return false;">'?'</a>
+ to see keyboard shortcuts</p>
+<input type="checkbox" class="spoilerhider" id="showinvocation" />
+<label for="showinvocation" >Show analyzer invocation</label>
+<div class="spoiler">clang -cc1 -cc1 -triple x86_64-redhat-linux-gnu -analyze -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name pluma-spell-checker-dialog.c -analyzer-checker=core -analyzer-checker=apiModeling -analyzer-checker=unix -analyzer-checker=deadcode -analyzer-checker=security.insecureAPI.UncheckedReturn -analyzer-checker=security.insecureAPI.getpw -analyzer-checker=security.insecureAPI.gets -analyzer-checker=security.insecureAPI.mktemp -analyzer-checker=security.insecureAPI.mkstemp -analyzer-checker=security.insecureAPI.vfork -analyzer-checker=nullability.NullPassedToNonnull -analyzer-checker=nullability.NullReturnedFromNonnull -analyzer-output plist -w -setup-static-analyzer -mrelocation-model pic -pic-level 2 -fhalf-no-semantic-interposition -mframe-pointer=none -fmath-errno -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=2 -target-cpu x86-64 -tune-cpu generic -debugger-tuning=gdb -fcoverage-compilation-dir=/rootdir/plugins/spell -resource-dir /usr/lib64/clang/16 -D HAVE_CONFIG_H -I . -I ../.. -I ../.. -I /usr/include/libxml2 -I /usr/include/glib-2.0 -I /usr/lib64/glib-2.0/include -I /usr/include/sysprof-4 -I /usr/include/libmount -I /usr/include/blkid -I /usr/include/gtk-3.0 -I /usr/include/pango-1.0 -I /usr/include/harfbuzz -I /usr/include/freetype2 -I /usr/include/libpng16 -I /usr/include/fribidi -I /usr/include/cairo -I /usr/include/pixman-1 -I /usr/include/gdk-pixbuf-2.0 -I /usr/include/gio-unix-2.0 -I /usr/include/cloudproviders -I /usr/include/atk-1.0 -I /usr/include/at-spi2-atk/2.0 -I /usr/include/at-spi-2.0 -I /usr/include/dbus-1.0 -I /usr/lib64/dbus-1.0/include -I /usr/include/gtksourceview-4 -I /usr/include/libpeas-1.0 -I /usr/include/gobject-introspection-1.0 -I /usr/include/enchant-2 -I /usr/include/glib-2.0 -I /usr/lib64/glib-2.0/include -I /usr/include/sysprof-4 -D PIC -internal-isystem /usr/lib64/clang/16/include -internal-isystem /usr/local/include -internal-isystem /usr/bin/../lib/gcc/x86_64-redhat-linux/13/../../../../x86_64-redhat-linux/include -internal-externc-isystem /include -internal-externc-isystem /usr/include -O2 -Wno-unused-parameter -fdebug-compilation-dir=/rootdir/plugins/spell -ferror-limit 19 -fgnuc-version=4.2.1 -vectorize-loops -vectorize-slp -analyzer-checker deadcode.DeadStores -analyzer-checker alpha.deadcode.UnreachableCode -analyzer-checker alpha.core.CastSize -analyzer-checker alpha.core.CastToStruct -analyzer-checker alpha.core.IdenticalExpr -analyzer-checker alpha.core.SizeofPtr -analyzer-checker alpha.security.ArrayBoundV2 -analyzer-checker alpha.security.MallocOverflow -analyzer-checker alpha.security.ReturnPtrRange -analyzer-checker alpha.unix.SimpleStream -analyzer-checker alpha.unix.cstring.BufferOverlap -analyzer-checker alpha.unix.cstring.NotNullTerminated -analyzer-checker alpha.unix.cstring.OutOfBounds -analyzer-checker alpha.core.FixedAddr -analyzer-checker security.insecureAPI.strcpy -analyzer-output=html -faddrsig -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o /rootdir/html-report/2023-05-28-030536-6612-1 -x c pluma-spell-checker-dialog.c
+</div>
+<div id='tooltiphint' hidden="true">
+ <p>Keyboard shortcuts: </p>
+ <ul>
+ <li>Use 'j/k' keys for keyboard navigation</li>
+ <li>Use 'Shift+S' to show/hide relevant lines</li>
+ <li>Use '?' to toggle this window</li>
+ </ul>
+ <a href="#" onclick="toggleHelp(); return false;">Close</a>
+</div>
+<script type='text/javascript'>
+var relevant_lines = {"1": {"109": 1, "193": 1, "194": 1, "195": 1, "196": 1, "197": 1, "198": 1, "199": 1, "200": 1, "201": 1, "202": 1, "212": 1, "213": 1, "215": 1, "217": 1, "218": 1, "220": 1, "221": 1, "222": 1, "223": 1, "225": 1, "226": 1, "227": 1, "228": 1, "229": 1, "230": 1, "231": 1, "232": 1, "233": 1, "234": 1, "235": 1, "236": 1, "237": 1, "238": 1, "240": 1, "242": 1, "244": 1, "245": 1, "247": 1, "341": 1, "342": 1, "343": 1, "344": 1, "345": 1, "347": 1, "349": 1, "352": 1, "354": 1, "356": 1, "361": 1, "362": 1, "363": 1, "364": 1, "365": 1, "366": 1, "368": 1, "369": 1, "371": 1, "374": 1, "375": 1, "377": 1, "379": 1, "380": 1, "382": 1, "383": 1, "385": 1, "386": 1, "393": 1, "394": 1, "395": 1, "396": 1, "397": 1, "398": 1, "399": 1, "401": 1, "402": 1, "404": 1, "405": 1, "408": 1, "409": 1, "411": 1}};
+
+var filterCounterexample = function (hide) {
+ var tables = document.getElementsByClassName("code");
+ for (var t=0; t<tables.length; t++) {
+ var table = tables[t];
+ var file_id = table.getAttribute("data-fileid");
+ var lines_in_fid = relevant_lines[file_id];
+ if (!lines_in_fid) {
+ lines_in_fid = {};
+ }
+ var lines = table.getElementsByClassName("codeline");
+ for (var i=0; i<lines.length; i++) {
+ var el = lines[i];
+ var lineNo = el.getAttribute("data-linenumber");
+ if (!lines_in_fid[lineNo]) {
+ if (hide) {
+ el.setAttribute("hidden", "");
+ } else {
+ el.removeAttribute("hidden");
+ }
+ }
+ }
+ }
+}
+
+window.addEventListener("keydown", function (event) {
+ if (event.defaultPrevented) {
+ return;
+ }
+ // SHIFT + S
+ if (event.shiftKey && event.keyCode == 83) {
+ var checked = document.getElementsByName("showCounterexample")[0].checked;
+ filterCounterexample(!checked);
+ document.getElementsByName("showCounterexample")[0].click();
+ } else {
+ return;
+ }
+ event.preventDefault();
+}, true);
+
+document.addEventListener("DOMContentLoaded", function() {
+ document.querySelector('input[name="showCounterexample"]').onchange=
+ function (event) {
+ filterCounterexample(this.checked);
+ };
+});
+</script>
+
+<form>
+ <input type="checkbox" name="showCounterexample" id="showCounterexample" />
+ <label for="showCounterexample">
+ Show only relevant lines
+ </label>
+ <input type="checkbox" name="showArrows"
+ id="showArrows" style="margin-left: 10px" />
+ <label for="showArrows">
+ Show control flow arrows
+ </label>
+</form>
+
+<script type='text/javascript'>
+// Return range of numbers from a range [lower, upper).
+function range(lower, upper) {
+ var array = [];
+ for (var i = lower; i <= upper; ++i) {
+ array.push(i);
+ }
+ return array;
+}
+
+var getRelatedArrowIndices = function(pathId) {
+ // HTML numeration of events is a bit different than it is in the path.
+ // Everything is rotated one step to the right, so the last element
+ // (error diagnostic) has index 0.
+ if (pathId == 0) {
+ // arrowIndices has at least 2 elements
+ pathId = arrowIndices.length - 1;
+ }
+
+ return range(arrowIndices[pathId], arrowIndices[pathId - 1]);
+}
+
+var highlightArrowsForSelectedEvent = function() {
+ const selectedNum = findNum();
+ const arrowIndicesToHighlight = getRelatedArrowIndices(selectedNum);
+ arrowIndicesToHighlight.forEach((index) => {
+ var arrow = document.querySelector("#arrow" + index);
+ if(arrow) {
+ classListAdd(arrow, "selected")
+ }
+ });
+}
+
+var getAbsoluteBoundingRect = function(element) {
+ const relative = element.getBoundingClientRect();
+ return {
+ left: relative.left + window.pageXOffset,
+ right: relative.right + window.pageXOffset,
+ top: relative.top + window.pageYOffset,
+ bottom: relative.bottom + window.pageYOffset,
+ height: relative.height,
+ width: relative.width
+ };
+}
+
+var drawArrow = function(index) {
+ // This function is based on the great answer from SO:
+ // https://stackoverflow.com/a/39575674/11582326
+ var start = document.querySelector("#start" + index);
+ var end = document.querySelector("#end" + index);
+ var arrow = document.querySelector("#arrow" + index);
+
+ var startRect = getAbsoluteBoundingRect(start);
+ var endRect = getAbsoluteBoundingRect(end);
+
+ // It is an arrow from a token to itself, no need to visualize it.
+ if (startRect.top == endRect.top &&
+ startRect.left == endRect.left)
+ return;
+
+ // Each arrow is a very simple Bézier curve, with two nodes and
+ // two handles. So, we need to calculate four points in the window:
+ // * start node
+ var posStart = { x: 0, y: 0 };
+ // * end node
+ var posEnd = { x: 0, y: 0 };
+ // * handle for the start node
+ var startHandle = { x: 0, y: 0 };
+ // * handle for the end node
+ var endHandle = { x: 0, y: 0 };
+ // One can visualize it as follows:
+ //
+ // start handle
+ // /
+ // X"""_.-""""X
+ // .' \
+ // / start node
+ // |
+ // |
+ // | end node
+ // \ /
+ // `->X
+ // X-'
+ // \
+ // end handle
+ //
+ // NOTE: (0, 0) is the top left corner of the window.
+
+ // We have 3 similar, but still different scenarios to cover:
+ //
+ // 1. Two tokens on different lines.
+ // -xxx
+ // /
+ // \
+ // -> xxx
+ // In this situation, we draw arrow on the left curving to the left.
+ // 2. Two tokens on the same line, and the destination is on the right.
+ // ____
+ // / \
+ // / V
+ // xxx xxx
+ // In this situation, we draw arrow above curving upwards.
+ // 3. Two tokens on the same line, and the destination is on the left.
+ // xxx xxx
+ // ^ /
+ // \____/
+ // In this situation, we draw arrow below curving downwards.
+ const onDifferentLines = startRect.top <= endRect.top - 5 ||
+ startRect.top >= endRect.top + 5;
+ const leftToRight = startRect.left < endRect.left;
+
+ // NOTE: various magic constants are chosen empirically for
+ // better positioning and look
+ if (onDifferentLines) {
+ // Case #1
+ const topToBottom = startRect.top < endRect.top;
+ posStart.x = startRect.left - 1;
+ // We don't want to start it at the top left corner of the token,
+ // it doesn't feel like this is where the arrow comes from.
+ // For this reason, we start it in the middle of the left side
+ // of the token.
+ posStart.y = startRect.top + startRect.height / 2;
+
+ // End node has arrow head and we give it a bit more space.
+ posEnd.x = endRect.left - 4;
+ posEnd.y = endRect.top;
+
+ // Utility object with x and y offsets for handles.
+ var curvature = {
+ // We want bottom-to-top arrow to curve a bit more, so it doesn't
+ // overlap much with top-to-bottom curves (much more frequent).
+ x: topToBottom ? 15 : 25,
+ y: Math.min((posEnd.y - posStart.y) / 3, 10)
+ }
+
+ // When destination is on the different line, we can make a
+ // curvier arrow because we have space for it.
+ // So, instead of using
+ //
+ // startHandle.x = posStart.x - curvature.x
+ // endHandle.x = posEnd.x - curvature.x
+ //
+ // We use the leftmost of these two values for both handles.
+ startHandle.x = Math.min(posStart.x, posEnd.x) - curvature.x;
+ endHandle.x = startHandle.x;
+
+ // Curving downwards from the start node...
+ startHandle.y = posStart.y + curvature.y;
+ // ... and upwards from the end node.
+ endHandle.y = posEnd.y - curvature.y;
+
+ } else if (leftToRight) {
+ // Case #2
+ // Starting from the top right corner...
+ posStart.x = startRect.right - 1;
+ posStart.y = startRect.top;
+
+ // ...and ending at the top left corner of the end token.
+ posEnd.x = endRect.left + 1;
+ posEnd.y = endRect.top - 1;
+
+ // Utility object with x and y offsets for handles.
+ var curvature = {
+ x: Math.min((posEnd.x - posStart.x) / 3, 15),
+ y: 5
+ }
+
+ // Curving to the right...
+ startHandle.x = posStart.x + curvature.x;
+ // ... and upwards from the start node.
+ startHandle.y = posStart.y - curvature.y;
+
+ // And to the left...
+ endHandle.x = posEnd.x - curvature.x;
+ // ... and upwards from the end node.
+ endHandle.y = posEnd.y - curvature.y;
+
+ } else {
+ // Case #3
+ // Starting from the bottom right corner...
+ posStart.x = startRect.right;
+ posStart.y = startRect.bottom;
+
+ // ...and ending also at the bottom right corner, but of the end token.
+ posEnd.x = endRect.right - 1;
+ posEnd.y = endRect.bottom + 1;
+
+ // Utility object with x and y offsets for handles.
+ var curvature = {
+ x: Math.min((posStart.x - posEnd.x) / 3, 15),
+ y: 5
+ }
+
+ // Curving to the left...
+ startHandle.x = posStart.x - curvature.x;
+ // ... and downwards from the start node.
+ startHandle.y = posStart.y + curvature.y;
+
+ // And to the right...
+ endHandle.x = posEnd.x + curvature.x;
+ // ... and downwards from the end node.
+ endHandle.y = posEnd.y + curvature.y;
+ }
+
+ // Put it all together into a path.
+ // More information on the format:
+ // https://developer.mozilla.org/en-US/docs/Web/SVG/Tutorial/Paths
+ var pathStr = "M" + posStart.x + "," + posStart.y + " " +
+ "C" + startHandle.x + "," + startHandle.y + " " +
+ endHandle.x + "," + endHandle.y + " " +
+ posEnd.x + "," + posEnd.y;
+
+ arrow.setAttribute("d", pathStr);
+};
+
+var drawArrows = function() {
+ const numOfArrows = document.querySelectorAll("path[id^=arrow]").length;
+ for (var i = 0; i < numOfArrows; ++i) {
+ drawArrow(i);
+ }
+}
+
+var toggleArrows = function(event) {
+ const arrows = document.querySelector("#arrows");
+ if (event.target.checked) {
+ arrows.setAttribute("visibility", "visible");
+ } else {
+ arrows.setAttribute("visibility", "hidden");
+ }
+}
+
+window.addEventListener("resize", drawArrows);
+document.addEventListener("DOMContentLoaded", function() {
+ // Whenever we show invocation, locations change, i.e. we
+ // need to redraw arrows.
+ document
+ .querySelector('input[id="showinvocation"]')
+ .addEventListener("click", drawArrows);
+ // Hiding irrelevant lines also should cause arrow rerender.
+ document
+ .querySelector('input[name="showCounterexample"]')
+ .addEventListener("change", drawArrows);
+ document
+ .querySelector('input[name="showArrows"]')
+ .addEventListener("change", toggleArrows);
+ drawArrows();
+ // Default highlighting for the last event.
+ highlightArrowsForSelectedEvent();
+});
+</script>
+
+<script type='text/javascript'>
+var digitMatcher = new RegExp("[0-9]+");
+
+var querySelectorAllArray = function(selector) {
+ return Array.prototype.slice.call(
+ document.querySelectorAll(selector));
+}
+
+document.addEventListener("DOMContentLoaded", function() {
+ querySelectorAllArray(".PathNav > a").forEach(
+ function(currentValue, currentIndex) {
+ var hrefValue = currentValue.getAttribute("href");
+ currentValue.onclick = function() {
+ scrollTo(document.querySelector(hrefValue));
+ return false;
+ };
+ });
+});
+
+var findNum = function() {
+ var s = document.querySelector(".msg.selected");
+ if (!s || s.id == "EndPath") {
+ return 0;
+ }
+ var out = parseInt(digitMatcher.exec(s.id)[0]);
+ return out;
+};
+
+var classListAdd = function(el, theClass) {
+ if(!el.className.baseVal)
+ el.className += " " + theClass;
+ else
+ el.className.baseVal += " " + theClass;
+};
+
+var classListRemove = function(el, theClass) {
+ var className = (!el.className.baseVal) ?
+ el.className : el.className.baseVal;
+ className = className.replace(" " + theClass, "");
+ if(!el.className.baseVal)
+ el.className = className;
+ else
+ el.className.baseVal = className;
+};
+
+var scrollTo = function(el) {
+ querySelectorAllArray(".selected").forEach(function(s) {
+ classListRemove(s, "selected");
+ });
+ classListAdd(el, "selected");
+ window.scrollBy(0, el.getBoundingClientRect().top -
+ (window.innerHeight / 2));
+ highlightArrowsForSelectedEvent();
+};
+
+var move = function(num, up, numItems) {
+ if (num == 1 && up || num == numItems - 1 && !up) {
+ return 0;
+ } else if (num == 0 && up) {
+ return numItems - 1;
+ } else if (num == 0 && !up) {
+ return 1 % numItems;
+ }
+ return up ? num - 1 : num + 1;
+}
+
+var numToId = function(num) {
+ if (num == 0) {
+ return document.getElementById("EndPath")
+ }
+ return document.getElementById("Path" + num);
+};
+
+var navigateTo = function(up) {
+ var numItems = document.querySelectorAll(
+ ".line > .msgEvent, .line > .msgControl").length;
+ var currentSelected = findNum();
+ var newSelected = move(currentSelected, up, numItems);
+ var newEl = numToId(newSelected, numItems);
+
+ // Scroll element into center.
+ scrollTo(newEl);
+};
+
+window.addEventListener("keydown", function (event) {
+ if (event.defaultPrevented) {
+ return;
+ }
+ // key 'j'
+ if (event.keyCode == 74) {
+ navigateTo(/*up=*/false);
+ // key 'k'
+ } else if (event.keyCode == 75) {
+ navigateTo(/*up=*/true);
+ } else {
+ return;
+ }
+ event.preventDefault();
+}, true);
+</script>
+
+<script type='text/javascript'>
+
+var toggleHelp = function() {
+ var hint = document.querySelector("#tooltiphint");
+ var attributeName = "hidden";
+ if (hint.hasAttribute(attributeName)) {
+ hint.removeAttribute(attributeName);
+ } else {
+ hint.setAttribute("hidden", "true");
+ }
+};
+window.addEventListener("keydown", function (event) {
+ if (event.defaultPrevented) {
+ return;
+ }
+ if (event.key == "?") {
+ toggleHelp();
+ } else {
+ return;
+ }
+ event.preventDefault();
+});
+</script>
+
+<style type="text/css">
+ svg {
+ position:absolute;
+ top:0;
+ left:0;
+ height:100%;
+ width:100%;
+ pointer-events: none;
+ overflow: visible
+ }
+ .arrow {
+ stroke-opacity: 0.2;
+ stroke-width: 1;
+ marker-end: url(#arrowhead);
+ }
+
+ .arrow.selected {
+ stroke-opacity: 0.6;
+ stroke-width: 2;
+ marker-end: url(#arrowheadSelected);
+ }
+
+ .arrowhead {
+ orient: auto;
+ stroke: none;
+ opacity: 0.6;
+ fill: blue;
+ }
+</style>
+<svg xmlns="http://www.w3.org/2000/svg">
+ <defs>
+ <marker id="arrowheadSelected" class="arrowhead" opacity="0.6"
+ viewBox="0 0 10 10" refX="3" refY="5"
+ markerWidth="4" markerHeight="4">
+ <path d="M 0 0 L 10 5 L 0 10 z" />
+ </marker>
+ <marker id="arrowhead" class="arrowhead" opacity="0.2"
+ viewBox="0 0 10 10" refX="3" refY="5"
+ markerWidth="4" markerHeight="4">
+ <path d="M 0 0 L 10 5 L 0 10 z" />
+ </marker>
+ </defs>
+ <g id="arrows" fill="none" stroke="blue" visibility="hidden">
+ <path class="arrow" id="arrow0"/>
+ <path class="arrow" id="arrow1"/>
+ <path class="arrow" id="arrow2"/>
+ <path class="arrow" id="arrow3"/>
+ <path class="arrow" id="arrow4"/>
+ <path class="arrow" id="arrow5"/>
+ <path class="arrow" id="arrow6"/>
+ <path class="arrow" id="arrow7"/>
+ <path class="arrow" id="arrow8"/>
+ <path class="arrow" id="arrow9"/>
+ <path class="arrow" id="arrow10"/>
+ <path class="arrow" id="arrow11"/>
+ <path class="arrow" id="arrow12"/>
+ <path class="arrow" id="arrow13"/>
+ <path class="arrow" id="arrow14"/>
+ <path class="arrow" id="arrow15"/>
+ <path class="arrow" id="arrow16"/>
+ <path class="arrow" id="arrow17"/>
+ <path class="arrow" id="arrow18"/>
+ <path class="arrow" id="arrow19"/>
+ <path class="arrow" id="arrow20"/>
+ <path class="arrow" id="arrow21"/>
+ <path class="arrow" id="arrow22"/>
+ <path class="arrow" id="arrow23"/>
+ <path class="arrow" id="arrow24"/>
+ <path class="arrow" id="arrow25"/>
+ <path class="arrow" id="arrow26"/>
+ <path class="arrow" id="arrow27"/>
+ <path class="arrow" id="arrow28"/>
+ <path class="arrow" id="arrow29"/>
+ <path class="arrow" id="arrow30"/>
+ <path class="arrow" id="arrow31"/>
+ <path class="arrow" id="arrow32"/>
+ <path class="arrow" id="arrow33"/>
+ <path class="arrow" id="arrow34"/>
+ <path class="arrow" id="arrow35"/>
+ <path class="arrow" id="arrow36"/>
+ <path class="arrow" id="arrow37"/>
+ <path class="arrow" id="arrow38"/>
+ <path class="arrow" id="arrow39"/>
+ <path class="arrow" id="arrow40"/>
+ <path class="arrow" id="arrow41"/>
+ <path class="arrow" id="arrow42"/>
+ <path class="arrow" id="arrow43"/>
+ <path class="arrow" id="arrow44"/>
+ <path class="arrow" id="arrow45"/>
+ <path class="arrow" id="arrow46"/>
+ <path class="arrow" id="arrow47"/>
+ <path class="arrow" id="arrow48"/>
+ <path class="arrow" id="arrow49"/>
+ <path class="arrow" id="arrow50"/>
+ <path class="arrow" id="arrow51"/>
+ <path class="arrow" id="arrow52"/>
+ <path class="arrow" id="arrow53"/>
+ <path class="arrow" id="arrow54"/>
+ <path class="arrow" id="arrow55"/>
+ <path class="arrow" id="arrow56"/>
+ <path class="arrow" id="arrow57"/>
+ <path class="arrow" id="arrow58"/>
+ <path class="arrow" id="arrow59"/>
+ <path class="arrow" id="arrow60"/>
+ <path class="arrow" id="arrow61"/>
+ <path class="arrow" id="arrow62"/>
+ <path class="arrow" id="arrow63"/>
+ <path class="arrow" id="arrow64"/>
+ <path class="arrow" id="arrow65"/>
+ <path class="arrow" id="arrow66"/>
+ <path class="arrow" id="arrow67"/>
+ <path class="arrow" id="arrow68"/>
+ <path class="arrow" id="arrow69"/>
+ <path class="arrow" id="arrow70"/>
+ <path class="arrow" id="arrow71"/>
+ <path class="arrow" id="arrow72"/>
+ <path class="arrow" id="arrow73"/>
+ <path class="arrow" id="arrow74"/>
+ <path class="arrow" id="arrow75"/>
+ <path class="arrow" id="arrow76"/>
+ <path class="arrow" id="arrow77"/>
+ <path class="arrow" id="arrow78"/>
+ <path class="arrow" id="arrow79"/>
+ <path class="arrow" id="arrow80"/>
+ <path class="arrow" id="arrow81"/>
+ <path class="arrow" id="arrow82"/>
+ <path class="arrow" id="arrow83"/>
+ <path class="arrow" id="arrow84"/>
+ <path class="arrow" id="arrow85"/>
+ <path class="arrow" id="arrow86"/>
+ <path class="arrow" id="arrow87"/>
+ <path class="arrow" id="arrow88"/>
+ <path class="arrow" id="arrow89"/>
+ <path class="arrow" id="arrow90"/>
+ <path class="arrow" id="arrow91"/>
+ <path class="arrow" id="arrow92"/>
+ <path class="arrow" id="arrow93"/>
+ <path class="arrow" id="arrow94"/>
+ <path class="arrow" id="arrow95"/>
+ <path class="arrow" id="arrow96"/>
+ <path class="arrow" id="arrow97"/>
+ <path class="arrow" id="arrow98"/>
+ <path class="arrow" id="arrow99"/>
+ <path class="arrow" id="arrow100"/>
+ <path class="arrow" id="arrow101"/>
+
+ </g>
+</svg>
+<script type='text/javascript'>
+const arrowIndices = [ 102,99,97,93,93,90,88,84,84,82,73,72,70,68,65,65,60,56,56,56,54,51,49,48,39,35,33,30,30,25,22,22,18,15,15,13,11,7,7,3,2,0 ]
+</script>
+<table class="code" data-fileid="1">
+<tr class="codeline" data-linenumber="1"><td class="num" id="LN1">1</td><td class="line"><span class='comment'>/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */</span></td></tr>
+<tr class="codeline" data-linenumber="2"><td class="num" id="LN2">2</td><td class="line"><span class='comment'>/*</span></td></tr>
+<tr class="codeline" data-linenumber="3"><td class="num" id="LN3">3</td><td class="line"> <span class='comment'>* pluma-spell-checker-dialog.c</span></td></tr>
+<tr class="codeline" data-linenumber="4"><td class="num" id="LN4">4</td><td class="line"> <span class='comment'>* This file is part of pluma</span></td></tr>
+<tr class="codeline" data-linenumber="5"><td class="num" id="LN5">5</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="6"><td class="num" id="LN6">6</td><td class="line"> <span class='comment'>* Copyright (C) 2002 Paolo Maggi</span></td></tr>
+<tr class="codeline" data-linenumber="7"><td class="num" id="LN7">7</td><td class="line"> <span class='comment'>* Copyright (C) 2012-2021 MATE Developers</span></td></tr>
+<tr class="codeline" data-linenumber="8"><td class="num" id="LN8">8</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="9"><td class="num" id="LN9">9</td><td class="line"> <span class='comment'>* This program is free software; you can redistribute it and/or modify</span></td></tr>
+<tr class="codeline" data-linenumber="10"><td class="num" id="LN10">10</td><td class="line"> <span class='comment'>* it under the terms of the GNU General Public License as published by</span></td></tr>
+<tr class="codeline" data-linenumber="11"><td class="num" id="LN11">11</td><td class="line"> <span class='comment'>* the Free Software Foundation; either version 2 of the License, or</span></td></tr>
+<tr class="codeline" data-linenumber="12"><td class="num" id="LN12">12</td><td class="line"> <span class='comment'>* (at your option) any later version.</span></td></tr>
+<tr class="codeline" data-linenumber="13"><td class="num" id="LN13">13</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="14"><td class="num" id="LN14">14</td><td class="line"> <span class='comment'>* This program is distributed in the hope that it will be useful,</span></td></tr>
+<tr class="codeline" data-linenumber="15"><td class="num" id="LN15">15</td><td class="line"> <span class='comment'>* but WITHOUT ANY WARRANTY; without even the implied warranty of</span></td></tr>
+<tr class="codeline" data-linenumber="16"><td class="num" id="LN16">16</td><td class="line"> <span class='comment'>* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></td></tr>
+<tr class="codeline" data-linenumber="17"><td class="num" id="LN17">17</td><td class="line"> <span class='comment'>* GNU General Public License for more details.</span></td></tr>
+<tr class="codeline" data-linenumber="18"><td class="num" id="LN18">18</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="19"><td class="num" id="LN19">19</td><td class="line"> <span class='comment'>* You should have received a copy of the GNU General Public License</span></td></tr>
+<tr class="codeline" data-linenumber="20"><td class="num" id="LN20">20</td><td class="line"> <span class='comment'>* along with this program; if not, write to the Free Software</span></td></tr>
+<tr class="codeline" data-linenumber="21"><td class="num" id="LN21">21</td><td class="line"> <span class='comment'>* Foundation, Inc., 51 Franklin St, Fifth Floor,</span></td></tr>
+<tr class="codeline" data-linenumber="22"><td class="num" id="LN22">22</td><td class="line"> <span class='comment'>* Boston, MA 02110-1301, USA.</span></td></tr>
+<tr class="codeline" data-linenumber="23"><td class="num" id="LN23">23</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="24"><td class="num" id="LN24">24</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="25"><td class="num" id="LN25">25</td><td class="line"><span class='comment'>/*</span></td></tr>
+<tr class="codeline" data-linenumber="26"><td class="num" id="LN26">26</td><td class="line"> <span class='comment'>* Modified by the pluma Team, 2002. See the AUTHORS file for a</span></td></tr>
+<tr class="codeline" data-linenumber="27"><td class="num" id="LN27">27</td><td class="line"> <span class='comment'>* list of people on the pluma Team.</span></td></tr>
+<tr class="codeline" data-linenumber="28"><td class="num" id="LN28">28</td><td class="line"> <span class='comment'>* See the ChangeLog files for a list of changes.</span></td></tr>
+<tr class="codeline" data-linenumber="29"><td class="num" id="LN29">29</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="30"><td class="num" id="LN30">30</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="31"><td class="num" id="LN31">31</td><td class="line"><span class='directive'>#ifdef <span class='macro'>HAVE_CONFIG_H<span class='macro_popup'>1</span></span></span></td></tr>
+<tr class="codeline" data-linenumber="32"><td class="num" id="LN32">32</td><td class="line"><span class='directive'>#include &lt;config.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="33"><td class="num" id="LN33">33</td><td class="line"><span class='directive'>#endif</span></td></tr>
+<tr class="codeline" data-linenumber="34"><td class="num" id="LN34">34</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="35"><td class="num" id="LN35">35</td><td class="line"><span class='directive'>#include &lt;string.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="36"><td class="num" id="LN36">36</td><td class="line"><span class='directive'>#include &lt;glib/gi18n.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="37"><td class="num" id="LN37">37</td><td class="line"><span class='directive'>#include &lt;gtk/gtk.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="38"><td class="num" id="LN38">38</td><td class="line"><span class='directive'>#include &lt;pluma/pluma-utils.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="39"><td class="num" id="LN39">39</td><td class="line"><span class='directive'>#include "pluma-spell-checker-dialog.h"</span></td></tr>
+<tr class="codeline" data-linenumber="40"><td class="num" id="LN40">40</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="41"><td class="num" id="LN41">41</td><td class="line"><span class='keyword'>struct</span> _PlumaSpellCheckerDialog</td></tr>
+<tr class="codeline" data-linenumber="42"><td class="num" id="LN42">42</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="43"><td class="num" id="LN43">43</td><td class="line"> GtkWindow parent_instance;</td></tr>
+<tr class="codeline" data-linenumber="44"><td class="num" id="LN44">44</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="45"><td class="num" id="LN45">45</td><td class="line"> PlumaSpellChecker *spell_checker;</td></tr>
+<tr class="codeline" data-linenumber="46"><td class="num" id="LN46">46</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="47"><td class="num" id="LN47">47</td><td class="line"> gchar *misspelled_word;</td></tr>
+<tr class="codeline" data-linenumber="48"><td class="num" id="LN48">48</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="49"><td class="num" id="LN49">49</td><td class="line"> GtkWidget *misspelled_word_label;</td></tr>
+<tr class="codeline" data-linenumber="50"><td class="num" id="LN50">50</td><td class="line"> GtkWidget *word_entry;</td></tr>
+<tr class="codeline" data-linenumber="51"><td class="num" id="LN51">51</td><td class="line"> GtkWidget *check_word_button;</td></tr>
+<tr class="codeline" data-linenumber="52"><td class="num" id="LN52">52</td><td class="line"> GtkWidget *ignore_button;</td></tr>
+<tr class="codeline" data-linenumber="53"><td class="num" id="LN53">53</td><td class="line"> GtkWidget *ignore_all_button;</td></tr>
+<tr class="codeline" data-linenumber="54"><td class="num" id="LN54">54</td><td class="line"> GtkWidget *change_button;</td></tr>
+<tr class="codeline" data-linenumber="55"><td class="num" id="LN55">55</td><td class="line"> GtkWidget *change_all_button;</td></tr>
+<tr class="codeline" data-linenumber="56"><td class="num" id="LN56">56</td><td class="line"> GtkWidget *add_word_button;</td></tr>
+<tr class="codeline" data-linenumber="57"><td class="num" id="LN57">57</td><td class="line"> GtkWidget *close_button;</td></tr>
+<tr class="codeline" data-linenumber="58"><td class="num" id="LN58">58</td><td class="line"> GtkWidget *suggestions_list;</td></tr>
+<tr class="codeline" data-linenumber="59"><td class="num" id="LN59">59</td><td class="line"> GtkWidget *language_label;</td></tr>
+<tr class="codeline" data-linenumber="60"><td class="num" id="LN60">60</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="61"><td class="num" id="LN61">61</td><td class="line"> GtkTreeModel *suggestions_list_model;</td></tr>
+<tr class="codeline" data-linenumber="62"><td class="num" id="LN62">62</td><td class="line">};</td></tr>
+<tr class="codeline" data-linenumber="63"><td class="num" id="LN63">63</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="64"><td class="num" id="LN64">64</td><td class="line"><span class='keyword'>enum</span></td></tr>
+<tr class="codeline" data-linenumber="65"><td class="num" id="LN65">65</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="66"><td class="num" id="LN66">66</td><td class="line"> IGNORE,</td></tr>
+<tr class="codeline" data-linenumber="67"><td class="num" id="LN67">67</td><td class="line"> IGNORE_ALL,</td></tr>
+<tr class="codeline" data-linenumber="68"><td class="num" id="LN68">68</td><td class="line"> CHANGE,</td></tr>
+<tr class="codeline" data-linenumber="69"><td class="num" id="LN69">69</td><td class="line"> CHANGE_ALL,</td></tr>
+<tr class="codeline" data-linenumber="70"><td class="num" id="LN70">70</td><td class="line"> ADD_WORD_TO_PERSONAL,</td></tr>
+<tr class="codeline" data-linenumber="71"><td class="num" id="LN71">71</td><td class="line"> LAST_SIGNAL</td></tr>
+<tr class="codeline" data-linenumber="72"><td class="num" id="LN72">72</td><td class="line">};</td></tr>
+<tr class="codeline" data-linenumber="73"><td class="num" id="LN73">73</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="74"><td class="num" id="LN74">74</td><td class="line"><span class='keyword'>enum</span></td></tr>
+<tr class="codeline" data-linenumber="75"><td class="num" id="LN75">75</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="76"><td class="num" id="LN76">76</td><td class="line"> COLUMN_SUGGESTIONS,</td></tr>
+<tr class="codeline" data-linenumber="77"><td class="num" id="LN77">77</td><td class="line"> NUM_COLUMNS</td></tr>
+<tr class="codeline" data-linenumber="78"><td class="num" id="LN78">78</td><td class="line">};</td></tr>
+<tr class="codeline" data-linenumber="79"><td class="num" id="LN79">79</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="80"><td class="num" id="LN80">80</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span> update_suggestions_list_model (PlumaSpellCheckerDialog *dlg,</td></tr>
+<tr class="codeline" data-linenumber="81"><td class="num" id="LN81">81</td><td class="line"> GSList *suggestions);</td></tr>
+<tr class="codeline" data-linenumber="82"><td class="num" id="LN82">82</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="83"><td class="num" id="LN83">83</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span> word_entry_changed_handler (GtkEditable *editable,</td></tr>
+<tr class="codeline" data-linenumber="84"><td class="num" id="LN84">84</td><td class="line"> PlumaSpellCheckerDialog *dlg);</td></tr>
+<tr class="codeline" data-linenumber="85"><td class="num" id="LN85">85</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span> close_button_clicked_handler (GtkButton *button,</td></tr>
+<tr class="codeline" data-linenumber="86"><td class="num" id="LN86">86</td><td class="line"> PlumaSpellCheckerDialog *dlg);</td></tr>
+<tr class="codeline" data-linenumber="87"><td class="num" id="LN87">87</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span> suggestions_list_selection_changed_handler (GtkTreeSelection *selection,</td></tr>
+<tr class="codeline" data-linenumber="88"><td class="num" id="LN88">88</td><td class="line"> PlumaSpellCheckerDialog *dlg);</td></tr>
+<tr class="codeline" data-linenumber="89"><td class="num" id="LN89">89</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span> check_word_button_clicked_handler (GtkButton *button,</td></tr>
+<tr class="codeline" data-linenumber="90"><td class="num" id="LN90">90</td><td class="line"> PlumaSpellCheckerDialog *dlg);</td></tr>
+<tr class="codeline" data-linenumber="91"><td class="num" id="LN91">91</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span> add_word_button_clicked_handler (GtkButton *button,</td></tr>
+<tr class="codeline" data-linenumber="92"><td class="num" id="LN92">92</td><td class="line"> PlumaSpellCheckerDialog *dlg);</td></tr>
+<tr class="codeline" data-linenumber="93"><td class="num" id="LN93">93</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span> ignore_button_clicked_handler (GtkButton *button,</td></tr>
+<tr class="codeline" data-linenumber="94"><td class="num" id="LN94">94</td><td class="line"> PlumaSpellCheckerDialog *dlg);</td></tr>
+<tr class="codeline" data-linenumber="95"><td class="num" id="LN95">95</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span> ignore_all_button_clicked_handler (GtkButton *button,</td></tr>
+<tr class="codeline" data-linenumber="96"><td class="num" id="LN96">96</td><td class="line"> PlumaSpellCheckerDialog *dlg);</td></tr>
+<tr class="codeline" data-linenumber="97"><td class="num" id="LN97">97</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span> change_button_clicked_handler (GtkButton *button,</td></tr>
+<tr class="codeline" data-linenumber="98"><td class="num" id="LN98">98</td><td class="line"> PlumaSpellCheckerDialog *dlg);</td></tr>
+<tr class="codeline" data-linenumber="99"><td class="num" id="LN99">99</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span> change_all_button_clicked_handler (GtkButton *button,</td></tr>
+<tr class="codeline" data-linenumber="100"><td class="num" id="LN100">100</td><td class="line"> PlumaSpellCheckerDialog *dlg);</td></tr>
+<tr class="codeline" data-linenumber="101"><td class="num" id="LN101">101</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span> suggestions_list_row_activated_handler (GtkTreeView *view,</td></tr>
+<tr class="codeline" data-linenumber="102"><td class="num" id="LN102">102</td><td class="line"> GtkTreePath *path,</td></tr>
+<tr class="codeline" data-linenumber="103"><td class="num" id="LN103">103</td><td class="line"> GtkTreeViewColumn *column,</td></tr>
+<tr class="codeline" data-linenumber="104"><td class="num" id="LN104">104</td><td class="line"> PlumaSpellCheckerDialog *dlg);</td></tr>
+<tr class="codeline" data-linenumber="105"><td class="num" id="LN105">105</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="106"><td class="num" id="LN106">106</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="107"><td class="num" id="LN107">107</td><td class="line"><span class='keyword'>static</span> guint signals [LAST_SIGNAL] = { 0 };</td></tr>
+<tr class="codeline" data-linenumber="108"><td class="num" id="LN108">108</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="109"><td class="num" id="LN109">109</td><td class="line"><span class='macro'>G_DEFINE_TYPE(PlumaSpellCheckerDialog, pluma_spell_checker_dialog, GTK_TYPE_WINDOW)<span class='macro_popup'>static void pluma_spell_checker_dialog_init (PlumaSpellCheckerDialog<br> *self); static void pluma_spell_checker_dialog_class_init (PlumaSpellCheckerDialogClass<br> *klass); static GType pluma_spell_checker_dialog_get_type_once<br> (void); static gpointer pluma_spell_checker_dialog_parent_class<br> = ((void*)0); static gint PlumaSpellCheckerDialog_private_offset<br>; static void pluma_spell_checker_dialog_class_intern_init (gpointer<br> klass) { pluma_spell_checker_dialog_parent_class = g_type_class_peek_parent<br> (klass); if (PlumaSpellCheckerDialog_private_offset != 0) g_type_class_adjust_private_offset<br> (klass, &amp;PlumaSpellCheckerDialog_private_offset); pluma_spell_checker_dialog_class_init<br> ((PlumaSpellCheckerDialogClass*) klass); } __attribute__ ((__unused__<br>)) static inline gpointer pluma_spell_checker_dialog_get_instance_private<br> (PlumaSpellCheckerDialog *self) { return (((gpointer) ((guint8<br>*) (self) + (glong) (PlumaSpellCheckerDialog_private_offset))<br>)); } GType pluma_spell_checker_dialog_get_type (void) { static<br> gsize static_g_define_type_id = 0; if ((__extension__ ({ _Static_assert<br> (sizeof *(&amp;static_g_define_type_id) == sizeof (gpointer)<br>, "Expression evaluates to false"); (void) (0 ? (gpointer) *(<br>&amp;static_g_define_type_id) : ((void*)0)); (!(__extension__<br> ({ _Static_assert (sizeof *(&amp;static_g_define_type_id) ==<br> sizeof (gpointer), "Expression evaluates to false"); __typeof__<br> (*(&amp;static_g_define_type_id)) gapg_temp_newval; __typeof__<br> ((&amp;static_g_define_type_id)) gapg_temp_atomic = (&amp;static_g_define_type_id<br>); __atomic_load (gapg_temp_atomic, &amp;gapg_temp_newval, 5)<br>; gapg_temp_newval; })) &amp;&amp; g_once_init_enter (&amp;static_g_define_type_id<br>)); }))) { GType g_define_type_id = pluma_spell_checker_dialog_get_type_once<br> (); (__extension__ ({ _Static_assert (sizeof *(&amp;static_g_define_type_id<br>) == sizeof (gpointer), "Expression evaluates to false"); 0 ?<br> (void) (*(&amp;static_g_define_type_id) = (g_define_type_id)<br>) : (void) 0; g_once_init_leave ((&amp;static_g_define_type_id<br>), (gsize) (g_define_type_id)); })); } return static_g_define_type_id<br>; } __attribute__ ((__noinline__)) static GType pluma_spell_checker_dialog_get_type_once<br> (void) { GType g_define_type_id = g_type_register_static_simple<br> ((gtk_window_get_type ()), g_intern_static_string ("PlumaSpellCheckerDialog"<br>), sizeof (PlumaSpellCheckerDialogClass), (GClassInitFunc)(void<br> (*)(void)) pluma_spell_checker_dialog_class_intern_init, sizeof<br> (PlumaSpellCheckerDialog), (GInstanceInitFunc)(void (*)(void<br>)) pluma_spell_checker_dialog_init, (GTypeFlags) 0); { {{};} }<br> return g_define_type_id; }</span></span></td></tr>
+<tr class="codeline" data-linenumber="110"><td class="num" id="LN110">110</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="111"><td class="num" id="LN111">111</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="112"><td class="num" id="LN112">112</td><td class="line">pluma_spell_checker_dialog_dispose (GObject *object)</td></tr>
+<tr class="codeline" data-linenumber="113"><td class="num" id="LN113">113</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="114"><td class="num" id="LN114">114</td><td class="line"> PlumaSpellCheckerDialog *dlg = <span class='macro'>PLUMA_SPELL_CHECKER_DIALOG (object)<span class='macro_popup'>((((PlumaSpellCheckerDialog*) (void *) ((object)))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="115"><td class="num" id="LN115">115</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="116"><td class="num" id="LN116">116</td><td class="line"> <span class='keyword'>if</span> (dlg-&gt;spell_checker != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="117"><td class="num" id="LN117">117</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="118"><td class="num" id="LN118">118</td><td class="line"> g_object_unref (dlg-&gt;spell_checker);</td></tr>
+<tr class="codeline" data-linenumber="119"><td class="num" id="LN119">119</td><td class="line"> dlg-&gt;spell_checker = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="120"><td class="num" id="LN120">120</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="121"><td class="num" id="LN121">121</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="122"><td class="num" id="LN122">122</td><td class="line"> <span class='keyword'>if</span> (dlg-&gt;misspelled_word != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="123"><td class="num" id="LN123">123</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="124"><td class="num" id="LN124">124</td><td class="line"> g_free (dlg-&gt;misspelled_word);</td></tr>
+<tr class="codeline" data-linenumber="125"><td class="num" id="LN125">125</td><td class="line"> dlg-&gt;misspelled_word = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="126"><td class="num" id="LN126">126</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="127"><td class="num" id="LN127">127</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="128"><td class="num" id="LN128">128</td><td class="line"> <span class='macro'>G_OBJECT_CLASS (pluma_spell_checker_dialog_parent_class)<span class='macro_popup'>((((GObjectClass*) (void *) ((pluma_spell_checker_dialog_parent_class<br>)))))</span></span>-&gt;dispose (object);</td></tr>
+<tr class="codeline" data-linenumber="129"><td class="num" id="LN129">129</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="130"><td class="num" id="LN130">130</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="131"><td class="num" id="LN131">131</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="132"><td class="num" id="LN132">132</td><td class="line">pluma_spell_checker_dialog_class_init (PlumaSpellCheckerDialogClass * klass)</td></tr>
+<tr class="codeline" data-linenumber="133"><td class="num" id="LN133">133</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="134"><td class="num" id="LN134">134</td><td class="line"> GObjectClass *object_class;</td></tr>
+<tr class="codeline" data-linenumber="135"><td class="num" id="LN135">135</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="136"><td class="num" id="LN136">136</td><td class="line"> object_class = <span class='macro'>G_OBJECT_CLASS (klass)<span class='macro_popup'>((((GObjectClass*) (void *) ((klass)))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="137"><td class="num" id="LN137">137</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="138"><td class="num" id="LN138">138</td><td class="line"> object_class-&gt;dispose = pluma_spell_checker_dialog_dispose;</td></tr>
+<tr class="codeline" data-linenumber="139"><td class="num" id="LN139">139</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="140"><td class="num" id="LN140">140</td><td class="line"> signals[IGNORE] =</td></tr>
+<tr class="codeline" data-linenumber="141"><td class="num" id="LN141">141</td><td class="line"> g_signal_new (<span class='string_literal'>"ignore"</span>,</td></tr>
+<tr class="codeline" data-linenumber="142"><td class="num" id="LN142">142</td><td class="line"> <span class='macro'>G_OBJECT_CLASS_TYPE (object_class)<span class='macro_popup'>((((GTypeClass*) (object_class))-&gt;g_type))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="143"><td class="num" id="LN143">143</td><td class="line"> G_SIGNAL_RUN_LAST,</td></tr>
+<tr class="codeline" data-linenumber="144"><td class="num" id="LN144">144</td><td class="line"> <span class='macro'>G_STRUCT_OFFSET (PlumaSpellCheckerDialogClass, ignore)<span class='macro_popup'>((glong) __builtin_offsetof(PlumaSpellCheckerDialogClass, ignore<br>))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="145"><td class="num" id="LN145">145</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="146"><td class="num" id="LN146">146</td><td class="line"> <span class='macro'>G_TYPE_NONE<span class='macro_popup'>((GType) ((1) &lt;&lt; (2)))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="147"><td class="num" id="LN147">147</td><td class="line"> 1,</td></tr>
+<tr class="codeline" data-linenumber="148"><td class="num" id="LN148">148</td><td class="line"> <span class='macro'>G_TYPE_STRING<span class='macro_popup'>((GType) ((16) &lt;&lt; (2)))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="149"><td class="num" id="LN149">149</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="150"><td class="num" id="LN150">150</td><td class="line"> signals[IGNORE_ALL] =</td></tr>
+<tr class="codeline" data-linenumber="151"><td class="num" id="LN151">151</td><td class="line"> g_signal_new (<span class='string_literal'>"ignore_all"</span>,</td></tr>
+<tr class="codeline" data-linenumber="152"><td class="num" id="LN152">152</td><td class="line"> <span class='macro'>G_OBJECT_CLASS_TYPE (object_class)<span class='macro_popup'>((((GTypeClass*) (object_class))-&gt;g_type))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="153"><td class="num" id="LN153">153</td><td class="line"> G_SIGNAL_RUN_LAST,</td></tr>
+<tr class="codeline" data-linenumber="154"><td class="num" id="LN154">154</td><td class="line"> <span class='macro'>G_STRUCT_OFFSET (PlumaSpellCheckerDialogClass, ignore_all)<span class='macro_popup'>((glong) __builtin_offsetof(PlumaSpellCheckerDialogClass, ignore_all<br>))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="155"><td class="num" id="LN155">155</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="156"><td class="num" id="LN156">156</td><td class="line"> <span class='macro'>G_TYPE_NONE<span class='macro_popup'>((GType) ((1) &lt;&lt; (2)))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="157"><td class="num" id="LN157">157</td><td class="line"> 1,</td></tr>
+<tr class="codeline" data-linenumber="158"><td class="num" id="LN158">158</td><td class="line"> <span class='macro'>G_TYPE_STRING<span class='macro_popup'>((GType) ((16) &lt;&lt; (2)))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="159"><td class="num" id="LN159">159</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="160"><td class="num" id="LN160">160</td><td class="line"> signals[CHANGE] =</td></tr>
+<tr class="codeline" data-linenumber="161"><td class="num" id="LN161">161</td><td class="line"> g_signal_new (<span class='string_literal'>"change"</span>,</td></tr>
+<tr class="codeline" data-linenumber="162"><td class="num" id="LN162">162</td><td class="line"> <span class='macro'>G_OBJECT_CLASS_TYPE (object_class)<span class='macro_popup'>((((GTypeClass*) (object_class))-&gt;g_type))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="163"><td class="num" id="LN163">163</td><td class="line"> G_SIGNAL_RUN_LAST,</td></tr>
+<tr class="codeline" data-linenumber="164"><td class="num" id="LN164">164</td><td class="line"> <span class='macro'>G_STRUCT_OFFSET (PlumaSpellCheckerDialogClass, change)<span class='macro_popup'>((glong) __builtin_offsetof(PlumaSpellCheckerDialogClass, change<br>))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="165"><td class="num" id="LN165">165</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="166"><td class="num" id="LN166">166</td><td class="line"> <span class='macro'>G_TYPE_NONE<span class='macro_popup'>((GType) ((1) &lt;&lt; (2)))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="167"><td class="num" id="LN167">167</td><td class="line"> 2,</td></tr>
+<tr class="codeline" data-linenumber="168"><td class="num" id="LN168">168</td><td class="line"> <span class='macro'>G_TYPE_STRING<span class='macro_popup'>((GType) ((16) &lt;&lt; (2)))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="169"><td class="num" id="LN169">169</td><td class="line"> <span class='macro'>G_TYPE_STRING<span class='macro_popup'>((GType) ((16) &lt;&lt; (2)))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="170"><td class="num" id="LN170">170</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="171"><td class="num" id="LN171">171</td><td class="line"> signals[CHANGE_ALL] =</td></tr>
+<tr class="codeline" data-linenumber="172"><td class="num" id="LN172">172</td><td class="line"> g_signal_new (<span class='string_literal'>"change_all"</span>,</td></tr>
+<tr class="codeline" data-linenumber="173"><td class="num" id="LN173">173</td><td class="line"> <span class='macro'>G_OBJECT_CLASS_TYPE (object_class)<span class='macro_popup'>((((GTypeClass*) (object_class))-&gt;g_type))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="174"><td class="num" id="LN174">174</td><td class="line"> G_SIGNAL_RUN_LAST,</td></tr>
+<tr class="codeline" data-linenumber="175"><td class="num" id="LN175">175</td><td class="line"> <span class='macro'>G_STRUCT_OFFSET (PlumaSpellCheckerDialogClass, change_all)<span class='macro_popup'>((glong) __builtin_offsetof(PlumaSpellCheckerDialogClass, change_all<br>))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="176"><td class="num" id="LN176">176</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="177"><td class="num" id="LN177">177</td><td class="line"> <span class='macro'>G_TYPE_NONE<span class='macro_popup'>((GType) ((1) &lt;&lt; (2)))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="178"><td class="num" id="LN178">178</td><td class="line"> 2,</td></tr>
+<tr class="codeline" data-linenumber="179"><td class="num" id="LN179">179</td><td class="line"> <span class='macro'>G_TYPE_STRING<span class='macro_popup'>((GType) ((16) &lt;&lt; (2)))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="180"><td class="num" id="LN180">180</td><td class="line"> <span class='macro'>G_TYPE_STRING<span class='macro_popup'>((GType) ((16) &lt;&lt; (2)))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="181"><td class="num" id="LN181">181</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="182"><td class="num" id="LN182">182</td><td class="line"> signals[ADD_WORD_TO_PERSONAL] =</td></tr>
+<tr class="codeline" data-linenumber="183"><td class="num" id="LN183">183</td><td class="line"> g_signal_new (<span class='string_literal'>"add_word_to_personal"</span>,</td></tr>
+<tr class="codeline" data-linenumber="184"><td class="num" id="LN184">184</td><td class="line"> <span class='macro'>G_OBJECT_CLASS_TYPE (object_class)<span class='macro_popup'>((((GTypeClass*) (object_class))-&gt;g_type))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="185"><td class="num" id="LN185">185</td><td class="line"> G_SIGNAL_RUN_LAST,</td></tr>
+<tr class="codeline" data-linenumber="186"><td class="num" id="LN186">186</td><td class="line"> <span class='macro'>G_STRUCT_OFFSET (PlumaSpellCheckerDialogClass, add_word_to_personal)<span class='macro_popup'>((glong) __builtin_offsetof(PlumaSpellCheckerDialogClass, add_word_to_personal<br>))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="187"><td class="num" id="LN187">187</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="188"><td class="num" id="LN188">188</td><td class="line"> <span class='macro'>G_TYPE_NONE<span class='macro_popup'>((GType) ((1) &lt;&lt; (2)))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="189"><td class="num" id="LN189">189</td><td class="line"> 1,</td></tr>
+<tr class="codeline" data-linenumber="190"><td class="num" id="LN190">190</td><td class="line"> <span class='macro'>G_TYPE_STRING<span class='macro_popup'>((GType) ((16) &lt;&lt; (2)))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="191"><td class="num" id="LN191">191</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="192"><td class="num" id="LN192">192</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="193"><td class="num" id="LN193">193</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="194"><td class="num" id="LN194">194</td><td class="line">create_dialog (PlumaSpellCheckerDialog *dlg,</td></tr>
+<tr class="codeline" data-linenumber="195"><td class="num" id="LN195">195</td><td class="line"> <span class='keyword'>const</span> gchar *data_dir)</td></tr>
+<tr class="codeline" data-linenumber="196"><td class="num" id="LN196">196</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="197"><td class="num" id="LN197">197</td><td class="line"> GtkWidget *error_widget;</td></tr>
+<tr class="codeline" data-linenumber="198"><td class="num" id="LN198">198</td><td class="line"> GtkWidget *content;</td></tr>
+<tr class="codeline" data-linenumber="199"><td class="num" id="LN199">199</td><td class="line"> GtkTreeViewColumn *column;</td></tr>
+<tr class="codeline" data-linenumber="200"><td class="num" id="LN200">200</td><td class="line"> GtkCellRenderer *cell;</td></tr>
+<tr class="codeline" data-linenumber="201"><td class="num" id="LN201">201</td><td class="line"> GtkTreeSelection *selection;</td></tr>
+<tr class="codeline" data-linenumber="202"><td class="num" id="LN202">202</td><td class="line"> gchar *root_objects[] = {</td></tr>
+<tr class="codeline" data-linenumber="203"><td class="num" id="LN203">203</td><td class="line"> <span class='string_literal'>"content"</span>,</td></tr>
+<tr class="codeline" data-linenumber="204"><td class="num" id="LN204">204</td><td class="line"> <span class='string_literal'>"check_word_image"</span>,</td></tr>
+<tr class="codeline" data-linenumber="205"><td class="num" id="LN205">205</td><td class="line"> <span class='string_literal'>"add_word_image"</span>,</td></tr>
+<tr class="codeline" data-linenumber="206"><td class="num" id="LN206">206</td><td class="line"> <span class='string_literal'>"ignore_image"</span>,</td></tr>
+<tr class="codeline" data-linenumber="207"><td class="num" id="LN207">207</td><td class="line"> <span class='string_literal'>"change_image"</span>,</td></tr>
+<tr class="codeline" data-linenumber="208"><td class="num" id="LN208">208</td><td class="line"> <span class='string_literal'>"ignore_all_image"</span>,</td></tr>
+<tr class="codeline" data-linenumber="209"><td class="num" id="LN209">209</td><td class="line"> <span class='string_literal'>"change_all_image"</span>,</td></tr>
+<tr class="codeline" data-linenumber="210"><td class="num" id="LN210">210</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="211"><td class="num" id="LN211">211</td><td class="line"> };</td></tr>
+<tr class="codeline" data-linenumber="212"><td class="num" id="LN212">212</td><td class="line"> gboolean ret;</td></tr>
+<tr class="codeline" data-linenumber="213"><td class="num" id="LN213">213</td><td class="line"> gchar *ui_file;</td></tr>
+<tr class="codeline" data-linenumber="214"><td class="num" id="LN214">214</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="215"><td class="num" id="LN215">215</td><td class="line"> <span class='macro'>g_return_if_fail (dlg != NULL)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_43<br>; if (dlg != ((void*)0)) _g_boolean_var_43 = 1; else _g_boolean_var_43<br> = 0; _g_boolean_var_43; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "dlg != NULL"); return<br>; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="216"><td class="num" id="LN216">216</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="217"><td class="num" id="LN217">217</td><td class="line"> dlg-&gt;spell_checker = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="218"><td class="num" id="LN218">218</td><td class="line"> dlg-&gt;misspelled_word = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="219"><td class="num" id="LN219">219</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="220"><td class="num" id="LN220">220</td><td class="line"> ui_file = g_build_filename (data_dir, <span class='string_literal'>"spell-checker.ui"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="221"><td class="num" id="LN221">221</td><td class="line"> ret = pluma_utils_get_ui_objects (ui_file,</td></tr>
+<tr class="codeline" data-linenumber="222"><td class="num" id="LN222">222</td><td class="line"> root_objects,</td></tr>
+<tr class="codeline" data-linenumber="223"><td class="num" id="LN223">223</td><td class="line"> &amp;error_widget,</td></tr>
+<tr class="codeline" data-linenumber="224"><td class="num" id="LN224">224</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="225"><td class="num" id="LN225">225</td><td class="line"> <span class='string_literal'>"content"</span>, &amp;content,</td></tr>
+<tr class="codeline" data-linenumber="226"><td class="num" id="LN226">226</td><td class="line"> <span class='string_literal'>"misspelled_word_label"</span>, &amp;dlg-&gt;misspelled_word_label,</td></tr>
+<tr class="codeline" data-linenumber="227"><td class="num" id="LN227">227</td><td class="line"> <span class='string_literal'>"word_entry"</span>, &amp;dlg-&gt;word_entry,</td></tr>
+<tr class="codeline" data-linenumber="228"><td class="num" id="LN228">228</td><td class="line"> <span class='string_literal'>"check_word_button"</span>, &amp;dlg-&gt;check_word_button,</td></tr>
+<tr class="codeline" data-linenumber="229"><td class="num" id="LN229">229</td><td class="line"> <span class='string_literal'>"ignore_button"</span>, &amp;dlg-&gt;ignore_button,</td></tr>
+<tr class="codeline" data-linenumber="230"><td class="num" id="LN230">230</td><td class="line"> <span class='string_literal'>"ignore_all_button"</span>, &amp;dlg-&gt;ignore_all_button,</td></tr>
+<tr class="codeline" data-linenumber="231"><td class="num" id="LN231">231</td><td class="line"> <span class='string_literal'>"change_button"</span>, &amp;dlg-&gt;change_button,</td></tr>
+<tr class="codeline" data-linenumber="232"><td class="num" id="LN232">232</td><td class="line"> <span class='string_literal'>"change_all_button"</span>, &amp;dlg-&gt;change_all_button,</td></tr>
+<tr class="codeline" data-linenumber="233"><td class="num" id="LN233">233</td><td class="line"> <span class='string_literal'>"add_word_button"</span>, &amp;dlg-&gt;add_word_button,</td></tr>
+<tr class="codeline" data-linenumber="234"><td class="num" id="LN234">234</td><td class="line"> <span class='string_literal'>"close_button"</span>, &amp;dlg-&gt;close_button,</td></tr>
+<tr class="codeline" data-linenumber="235"><td class="num" id="LN235">235</td><td class="line"> <span class='string_literal'>"suggestions_list"</span>, &amp;dlg-&gt;suggestions_list,</td></tr>
+<tr class="codeline" data-linenumber="236"><td class="num" id="LN236">236</td><td class="line"> <span class='string_literal'>"language_label"</span>, &amp;dlg-&gt;language_label,</td></tr>
+<tr class="codeline" data-linenumber="237"><td class="num" id="LN237">237</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="238"><td class="num" id="LN238">238</td><td class="line"> g_free (ui_file);</td></tr>
+<tr class="codeline" data-linenumber="239"><td class="num" id="LN239">239</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="240"><td class="num" id="LN240">240</td><td class="line"> <span class='keyword'>if</span> (!ret)</td></tr>
+<tr class="codeline" data-linenumber="241"><td class="num" id="LN241">241</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="242"><td class="num" id="LN242">242</td><td class="line"> gtk_widget_show (error_widget);</td></tr>
+<tr class="codeline" data-linenumber="243"><td class="num" id="LN243">243</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="244"><td class="num" id="LN244">244</td><td class="line"> gtk_box_pack_start (<span class='macro'>GTK_BOX (gtk_dialog_get_content_area (GTK_DIALOG (dlg)))<span class='macro_popup'>((((GtkBox*) (void *) ((gtk_dialog_get_content_area (((((GtkDialog<br>*) (void *) ((dlg)))))))))))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="245"><td class="num" id="LN245">245</td><td class="line"> error_widget, <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>, <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>, 0);</td></tr>
+<tr class="codeline" data-linenumber="246"><td class="num" id="LN246">246</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="247"><td class="num" id="LN247">247</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="248"><td class="num" id="LN248">248</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="249"><td class="num" id="LN249">249</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="250"><td class="num" id="LN250">250</td><td class="line"> gtk_label_set_label (<span class='macro'>GTK_LABEL (dlg-&gt;misspelled_word_label)<span class='macro_popup'>((((GtkLabel*) (void *) ((dlg-&gt;misspelled_word_label)))))</span></span>, <span class='string_literal'>""</span>);</td></tr>
+<tr class="codeline" data-linenumber="251"><td class="num" id="LN251">251</td><td class="line"> gtk_widget_set_sensitive (dlg-&gt;word_entry, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="252"><td class="num" id="LN252">252</td><td class="line"> gtk_widget_set_sensitive (dlg-&gt;check_word_button, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="253"><td class="num" id="LN253">253</td><td class="line"> gtk_widget_set_sensitive (dlg-&gt;ignore_button, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="254"><td class="num" id="LN254">254</td><td class="line"> gtk_widget_set_sensitive (dlg-&gt;ignore_all_button, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="255"><td class="num" id="LN255">255</td><td class="line"> gtk_widget_set_sensitive (dlg-&gt;change_button, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="256"><td class="num" id="LN256">256</td><td class="line"> gtk_widget_set_sensitive (dlg-&gt;change_all_button, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="257"><td class="num" id="LN257">257</td><td class="line"> gtk_widget_set_sensitive (dlg-&gt;add_word_button, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="258"><td class="num" id="LN258">258</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="259"><td class="num" id="LN259">259</td><td class="line"> gtk_label_set_label (<span class='macro'>GTK_LABEL (dlg-&gt;language_label)<span class='macro_popup'>((((GtkLabel*) (void *) ((dlg-&gt;language_label)))))</span></span>, <span class='string_literal'>""</span>);</td></tr>
+<tr class="codeline" data-linenumber="260"><td class="num" id="LN260">260</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="261"><td class="num" id="LN261">261</td><td class="line"> gtk_container_add (<span class='macro'>GTK_CONTAINER (dlg)<span class='macro_popup'>((((GtkContainer*) (void *) ((dlg)))))</span></span>, content);</td></tr>
+<tr class="codeline" data-linenumber="262"><td class="num" id="LN262">262</td><td class="line"> g_object_unref (content);</td></tr>
+<tr class="codeline" data-linenumber="263"><td class="num" id="LN263">263</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="264"><td class="num" id="LN264">264</td><td class="line"> gtk_window_set_resizable (<span class='macro'>GTK_WINDOW (dlg)<span class='macro_popup'>((((GtkWindow*) (void *) ((dlg)))))</span></span>, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="265"><td class="num" id="LN265">265</td><td class="line"> gtk_window_set_title (<span class='macro'>GTK_WINDOW (dlg)<span class='macro_popup'>((((GtkWindow*) (void *) ((dlg)))))</span></span>, <span class='macro'>_(<span class='string_literal'>"Check Spelling"</span>)<span class='macro_popup'>dcgettext (((void*)0), "Check Spelling", 5)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="266"><td class="num" id="LN266">266</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="267"><td class="num" id="LN267">267</td><td class="line"> <span class='comment'>/* Suggestion list */</span></td></tr>
+<tr class="codeline" data-linenumber="268"><td class="num" id="LN268">268</td><td class="line"> dlg-&gt;suggestions_list_model = <span class='macro'>GTK_TREE_MODEL (<span class='macro_popup'>((((GtkTreeModel*) (void *) ((gtk_list_store_new (NUM_COLUMNS<br>, ((GType) ((16) &lt;&lt; (2)))))))))</span></span></td></tr>
+<tr class="codeline" data-linenumber="269"><td class="num" id="LN269">269</td><td class="line"> <span class='macro'>gtk_list_store_new (NUM_COLUMNS, G_TYPE_STRING))<span class='macro_popup'>((((GtkTreeModel*) (void *) ((gtk_list_store_new (NUM_COLUMNS<br>, ((GType) ((16) &lt;&lt; (2)))))))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="270"><td class="num" id="LN270">270</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="271"><td class="num" id="LN271">271</td><td class="line"> gtk_tree_view_set_model (<span class='macro'>GTK_TREE_VIEW (dlg-&gt;suggestions_list)<span class='macro_popup'>((((GtkTreeView*) (void *) ((dlg-&gt;suggestions_list)))))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="272"><td class="num" id="LN272">272</td><td class="line"> dlg-&gt;suggestions_list_model);</td></tr>
+<tr class="codeline" data-linenumber="273"><td class="num" id="LN273">273</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="274"><td class="num" id="LN274">274</td><td class="line"> <span class='comment'>/* Add the suggestions column */</span></td></tr>
+<tr class="codeline" data-linenumber="275"><td class="num" id="LN275">275</td><td class="line"> cell = gtk_cell_renderer_text_new ();</td></tr>
+<tr class="codeline" data-linenumber="276"><td class="num" id="LN276">276</td><td class="line"> column = gtk_tree_view_column_new_with_attributes (<span class='macro'>_(<span class='string_literal'>"Suggestions"</span>)<span class='macro_popup'>dcgettext (((void*)0), "Suggestions", 5)</span></span>, cell,</td></tr>
+<tr class="codeline" data-linenumber="277"><td class="num" id="LN277">277</td><td class="line"> <span class='string_literal'>"text"</span>, COLUMN_SUGGESTIONS, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="278"><td class="num" id="LN278">278</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="279"><td class="num" id="LN279">279</td><td class="line"> gtk_tree_view_append_column (<span class='macro'>GTK_TREE_VIEW (dlg-&gt;suggestions_list)<span class='macro_popup'>((((GtkTreeView*) (void *) ((dlg-&gt;suggestions_list)))))</span></span>, column);</td></tr>
+<tr class="codeline" data-linenumber="280"><td class="num" id="LN280">280</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="281"><td class="num" id="LN281">281</td><td class="line"> gtk_tree_view_set_search_column (<span class='macro'>GTK_TREE_VIEW (dlg-&gt;suggestions_list)<span class='macro_popup'>((((GtkTreeView*) (void *) ((dlg-&gt;suggestions_list)))))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="282"><td class="num" id="LN282">282</td><td class="line"> COLUMN_SUGGESTIONS);</td></tr>
+<tr class="codeline" data-linenumber="283"><td class="num" id="LN283">283</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="284"><td class="num" id="LN284">284</td><td class="line"> selection = gtk_tree_view_get_selection (<span class='macro'>GTK_TREE_VIEW (dlg-&gt;suggestions_list)<span class='macro_popup'>((((GtkTreeView*) (void *) ((dlg-&gt;suggestions_list)))))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="285"><td class="num" id="LN285">285</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="286"><td class="num" id="LN286">286</td><td class="line"> gtk_tree_selection_set_mode (selection, GTK_SELECTION_SINGLE);</td></tr>
+<tr class="codeline" data-linenumber="287"><td class="num" id="LN287">287</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="288"><td class="num" id="LN288">288</td><td class="line"> <span class='comment'>/* Set default button */</span></td></tr>
+<tr class="codeline" data-linenumber="289"><td class="num" id="LN289">289</td><td class="line"> gtk_widget_set_can_default (dlg-&gt;change_button, <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="290"><td class="num" id="LN290">290</td><td class="line"> gtk_widget_grab_default (dlg-&gt;change_button);</td></tr>
+<tr class="codeline" data-linenumber="291"><td class="num" id="LN291">291</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="292"><td class="num" id="LN292">292</td><td class="line"> gtk_entry_set_activates_default (<span class='macro'>GTK_ENTRY (dlg-&gt;word_entry)<span class='macro_popup'>((((GtkEntry*) (void *) ((dlg-&gt;word_entry)))))</span></span>, <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="293"><td class="num" id="LN293">293</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="294"><td class="num" id="LN294">294</td><td class="line"> gtk_button_set_image (<span class='macro'>GTK_BUTTON (dlg-&gt;close_button)<span class='macro_popup'>((((GtkButton*) (void *) ((dlg-&gt;close_button)))))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="295"><td class="num" id="LN295">295</td><td class="line"> gtk_image_new_from_icon_name (<span class='string_literal'>"window-close"</span>, GTK_ICON_SIZE_BUTTON));</td></tr>
+<tr class="codeline" data-linenumber="296"><td class="num" id="LN296">296</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="297"><td class="num" id="LN297">297</td><td class="line"> <span class='comment'>/* Connect signals */</span></td></tr>
+<tr class="codeline" data-linenumber="298"><td class="num" id="LN298">298</td><td class="line"> <span class='macro'>g_signal_connect (dlg-&gt;word_entry, <span class='string_literal'>"changed"</span>,<span class='macro_popup'>g_signal_connect_data ((dlg-&gt;word_entry), ("changed"), (((<br>GCallback) (word_entry_changed_handler))), (dlg), ((void*)0),<br> (GConnectFlags) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="299"><td class="num" id="LN299">299</td><td class="line"> <span class='macro'>G_CALLBACK (word_entry_changed_handler), dlg)<span class='macro_popup'>g_signal_connect_data ((dlg-&gt;word_entry), ("changed"), (((<br>GCallback) (word_entry_changed_handler))), (dlg), ((void*)0),<br> (GConnectFlags) 0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="300"><td class="num" id="LN300">300</td><td class="line"> <span class='macro'>g_signal_connect (dlg-&gt;close_button, <span class='string_literal'>"clicked"</span>,<span class='macro_popup'>g_signal_connect_data ((dlg-&gt;close_button), ("clicked"), (<br>((GCallback) (close_button_clicked_handler))), (dlg), ((void*<br>)0), (GConnectFlags) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="301"><td class="num" id="LN301">301</td><td class="line"> <span class='macro'>G_CALLBACK (close_button_clicked_handler), dlg)<span class='macro_popup'>g_signal_connect_data ((dlg-&gt;close_button), ("clicked"), (<br>((GCallback) (close_button_clicked_handler))), (dlg), ((void*<br>)0), (GConnectFlags) 0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="302"><td class="num" id="LN302">302</td><td class="line"> <span class='macro'>g_signal_connect (selection, <span class='string_literal'>"changed"</span>,<span class='macro_popup'>g_signal_connect_data ((selection), ("changed"), (((GCallback<br>) (suggestions_list_selection_changed_handler))), (dlg), ((void<br>*)0), (GConnectFlags) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="303"><td class="num" id="LN303">303</td><td class="line"> <span class='macro'>G_CALLBACK (suggestions_list_selection_changed_handler),<span class='macro_popup'>g_signal_connect_data ((selection), ("changed"), (((GCallback<br>) (suggestions_list_selection_changed_handler))), (dlg), ((void<br>*)0), (GConnectFlags) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="304"><td class="num" id="LN304">304</td><td class="line"> <span class='macro'>dlg)<span class='macro_popup'>g_signal_connect_data ((selection), ("changed"), (((GCallback<br>) (suggestions_list_selection_changed_handler))), (dlg), ((void<br>*)0), (GConnectFlags) 0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="305"><td class="num" id="LN305">305</td><td class="line"> <span class='macro'>g_signal_connect (dlg-&gt;check_word_button, <span class='string_literal'>"clicked"</span>,<span class='macro_popup'>g_signal_connect_data ((dlg-&gt;check_word_button), ("clicked"<br>), (((GCallback) (check_word_button_clicked_handler))), (dlg)<br>, ((void*)0), (GConnectFlags) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="306"><td class="num" id="LN306">306</td><td class="line"> <span class='macro'>G_CALLBACK (check_word_button_clicked_handler), dlg)<span class='macro_popup'>g_signal_connect_data ((dlg-&gt;check_word_button), ("clicked"<br>), (((GCallback) (check_word_button_clicked_handler))), (dlg)<br>, ((void*)0), (GConnectFlags) 0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="307"><td class="num" id="LN307">307</td><td class="line"> <span class='macro'>g_signal_connect (dlg-&gt;add_word_button, <span class='string_literal'>"clicked"</span>,<span class='macro_popup'>g_signal_connect_data ((dlg-&gt;add_word_button), ("clicked")<br>, (((GCallback) (add_word_button_clicked_handler))), (dlg), (<br>(void*)0), (GConnectFlags) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="308"><td class="num" id="LN308">308</td><td class="line"> <span class='macro'>G_CALLBACK (add_word_button_clicked_handler), dlg)<span class='macro_popup'>g_signal_connect_data ((dlg-&gt;add_word_button), ("clicked")<br>, (((GCallback) (add_word_button_clicked_handler))), (dlg), (<br>(void*)0), (GConnectFlags) 0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="309"><td class="num" id="LN309">309</td><td class="line"> <span class='macro'>g_signal_connect (dlg-&gt;ignore_button, <span class='string_literal'>"clicked"</span>,<span class='macro_popup'>g_signal_connect_data ((dlg-&gt;ignore_button), ("clicked"), (<br>((GCallback) (ignore_button_clicked_handler))), (dlg), ((void<br>*)0), (GConnectFlags) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="310"><td class="num" id="LN310">310</td><td class="line"> <span class='macro'>G_CALLBACK (ignore_button_clicked_handler), dlg)<span class='macro_popup'>g_signal_connect_data ((dlg-&gt;ignore_button), ("clicked"), (<br>((GCallback) (ignore_button_clicked_handler))), (dlg), ((void<br>*)0), (GConnectFlags) 0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="311"><td class="num" id="LN311">311</td><td class="line"> <span class='macro'>g_signal_connect (dlg-&gt;ignore_all_button, <span class='string_literal'>"clicked"</span>,<span class='macro_popup'>g_signal_connect_data ((dlg-&gt;ignore_all_button), ("clicked"<br>), (((GCallback) (ignore_all_button_clicked_handler))), (dlg)<br>, ((void*)0), (GConnectFlags) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="312"><td class="num" id="LN312">312</td><td class="line"> <span class='macro'>G_CALLBACK (ignore_all_button_clicked_handler), dlg)<span class='macro_popup'>g_signal_connect_data ((dlg-&gt;ignore_all_button), ("clicked"<br>), (((GCallback) (ignore_all_button_clicked_handler))), (dlg)<br>, ((void*)0), (GConnectFlags) 0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="313"><td class="num" id="LN313">313</td><td class="line"> <span class='macro'>g_signal_connect (dlg-&gt;change_button, <span class='string_literal'>"clicked"</span>,<span class='macro_popup'>g_signal_connect_data ((dlg-&gt;change_button), ("clicked"), (<br>((GCallback) (change_button_clicked_handler))), (dlg), ((void<br>*)0), (GConnectFlags) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="314"><td class="num" id="LN314">314</td><td class="line"> <span class='macro'>G_CALLBACK (change_button_clicked_handler), dlg)<span class='macro_popup'>g_signal_connect_data ((dlg-&gt;change_button), ("clicked"), (<br>((GCallback) (change_button_clicked_handler))), (dlg), ((void<br>*)0), (GConnectFlags) 0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="315"><td class="num" id="LN315">315</td><td class="line"> <span class='macro'>g_signal_connect (dlg-&gt;change_all_button, <span class='string_literal'>"clicked"</span>,<span class='macro_popup'>g_signal_connect_data ((dlg-&gt;change_all_button), ("clicked"<br>), (((GCallback) (change_all_button_clicked_handler))), (dlg)<br>, ((void*)0), (GConnectFlags) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="316"><td class="num" id="LN316">316</td><td class="line"> <span class='macro'>G_CALLBACK (change_all_button_clicked_handler), dlg)<span class='macro_popup'>g_signal_connect_data ((dlg-&gt;change_all_button), ("clicked"<br>), (((GCallback) (change_all_button_clicked_handler))), (dlg)<br>, ((void*)0), (GConnectFlags) 0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="317"><td class="num" id="LN317">317</td><td class="line"> <span class='macro'>g_signal_connect (dlg-&gt;suggestions_list, <span class='string_literal'>"row-activated"</span>,<span class='macro_popup'>g_signal_connect_data ((dlg-&gt;suggestions_list), ("row-activated"<br>), (((GCallback) (suggestions_list_row_activated_handler))), (<br>dlg), ((void*)0), (GConnectFlags) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="318"><td class="num" id="LN318">318</td><td class="line"> <span class='macro'>G_CALLBACK (suggestions_list_row_activated_handler), dlg)<span class='macro_popup'>g_signal_connect_data ((dlg-&gt;suggestions_list), ("row-activated"<br>), (((GCallback) (suggestions_list_row_activated_handler))), (<br>dlg), ((void*)0), (GConnectFlags) 0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="319"><td class="num" id="LN319">319</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="320"><td class="num" id="LN320">320</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="321"><td class="num" id="LN321">321</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="322"><td class="num" id="LN322">322</td><td class="line">pluma_spell_checker_dialog_init (PlumaSpellCheckerDialog *dlg)</td></tr>
+<tr class="codeline" data-linenumber="323"><td class="num" id="LN323">323</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="324"><td class="num" id="LN324">324</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="325"><td class="num" id="LN325">325</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="326"><td class="num" id="LN326">326</td><td class="line">GtkWidget *</td></tr>
+<tr class="codeline" data-linenumber="327"><td class="num" id="LN327">327</td><td class="line">pluma_spell_checker_dialog_new (<span class='keyword'>const</span> gchar *data_dir)</td></tr>
+<tr class="codeline" data-linenumber="328"><td class="num" id="LN328">328</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="329"><td class="num" id="LN329">329</td><td class="line"> PlumaSpellCheckerDialog *dlg;</td></tr>
+<tr class="codeline" data-linenumber="330"><td class="num" id="LN330">330</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="331"><td class="num" id="LN331">331</td><td class="line"> dlg = <span class='macro'>PLUMA_SPELL_CHECKER_DIALOG (<span class='macro_popup'>((((PlumaSpellCheckerDialog*) (void *) ((g_object_new ((pluma_spell_checker_dialog_get_type<br> ()), ((void*)0)))))))</span></span></td></tr>
+<tr class="codeline" data-linenumber="332"><td class="num" id="LN332">332</td><td class="line"> <span class='macro'>g_object_new (PLUMA_TYPE_SPELL_CHECKER_DIALOG, NULL))<span class='macro_popup'>((((PlumaSpellCheckerDialog*) (void *) ((g_object_new ((pluma_spell_checker_dialog_get_type<br> ()), ((void*)0)))))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="333"><td class="num" id="LN333">333</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="334"><td class="num" id="LN334">334</td><td class="line"> <span class='macro'>g_return_val_if_fail (dlg != NULL, NULL)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_44<br>; if (dlg != ((void*)0)) _g_boolean_var_44 = 1; else _g_boolean_var_44<br> = 0; _g_boolean_var_44; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "dlg != NULL"); return<br> (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="335"><td class="num" id="LN335">335</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="336"><td class="num" id="LN336">336</td><td class="line"> create_dialog (dlg, data_dir);</td></tr>
+<tr class="codeline" data-linenumber="337"><td class="num" id="LN337">337</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="338"><td class="num" id="LN338">338</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>GTK_WIDGET (dlg)<span class='macro_popup'>((((GtkWidget*) (void *) ((dlg)))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="339"><td class="num" id="LN339">339</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="340"><td class="num" id="LN340">340</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="341"><td class="num" id="LN341">341</td><td class="line">GtkWidget *</td></tr>
+<tr class="codeline" data-linenumber="342"><td class="num" id="LN342">342</td><td class="line">pluma_spell_checker_dialog_new_from_spell_checker (PlumaSpellChecker *spell,</td></tr>
+<tr class="codeline" data-linenumber="343"><td class="num" id="LN343">343</td><td class="line"> <span class='keyword'>const</span> gchar *data_dir)</td></tr>
+<tr class="codeline" data-linenumber="344"><td class="num" id="LN344">344</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="345"><td class="num" id="LN345">345</td><td class="line"> <span id="start101">PlumaSpellCheckerDialog</span> *dlg;</td></tr>
+<tr class="codeline" data-linenumber="346"><td class="num" id="LN346">346</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="347"><td class="num" id="LN347">347</td><td class="line"> <span id="start94"><span id="start95"><span id="end95"><span id="start96"><span id="end96"><span id="start97"><span id="end97"><span id="start98"><span id="end98"><span class="mrange"><span id="start99"><span id="end99"><span id="start100"><span id="end100"><span id="end101"><span class='macro'>g_return_val_if_fail</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span> (spell != NULL, NULL)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_45<br>; if (spell != ((void*)0)) _g_boolean_var_45 = 1; else _g_boolean_var_45<br> = 0; _g_boolean_var_45; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "spell != NULL");<br> return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path1" class="msg msgEvent" style="margin-left:9ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexEvent">1</div></td><td>Assuming 'spell' is not equal to null</td><td><div class="PathNav"><a href="#Path2" title="Next event (2)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path2" class="msg msgControl" style="margin-left:9ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">2</div></td><td><div class="PathNav"><a href="#Path1" title="Previous event (1)">&#x2190;</a></div></td><td>Taking true branch</td><td><div class="PathNav"><a href="#Path3" title="Next event (3)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path3" class="msg msgControl" style="margin-left:9ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">3</div></td><td><div class="PathNav"><a href="#Path2" title="Previous event (2)">&#x2190;</a></div></td><td>Taking true branch</td><td><div class="PathNav"><a href="#Path4" title="Next event (4)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path4" class="msg msgControl" style="margin-left:9ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">4</div></td><td><div class="PathNav"><a href="#Path3" title="Previous event (3)">&#x2190;</a></div></td><td>Loop condition is false. Exiting loop</td><td><div class="PathNav"><a href="#Path5" title="Next event (5)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="348"><td class="num" id="LN348">348</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="349"><td class="num" id="LN349">349</td><td class="line"> <span id="start93"><span id="end94">dlg</span></span> = <span id="start92"><span id="end93"><span class='macro'>PLUMA_SPELL_CHECKER_DIALOG</span></span> (<span class='macro_popup'>((((PlumaSpellCheckerDialog*) (void *) ((g_object_new ((pluma_spell_checker_dialog_get_type<br> ()), ((void*)0)))))))</span></span></td></tr>
+<tr class="codeline" data-linenumber="350"><td class="num" id="LN350">350</td><td class="line"> <span class='macro'>g_object_new (PLUMA_TYPE_SPELL_CHECKER_DIALOG, NULL))<span class='macro_popup'>((((PlumaSpellCheckerDialog*) (void *) ((g_object_new ((pluma_spell_checker_dialog_get_type<br> ()), ((void*)0)))))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="351"><td class="num" id="LN351">351</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="352"><td class="num" id="LN352">352</td><td class="line"> <span id="start85"><span id="start86"><span id="end86"><span id="start87"><span id="end87"><span id="start88"><span id="end88"><span id="start89"><span id="end89"><span class="mrange"><span id="start90"><span id="end90"><span id="start91"><span id="end91"><span id="end92"><span class='macro'>g_return_val_if_fail</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span> (dlg != NULL, NULL)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_46<br>; if (dlg != ((void*)0)) _g_boolean_var_46 = 1; else _g_boolean_var_46<br> = 0; _g_boolean_var_46; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "dlg != NULL"); return<br> (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path5" class="msg msgEvent" style="margin-left:9ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexEvent">5</div></td><td><div class="PathNav"><a href="#Path4" title="Previous event (4)">&#x2190;</a></div></td><td>Assuming 'dlg' is not equal to null</td><td><div class="PathNav"><a href="#Path6" title="Next event (6)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path6" class="msg msgControl" style="margin-left:9ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">6</div></td><td><div class="PathNav"><a href="#Path5" title="Previous event (5)">&#x2190;</a></div></td><td>Taking true branch</td><td><div class="PathNav"><a href="#Path7" title="Next event (7)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path7" class="msg msgControl" style="margin-left:9ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">7</div></td><td><div class="PathNav"><a href="#Path6" title="Previous event (6)">&#x2190;</a></div></td><td>Taking true branch</td><td><div class="PathNav"><a href="#Path8" title="Next event (8)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path8" class="msg msgControl" style="margin-left:9ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">8</div></td><td><div class="PathNav"><a href="#Path7" title="Previous event (7)">&#x2190;</a></div></td><td>Loop condition is false. Exiting loop</td><td><div class="PathNav"><a href="#Path9" title="Next event (9)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="353"><td class="num" id="LN353">353</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="354"><td class="num" id="LN354">354</td><td class="line"> <span id="start82"><span id="end83"><span id="start84"><span id="end85">create_dialog</span></span></span></span> (<span id="start83"><span id="end84">dlg</span></span>, data_dir);</td></tr>
+<tr class="codeline" data-linenumber="355"><td class="num" id="LN355">355</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="356"><td class="num" id="LN356">356</td><td class="line"> <span class="mrange"><span id="end82">pluma_spell_checker_dialog_set_spell_checker</span> (dlg, spell)</span>;</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path9" class="msg msgEvent" style="margin-left:9ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexEvent">9</div></td><td><div class="PathNav"><a href="#Path8" title="Previous event (8)">&#x2190;</a></div></td><td>Calling 'pluma_spell_checker_dialog_set_spell_checker'</td><td><div class="PathNav"><a href="#Path10" title="Next event (10)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="357"><td class="num" id="LN357">357</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="358"><td class="num" id="LN358">358</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>GTK_WIDGET (dlg)<span class='macro_popup'>((((GtkWidget*) (void *) ((dlg)))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="359"><td class="num" id="LN359">359</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="360"><td class="num" id="LN360">360</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="361"><td class="num" id="LN361">361</td><td class="line"><span id="start81"><span class='keyword'>void</span></td></tr></span>
+<tr class="codeline" data-linenumber="362"><td class="num" id="LN362">362</td><td class="line">pluma_spell_checker_dialog_set_spell_checker (PlumaSpellCheckerDialog *dlg, PlumaSpellChecker *spell)</td></tr>
+<tr class="codeline" data-linenumber="363"><td class="num" id="LN363">363</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="364"><td class="num" id="LN364">364</td><td class="line"> <span id="start80"><span id="end81"><span class='keyword'>const</span></span></span> PlumaSpellCheckerLanguage* language;</td></tr>
+<tr class="codeline" data-linenumber="365"><td class="num" id="LN365">365</td><td class="line"> <span class='keyword'>const</span> gchar *lang;</td></tr>
+<tr class="codeline" data-linenumber="366"><td class="num" id="LN366">366</td><td class="line"> <span id="start79"><span id="end80">gchar</span></span> *tmp;</td></tr>
+<tr class="codeline" data-linenumber="367"><td class="num" id="LN367">367</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="368"><td class="num" id="LN368">368</td><td class="line"> <span id="start65"><span id="start66"><span id="end66"><span id="start67"><span id="end67"><span id="start68"><span id="end68"><span id="start69"><span id="end69"><span class="mrange"><span id="start70"><span id="end70"><span id="start71"><span id="end71"><span class="mrange"><span id="start72"><span id="end72"><span id="start73"><span id="end73"><span id="start74"><span id="end74"><span id="start75"><span id="end75"><span id="start76"><span id="end76"><span id="start77"><span id="end77"><span id="start78"><span id="end78"><span id="end79"><span class='macro'>g_return_if_fail</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span> (PLUMA_IS_SPELL_CHECKER_DIALOG (dlg))<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_47<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((dlg)); GType __t = ((pluma_spell_checker_dialog_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_47 = 1; else _g_boolean_var_47 = 0<br>; _g_boolean_var_47; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "PLUMA_IS_SPELL_CHECKER_DIALOG (dlg)"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path10" class="msg msgControl" style="margin-left:9ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">10</div></td><td><div class="PathNav"><a href="#Path9" title="Previous event (9)">&#x2190;</a></div></td><td>Taking false branch</td><td><div class="PathNav"><a href="#Path11" title="Next event (11)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path11" class="msg msgEvent" style="margin-left:9ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexEvent">11</div></td><td><div class="PathNav"><a href="#Path10" title="Previous event (10)">&#x2190;</a></div></td><td>Assuming field 'g_class' is null</td><td><div class="PathNav"><a href="#Path12" title="Next event (12)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path12" class="msg msgEvent" style="margin-left:9ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexEvent">12</div></td><td><div class="PathNav"><a href="#Path11" title="Previous event (11)">&#x2190;</a></div></td><td>Assuming the condition is true</td><td><div class="PathNav"><a href="#Path13" title="Next event (13)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path13" class="msg msgControl" style="margin-left:9ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">13</div></td><td><div class="PathNav"><a href="#Path12" title="Previous event (12)">&#x2190;</a></div></td><td>Taking true branch</td><td><div class="PathNav"><a href="#Path14" title="Next event (14)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path14" class="msg msgControl" style="margin-left:9ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">14</div></td><td><div class="PathNav"><a href="#Path13" title="Previous event (13)">&#x2190;</a></div></td><td>Taking true branch</td><td><div class="PathNav"><a href="#Path15" title="Next event (15)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path15" class="msg msgControl" style="margin-left:9ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">15</div></td><td><div class="PathNav"><a href="#Path14" title="Previous event (14)">&#x2190;</a></div></td><td>Loop condition is false. Exiting loop</td><td><div class="PathNav"><a href="#Path16" title="Next event (16)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="369"><td class="num" id="LN369">369</td><td class="line"> <span id="start57"><span id="start58"><span id="end58"><span id="start59"><span id="end59"><span id="start60"><span id="end60"><span id="start61"><span id="end61"><span id="start62"><span id="end62"><span id="start63"><span id="end63"><span id="start64"><span id="end64"><span id="end65"><span class='macro'>g_return_if_fail</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span> (spell != NULL)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_48<br>; if (spell != ((void*)0)) _g_boolean_var_48 = 1; else _g_boolean_var_48<br> = 0; _g_boolean_var_48; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "spell != NULL");<br> return; } } while (0)</span></span>;</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path16" class="msg msgControl" style="margin-left:9ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">16</div></td><td><div class="PathNav"><a href="#Path15" title="Previous event (15)">&#x2190;</a></div></td><td>Taking true branch</td><td><div class="PathNav"><a href="#Path17" title="Next event (17)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path17" class="msg msgControl" style="margin-left:9ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">17</div></td><td><div class="PathNav"><a href="#Path16" title="Previous event (16)">&#x2190;</a></div></td><td>Taking true branch</td><td><div class="PathNav"><a href="#Path18" title="Next event (18)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path18" class="msg msgControl" style="margin-left:9ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">18</div></td><td><div class="PathNav"><a href="#Path17" title="Previous event (17)">&#x2190;</a></div></td><td>Loop condition is false. Exiting loop</td><td><div class="PathNav"><a href="#Path19" title="Next event (19)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="370"><td class="num" id="LN370">370</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="371"><td class="num" id="LN371">371</td><td class="line"> <span id="start56"><span id="end57"><span class='keyword'>if</span></span></span> (<span id="start55"><span class="mrange"><span id="end56">dlg</span></span>-&gt;spell_checker != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span></span>)</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path19" class="msg msgEvent" style="margin-left:13ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexEvent">19</div></td><td><div class="PathNav"><a href="#Path18" title="Previous event (18)">&#x2190;</a></div></td><td>Assuming field 'spell_checker' is equal to NULL</td><td><div class="PathNav"><a href="#Path20" title="Next event (20)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path20" class="msg msgControl" style="margin-left:9ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">20</div></td><td><div class="PathNav"><a href="#Path19" title="Previous event (19)">&#x2190;</a></div></td><td>Taking false branch</td><td><div class="PathNav"><a href="#Path21" title="Next event (21)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="372"><td class="num" id="LN372">372</td><td class="line"> g_object_unref (dlg-&gt;spell_checker);</td></tr>
+<tr class="codeline" data-linenumber="373"><td class="num" id="LN373">373</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="374"><td class="num" id="LN374">374</td><td class="line"> <span id="start52"><span id="end53"><span id="start54"><span id="end55">dlg</span></span></span></span>-&gt;spell_checker = <span id="start53"><span id="end54">spell</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="375"><td class="num" id="LN375">375</td><td class="line"> <span class='macro'>g_object_ref (dlg-&gt;spell_checker)<span class='macro_popup'>((__typeof__ (dlg-&gt;spell_checker)) (g_object_ref) (dlg-&gt;<br>spell_checker))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="376"><td class="num" id="LN376">376</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="377"><td class="num" id="LN377">377</td><td class="line"> language = pluma_spell_checker_get_language (dlg-&gt;spell_checker);</td></tr>
+<tr class="codeline" data-linenumber="378"><td class="num" id="LN378">378</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="379"><td class="num" id="LN379">379</td><td class="line"> lang = pluma_spell_checker_language_to_string (language);</td></tr>
+<tr class="codeline" data-linenumber="380"><td class="num" id="LN380">380</td><td class="line"> tmp = g_strdup_printf(<span class='string_literal'>"&lt;b&gt;%s&lt;/b&gt;"</span>, lang);</td></tr>
+<tr class="codeline" data-linenumber="381"><td class="num" id="LN381">381</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="382"><td class="num" id="LN382">382</td><td class="line"> gtk_label_set_label (<span class='macro'>GTK_LABEL (dlg-&gt;language_label)<span class='macro_popup'>((((GtkLabel*) (void *) ((dlg-&gt;language_label)))))</span></span>, tmp);</td></tr>
+<tr class="codeline" data-linenumber="383"><td class="num" id="LN383">383</td><td class="line"> g_free (tmp);</td></tr>
+<tr class="codeline" data-linenumber="384"><td class="num" id="LN384">384</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="385"><td class="num" id="LN385">385</td><td class="line"> <span id="start51"><span id="end52"><span class='keyword'>if</span></span></span> (<span id="start50"><span class="mrange"><span id="end51">dlg</span></span>-&gt;misspelled_word != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span></span>)</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path21" class="msg msgEvent" style="margin-left:13ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexEvent">21</div></td><td><div class="PathNav"><a href="#Path20" title="Previous event (20)">&#x2190;</a></div></td><td>Assuming field 'misspelled_word' is not equal to NULL</td><td><div class="PathNav"><a href="#Path22" title="Next event (22)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path22" class="msg msgControl" style="margin-left:9ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">22</div></td><td><div class="PathNav"><a href="#Path21" title="Previous event (21)">&#x2190;</a></div></td><td>Taking true branch</td><td><div class="PathNav"><a href="#Path23" title="Next event (23)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="386"><td class="num" id="LN386">386</td><td class="line"> <span class="mrange"><span id="end48"><span id="start49"><span id="end50">pluma_spell_checker_dialog_set_misspelled_word</span></span></span> (<span id="start48"><span id="end49">dlg</span></span>, dlg-&gt;misspelled_word, -1)</span>;</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path23" class="msg msgEvent" style="margin-left:17ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexEvent">23</div></td><td><div class="PathNav"><a href="#Path22" title="Previous event (22)">&#x2190;</a></div></td><td>Calling 'pluma_spell_checker_dialog_set_misspelled_word'</td><td><div class="PathNav"><a href="#Path24" title="Next event (24)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="387"><td class="num" id="LN387">387</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="388"><td class="num" id="LN388">388</td><td class="line"> gtk_list_store_clear (<span class='macro'>GTK_LIST_STORE (dlg-&gt;suggestions_list_model)<span class='macro_popup'>((((GtkListStore*) (void *) ((dlg-&gt;suggestions_list_model)<br>))))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="389"><td class="num" id="LN389">389</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="390"><td class="num" id="LN390">390</td><td class="line"> <span class='comment'>/* TODO: reset all widgets */</span></td></tr>
+<tr class="codeline" data-linenumber="391"><td class="num" id="LN391">391</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="392"><td class="num" id="LN392">392</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="393"><td class="num" id="LN393">393</td><td class="line"><span id="start47"><span class='keyword'>void</span></td></tr></span>
+<tr class="codeline" data-linenumber="394"><td class="num" id="LN394">394</td><td class="line">pluma_spell_checker_dialog_set_misspelled_word (PlumaSpellCheckerDialog *dlg,</td></tr>
+<tr class="codeline" data-linenumber="395"><td class="num" id="LN395">395</td><td class="line"> <span class='keyword'>const</span> gchar *word,</td></tr>
+<tr class="codeline" data-linenumber="396"><td class="num" id="LN396">396</td><td class="line"> gint len)</td></tr>
+<tr class="codeline" data-linenumber="397"><td class="num" id="LN397">397</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="398"><td class="num" id="LN398">398</td><td class="line"> <span id="start46"><span id="end47">gchar</span></span> *tmp;</td></tr>
+<tr class="codeline" data-linenumber="399"><td class="num" id="LN399">399</td><td class="line"> <span id="start45"><span id="end46">GSList</span></span> *sug;</td></tr>
+<tr class="codeline" data-linenumber="400"><td class="num" id="LN400">400</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="401"><td class="num" id="LN401">401</td><td class="line"> <span id="start30"><span id="start31"><span id="end31"><span id="start32"><span id="end32"><span id="start33"><span id="end33"><span id="start34"><span id="end34"><span class="mrange"><span id="start35"><span id="end35"><span id="start36"><span id="end36"><span id="start37"><span id="end37"><span id="start38"><span id="end38"><span id="start39"><span id="end39"><span id="start40"><span id="end40"><span id="start41"><span id="end41"><span id="start42"><span id="end42"><span id="start43"><span id="end43"><span id="start44"><span id="end44"><span id="end45"><span class='macro'>g_return_if_fail</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span> (PLUMA_IS_SPELL_CHECKER_DIALOG (dlg))<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_49<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((dlg)); GType __t = ((pluma_spell_checker_dialog_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_49 = 1; else _g_boolean_var_49 = 0<br>; _g_boolean_var_49; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "PLUMA_IS_SPELL_CHECKER_DIALOG (dlg)"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path24" class="msg msgControl" style="margin-left:9ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">24</div></td><td><div class="PathNav"><a href="#Path23" title="Previous event (23)">&#x2190;</a></div></td><td>Taking false branch</td><td><div class="PathNav"><a href="#Path25" title="Next event (25)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path25" class="msg msgEvent" style="margin-left:9ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexEvent">25</div></td><td><div class="PathNav"><a href="#Path24" title="Previous event (24)">&#x2190;</a></div></td><td>Assuming the condition is true</td><td><div class="PathNav"><a href="#Path26" title="Next event (26)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path26" class="msg msgControl" style="margin-left:9ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">26</div></td><td><div class="PathNav"><a href="#Path25" title="Previous event (25)">&#x2190;</a></div></td><td>Taking true branch</td><td><div class="PathNav"><a href="#Path27" title="Next event (27)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path27" class="msg msgControl" style="margin-left:9ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">27</div></td><td><div class="PathNav"><a href="#Path26" title="Previous event (26)">&#x2190;</a></div></td><td>Taking true branch</td><td><div class="PathNav"><a href="#Path28" title="Next event (28)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path28" class="msg msgControl" style="margin-left:9ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">28</div></td><td><div class="PathNav"><a href="#Path27" title="Previous event (27)">&#x2190;</a></div></td><td>Loop condition is false. Exiting loop</td><td><div class="PathNav"><a href="#Path29" title="Next event (29)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="402"><td class="num" id="LN402">402</td><td class="line"> <span id="start22"><span id="start23"><span id="end23"><span id="start24"><span id="end24"><span id="start25"><span id="end25"><span id="start26"><span id="end26"><span id="start27"><span id="end27"><span id="start28"><span id="end28"><span id="start29"><span id="end29"><span id="end30"><span class='macro'>g_return_if_fail</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span> (word != NULL)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_50<br>; if (word != ((void*)0)) _g_boolean_var_50 = 1; else _g_boolean_var_50<br> = 0; _g_boolean_var_50; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "word != NULL"); return<br>; } } while (0)</span></span>;</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path29" class="msg msgControl" style="margin-left:9ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">29</div></td><td><div class="PathNav"><a href="#Path28" title="Previous event (28)">&#x2190;</a></div></td><td>Taking true branch</td><td><div class="PathNav"><a href="#Path30" title="Next event (30)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path30" class="msg msgControl" style="margin-left:9ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">30</div></td><td><div class="PathNav"><a href="#Path29" title="Previous event (29)">&#x2190;</a></div></td><td>Taking true branch</td><td><div class="PathNav"><a href="#Path31" title="Next event (31)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path31" class="msg msgControl" style="margin-left:9ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">31</div></td><td><div class="PathNav"><a href="#Path30" title="Previous event (30)">&#x2190;</a></div></td><td>Loop condition is false. Exiting loop</td><td><div class="PathNav"><a href="#Path32" title="Next event (32)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="403"><td class="num" id="LN403">403</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="404"><td class="num" id="LN404">404</td><td class="line"> <span id="start15"><span id="start16"><span id="end16"><span id="start17"><span id="end17"><span id="start18"><span id="end18"><span id="start19"><span id="end19"><span id="start20"><span id="end20"><span id="start21"><span id="end21"><span id="end22"><span class='macro'>g_return_if_fail</span></span></span></span></span></span></span></span></span></span></span></span></span></span> (dlg-&gt;spell_checker != NULL)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_51<br>; if (dlg-&gt;spell_checker != ((void*)0)) _g_boolean_var_51 =<br> 1; else _g_boolean_var_51 = 0; _g_boolean_var_51; }), 1))) {<br> } else { g_return_if_fail_warning (((gchar*) 0), ((const char<br>*) (__func__)), "dlg-&gt;spell_checker != NULL"); return; } }<br> while (0)</span></span>;</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path32" class="msg msgControl" style="margin-left:9ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">32</div></td><td><div class="PathNav"><a href="#Path31" title="Previous event (31)">&#x2190;</a></div></td><td>Taking true branch</td><td><div class="PathNav"><a href="#Path33" title="Next event (33)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path33" class="msg msgControl" style="margin-left:9ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">33</div></td><td><div class="PathNav"><a href="#Path32" title="Previous event (32)">&#x2190;</a></div></td><td>Taking true branch</td><td><div class="PathNav"><a href="#Path34" title="Next event (34)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path34" class="msg msgControl" style="margin-left:9ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">34</div></td><td><div class="PathNav"><a href="#Path33" title="Previous event (33)">&#x2190;</a></div></td><td>Loop condition is false. Exiting loop</td><td><div class="PathNav"><a href="#Path35" title="Next event (35)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="405"><td class="num" id="LN405">405</td><td class="line"> <span id="start8"><span id="start9"><span id="end9"><span id="start10"><span id="end10"><span id="start11"><span id="end11"><span id="start12"><span id="end12"><span class="mrange"><span id="start13"><span id="end13"><span id="start14"><span id="end14"><span id="end15"><span class='macro'>g_return_if_fail</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span> (!pluma_spell_checker_check_word (dlg-&gt;spell_checker, word, -1))<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_52<br>; if (!pluma_spell_checker_check_word (dlg-&gt;spell_checker,<br> word, -1)) _g_boolean_var_52 = 1; else _g_boolean_var_52 = 0<br>; _g_boolean_var_52; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "!pluma_spell_checker_check_word (dlg-&gt;spell_checker, word, -1)"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path35" class="msg msgEvent" style="margin-left:9ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexEvent">35</div></td><td><div class="PathNav"><a href="#Path34" title="Previous event (34)">&#x2190;</a></div></td><td>Assuming the condition is true</td><td><div class="PathNav"><a href="#Path36" title="Next event (36)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path36" class="msg msgControl" style="margin-left:9ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">36</div></td><td><div class="PathNav"><a href="#Path35" title="Previous event (35)">&#x2190;</a></div></td><td>Taking true branch</td><td><div class="PathNav"><a href="#Path37" title="Next event (37)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path37" class="msg msgControl" style="margin-left:9ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">37</div></td><td><div class="PathNav"><a href="#Path36" title="Previous event (36)">&#x2190;</a></div></td><td>Taking true branch</td><td><div class="PathNav"><a href="#Path38" title="Next event (38)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path38" class="msg msgControl" style="margin-left:9ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">38</div></td><td><div class="PathNav"><a href="#Path37" title="Previous event (37)">&#x2190;</a></div></td><td>Loop condition is false. Exiting loop</td><td><div class="PathNav"><a href="#Path39" title="Next event (39)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="406"><td class="num" id="LN406">406</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="407"><td class="num" id="LN407">407</td><td class="line"> <span class='comment'>/* build_suggestions_list */</span></td></tr>
+<tr class="codeline" data-linenumber="408"><td class="num" id="LN408">408</td><td class="line"> <span id="start4"><span id="end5"><span id="start7"><span id="end8"><span class='keyword'>if</span></span></span></span></span> (<span id="start6"><span id="end7">dlg</span></span>-&gt;<span id="start5"><span id="end6"><span class='variable'>misspelled_word<table class='variable_popup'><tbody><tr><td valign='top'><div class='PathIndex PathIndexPopUp'>38.1</div></td><td>Field 'misspelled_word' is not equal to NULL</td></tr></tbody></table></span></span></span> != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path39" class="msg msgControl" style="margin-left:9ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">39</div></td><td><div class="PathNav"><a href="#Path38" title="Previous event (38)">&#x2190;</a></div></td><td>Taking true branch</td><td><div class="PathNav"><a href="#Path40" title="Next event (40)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="409"><td class="num" id="LN409">409</td><td class="line"> <span id="start1"><span class="mrange"><span id="end2"><span id="start3"><span id="end4">g_free</span></span></span></span> (<span id="start2"><span id="end3">dlg</span></span>-&gt;misspelled_word)</span>;</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path40" class="msg msgEvent" style="margin-left:17ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexEvent">40</div></td><td><div class="PathNav"><a href="#Path39" title="Previous event (39)">&#x2190;</a></div></td><td>Memory is released</td><td><div class="PathNav"><a href="#EndPath" title="Next event (41)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="410"><td class="num" id="LN410">410</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="411"><td class="num" id="LN411">411</td><td class="line"> <span id="start0"><span id="end1">dlg</span></span>-&gt;misspelled_word = <span class="mrange"><span id="end0"><span class='macro'>g_strdup</span></span> (word)<span class='macro_popup'>g_strdup_inline (word)</span></span>;</td></tr>
+<tr><td class="num"></td><td class="line"><div id="EndPath" class="msg msgEvent" style="margin-left:32ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexEvent">41</div></td><td><div class="PathNav"><a href="#Path40" title="Previous event (40)">&#x2190;</a></div></td><td>Use of memory after it is freed</td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="412"><td class="num" id="LN412">412</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="413"><td class="num" id="LN413">413</td><td class="line"> tmp = g_strdup_printf(<span class='string_literal'>"&lt;b&gt;%s&lt;/b&gt;"</span>, word);</td></tr>
+<tr class="codeline" data-linenumber="414"><td class="num" id="LN414">414</td><td class="line"> gtk_label_set_label (<span class='macro'>GTK_LABEL (dlg-&gt;misspelled_word_label)<span class='macro_popup'>((((GtkLabel*) (void *) ((dlg-&gt;misspelled_word_label)))))</span></span>, tmp);</td></tr>
+<tr class="codeline" data-linenumber="415"><td class="num" id="LN415">415</td><td class="line"> g_free (tmp);</td></tr>
+<tr class="codeline" data-linenumber="416"><td class="num" id="LN416">416</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="417"><td class="num" id="LN417">417</td><td class="line"> sug = pluma_spell_checker_get_suggestions (dlg-&gt;spell_checker,</td></tr>
+<tr class="codeline" data-linenumber="418"><td class="num" id="LN418">418</td><td class="line"> dlg-&gt;misspelled_word,</td></tr>
+<tr class="codeline" data-linenumber="419"><td class="num" id="LN419">419</td><td class="line"> -1);</td></tr>
+<tr class="codeline" data-linenumber="420"><td class="num" id="LN420">420</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="421"><td class="num" id="LN421">421</td><td class="line"> update_suggestions_list_model (dlg, sug);</td></tr>
+<tr class="codeline" data-linenumber="422"><td class="num" id="LN422">422</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="423"><td class="num" id="LN423">423</td><td class="line"> <span class='comment'>/* free the suggestion list */</span></td></tr>
+<tr class="codeline" data-linenumber="424"><td class="num" id="LN424">424</td><td class="line"> g_slist_free_full (sug, g_free);</td></tr>
+<tr class="codeline" data-linenumber="425"><td class="num" id="LN425">425</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="426"><td class="num" id="LN426">426</td><td class="line"> gtk_widget_set_sensitive (dlg-&gt;ignore_button, <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="427"><td class="num" id="LN427">427</td><td class="line"> gtk_widget_set_sensitive (dlg-&gt;ignore_all_button, <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="428"><td class="num" id="LN428">428</td><td class="line"> gtk_widget_set_sensitive (dlg-&gt;add_word_button, <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="429"><td class="num" id="LN429">429</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="430"><td class="num" id="LN430">430</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="431"><td class="num" id="LN431">431</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="432"><td class="num" id="LN432">432</td><td class="line">update_suggestions_list_model (PlumaSpellCheckerDialog *dlg, GSList *suggestions)</td></tr>
+<tr class="codeline" data-linenumber="433"><td class="num" id="LN433">433</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="434"><td class="num" id="LN434">434</td><td class="line"> GtkListStore *store;</td></tr>
+<tr class="codeline" data-linenumber="435"><td class="num" id="LN435">435</td><td class="line"> GtkTreeIter iter;</td></tr>
+<tr class="codeline" data-linenumber="436"><td class="num" id="LN436">436</td><td class="line"> GtkTreeSelection *sel;</td></tr>
+<tr class="codeline" data-linenumber="437"><td class="num" id="LN437">437</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="438"><td class="num" id="LN438">438</td><td class="line"> <span class='macro'>g_return_if_fail (PLUMA_IS_SPELL_CHECKER_DIALOG (dlg))<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_53<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((dlg)); GType __t = ((pluma_spell_checker_dialog_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_53 = 1; else _g_boolean_var_53 = 0<br>; _g_boolean_var_53; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "PLUMA_IS_SPELL_CHECKER_DIALOG (dlg)"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="439"><td class="num" id="LN439">439</td><td class="line"> <span class='macro'>g_return_if_fail (GTK_IS_LIST_STORE (dlg-&gt;suggestions_list_model))<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_54<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((dlg-&gt;suggestions_list_model)); GType __t = ((gtk_list_store_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_54 = 1; else _g_boolean_var_54 = 0<br>; _g_boolean_var_54; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "GTK_IS_LIST_STORE (dlg-&gt;suggestions_list_model)"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="440"><td class="num" id="LN440">440</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="441"><td class="num" id="LN441">441</td><td class="line"> store = <span class='macro'>GTK_LIST_STORE (dlg-&gt;suggestions_list_model)<span class='macro_popup'>((((GtkListStore*) (void *) ((dlg-&gt;suggestions_list_model)<br>))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="442"><td class="num" id="LN442">442</td><td class="line"> gtk_list_store_clear (store);</td></tr>
+<tr class="codeline" data-linenumber="443"><td class="num" id="LN443">443</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="444"><td class="num" id="LN444">444</td><td class="line"> gtk_widget_set_sensitive (dlg-&gt;word_entry, <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="445"><td class="num" id="LN445">445</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="446"><td class="num" id="LN446">446</td><td class="line"> <span class='keyword'>if</span> (suggestions == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="447"><td class="num" id="LN447">447</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="448"><td class="num" id="LN448">448</td><td class="line"> gtk_list_store_append (store, &amp;iter);</td></tr>
+<tr class="codeline" data-linenumber="449"><td class="num" id="LN449">449</td><td class="line"> gtk_list_store_set (store, &amp;iter,</td></tr>
+<tr class="codeline" data-linenumber="450"><td class="num" id="LN450">450</td><td class="line"> <span class='comment'>/* Translators: Displayed in the "Check Spelling" dialog if there are no suggestions</span></td></tr>
+<tr class="codeline" data-linenumber="451"><td class="num" id="LN451">451</td><td class="line"> <span class='comment'>* for the current misspelled word */</span></td></tr>
+<tr class="codeline" data-linenumber="452"><td class="num" id="LN452">452</td><td class="line"> COLUMN_SUGGESTIONS, <span class='macro'>_(<span class='string_literal'>"(no suggested words)"</span>)<span class='macro_popup'>dcgettext (((void*)0), "(no suggested words)", 5)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="453"><td class="num" id="LN453">453</td><td class="line"> -1);</td></tr>
+<tr class="codeline" data-linenumber="454"><td class="num" id="LN454">454</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="455"><td class="num" id="LN455">455</td><td class="line"> gtk_entry_set_text (<span class='macro'>GTK_ENTRY (dlg-&gt;word_entry)<span class='macro_popup'>((((GtkEntry*) (void *) ((dlg-&gt;word_entry)))))</span></span>, <span class='string_literal'>""</span>);</td></tr>
+<tr class="codeline" data-linenumber="456"><td class="num" id="LN456">456</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="457"><td class="num" id="LN457">457</td><td class="line"> gtk_widget_set_sensitive (dlg-&gt;suggestions_list, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="458"><td class="num" id="LN458">458</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="459"><td class="num" id="LN459">459</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="460"><td class="num" id="LN460">460</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="461"><td class="num" id="LN461">461</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="462"><td class="num" id="LN462">462</td><td class="line"> gtk_widget_set_sensitive (dlg-&gt;suggestions_list, <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="463"><td class="num" id="LN463">463</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="464"><td class="num" id="LN464">464</td><td class="line"> gtk_entry_set_text (<span class='macro'>GTK_ENTRY (dlg-&gt;word_entry)<span class='macro_popup'>((((GtkEntry*) (void *) ((dlg-&gt;word_entry)))))</span></span>, (gchar*)suggestions-&gt;data);</td></tr>
+<tr class="codeline" data-linenumber="465"><td class="num" id="LN465">465</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="466"><td class="num" id="LN466">466</td><td class="line"> <span class='keyword'>while</span> (suggestions != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="467"><td class="num" id="LN467">467</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="468"><td class="num" id="LN468">468</td><td class="line"> gtk_list_store_append (store, &amp;iter);</td></tr>
+<tr class="codeline" data-linenumber="469"><td class="num" id="LN469">469</td><td class="line"> gtk_list_store_set (store, &amp;iter,</td></tr>
+<tr class="codeline" data-linenumber="470"><td class="num" id="LN470">470</td><td class="line"> COLUMN_SUGGESTIONS, (gchar*)suggestions-&gt;data,</td></tr>
+<tr class="codeline" data-linenumber="471"><td class="num" id="LN471">471</td><td class="line"> -1);</td></tr>
+<tr class="codeline" data-linenumber="472"><td class="num" id="LN472">472</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="473"><td class="num" id="LN473">473</td><td class="line"> suggestions = <span class='macro'>g_slist_next (suggestions)<span class='macro_popup'>((suggestions) ? (((GSList *)(suggestions))-&gt;next) : ((void<br>*)0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="474"><td class="num" id="LN474">474</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="475"><td class="num" id="LN475">475</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="476"><td class="num" id="LN476">476</td><td class="line"> sel = gtk_tree_view_get_selection (<span class='macro'>GTK_TREE_VIEW (dlg-&gt;suggestions_list)<span class='macro_popup'>((((GtkTreeView*) (void *) ((dlg-&gt;suggestions_list)))))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="477"><td class="num" id="LN477">477</td><td class="line"> gtk_tree_model_get_iter_first (dlg-&gt;suggestions_list_model, &amp;iter);</td></tr>
+<tr class="codeline" data-linenumber="478"><td class="num" id="LN478">478</td><td class="line"> gtk_tree_selection_select_iter (sel, &amp;iter);</td></tr>
+<tr class="codeline" data-linenumber="479"><td class="num" id="LN479">479</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="480"><td class="num" id="LN480">480</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="481"><td class="num" id="LN481">481</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="482"><td class="num" id="LN482">482</td><td class="line">word_entry_changed_handler (GtkEditable *editable, PlumaSpellCheckerDialog *dlg)</td></tr>
+<tr class="codeline" data-linenumber="483"><td class="num" id="LN483">483</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="484"><td class="num" id="LN484">484</td><td class="line"> <span class='keyword'>const</span> gchar *text;</td></tr>
+<tr class="codeline" data-linenumber="485"><td class="num" id="LN485">485</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="486"><td class="num" id="LN486">486</td><td class="line"> <span class='macro'>g_return_if_fail (PLUMA_IS_SPELL_CHECKER_DIALOG (dlg))<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_55<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((dlg)); GType __t = ((pluma_spell_checker_dialog_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_55 = 1; else _g_boolean_var_55 = 0<br>; _g_boolean_var_55; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "PLUMA_IS_SPELL_CHECKER_DIALOG (dlg)"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="487"><td class="num" id="LN487">487</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="488"><td class="num" id="LN488">488</td><td class="line"> text = gtk_entry_get_text (<span class='macro'>GTK_ENTRY (dlg-&gt;word_entry)<span class='macro_popup'>((((GtkEntry*) (void *) ((dlg-&gt;word_entry)))))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="489"><td class="num" id="LN489">489</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="490"><td class="num" id="LN490">490</td><td class="line"> <span class='keyword'>if</span> (g_utf8_strlen (text, -1) &gt; 0)</td></tr>
+<tr class="codeline" data-linenumber="491"><td class="num" id="LN491">491</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="492"><td class="num" id="LN492">492</td><td class="line"> gtk_widget_set_sensitive (dlg-&gt;check_word_button, <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="493"><td class="num" id="LN493">493</td><td class="line"> gtk_widget_set_sensitive (dlg-&gt;change_button, <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="494"><td class="num" id="LN494">494</td><td class="line"> gtk_widget_set_sensitive (dlg-&gt;change_all_button, <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="495"><td class="num" id="LN495">495</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="496"><td class="num" id="LN496">496</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="497"><td class="num" id="LN497">497</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="498"><td class="num" id="LN498">498</td><td class="line"> gtk_widget_set_sensitive (dlg-&gt;check_word_button, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="499"><td class="num" id="LN499">499</td><td class="line"> gtk_widget_set_sensitive (dlg-&gt;change_button, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="500"><td class="num" id="LN500">500</td><td class="line"> gtk_widget_set_sensitive (dlg-&gt;change_all_button, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="501"><td class="num" id="LN501">501</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="502"><td class="num" id="LN502">502</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="503"><td class="num" id="LN503">503</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="504"><td class="num" id="LN504">504</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="505"><td class="num" id="LN505">505</td><td class="line">close_button_clicked_handler (GtkButton *button, PlumaSpellCheckerDialog *dlg)</td></tr>
+<tr class="codeline" data-linenumber="506"><td class="num" id="LN506">506</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="507"><td class="num" id="LN507">507</td><td class="line"> <span class='macro'>g_return_if_fail (PLUMA_IS_SPELL_CHECKER_DIALOG (dlg))<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_56<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((dlg)); GType __t = ((pluma_spell_checker_dialog_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_56 = 1; else _g_boolean_var_56 = 0<br>; _g_boolean_var_56; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "PLUMA_IS_SPELL_CHECKER_DIALOG (dlg)"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="508"><td class="num" id="LN508">508</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="509"><td class="num" id="LN509">509</td><td class="line"> gtk_widget_destroy (<span class='macro'>GTK_WIDGET (dlg)<span class='macro_popup'>((((GtkWidget*) (void *) ((dlg)))))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="510"><td class="num" id="LN510">510</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="511"><td class="num" id="LN511">511</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="512"><td class="num" id="LN512">512</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="513"><td class="num" id="LN513">513</td><td class="line">suggestions_list_selection_changed_handler (GtkTreeSelection *selection,</td></tr>
+<tr class="codeline" data-linenumber="514"><td class="num" id="LN514">514</td><td class="line"> PlumaSpellCheckerDialog *dlg)</td></tr>
+<tr class="codeline" data-linenumber="515"><td class="num" id="LN515">515</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="516"><td class="num" id="LN516">516</td><td class="line"> GtkTreeIter iter;</td></tr>
+<tr class="codeline" data-linenumber="517"><td class="num" id="LN517">517</td><td class="line"> GValue value = {0, };</td></tr>
+<tr class="codeline" data-linenumber="518"><td class="num" id="LN518">518</td><td class="line"> <span class='keyword'>const</span> gchar *text;</td></tr>
+<tr class="codeline" data-linenumber="519"><td class="num" id="LN519">519</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="520"><td class="num" id="LN520">520</td><td class="line"> <span class='macro'>g_return_if_fail (PLUMA_IS_SPELL_CHECKER_DIALOG (dlg))<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_57<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((dlg)); GType __t = ((pluma_spell_checker_dialog_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_57 = 1; else _g_boolean_var_57 = 0<br>; _g_boolean_var_57; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "PLUMA_IS_SPELL_CHECKER_DIALOG (dlg)"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="521"><td class="num" id="LN521">521</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="522"><td class="num" id="LN522">522</td><td class="line"> <span class='keyword'>if</span> (! gtk_tree_selection_get_selected (selection, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, &amp;iter))</td></tr>
+<tr class="codeline" data-linenumber="523"><td class="num" id="LN523">523</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="524"><td class="num" id="LN524">524</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="525"><td class="num" id="LN525">525</td><td class="line"> gtk_tree_model_get_value (dlg-&gt;suggestions_list_model, &amp;iter,</td></tr>
+<tr class="codeline" data-linenumber="526"><td class="num" id="LN526">526</td><td class="line"> COLUMN_SUGGESTIONS,</td></tr>
+<tr class="codeline" data-linenumber="527"><td class="num" id="LN527">527</td><td class="line"> &amp;value);</td></tr>
+<tr class="codeline" data-linenumber="528"><td class="num" id="LN528">528</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="529"><td class="num" id="LN529">529</td><td class="line"> text = g_value_get_string (&amp;value);</td></tr>
+<tr class="codeline" data-linenumber="530"><td class="num" id="LN530">530</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="531"><td class="num" id="LN531">531</td><td class="line"> gtk_entry_set_text (<span class='macro'>GTK_ENTRY (dlg-&gt;word_entry)<span class='macro_popup'>((((GtkEntry*) (void *) ((dlg-&gt;word_entry)))))</span></span>, text);</td></tr>
+<tr class="codeline" data-linenumber="532"><td class="num" id="LN532">532</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="533"><td class="num" id="LN533">533</td><td class="line"> g_value_unset (&amp;value);</td></tr>
+<tr class="codeline" data-linenumber="534"><td class="num" id="LN534">534</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="535"><td class="num" id="LN535">535</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="536"><td class="num" id="LN536">536</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="537"><td class="num" id="LN537">537</td><td class="line">check_word_button_clicked_handler (GtkButton *button, PlumaSpellCheckerDialog *dlg)</td></tr>
+<tr class="codeline" data-linenumber="538"><td class="num" id="LN538">538</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="539"><td class="num" id="LN539">539</td><td class="line"> <span class='keyword'>const</span> gchar *word;</td></tr>
+<tr class="codeline" data-linenumber="540"><td class="num" id="LN540">540</td><td class="line"> gssize len;</td></tr>
+<tr class="codeline" data-linenumber="541"><td class="num" id="LN541">541</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="542"><td class="num" id="LN542">542</td><td class="line"> <span class='macro'>g_return_if_fail (PLUMA_IS_SPELL_CHECKER_DIALOG (dlg))<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_58<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((dlg)); GType __t = ((pluma_spell_checker_dialog_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_58 = 1; else _g_boolean_var_58 = 0<br>; _g_boolean_var_58; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "PLUMA_IS_SPELL_CHECKER_DIALOG (dlg)"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="543"><td class="num" id="LN543">543</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="544"><td class="num" id="LN544">544</td><td class="line"> word = gtk_entry_get_text (<span class='macro'>GTK_ENTRY (dlg-&gt;word_entry)<span class='macro_popup'>((((GtkEntry*) (void *) ((dlg-&gt;word_entry)))))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="545"><td class="num" id="LN545">545</td><td class="line"> len = strlen (word);</td></tr>
+<tr class="codeline" data-linenumber="546"><td class="num" id="LN546">546</td><td class="line"> <span class='macro'>g_return_if_fail (len &gt; 0)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_59<br>; if (len &gt; 0) _g_boolean_var_59 = 1; else _g_boolean_var_59<br> = 0; _g_boolean_var_59; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "len &gt; 0"); return<br>; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="547"><td class="num" id="LN547">547</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="548"><td class="num" id="LN548">548</td><td class="line"> <span class='keyword'>if</span> (pluma_spell_checker_check_word (dlg-&gt;spell_checker, word, len))</td></tr>
+<tr class="codeline" data-linenumber="549"><td class="num" id="LN549">549</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="550"><td class="num" id="LN550">550</td><td class="line"> GtkListStore *store;</td></tr>
+<tr class="codeline" data-linenumber="551"><td class="num" id="LN551">551</td><td class="line"> GtkTreeIter iter;</td></tr>
+<tr class="codeline" data-linenumber="552"><td class="num" id="LN552">552</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="553"><td class="num" id="LN553">553</td><td class="line"> store = <span class='macro'>GTK_LIST_STORE (dlg-&gt;suggestions_list_model)<span class='macro_popup'>((((GtkListStore*) (void *) ((dlg-&gt;suggestions_list_model)<br>))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="554"><td class="num" id="LN554">554</td><td class="line"> gtk_list_store_clear (store);</td></tr>
+<tr class="codeline" data-linenumber="555"><td class="num" id="LN555">555</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="556"><td class="num" id="LN556">556</td><td class="line"> gtk_list_store_append (store, &amp;iter);</td></tr>
+<tr class="codeline" data-linenumber="557"><td class="num" id="LN557">557</td><td class="line"> gtk_list_store_set (store, &amp;iter,</td></tr>
+<tr class="codeline" data-linenumber="558"><td class="num" id="LN558">558</td><td class="line"> <span class='comment'>/* Translators: Displayed in the "Check Spelling" dialog if the current word isn't misspelled */</span></td></tr>
+<tr class="codeline" data-linenumber="559"><td class="num" id="LN559">559</td><td class="line"> COLUMN_SUGGESTIONS, <span class='macro'>_(<span class='string_literal'>"(correct spelling)"</span>)<span class='macro_popup'>dcgettext (((void*)0), "(correct spelling)", 5)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="560"><td class="num" id="LN560">560</td><td class="line"> -1);</td></tr>
+<tr class="codeline" data-linenumber="561"><td class="num" id="LN561">561</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="562"><td class="num" id="LN562">562</td><td class="line"> gtk_widget_set_sensitive (dlg-&gt;suggestions_list, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="563"><td class="num" id="LN563">563</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="564"><td class="num" id="LN564">564</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="565"><td class="num" id="LN565">565</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="566"><td class="num" id="LN566">566</td><td class="line"> GSList *sug;</td></tr>
+<tr class="codeline" data-linenumber="567"><td class="num" id="LN567">567</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="568"><td class="num" id="LN568">568</td><td class="line"> sug = pluma_spell_checker_get_suggestions (dlg-&gt;spell_checker,</td></tr>
+<tr class="codeline" data-linenumber="569"><td class="num" id="LN569">569</td><td class="line"> word,</td></tr>
+<tr class="codeline" data-linenumber="570"><td class="num" id="LN570">570</td><td class="line"> len);</td></tr>
+<tr class="codeline" data-linenumber="571"><td class="num" id="LN571">571</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="572"><td class="num" id="LN572">572</td><td class="line"> update_suggestions_list_model (dlg, sug);</td></tr>
+<tr class="codeline" data-linenumber="573"><td class="num" id="LN573">573</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="574"><td class="num" id="LN574">574</td><td class="line"> <span class='comment'>/* free the suggestion list */</span></td></tr>
+<tr class="codeline" data-linenumber="575"><td class="num" id="LN575">575</td><td class="line"> g_slist_free_full (sug, g_free);</td></tr>
+<tr class="codeline" data-linenumber="576"><td class="num" id="LN576">576</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="577"><td class="num" id="LN577">577</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="578"><td class="num" id="LN578">578</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="579"><td class="num" id="LN579">579</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="580"><td class="num" id="LN580">580</td><td class="line">add_word_button_clicked_handler (GtkButton *button, PlumaSpellCheckerDialog *dlg)</td></tr>
+<tr class="codeline" data-linenumber="581"><td class="num" id="LN581">581</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="582"><td class="num" id="LN582">582</td><td class="line"> gchar *word;</td></tr>
+<tr class="codeline" data-linenumber="583"><td class="num" id="LN583">583</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="584"><td class="num" id="LN584">584</td><td class="line"> <span class='macro'>g_return_if_fail (PLUMA_IS_SPELL_CHECKER_DIALOG (dlg))<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_60<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((dlg)); GType __t = ((pluma_spell_checker_dialog_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_60 = 1; else _g_boolean_var_60 = 0<br>; _g_boolean_var_60; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "PLUMA_IS_SPELL_CHECKER_DIALOG (dlg)"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="585"><td class="num" id="LN585">585</td><td class="line"> <span class='macro'>g_return_if_fail (dlg-&gt;misspelled_word != NULL)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_61<br>; if (dlg-&gt;misspelled_word != ((void*)0)) _g_boolean_var_61<br> = 1; else _g_boolean_var_61 = 0; _g_boolean_var_61; }), 1)))<br> { } else { g_return_if_fail_warning (((gchar*) 0), ((const char<br>*) (__func__)), "dlg-&gt;misspelled_word != NULL"); return; }<br> } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="586"><td class="num" id="LN586">586</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="587"><td class="num" id="LN587">587</td><td class="line"> pluma_spell_checker_add_word_to_personal (dlg-&gt;spell_checker,</td></tr>
+<tr class="codeline" data-linenumber="588"><td class="num" id="LN588">588</td><td class="line"> dlg-&gt;misspelled_word,</td></tr>
+<tr class="codeline" data-linenumber="589"><td class="num" id="LN589">589</td><td class="line"> -1);</td></tr>
+<tr class="codeline" data-linenumber="590"><td class="num" id="LN590">590</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="591"><td class="num" id="LN591">591</td><td class="line"> word = <span class='macro'>g_strdup (dlg-&gt;misspelled_word)<span class='macro_popup'>g_strdup_inline (dlg-&gt;misspelled_word)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="592"><td class="num" id="LN592">592</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="593"><td class="num" id="LN593">593</td><td class="line"> g_signal_emit (<span class='macro'>G_OBJECT (dlg)<span class='macro_popup'>((((GObject*) (void *) ((dlg)))))</span></span>, signals [ADD_WORD_TO_PERSONAL], 0, word);</td></tr>
+<tr class="codeline" data-linenumber="594"><td class="num" id="LN594">594</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="595"><td class="num" id="LN595">595</td><td class="line"> g_free (word);</td></tr>
+<tr class="codeline" data-linenumber="596"><td class="num" id="LN596">596</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="597"><td class="num" id="LN597">597</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="598"><td class="num" id="LN598">598</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="599"><td class="num" id="LN599">599</td><td class="line">ignore_button_clicked_handler (GtkButton *button, PlumaSpellCheckerDialog *dlg)</td></tr>
+<tr class="codeline" data-linenumber="600"><td class="num" id="LN600">600</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="601"><td class="num" id="LN601">601</td><td class="line"> gchar *word;</td></tr>
+<tr class="codeline" data-linenumber="602"><td class="num" id="LN602">602</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="603"><td class="num" id="LN603">603</td><td class="line"> <span class='macro'>g_return_if_fail (PLUMA_IS_SPELL_CHECKER_DIALOG (dlg))<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_62<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((dlg)); GType __t = ((pluma_spell_checker_dialog_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_62 = 1; else _g_boolean_var_62 = 0<br>; _g_boolean_var_62; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "PLUMA_IS_SPELL_CHECKER_DIALOG (dlg)"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="604"><td class="num" id="LN604">604</td><td class="line"> <span class='macro'>g_return_if_fail (dlg-&gt;misspelled_word != NULL)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_63<br>; if (dlg-&gt;misspelled_word != ((void*)0)) _g_boolean_var_63<br> = 1; else _g_boolean_var_63 = 0; _g_boolean_var_63; }), 1)))<br> { } else { g_return_if_fail_warning (((gchar*) 0), ((const char<br>*) (__func__)), "dlg-&gt;misspelled_word != NULL"); return; }<br> } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="605"><td class="num" id="LN605">605</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="606"><td class="num" id="LN606">606</td><td class="line"> word = <span class='macro'>g_strdup (dlg-&gt;misspelled_word)<span class='macro_popup'>g_strdup_inline (dlg-&gt;misspelled_word)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="607"><td class="num" id="LN607">607</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="608"><td class="num" id="LN608">608</td><td class="line"> g_signal_emit (<span class='macro'>G_OBJECT (dlg)<span class='macro_popup'>((((GObject*) (void *) ((dlg)))))</span></span>, signals [IGNORE], 0, word);</td></tr>
+<tr class="codeline" data-linenumber="609"><td class="num" id="LN609">609</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="610"><td class="num" id="LN610">610</td><td class="line"> g_free (word);</td></tr>
+<tr class="codeline" data-linenumber="611"><td class="num" id="LN611">611</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="612"><td class="num" id="LN612">612</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="613"><td class="num" id="LN613">613</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="614"><td class="num" id="LN614">614</td><td class="line">ignore_all_button_clicked_handler (GtkButton *button, PlumaSpellCheckerDialog *dlg)</td></tr>
+<tr class="codeline" data-linenumber="615"><td class="num" id="LN615">615</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="616"><td class="num" id="LN616">616</td><td class="line"> gchar *word;</td></tr>
+<tr class="codeline" data-linenumber="617"><td class="num" id="LN617">617</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="618"><td class="num" id="LN618">618</td><td class="line"> <span class='macro'>g_return_if_fail (PLUMA_IS_SPELL_CHECKER_DIALOG (dlg))<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_64<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((dlg)); GType __t = ((pluma_spell_checker_dialog_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_64 = 1; else _g_boolean_var_64 = 0<br>; _g_boolean_var_64; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "PLUMA_IS_SPELL_CHECKER_DIALOG (dlg)"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="619"><td class="num" id="LN619">619</td><td class="line"> <span class='macro'>g_return_if_fail (dlg-&gt;misspelled_word != NULL)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_65<br>; if (dlg-&gt;misspelled_word != ((void*)0)) _g_boolean_var_65<br> = 1; else _g_boolean_var_65 = 0; _g_boolean_var_65; }), 1)))<br> { } else { g_return_if_fail_warning (((gchar*) 0), ((const char<br>*) (__func__)), "dlg-&gt;misspelled_word != NULL"); return; }<br> } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="620"><td class="num" id="LN620">620</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="621"><td class="num" id="LN621">621</td><td class="line"> pluma_spell_checker_add_word_to_session (dlg-&gt;spell_checker,</td></tr>
+<tr class="codeline" data-linenumber="622"><td class="num" id="LN622">622</td><td class="line"> dlg-&gt;misspelled_word,</td></tr>
+<tr class="codeline" data-linenumber="623"><td class="num" id="LN623">623</td><td class="line"> -1);</td></tr>
+<tr class="codeline" data-linenumber="624"><td class="num" id="LN624">624</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="625"><td class="num" id="LN625">625</td><td class="line"> word = <span class='macro'>g_strdup (dlg-&gt;misspelled_word)<span class='macro_popup'>g_strdup_inline (dlg-&gt;misspelled_word)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="626"><td class="num" id="LN626">626</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="627"><td class="num" id="LN627">627</td><td class="line"> g_signal_emit (<span class='macro'>G_OBJECT (dlg)<span class='macro_popup'>((((GObject*) (void *) ((dlg)))))</span></span>, signals [IGNORE_ALL], 0, word);</td></tr>
+<tr class="codeline" data-linenumber="628"><td class="num" id="LN628">628</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="629"><td class="num" id="LN629">629</td><td class="line"> g_free (word);</td></tr>
+<tr class="codeline" data-linenumber="630"><td class="num" id="LN630">630</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="631"><td class="num" id="LN631">631</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="632"><td class="num" id="LN632">632</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="633"><td class="num" id="LN633">633</td><td class="line">change_button_clicked_handler (GtkButton *button, PlumaSpellCheckerDialog *dlg)</td></tr>
+<tr class="codeline" data-linenumber="634"><td class="num" id="LN634">634</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="635"><td class="num" id="LN635">635</td><td class="line"> <span class='keyword'>const</span> gchar *entry_text;</td></tr>
+<tr class="codeline" data-linenumber="636"><td class="num" id="LN636">636</td><td class="line"> gchar *change;</td></tr>
+<tr class="codeline" data-linenumber="637"><td class="num" id="LN637">637</td><td class="line"> gchar *word;</td></tr>
+<tr class="codeline" data-linenumber="638"><td class="num" id="LN638">638</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="639"><td class="num" id="LN639">639</td><td class="line"> <span class='macro'>g_return_if_fail (PLUMA_IS_SPELL_CHECKER_DIALOG (dlg))<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_66<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((dlg)); GType __t = ((pluma_spell_checker_dialog_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_66 = 1; else _g_boolean_var_66 = 0<br>; _g_boolean_var_66; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "PLUMA_IS_SPELL_CHECKER_DIALOG (dlg)"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="640"><td class="num" id="LN640">640</td><td class="line"> <span class='macro'>g_return_if_fail (dlg-&gt;misspelled_word != NULL)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_67<br>; if (dlg-&gt;misspelled_word != ((void*)0)) _g_boolean_var_67<br> = 1; else _g_boolean_var_67 = 0; _g_boolean_var_67; }), 1)))<br> { } else { g_return_if_fail_warning (((gchar*) 0), ((const char<br>*) (__func__)), "dlg-&gt;misspelled_word != NULL"); return; }<br> } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="641"><td class="num" id="LN641">641</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="642"><td class="num" id="LN642">642</td><td class="line"> entry_text = gtk_entry_get_text (<span class='macro'>GTK_ENTRY (dlg-&gt;word_entry)<span class='macro_popup'>((((GtkEntry*) (void *) ((dlg-&gt;word_entry)))))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="643"><td class="num" id="LN643">643</td><td class="line"> <span class='macro'>g_return_if_fail (entry_text != NULL)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_68<br>; if (entry_text != ((void*)0)) _g_boolean_var_68 = 1; else _g_boolean_var_68<br> = 0; _g_boolean_var_68; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "entry_text != NULL"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="644"><td class="num" id="LN644">644</td><td class="line"> <span class='macro'>g_return_if_fail (*entry_text != '\0')<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_69<br>; if (*entry_text != '\0') _g_boolean_var_69 = 1; else _g_boolean_var_69<br> = 0; _g_boolean_var_69; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "*entry_text != '\\0'"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="645"><td class="num" id="LN645">645</td><td class="line"> change = <span class='macro'>g_strdup (entry_text)<span class='macro_popup'>g_strdup_inline (entry_text)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="646"><td class="num" id="LN646">646</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="647"><td class="num" id="LN647">647</td><td class="line"> pluma_spell_checker_set_correction (dlg-&gt;spell_checker,</td></tr>
+<tr class="codeline" data-linenumber="648"><td class="num" id="LN648">648</td><td class="line"> dlg-&gt;misspelled_word, -1,</td></tr>
+<tr class="codeline" data-linenumber="649"><td class="num" id="LN649">649</td><td class="line"> change, -1);</td></tr>
+<tr class="codeline" data-linenumber="650"><td class="num" id="LN650">650</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="651"><td class="num" id="LN651">651</td><td class="line"> word = <span class='macro'>g_strdup (dlg-&gt;misspelled_word)<span class='macro_popup'>g_strdup_inline (dlg-&gt;misspelled_word)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="652"><td class="num" id="LN652">652</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="653"><td class="num" id="LN653">653</td><td class="line"> g_signal_emit (<span class='macro'>G_OBJECT (dlg)<span class='macro_popup'>((((GObject*) (void *) ((dlg)))))</span></span>, signals [CHANGE], 0, word, change);</td></tr>
+<tr class="codeline" data-linenumber="654"><td class="num" id="LN654">654</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="655"><td class="num" id="LN655">655</td><td class="line"> g_free (word);</td></tr>
+<tr class="codeline" data-linenumber="656"><td class="num" id="LN656">656</td><td class="line"> g_free (change);</td></tr>
+<tr class="codeline" data-linenumber="657"><td class="num" id="LN657">657</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="658"><td class="num" id="LN658">658</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="659"><td class="num" id="LN659">659</td><td class="line"><span class='comment'>/* double click on one of the suggestions is like clicking on "change" */</span></td></tr>
+<tr class="codeline" data-linenumber="660"><td class="num" id="LN660">660</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="661"><td class="num" id="LN661">661</td><td class="line">suggestions_list_row_activated_handler (GtkTreeView *view,</td></tr>
+<tr class="codeline" data-linenumber="662"><td class="num" id="LN662">662</td><td class="line"> GtkTreePath *path,</td></tr>
+<tr class="codeline" data-linenumber="663"><td class="num" id="LN663">663</td><td class="line"> GtkTreeViewColumn *column,</td></tr>
+<tr class="codeline" data-linenumber="664"><td class="num" id="LN664">664</td><td class="line"> PlumaSpellCheckerDialog *dlg)</td></tr>
+<tr class="codeline" data-linenumber="665"><td class="num" id="LN665">665</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="666"><td class="num" id="LN666">666</td><td class="line"> <span class='macro'>g_return_if_fail (PLUMA_IS_SPELL_CHECKER_DIALOG (dlg))<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_70<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((dlg)); GType __t = ((pluma_spell_checker_dialog_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_70 = 1; else _g_boolean_var_70 = 0<br>; _g_boolean_var_70; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "PLUMA_IS_SPELL_CHECKER_DIALOG (dlg)"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="667"><td class="num" id="LN667">667</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="668"><td class="num" id="LN668">668</td><td class="line"> change_button_clicked_handler (<span class='macro'>GTK_BUTTON (dlg-&gt;change_button)<span class='macro_popup'>((((GtkButton*) (void *) ((dlg-&gt;change_button)))))</span></span>, dlg);</td></tr>
+<tr class="codeline" data-linenumber="669"><td class="num" id="LN669">669</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="670"><td class="num" id="LN670">670</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="671"><td class="num" id="LN671">671</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="672"><td class="num" id="LN672">672</td><td class="line">change_all_button_clicked_handler (GtkButton *button, PlumaSpellCheckerDialog *dlg)</td></tr>
+<tr class="codeline" data-linenumber="673"><td class="num" id="LN673">673</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="674"><td class="num" id="LN674">674</td><td class="line"> <span class='keyword'>const</span> gchar *entry_text;</td></tr>
+<tr class="codeline" data-linenumber="675"><td class="num" id="LN675">675</td><td class="line"> gchar *change;</td></tr>
+<tr class="codeline" data-linenumber="676"><td class="num" id="LN676">676</td><td class="line"> gchar *word;</td></tr>
+<tr class="codeline" data-linenumber="677"><td class="num" id="LN677">677</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="678"><td class="num" id="LN678">678</td><td class="line"> <span class='macro'>g_return_if_fail (PLUMA_IS_SPELL_CHECKER_DIALOG (dlg))<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_71<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((dlg)); GType __t = ((pluma_spell_checker_dialog_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_71 = 1; else _g_boolean_var_71 = 0<br>; _g_boolean_var_71; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "PLUMA_IS_SPELL_CHECKER_DIALOG (dlg)"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="679"><td class="num" id="LN679">679</td><td class="line"> <span class='macro'>g_return_if_fail (dlg-&gt;misspelled_word != NULL)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_72<br>; if (dlg-&gt;misspelled_word != ((void*)0)) _g_boolean_var_72<br> = 1; else _g_boolean_var_72 = 0; _g_boolean_var_72; }), 1)))<br> { } else { g_return_if_fail_warning (((gchar*) 0), ((const char<br>*) (__func__)), "dlg-&gt;misspelled_word != NULL"); return; }<br> } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="680"><td class="num" id="LN680">680</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="681"><td class="num" id="LN681">681</td><td class="line"> entry_text = gtk_entry_get_text (<span class='macro'>GTK_ENTRY (dlg-&gt;word_entry)<span class='macro_popup'>((((GtkEntry*) (void *) ((dlg-&gt;word_entry)))))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="682"><td class="num" id="LN682">682</td><td class="line"> <span class='macro'>g_return_if_fail (entry_text != NULL)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_73<br>; if (entry_text != ((void*)0)) _g_boolean_var_73 = 1; else _g_boolean_var_73<br> = 0; _g_boolean_var_73; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "entry_text != NULL"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="683"><td class="num" id="LN683">683</td><td class="line"> <span class='macro'>g_return_if_fail (*entry_text != '\0')<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_74<br>; if (*entry_text != '\0') _g_boolean_var_74 = 1; else _g_boolean_var_74<br> = 0; _g_boolean_var_74; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "*entry_text != '\\0'"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="684"><td class="num" id="LN684">684</td><td class="line"> change = <span class='macro'>g_strdup (entry_text)<span class='macro_popup'>g_strdup_inline (entry_text)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="685"><td class="num" id="LN685">685</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="686"><td class="num" id="LN686">686</td><td class="line"> pluma_spell_checker_set_correction (dlg-&gt;spell_checker,</td></tr>
+<tr class="codeline" data-linenumber="687"><td class="num" id="LN687">687</td><td class="line"> dlg-&gt;misspelled_word, -1,</td></tr>
+<tr class="codeline" data-linenumber="688"><td class="num" id="LN688">688</td><td class="line"> change, -1);</td></tr>
+<tr class="codeline" data-linenumber="689"><td class="num" id="LN689">689</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="690"><td class="num" id="LN690">690</td><td class="line"> word = <span class='macro'>g_strdup (dlg-&gt;misspelled_word)<span class='macro_popup'>g_strdup_inline (dlg-&gt;misspelled_word)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="691"><td class="num" id="LN691">691</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="692"><td class="num" id="LN692">692</td><td class="line"> g_signal_emit (<span class='macro'>G_OBJECT (dlg)<span class='macro_popup'>((((GObject*) (void *) ((dlg)))))</span></span>, signals [CHANGE_ALL], 0, word, change);</td></tr>
+<tr class="codeline" data-linenumber="693"><td class="num" id="LN693">693</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="694"><td class="num" id="LN694">694</td><td class="line"> g_free (word);</td></tr>
+<tr class="codeline" data-linenumber="695"><td class="num" id="LN695">695</td><td class="line"> g_free (change);</td></tr>
+<tr class="codeline" data-linenumber="696"><td class="num" id="LN696">696</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="697"><td class="num" id="LN697">697</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="698"><td class="num" id="LN698">698</td><td class="line"><span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="699"><td class="num" id="LN699">699</td><td class="line">pluma_spell_checker_dialog_set_completed (PlumaSpellCheckerDialog *dlg)</td></tr>
+<tr class="codeline" data-linenumber="700"><td class="num" id="LN700">700</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="701"><td class="num" id="LN701">701</td><td class="line"> gchar *tmp;</td></tr>
+<tr class="codeline" data-linenumber="702"><td class="num" id="LN702">702</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="703"><td class="num" id="LN703">703</td><td class="line"> <span class='macro'>g_return_if_fail (PLUMA_IS_SPELL_CHECKER_DIALOG (dlg))<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_75<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((dlg)); GType __t = ((pluma_spell_checker_dialog_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_75 = 1; else _g_boolean_var_75 = 0<br>; _g_boolean_var_75; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "PLUMA_IS_SPELL_CHECKER_DIALOG (dlg)"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="704"><td class="num" id="LN704">704</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="705"><td class="num" id="LN705">705</td><td class="line"> tmp = g_strdup_printf(<span class='string_literal'>"&lt;b&gt;%s&lt;/b&gt;"</span>, <span class='macro'>_(<span class='string_literal'>"Completed spell checking"</span>)<span class='macro_popup'>dcgettext (((void*)0), "Completed spell checking", 5)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="706"><td class="num" id="LN706">706</td><td class="line"> gtk_label_set_label (<span class='macro'>GTK_LABEL (dlg-&gt;misspelled_word_label)<span class='macro_popup'>((((GtkLabel*) (void *) ((dlg-&gt;misspelled_word_label)))))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="707"><td class="num" id="LN707">707</td><td class="line"> tmp);</td></tr>
+<tr class="codeline" data-linenumber="708"><td class="num" id="LN708">708</td><td class="line"> g_free (tmp);</td></tr>
+<tr class="codeline" data-linenumber="709"><td class="num" id="LN709">709</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="710"><td class="num" id="LN710">710</td><td class="line"> gtk_list_store_clear (<span class='macro'>GTK_LIST_STORE (dlg-&gt;suggestions_list_model)<span class='macro_popup'>((((GtkListStore*) (void *) ((dlg-&gt;suggestions_list_model)<br>))))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="711"><td class="num" id="LN711">711</td><td class="line"> gtk_entry_set_text (<span class='macro'>GTK_ENTRY (dlg-&gt;word_entry)<span class='macro_popup'>((((GtkEntry*) (void *) ((dlg-&gt;word_entry)))))</span></span>, <span class='string_literal'>""</span>);</td></tr>
+<tr class="codeline" data-linenumber="712"><td class="num" id="LN712">712</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="713"><td class="num" id="LN713">713</td><td class="line"> gtk_widget_set_sensitive (dlg-&gt;word_entry, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="714"><td class="num" id="LN714">714</td><td class="line"> gtk_widget_set_sensitive (dlg-&gt;check_word_button, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="715"><td class="num" id="LN715">715</td><td class="line"> gtk_widget_set_sensitive (dlg-&gt;ignore_button, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="716"><td class="num" id="LN716">716</td><td class="line"> gtk_widget_set_sensitive (dlg-&gt;ignore_all_button, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="717"><td class="num" id="LN717">717</td><td class="line"> gtk_widget_set_sensitive (dlg-&gt;change_button, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="718"><td class="num" id="LN718">718</td><td class="line"> gtk_widget_set_sensitive (dlg-&gt;change_all_button, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="719"><td class="num" id="LN719">719</td><td class="line"> gtk_widget_set_sensitive (dlg-&gt;add_word_button, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="720"><td class="num" id="LN720">720</td><td class="line"> gtk_widget_set_sensitive (dlg-&gt;suggestions_list, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="721"><td class="num" id="LN721">721</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="722"><td class="num" id="LN722">722</td><td class="line"> </td></tr>
+</table></body></html>
diff --git a/2023-05-28-030536-6612-1@f643dde74cbd_master/report-6c7faf.html b/2023-05-28-030536-6612-1@f643dde74cbd_master/report-6c7faf.html
new file mode 100644
index 00000000..839fd2ca
--- /dev/null
+++ b/2023-05-28-030536-6612-1@f643dde74cbd_master/report-6c7faf.html
@@ -0,0 +1,1444 @@
+<!doctype html>
+<html>
+<head>
+<title>document-saver.c</title>
+
+<style type="text/css">
+body { color:#000000; background-color:#ffffff }
+body { font-family:Helvetica, sans-serif; font-size:10pt }
+h1 { font-size:14pt }
+.FileName { margin-top: 5px; margin-bottom: 5px; display: inline; }
+.FileNav { margin-left: 5px; margin-right: 5px; display: inline; }
+.FileNav a { text-decoration:none; font-size: larger; }
+.divider { margin-top: 30px; margin-bottom: 30px; height: 15px; }
+.divider { background-color: gray; }
+.code { border-collapse:collapse; width:100%; }
+.code { font-family: "Monospace", monospace; font-size:10pt }
+.code { line-height: 1.2em }
+.comment { color: green; font-style: oblique }
+.keyword { color: blue }
+.string_literal { color: red }
+.directive { color: darkmagenta }
+
+/* Macros and variables could have pop-up notes hidden by default.
+ - Macro pop-up: expansion of the macro
+ - Variable pop-up: value (table) of the variable */
+.macro_popup, .variable_popup { display: none; }
+
+/* Pop-up appears on mouse-hover event. */
+.macro:hover .macro_popup, .variable:hover .variable_popup {
+ display: block;
+ padding: 2px;
+ -webkit-border-radius:5px;
+ -webkit-box-shadow:1px 1px 7px #000;
+ border-radius:5px;
+ box-shadow:1px 1px 7px #000;
+ position: absolute;
+ top: -1em;
+ left:10em;
+ z-index: 1
+}
+
+.macro_popup {
+ border: 2px solid red;
+ background-color:#FFF0F0;
+ font-weight: normal;
+}
+
+.variable_popup {
+ border: 2px solid blue;
+ background-color:#F0F0FF;
+ font-weight: bold;
+ font-family: Helvetica, sans-serif;
+ font-size: 9pt;
+}
+
+/* Pop-up notes needs a relative position as a base where they pops up. */
+.macro, .variable {
+ background-color: PaleGoldenRod;
+ position: relative;
+}
+.macro { color: DarkMagenta; }
+
+#tooltiphint {
+ position: fixed;
+ width: 50em;
+ margin-left: -25em;
+ left: 50%;
+ padding: 10px;
+ border: 1px solid #b0b0b0;
+ border-radius: 2px;
+ box-shadow: 1px 1px 7px black;
+ background-color: #c0c0c0;
+ z-index: 2;
+}
+
+.num { width:2.5em; padding-right:2ex; background-color:#eeeeee }
+.num { text-align:right; font-size:8pt }
+.num { color:#444444 }
+.line { padding-left: 1ex; border-left: 3px solid #ccc }
+.line { white-space: pre }
+.msg { -webkit-box-shadow:1px 1px 7px #000 }
+.msg { box-shadow:1px 1px 7px #000 }
+.msg { -webkit-border-radius:5px }
+.msg { border-radius:5px }
+.msg { font-family:Helvetica, sans-serif; font-size:8pt }
+.msg { float:left }
+.msg { position:relative }
+.msg { padding:0.25em 1ex 0.25em 1ex }
+.msg { margin-top:10px; margin-bottom:10px }
+.msg { font-weight:bold }
+.msg { max-width:60em; word-wrap: break-word; white-space: pre-wrap }
+.msgT { padding:0x; spacing:0x }
+.msgEvent { background-color:#fff8b4; color:#000000 }
+.msgControl { background-color:#bbbbbb; color:#000000 }
+.msgNote { background-color:#ddeeff; color:#000000 }
+.mrange { background-color:#dfddf3 }
+.mrange { border-bottom:1px solid #6F9DBE }
+.PathIndex { font-weight: bold; padding:0px 5px; margin-right:5px; }
+.PathIndex { -webkit-border-radius:8px }
+.PathIndex { border-radius:8px }
+.PathIndexEvent { background-color:#bfba87 }
+.PathIndexControl { background-color:#8c8c8c }
+.PathIndexPopUp { background-color: #879abc; }
+.PathNav a { text-decoration:none; font-size: larger }
+.CodeInsertionHint { font-weight: bold; background-color: #10dd10 }
+.CodeRemovalHint { background-color:#de1010 }
+.CodeRemovalHint { border-bottom:1px solid #6F9DBE }
+.msg.selected{ background-color:orange !important; }
+
+table.simpletable {
+ padding: 5px;
+ font-size:12pt;
+ margin:20px;
+ border-collapse: collapse; border-spacing: 0px;
+}
+td.rowname {
+ text-align: right;
+ vertical-align: top;
+ font-weight: bold;
+ color:#444444;
+ padding-right:2ex;
+}
+
+/* Hidden text. */
+input.spoilerhider + label {
+ cursor: pointer;
+ text-decoration: underline;
+ display: block;
+}
+input.spoilerhider {
+ display: none;
+}
+input.spoilerhider ~ .spoiler {
+ overflow: hidden;
+ margin: 10px auto 0;
+ height: 0;
+ opacity: 0;
+}
+input.spoilerhider:checked + label + .spoiler{
+ height: auto;
+ opacity: 1;
+}
+</style>
+</head>
+<body>
+<!-- BUGDESC Using a fixed address is not portable because that address will probably not be valid in all environments or platforms -->
+
+<!-- BUGTYPE Use fixed address -->
+
+<!-- BUGCATEGORY Logic error -->
+
+<!-- BUGFILE /rootdir/tests/document-saver.c -->
+
+<!-- FILENAME document-saver.c -->
+
+<!-- FUNCTIONNAME saver_test_data_new -->
+
+<!-- ISSUEHASHCONTENTOFLINEINCONTEXT 6c7faf499395401ae9fc2e099e1b99c4 -->
+
+<!-- BUGLINE 68 -->
+
+<!-- BUGCOLUMN 12 -->
+
+<!-- BUGPATHLENGTH 12 -->
+
+<!-- BUGMETAEND -->
+<!-- REPORTHEADER -->
+<h3>Bug Summary</h3>
+<table class="simpletable">
+<tr><td class="rowname">File:</td><td>tests/document-saver.c</td></tr>
+<tr><td class="rowname">Warning:</td><td><a href="#EndPath">line 68, column 12</a><br />Using a fixed address is not portable because that address will probably not be valid in all environments or platforms</td></tr>
+
+</table>
+<!-- REPORTSUMMARYEXTRA -->
+<h3>Annotated Source Code</h3>
+<p>Press <a href="#" onclick="toggleHelp(); return false;">'?'</a>
+ to see keyboard shortcuts</p>
+<input type="checkbox" class="spoilerhider" id="showinvocation" />
+<label for="showinvocation" >Show analyzer invocation</label>
+<div class="spoiler">clang -cc1 -cc1 -triple x86_64-redhat-linux-gnu -analyze -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name document-saver.c -analyzer-checker=core -analyzer-checker=apiModeling -analyzer-checker=unix -analyzer-checker=deadcode -analyzer-checker=security.insecureAPI.UncheckedReturn -analyzer-checker=security.insecureAPI.getpw -analyzer-checker=security.insecureAPI.gets -analyzer-checker=security.insecureAPI.mktemp -analyzer-checker=security.insecureAPI.mkstemp -analyzer-checker=security.insecureAPI.vfork -analyzer-checker=nullability.NullPassedToNonnull -analyzer-checker=nullability.NullReturnedFromNonnull -analyzer-output plist -w -setup-static-analyzer -mrelocation-model static -mframe-pointer=none -fmath-errno -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=2 -target-cpu x86-64 -tune-cpu generic -debugger-tuning=gdb -fcoverage-compilation-dir=/rootdir/tests -resource-dir /usr/lib64/clang/16 -D HAVE_CONFIG_H -I . -I .. -I .. -I ../pluma -I /usr/include/libxml2 -I /usr/include/glib-2.0 -I /usr/lib64/glib-2.0/include -I /usr/include/sysprof-4 -I /usr/include/libmount -I /usr/include/blkid -I /usr/include/gtk-3.0 -I /usr/include/pango-1.0 -I /usr/include/harfbuzz -I /usr/include/freetype2 -I /usr/include/libpng16 -I /usr/include/fribidi -I /usr/include/cairo -I /usr/include/pixman-1 -I /usr/include/gdk-pixbuf-2.0 -I /usr/include/gio-unix-2.0 -I /usr/include/cloudproviders -I /usr/include/atk-1.0 -I /usr/include/at-spi2-atk/2.0 -I /usr/include/at-spi-2.0 -I /usr/include/dbus-1.0 -I /usr/lib64/dbus-1.0/include -I /usr/include/gtksourceview-4 -I /usr/include/libpeas-1.0 -I /usr/include/gobject-introspection-1.0 -internal-isystem /usr/lib64/clang/16/include -internal-isystem /usr/local/include -internal-isystem /usr/bin/../lib/gcc/x86_64-redhat-linux/13/../../../../x86_64-redhat-linux/include -internal-externc-isystem /include -internal-externc-isystem /usr/include -O2 -fdebug-compilation-dir=/rootdir/tests -ferror-limit 19 -fgnuc-version=4.2.1 -vectorize-loops -vectorize-slp -analyzer-checker deadcode.DeadStores -analyzer-checker alpha.deadcode.UnreachableCode -analyzer-checker alpha.core.CastSize -analyzer-checker alpha.core.CastToStruct -analyzer-checker alpha.core.IdenticalExpr -analyzer-checker alpha.core.SizeofPtr -analyzer-checker alpha.security.ArrayBoundV2 -analyzer-checker alpha.security.MallocOverflow -analyzer-checker alpha.security.ReturnPtrRange -analyzer-checker alpha.unix.SimpleStream -analyzer-checker alpha.unix.cstring.BufferOverlap -analyzer-checker alpha.unix.cstring.NotNullTerminated -analyzer-checker alpha.unix.cstring.OutOfBounds -analyzer-checker alpha.core.FixedAddr -analyzer-checker security.insecureAPI.strcpy -analyzer-output=html -faddrsig -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o /rootdir/html-report/2023-05-28-030536-6612-1 -x c document-saver.c
+</div>
+<div id='tooltiphint' hidden="true">
+ <p>Keyboard shortcuts: </p>
+ <ul>
+ <li>Use 'j/k' keys for keyboard navigation</li>
+ <li>Use 'Shift+S' to show/hide relevant lines</li>
+ <li>Use '?' to toggle this window</li>
+ </ul>
+ <a href="#" onclick="toggleHelp(); return false;">Close</a>
+</div>
+<script type='text/javascript'>
+var relevant_lines = {"1": {"61": 1, "62": 1, "63": 1, "64": 1, "66": 1, "67": 1, "68": 1, "366": 1, "367": 1, "368": 1, "369": 1, "370": 1, "371": 1, "373": 1, "377": 1, "379": 1, "381": 1, "385": 1, "401": 1, "402": 1, "403": 1, "404": 1, "405": 1, "406": 1, "407": 1, "408": 1, "409": 1, "411": 1, "412": 1, "414": 1, "416": 1, "417": 1, "419": 1, "423": 1, "425": 1, "427": 1, "428": 1, "430": 1, "432": 1, "435": 1, "436": 1, "438": 1, "440": 1, "445": 1, "447": 1, "488": 1, "489": 1, "490": 1, "491": 1}, "6217": {"308": 1, "309": 1, "310": 1, "311": 1, "314": 1, "321": 1}};
+
+var filterCounterexample = function (hide) {
+ var tables = document.getElementsByClassName("code");
+ for (var t=0; t<tables.length; t++) {
+ var table = tables[t];
+ var file_id = table.getAttribute("data-fileid");
+ var lines_in_fid = relevant_lines[file_id];
+ if (!lines_in_fid) {
+ lines_in_fid = {};
+ }
+ var lines = table.getElementsByClassName("codeline");
+ for (var i=0; i<lines.length; i++) {
+ var el = lines[i];
+ var lineNo = el.getAttribute("data-linenumber");
+ if (!lines_in_fid[lineNo]) {
+ if (hide) {
+ el.setAttribute("hidden", "");
+ } else {
+ el.removeAttribute("hidden");
+ }
+ }
+ }
+ }
+}
+
+window.addEventListener("keydown", function (event) {
+ if (event.defaultPrevented) {
+ return;
+ }
+ // SHIFT + S
+ if (event.shiftKey && event.keyCode == 83) {
+ var checked = document.getElementsByName("showCounterexample")[0].checked;
+ filterCounterexample(!checked);
+ document.getElementsByName("showCounterexample")[0].click();
+ } else {
+ return;
+ }
+ event.preventDefault();
+}, true);
+
+document.addEventListener("DOMContentLoaded", function() {
+ document.querySelector('input[name="showCounterexample"]').onchange=
+ function (event) {
+ filterCounterexample(this.checked);
+ };
+});
+</script>
+
+<form>
+ <input type="checkbox" name="showCounterexample" id="showCounterexample" />
+ <label for="showCounterexample">
+ Show only relevant lines
+ </label>
+ <input type="checkbox" name="showArrows"
+ id="showArrows" style="margin-left: 10px" />
+ <label for="showArrows">
+ Show control flow arrows
+ </label>
+</form>
+
+<script type='text/javascript'>
+// Return range of numbers from a range [lower, upper).
+function range(lower, upper) {
+ var array = [];
+ for (var i = lower; i <= upper; ++i) {
+ array.push(i);
+ }
+ return array;
+}
+
+var getRelatedArrowIndices = function(pathId) {
+ // HTML numeration of events is a bit different than it is in the path.
+ // Everything is rotated one step to the right, so the last element
+ // (error diagnostic) has index 0.
+ if (pathId == 0) {
+ // arrowIndices has at least 2 elements
+ pathId = arrowIndices.length - 1;
+ }
+
+ return range(arrowIndices[pathId], arrowIndices[pathId - 1]);
+}
+
+var highlightArrowsForSelectedEvent = function() {
+ const selectedNum = findNum();
+ const arrowIndicesToHighlight = getRelatedArrowIndices(selectedNum);
+ arrowIndicesToHighlight.forEach((index) => {
+ var arrow = document.querySelector("#arrow" + index);
+ if(arrow) {
+ classListAdd(arrow, "selected")
+ }
+ });
+}
+
+var getAbsoluteBoundingRect = function(element) {
+ const relative = element.getBoundingClientRect();
+ return {
+ left: relative.left + window.pageXOffset,
+ right: relative.right + window.pageXOffset,
+ top: relative.top + window.pageYOffset,
+ bottom: relative.bottom + window.pageYOffset,
+ height: relative.height,
+ width: relative.width
+ };
+}
+
+var drawArrow = function(index) {
+ // This function is based on the great answer from SO:
+ // https://stackoverflow.com/a/39575674/11582326
+ var start = document.querySelector("#start" + index);
+ var end = document.querySelector("#end" + index);
+ var arrow = document.querySelector("#arrow" + index);
+
+ var startRect = getAbsoluteBoundingRect(start);
+ var endRect = getAbsoluteBoundingRect(end);
+
+ // It is an arrow from a token to itself, no need to visualize it.
+ if (startRect.top == endRect.top &&
+ startRect.left == endRect.left)
+ return;
+
+ // Each arrow is a very simple Bézier curve, with two nodes and
+ // two handles. So, we need to calculate four points in the window:
+ // * start node
+ var posStart = { x: 0, y: 0 };
+ // * end node
+ var posEnd = { x: 0, y: 0 };
+ // * handle for the start node
+ var startHandle = { x: 0, y: 0 };
+ // * handle for the end node
+ var endHandle = { x: 0, y: 0 };
+ // One can visualize it as follows:
+ //
+ // start handle
+ // /
+ // X"""_.-""""X
+ // .' \
+ // / start node
+ // |
+ // |
+ // | end node
+ // \ /
+ // `->X
+ // X-'
+ // \
+ // end handle
+ //
+ // NOTE: (0, 0) is the top left corner of the window.
+
+ // We have 3 similar, but still different scenarios to cover:
+ //
+ // 1. Two tokens on different lines.
+ // -xxx
+ // /
+ // \
+ // -> xxx
+ // In this situation, we draw arrow on the left curving to the left.
+ // 2. Two tokens on the same line, and the destination is on the right.
+ // ____
+ // / \
+ // / V
+ // xxx xxx
+ // In this situation, we draw arrow above curving upwards.
+ // 3. Two tokens on the same line, and the destination is on the left.
+ // xxx xxx
+ // ^ /
+ // \____/
+ // In this situation, we draw arrow below curving downwards.
+ const onDifferentLines = startRect.top <= endRect.top - 5 ||
+ startRect.top >= endRect.top + 5;
+ const leftToRight = startRect.left < endRect.left;
+
+ // NOTE: various magic constants are chosen empirically for
+ // better positioning and look
+ if (onDifferentLines) {
+ // Case #1
+ const topToBottom = startRect.top < endRect.top;
+ posStart.x = startRect.left - 1;
+ // We don't want to start it at the top left corner of the token,
+ // it doesn't feel like this is where the arrow comes from.
+ // For this reason, we start it in the middle of the left side
+ // of the token.
+ posStart.y = startRect.top + startRect.height / 2;
+
+ // End node has arrow head and we give it a bit more space.
+ posEnd.x = endRect.left - 4;
+ posEnd.y = endRect.top;
+
+ // Utility object with x and y offsets for handles.
+ var curvature = {
+ // We want bottom-to-top arrow to curve a bit more, so it doesn't
+ // overlap much with top-to-bottom curves (much more frequent).
+ x: topToBottom ? 15 : 25,
+ y: Math.min((posEnd.y - posStart.y) / 3, 10)
+ }
+
+ // When destination is on the different line, we can make a
+ // curvier arrow because we have space for it.
+ // So, instead of using
+ //
+ // startHandle.x = posStart.x - curvature.x
+ // endHandle.x = posEnd.x - curvature.x
+ //
+ // We use the leftmost of these two values for both handles.
+ startHandle.x = Math.min(posStart.x, posEnd.x) - curvature.x;
+ endHandle.x = startHandle.x;
+
+ // Curving downwards from the start node...
+ startHandle.y = posStart.y + curvature.y;
+ // ... and upwards from the end node.
+ endHandle.y = posEnd.y - curvature.y;
+
+ } else if (leftToRight) {
+ // Case #2
+ // Starting from the top right corner...
+ posStart.x = startRect.right - 1;
+ posStart.y = startRect.top;
+
+ // ...and ending at the top left corner of the end token.
+ posEnd.x = endRect.left + 1;
+ posEnd.y = endRect.top - 1;
+
+ // Utility object with x and y offsets for handles.
+ var curvature = {
+ x: Math.min((posEnd.x - posStart.x) / 3, 15),
+ y: 5
+ }
+
+ // Curving to the right...
+ startHandle.x = posStart.x + curvature.x;
+ // ... and upwards from the start node.
+ startHandle.y = posStart.y - curvature.y;
+
+ // And to the left...
+ endHandle.x = posEnd.x - curvature.x;
+ // ... and upwards from the end node.
+ endHandle.y = posEnd.y - curvature.y;
+
+ } else {
+ // Case #3
+ // Starting from the bottom right corner...
+ posStart.x = startRect.right;
+ posStart.y = startRect.bottom;
+
+ // ...and ending also at the bottom right corner, but of the end token.
+ posEnd.x = endRect.right - 1;
+ posEnd.y = endRect.bottom + 1;
+
+ // Utility object with x and y offsets for handles.
+ var curvature = {
+ x: Math.min((posStart.x - posEnd.x) / 3, 15),
+ y: 5
+ }
+
+ // Curving to the left...
+ startHandle.x = posStart.x - curvature.x;
+ // ... and downwards from the start node.
+ startHandle.y = posStart.y + curvature.y;
+
+ // And to the right...
+ endHandle.x = posEnd.x + curvature.x;
+ // ... and downwards from the end node.
+ endHandle.y = posEnd.y + curvature.y;
+ }
+
+ // Put it all together into a path.
+ // More information on the format:
+ // https://developer.mozilla.org/en-US/docs/Web/SVG/Tutorial/Paths
+ var pathStr = "M" + posStart.x + "," + posStart.y + " " +
+ "C" + startHandle.x + "," + startHandle.y + " " +
+ endHandle.x + "," + endHandle.y + " " +
+ posEnd.x + "," + posEnd.y;
+
+ arrow.setAttribute("d", pathStr);
+};
+
+var drawArrows = function() {
+ const numOfArrows = document.querySelectorAll("path[id^=arrow]").length;
+ for (var i = 0; i < numOfArrows; ++i) {
+ drawArrow(i);
+ }
+}
+
+var toggleArrows = function(event) {
+ const arrows = document.querySelector("#arrows");
+ if (event.target.checked) {
+ arrows.setAttribute("visibility", "visible");
+ } else {
+ arrows.setAttribute("visibility", "hidden");
+ }
+}
+
+window.addEventListener("resize", drawArrows);
+document.addEventListener("DOMContentLoaded", function() {
+ // Whenever we show invocation, locations change, i.e. we
+ // need to redraw arrows.
+ document
+ .querySelector('input[id="showinvocation"]')
+ .addEventListener("click", drawArrows);
+ // Hiding irrelevant lines also should cause arrow rerender.
+ document
+ .querySelector('input[name="showCounterexample"]')
+ .addEventListener("change", drawArrows);
+ document
+ .querySelector('input[name="showArrows"]')
+ .addEventListener("change", toggleArrows);
+ drawArrows();
+ // Default highlighting for the last event.
+ highlightArrowsForSelectedEvent();
+});
+</script>
+
+<script type='text/javascript'>
+var digitMatcher = new RegExp("[0-9]+");
+
+var querySelectorAllArray = function(selector) {
+ return Array.prototype.slice.call(
+ document.querySelectorAll(selector));
+}
+
+document.addEventListener("DOMContentLoaded", function() {
+ querySelectorAllArray(".PathNav > a").forEach(
+ function(currentValue, currentIndex) {
+ var hrefValue = currentValue.getAttribute("href");
+ currentValue.onclick = function() {
+ scrollTo(document.querySelector(hrefValue));
+ return false;
+ };
+ });
+});
+
+var findNum = function() {
+ var s = document.querySelector(".msg.selected");
+ if (!s || s.id == "EndPath") {
+ return 0;
+ }
+ var out = parseInt(digitMatcher.exec(s.id)[0]);
+ return out;
+};
+
+var classListAdd = function(el, theClass) {
+ if(!el.className.baseVal)
+ el.className += " " + theClass;
+ else
+ el.className.baseVal += " " + theClass;
+};
+
+var classListRemove = function(el, theClass) {
+ var className = (!el.className.baseVal) ?
+ el.className : el.className.baseVal;
+ className = className.replace(" " + theClass, "");
+ if(!el.className.baseVal)
+ el.className = className;
+ else
+ el.className.baseVal = className;
+};
+
+var scrollTo = function(el) {
+ querySelectorAllArray(".selected").forEach(function(s) {
+ classListRemove(s, "selected");
+ });
+ classListAdd(el, "selected");
+ window.scrollBy(0, el.getBoundingClientRect().top -
+ (window.innerHeight / 2));
+ highlightArrowsForSelectedEvent();
+};
+
+var move = function(num, up, numItems) {
+ if (num == 1 && up || num == numItems - 1 && !up) {
+ return 0;
+ } else if (num == 0 && up) {
+ return numItems - 1;
+ } else if (num == 0 && !up) {
+ return 1 % numItems;
+ }
+ return up ? num - 1 : num + 1;
+}
+
+var numToId = function(num) {
+ if (num == 0) {
+ return document.getElementById("EndPath")
+ }
+ return document.getElementById("Path" + num);
+};
+
+var navigateTo = function(up) {
+ var numItems = document.querySelectorAll(
+ ".line > .msgEvent, .line > .msgControl").length;
+ var currentSelected = findNum();
+ var newSelected = move(currentSelected, up, numItems);
+ var newEl = numToId(newSelected, numItems);
+
+ // Scroll element into center.
+ scrollTo(newEl);
+};
+
+window.addEventListener("keydown", function (event) {
+ if (event.defaultPrevented) {
+ return;
+ }
+ // key 'j'
+ if (event.keyCode == 74) {
+ navigateTo(/*up=*/false);
+ // key 'k'
+ } else if (event.keyCode == 75) {
+ navigateTo(/*up=*/true);
+ } else {
+ return;
+ }
+ event.preventDefault();
+}, true);
+</script>
+
+<script type='text/javascript'>
+
+var toggleHelp = function() {
+ var hint = document.querySelector("#tooltiphint");
+ var attributeName = "hidden";
+ if (hint.hasAttribute(attributeName)) {
+ hint.removeAttribute(attributeName);
+ } else {
+ hint.setAttribute("hidden", "true");
+ }
+};
+window.addEventListener("keydown", function (event) {
+ if (event.defaultPrevented) {
+ return;
+ }
+ if (event.key == "?") {
+ toggleHelp();
+ } else {
+ return;
+ }
+ event.preventDefault();
+});
+</script>
+
+<style type="text/css">
+ svg {
+ position:absolute;
+ top:0;
+ left:0;
+ height:100%;
+ width:100%;
+ pointer-events: none;
+ overflow: visible
+ }
+ .arrow {
+ stroke-opacity: 0.2;
+ stroke-width: 1;
+ marker-end: url(#arrowhead);
+ }
+
+ .arrow.selected {
+ stroke-opacity: 0.6;
+ stroke-width: 2;
+ marker-end: url(#arrowheadSelected);
+ }
+
+ .arrowhead {
+ orient: auto;
+ stroke: none;
+ opacity: 0.6;
+ fill: blue;
+ }
+</style>
+<svg xmlns="http://www.w3.org/2000/svg">
+ <defs>
+ <marker id="arrowheadSelected" class="arrowhead" opacity="0.6"
+ viewBox="0 0 10 10" refX="3" refY="5"
+ markerWidth="4" markerHeight="4">
+ <path d="M 0 0 L 10 5 L 0 10 z" />
+ </marker>
+ <marker id="arrowhead" class="arrowhead" opacity="0.2"
+ viewBox="0 0 10 10" refX="3" refY="5"
+ markerWidth="4" markerHeight="4">
+ <path d="M 0 0 L 10 5 L 0 10 z" />
+ </marker>
+ </defs>
+ <g id="arrows" fill="none" stroke="blue" visibility="hidden">
+ <path class="arrow" id="arrow0"/>
+ <path class="arrow" id="arrow1"/>
+ <path class="arrow" id="arrow2"/>
+ <path class="arrow" id="arrow3"/>
+ <path class="arrow" id="arrow4"/>
+ <path class="arrow" id="arrow5"/>
+ <path class="arrow" id="arrow6"/>
+ <path class="arrow" id="arrow7"/>
+ <path class="arrow" id="arrow8"/>
+ <path class="arrow" id="arrow9"/>
+ <path class="arrow" id="arrow10"/>
+ <path class="arrow" id="arrow11"/>
+ <path class="arrow" id="arrow12"/>
+ <path class="arrow" id="arrow13"/>
+ <path class="arrow" id="arrow14"/>
+ <path class="arrow" id="arrow15"/>
+ <path class="arrow" id="arrow16"/>
+ <path class="arrow" id="arrow17"/>
+ <path class="arrow" id="arrow18"/>
+ <path class="arrow" id="arrow19"/>
+ <path class="arrow" id="arrow20"/>
+ <path class="arrow" id="arrow21"/>
+ <path class="arrow" id="arrow22"/>
+ <path class="arrow" id="arrow23"/>
+
+ </g>
+</svg>
+<script type='text/javascript'>
+const arrowIndices = [ 24,24,20,18,18,14,12,12,8,6,6,3,0 ]
+</script>
+<table class="code" data-fileid="1">
+<tr class="codeline" data-linenumber="1"><td class="num" id="LN1">1</td><td class="line"><span class='comment'>/*</span></td></tr>
+<tr class="codeline" data-linenumber="2"><td class="num" id="LN2">2</td><td class="line"> <span class='comment'>* document-saver.c</span></td></tr>
+<tr class="codeline" data-linenumber="3"><td class="num" id="LN3">3</td><td class="line"> <span class='comment'>* This file is part of pluma</span></td></tr>
+<tr class="codeline" data-linenumber="4"><td class="num" id="LN4">4</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="5"><td class="num" id="LN5">5</td><td class="line"> <span class='comment'>* Copyright (C) 2010 - Jesse van den Kieboom</span></td></tr>
+<tr class="codeline" data-linenumber="6"><td class="num" id="LN6">6</td><td class="line"> <span class='comment'>* Copyright (C) 2012-2021 MATE Developers</span></td></tr>
+<tr class="codeline" data-linenumber="7"><td class="num" id="LN7">7</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="8"><td class="num" id="LN8">8</td><td class="line"> <span class='comment'>* pluma is free software; you can redistribute it and/or modify</span></td></tr>
+<tr class="codeline" data-linenumber="9"><td class="num" id="LN9">9</td><td class="line"> <span class='comment'>* it under the terms of the GNU General Public License as published by</span></td></tr>
+<tr class="codeline" data-linenumber="10"><td class="num" id="LN10">10</td><td class="line"> <span class='comment'>* the Free Software Foundation; either version 2 of the License, or</span></td></tr>
+<tr class="codeline" data-linenumber="11"><td class="num" id="LN11">11</td><td class="line"> <span class='comment'>* (at your option) any later version.</span></td></tr>
+<tr class="codeline" data-linenumber="12"><td class="num" id="LN12">12</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="13"><td class="num" id="LN13">13</td><td class="line"> <span class='comment'>* pluma is distributed in the hope that it will be useful,</span></td></tr>
+<tr class="codeline" data-linenumber="14"><td class="num" id="LN14">14</td><td class="line"> <span class='comment'>* but WITHOUT ANY WARRANTY; without even the implied warranty of</span></td></tr>
+<tr class="codeline" data-linenumber="15"><td class="num" id="LN15">15</td><td class="line"> <span class='comment'>* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></td></tr>
+<tr class="codeline" data-linenumber="16"><td class="num" id="LN16">16</td><td class="line"> <span class='comment'>* GNU General Public License for more details.</span></td></tr>
+<tr class="codeline" data-linenumber="17"><td class="num" id="LN17">17</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="18"><td class="num" id="LN18">18</td><td class="line"> <span class='comment'>* You should have received a copy of the GNU General Public License</span></td></tr>
+<tr class="codeline" data-linenumber="19"><td class="num" id="LN19">19</td><td class="line"> <span class='comment'>* along with pluma; if not, write to the Free Software</span></td></tr>
+<tr class="codeline" data-linenumber="20"><td class="num" id="LN20">20</td><td class="line"> <span class='comment'>* Foundation, Inc., 51 Franklin St, Fifth Floor,</span></td></tr>
+<tr class="codeline" data-linenumber="21"><td class="num" id="LN21">21</td><td class="line"> <span class='comment'>* Boston, MA 02110-1301 USA</span></td></tr>
+<tr class="codeline" data-linenumber="22"><td class="num" id="LN22">22</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="23"><td class="num" id="LN23">23</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="24"><td class="num" id="LN24">24</td><td class="line"><span class='directive'>#include "pluma-document-loader.h"</span></td></tr>
+<tr class="codeline" data-linenumber="25"><td class="num" id="LN25">25</td><td class="line"><span class='directive'>#include &lt;gio/gio.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="26"><td class="num" id="LN26">26</td><td class="line"><span class='directive'>#include &lt;gtk/gtk.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="27"><td class="num" id="LN27">27</td><td class="line"><span class='directive'>#include &lt;glib.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="28"><td class="num" id="LN28">28</td><td class="line"><span class='directive'>#include &lt;glib/gprintf.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="29"><td class="num" id="LN29">29</td><td class="line"><span class='directive'>#include &lt;string.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="30"><td class="num" id="LN30">30</td><td class="line"><span class='directive'>#include &lt;sys/stat.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="31"><td class="num" id="LN31">31</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="32"><td class="num" id="LN32">32</td><td class="line"><span class='comment'>/* linux/bsd has it. others such as Solaris, do not */</span></td></tr>
+<tr class="codeline" data-linenumber="33"><td class="num" id="LN33">33</td><td class="line"><span class='directive'>#ifndef <span class='macro'>ACCESSPERMS<span class='macro_popup'>((0400|0200|0100)|((0400|0200|0100) &gt;&gt; 3)|(((0400|0200|<br>0100) &gt;&gt; 3) &gt;&gt; 3))</span></span></span></td></tr>
+<tr class="codeline" data-linenumber="34"><td class="num" id="LN34">34</td><td class="line"><span class='directive'>#define <span class='macro'>ACCESSPERMS<span class='macro_popup'>((0400|0200|0100)|((0400|0200|0100) &gt;&gt; 3)|(((0400|0200|<br>0100) &gt;&gt; 3) &gt;&gt; 3))</span></span> (<span class='macro'>S_IRWXU<span class='macro_popup'>(0400|0200|0100)</span></span>|<span class='macro'>S_IRWXG<span class='macro_popup'>((0400|0200|0100) &gt;&gt; 3)</span></span>|<span class='macro'>S_IRWXO<span class='macro_popup'>(((0400|0200|0100) &gt;&gt; 3) &gt;&gt; 3)</span></span>)</span></td></tr>
+<tr class="codeline" data-linenumber="35"><td class="num" id="LN35">35</td><td class="line"><span class='directive'>#endif</span></td></tr>
+<tr class="codeline" data-linenumber="36"><td class="num" id="LN36">36</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="37"><td class="num" id="LN37">37</td><td class="line"><span class='directive'>#define <span class='macro'>DEFAULT_LOCAL_URI<span class='macro_popup'>"/tmp/pluma-document-saver-test.txt"</span></span> "/tmp/pluma-document-saver-test.txt"</span></td></tr>
+<tr class="codeline" data-linenumber="38"><td class="num" id="LN38">38</td><td class="line"><span class='directive'>#define <span class='macro'>DEFAULT_REMOTE_URI<span class='macro_popup'>"sftp://localhost/tmp/pluma-document-saver-test.txt"</span></span> "sftp://localhost/tmp/pluma-document-saver-test.txt"</span></td></tr>
+<tr class="codeline" data-linenumber="39"><td class="num" id="LN39">39</td><td class="line"><span class='directive'>#define <span class='macro'>DEFAULT_CONTENT<span class='macro_popup'>"hello world!"</span></span> "hello world!"</span></td></tr>
+<tr class="codeline" data-linenumber="40"><td class="num" id="LN40">40</td><td class="line"><span class='directive'>#define <span class='macro'>DEFAULT_CONTENT_RESULT<span class='macro_popup'>"hello world!\n"</span></span> "hello world!\n"</span></td></tr>
+<tr class="codeline" data-linenumber="41"><td class="num" id="LN41">41</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="42"><td class="num" id="LN42">42</td><td class="line"><span class='directive'>#define <span class='macro'>UNOWNED_LOCAL_DIRECTORY<span class='macro_popup'>"/tmp/pluma-document-saver-unowned"</span></span> "/tmp/pluma-document-saver-unowned"</span></td></tr>
+<tr class="codeline" data-linenumber="43"><td class="num" id="LN43">43</td><td class="line"><span class='directive'>#define <span class='macro'>UNOWNED_LOCAL_URI<span class='macro_popup'>"/tmp/pluma-document-saver-unowned/pluma-document-saver-test.txt"</span></span> "/tmp/pluma-document-saver-unowned/pluma-document-saver-test.txt"</span></td></tr>
+<tr class="codeline" data-linenumber="44"><td class="num" id="LN44">44</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="45"><td class="num" id="LN45">45</td><td class="line"><span class='directive'>#define <span class='macro'>UNOWNED_REMOTE_URI<span class='macro_popup'>"sftp://localhost/tmp/pluma-document-saver-unowned/pluma-document-saver-test.txt"</span></span> "sftp://localhost/tmp/pluma-document-saver-unowned/pluma-document-saver-test.txt"</span></td></tr>
+<tr class="codeline" data-linenumber="46"><td class="num" id="LN46">46</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="47"><td class="num" id="LN47">47</td><td class="line"><span class='directive'>#define <span class='macro'>UNOWNED_GROUP_LOCAL_URI<span class='macro_popup'>"/tmp/pluma-document-saver-unowned-group.txt"</span></span> "/tmp/pluma-document-saver-unowned-group.txt"</span></td></tr>
+<tr class="codeline" data-linenumber="48"><td class="num" id="LN48">48</td><td class="line"><span class='directive'>#define <span class='macro'>UNOWNED_GROUP_REMOTE_URI<span class='macro_popup'>"sftp://localhost/tmp/pluma-document-saver-unowned-group.txt"</span></span> "sftp://localhost/tmp/pluma-document-saver-unowned-group.txt"</span></td></tr>
+<tr class="codeline" data-linenumber="49"><td class="num" id="LN49">49</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="50"><td class="num" id="LN50">50</td><td class="line"><span class='keyword'>static</span> gboolean test_completed;</td></tr>
+<tr class="codeline" data-linenumber="51"><td class="num" id="LN51">51</td><td class="line"><span class='keyword'>static</span> gboolean mount_completed;</td></tr>
+<tr class="codeline" data-linenumber="52"><td class="num" id="LN52">52</td><td class="line"><span class='keyword'>static</span> gboolean mount_success;</td></tr>
+<tr class="codeline" data-linenumber="53"><td class="num" id="LN53">53</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="54"><td class="num" id="LN54">54</td><td class="line"><span class='keyword'>typedef</span> <span class='keyword'>struct</span></td></tr>
+<tr class="codeline" data-linenumber="55"><td class="num" id="LN55">55</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="56"><td class="num" id="LN56">56</td><td class="line"> gchar *uri;</td></tr>
+<tr class="codeline" data-linenumber="57"><td class="num" id="LN57">57</td><td class="line"> <span class='keyword'>const</span> gchar *test_contents;</td></tr>
+<tr class="codeline" data-linenumber="58"><td class="num" id="LN58">58</td><td class="line"> gpointer data;</td></tr>
+<tr class="codeline" data-linenumber="59"><td class="num" id="LN59">59</td><td class="line">} SaverTestData;</td></tr>
+<tr class="codeline" data-linenumber="60"><td class="num" id="LN60">60</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="61"><td class="num" id="LN61">61</td><td class="line"><span id="start2"><span class='keyword'>static</span></span> SaverTestData *</td></tr>
+<tr class="codeline" data-linenumber="62"><td class="num" id="LN62">62</td><td class="line">saver_test_data_new (<span class='keyword'>const</span> gchar *uri, <span class='keyword'>const</span> gchar *test_contents, gpointer data)</td></tr>
+<tr class="codeline" data-linenumber="63"><td class="num" id="LN63">63</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="64"><td class="num" id="LN64">64</td><td class="line"> <span id="start1"><span id="end2">SaverTestData</span></span> *ret = <span class='macro'>g_slice_new (SaverTestData)<span class='macro_popup'>((SaverTestData*) g_slice_alloc (sizeof (SaverTestData)))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="65"><td class="num" id="LN65">65</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="66"><td class="num" id="LN66">66</td><td class="line"> ret-&gt;uri = <span class='macro'>g_strdup (uri)<span class='macro_popup'>g_strdup_inline (uri)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="67"><td class="num" id="LN67">67</td><td class="line"> <span id="start0"><span id="end1">ret</span></span>-&gt;test_contents = test_contents;</td></tr>
+<tr class="codeline" data-linenumber="68"><td class="num" id="LN68">68</td><td class="line"> ret-&gt;data <span id="end0">=</span> <span class="mrange">data</span>;</td></tr>
+<tr><td class="num"></td><td class="line"><div id="EndPath" class="msg msgEvent" style="margin-left:19ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexEvent">12</div></td><td><div class="PathNav"><a href="#Path11" title="Previous event (11)">&#x2190;</a></div></td><td>Using a fixed address is not portable because that address will probably not be valid in all environments or platforms</td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="69"><td class="num" id="LN69">69</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="70"><td class="num" id="LN70">70</td><td class="line"> <span class='keyword'>return</span> ret;</td></tr>
+<tr class="codeline" data-linenumber="71"><td class="num" id="LN71">71</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="72"><td class="num" id="LN72">72</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="73"><td class="num" id="LN73">73</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="74"><td class="num" id="LN74">74</td><td class="line">saver_test_data_free (SaverTestData *data)</td></tr>
+<tr class="codeline" data-linenumber="75"><td class="num" id="LN75">75</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="76"><td class="num" id="LN76">76</td><td class="line"> <span class='keyword'>if</span> (data == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="77"><td class="num" id="LN77">77</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="78"><td class="num" id="LN78">78</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="79"><td class="num" id="LN79">79</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="80"><td class="num" id="LN80">80</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="81"><td class="num" id="LN81">81</td><td class="line"> g_free (data-&gt;uri);</td></tr>
+<tr class="codeline" data-linenumber="82"><td class="num" id="LN82">82</td><td class="line"> <span class='macro'>g_slice_free (SaverTestData, data)<span class='macro_popup'>do { if (1) g_slice_free1 (sizeof (SaverTestData), (data)); else<br> (void) ((SaverTestData*) 0 == (data)); } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="83"><td class="num" id="LN83">83</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="84"><td class="num" id="LN84">84</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="85"><td class="num" id="LN85">85</td><td class="line"><span class='keyword'>static</span> PlumaDocument *</td></tr>
+<tr class="codeline" data-linenumber="86"><td class="num" id="LN86">86</td><td class="line">create_document (<span class='keyword'>const</span> gchar *contents)</td></tr>
+<tr class="codeline" data-linenumber="87"><td class="num" id="LN87">87</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="88"><td class="num" id="LN88">88</td><td class="line"> PlumaDocument *document = pluma_document_new ();</td></tr>
+<tr class="codeline" data-linenumber="89"><td class="num" id="LN89">89</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="90"><td class="num" id="LN90">90</td><td class="line"> gtk_text_buffer_set_text (<span class='macro'>GTK_TEXT_BUFFER (document)<span class='macro_popup'>((((GtkTextBuffer*) (void *) ((document)))))</span></span>, contents, -1);</td></tr>
+<tr class="codeline" data-linenumber="91"><td class="num" id="LN91">91</td><td class="line"> <span class='keyword'>return</span> document;</td></tr>
+<tr class="codeline" data-linenumber="92"><td class="num" id="LN92">92</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="93"><td class="num" id="LN93">93</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="94"><td class="num" id="LN94">94</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="95"><td class="num" id="LN95">95</td><td class="line">complete_test_error (PlumaDocument *document,</td></tr>
+<tr class="codeline" data-linenumber="96"><td class="num" id="LN96">96</td><td class="line"> GError *error,</td></tr>
+<tr class="codeline" data-linenumber="97"><td class="num" id="LN97">97</td><td class="line"> SaverTestData *data)</td></tr>
+<tr class="codeline" data-linenumber="98"><td class="num" id="LN98">98</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="99"><td class="num" id="LN99">99</td><td class="line"> <span class='macro'>g_assert_no_error (error)<span class='macro_popup'>do { if (error) g_assertion_message_error (((gchar*) 0), "document-saver.c"<br>, 99, ((const char*) (__func__)), "error", error, 0, 0); } while<br> (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="100"><td class="num" id="LN100">100</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="101"><td class="num" id="LN101">101</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="102"><td class="num" id="LN102">102</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>const</span> gchar *</td></tr>
+<tr class="codeline" data-linenumber="103"><td class="num" id="LN103">103</td><td class="line">read_file (<span class='keyword'>const</span> gchar *uri)</td></tr>
+<tr class="codeline" data-linenumber="104"><td class="num" id="LN104">104</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="105"><td class="num" id="LN105">105</td><td class="line"> GFile *file = g_file_new_for_commandline_arg (uri);</td></tr>
+<tr class="codeline" data-linenumber="106"><td class="num" id="LN106">106</td><td class="line"> GError *error = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="107"><td class="num" id="LN107">107</td><td class="line"> <span class='keyword'>static</span> gchar buffer[4096];</td></tr>
+<tr class="codeline" data-linenumber="108"><td class="num" id="LN108">108</td><td class="line"> gsize read;</td></tr>
+<tr class="codeline" data-linenumber="109"><td class="num" id="LN109">109</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="110"><td class="num" id="LN110">110</td><td class="line"> GInputStream *stream = <span class='macro'>G_INPUT_STREAM (g_file_read (file, NULL, &amp;error))<span class='macro_popup'>((((GInputStream*) (void *) ((g_file_read (file, ((void*)0), &amp;<br>error))))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="111"><td class="num" id="LN111">111</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="112"><td class="num" id="LN112">112</td><td class="line"> <span class='macro'>g_assert_no_error (error)<span class='macro_popup'>do { if (error) g_assertion_message_error (((gchar*) 0), "document-saver.c"<br>, 112, ((const char*) (__func__)), "error", error, 0, 0); } while<br> (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="113"><td class="num" id="LN113">113</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="114"><td class="num" id="LN114">114</td><td class="line"> g_input_stream_read_all (stream, buffer, <span class='keyword'>sizeof</span> (buffer) - 1, &amp;read, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, &amp;error);</td></tr>
+<tr class="codeline" data-linenumber="115"><td class="num" id="LN115">115</td><td class="line"> <span class='macro'>g_assert_no_error (error)<span class='macro_popup'>do { if (error) g_assertion_message_error (((gchar*) 0), "document-saver.c"<br>, 115, ((const char*) (__func__)), "error", error, 0, 0); } while<br> (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="116"><td class="num" id="LN116">116</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="117"><td class="num" id="LN117">117</td><td class="line"> buffer[read] = '\0';</td></tr>
+<tr class="codeline" data-linenumber="118"><td class="num" id="LN118">118</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="119"><td class="num" id="LN119">119</td><td class="line"> g_input_stream_close (stream, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="120"><td class="num" id="LN120">120</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="121"><td class="num" id="LN121">121</td><td class="line"> g_object_unref (stream);</td></tr>
+<tr class="codeline" data-linenumber="122"><td class="num" id="LN122">122</td><td class="line"> g_object_unref (file);</td></tr>
+<tr class="codeline" data-linenumber="123"><td class="num" id="LN123">123</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="124"><td class="num" id="LN124">124</td><td class="line"> <span class='keyword'>return</span> buffer;</td></tr>
+<tr class="codeline" data-linenumber="125"><td class="num" id="LN125">125</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="126"><td class="num" id="LN126">126</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="127"><td class="num" id="LN127">127</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="128"><td class="num" id="LN128">128</td><td class="line">complete_test (PlumaDocument *document,</td></tr>
+<tr class="codeline" data-linenumber="129"><td class="num" id="LN129">129</td><td class="line"> GError *error,</td></tr>
+<tr class="codeline" data-linenumber="130"><td class="num" id="LN130">130</td><td class="line"> SaverTestData *data)</td></tr>
+<tr class="codeline" data-linenumber="131"><td class="num" id="LN131">131</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="132"><td class="num" id="LN132">132</td><td class="line"> test_completed = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="133"><td class="num" id="LN133">133</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="134"><td class="num" id="LN134">134</td><td class="line"> <span class='keyword'>if</span> (data &amp;&amp; data-&gt;test_contents &amp;&amp; data-&gt;uri)</td></tr>
+<tr class="codeline" data-linenumber="135"><td class="num" id="LN135">135</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="136"><td class="num" id="LN136">136</td><td class="line"> <span class='macro'>g_assert_cmpstr (data-&gt;test_contents, ==, read_file (data-&gt;uri))<span class='macro_popup'>do { const char *__s1 = (data-&gt;test_contents), *__s2 = (read_file<br> (data-&gt;uri)); if (g_strcmp0 (__s1, __s2) == 0) ; else g_assertion_message_cmpstr<br> (((gchar*) 0), "document-saver.c", 136, ((const char*) (__func__<br>)), "data-&gt;test_contents" " " "==" " " "read_file (data-&gt;uri)"<br>, __s1, "==", __s2); } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="137"><td class="num" id="LN137">137</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="138"><td class="num" id="LN138">138</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="139"><td class="num" id="LN139">139</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="140"><td class="num" id="LN140">140</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="141"><td class="num" id="LN141">141</td><td class="line">mount_ready_callback (GObject *object,</td></tr>
+<tr class="codeline" data-linenumber="142"><td class="num" id="LN142">142</td><td class="line"> GAsyncResult *result,</td></tr>
+<tr class="codeline" data-linenumber="143"><td class="num" id="LN143">143</td><td class="line"> gpointer data)</td></tr>
+<tr class="codeline" data-linenumber="144"><td class="num" id="LN144">144</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="145"><td class="num" id="LN145">145</td><td class="line"> GError *error = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="146"><td class="num" id="LN146">146</td><td class="line"> mount_success = g_file_mount_enclosing_volume_finish (<span class='macro'>G_FILE (object)<span class='macro_popup'>((((GFile*) (void *) ((object)))))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="147"><td class="num" id="LN147">147</td><td class="line"> result,</td></tr>
+<tr class="codeline" data-linenumber="148"><td class="num" id="LN148">148</td><td class="line"> &amp;error);</td></tr>
+<tr class="codeline" data-linenumber="149"><td class="num" id="LN149">149</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="150"><td class="num" id="LN150">150</td><td class="line"> <span class='keyword'>if</span> (error &amp;&amp; error-&gt;code == G_IO_ERROR_ALREADY_MOUNTED)</td></tr>
+<tr class="codeline" data-linenumber="151"><td class="num" id="LN151">151</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="152"><td class="num" id="LN152">152</td><td class="line"> mount_success = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="153"><td class="num" id="LN153">153</td><td class="line"> g_error_free (error);</td></tr>
+<tr class="codeline" data-linenumber="154"><td class="num" id="LN154">154</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="155"><td class="num" id="LN155">155</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="156"><td class="num" id="LN156">156</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="157"><td class="num" id="LN157">157</td><td class="line"> <span class='macro'>g_assert_no_error (error)<span class='macro_popup'>do { if (error) g_assertion_message_error (((gchar*) 0), "document-saver.c"<br>, 157, ((const char*) (__func__)), "error", error, 0, 0); } while<br> (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="158"><td class="num" id="LN158">158</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="159"><td class="num" id="LN159">159</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="160"><td class="num" id="LN160">160</td><td class="line"> mount_completed = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="161"><td class="num" id="LN161">161</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="162"><td class="num" id="LN162">162</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="163"><td class="num" id="LN163">163</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="164"><td class="num" id="LN164">164</td><td class="line">ensure_mounted (GFile *file)</td></tr>
+<tr class="codeline" data-linenumber="165"><td class="num" id="LN165">165</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="166"><td class="num" id="LN166">166</td><td class="line"> GMountOperation *mo;</td></tr>
+<tr class="codeline" data-linenumber="167"><td class="num" id="LN167">167</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="168"><td class="num" id="LN168">168</td><td class="line"> mount_success = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="169"><td class="num" id="LN169">169</td><td class="line"> mount_completed = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="170"><td class="num" id="LN170">170</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="171"><td class="num" id="LN171">171</td><td class="line"> <span class='keyword'>if</span> (g_file_is_native (file))</td></tr>
+<tr class="codeline" data-linenumber="172"><td class="num" id="LN172">172</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="173"><td class="num" id="LN173">173</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="174"><td class="num" id="LN174">174</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="175"><td class="num" id="LN175">175</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="176"><td class="num" id="LN176">176</td><td class="line"> mo = gtk_mount_operation_new (<span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="177"><td class="num" id="LN177">177</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="178"><td class="num" id="LN178">178</td><td class="line"> g_file_mount_enclosing_volume (file,</td></tr>
+<tr class="codeline" data-linenumber="179"><td class="num" id="LN179">179</td><td class="line"> G_MOUNT_MOUNT_NONE,</td></tr>
+<tr class="codeline" data-linenumber="180"><td class="num" id="LN180">180</td><td class="line"> mo,</td></tr>
+<tr class="codeline" data-linenumber="181"><td class="num" id="LN181">181</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="182"><td class="num" id="LN182">182</td><td class="line"> mount_ready_callback,</td></tr>
+<tr class="codeline" data-linenumber="183"><td class="num" id="LN183">183</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="184"><td class="num" id="LN184">184</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="185"><td class="num" id="LN185">185</td><td class="line"> <span class='keyword'>while</span> (!mount_completed)</td></tr>
+<tr class="codeline" data-linenumber="186"><td class="num" id="LN186">186</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="187"><td class="num" id="LN187">187</td><td class="line"> g_main_context_iteration (<span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="188"><td class="num" id="LN188">188</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="189"><td class="num" id="LN189">189</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="190"><td class="num" id="LN190">190</td><td class="line"> g_object_unref (mo);</td></tr>
+<tr class="codeline" data-linenumber="191"><td class="num" id="LN191">191</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="192"><td class="num" id="LN192">192</td><td class="line"> <span class='keyword'>return</span> mount_success;</td></tr>
+<tr class="codeline" data-linenumber="193"><td class="num" id="LN193">193</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="194"><td class="num" id="LN194">194</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="195"><td class="num" id="LN195">195</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="196"><td class="num" id="LN196">196</td><td class="line">test_saver (<span class='keyword'>const</span> gchar *filename_or_uri,</td></tr>
+<tr class="codeline" data-linenumber="197"><td class="num" id="LN197">197</td><td class="line"> <span class='keyword'>const</span> gchar *contents,</td></tr>
+<tr class="codeline" data-linenumber="198"><td class="num" id="LN198">198</td><td class="line"> PlumaDocumentNewlineType newline_type,</td></tr>
+<tr class="codeline" data-linenumber="199"><td class="num" id="LN199">199</td><td class="line"> PlumaDocumentSaveFlags save_flags,</td></tr>
+<tr class="codeline" data-linenumber="200"><td class="num" id="LN200">200</td><td class="line"> GCallback saved_callback,</td></tr>
+<tr class="codeline" data-linenumber="201"><td class="num" id="LN201">201</td><td class="line"> SaverTestData *data)</td></tr>
+<tr class="codeline" data-linenumber="202"><td class="num" id="LN202">202</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="203"><td class="num" id="LN203">203</td><td class="line"> GFile *file;</td></tr>
+<tr class="codeline" data-linenumber="204"><td class="num" id="LN204">204</td><td class="line"> gchar *uri;</td></tr>
+<tr class="codeline" data-linenumber="205"><td class="num" id="LN205">205</td><td class="line"> PlumaDocument *document;</td></tr>
+<tr class="codeline" data-linenumber="206"><td class="num" id="LN206">206</td><td class="line"> gboolean existed;</td></tr>
+<tr class="codeline" data-linenumber="207"><td class="num" id="LN207">207</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="208"><td class="num" id="LN208">208</td><td class="line"> document = create_document (contents);</td></tr>
+<tr class="codeline" data-linenumber="209"><td class="num" id="LN209">209</td><td class="line"> pluma_document_set_newline_type (document, newline_type);</td></tr>
+<tr class="codeline" data-linenumber="210"><td class="num" id="LN210">210</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="211"><td class="num" id="LN211">211</td><td class="line"> <span class='macro'>g_signal_connect (document, <span class='string_literal'>"saved"</span>, G_CALLBACK (complete_test_error), data)<span class='macro_popup'>g_signal_connect_data ((document), ("saved"), (((GCallback) (<br>complete_test_error))), (data), ((void*)0), (GConnectFlags) 0<br>)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="212"><td class="num" id="LN212">212</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="213"><td class="num" id="LN213">213</td><td class="line"> <span class='keyword'>if</span> (saved_callback)</td></tr>
+<tr class="codeline" data-linenumber="214"><td class="num" id="LN214">214</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="215"><td class="num" id="LN215">215</td><td class="line"> <span class='macro'>g_signal_connect (document, <span class='string_literal'>"saved"</span>, saved_callback, data)<span class='macro_popup'>g_signal_connect_data ((document), ("saved"), (saved_callback<br>), (data), ((void*)0), (GConnectFlags) 0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="216"><td class="num" id="LN216">216</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="217"><td class="num" id="LN217">217</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="218"><td class="num" id="LN218">218</td><td class="line"> <span class='macro'>g_signal_connect_after (document, <span class='string_literal'>"saved"</span>, G_CALLBACK (complete_test), data)<span class='macro_popup'>g_signal_connect_data ((document), ("saved"), (((GCallback) (<br>complete_test))), (data), ((void*)0), G_CONNECT_AFTER)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="219"><td class="num" id="LN219">219</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="220"><td class="num" id="LN220">220</td><td class="line"> test_completed = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="221"><td class="num" id="LN221">221</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="222"><td class="num" id="LN222">222</td><td class="line"> file = g_file_new_for_commandline_arg (filename_or_uri);</td></tr>
+<tr class="codeline" data-linenumber="223"><td class="num" id="LN223">223</td><td class="line"> uri = g_file_get_uri (file);</td></tr>
+<tr class="codeline" data-linenumber="224"><td class="num" id="LN224">224</td><td class="line"> existed = g_file_query_exists (file, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="225"><td class="num" id="LN225">225</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="226"><td class="num" id="LN226">226</td><td class="line"> ensure_mounted (file);</td></tr>
+<tr class="codeline" data-linenumber="227"><td class="num" id="LN227">227</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="228"><td class="num" id="LN228">228</td><td class="line"> pluma_document_save_as (document, uri, pluma_encoding_get_utf8 (), save_flags);</td></tr>
+<tr class="codeline" data-linenumber="229"><td class="num" id="LN229">229</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="230"><td class="num" id="LN230">230</td><td class="line"> <span class='keyword'>while</span> (!test_completed)</td></tr>
+<tr class="codeline" data-linenumber="231"><td class="num" id="LN231">231</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="232"><td class="num" id="LN232">232</td><td class="line"> g_main_context_iteration (<span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="233"><td class="num" id="LN233">233</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="234"><td class="num" id="LN234">234</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="235"><td class="num" id="LN235">235</td><td class="line"> <span class='keyword'>if</span> (!existed)</td></tr>
+<tr class="codeline" data-linenumber="236"><td class="num" id="LN236">236</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="237"><td class="num" id="LN237">237</td><td class="line"> g_file_delete (file, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="238"><td class="num" id="LN238">238</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="239"><td class="num" id="LN239">239</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="240"><td class="num" id="LN240">240</td><td class="line"> g_free (uri);</td></tr>
+<tr class="codeline" data-linenumber="241"><td class="num" id="LN241">241</td><td class="line"> g_object_unref (file);</td></tr>
+<tr class="codeline" data-linenumber="242"><td class="num" id="LN242">242</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="243"><td class="num" id="LN243">243</td><td class="line"> saver_test_data_free (data);</td></tr>
+<tr class="codeline" data-linenumber="244"><td class="num" id="LN244">244</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="245"><td class="num" id="LN245">245</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="246"><td class="num" id="LN246">246</td><td class="line"><span class='keyword'>typedef</span> <span class='keyword'>struct</span></td></tr>
+<tr class="codeline" data-linenumber="247"><td class="num" id="LN247">247</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="248"><td class="num" id="LN248">248</td><td class="line"> PlumaDocumentNewlineType type;</td></tr>
+<tr class="codeline" data-linenumber="249"><td class="num" id="LN249">249</td><td class="line"> <span class='keyword'>const</span> gchar *text;</td></tr>
+<tr class="codeline" data-linenumber="250"><td class="num" id="LN250">250</td><td class="line"> <span class='keyword'>const</span> gchar *result;</td></tr>
+<tr class="codeline" data-linenumber="251"><td class="num" id="LN251">251</td><td class="line">} NewLineTestData;</td></tr>
+<tr class="codeline" data-linenumber="252"><td class="num" id="LN252">252</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="253"><td class="num" id="LN253">253</td><td class="line"><span class='keyword'>static</span> NewLineTestData newline_test_data[] = {</td></tr>
+<tr class="codeline" data-linenumber="254"><td class="num" id="LN254">254</td><td class="line"> {PLUMA_DOCUMENT_NEWLINE_TYPE_LF, <span class='string_literal'>"\nhello\nworld"</span>, <span class='string_literal'>"\nhello\nworld\n"</span>},</td></tr>
+<tr class="codeline" data-linenumber="255"><td class="num" id="LN255">255</td><td class="line"> {PLUMA_DOCUMENT_NEWLINE_TYPE_LF, <span class='string_literal'>"\nhello\nworld\n"</span>, <span class='string_literal'>"\nhello\nworld\n\n"</span>},</td></tr>
+<tr class="codeline" data-linenumber="256"><td class="num" id="LN256">256</td><td class="line"> {PLUMA_DOCUMENT_NEWLINE_TYPE_LF, <span class='string_literal'>"\nhello\nworld\n\n"</span>, <span class='string_literal'>"\nhello\nworld\n\n\n"</span>},</td></tr>
+<tr class="codeline" data-linenumber="257"><td class="num" id="LN257">257</td><td class="line"> {PLUMA_DOCUMENT_NEWLINE_TYPE_LF, <span class='string_literal'>"\r\nhello\r\nworld"</span>, <span class='string_literal'>"\nhello\nworld\n"</span>},</td></tr>
+<tr class="codeline" data-linenumber="258"><td class="num" id="LN258">258</td><td class="line"> {PLUMA_DOCUMENT_NEWLINE_TYPE_LF, <span class='string_literal'>"\r\nhello\r\nworld\r\n"</span>, <span class='string_literal'>"\nhello\nworld\n\n"</span>},</td></tr>
+<tr class="codeline" data-linenumber="259"><td class="num" id="LN259">259</td><td class="line"> {PLUMA_DOCUMENT_NEWLINE_TYPE_LF, <span class='string_literal'>"\rhello\rworld"</span>, <span class='string_literal'>"\nhello\nworld\n"</span>},</td></tr>
+<tr class="codeline" data-linenumber="260"><td class="num" id="LN260">260</td><td class="line"> {PLUMA_DOCUMENT_NEWLINE_TYPE_LF, <span class='string_literal'>"\rhello\rworld\r"</span>, <span class='string_literal'>"\nhello\nworld\n\n"</span>},</td></tr>
+<tr class="codeline" data-linenumber="261"><td class="num" id="LN261">261</td><td class="line"> {PLUMA_DOCUMENT_NEWLINE_TYPE_LF, <span class='string_literal'>"\nhello\r\nworld"</span>, <span class='string_literal'>"\nhello\nworld\n"</span>},</td></tr>
+<tr class="codeline" data-linenumber="262"><td class="num" id="LN262">262</td><td class="line"> {PLUMA_DOCUMENT_NEWLINE_TYPE_LF, <span class='string_literal'>"\nhello\r\nworld\r"</span>, <span class='string_literal'>"\nhello\nworld\n\n"</span>},</td></tr>
+<tr class="codeline" data-linenumber="263"><td class="num" id="LN263">263</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="264"><td class="num" id="LN264">264</td><td class="line"> {PLUMA_DOCUMENT_NEWLINE_TYPE_CR_LF, <span class='string_literal'>"\nhello\nworld"</span>, <span class='string_literal'>"\r\nhello\r\nworld\r\n"</span>},</td></tr>
+<tr class="codeline" data-linenumber="265"><td class="num" id="LN265">265</td><td class="line"> {PLUMA_DOCUMENT_NEWLINE_TYPE_CR_LF, <span class='string_literal'>"\nhello\nworld\n"</span>, <span class='string_literal'>"\r\nhello\r\nworld\r\n\r\n"</span>},</td></tr>
+<tr class="codeline" data-linenumber="266"><td class="num" id="LN266">266</td><td class="line"> {PLUMA_DOCUMENT_NEWLINE_TYPE_CR_LF, <span class='string_literal'>"\nhello\nworld\n\n"</span>, <span class='string_literal'>"\r\nhello\r\nworld\r\n\r\n\r\n"</span>},</td></tr>
+<tr class="codeline" data-linenumber="267"><td class="num" id="LN267">267</td><td class="line"> {PLUMA_DOCUMENT_NEWLINE_TYPE_CR_LF, <span class='string_literal'>"\r\nhello\r\nworld"</span>, <span class='string_literal'>"\r\nhello\r\nworld\r\n"</span>},</td></tr>
+<tr class="codeline" data-linenumber="268"><td class="num" id="LN268">268</td><td class="line"> {PLUMA_DOCUMENT_NEWLINE_TYPE_CR_LF, <span class='string_literal'>"\r\nhello\r\nworld\r\n"</span>, <span class='string_literal'>"\r\nhello\r\nworld\r\n\r\n"</span>},</td></tr>
+<tr class="codeline" data-linenumber="269"><td class="num" id="LN269">269</td><td class="line"> {PLUMA_DOCUMENT_NEWLINE_TYPE_CR_LF, <span class='string_literal'>"\rhello\rworld"</span>, <span class='string_literal'>"\r\nhello\r\nworld\r\n"</span>},</td></tr>
+<tr class="codeline" data-linenumber="270"><td class="num" id="LN270">270</td><td class="line"> {PLUMA_DOCUMENT_NEWLINE_TYPE_CR_LF, <span class='string_literal'>"\rhello\rworld\r"</span>, <span class='string_literal'>"\r\nhello\r\nworld\r\n\r\n"</span>},</td></tr>
+<tr class="codeline" data-linenumber="271"><td class="num" id="LN271">271</td><td class="line"> {PLUMA_DOCUMENT_NEWLINE_TYPE_CR_LF, <span class='string_literal'>"\nhello\r\nworld"</span>, <span class='string_literal'>"\r\nhello\r\nworld\r\n"</span>},</td></tr>
+<tr class="codeline" data-linenumber="272"><td class="num" id="LN272">272</td><td class="line"> {PLUMA_DOCUMENT_NEWLINE_TYPE_CR_LF, <span class='string_literal'>"\nhello\r\nworld\r"</span>, <span class='string_literal'>"\r\nhello\r\nworld\r\n\r\n"</span>},</td></tr>
+<tr class="codeline" data-linenumber="273"><td class="num" id="LN273">273</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="274"><td class="num" id="LN274">274</td><td class="line"> {PLUMA_DOCUMENT_NEWLINE_TYPE_CR, <span class='string_literal'>"\nhello\nworld"</span>, <span class='string_literal'>"\rhello\rworld\r"</span>},</td></tr>
+<tr class="codeline" data-linenumber="275"><td class="num" id="LN275">275</td><td class="line"> {PLUMA_DOCUMENT_NEWLINE_TYPE_CR, <span class='string_literal'>"\nhello\nworld\n"</span>, <span class='string_literal'>"\rhello\rworld\r\r"</span>},</td></tr>
+<tr class="codeline" data-linenumber="276"><td class="num" id="LN276">276</td><td class="line"> {PLUMA_DOCUMENT_NEWLINE_TYPE_CR, <span class='string_literal'>"\nhello\nworld\n\n"</span>, <span class='string_literal'>"\rhello\rworld\r\r\r"</span>},</td></tr>
+<tr class="codeline" data-linenumber="277"><td class="num" id="LN277">277</td><td class="line"> {PLUMA_DOCUMENT_NEWLINE_TYPE_CR, <span class='string_literal'>"\r\nhello\r\nworld"</span>, <span class='string_literal'>"\rhello\rworld\r"</span>},</td></tr>
+<tr class="codeline" data-linenumber="278"><td class="num" id="LN278">278</td><td class="line"> {PLUMA_DOCUMENT_NEWLINE_TYPE_CR, <span class='string_literal'>"\r\nhello\r\nworld\r\n"</span>, <span class='string_literal'>"\rhello\rworld\r\r"</span>},</td></tr>
+<tr class="codeline" data-linenumber="279"><td class="num" id="LN279">279</td><td class="line"> {PLUMA_DOCUMENT_NEWLINE_TYPE_CR, <span class='string_literal'>"\rhello\rworld"</span>, <span class='string_literal'>"\rhello\rworld\r"</span>},</td></tr>
+<tr class="codeline" data-linenumber="280"><td class="num" id="LN280">280</td><td class="line"> {PLUMA_DOCUMENT_NEWLINE_TYPE_CR, <span class='string_literal'>"\rhello\rworld\r"</span>, <span class='string_literal'>"\rhello\rworld\r\r"</span>},</td></tr>
+<tr class="codeline" data-linenumber="281"><td class="num" id="LN281">281</td><td class="line"> {PLUMA_DOCUMENT_NEWLINE_TYPE_CR, <span class='string_literal'>"\nhello\r\nworld"</span>, <span class='string_literal'>"\rhello\rworld\r"</span>},</td></tr>
+<tr class="codeline" data-linenumber="282"><td class="num" id="LN282">282</td><td class="line"> {PLUMA_DOCUMENT_NEWLINE_TYPE_CR, <span class='string_literal'>"\nhello\r\nworld\r"</span>, <span class='string_literal'>"\rhello\rworld\r\r"</span>}</td></tr>
+<tr class="codeline" data-linenumber="283"><td class="num" id="LN283">283</td><td class="line">};</td></tr>
+<tr class="codeline" data-linenumber="284"><td class="num" id="LN284">284</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="285"><td class="num" id="LN285">285</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="286"><td class="num" id="LN286">286</td><td class="line">test_new_line (<span class='keyword'>const</span> gchar *filename, PlumaDocumentSaveFlags save_flags)</td></tr>
+<tr class="codeline" data-linenumber="287"><td class="num" id="LN287">287</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="288"><td class="num" id="LN288">288</td><td class="line"> gint i;</td></tr>
+<tr class="codeline" data-linenumber="289"><td class="num" id="LN289">289</td><td class="line"> gint num = <span class='keyword'>sizeof</span> (newline_test_data) / <span class='keyword'>sizeof</span> (NewLineTestData);</td></tr>
+<tr class="codeline" data-linenumber="290"><td class="num" id="LN290">290</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="291"><td class="num" id="LN291">291</td><td class="line"> <span class='keyword'>for</span> (i = 0; i &lt; num; ++i)</td></tr>
+<tr class="codeline" data-linenumber="292"><td class="num" id="LN292">292</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="293"><td class="num" id="LN293">293</td><td class="line"> NewLineTestData *nt = &amp;(newline_test_data[i]);</td></tr>
+<tr class="codeline" data-linenumber="294"><td class="num" id="LN294">294</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="295"><td class="num" id="LN295">295</td><td class="line"> test_saver (filename,</td></tr>
+<tr class="codeline" data-linenumber="296"><td class="num" id="LN296">296</td><td class="line"> nt-&gt;text,</td></tr>
+<tr class="codeline" data-linenumber="297"><td class="num" id="LN297">297</td><td class="line"> nt-&gt;type,</td></tr>
+<tr class="codeline" data-linenumber="298"><td class="num" id="LN298">298</td><td class="line"> save_flags,</td></tr>
+<tr class="codeline" data-linenumber="299"><td class="num" id="LN299">299</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="300"><td class="num" id="LN300">300</td><td class="line"> saver_test_data_new (filename, nt-&gt;result, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>));</td></tr>
+<tr class="codeline" data-linenumber="301"><td class="num" id="LN301">301</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="302"><td class="num" id="LN302">302</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="303"><td class="num" id="LN303">303</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="304"><td class="num" id="LN304">304</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="305"><td class="num" id="LN305">305</td><td class="line">test_local_newline ()</td></tr>
+<tr class="codeline" data-linenumber="306"><td class="num" id="LN306">306</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="307"><td class="num" id="LN307">307</td><td class="line"> test_new_line (<span class='macro'>DEFAULT_LOCAL_URI<span class='macro_popup'>"/tmp/pluma-document-saver-test.txt"</span></span>, 0);</td></tr>
+<tr class="codeline" data-linenumber="308"><td class="num" id="LN308">308</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="309"><td class="num" id="LN309">309</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="310"><td class="num" id="LN310">310</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="311"><td class="num" id="LN311">311</td><td class="line">test_local ()</td></tr>
+<tr class="codeline" data-linenumber="312"><td class="num" id="LN312">312</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="313"><td class="num" id="LN313">313</td><td class="line"> test_saver (<span class='macro'>DEFAULT_LOCAL_URI<span class='macro_popup'>"/tmp/pluma-document-saver-test.txt"</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="314"><td class="num" id="LN314">314</td><td class="line"> <span class='string_literal'>"hello world"</span>,</td></tr>
+<tr class="codeline" data-linenumber="315"><td class="num" id="LN315">315</td><td class="line"> PLUMA_DOCUMENT_NEWLINE_TYPE_LF,</td></tr>
+<tr class="codeline" data-linenumber="316"><td class="num" id="LN316">316</td><td class="line"> 0,</td></tr>
+<tr class="codeline" data-linenumber="317"><td class="num" id="LN317">317</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="318"><td class="num" id="LN318">318</td><td class="line"> saver_test_data_new (<span class='macro'>DEFAULT_LOCAL_URI<span class='macro_popup'>"/tmp/pluma-document-saver-test.txt"</span></span>, <span class='string_literal'>"hello world\n"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>));</td></tr>
+<tr class="codeline" data-linenumber="319"><td class="num" id="LN319">319</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="320"><td class="num" id="LN320">320</td><td class="line"> test_saver (<span class='macro'>DEFAULT_LOCAL_URI<span class='macro_popup'>"/tmp/pluma-document-saver-test.txt"</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="321"><td class="num" id="LN321">321</td><td class="line"> <span class='string_literal'>"hello world\r\n"</span>,</td></tr>
+<tr class="codeline" data-linenumber="322"><td class="num" id="LN322">322</td><td class="line"> PLUMA_DOCUMENT_NEWLINE_TYPE_LF,</td></tr>
+<tr class="codeline" data-linenumber="323"><td class="num" id="LN323">323</td><td class="line"> 0,</td></tr>
+<tr class="codeline" data-linenumber="324"><td class="num" id="LN324">324</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="325"><td class="num" id="LN325">325</td><td class="line"> saver_test_data_new (<span class='macro'>DEFAULT_LOCAL_URI<span class='macro_popup'>"/tmp/pluma-document-saver-test.txt"</span></span>, <span class='string_literal'>"hello world\n\n"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>));</td></tr>
+<tr class="codeline" data-linenumber="326"><td class="num" id="LN326">326</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="327"><td class="num" id="LN327">327</td><td class="line"> test_saver (<span class='macro'>DEFAULT_LOCAL_URI<span class='macro_popup'>"/tmp/pluma-document-saver-test.txt"</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="328"><td class="num" id="LN328">328</td><td class="line"> <span class='string_literal'>"hello world\n"</span>,</td></tr>
+<tr class="codeline" data-linenumber="329"><td class="num" id="LN329">329</td><td class="line"> PLUMA_DOCUMENT_NEWLINE_TYPE_LF,</td></tr>
+<tr class="codeline" data-linenumber="330"><td class="num" id="LN330">330</td><td class="line"> 0,</td></tr>
+<tr class="codeline" data-linenumber="331"><td class="num" id="LN331">331</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="332"><td class="num" id="LN332">332</td><td class="line"> saver_test_data_new (<span class='macro'>DEFAULT_LOCAL_URI<span class='macro_popup'>"/tmp/pluma-document-saver-test.txt"</span></span>, <span class='string_literal'>"hello world\n\n"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>));</td></tr>
+<tr class="codeline" data-linenumber="333"><td class="num" id="LN333">333</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="334"><td class="num" id="LN334">334</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="335"><td class="num" id="LN335">335</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="336"><td class="num" id="LN336">336</td><td class="line">test_remote_newline ()</td></tr>
+<tr class="codeline" data-linenumber="337"><td class="num" id="LN337">337</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="338"><td class="num" id="LN338">338</td><td class="line"> test_new_line (<span class='macro'>DEFAULT_REMOTE_URI<span class='macro_popup'>"sftp://localhost/tmp/pluma-document-saver-test.txt"</span></span>, 0);</td></tr>
+<tr class="codeline" data-linenumber="339"><td class="num" id="LN339">339</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="340"><td class="num" id="LN340">340</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="341"><td class="num" id="LN341">341</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="342"><td class="num" id="LN342">342</td><td class="line">test_remote ()</td></tr>
+<tr class="codeline" data-linenumber="343"><td class="num" id="LN343">343</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="344"><td class="num" id="LN344">344</td><td class="line"> test_saver (<span class='macro'>DEFAULT_REMOTE_URI<span class='macro_popup'>"sftp://localhost/tmp/pluma-document-saver-test.txt"</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="345"><td class="num" id="LN345">345</td><td class="line"> <span class='string_literal'>"hello world"</span>,</td></tr>
+<tr class="codeline" data-linenumber="346"><td class="num" id="LN346">346</td><td class="line"> PLUMA_DOCUMENT_NEWLINE_TYPE_LF,</td></tr>
+<tr class="codeline" data-linenumber="347"><td class="num" id="LN347">347</td><td class="line"> 0,</td></tr>
+<tr class="codeline" data-linenumber="348"><td class="num" id="LN348">348</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="349"><td class="num" id="LN349">349</td><td class="line"> saver_test_data_new (<span class='macro'>DEFAULT_REMOTE_URI<span class='macro_popup'>"sftp://localhost/tmp/pluma-document-saver-test.txt"</span></span>, <span class='string_literal'>"hello world\n"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>));</td></tr>
+<tr class="codeline" data-linenumber="350"><td class="num" id="LN350">350</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="351"><td class="num" id="LN351">351</td><td class="line"> test_saver (<span class='macro'>DEFAULT_REMOTE_URI<span class='macro_popup'>"sftp://localhost/tmp/pluma-document-saver-test.txt"</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="352"><td class="num" id="LN352">352</td><td class="line"> <span class='string_literal'>"hello world\r\n"</span>,</td></tr>
+<tr class="codeline" data-linenumber="353"><td class="num" id="LN353">353</td><td class="line"> PLUMA_DOCUMENT_NEWLINE_TYPE_LF,</td></tr>
+<tr class="codeline" data-linenumber="354"><td class="num" id="LN354">354</td><td class="line"> 0,</td></tr>
+<tr class="codeline" data-linenumber="355"><td class="num" id="LN355">355</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="356"><td class="num" id="LN356">356</td><td class="line"> saver_test_data_new (<span class='macro'>DEFAULT_REMOTE_URI<span class='macro_popup'>"sftp://localhost/tmp/pluma-document-saver-test.txt"</span></span>, <span class='string_literal'>"hello world\n\n"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>));</td></tr>
+<tr class="codeline" data-linenumber="357"><td class="num" id="LN357">357</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="358"><td class="num" id="LN358">358</td><td class="line"> test_saver (<span class='macro'>DEFAULT_REMOTE_URI<span class='macro_popup'>"sftp://localhost/tmp/pluma-document-saver-test.txt"</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="359"><td class="num" id="LN359">359</td><td class="line"> <span class='string_literal'>"hello world\n"</span>,</td></tr>
+<tr class="codeline" data-linenumber="360"><td class="num" id="LN360">360</td><td class="line"> PLUMA_DOCUMENT_NEWLINE_TYPE_LF,</td></tr>
+<tr class="codeline" data-linenumber="361"><td class="num" id="LN361">361</td><td class="line"> 0,</td></tr>
+<tr class="codeline" data-linenumber="362"><td class="num" id="LN362">362</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="363"><td class="num" id="LN363">363</td><td class="line"> saver_test_data_new (<span class='macro'>DEFAULT_REMOTE_URI<span class='macro_popup'>"sftp://localhost/tmp/pluma-document-saver-test.txt"</span></span>, <span class='string_literal'>"hello world\n\n"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>));</td></tr>
+<tr class="codeline" data-linenumber="364"><td class="num" id="LN364">364</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="365"><td class="num" id="LN365">365</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="366"><td class="num" id="LN366">366</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="367"><td class="num" id="LN367">367</td><td class="line">check_permissions (GFile *file,</td></tr>
+<tr class="codeline" data-linenumber="368"><td class="num" id="LN368">368</td><td class="line"> guint permissions)</td></tr>
+<tr class="codeline" data-linenumber="369"><td class="num" id="LN369">369</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="370"><td class="num" id="LN370">370</td><td class="line"> GError *error = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="371"><td class="num" id="LN371">371</td><td class="line"> GFileInfo *info;</td></tr>
+<tr class="codeline" data-linenumber="372"><td class="num" id="LN372">372</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="373"><td class="num" id="LN373">373</td><td class="line"> info = g_file_query_info (file,</td></tr>
+<tr class="codeline" data-linenumber="374"><td class="num" id="LN374">374</td><td class="line"> <span class='macro'>G_FILE_ATTRIBUTE_UNIX_MODE<span class='macro_popup'>"unix::mode"</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="375"><td class="num" id="LN375">375</td><td class="line"> G_FILE_QUERY_INFO_NONE,</td></tr>
+<tr class="codeline" data-linenumber="376"><td class="num" id="LN376">376</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="377"><td class="num" id="LN377">377</td><td class="line"> &amp;error);</td></tr>
+<tr class="codeline" data-linenumber="378"><td class="num" id="LN378">378</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="379"><td class="num" id="LN379">379</td><td class="line"> <span class='macro'>g_assert_no_error (error)<span class='macro_popup'>do { if (error) g_assertion_message_error (((gchar*) 0), "document-saver.c"<br>, 379, ((const char*) (__func__)), "error", error, 0, 0); } while<br> (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="380"><td class="num" id="LN380">380</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="381"><td class="num" id="LN381">381</td><td class="line"> <span class='macro'>g_assert_cmpint (permissions,<span class='macro_popup'>do { gint64 __n1 = (permissions), __n2 = (g_file_info_get_attribute_uint32<br> (info, "unix::mode") &amp; ((0400|0200|0100)|((0400|0200|0100<br>) &gt;&gt; 3)|(((0400|0200|0100) &gt;&gt; 3) &gt;&gt; 3))); if<br> (__n1 == __n2) ; else g_assertion_message_cmpnum (((gchar*) 0<br>), "document-saver.c", 383, ((const char*) (__func__)), "permissions"<br> " " "==" " " "g_file_info_get_attribute_uint32 (info, G_FILE_ATTRIBUTE_UNIX_MODE) &amp; ACCESSPERMS"<br>, (long double) __n1, "==", (long double) __n2, 'i'); } while<br> (0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="382"><td class="num" id="LN382">382</td><td class="line"> <span class='macro'>==,<span class='macro_popup'>do { gint64 __n1 = (permissions), __n2 = (g_file_info_get_attribute_uint32<br> (info, "unix::mode") &amp; ((0400|0200|0100)|((0400|0200|0100<br>) &gt;&gt; 3)|(((0400|0200|0100) &gt;&gt; 3) &gt;&gt; 3))); if<br> (__n1 == __n2) ; else g_assertion_message_cmpnum (((gchar*) 0<br>), "document-saver.c", 383, ((const char*) (__func__)), "permissions"<br> " " "==" " " "g_file_info_get_attribute_uint32 (info, G_FILE_ATTRIBUTE_UNIX_MODE) &amp; ACCESSPERMS"<br>, (long double) __n1, "==", (long double) __n2, 'i'); } while<br> (0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="383"><td class="num" id="LN383">383</td><td class="line"> <span class='macro'>g_file_info_get_attribute_uint32 (info, G_FILE_ATTRIBUTE_UNIX_MODE) &amp; ACCESSPERMS)<span class='macro_popup'>do { gint64 __n1 = (permissions), __n2 = (g_file_info_get_attribute_uint32<br> (info, "unix::mode") &amp; ((0400|0200|0100)|((0400|0200|0100<br>) &gt;&gt; 3)|(((0400|0200|0100) &gt;&gt; 3) &gt;&gt; 3))); if<br> (__n1 == __n2) ; else g_assertion_message_cmpnum (((gchar*) 0<br>), "document-saver.c", 383, ((const char*) (__func__)), "permissions"<br> " " "==" " " "g_file_info_get_attribute_uint32 (info, G_FILE_ATTRIBUTE_UNIX_MODE) &amp; ACCESSPERMS"<br>, (long double) __n1, "==", (long double) __n2, 'i'); } while<br> (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="384"><td class="num" id="LN384">384</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="385"><td class="num" id="LN385">385</td><td class="line"> g_object_unref (info);</td></tr>
+<tr class="codeline" data-linenumber="386"><td class="num" id="LN386">386</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="387"><td class="num" id="LN387">387</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="388"><td class="num" id="LN388">388</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="389"><td class="num" id="LN389">389</td><td class="line">check_permissions_saved (PlumaDocument *document,</td></tr>
+<tr class="codeline" data-linenumber="390"><td class="num" id="LN390">390</td><td class="line"> GError *error,</td></tr>
+<tr class="codeline" data-linenumber="391"><td class="num" id="LN391">391</td><td class="line"> SaverTestData *data)</td></tr>
+<tr class="codeline" data-linenumber="392"><td class="num" id="LN392">392</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="393"><td class="num" id="LN393">393</td><td class="line"> guint permissions = (guint)<span class='macro'>GPOINTER_TO_INT (data-&gt;data)<span class='macro_popup'>((gint) (glong) (data-&gt;data))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="394"><td class="num" id="LN394">394</td><td class="line"> GFile *file = pluma_document_get_location (document);</td></tr>
+<tr class="codeline" data-linenumber="395"><td class="num" id="LN395">395</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="396"><td class="num" id="LN396">396</td><td class="line"> check_permissions (file, permissions);</td></tr>
+<tr class="codeline" data-linenumber="397"><td class="num" id="LN397">397</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="398"><td class="num" id="LN398">398</td><td class="line"> g_object_unref (file);</td></tr>
+<tr class="codeline" data-linenumber="399"><td class="num" id="LN399">399</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="400"><td class="num" id="LN400">400</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="401"><td class="num" id="LN401">401</td><td class="line"><span id="start23"><span class='keyword'>static</span></span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="402"><td class="num" id="LN402">402</td><td class="line">test_permissions (<span class='keyword'>const</span> gchar *uri,</td></tr>
+<tr class="codeline" data-linenumber="403"><td class="num" id="LN403">403</td><td class="line"> guint permissions)</td></tr>
+<tr class="codeline" data-linenumber="404"><td class="num" id="LN404">404</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="405"><td class="num" id="LN405">405</td><td class="line"> <span id="start22"><span id="end23">GError</span></span> *error = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="406"><td class="num" id="LN406">406</td><td class="line"> GFile *file = g_file_new_for_commandline_arg (uri);</td></tr>
+<tr class="codeline" data-linenumber="407"><td class="num" id="LN407">407</td><td class="line"> GFileOutputStream *stream;</td></tr>
+<tr class="codeline" data-linenumber="408"><td class="num" id="LN408">408</td><td class="line"> GFileInfo *info;</td></tr>
+<tr class="codeline" data-linenumber="409"><td class="num" id="LN409">409</td><td class="line"> guint mode;</td></tr>
+<tr class="codeline" data-linenumber="410"><td class="num" id="LN410">410</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="411"><td class="num" id="LN411">411</td><td class="line"> g_file_delete (file, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="412"><td class="num" id="LN412">412</td><td class="line"> <span id="start21"><span id="end22">stream</span></span> = g_file_create (file, 0, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, &amp;error);</td></tr>
+<tr class="codeline" data-linenumber="413"><td class="num" id="LN413">413</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="414"><td class="num" id="LN414">414</td><td class="line"> <span id="start19"><span class="mrange"><span id="start20"><span id="end20"><span id="end21"><span class='macro'>g_assert_no_error</span></span></span></span></span> (error)<span class='macro_popup'>do { if (error) g_assertion_message_error (((gchar*) 0), "document-saver.c"<br>, 414, ((const char*) (__func__)), "error", error, 0, 0); } while<br> (0)</span></span>;</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path2" class="msg msgEvent" style="margin-left:9ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexEvent">2</div></td><td><div class="PathNav"><a href="#Path1" title="Previous event (1)">&#x2190;</a></div></td><td>Assuming 'error' is null</td><td><div class="PathNav"><a href="#Path3" title="Next event (3)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path3" class="msg msgControl" style="margin-left:9ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">3</div></td><td><div class="PathNav"><a href="#Path2" title="Previous event (2)">&#x2190;</a></div></td><td>Taking false branch</td><td><div class="PathNav"><a href="#Path4" title="Next event (4)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path4" class="msg msgControl" style="margin-left:9ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">4</div></td><td><div class="PathNav"><a href="#Path3" title="Previous event (3)">&#x2190;</a></div></td><td>Loop condition is false. Exiting loop</td><td><div class="PathNav"><a href="#Path5" title="Next event (5)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="415"><td class="num" id="LN415">415</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="416"><td class="num" id="LN416">416</td><td class="line"> <span id="start16"><span id="end17"><span id="start18"><span id="end19">g_output_stream_close</span></span></span></span> (<span id="start17"><span id="end18"><span class='macro'>G_OUTPUT_STREAM</span></span> (stream)<span class='macro_popup'>((((GOutputStream*) (void *) ((stream)))))</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="417"><td class="num" id="LN417">417</td><td class="line"> g_object_unref (stream);</td></tr>
+<tr class="codeline" data-linenumber="418"><td class="num" id="LN418">418</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="419"><td class="num" id="LN419">419</td><td class="line"> <span id="start15"><span id="end16">info</span></span> = g_file_query_info (file,</td></tr>
+<tr class="codeline" data-linenumber="420"><td class="num" id="LN420">420</td><td class="line"> <span class='macro'>G_FILE_ATTRIBUTE_UNIX_MODE<span class='macro_popup'>"unix::mode"</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="421"><td class="num" id="LN421">421</td><td class="line"> G_FILE_QUERY_INFO_NONE,</td></tr>
+<tr class="codeline" data-linenumber="422"><td class="num" id="LN422">422</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="423"><td class="num" id="LN423">423</td><td class="line"> &amp;error);</td></tr>
+<tr class="codeline" data-linenumber="424"><td class="num" id="LN424">424</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="425"><td class="num" id="LN425">425</td><td class="line"> <span id="start13"><span class="mrange"><span id="start14"><span id="end14"><span id="end15"><span class='macro'>g_assert_no_error</span></span></span></span></span> (error)<span class='macro_popup'>do { if (error) g_assertion_message_error (((gchar*) 0), "document-saver.c"<br>, 425, ((const char*) (__func__)), "error", error, 0, 0); } while<br> (0)</span></span>;</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path5" class="msg msgEvent" style="margin-left:9ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexEvent">5</div></td><td><div class="PathNav"><a href="#Path4" title="Previous event (4)">&#x2190;</a></div></td><td>Assuming 'error' is null</td><td><div class="PathNav"><a href="#Path6" title="Next event (6)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path6" class="msg msgControl" style="margin-left:9ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">6</div></td><td><div class="PathNav"><a href="#Path5" title="Previous event (5)">&#x2190;</a></div></td><td>Taking false branch</td><td><div class="PathNav"><a href="#Path7" title="Next event (7)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path7" class="msg msgControl" style="margin-left:9ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">7</div></td><td><div class="PathNav"><a href="#Path6" title="Previous event (6)">&#x2190;</a></div></td><td>Loop condition is false. Exiting loop</td><td><div class="PathNav"><a href="#Path8" title="Next event (8)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="426"><td class="num" id="LN426">426</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="427"><td class="num" id="LN427">427</td><td class="line"> <span id="start10"><span id="end11"><span id="start12"><span id="end13">mode</span></span></span></span> = g_file_info_get_attribute_uint32 (<span id="start11"><span id="end12">info</span></span>, <span class='macro'>G_FILE_ATTRIBUTE_UNIX_MODE<span class='macro_popup'>"unix::mode"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="428"><td class="num" id="LN428">428</td><td class="line"> g_object_unref (info);</td></tr>
+<tr class="codeline" data-linenumber="429"><td class="num" id="LN429">429</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="430"><td class="num" id="LN430">430</td><td class="line"> <span id="start9"><span id="end10">g_file_set_attribute_uint32</span></span> (file,</td></tr>
+<tr class="codeline" data-linenumber="431"><td class="num" id="LN431">431</td><td class="line"> <span class='macro'>G_FILE_ATTRIBUTE_UNIX_MODE<span class='macro_popup'>"unix::mode"</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="432"><td class="num" id="LN432">432</td><td class="line"> (mode &amp; ~<span class='macro'>ACCESSPERMS<span class='macro_popup'>((0400|0200|0100)|((0400|0200|0100) &gt;&gt; 3)|(((0400|0200|<br>0100) &gt;&gt; 3) &gt;&gt; 3))</span></span>) | permissions,</td></tr>
+<tr class="codeline" data-linenumber="433"><td class="num" id="LN433">433</td><td class="line"> G_FILE_QUERY_INFO_NONE,</td></tr>
+<tr class="codeline" data-linenumber="434"><td class="num" id="LN434">434</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="435"><td class="num" id="LN435">435</td><td class="line"> &amp;error);</td></tr>
+<tr class="codeline" data-linenumber="436"><td class="num" id="LN436">436</td><td class="line"> <span id="start7"><span class="mrange"><span id="start8"><span id="end8"><span id="end9"><span class='macro'>g_assert_no_error</span></span></span></span></span> (error)<span class='macro_popup'>do { if (error) g_assertion_message_error (((gchar*) 0), "document-saver.c"<br>, 436, ((const char*) (__func__)), "error", error, 0, 0); } while<br> (0)</span></span>;</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path8" class="msg msgEvent" style="margin-left:9ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexEvent">8</div></td><td><div class="PathNav"><a href="#Path7" title="Previous event (7)">&#x2190;</a></div></td><td>Assuming 'error' is null</td><td><div class="PathNav"><a href="#Path9" title="Next event (9)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path9" class="msg msgControl" style="margin-left:9ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">9</div></td><td><div class="PathNav"><a href="#Path8" title="Previous event (8)">&#x2190;</a></div></td><td>Taking false branch</td><td><div class="PathNav"><a href="#Path10" title="Next event (10)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path10" class="msg msgControl" style="margin-left:9ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">10</div></td><td><div class="PathNav"><a href="#Path9" title="Previous event (9)">&#x2190;</a></div></td><td>Loop condition is false. Exiting loop</td><td><div class="PathNav"><a href="#Path11" title="Next event (11)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="437"><td class="num" id="LN437">437</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="438"><td class="num" id="LN438">438</td><td class="line"> <span id="start4"><span id="end5"><span id="start6"><span id="end7">check_permissions</span></span></span></span> (<span id="start5"><span id="end6">file</span></span>, permissions);</td></tr>
+<tr class="codeline" data-linenumber="439"><td class="num" id="LN439">439</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="440"><td class="num" id="LN440">440</td><td class="line"> <span id="start3"><span id="end4">test_saver</span></span> (uri,</td></tr>
+<tr class="codeline" data-linenumber="441"><td class="num" id="LN441">441</td><td class="line"> <span class='macro'>DEFAULT_CONTENT<span class='macro_popup'>"hello world!"</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="442"><td class="num" id="LN442">442</td><td class="line"> PLUMA_DOCUMENT_NEWLINE_TYPE_LF,</td></tr>
+<tr class="codeline" data-linenumber="443"><td class="num" id="LN443">443</td><td class="line"> 0,</td></tr>
+<tr class="codeline" data-linenumber="444"><td class="num" id="LN444">444</td><td class="line"> <span class='macro'>G_CALLBACK (check_permissions_saved)<span class='macro_popup'>((GCallback) (check_permissions_saved))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="445"><td class="num" id="LN445">445</td><td class="line"> <span class="mrange"><span id="end3">saver_test_data_new</span> (uri,</td></tr></span>
+<tr><td class="num"></td><td class="line"><div id="Path11" class="msg msgEvent" style="margin-left:21ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexEvent">11</div></td><td><div class="PathNav"><a href="#Path10" title="Previous event (10)">&#x2190;</a></div></td><td>Calling 'saver_test_data_new'</td><td><div class="PathNav"><a href="#EndPath" title="Next event (12)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="446"><td class="num" id="LN446">446</td><td class="line"> <span class="mrange"><span class='macro'>DEFAULT_CONTENT_RESULT<span class='macro_popup'>"hello world!\n"</span></span>,</td></tr></span>
+<tr class="codeline" data-linenumber="447"><td class="num" id="LN447">447</td><td class="line"> <span class="mrange"><span class='macro'>GINT_TO_POINTER ((gint)permissions)<span class='macro_popup'>((gpointer) (glong) ((gint)permissions))</span></span>)</span>);</td></tr>
+<tr class="codeline" data-linenumber="448"><td class="num" id="LN448">448</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="449"><td class="num" id="LN449">449</td><td class="line"> g_file_delete (file, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="450"><td class="num" id="LN450">450</td><td class="line"> g_object_unref (file);</td></tr>
+<tr class="codeline" data-linenumber="451"><td class="num" id="LN451">451</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="452"><td class="num" id="LN452">452</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="453"><td class="num" id="LN453">453</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="454"><td class="num" id="LN454">454</td><td class="line">test_local_permissions ()</td></tr>
+<tr class="codeline" data-linenumber="455"><td class="num" id="LN455">455</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="456"><td class="num" id="LN456">456</td><td class="line"> test_permissions (<span class='macro'>DEFAULT_LOCAL_URI<span class='macro_popup'>"/tmp/pluma-document-saver-test.txt"</span></span>, 0600);</td></tr>
+<tr class="codeline" data-linenumber="457"><td class="num" id="LN457">457</td><td class="line"> test_permissions (<span class='macro'>DEFAULT_LOCAL_URI<span class='macro_popup'>"/tmp/pluma-document-saver-test.txt"</span></span>, 0660);</td></tr>
+<tr class="codeline" data-linenumber="458"><td class="num" id="LN458">458</td><td class="line"> test_permissions (<span class='macro'>DEFAULT_LOCAL_URI<span class='macro_popup'>"/tmp/pluma-document-saver-test.txt"</span></span>, 0666);</td></tr>
+<tr class="codeline" data-linenumber="459"><td class="num" id="LN459">459</td><td class="line"> test_permissions (<span class='macro'>DEFAULT_LOCAL_URI<span class='macro_popup'>"/tmp/pluma-document-saver-test.txt"</span></span>, 0760);</td></tr>
+<tr class="codeline" data-linenumber="460"><td class="num" id="LN460">460</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="461"><td class="num" id="LN461">461</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="462"><td class="num" id="LN462">462</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="463"><td class="num" id="LN463">463</td><td class="line">test_local_unowned_directory ()</td></tr>
+<tr class="codeline" data-linenumber="464"><td class="num" id="LN464">464</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="465"><td class="num" id="LN465">465</td><td class="line"> test_saver (<span class='macro'>UNOWNED_LOCAL_URI<span class='macro_popup'>"/tmp/pluma-document-saver-unowned/pluma-document-saver-test.txt"</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="466"><td class="num" id="LN466">466</td><td class="line"> <span class='macro'>DEFAULT_CONTENT<span class='macro_popup'>"hello world!"</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="467"><td class="num" id="LN467">467</td><td class="line"> PLUMA_DOCUMENT_NEWLINE_TYPE_LF,</td></tr>
+<tr class="codeline" data-linenumber="468"><td class="num" id="LN468">468</td><td class="line"> 0,</td></tr>
+<tr class="codeline" data-linenumber="469"><td class="num" id="LN469">469</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="470"><td class="num" id="LN470">470</td><td class="line"> saver_test_data_new (<span class='macro'>UNOWNED_LOCAL_URI<span class='macro_popup'>"/tmp/pluma-document-saver-unowned/pluma-document-saver-test.txt"</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="471"><td class="num" id="LN471">471</td><td class="line"> <span class='macro'>DEFAULT_CONTENT_RESULT<span class='macro_popup'>"hello world!\n"</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="472"><td class="num" id="LN472">472</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>));</td></tr>
+<tr class="codeline" data-linenumber="473"><td class="num" id="LN473">473</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="474"><td class="num" id="LN474">474</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="475"><td class="num" id="LN475">475</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="476"><td class="num" id="LN476">476</td><td class="line">test_remote_unowned_directory ()</td></tr>
+<tr class="codeline" data-linenumber="477"><td class="num" id="LN477">477</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="478"><td class="num" id="LN478">478</td><td class="line"> test_saver (<span class='macro'>UNOWNED_REMOTE_URI<span class='macro_popup'>"sftp://localhost/tmp/pluma-document-saver-unowned/pluma-document-saver-test.txt"</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="479"><td class="num" id="LN479">479</td><td class="line"> <span class='macro'>DEFAULT_CONTENT<span class='macro_popup'>"hello world!"</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="480"><td class="num" id="LN480">480</td><td class="line"> PLUMA_DOCUMENT_NEWLINE_TYPE_LF,</td></tr>
+<tr class="codeline" data-linenumber="481"><td class="num" id="LN481">481</td><td class="line"> 0,</td></tr>
+<tr class="codeline" data-linenumber="482"><td class="num" id="LN482">482</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="483"><td class="num" id="LN483">483</td><td class="line"> saver_test_data_new (<span class='macro'>UNOWNED_REMOTE_URI<span class='macro_popup'>"sftp://localhost/tmp/pluma-document-saver-unowned/pluma-document-saver-test.txt"</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="484"><td class="num" id="LN484">484</td><td class="line"> <span class='macro'>DEFAULT_CONTENT_RESULT<span class='macro_popup'>"hello world!\n"</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="485"><td class="num" id="LN485">485</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>));</td></tr>
+<tr class="codeline" data-linenumber="486"><td class="num" id="LN486">486</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="487"><td class="num" id="LN487">487</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="488"><td class="num" id="LN488">488</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="489"><td class="num" id="LN489">489</td><td class="line">test_remote_permissions ()</td></tr>
+<tr class="codeline" data-linenumber="490"><td class="num" id="LN490">490</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="491"><td class="num" id="LN491">491</td><td class="line"> <span class="mrange">test_permissions (<span class='macro'>DEFAULT_REMOTE_URI<span class='macro_popup'>"sftp://localhost/tmp/pluma-document-saver-test.txt"</span></span>, 0600)</span>;</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path1" class="msg msgEvent" style="margin-left:9ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexEvent">1</div></td><td>Calling 'test_permissions'</td><td><div class="PathNav"><a href="#Path2" title="Next event (2)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="492"><td class="num" id="LN492">492</td><td class="line"> test_permissions (<span class='macro'>DEFAULT_REMOTE_URI<span class='macro_popup'>"sftp://localhost/tmp/pluma-document-saver-test.txt"</span></span>, 0660);</td></tr>
+<tr class="codeline" data-linenumber="493"><td class="num" id="LN493">493</td><td class="line"> test_permissions (<span class='macro'>DEFAULT_REMOTE_URI<span class='macro_popup'>"sftp://localhost/tmp/pluma-document-saver-test.txt"</span></span>, 0666);</td></tr>
+<tr class="codeline" data-linenumber="494"><td class="num" id="LN494">494</td><td class="line"> test_permissions (<span class='macro'>DEFAULT_REMOTE_URI<span class='macro_popup'>"sftp://localhost/tmp/pluma-document-saver-test.txt"</span></span>, 0760);</td></tr>
+<tr class="codeline" data-linenumber="495"><td class="num" id="LN495">495</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="496"><td class="num" id="LN496">496</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="497"><td class="num" id="LN497">497</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="498"><td class="num" id="LN498">498</td><td class="line">test_unowned_group_permissions (PlumaDocument *document,</td></tr>
+<tr class="codeline" data-linenumber="499"><td class="num" id="LN499">499</td><td class="line"> GError *error,</td></tr>
+<tr class="codeline" data-linenumber="500"><td class="num" id="LN500">500</td><td class="line"> SaverTestData *data)</td></tr>
+<tr class="codeline" data-linenumber="501"><td class="num" id="LN501">501</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="502"><td class="num" id="LN502">502</td><td class="line"> GFile *file = g_file_new_for_commandline_arg (data-&gt;uri);</td></tr>
+<tr class="codeline" data-linenumber="503"><td class="num" id="LN503">503</td><td class="line"> GError *err = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="504"><td class="num" id="LN504">504</td><td class="line"> <span class='keyword'>const</span> gchar *group;</td></tr>
+<tr class="codeline" data-linenumber="505"><td class="num" id="LN505">505</td><td class="line"> guint32 mode;</td></tr>
+<tr class="codeline" data-linenumber="506"><td class="num" id="LN506">506</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="507"><td class="num" id="LN507">507</td><td class="line"> GFileInfo *info = g_file_query_info (file,</td></tr>
+<tr class="codeline" data-linenumber="508"><td class="num" id="LN508">508</td><td class="line"> <span class='macro'>G_FILE_ATTRIBUTE_OWNER_GROUP<span class='macro_popup'>"owner::group"</span></span> <span class='string_literal'>","</span></td></tr>
+<tr class="codeline" data-linenumber="509"><td class="num" id="LN509">509</td><td class="line"> <span class='macro'>G_FILE_ATTRIBUTE_UNIX_MODE<span class='macro_popup'>"unix::mode"</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="510"><td class="num" id="LN510">510</td><td class="line"> G_FILE_QUERY_INFO_NONE,</td></tr>
+<tr class="codeline" data-linenumber="511"><td class="num" id="LN511">511</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="512"><td class="num" id="LN512">512</td><td class="line"> &amp;err);</td></tr>
+<tr class="codeline" data-linenumber="513"><td class="num" id="LN513">513</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="514"><td class="num" id="LN514">514</td><td class="line"> <span class='macro'>g_assert_no_error (err)<span class='macro_popup'>do { if (err) g_assertion_message_error (((gchar*) 0), "document-saver.c"<br>, 514, ((const char*) (__func__)), "err", err, 0, 0); } while<br> (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="515"><td class="num" id="LN515">515</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="516"><td class="num" id="LN516">516</td><td class="line"> group = g_file_info_get_attribute_string (info, <span class='macro'>G_FILE_ATTRIBUTE_OWNER_GROUP<span class='macro_popup'>"owner::group"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="517"><td class="num" id="LN517">517</td><td class="line"> <span class='macro'>g_assert_cmpstr (group, ==, <span class='string_literal'>"root"</span>)<span class='macro_popup'>do { const char *__s1 = (group), *__s2 = ("root"); if (g_strcmp0<br> (__s1, __s2) == 0) ; else g_assertion_message_cmpstr (((gchar<br>*) 0), "document-saver.c", 517, ((const char*) (__func__)), "group"<br> " " "==" " " "\"root\"", __s1, "==", __s2); } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="518"><td class="num" id="LN518">518</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="519"><td class="num" id="LN519">519</td><td class="line"> mode = g_file_info_get_attribute_uint32 (info, <span class='macro'>G_FILE_ATTRIBUTE_UNIX_MODE<span class='macro_popup'>"unix::mode"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="520"><td class="num" id="LN520">520</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="521"><td class="num" id="LN521">521</td><td class="line"> <span class='macro'>g_assert_cmpint (mode &amp; ACCESSPERMS, ==, 0660)<span class='macro_popup'>do { gint64 __n1 = (mode &amp; ((0400|0200|0100)|((0400|0200|<br>0100) &gt;&gt; 3)|(((0400|0200|0100) &gt;&gt; 3) &gt;&gt; 3))<br>), __n2 = (0660); if (__n1 == __n2) ; else g_assertion_message_cmpnum<br> (((gchar*) 0), "document-saver.c", 521, ((const char*) (__func__<br>)), "mode &amp; ACCESSPERMS" " " "==" " " "0660", (long double<br>) __n1, "==", (long double) __n2, 'i'); } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="522"><td class="num" id="LN522">522</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="523"><td class="num" id="LN523">523</td><td class="line"> g_object_unref (file);</td></tr>
+<tr class="codeline" data-linenumber="524"><td class="num" id="LN524">524</td><td class="line"> g_object_unref (info);</td></tr>
+<tr class="codeline" data-linenumber="525"><td class="num" id="LN525">525</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="526"><td class="num" id="LN526">526</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="527"><td class="num" id="LN527">527</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="528"><td class="num" id="LN528">528</td><td class="line">test_unowned_group (<span class='keyword'>const</span> gchar *uri)</td></tr>
+<tr class="codeline" data-linenumber="529"><td class="num" id="LN529">529</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="530"><td class="num" id="LN530">530</td><td class="line"> test_saver (uri,</td></tr>
+<tr class="codeline" data-linenumber="531"><td class="num" id="LN531">531</td><td class="line"> <span class='macro'>DEFAULT_CONTENT<span class='macro_popup'>"hello world!"</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="532"><td class="num" id="LN532">532</td><td class="line"> PLUMA_DOCUMENT_NEWLINE_TYPE_LF,</td></tr>
+<tr class="codeline" data-linenumber="533"><td class="num" id="LN533">533</td><td class="line"> 0,</td></tr>
+<tr class="codeline" data-linenumber="534"><td class="num" id="LN534">534</td><td class="line"> <span class='macro'>G_CALLBACK (test_unowned_group_permissions)<span class='macro_popup'>((GCallback) (test_unowned_group_permissions))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="535"><td class="num" id="LN535">535</td><td class="line"> saver_test_data_new (uri,</td></tr>
+<tr class="codeline" data-linenumber="536"><td class="num" id="LN536">536</td><td class="line"> <span class='macro'>DEFAULT_CONTENT_RESULT<span class='macro_popup'>"hello world!\n"</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="537"><td class="num" id="LN537">537</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>));</td></tr>
+<tr class="codeline" data-linenumber="538"><td class="num" id="LN538">538</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="539"><td class="num" id="LN539">539</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="540"><td class="num" id="LN540">540</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="541"><td class="num" id="LN541">541</td><td class="line">test_local_unowned_group ()</td></tr>
+<tr class="codeline" data-linenumber="542"><td class="num" id="LN542">542</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="543"><td class="num" id="LN543">543</td><td class="line"> test_unowned_group (<span class='macro'>UNOWNED_GROUP_LOCAL_URI<span class='macro_popup'>"/tmp/pluma-document-saver-unowned-group.txt"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="544"><td class="num" id="LN544">544</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="545"><td class="num" id="LN545">545</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="546"><td class="num" id="LN546">546</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="547"><td class="num" id="LN547">547</td><td class="line">test_remote_unowned_group ()</td></tr>
+<tr class="codeline" data-linenumber="548"><td class="num" id="LN548">548</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="549"><td class="num" id="LN549">549</td><td class="line"> test_unowned_group (<span class='macro'>UNOWNED_GROUP_REMOTE_URI<span class='macro_popup'>"sftp://localhost/tmp/pluma-document-saver-unowned-group.txt"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="550"><td class="num" id="LN550">550</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="551"><td class="num" id="LN551">551</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="552"><td class="num" id="LN552">552</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="553"><td class="num" id="LN553">553</td><td class="line">check_unowned_directory ()</td></tr>
+<tr class="codeline" data-linenumber="554"><td class="num" id="LN554">554</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="555"><td class="num" id="LN555">555</td><td class="line"> GFile *unowned = g_file_new_for_path (<span class='macro'>UNOWNED_LOCAL_DIRECTORY<span class='macro_popup'>"/tmp/pluma-document-saver-unowned"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="556"><td class="num" id="LN556">556</td><td class="line"> GFile *unowned_file;</td></tr>
+<tr class="codeline" data-linenumber="557"><td class="num" id="LN557">557</td><td class="line"> GFileInfo *info;</td></tr>
+<tr class="codeline" data-linenumber="558"><td class="num" id="LN558">558</td><td class="line"> GError *error = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="559"><td class="num" id="LN559">559</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="560"><td class="num" id="LN560">560</td><td class="line"> g_printf (<span class='string_literal'>"*** Checking for unowned directory test... "</span>);</td></tr>
+<tr class="codeline" data-linenumber="561"><td class="num" id="LN561">561</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="562"><td class="num" id="LN562">562</td><td class="line"> info = g_file_query_info (unowned,</td></tr>
+<tr class="codeline" data-linenumber="563"><td class="num" id="LN563">563</td><td class="line"> <span class='macro'>G_FILE_ATTRIBUTE_ACCESS_CAN_WRITE<span class='macro_popup'>"access::can-write"</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="564"><td class="num" id="LN564">564</td><td class="line"> G_FILE_QUERY_INFO_NONE,</td></tr>
+<tr class="codeline" data-linenumber="565"><td class="num" id="LN565">565</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="566"><td class="num" id="LN566">566</td><td class="line"> &amp;error);</td></tr>
+<tr class="codeline" data-linenumber="567"><td class="num" id="LN567">567</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="568"><td class="num" id="LN568">568</td><td class="line"> <span class='keyword'>if</span> (error)</td></tr>
+<tr class="codeline" data-linenumber="569"><td class="num" id="LN569">569</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="570"><td class="num" id="LN570">570</td><td class="line"> g_object_unref (unowned);</td></tr>
+<tr class="codeline" data-linenumber="571"><td class="num" id="LN571">571</td><td class="line"> g_printf (<span class='string_literal'>"NO: directory does not exist\n"</span>);</td></tr>
+<tr class="codeline" data-linenumber="572"><td class="num" id="LN572">572</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="573"><td class="num" id="LN573">573</td><td class="line"> g_error_free (error);</td></tr>
+<tr class="codeline" data-linenumber="574"><td class="num" id="LN574">574</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="575"><td class="num" id="LN575">575</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="576"><td class="num" id="LN576">576</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="577"><td class="num" id="LN577">577</td><td class="line"> <span class='keyword'>if</span> (g_file_info_get_attribute_boolean (info, <span class='macro'>G_FILE_ATTRIBUTE_ACCESS_CAN_WRITE<span class='macro_popup'>"access::can-write"</span></span>))</td></tr>
+<tr class="codeline" data-linenumber="578"><td class="num" id="LN578">578</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="579"><td class="num" id="LN579">579</td><td class="line"> g_object_unref (unowned);</td></tr>
+<tr class="codeline" data-linenumber="580"><td class="num" id="LN580">580</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="581"><td class="num" id="LN581">581</td><td class="line"> g_printf (<span class='string_literal'>"NO: directory is writable\n"</span>);</td></tr>
+<tr class="codeline" data-linenumber="582"><td class="num" id="LN582">582</td><td class="line"> g_object_unref (info);</td></tr>
+<tr class="codeline" data-linenumber="583"><td class="num" id="LN583">583</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="584"><td class="num" id="LN584">584</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="585"><td class="num" id="LN585">585</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="586"><td class="num" id="LN586">586</td><td class="line"> g_object_unref (info);</td></tr>
+<tr class="codeline" data-linenumber="587"><td class="num" id="LN587">587</td><td class="line"> g_object_unref (unowned);</td></tr>
+<tr class="codeline" data-linenumber="588"><td class="num" id="LN588">588</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="589"><td class="num" id="LN589">589</td><td class="line"> unowned_file = g_file_new_for_commandline_arg (<span class='macro'>UNOWNED_LOCAL_URI<span class='macro_popup'>"/tmp/pluma-document-saver-unowned/pluma-document-saver-test.txt"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="590"><td class="num" id="LN590">590</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="591"><td class="num" id="LN591">591</td><td class="line"> info = g_file_query_info (unowned_file,</td></tr>
+<tr class="codeline" data-linenumber="592"><td class="num" id="LN592">592</td><td class="line"> <span class='macro'>G_FILE_ATTRIBUTE_ACCESS_CAN_WRITE<span class='macro_popup'>"access::can-write"</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="593"><td class="num" id="LN593">593</td><td class="line"> G_FILE_QUERY_INFO_NONE,</td></tr>
+<tr class="codeline" data-linenumber="594"><td class="num" id="LN594">594</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="595"><td class="num" id="LN595">595</td><td class="line"> &amp;error);</td></tr>
+<tr class="codeline" data-linenumber="596"><td class="num" id="LN596">596</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="597"><td class="num" id="LN597">597</td><td class="line"> <span class='keyword'>if</span> (error)</td></tr>
+<tr class="codeline" data-linenumber="598"><td class="num" id="LN598">598</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="599"><td class="num" id="LN599">599</td><td class="line"> g_object_unref (unowned_file);</td></tr>
+<tr class="codeline" data-linenumber="600"><td class="num" id="LN600">600</td><td class="line"> g_error_free (error);</td></tr>
+<tr class="codeline" data-linenumber="601"><td class="num" id="LN601">601</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="602"><td class="num" id="LN602">602</td><td class="line"> g_printf (<span class='string_literal'>"NO: file does not exist\n"</span>);</td></tr>
+<tr class="codeline" data-linenumber="603"><td class="num" id="LN603">603</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="604"><td class="num" id="LN604">604</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="605"><td class="num" id="LN605">605</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="606"><td class="num" id="LN606">606</td><td class="line"> <span class='keyword'>if</span> (!g_file_info_get_attribute_boolean (info, <span class='macro'>G_FILE_ATTRIBUTE_ACCESS_CAN_WRITE<span class='macro_popup'>"access::can-write"</span></span>))</td></tr>
+<tr class="codeline" data-linenumber="607"><td class="num" id="LN607">607</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="608"><td class="num" id="LN608">608</td><td class="line"> g_object_unref (unowned_file);</td></tr>
+<tr class="codeline" data-linenumber="609"><td class="num" id="LN609">609</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="610"><td class="num" id="LN610">610</td><td class="line"> g_printf (<span class='string_literal'>"NO: file is not writable\n"</span>);</td></tr>
+<tr class="codeline" data-linenumber="611"><td class="num" id="LN611">611</td><td class="line"> g_object_unref (info);</td></tr>
+<tr class="codeline" data-linenumber="612"><td class="num" id="LN612">612</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="613"><td class="num" id="LN613">613</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="614"><td class="num" id="LN614">614</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="615"><td class="num" id="LN615">615</td><td class="line"> g_object_unref (info);</td></tr>
+<tr class="codeline" data-linenumber="616"><td class="num" id="LN616">616</td><td class="line"> g_object_unref (unowned_file);</td></tr>
+<tr class="codeline" data-linenumber="617"><td class="num" id="LN617">617</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="618"><td class="num" id="LN618">618</td><td class="line"> g_printf (<span class='string_literal'>"YES\n"</span>);</td></tr>
+<tr class="codeline" data-linenumber="619"><td class="num" id="LN619">619</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="620"><td class="num" id="LN620">620</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="621"><td class="num" id="LN621">621</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="622"><td class="num" id="LN622">622</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="623"><td class="num" id="LN623">623</td><td class="line">check_unowned_group ()</td></tr>
+<tr class="codeline" data-linenumber="624"><td class="num" id="LN624">624</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="625"><td class="num" id="LN625">625</td><td class="line"> GFile *unowned = g_file_new_for_path (<span class='macro'>UNOWNED_GROUP_LOCAL_URI<span class='macro_popup'>"/tmp/pluma-document-saver-unowned-group.txt"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="626"><td class="num" id="LN626">626</td><td class="line"> GFileInfo *info;</td></tr>
+<tr class="codeline" data-linenumber="627"><td class="num" id="LN627">627</td><td class="line"> GError *error = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="628"><td class="num" id="LN628">628</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="629"><td class="num" id="LN629">629</td><td class="line"> g_printf (<span class='string_literal'>"*** Checking for unowned group test... "</span>);</td></tr>
+<tr class="codeline" data-linenumber="630"><td class="num" id="LN630">630</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="631"><td class="num" id="LN631">631</td><td class="line"> info = g_file_query_info (unowned,</td></tr>
+<tr class="codeline" data-linenumber="632"><td class="num" id="LN632">632</td><td class="line"> <span class='macro'>G_FILE_ATTRIBUTE_ACCESS_CAN_WRITE<span class='macro_popup'>"access::can-write"</span></span> <span class='string_literal'>","</span></td></tr>
+<tr class="codeline" data-linenumber="633"><td class="num" id="LN633">633</td><td class="line"> <span class='macro'>G_FILE_ATTRIBUTE_OWNER_GROUP<span class='macro_popup'>"owner::group"</span></span> <span class='string_literal'>","</span></td></tr>
+<tr class="codeline" data-linenumber="634"><td class="num" id="LN634">634</td><td class="line"> <span class='macro'>G_FILE_ATTRIBUTE_UNIX_MODE<span class='macro_popup'>"unix::mode"</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="635"><td class="num" id="LN635">635</td><td class="line"> G_FILE_QUERY_INFO_NONE,</td></tr>
+<tr class="codeline" data-linenumber="636"><td class="num" id="LN636">636</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="637"><td class="num" id="LN637">637</td><td class="line"> &amp;error);</td></tr>
+<tr class="codeline" data-linenumber="638"><td class="num" id="LN638">638</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="639"><td class="num" id="LN639">639</td><td class="line"> <span class='keyword'>if</span> (error)</td></tr>
+<tr class="codeline" data-linenumber="640"><td class="num" id="LN640">640</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="641"><td class="num" id="LN641">641</td><td class="line"> g_object_unref (unowned);</td></tr>
+<tr class="codeline" data-linenumber="642"><td class="num" id="LN642">642</td><td class="line"> g_printf (<span class='string_literal'>"NO: file does not exist\n"</span>);</td></tr>
+<tr class="codeline" data-linenumber="643"><td class="num" id="LN643">643</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="644"><td class="num" id="LN644">644</td><td class="line"> g_error_free (error);</td></tr>
+<tr class="codeline" data-linenumber="645"><td class="num" id="LN645">645</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="646"><td class="num" id="LN646">646</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="647"><td class="num" id="LN647">647</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="648"><td class="num" id="LN648">648</td><td class="line"> <span class='keyword'>if</span> (!g_file_info_get_attribute_boolean (info, <span class='macro'>G_FILE_ATTRIBUTE_ACCESS_CAN_WRITE<span class='macro_popup'>"access::can-write"</span></span>))</td></tr>
+<tr class="codeline" data-linenumber="649"><td class="num" id="LN649">649</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="650"><td class="num" id="LN650">650</td><td class="line"> g_object_unref (unowned);</td></tr>
+<tr class="codeline" data-linenumber="651"><td class="num" id="LN651">651</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="652"><td class="num" id="LN652">652</td><td class="line"> g_printf (<span class='string_literal'>"NO: file is not writable\n"</span>);</td></tr>
+<tr class="codeline" data-linenumber="653"><td class="num" id="LN653">653</td><td class="line"> g_object_unref (info);</td></tr>
+<tr class="codeline" data-linenumber="654"><td class="num" id="LN654">654</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="655"><td class="num" id="LN655">655</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="656"><td class="num" id="LN656">656</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="657"><td class="num" id="LN657">657</td><td class="line"> <span class='keyword'>if</span> (g_strcmp0 (g_file_info_get_attribute_string (info, <span class='macro'>G_FILE_ATTRIBUTE_OWNER_GROUP<span class='macro_popup'>"owner::group"</span></span>),</td></tr>
+<tr class="codeline" data-linenumber="658"><td class="num" id="LN658">658</td><td class="line"> <span class='string_literal'>"root"</span>) != 0)</td></tr>
+<tr class="codeline" data-linenumber="659"><td class="num" id="LN659">659</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="660"><td class="num" id="LN660">660</td><td class="line"> g_object_unref (unowned);</td></tr>
+<tr class="codeline" data-linenumber="661"><td class="num" id="LN661">661</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="662"><td class="num" id="LN662">662</td><td class="line"> g_printf (<span class='string_literal'>"NO: group is not root (%s)\n"</span>, g_file_info_get_attribute_string (info, <span class='macro'>G_FILE_ATTRIBUTE_OWNER_GROUP<span class='macro_popup'>"owner::group"</span></span>));</td></tr>
+<tr class="codeline" data-linenumber="663"><td class="num" id="LN663">663</td><td class="line"> g_object_unref (info);</td></tr>
+<tr class="codeline" data-linenumber="664"><td class="num" id="LN664">664</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="665"><td class="num" id="LN665">665</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="666"><td class="num" id="LN666">666</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="667"><td class="num" id="LN667">667</td><td class="line"> <span class='keyword'>if</span> ((g_file_info_get_attribute_uint32 (info, <span class='macro'>G_FILE_ATTRIBUTE_UNIX_MODE<span class='macro_popup'>"unix::mode"</span></span>) &amp; <span class='macro'>ACCESSPERMS<span class='macro_popup'>((0400|0200|0100)|((0400|0200|0100) &gt;&gt; 3)|(((0400|0200|<br>0100) &gt;&gt; 3) &gt;&gt; 3))</span></span>) != 0660)</td></tr>
+<tr class="codeline" data-linenumber="668"><td class="num" id="LN668">668</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="669"><td class="num" id="LN669">669</td><td class="line"> g_object_unref (unowned);</td></tr>
+<tr class="codeline" data-linenumber="670"><td class="num" id="LN670">670</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="671"><td class="num" id="LN671">671</td><td class="line"> g_printf (<span class='string_literal'>"NO: file has wrong permissions\n"</span>);</td></tr>
+<tr class="codeline" data-linenumber="672"><td class="num" id="LN672">672</td><td class="line"> g_object_unref (info);</td></tr>
+<tr class="codeline" data-linenumber="673"><td class="num" id="LN673">673</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="674"><td class="num" id="LN674">674</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="675"><td class="num" id="LN675">675</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="676"><td class="num" id="LN676">676</td><td class="line"> g_object_unref (info);</td></tr>
+<tr class="codeline" data-linenumber="677"><td class="num" id="LN677">677</td><td class="line"> g_object_unref (unowned);</td></tr>
+<tr class="codeline" data-linenumber="678"><td class="num" id="LN678">678</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="679"><td class="num" id="LN679">679</td><td class="line"> g_printf (<span class='string_literal'>"YES\n"</span>);</td></tr>
+<tr class="codeline" data-linenumber="680"><td class="num" id="LN680">680</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="681"><td class="num" id="LN681">681</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="682"><td class="num" id="LN682">682</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="683"><td class="num" id="LN683">683</td><td class="line"><span class='keyword'>int</span> main (<span class='keyword'>int</span> argc,</td></tr>
+<tr class="codeline" data-linenumber="684"><td class="num" id="LN684">684</td><td class="line"> <span class='keyword'>char</span> *argv[])</td></tr>
+<tr class="codeline" data-linenumber="685"><td class="num" id="LN685">685</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="686"><td class="num" id="LN686">686</td><td class="line"> gboolean have_unowned;</td></tr>
+<tr class="codeline" data-linenumber="687"><td class="num" id="LN687">687</td><td class="line"> gboolean have_unowned_group;</td></tr>
+<tr class="codeline" data-linenumber="688"><td class="num" id="LN688">688</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="689"><td class="num" id="LN689">689</td><td class="line"> g_test_init (&amp;argc, &amp;argv, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="690"><td class="num" id="LN690">690</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="691"><td class="num" id="LN691">691</td><td class="line"> g_printf (<span class='string_literal'>"\n***\n"</span>);</td></tr>
+<tr class="codeline" data-linenumber="692"><td class="num" id="LN692">692</td><td class="line"> have_unowned = check_unowned_directory ();</td></tr>
+<tr class="codeline" data-linenumber="693"><td class="num" id="LN693">693</td><td class="line"> have_unowned_group = check_unowned_group ();</td></tr>
+<tr class="codeline" data-linenumber="694"><td class="num" id="LN694">694</td><td class="line"> g_printf (<span class='string_literal'>"***\n\n"</span>);</td></tr>
+<tr class="codeline" data-linenumber="695"><td class="num" id="LN695">695</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="696"><td class="num" id="LN696">696</td><td class="line"> g_test_add_func (<span class='string_literal'>"/document-saver/local"</span>, test_local);</td></tr>
+<tr class="codeline" data-linenumber="697"><td class="num" id="LN697">697</td><td class="line"> g_test_add_func (<span class='string_literal'>"/document-saver/local-new-line"</span>, test_local_newline);</td></tr>
+<tr class="codeline" data-linenumber="698"><td class="num" id="LN698">698</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="699"><td class="num" id="LN699">699</td><td class="line"> <span class='keyword'>if</span> (have_unowned)</td></tr>
+<tr class="codeline" data-linenumber="700"><td class="num" id="LN700">700</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="701"><td class="num" id="LN701">701</td><td class="line"> g_test_add_func (<span class='string_literal'>"/document-saver/local-unowned-directory"</span>, test_local_unowned_directory);</td></tr>
+<tr class="codeline" data-linenumber="702"><td class="num" id="LN702">702</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="703"><td class="num" id="LN703">703</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="704"><td class="num" id="LN704">704</td><td class="line"> g_test_add_func (<span class='string_literal'>"/document-saver/remote"</span>, test_remote);</td></tr>
+<tr class="codeline" data-linenumber="705"><td class="num" id="LN705">705</td><td class="line"> g_test_add_func (<span class='string_literal'>"/document-saver/remote-new-line"</span>, test_remote_newline);</td></tr>
+<tr class="codeline" data-linenumber="706"><td class="num" id="LN706">706</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="707"><td class="num" id="LN707">707</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="708"><td class="num" id="LN708">708</td><td class="line"> <span class='keyword'>if</span> (have_unowned)</td></tr>
+<tr class="codeline" data-linenumber="709"><td class="num" id="LN709">709</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="710"><td class="num" id="LN710">710</td><td class="line"> g_test_add_func (<span class='string_literal'>"/document-saver/remote-unowned-directory"</span>, test_remote_unowned_directory);</td></tr>
+<tr class="codeline" data-linenumber="711"><td class="num" id="LN711">711</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="712"><td class="num" id="LN712">712</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="713"><td class="num" id="LN713">713</td><td class="line"> <span class='keyword'>if</span> (have_unowned_group)</td></tr>
+<tr class="codeline" data-linenumber="714"><td class="num" id="LN714">714</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="715"><td class="num" id="LN715">715</td><td class="line"> <span class='comment'>/* FIXME: there is a bug in gvfs sftp which doesn't pass this test */</span></td></tr>
+<tr class="codeline" data-linenumber="716"><td class="num" id="LN716">716</td><td class="line"> <span class='comment'>/* g_test_add_func ("/document-saver/remote-unowned-group", test_remote_unowned_group); */</span></td></tr>
+<tr class="codeline" data-linenumber="717"><td class="num" id="LN717">717</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="718"><td class="num" id="LN718">718</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="719"><td class="num" id="LN719">719</td><td class="line"> g_test_add_func (<span class='string_literal'>"/document-saver/local-permissions"</span>, test_local_permissions);</td></tr>
+<tr class="codeline" data-linenumber="720"><td class="num" id="LN720">720</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="721"><td class="num" id="LN721">721</td><td class="line"> <span class='keyword'>if</span> (have_unowned_group)</td></tr>
+<tr class="codeline" data-linenumber="722"><td class="num" id="LN722">722</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="723"><td class="num" id="LN723">723</td><td class="line"> g_test_add_func (<span class='string_literal'>"/document-saver/local-unowned-group"</span>, test_local_unowned_group);</td></tr>
+<tr class="codeline" data-linenumber="724"><td class="num" id="LN724">724</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="725"><td class="num" id="LN725">725</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="726"><td class="num" id="LN726">726</td><td class="line"> g_test_add_func (<span class='string_literal'>"/document-saver/remote-permissions"</span>, test_remote_permissions);</td></tr>
+<tr class="codeline" data-linenumber="727"><td class="num" id="LN727">727</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="728"><td class="num" id="LN728">728</td><td class="line"> <span class='keyword'>return</span> g_test_run ();</td></tr>
+<tr class="codeline" data-linenumber="729"><td class="num" id="LN729">729</td><td class="line">}</td></tr>
+</table></body></html>
diff --git a/2023-05-28-030536-6612-1@f643dde74cbd_master/report-731a91.html b/2023-05-28-030536-6612-1@f643dde74cbd_master/report-731a91.html
new file mode 100644
index 00000000..ff190918
--- /dev/null
+++ b/2023-05-28-030536-6612-1@f643dde74cbd_master/report-731a91.html
@@ -0,0 +1,4342 @@
+<!doctype html>
+<html>
+<head>
+<title>pluma-file-browser-store.c</title>
+
+<style type="text/css">
+body { color:#000000; background-color:#ffffff }
+body { font-family:Helvetica, sans-serif; font-size:10pt }
+h1 { font-size:14pt }
+.FileName { margin-top: 5px; margin-bottom: 5px; display: inline; }
+.FileNav { margin-left: 5px; margin-right: 5px; display: inline; }
+.FileNav a { text-decoration:none; font-size: larger; }
+.divider { margin-top: 30px; margin-bottom: 30px; height: 15px; }
+.divider { background-color: gray; }
+.code { border-collapse:collapse; width:100%; }
+.code { font-family: "Monospace", monospace; font-size:10pt }
+.code { line-height: 1.2em }
+.comment { color: green; font-style: oblique }
+.keyword { color: blue }
+.string_literal { color: red }
+.directive { color: darkmagenta }
+
+/* Macros and variables could have pop-up notes hidden by default.
+ - Macro pop-up: expansion of the macro
+ - Variable pop-up: value (table) of the variable */
+.macro_popup, .variable_popup { display: none; }
+
+/* Pop-up appears on mouse-hover event. */
+.macro:hover .macro_popup, .variable:hover .variable_popup {
+ display: block;
+ padding: 2px;
+ -webkit-border-radius:5px;
+ -webkit-box-shadow:1px 1px 7px #000;
+ border-radius:5px;
+ box-shadow:1px 1px 7px #000;
+ position: absolute;
+ top: -1em;
+ left:10em;
+ z-index: 1
+}
+
+.macro_popup {
+ border: 2px solid red;
+ background-color:#FFF0F0;
+ font-weight: normal;
+}
+
+.variable_popup {
+ border: 2px solid blue;
+ background-color:#F0F0FF;
+ font-weight: bold;
+ font-family: Helvetica, sans-serif;
+ font-size: 9pt;
+}
+
+/* Pop-up notes needs a relative position as a base where they pops up. */
+.macro, .variable {
+ background-color: PaleGoldenRod;
+ position: relative;
+}
+.macro { color: DarkMagenta; }
+
+#tooltiphint {
+ position: fixed;
+ width: 50em;
+ margin-left: -25em;
+ left: 50%;
+ padding: 10px;
+ border: 1px solid #b0b0b0;
+ border-radius: 2px;
+ box-shadow: 1px 1px 7px black;
+ background-color: #c0c0c0;
+ z-index: 2;
+}
+
+.num { width:2.5em; padding-right:2ex; background-color:#eeeeee }
+.num { text-align:right; font-size:8pt }
+.num { color:#444444 }
+.line { padding-left: 1ex; border-left: 3px solid #ccc }
+.line { white-space: pre }
+.msg { -webkit-box-shadow:1px 1px 7px #000 }
+.msg { box-shadow:1px 1px 7px #000 }
+.msg { -webkit-border-radius:5px }
+.msg { border-radius:5px }
+.msg { font-family:Helvetica, sans-serif; font-size:8pt }
+.msg { float:left }
+.msg { position:relative }
+.msg { padding:0.25em 1ex 0.25em 1ex }
+.msg { margin-top:10px; margin-bottom:10px }
+.msg { font-weight:bold }
+.msg { max-width:60em; word-wrap: break-word; white-space: pre-wrap }
+.msgT { padding:0x; spacing:0x }
+.msgEvent { background-color:#fff8b4; color:#000000 }
+.msgControl { background-color:#bbbbbb; color:#000000 }
+.msgNote { background-color:#ddeeff; color:#000000 }
+.mrange { background-color:#dfddf3 }
+.mrange { border-bottom:1px solid #6F9DBE }
+.PathIndex { font-weight: bold; padding:0px 5px; margin-right:5px; }
+.PathIndex { -webkit-border-radius:8px }
+.PathIndex { border-radius:8px }
+.PathIndexEvent { background-color:#bfba87 }
+.PathIndexControl { background-color:#8c8c8c }
+.PathIndexPopUp { background-color: #879abc; }
+.PathNav a { text-decoration:none; font-size: larger }
+.CodeInsertionHint { font-weight: bold; background-color: #10dd10 }
+.CodeRemovalHint { background-color:#de1010 }
+.CodeRemovalHint { border-bottom:1px solid #6F9DBE }
+.msg.selected{ background-color:orange !important; }
+
+table.simpletable {
+ padding: 5px;
+ font-size:12pt;
+ margin:20px;
+ border-collapse: collapse; border-spacing: 0px;
+}
+td.rowname {
+ text-align: right;
+ vertical-align: top;
+ font-weight: bold;
+ color:#444444;
+ padding-right:2ex;
+}
+
+/* Hidden text. */
+input.spoilerhider + label {
+ cursor: pointer;
+ text-decoration: underline;
+ display: block;
+}
+input.spoilerhider {
+ display: none;
+}
+input.spoilerhider ~ .spoiler {
+ overflow: hidden;
+ margin: 10px auto 0;
+ height: 0;
+ opacity: 0;
+}
+input.spoilerhider:checked + label + .spoiler{
+ height: auto;
+ opacity: 1;
+}
+</style>
+</head>
+<body>
+<!-- BUGDESC Out of bound memory access (access exceeds upper limit of memory block) -->
+
+<!-- BUGTYPE Out-of-bound access -->
+
+<!-- BUGCATEGORY Logic error -->
+
+<!-- BUGFILE /rootdir/plugins/filebrowser/pluma-file-browser-store.c -->
+
+<!-- FILENAME pluma-file-browser-store.c -->
+
+<!-- FUNCTIONNAME model_resort_node -->
+
+<!-- ISSUEHASHCONTENTOFLINEINCONTEXT 731a91cd499cee1dfd2b7c4e712a1c0f -->
+
+<!-- BUGLINE 1110 -->
+
+<!-- BUGCOLUMN 21 -->
+
+<!-- BUGPATHLENGTH 32 -->
+
+<!-- BUGMETAEND -->
+<!-- REPORTHEADER -->
+<h3>Bug Summary</h3>
+<table class="simpletable">
+<tr><td class="rowname">File:</td><td>plugins/filebrowser/pluma-file-browser-store.c</td></tr>
+<tr><td class="rowname">Warning:</td><td><a href="#EndPath">line 1110, column 21</a><br />Out of bound memory access (access exceeds upper limit of memory block)</td></tr>
+
+</table>
+<!-- REPORTSUMMARYEXTRA -->
+<h3>Annotated Source Code</h3>
+<p>Press <a href="#" onclick="toggleHelp(); return false;">'?'</a>
+ to see keyboard shortcuts</p>
+<input type="checkbox" class="spoilerhider" id="showinvocation" />
+<label for="showinvocation" >Show analyzer invocation</label>
+<div class="spoiler">clang -cc1 -cc1 -triple x86_64-redhat-linux-gnu -analyze -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name pluma-file-browser-store.c -analyzer-checker=core -analyzer-checker=apiModeling -analyzer-checker=unix -analyzer-checker=deadcode -analyzer-checker=security.insecureAPI.UncheckedReturn -analyzer-checker=security.insecureAPI.getpw -analyzer-checker=security.insecureAPI.gets -analyzer-checker=security.insecureAPI.mktemp -analyzer-checker=security.insecureAPI.mkstemp -analyzer-checker=security.insecureAPI.vfork -analyzer-checker=nullability.NullPassedToNonnull -analyzer-checker=nullability.NullReturnedFromNonnull -analyzer-output plist -w -setup-static-analyzer -mrelocation-model pic -pic-level 2 -fhalf-no-semantic-interposition -mframe-pointer=none -fmath-errno -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=2 -target-cpu x86-64 -tune-cpu generic -debugger-tuning=gdb -fcoverage-compilation-dir=/rootdir/plugins/filebrowser -resource-dir /usr/lib64/clang/16 -D HAVE_CONFIG_H -I . -I ../.. -I ../.. -I /usr/include/libxml2 -I /usr/include/glib-2.0 -I /usr/lib64/glib-2.0/include -I /usr/include/sysprof-4 -I /usr/include/libmount -I /usr/include/blkid -I /usr/include/gtk-3.0 -I /usr/include/pango-1.0 -I /usr/include/harfbuzz -I /usr/include/freetype2 -I /usr/include/libpng16 -I /usr/include/fribidi -I /usr/include/cairo -I /usr/include/pixman-1 -I /usr/include/gdk-pixbuf-2.0 -I /usr/include/gio-unix-2.0 -I /usr/include/cloudproviders -I /usr/include/atk-1.0 -I /usr/include/at-spi2-atk/2.0 -I /usr/include/at-spi-2.0 -I /usr/include/dbus-1.0 -I /usr/lib64/dbus-1.0/include -I /usr/include/gtksourceview-4 -I /usr/include/libpeas-1.0 -I /usr/include/gobject-introspection-1.0 -D PIC -internal-isystem /usr/lib64/clang/16/include -internal-isystem /usr/local/include -internal-isystem /usr/bin/../lib/gcc/x86_64-redhat-linux/13/../../../../x86_64-redhat-linux/include -internal-externc-isystem /include -internal-externc-isystem /usr/include -O2 -Wno-unused-parameter -fdebug-compilation-dir=/rootdir/plugins/filebrowser -ferror-limit 19 -fgnuc-version=4.2.1 -vectorize-loops -vectorize-slp -analyzer-checker deadcode.DeadStores -analyzer-checker alpha.deadcode.UnreachableCode -analyzer-checker alpha.core.CastSize -analyzer-checker alpha.core.CastToStruct -analyzer-checker alpha.core.IdenticalExpr -analyzer-checker alpha.core.SizeofPtr -analyzer-checker alpha.security.ArrayBoundV2 -analyzer-checker alpha.security.MallocOverflow -analyzer-checker alpha.security.ReturnPtrRange -analyzer-checker alpha.unix.SimpleStream -analyzer-checker alpha.unix.cstring.BufferOverlap -analyzer-checker alpha.unix.cstring.NotNullTerminated -analyzer-checker alpha.unix.cstring.OutOfBounds -analyzer-checker alpha.core.FixedAddr -analyzer-checker security.insecureAPI.strcpy -analyzer-output=html -faddrsig -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o /rootdir/html-report/2023-05-28-030536-6612-1 -x c pluma-file-browser-store.c
+</div>
+<div id='tooltiphint' hidden="true">
+ <p>Keyboard shortcuts: </p>
+ <ul>
+ <li>Use 'j/k' keys for keyboard navigation</li>
+ <li>Use 'Shift+S' to show/hide relevant lines</li>
+ <li>Use '?' to toggle this window</li>
+ </ul>
+ <a href="#" onclick="toggleHelp(); return false;">Close</a>
+</div>
+<script type='text/javascript'>
+var relevant_lines = {"1": {"195": 1, "486": 1, "487": 1, "488": 1, "489": 1, "490": 1, "493": 1, "494": 1, "496": 1, "497": 1, "1072": 1, "1073": 1, "1074": 1, "1075": 1, "1076": 1, "1077": 1, "1078": 1, "1079": 1, "1080": 1, "1081": 1, "1083": 1, "1085": 1, "1092": 1, "1099": 1, "1100": 1, "1102": 1, "1103": 1, "1106": 1, "1107": 1, "1109": 1, "1110": 1, "1126": 1, "1127": 1, "1128": 1, "1129": 1, "1130": 1, "1131": 1, "1135": 1, "1136": 1, "1138": 1, "1139": 1, "1262": 1, "1263": 1, "1264": 1, "1265": 1, "1267": 1, "1270": 1, "3126": 1, "3127": 1, "3128": 1, "3129": 1, "3130": 1, "3131": 1, "3132": 1, "3134": 1, "3138": 1, "3147": 1, "3156": 1, "3157": 1, "3158": 1, "3159": 1, "3160": 1, "3161": 1, "3162": 1, "3163": 1, "3164": 1, "3165": 1, "3166": 1, "3167": 1, "3168": 1, "3169": 1, "3171": 1, "3172": 1, "3173": 1, "3175": 1, "3177": 1, "3178": 1, "3180": 1, "3181": 1, "3183": 1, "3188": 1, "3189": 1, "3190": 1, "3193": 1, "3194": 1, "3196": 1, "3198": 1, "3199": 1, "3200": 1, "3201": 1, "3204": 1}};
+
+var filterCounterexample = function (hide) {
+ var tables = document.getElementsByClassName("code");
+ for (var t=0; t<tables.length; t++) {
+ var table = tables[t];
+ var file_id = table.getAttribute("data-fileid");
+ var lines_in_fid = relevant_lines[file_id];
+ if (!lines_in_fid) {
+ lines_in_fid = {};
+ }
+ var lines = table.getElementsByClassName("codeline");
+ for (var i=0; i<lines.length; i++) {
+ var el = lines[i];
+ var lineNo = el.getAttribute("data-linenumber");
+ if (!lines_in_fid[lineNo]) {
+ if (hide) {
+ el.setAttribute("hidden", "");
+ } else {
+ el.removeAttribute("hidden");
+ }
+ }
+ }
+ }
+}
+
+window.addEventListener("keydown", function (event) {
+ if (event.defaultPrevented) {
+ return;
+ }
+ // SHIFT + S
+ if (event.shiftKey && event.keyCode == 83) {
+ var checked = document.getElementsByName("showCounterexample")[0].checked;
+ filterCounterexample(!checked);
+ document.getElementsByName("showCounterexample")[0].click();
+ } else {
+ return;
+ }
+ event.preventDefault();
+}, true);
+
+document.addEventListener("DOMContentLoaded", function() {
+ document.querySelector('input[name="showCounterexample"]').onchange=
+ function (event) {
+ filterCounterexample(this.checked);
+ };
+});
+</script>
+
+<form>
+ <input type="checkbox" name="showCounterexample" id="showCounterexample" />
+ <label for="showCounterexample">
+ Show only relevant lines
+ </label>
+ <input type="checkbox" name="showArrows"
+ id="showArrows" style="margin-left: 10px" />
+ <label for="showArrows">
+ Show control flow arrows
+ </label>
+</form>
+
+<script type='text/javascript'>
+// Return range of numbers from a range [lower, upper).
+function range(lower, upper) {
+ var array = [];
+ for (var i = lower; i <= upper; ++i) {
+ array.push(i);
+ }
+ return array;
+}
+
+var getRelatedArrowIndices = function(pathId) {
+ // HTML numeration of events is a bit different than it is in the path.
+ // Everything is rotated one step to the right, so the last element
+ // (error diagnostic) has index 0.
+ if (pathId == 0) {
+ // arrowIndices has at least 2 elements
+ pathId = arrowIndices.length - 1;
+ }
+
+ return range(arrowIndices[pathId], arrowIndices[pathId - 1]);
+}
+
+var highlightArrowsForSelectedEvent = function() {
+ const selectedNum = findNum();
+ const arrowIndicesToHighlight = getRelatedArrowIndices(selectedNum);
+ arrowIndicesToHighlight.forEach((index) => {
+ var arrow = document.querySelector("#arrow" + index);
+ if(arrow) {
+ classListAdd(arrow, "selected")
+ }
+ });
+}
+
+var getAbsoluteBoundingRect = function(element) {
+ const relative = element.getBoundingClientRect();
+ return {
+ left: relative.left + window.pageXOffset,
+ right: relative.right + window.pageXOffset,
+ top: relative.top + window.pageYOffset,
+ bottom: relative.bottom + window.pageYOffset,
+ height: relative.height,
+ width: relative.width
+ };
+}
+
+var drawArrow = function(index) {
+ // This function is based on the great answer from SO:
+ // https://stackoverflow.com/a/39575674/11582326
+ var start = document.querySelector("#start" + index);
+ var end = document.querySelector("#end" + index);
+ var arrow = document.querySelector("#arrow" + index);
+
+ var startRect = getAbsoluteBoundingRect(start);
+ var endRect = getAbsoluteBoundingRect(end);
+
+ // It is an arrow from a token to itself, no need to visualize it.
+ if (startRect.top == endRect.top &&
+ startRect.left == endRect.left)
+ return;
+
+ // Each arrow is a very simple Bézier curve, with two nodes and
+ // two handles. So, we need to calculate four points in the window:
+ // * start node
+ var posStart = { x: 0, y: 0 };
+ // * end node
+ var posEnd = { x: 0, y: 0 };
+ // * handle for the start node
+ var startHandle = { x: 0, y: 0 };
+ // * handle for the end node
+ var endHandle = { x: 0, y: 0 };
+ // One can visualize it as follows:
+ //
+ // start handle
+ // /
+ // X"""_.-""""X
+ // .' \
+ // / start node
+ // |
+ // |
+ // | end node
+ // \ /
+ // `->X
+ // X-'
+ // \
+ // end handle
+ //
+ // NOTE: (0, 0) is the top left corner of the window.
+
+ // We have 3 similar, but still different scenarios to cover:
+ //
+ // 1. Two tokens on different lines.
+ // -xxx
+ // /
+ // \
+ // -> xxx
+ // In this situation, we draw arrow on the left curving to the left.
+ // 2. Two tokens on the same line, and the destination is on the right.
+ // ____
+ // / \
+ // / V
+ // xxx xxx
+ // In this situation, we draw arrow above curving upwards.
+ // 3. Two tokens on the same line, and the destination is on the left.
+ // xxx xxx
+ // ^ /
+ // \____/
+ // In this situation, we draw arrow below curving downwards.
+ const onDifferentLines = startRect.top <= endRect.top - 5 ||
+ startRect.top >= endRect.top + 5;
+ const leftToRight = startRect.left < endRect.left;
+
+ // NOTE: various magic constants are chosen empirically for
+ // better positioning and look
+ if (onDifferentLines) {
+ // Case #1
+ const topToBottom = startRect.top < endRect.top;
+ posStart.x = startRect.left - 1;
+ // We don't want to start it at the top left corner of the token,
+ // it doesn't feel like this is where the arrow comes from.
+ // For this reason, we start it in the middle of the left side
+ // of the token.
+ posStart.y = startRect.top + startRect.height / 2;
+
+ // End node has arrow head and we give it a bit more space.
+ posEnd.x = endRect.left - 4;
+ posEnd.y = endRect.top;
+
+ // Utility object with x and y offsets for handles.
+ var curvature = {
+ // We want bottom-to-top arrow to curve a bit more, so it doesn't
+ // overlap much with top-to-bottom curves (much more frequent).
+ x: topToBottom ? 15 : 25,
+ y: Math.min((posEnd.y - posStart.y) / 3, 10)
+ }
+
+ // When destination is on the different line, we can make a
+ // curvier arrow because we have space for it.
+ // So, instead of using
+ //
+ // startHandle.x = posStart.x - curvature.x
+ // endHandle.x = posEnd.x - curvature.x
+ //
+ // We use the leftmost of these two values for both handles.
+ startHandle.x = Math.min(posStart.x, posEnd.x) - curvature.x;
+ endHandle.x = startHandle.x;
+
+ // Curving downwards from the start node...
+ startHandle.y = posStart.y + curvature.y;
+ // ... and upwards from the end node.
+ endHandle.y = posEnd.y - curvature.y;
+
+ } else if (leftToRight) {
+ // Case #2
+ // Starting from the top right corner...
+ posStart.x = startRect.right - 1;
+ posStart.y = startRect.top;
+
+ // ...and ending at the top left corner of the end token.
+ posEnd.x = endRect.left + 1;
+ posEnd.y = endRect.top - 1;
+
+ // Utility object with x and y offsets for handles.
+ var curvature = {
+ x: Math.min((posEnd.x - posStart.x) / 3, 15),
+ y: 5
+ }
+
+ // Curving to the right...
+ startHandle.x = posStart.x + curvature.x;
+ // ... and upwards from the start node.
+ startHandle.y = posStart.y - curvature.y;
+
+ // And to the left...
+ endHandle.x = posEnd.x - curvature.x;
+ // ... and upwards from the end node.
+ endHandle.y = posEnd.y - curvature.y;
+
+ } else {
+ // Case #3
+ // Starting from the bottom right corner...
+ posStart.x = startRect.right;
+ posStart.y = startRect.bottom;
+
+ // ...and ending also at the bottom right corner, but of the end token.
+ posEnd.x = endRect.right - 1;
+ posEnd.y = endRect.bottom + 1;
+
+ // Utility object with x and y offsets for handles.
+ var curvature = {
+ x: Math.min((posStart.x - posEnd.x) / 3, 15),
+ y: 5
+ }
+
+ // Curving to the left...
+ startHandle.x = posStart.x - curvature.x;
+ // ... and downwards from the start node.
+ startHandle.y = posStart.y + curvature.y;
+
+ // And to the right...
+ endHandle.x = posEnd.x + curvature.x;
+ // ... and downwards from the end node.
+ endHandle.y = posEnd.y + curvature.y;
+ }
+
+ // Put it all together into a path.
+ // More information on the format:
+ // https://developer.mozilla.org/en-US/docs/Web/SVG/Tutorial/Paths
+ var pathStr = "M" + posStart.x + "," + posStart.y + " " +
+ "C" + startHandle.x + "," + startHandle.y + " " +
+ endHandle.x + "," + endHandle.y + " " +
+ posEnd.x + "," + posEnd.y;
+
+ arrow.setAttribute("d", pathStr);
+};
+
+var drawArrows = function() {
+ const numOfArrows = document.querySelectorAll("path[id^=arrow]").length;
+ for (var i = 0; i < numOfArrows; ++i) {
+ drawArrow(i);
+ }
+}
+
+var toggleArrows = function(event) {
+ const arrows = document.querySelector("#arrows");
+ if (event.target.checked) {
+ arrows.setAttribute("visibility", "visible");
+ } else {
+ arrows.setAttribute("visibility", "hidden");
+ }
+}
+
+window.addEventListener("resize", drawArrows);
+document.addEventListener("DOMContentLoaded", function() {
+ // Whenever we show invocation, locations change, i.e. we
+ // need to redraw arrows.
+ document
+ .querySelector('input[id="showinvocation"]')
+ .addEventListener("click", drawArrows);
+ // Hiding irrelevant lines also should cause arrow rerender.
+ document
+ .querySelector('input[name="showCounterexample"]')
+ .addEventListener("change", drawArrows);
+ document
+ .querySelector('input[name="showArrows"]')
+ .addEventListener("change", toggleArrows);
+ drawArrows();
+ // Default highlighting for the last event.
+ highlightArrowsForSelectedEvent();
+});
+</script>
+
+<script type='text/javascript'>
+var digitMatcher = new RegExp("[0-9]+");
+
+var querySelectorAllArray = function(selector) {
+ return Array.prototype.slice.call(
+ document.querySelectorAll(selector));
+}
+
+document.addEventListener("DOMContentLoaded", function() {
+ querySelectorAllArray(".PathNav > a").forEach(
+ function(currentValue, currentIndex) {
+ var hrefValue = currentValue.getAttribute("href");
+ currentValue.onclick = function() {
+ scrollTo(document.querySelector(hrefValue));
+ return false;
+ };
+ });
+});
+
+var findNum = function() {
+ var s = document.querySelector(".msg.selected");
+ if (!s || s.id == "EndPath") {
+ return 0;
+ }
+ var out = parseInt(digitMatcher.exec(s.id)[0]);
+ return out;
+};
+
+var classListAdd = function(el, theClass) {
+ if(!el.className.baseVal)
+ el.className += " " + theClass;
+ else
+ el.className.baseVal += " " + theClass;
+};
+
+var classListRemove = function(el, theClass) {
+ var className = (!el.className.baseVal) ?
+ el.className : el.className.baseVal;
+ className = className.replace(" " + theClass, "");
+ if(!el.className.baseVal)
+ el.className = className;
+ else
+ el.className.baseVal = className;
+};
+
+var scrollTo = function(el) {
+ querySelectorAllArray(".selected").forEach(function(s) {
+ classListRemove(s, "selected");
+ });
+ classListAdd(el, "selected");
+ window.scrollBy(0, el.getBoundingClientRect().top -
+ (window.innerHeight / 2));
+ highlightArrowsForSelectedEvent();
+};
+
+var move = function(num, up, numItems) {
+ if (num == 1 && up || num == numItems - 1 && !up) {
+ return 0;
+ } else if (num == 0 && up) {
+ return numItems - 1;
+ } else if (num == 0 && !up) {
+ return 1 % numItems;
+ }
+ return up ? num - 1 : num + 1;
+}
+
+var numToId = function(num) {
+ if (num == 0) {
+ return document.getElementById("EndPath")
+ }
+ return document.getElementById("Path" + num);
+};
+
+var navigateTo = function(up) {
+ var numItems = document.querySelectorAll(
+ ".line > .msgEvent, .line > .msgControl").length;
+ var currentSelected = findNum();
+ var newSelected = move(currentSelected, up, numItems);
+ var newEl = numToId(newSelected, numItems);
+
+ // Scroll element into center.
+ scrollTo(newEl);
+};
+
+window.addEventListener("keydown", function (event) {
+ if (event.defaultPrevented) {
+ return;
+ }
+ // key 'j'
+ if (event.keyCode == 74) {
+ navigateTo(/*up=*/false);
+ // key 'k'
+ } else if (event.keyCode == 75) {
+ navigateTo(/*up=*/true);
+ } else {
+ return;
+ }
+ event.preventDefault();
+}, true);
+</script>
+
+<script type='text/javascript'>
+
+var toggleHelp = function() {
+ var hint = document.querySelector("#tooltiphint");
+ var attributeName = "hidden";
+ if (hint.hasAttribute(attributeName)) {
+ hint.removeAttribute(attributeName);
+ } else {
+ hint.setAttribute("hidden", "true");
+ }
+};
+window.addEventListener("keydown", function (event) {
+ if (event.defaultPrevented) {
+ return;
+ }
+ if (event.key == "?") {
+ toggleHelp();
+ } else {
+ return;
+ }
+ event.preventDefault();
+});
+</script>
+
+<style type="text/css">
+ svg {
+ position:absolute;
+ top:0;
+ left:0;
+ height:100%;
+ width:100%;
+ pointer-events: none;
+ overflow: visible
+ }
+ .arrow {
+ stroke-opacity: 0.2;
+ stroke-width: 1;
+ marker-end: url(#arrowhead);
+ }
+
+ .arrow.selected {
+ stroke-opacity: 0.6;
+ stroke-width: 2;
+ marker-end: url(#arrowheadSelected);
+ }
+
+ .arrowhead {
+ orient: auto;
+ stroke: none;
+ opacity: 0.6;
+ fill: blue;
+ }
+</style>
+<svg xmlns="http://www.w3.org/2000/svg">
+ <defs>
+ <marker id="arrowheadSelected" class="arrowhead" opacity="0.6"
+ viewBox="0 0 10 10" refX="3" refY="5"
+ markerWidth="4" markerHeight="4">
+ <path d="M 0 0 L 10 5 L 0 10 z" />
+ </marker>
+ <marker id="arrowhead" class="arrowhead" opacity="0.2"
+ viewBox="0 0 10 10" refX="3" refY="5"
+ markerWidth="4" markerHeight="4">
+ <path d="M 0 0 L 10 5 L 0 10 z" />
+ </marker>
+ </defs>
+ <g id="arrows" fill="none" stroke="blue" visibility="hidden">
+ <path class="arrow" id="arrow0"/>
+ <path class="arrow" id="arrow1"/>
+ <path class="arrow" id="arrow2"/>
+ <path class="arrow" id="arrow3"/>
+ <path class="arrow" id="arrow4"/>
+ <path class="arrow" id="arrow5"/>
+ <path class="arrow" id="arrow6"/>
+ <path class="arrow" id="arrow7"/>
+ <path class="arrow" id="arrow8"/>
+ <path class="arrow" id="arrow9"/>
+ <path class="arrow" id="arrow10"/>
+ <path class="arrow" id="arrow11"/>
+ <path class="arrow" id="arrow12"/>
+ <path class="arrow" id="arrow13"/>
+ <path class="arrow" id="arrow14"/>
+ <path class="arrow" id="arrow15"/>
+ <path class="arrow" id="arrow16"/>
+ <path class="arrow" id="arrow17"/>
+ <path class="arrow" id="arrow18"/>
+ <path class="arrow" id="arrow19"/>
+ <path class="arrow" id="arrow20"/>
+ <path class="arrow" id="arrow21"/>
+ <path class="arrow" id="arrow22"/>
+ <path class="arrow" id="arrow23"/>
+ <path class="arrow" id="arrow24"/>
+ <path class="arrow" id="arrow25"/>
+ <path class="arrow" id="arrow26"/>
+ <path class="arrow" id="arrow27"/>
+ <path class="arrow" id="arrow28"/>
+ <path class="arrow" id="arrow29"/>
+ <path class="arrow" id="arrow30"/>
+ <path class="arrow" id="arrow31"/>
+ <path class="arrow" id="arrow32"/>
+ <path class="arrow" id="arrow33"/>
+ <path class="arrow" id="arrow34"/>
+ <path class="arrow" id="arrow35"/>
+ <path class="arrow" id="arrow36"/>
+ <path class="arrow" id="arrow37"/>
+ <path class="arrow" id="arrow38"/>
+ <path class="arrow" id="arrow39"/>
+ <path class="arrow" id="arrow40"/>
+ <path class="arrow" id="arrow41"/>
+ <path class="arrow" id="arrow42"/>
+ <path class="arrow" id="arrow43"/>
+ <path class="arrow" id="arrow44"/>
+ <path class="arrow" id="arrow45"/>
+ <path class="arrow" id="arrow46"/>
+ <path class="arrow" id="arrow47"/>
+ <path class="arrow" id="arrow48"/>
+ <path class="arrow" id="arrow49"/>
+ <path class="arrow" id="arrow50"/>
+ <path class="arrow" id="arrow51"/>
+ <path class="arrow" id="arrow52"/>
+ <path class="arrow" id="arrow53"/>
+ <path class="arrow" id="arrow54"/>
+ <path class="arrow" id="arrow55"/>
+ <path class="arrow" id="arrow56"/>
+ <path class="arrow" id="arrow57"/>
+ <path class="arrow" id="arrow58"/>
+ <path class="arrow" id="arrow59"/>
+ <path class="arrow" id="arrow60"/>
+ <path class="arrow" id="arrow61"/>
+ <path class="arrow" id="arrow62"/>
+ <path class="arrow" id="arrow63"/>
+ <path class="arrow" id="arrow64"/>
+ <path class="arrow" id="arrow65"/>
+ <path class="arrow" id="arrow66"/>
+ <path class="arrow" id="arrow67"/>
+ <path class="arrow" id="arrow68"/>
+ <path class="arrow" id="arrow69"/>
+ <path class="arrow" id="arrow70"/>
+ <path class="arrow" id="arrow71"/>
+ <path class="arrow" id="arrow72"/>
+ <path class="arrow" id="arrow73"/>
+ <path class="arrow" id="arrow74"/>
+ <path class="arrow" id="arrow75"/>
+ <path class="arrow" id="arrow76"/>
+ <path class="arrow" id="arrow77"/>
+ <path class="arrow" id="arrow78"/>
+
+ </g>
+</svg>
+<script type='text/javascript'>
+const arrowIndices = [ 79,74,72,71,69,67,64,64,62,60,57,57,55,53,49,49,44,42,38,38,35,33,32,30,26,24,20,17,11,6,2,0 ]
+</script>
+<table class="code" data-fileid="1">
+<tr class="codeline" data-linenumber="1"><td class="num" id="LN1">1</td><td class="line"><span class='comment'>/*</span></td></tr>
+<tr class="codeline" data-linenumber="2"><td class="num" id="LN2">2</td><td class="line"> <span class='comment'>* pluma-file-browser-store.c - Pluma plugin providing easy file access</span></td></tr>
+<tr class="codeline" data-linenumber="3"><td class="num" id="LN3">3</td><td class="line"> <span class='comment'>* from the sidepanel</span></td></tr>
+<tr class="codeline" data-linenumber="4"><td class="num" id="LN4">4</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="5"><td class="num" id="LN5">5</td><td class="line"> <span class='comment'>* Copyright (C) 2006 - Jesse van den Kieboom &lt;[email protected]&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="6"><td class="num" id="LN6">6</td><td class="line"> <span class='comment'>* Copyright (C) 2012-2021 MATE Developers</span></td></tr>
+<tr class="codeline" data-linenumber="7"><td class="num" id="LN7">7</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="8"><td class="num" id="LN8">8</td><td class="line"> <span class='comment'>* This program is free software; you can redistribute it and/or modify</span></td></tr>
+<tr class="codeline" data-linenumber="9"><td class="num" id="LN9">9</td><td class="line"> <span class='comment'>* it under the terms of the GNU General Public License as published by</span></td></tr>
+<tr class="codeline" data-linenumber="10"><td class="num" id="LN10">10</td><td class="line"> <span class='comment'>* the Free Software Foundation; either version 2, or (at your option)</span></td></tr>
+<tr class="codeline" data-linenumber="11"><td class="num" id="LN11">11</td><td class="line"> <span class='comment'>* any later version.</span></td></tr>
+<tr class="codeline" data-linenumber="12"><td class="num" id="LN12">12</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="13"><td class="num" id="LN13">13</td><td class="line"> <span class='comment'>* This program is distributed in the hope that it will be useful,</span></td></tr>
+<tr class="codeline" data-linenumber="14"><td class="num" id="LN14">14</td><td class="line"> <span class='comment'>* but WITHOUT ANY WARRANTY; without even the implied warranty of</span></td></tr>
+<tr class="codeline" data-linenumber="15"><td class="num" id="LN15">15</td><td class="line"> <span class='comment'>* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></td></tr>
+<tr class="codeline" data-linenumber="16"><td class="num" id="LN16">16</td><td class="line"> <span class='comment'>* GNU General Public License for more details.</span></td></tr>
+<tr class="codeline" data-linenumber="17"><td class="num" id="LN17">17</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="18"><td class="num" id="LN18">18</td><td class="line"> <span class='comment'>* You should have received a copy of the GNU General Public License</span></td></tr>
+<tr class="codeline" data-linenumber="19"><td class="num" id="LN19">19</td><td class="line"> <span class='comment'>* along with this program; if not, write to the Free Software</span></td></tr>
+<tr class="codeline" data-linenumber="20"><td class="num" id="LN20">20</td><td class="line"> <span class='comment'>* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.</span></td></tr>
+<tr class="codeline" data-linenumber="21"><td class="num" id="LN21">21</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="22"><td class="num" id="LN22">22</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="23"><td class="num" id="LN23">23</td><td class="line"><span class='directive'>#ifdef <span class='macro'>HAVE_CONFIG_H<span class='macro_popup'>1</span></span></span></td></tr>
+<tr class="codeline" data-linenumber="24"><td class="num" id="LN24">24</td><td class="line"><span class='directive'>#include &lt;config.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="25"><td class="num" id="LN25">25</td><td class="line"><span class='directive'>#endif</span></td></tr>
+<tr class="codeline" data-linenumber="26"><td class="num" id="LN26">26</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="27"><td class="num" id="LN27">27</td><td class="line"><span class='directive'>#include &lt;string.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="28"><td class="num" id="LN28">28</td><td class="line"><span class='directive'>#include &lt;glib/gi18n-lib.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="29"><td class="num" id="LN29">29</td><td class="line"><span class='directive'>#include &lt;gio/gio.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="30"><td class="num" id="LN30">30</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="31"><td class="num" id="LN31">31</td><td class="line"><span class='directive'>#include "pluma-file-browser-store.h"</span></td></tr>
+<tr class="codeline" data-linenumber="32"><td class="num" id="LN32">32</td><td class="line"><span class='directive'>#include "pluma-file-browser-enum-types.h"</span></td></tr>
+<tr class="codeline" data-linenumber="33"><td class="num" id="LN33">33</td><td class="line"><span class='directive'>#include "pluma-file-browser-error.h"</span></td></tr>
+<tr class="codeline" data-linenumber="34"><td class="num" id="LN34">34</td><td class="line"><span class='directive'>#include "pluma-file-browser-utils.h"</span></td></tr>
+<tr class="codeline" data-linenumber="35"><td class="num" id="LN35">35</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="36"><td class="num" id="LN36">36</td><td class="line"><span class='directive'>#define <span class='macro'>NODE_IS_DIR(node)<span class='macro_popup'>(((node)-&gt;flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_DIRECTORY<br>))</span></span> (<span class='macro'>FILE_IS_DIR((node)-&gt;flags)<span class='macro_popup'>((node)-&gt;flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_DIRECTORY<br>)</span></span>)</span></td></tr>
+<tr class="codeline" data-linenumber="37"><td class="num" id="LN37">37</td><td class="line"><span class='directive'>#define <span class='macro'>NODE_IS_HIDDEN(node)<span class='macro_popup'>(((node)-&gt;flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_HIDDEN<br>))</span></span> (<span class='macro'>FILE_IS_HIDDEN((node)-&gt;flags)<span class='macro_popup'>((node)-&gt;flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_HIDDEN<br>)</span></span>)</span></td></tr>
+<tr class="codeline" data-linenumber="38"><td class="num" id="LN38">38</td><td class="line"><span class='directive'>#define <span class='macro'>NODE_IS_TEXT(node)<span class='macro_popup'>(((node)-&gt;flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_TEXT<br>))</span></span> (<span class='macro'>FILE_IS_TEXT((node)-&gt;flags)<span class='macro_popup'>((node)-&gt;flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_TEXT<br>)</span></span>)</span></td></tr>
+<tr class="codeline" data-linenumber="39"><td class="num" id="LN39">39</td><td class="line"><span class='directive'>#define <span class='macro'>NODE_LOADED(node)<span class='macro_popup'>(((node)-&gt;flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_LOADED<br>))</span></span> (<span class='macro'>FILE_LOADED((node)-&gt;flags)<span class='macro_popup'>((node)-&gt;flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_LOADED)</span></span>)</span></td></tr>
+<tr class="codeline" data-linenumber="40"><td class="num" id="LN40">40</td><td class="line"><span class='directive'>#define <span class='macro'>NODE_IS_FILTERED(node)<span class='macro_popup'>(((node)-&gt;flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_FILTERED<br>))</span></span> (<span class='macro'>FILE_IS_FILTERED((node)-&gt;flags)<span class='macro_popup'>((node)-&gt;flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_FILTERED<br>)</span></span>)</span></td></tr>
+<tr class="codeline" data-linenumber="41"><td class="num" id="LN41">41</td><td class="line"><span class='directive'>#define <span class='macro'>NODE_IS_DUMMY(node)<span class='macro_popup'>(((node)-&gt;flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_DUMMY<br>))</span></span> (<span class='macro'>FILE_IS_DUMMY((node)-&gt;flags)<span class='macro_popup'>((node)-&gt;flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_DUMMY<br>)</span></span>)</span></td></tr>
+<tr class="codeline" data-linenumber="42"><td class="num" id="LN42">42</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="43"><td class="num" id="LN43">43</td><td class="line"><span class='directive'>#define <span class='macro'>FILE_BROWSER_NODE_DIR(node)<span class='macro_popup'>((FileBrowserNodeDir *)(node))</span></span> ((FileBrowserNodeDir *)(node))</span></td></tr>
+<tr class="codeline" data-linenumber="44"><td class="num" id="LN44">44</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="45"><td class="num" id="LN45">45</td><td class="line"><span class='directive'>#define <span class='macro'>DIRECTORY_LOAD_ITEMS_PER_CALLBACK<span class='macro_popup'>100</span></span> 100</span></td></tr>
+<tr class="codeline" data-linenumber="46"><td class="num" id="LN46">46</td><td class="line"><span class='directive'>#define <span class='macro'>STANDARD_ATTRIBUTE_TYPES<span class='macro_popup'>"standard::type" "," "standard::is-hidden" "," "standard::is-backup"<br> "," "standard::name" "," "standard::content-type" "," "standard::icon"</span></span> <span class='macro'>G_FILE_ATTRIBUTE_STANDARD_TYPE<span class='macro_popup'>"standard::type"</span></span> "," \</span></td></tr>
+<tr class="codeline" data-linenumber="47"><td class="num" id="LN47">47</td><td class="line"> <span class='directive'><span class='macro'>G_FILE_ATTRIBUTE_STANDARD_IS_HIDDEN<span class='macro_popup'>"standard::is-hidden"</span></span> "," \</span></td></tr>
+<tr class="codeline" data-linenumber="48"><td class="num" id="LN48">48</td><td class="line"> <span class='directive'><span class='macro'>G_FILE_ATTRIBUTE_STANDARD_IS_BACKUP<span class='macro_popup'>"standard::is-backup"</span></span> "," \</span></td></tr>
+<tr class="codeline" data-linenumber="49"><td class="num" id="LN49">49</td><td class="line"> <span class='directive'><span class='macro'>G_FILE_ATTRIBUTE_STANDARD_NAME<span class='macro_popup'>"standard::name"</span></span> "," \</span></td></tr>
+<tr class="codeline" data-linenumber="50"><td class="num" id="LN50">50</td><td class="line"> <span class='directive'><span class='macro'>G_FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE<span class='macro_popup'>"standard::content-type"</span></span> "," \</span></td></tr>
+<tr class="codeline" data-linenumber="51"><td class="num" id="LN51">51</td><td class="line"> <span class='directive'><span class='macro'>G_FILE_ATTRIBUTE_STANDARD_ICON<span class='macro_popup'>"standard::icon"</span></span></span></td></tr>
+<tr class="codeline" data-linenumber="52"><td class="num" id="LN52">52</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="53"><td class="num" id="LN53">53</td><td class="line"><span class='keyword'>typedef</span> <span class='keyword'>struct</span> _FileBrowserNode FileBrowserNode;</td></tr>
+<tr class="codeline" data-linenumber="54"><td class="num" id="LN54">54</td><td class="line"><span class='keyword'>typedef</span> <span class='keyword'>struct</span> _FileBrowserNodeDir FileBrowserNodeDir;</td></tr>
+<tr class="codeline" data-linenumber="55"><td class="num" id="LN55">55</td><td class="line"><span class='keyword'>typedef</span> <span class='keyword'>struct</span> _AsyncData AsyncData;</td></tr>
+<tr class="codeline" data-linenumber="56"><td class="num" id="LN56">56</td><td class="line"><span class='keyword'>typedef</span> <span class='keyword'>struct</span> _AsyncNode AsyncNode;</td></tr>
+<tr class="codeline" data-linenumber="57"><td class="num" id="LN57">57</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="58"><td class="num" id="LN58">58</td><td class="line"><span class='keyword'>typedef</span> gint (*SortFunc) (FileBrowserNode * node1,</td></tr>
+<tr class="codeline" data-linenumber="59"><td class="num" id="LN59">59</td><td class="line"> FileBrowserNode * node2);</td></tr>
+<tr class="codeline" data-linenumber="60"><td class="num" id="LN60">60</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="61"><td class="num" id="LN61">61</td><td class="line"><span class='keyword'>struct</span> _AsyncData</td></tr>
+<tr class="codeline" data-linenumber="62"><td class="num" id="LN62">62</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="63"><td class="num" id="LN63">63</td><td class="line"> PlumaFileBrowserStore * model;</td></tr>
+<tr class="codeline" data-linenumber="64"><td class="num" id="LN64">64</td><td class="line"> GCancellable * cancellable;</td></tr>
+<tr class="codeline" data-linenumber="65"><td class="num" id="LN65">65</td><td class="line"> gboolean trash;</td></tr>
+<tr class="codeline" data-linenumber="66"><td class="num" id="LN66">66</td><td class="line"> GList * files;</td></tr>
+<tr class="codeline" data-linenumber="67"><td class="num" id="LN67">67</td><td class="line"> GList * iter;</td></tr>
+<tr class="codeline" data-linenumber="68"><td class="num" id="LN68">68</td><td class="line"> gboolean removed;</td></tr>
+<tr class="codeline" data-linenumber="69"><td class="num" id="LN69">69</td><td class="line">};</td></tr>
+<tr class="codeline" data-linenumber="70"><td class="num" id="LN70">70</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="71"><td class="num" id="LN71">71</td><td class="line"><span class='keyword'>struct</span> _AsyncNode</td></tr>
+<tr class="codeline" data-linenumber="72"><td class="num" id="LN72">72</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="73"><td class="num" id="LN73">73</td><td class="line"> FileBrowserNodeDir *dir;</td></tr>
+<tr class="codeline" data-linenumber="74"><td class="num" id="LN74">74</td><td class="line"> GCancellable *cancellable;</td></tr>
+<tr class="codeline" data-linenumber="75"><td class="num" id="LN75">75</td><td class="line"> GSList *original_children;</td></tr>
+<tr class="codeline" data-linenumber="76"><td class="num" id="LN76">76</td><td class="line">};</td></tr>
+<tr class="codeline" data-linenumber="77"><td class="num" id="LN77">77</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="78"><td class="num" id="LN78">78</td><td class="line"><span class='keyword'>typedef</span> <span class='keyword'>struct</span> {</td></tr>
+<tr class="codeline" data-linenumber="79"><td class="num" id="LN79">79</td><td class="line"> PlumaFileBrowserStore * model;</td></tr>
+<tr class="codeline" data-linenumber="80"><td class="num" id="LN80">80</td><td class="line"> gchar * virtual_root;</td></tr>
+<tr class="codeline" data-linenumber="81"><td class="num" id="LN81">81</td><td class="line"> GMountOperation * operation;</td></tr>
+<tr class="codeline" data-linenumber="82"><td class="num" id="LN82">82</td><td class="line"> GCancellable * cancellable;</td></tr>
+<tr class="codeline" data-linenumber="83"><td class="num" id="LN83">83</td><td class="line">} MountInfo;</td></tr>
+<tr class="codeline" data-linenumber="84"><td class="num" id="LN84">84</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="85"><td class="num" id="LN85">85</td><td class="line"><span class='keyword'>struct</span> _FileBrowserNode</td></tr>
+<tr class="codeline" data-linenumber="86"><td class="num" id="LN86">86</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="87"><td class="num" id="LN87">87</td><td class="line"> GFile *file;</td></tr>
+<tr class="codeline" data-linenumber="88"><td class="num" id="LN88">88</td><td class="line"> guint flags;</td></tr>
+<tr class="codeline" data-linenumber="89"><td class="num" id="LN89">89</td><td class="line"> gchar *name;</td></tr>
+<tr class="codeline" data-linenumber="90"><td class="num" id="LN90">90</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="91"><td class="num" id="LN91">91</td><td class="line"> GdkPixbuf *icon;</td></tr>
+<tr class="codeline" data-linenumber="92"><td class="num" id="LN92">92</td><td class="line"> GdkPixbuf *emblem;</td></tr>
+<tr class="codeline" data-linenumber="93"><td class="num" id="LN93">93</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="94"><td class="num" id="LN94">94</td><td class="line"> FileBrowserNode *parent;</td></tr>
+<tr class="codeline" data-linenumber="95"><td class="num" id="LN95">95</td><td class="line"> gint pos;</td></tr>
+<tr class="codeline" data-linenumber="96"><td class="num" id="LN96">96</td><td class="line"> gboolean inserted;</td></tr>
+<tr class="codeline" data-linenumber="97"><td class="num" id="LN97">97</td><td class="line">};</td></tr>
+<tr class="codeline" data-linenumber="98"><td class="num" id="LN98">98</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="99"><td class="num" id="LN99">99</td><td class="line"><span class='keyword'>struct</span> _FileBrowserNodeDir</td></tr>
+<tr class="codeline" data-linenumber="100"><td class="num" id="LN100">100</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="101"><td class="num" id="LN101">101</td><td class="line"> FileBrowserNode node;</td></tr>
+<tr class="codeline" data-linenumber="102"><td class="num" id="LN102">102</td><td class="line"> GSList *children;</td></tr>
+<tr class="codeline" data-linenumber="103"><td class="num" id="LN103">103</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="104"><td class="num" id="LN104">104</td><td class="line"> GCancellable *cancellable;</td></tr>
+<tr class="codeline" data-linenumber="105"><td class="num" id="LN105">105</td><td class="line"> GFileMonitor *monitor;</td></tr>
+<tr class="codeline" data-linenumber="106"><td class="num" id="LN106">106</td><td class="line"> PlumaFileBrowserStore *model;</td></tr>
+<tr class="codeline" data-linenumber="107"><td class="num" id="LN107">107</td><td class="line">};</td></tr>
+<tr class="codeline" data-linenumber="108"><td class="num" id="LN108">108</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="109"><td class="num" id="LN109">109</td><td class="line"><span class='keyword'>struct</span> _PlumaFileBrowserStorePrivate</td></tr>
+<tr class="codeline" data-linenumber="110"><td class="num" id="LN110">110</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="111"><td class="num" id="LN111">111</td><td class="line"> FileBrowserNode *root;</td></tr>
+<tr class="codeline" data-linenumber="112"><td class="num" id="LN112">112</td><td class="line"> FileBrowserNode *virtual_root;</td></tr>
+<tr class="codeline" data-linenumber="113"><td class="num" id="LN113">113</td><td class="line"> GType column_types[PLUMA_FILE_BROWSER_STORE_COLUMN_NUM];</td></tr>
+<tr class="codeline" data-linenumber="114"><td class="num" id="LN114">114</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="115"><td class="num" id="LN115">115</td><td class="line"> PlumaFileBrowserStoreFilterMode filter_mode;</td></tr>
+<tr class="codeline" data-linenumber="116"><td class="num" id="LN116">116</td><td class="line"> PlumaFileBrowserStoreFilterFunc filter_func;</td></tr>
+<tr class="codeline" data-linenumber="117"><td class="num" id="LN117">117</td><td class="line"> gpointer filter_user_data;</td></tr>
+<tr class="codeline" data-linenumber="118"><td class="num" id="LN118">118</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="119"><td class="num" id="LN119">119</td><td class="line"> SortFunc sort_func;</td></tr>
+<tr class="codeline" data-linenumber="120"><td class="num" id="LN120">120</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="121"><td class="num" id="LN121">121</td><td class="line"> GSList *async_handles;</td></tr>
+<tr class="codeline" data-linenumber="122"><td class="num" id="LN122">122</td><td class="line"> MountInfo *mount_info;</td></tr>
+<tr class="codeline" data-linenumber="123"><td class="num" id="LN123">123</td><td class="line">};</td></tr>
+<tr class="codeline" data-linenumber="124"><td class="num" id="LN124">124</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="125"><td class="num" id="LN125">125</td><td class="line"><span class='keyword'>static</span> FileBrowserNode *model_find_node (PlumaFileBrowserStore *model,</td></tr>
+<tr class="codeline" data-linenumber="126"><td class="num" id="LN126">126</td><td class="line"> FileBrowserNode *node,</td></tr>
+<tr class="codeline" data-linenumber="127"><td class="num" id="LN127">127</td><td class="line"> GFile *uri);</td></tr>
+<tr class="codeline" data-linenumber="128"><td class="num" id="LN128">128</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span> model_remove_node (PlumaFileBrowserStore * model,</td></tr>
+<tr class="codeline" data-linenumber="129"><td class="num" id="LN129">129</td><td class="line"> FileBrowserNode * node,</td></tr>
+<tr class="codeline" data-linenumber="130"><td class="num" id="LN130">130</td><td class="line"> GtkTreePath * path,</td></tr>
+<tr class="codeline" data-linenumber="131"><td class="num" id="LN131">131</td><td class="line"> gboolean free_nodes);</td></tr>
+<tr class="codeline" data-linenumber="132"><td class="num" id="LN132">132</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="133"><td class="num" id="LN133">133</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span> set_virtual_root_from_node (PlumaFileBrowserStore * model,</td></tr>
+<tr class="codeline" data-linenumber="134"><td class="num" id="LN134">134</td><td class="line"> FileBrowserNode * node);</td></tr>
+<tr class="codeline" data-linenumber="135"><td class="num" id="LN135">135</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="136"><td class="num" id="LN136">136</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span> pluma_file_browser_store_iface_init (GtkTreeModelIface * iface);</td></tr>
+<tr class="codeline" data-linenumber="137"><td class="num" id="LN137">137</td><td class="line"><span class='keyword'>static</span> GtkTreeModelFlags pluma_file_browser_store_get_flags (GtkTreeModel * tree_model);</td></tr>
+<tr class="codeline" data-linenumber="138"><td class="num" id="LN138">138</td><td class="line"><span class='keyword'>static</span> gint pluma_file_browser_store_get_n_columns (GtkTreeModel * tree_model);</td></tr>
+<tr class="codeline" data-linenumber="139"><td class="num" id="LN139">139</td><td class="line"><span class='keyword'>static</span> GType pluma_file_browser_store_get_column_type (GtkTreeModel * tree_model,</td></tr>
+<tr class="codeline" data-linenumber="140"><td class="num" id="LN140">140</td><td class="line"> gint index);</td></tr>
+<tr class="codeline" data-linenumber="141"><td class="num" id="LN141">141</td><td class="line"><span class='keyword'>static</span> gboolean pluma_file_browser_store_get_iter (GtkTreeModel * tree_model,</td></tr>
+<tr class="codeline" data-linenumber="142"><td class="num" id="LN142">142</td><td class="line"> GtkTreeIter * iter,</td></tr>
+<tr class="codeline" data-linenumber="143"><td class="num" id="LN143">143</td><td class="line"> GtkTreePath * path);</td></tr>
+<tr class="codeline" data-linenumber="144"><td class="num" id="LN144">144</td><td class="line"><span class='keyword'>static</span> GtkTreePath *pluma_file_browser_store_get_path (GtkTreeModel * tree_model,</td></tr>
+<tr class="codeline" data-linenumber="145"><td class="num" id="LN145">145</td><td class="line"> GtkTreeIter * iter);</td></tr>
+<tr class="codeline" data-linenumber="146"><td class="num" id="LN146">146</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span> pluma_file_browser_store_get_value (GtkTreeModel * tree_model,</td></tr>
+<tr class="codeline" data-linenumber="147"><td class="num" id="LN147">147</td><td class="line"> GtkTreeIter * iter,</td></tr>
+<tr class="codeline" data-linenumber="148"><td class="num" id="LN148">148</td><td class="line"> gint column,</td></tr>
+<tr class="codeline" data-linenumber="149"><td class="num" id="LN149">149</td><td class="line"> GValue * value);</td></tr>
+<tr class="codeline" data-linenumber="150"><td class="num" id="LN150">150</td><td class="line"><span class='keyword'>static</span> gboolean pluma_file_browser_store_iter_next (GtkTreeModel * tree_model,</td></tr>
+<tr class="codeline" data-linenumber="151"><td class="num" id="LN151">151</td><td class="line"> GtkTreeIter * iter);</td></tr>
+<tr class="codeline" data-linenumber="152"><td class="num" id="LN152">152</td><td class="line"><span class='keyword'>static</span> gboolean pluma_file_browser_store_iter_children (GtkTreeModel * tree_model,</td></tr>
+<tr class="codeline" data-linenumber="153"><td class="num" id="LN153">153</td><td class="line"> GtkTreeIter * iter,</td></tr>
+<tr class="codeline" data-linenumber="154"><td class="num" id="LN154">154</td><td class="line"> GtkTreeIter * parent);</td></tr>
+<tr class="codeline" data-linenumber="155"><td class="num" id="LN155">155</td><td class="line"><span class='keyword'>static</span> gboolean pluma_file_browser_store_iter_has_child (GtkTreeModel * tree_model,</td></tr>
+<tr class="codeline" data-linenumber="156"><td class="num" id="LN156">156</td><td class="line"> GtkTreeIter * iter);</td></tr>
+<tr class="codeline" data-linenumber="157"><td class="num" id="LN157">157</td><td class="line"><span class='keyword'>static</span> gint pluma_file_browser_store_iter_n_children (GtkTreeModel * tree_model,</td></tr>
+<tr class="codeline" data-linenumber="158"><td class="num" id="LN158">158</td><td class="line"> GtkTreeIter * iter);</td></tr>
+<tr class="codeline" data-linenumber="159"><td class="num" id="LN159">159</td><td class="line"><span class='keyword'>static</span> gboolean pluma_file_browser_store_iter_nth_child (GtkTreeModel * tree_model,</td></tr>
+<tr class="codeline" data-linenumber="160"><td class="num" id="LN160">160</td><td class="line"> GtkTreeIter * iter,</td></tr>
+<tr class="codeline" data-linenumber="161"><td class="num" id="LN161">161</td><td class="line"> GtkTreeIter * parent,</td></tr>
+<tr class="codeline" data-linenumber="162"><td class="num" id="LN162">162</td><td class="line"> gint n);</td></tr>
+<tr class="codeline" data-linenumber="163"><td class="num" id="LN163">163</td><td class="line"><span class='keyword'>static</span> gboolean pluma_file_browser_store_iter_parent (GtkTreeModel * tree_model,</td></tr>
+<tr class="codeline" data-linenumber="164"><td class="num" id="LN164">164</td><td class="line"> GtkTreeIter * iter,</td></tr>
+<tr class="codeline" data-linenumber="165"><td class="num" id="LN165">165</td><td class="line"> GtkTreeIter * child);</td></tr>
+<tr class="codeline" data-linenumber="166"><td class="num" id="LN166">166</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span> pluma_file_browser_store_row_inserted (GtkTreeModel * tree_model,</td></tr>
+<tr class="codeline" data-linenumber="167"><td class="num" id="LN167">167</td><td class="line"> GtkTreePath * path,</td></tr>
+<tr class="codeline" data-linenumber="168"><td class="num" id="LN168">168</td><td class="line"> GtkTreeIter * iter);</td></tr>
+<tr class="codeline" data-linenumber="169"><td class="num" id="LN169">169</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="170"><td class="num" id="LN170">170</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span> pluma_file_browser_store_drag_source_init (GtkTreeDragSourceIface * iface);</td></tr>
+<tr class="codeline" data-linenumber="171"><td class="num" id="LN171">171</td><td class="line"><span class='keyword'>static</span> gboolean pluma_file_browser_store_row_draggable (GtkTreeDragSource * drag_source,</td></tr>
+<tr class="codeline" data-linenumber="172"><td class="num" id="LN172">172</td><td class="line"> GtkTreePath * path);</td></tr>
+<tr class="codeline" data-linenumber="173"><td class="num" id="LN173">173</td><td class="line"><span class='keyword'>static</span> gboolean pluma_file_browser_store_drag_data_delete (GtkTreeDragSource * drag_source,</td></tr>
+<tr class="codeline" data-linenumber="174"><td class="num" id="LN174">174</td><td class="line"> GtkTreePath * path);</td></tr>
+<tr class="codeline" data-linenumber="175"><td class="num" id="LN175">175</td><td class="line"><span class='keyword'>static</span> gboolean pluma_file_browser_store_drag_data_get (GtkTreeDragSource * drag_source,</td></tr>
+<tr class="codeline" data-linenumber="176"><td class="num" id="LN176">176</td><td class="line"> GtkTreePath * path,</td></tr>
+<tr class="codeline" data-linenumber="177"><td class="num" id="LN177">177</td><td class="line"> GtkSelectionData * selection_data);</td></tr>
+<tr class="codeline" data-linenumber="178"><td class="num" id="LN178">178</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="179"><td class="num" id="LN179">179</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span> file_browser_node_free (PlumaFileBrowserStore * model,</td></tr>
+<tr class="codeline" data-linenumber="180"><td class="num" id="LN180">180</td><td class="line"> FileBrowserNode * node);</td></tr>
+<tr class="codeline" data-linenumber="181"><td class="num" id="LN181">181</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span> model_add_node (PlumaFileBrowserStore * model,</td></tr>
+<tr class="codeline" data-linenumber="182"><td class="num" id="LN182">182</td><td class="line"> FileBrowserNode * child,</td></tr>
+<tr class="codeline" data-linenumber="183"><td class="num" id="LN183">183</td><td class="line"> FileBrowserNode * parent);</td></tr>
+<tr class="codeline" data-linenumber="184"><td class="num" id="LN184">184</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span> model_clear (PlumaFileBrowserStore * model,</td></tr>
+<tr class="codeline" data-linenumber="185"><td class="num" id="LN185">185</td><td class="line"> gboolean free_nodes);</td></tr>
+<tr class="codeline" data-linenumber="186"><td class="num" id="LN186">186</td><td class="line"><span class='keyword'>static</span> gint model_sort_default (FileBrowserNode * node1,</td></tr>
+<tr class="codeline" data-linenumber="187"><td class="num" id="LN187">187</td><td class="line"> FileBrowserNode * node2);</td></tr>
+<tr class="codeline" data-linenumber="188"><td class="num" id="LN188">188</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span> model_check_dummy (PlumaFileBrowserStore * model,</td></tr>
+<tr class="codeline" data-linenumber="189"><td class="num" id="LN189">189</td><td class="line"> FileBrowserNode * node);</td></tr>
+<tr class="codeline" data-linenumber="190"><td class="num" id="LN190">190</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span> next_files_async (GFileEnumerator * enumerator,</td></tr>
+<tr class="codeline" data-linenumber="191"><td class="num" id="LN191">191</td><td class="line"> AsyncNode * async);</td></tr>
+<tr class="codeline" data-linenumber="192"><td class="num" id="LN192">192</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="193"><td class="num" id="LN193">193</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span> delete_files (AsyncData *data);</td></tr>
+<tr class="codeline" data-linenumber="194"><td class="num" id="LN194">194</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="195"><td class="num" id="LN195">195</td><td class="line"><span class='macro'>G_DEFINE_DYNAMIC_TYPE_EXTENDED (PlumaFileBrowserStore, pluma_file_browser_store,<span class='macro_popup'>static void pluma_file_browser_store_init (PlumaFileBrowserStore<br> *self); static void pluma_file_browser_store_class_init (PlumaFileBrowserStoreClass<br> *klass); static void pluma_file_browser_store_class_finalize<br> (PlumaFileBrowserStoreClass *klass); static gpointer pluma_file_browser_store_parent_class<br> = ((void*)0); static GType pluma_file_browser_store_type_id =<br> 0; static gint PlumaFileBrowserStore_private_offset; static void<br> pluma_file_browser_store_class_intern_init (gpointer klass) {<br> pluma_file_browser_store_parent_class = g_type_class_peek_parent<br> (klass); if (PlumaFileBrowserStore_private_offset != 0) g_type_class_adjust_private_offset<br> (klass, &amp;PlumaFileBrowserStore_private_offset); pluma_file_browser_store_class_init<br> ((PlumaFileBrowserStoreClass*) klass); } __attribute__ ((__unused__<br>)) static inline gpointer pluma_file_browser_store_get_instance_private<br> (PlumaFileBrowserStore *self) { return (((gpointer) ((guint8<br>*) (self) + (glong) (PlumaFileBrowserStore_private_offset))))<br>; } GType pluma_file_browser_store_get_type (void) { return pluma_file_browser_store_type_id<br>; } static void pluma_file_browser_store_register_type (GTypeModule<br> *type_module) { GType g_define_type_id __attribute__ ((__unused__<br>)); const GTypeInfo g_define_type_info = { sizeof (PlumaFileBrowserStoreClass<br>), (GBaseInitFunc) ((void*)0), (GBaseFinalizeFunc) ((void*)0)<br>, (GClassInitFunc)(void (*)(void)) pluma_file_browser_store_class_intern_init<br>, (GClassFinalizeFunc)(void (*)(void)) pluma_file_browser_store_class_finalize<br>, ((void*)0), sizeof (PlumaFileBrowserStore), 0, (GInstanceInitFunc<br>)(void (*)(void)) pluma_file_browser_store_init, ((void*)0) }<br>; pluma_file_browser_store_type_id = g_type_module_register_type<br> (type_module, ((GType) ((20) &lt;&lt; (2))), "PlumaFileBrowserStore"<br>, &amp;g_define_type_info, (GTypeFlags) 0); g_define_type_id =<br> pluma_file_browser_store_type_id; { { PlumaFileBrowserStore_private_offset<br> = sizeof (PlumaFileBrowserStorePrivate); } { const GInterfaceInfo<br> g_implement_interface_info = { (GInterfaceInitFunc)(void (*)<br>(void)) pluma_file_browser_store_iface_init, ((void*)0), ((void<br>*)0) }; g_type_module_add_interface (type_module, g_define_type_id<br>, (gtk_tree_model_get_type ()), &amp;g_implement_interface_info<br>); } { const GInterfaceInfo g_implement_interface_info = { (GInterfaceInitFunc<br>)(void (*)(void)) pluma_file_browser_store_drag_source_init, (<br>(void*)0), ((void*)0) }; g_type_module_add_interface (type_module<br>, g_define_type_id, (gtk_tree_drag_source_get_type ()), &amp;<br>g_implement_interface_info); } ; } }</span></span></td></tr>
+<tr class="codeline" data-linenumber="196"><td class="num" id="LN196">196</td><td class="line"> <span class='macro'>G_TYPE_OBJECT,<span class='macro_popup'>static void pluma_file_browser_store_init (PlumaFileBrowserStore<br> *self); static void pluma_file_browser_store_class_init (PlumaFileBrowserStoreClass<br> *klass); static void pluma_file_browser_store_class_finalize<br> (PlumaFileBrowserStoreClass *klass); static gpointer pluma_file_browser_store_parent_class<br> = ((void*)0); static GType pluma_file_browser_store_type_id =<br> 0; static gint PlumaFileBrowserStore_private_offset; static void<br> pluma_file_browser_store_class_intern_init (gpointer klass) {<br> pluma_file_browser_store_parent_class = g_type_class_peek_parent<br> (klass); if (PlumaFileBrowserStore_private_offset != 0) g_type_class_adjust_private_offset<br> (klass, &amp;PlumaFileBrowserStore_private_offset); pluma_file_browser_store_class_init<br> ((PlumaFileBrowserStoreClass*) klass); } __attribute__ ((__unused__<br>)) static inline gpointer pluma_file_browser_store_get_instance_private<br> (PlumaFileBrowserStore *self) { return (((gpointer) ((guint8<br>*) (self) + (glong) (PlumaFileBrowserStore_private_offset))))<br>; } GType pluma_file_browser_store_get_type (void) { return pluma_file_browser_store_type_id<br>; } static void pluma_file_browser_store_register_type (GTypeModule<br> *type_module) { GType g_define_type_id __attribute__ ((__unused__<br>)); const GTypeInfo g_define_type_info = { sizeof (PlumaFileBrowserStoreClass<br>), (GBaseInitFunc) ((void*)0), (GBaseFinalizeFunc) ((void*)0)<br>, (GClassInitFunc)(void (*)(void)) pluma_file_browser_store_class_intern_init<br>, (GClassFinalizeFunc)(void (*)(void)) pluma_file_browser_store_class_finalize<br>, ((void*)0), sizeof (PlumaFileBrowserStore), 0, (GInstanceInitFunc<br>)(void (*)(void)) pluma_file_browser_store_init, ((void*)0) }<br>; pluma_file_browser_store_type_id = g_type_module_register_type<br> (type_module, ((GType) ((20) &lt;&lt; (2))), "PlumaFileBrowserStore"<br>, &amp;g_define_type_info, (GTypeFlags) 0); g_define_type_id =<br> pluma_file_browser_store_type_id; { { PlumaFileBrowserStore_private_offset<br> = sizeof (PlumaFileBrowserStorePrivate); } { const GInterfaceInfo<br> g_implement_interface_info = { (GInterfaceInitFunc)(void (*)<br>(void)) pluma_file_browser_store_iface_init, ((void*)0), ((void<br>*)0) }; g_type_module_add_interface (type_module, g_define_type_id<br>, (gtk_tree_model_get_type ()), &amp;g_implement_interface_info<br>); } { const GInterfaceInfo g_implement_interface_info = { (GInterfaceInitFunc<br>)(void (*)(void)) pluma_file_browser_store_drag_source_init, (<br>(void*)0), ((void*)0) }; g_type_module_add_interface (type_module<br>, g_define_type_id, (gtk_tree_drag_source_get_type ()), &amp;<br>g_implement_interface_info); } ; } }</span></span></td></tr>
+<tr class="codeline" data-linenumber="197"><td class="num" id="LN197">197</td><td class="line"> <span class='macro'>0,<span class='macro_popup'>static void pluma_file_browser_store_init (PlumaFileBrowserStore<br> *self); static void pluma_file_browser_store_class_init (PlumaFileBrowserStoreClass<br> *klass); static void pluma_file_browser_store_class_finalize<br> (PlumaFileBrowserStoreClass *klass); static gpointer pluma_file_browser_store_parent_class<br> = ((void*)0); static GType pluma_file_browser_store_type_id =<br> 0; static gint PlumaFileBrowserStore_private_offset; static void<br> pluma_file_browser_store_class_intern_init (gpointer klass) {<br> pluma_file_browser_store_parent_class = g_type_class_peek_parent<br> (klass); if (PlumaFileBrowserStore_private_offset != 0) g_type_class_adjust_private_offset<br> (klass, &amp;PlumaFileBrowserStore_private_offset); pluma_file_browser_store_class_init<br> ((PlumaFileBrowserStoreClass*) klass); } __attribute__ ((__unused__<br>)) static inline gpointer pluma_file_browser_store_get_instance_private<br> (PlumaFileBrowserStore *self) { return (((gpointer) ((guint8<br>*) (self) + (glong) (PlumaFileBrowserStore_private_offset))))<br>; } GType pluma_file_browser_store_get_type (void) { return pluma_file_browser_store_type_id<br>; } static void pluma_file_browser_store_register_type (GTypeModule<br> *type_module) { GType g_define_type_id __attribute__ ((__unused__<br>)); const GTypeInfo g_define_type_info = { sizeof (PlumaFileBrowserStoreClass<br>), (GBaseInitFunc) ((void*)0), (GBaseFinalizeFunc) ((void*)0)<br>, (GClassInitFunc)(void (*)(void)) pluma_file_browser_store_class_intern_init<br>, (GClassFinalizeFunc)(void (*)(void)) pluma_file_browser_store_class_finalize<br>, ((void*)0), sizeof (PlumaFileBrowserStore), 0, (GInstanceInitFunc<br>)(void (*)(void)) pluma_file_browser_store_init, ((void*)0) }<br>; pluma_file_browser_store_type_id = g_type_module_register_type<br> (type_module, ((GType) ((20) &lt;&lt; (2))), "PlumaFileBrowserStore"<br>, &amp;g_define_type_info, (GTypeFlags) 0); g_define_type_id =<br> pluma_file_browser_store_type_id; { { PlumaFileBrowserStore_private_offset<br> = sizeof (PlumaFileBrowserStorePrivate); } { const GInterfaceInfo<br> g_implement_interface_info = { (GInterfaceInitFunc)(void (*)<br>(void)) pluma_file_browser_store_iface_init, ((void*)0), ((void<br>*)0) }; g_type_module_add_interface (type_module, g_define_type_id<br>, (gtk_tree_model_get_type ()), &amp;g_implement_interface_info<br>); } { const GInterfaceInfo g_implement_interface_info = { (GInterfaceInitFunc<br>)(void (*)(void)) pluma_file_browser_store_drag_source_init, (<br>(void*)0), ((void*)0) }; g_type_module_add_interface (type_module<br>, g_define_type_id, (gtk_tree_drag_source_get_type ()), &amp;<br>g_implement_interface_info); } ; } }</span></span></td></tr>
+<tr class="codeline" data-linenumber="198"><td class="num" id="LN198">198</td><td class="line"> <span class='macro'>G_ADD_PRIVATE_DYNAMIC (PlumaFileBrowserStore)<span class='macro_popup'>static void pluma_file_browser_store_init (PlumaFileBrowserStore<br> *self); static void pluma_file_browser_store_class_init (PlumaFileBrowserStoreClass<br> *klass); static void pluma_file_browser_store_class_finalize<br> (PlumaFileBrowserStoreClass *klass); static gpointer pluma_file_browser_store_parent_class<br> = ((void*)0); static GType pluma_file_browser_store_type_id =<br> 0; static gint PlumaFileBrowserStore_private_offset; static void<br> pluma_file_browser_store_class_intern_init (gpointer klass) {<br> pluma_file_browser_store_parent_class = g_type_class_peek_parent<br> (klass); if (PlumaFileBrowserStore_private_offset != 0) g_type_class_adjust_private_offset<br> (klass, &amp;PlumaFileBrowserStore_private_offset); pluma_file_browser_store_class_init<br> ((PlumaFileBrowserStoreClass*) klass); } __attribute__ ((__unused__<br>)) static inline gpointer pluma_file_browser_store_get_instance_private<br> (PlumaFileBrowserStore *self) { return (((gpointer) ((guint8<br>*) (self) + (glong) (PlumaFileBrowserStore_private_offset))))<br>; } GType pluma_file_browser_store_get_type (void) { return pluma_file_browser_store_type_id<br>; } static void pluma_file_browser_store_register_type (GTypeModule<br> *type_module) { GType g_define_type_id __attribute__ ((__unused__<br>)); const GTypeInfo g_define_type_info = { sizeof (PlumaFileBrowserStoreClass<br>), (GBaseInitFunc) ((void*)0), (GBaseFinalizeFunc) ((void*)0)<br>, (GClassInitFunc)(void (*)(void)) pluma_file_browser_store_class_intern_init<br>, (GClassFinalizeFunc)(void (*)(void)) pluma_file_browser_store_class_finalize<br>, ((void*)0), sizeof (PlumaFileBrowserStore), 0, (GInstanceInitFunc<br>)(void (*)(void)) pluma_file_browser_store_init, ((void*)0) }<br>; pluma_file_browser_store_type_id = g_type_module_register_type<br> (type_module, ((GType) ((20) &lt;&lt; (2))), "PlumaFileBrowserStore"<br>, &amp;g_define_type_info, (GTypeFlags) 0); g_define_type_id =<br> pluma_file_browser_store_type_id; { { PlumaFileBrowserStore_private_offset<br> = sizeof (PlumaFileBrowserStorePrivate); } { const GInterfaceInfo<br> g_implement_interface_info = { (GInterfaceInitFunc)(void (*)<br>(void)) pluma_file_browser_store_iface_init, ((void*)0), ((void<br>*)0) }; g_type_module_add_interface (type_module, g_define_type_id<br>, (gtk_tree_model_get_type ()), &amp;g_implement_interface_info<br>); } { const GInterfaceInfo g_implement_interface_info = { (GInterfaceInitFunc<br>)(void (*)(void)) pluma_file_browser_store_drag_source_init, (<br>(void*)0), ((void*)0) }; g_type_module_add_interface (type_module<br>, g_define_type_id, (gtk_tree_drag_source_get_type ()), &amp;<br>g_implement_interface_info); } ; } }</span></span></td></tr>
+<tr class="codeline" data-linenumber="199"><td class="num" id="LN199">199</td><td class="line"> <span class='macro'>G_IMPLEMENT_INTERFACE_DYNAMIC (GTK_TYPE_TREE_MODEL,<span class='macro_popup'>static void pluma_file_browser_store_init (PlumaFileBrowserStore<br> *self); static void pluma_file_browser_store_class_init (PlumaFileBrowserStoreClass<br> *klass); static void pluma_file_browser_store_class_finalize<br> (PlumaFileBrowserStoreClass *klass); static gpointer pluma_file_browser_store_parent_class<br> = ((void*)0); static GType pluma_file_browser_store_type_id =<br> 0; static gint PlumaFileBrowserStore_private_offset; static void<br> pluma_file_browser_store_class_intern_init (gpointer klass) {<br> pluma_file_browser_store_parent_class = g_type_class_peek_parent<br> (klass); if (PlumaFileBrowserStore_private_offset != 0) g_type_class_adjust_private_offset<br> (klass, &amp;PlumaFileBrowserStore_private_offset); pluma_file_browser_store_class_init<br> ((PlumaFileBrowserStoreClass*) klass); } __attribute__ ((__unused__<br>)) static inline gpointer pluma_file_browser_store_get_instance_private<br> (PlumaFileBrowserStore *self) { return (((gpointer) ((guint8<br>*) (self) + (glong) (PlumaFileBrowserStore_private_offset))))<br>; } GType pluma_file_browser_store_get_type (void) { return pluma_file_browser_store_type_id<br>; } static void pluma_file_browser_store_register_type (GTypeModule<br> *type_module) { GType g_define_type_id __attribute__ ((__unused__<br>)); const GTypeInfo g_define_type_info = { sizeof (PlumaFileBrowserStoreClass<br>), (GBaseInitFunc) ((void*)0), (GBaseFinalizeFunc) ((void*)0)<br>, (GClassInitFunc)(void (*)(void)) pluma_file_browser_store_class_intern_init<br>, (GClassFinalizeFunc)(void (*)(void)) pluma_file_browser_store_class_finalize<br>, ((void*)0), sizeof (PlumaFileBrowserStore), 0, (GInstanceInitFunc<br>)(void (*)(void)) pluma_file_browser_store_init, ((void*)0) }<br>; pluma_file_browser_store_type_id = g_type_module_register_type<br> (type_module, ((GType) ((20) &lt;&lt; (2))), "PlumaFileBrowserStore"<br>, &amp;g_define_type_info, (GTypeFlags) 0); g_define_type_id =<br> pluma_file_browser_store_type_id; { { PlumaFileBrowserStore_private_offset<br> = sizeof (PlumaFileBrowserStorePrivate); } { const GInterfaceInfo<br> g_implement_interface_info = { (GInterfaceInitFunc)(void (*)<br>(void)) pluma_file_browser_store_iface_init, ((void*)0), ((void<br>*)0) }; g_type_module_add_interface (type_module, g_define_type_id<br>, (gtk_tree_model_get_type ()), &amp;g_implement_interface_info<br>); } { const GInterfaceInfo g_implement_interface_info = { (GInterfaceInitFunc<br>)(void (*)(void)) pluma_file_browser_store_drag_source_init, (<br>(void*)0), ((void*)0) }; g_type_module_add_interface (type_module<br>, g_define_type_id, (gtk_tree_drag_source_get_type ()), &amp;<br>g_implement_interface_info); } ; } }</span></span></td></tr>
+<tr class="codeline" data-linenumber="200"><td class="num" id="LN200">200</td><td class="line"> <span class='macro'>pluma_file_browser_store_iface_init)<span class='macro_popup'>static void pluma_file_browser_store_init (PlumaFileBrowserStore<br> *self); static void pluma_file_browser_store_class_init (PlumaFileBrowserStoreClass<br> *klass); static void pluma_file_browser_store_class_finalize<br> (PlumaFileBrowserStoreClass *klass); static gpointer pluma_file_browser_store_parent_class<br> = ((void*)0); static GType pluma_file_browser_store_type_id =<br> 0; static gint PlumaFileBrowserStore_private_offset; static void<br> pluma_file_browser_store_class_intern_init (gpointer klass) {<br> pluma_file_browser_store_parent_class = g_type_class_peek_parent<br> (klass); if (PlumaFileBrowserStore_private_offset != 0) g_type_class_adjust_private_offset<br> (klass, &amp;PlumaFileBrowserStore_private_offset); pluma_file_browser_store_class_init<br> ((PlumaFileBrowserStoreClass*) klass); } __attribute__ ((__unused__<br>)) static inline gpointer pluma_file_browser_store_get_instance_private<br> (PlumaFileBrowserStore *self) { return (((gpointer) ((guint8<br>*) (self) + (glong) (PlumaFileBrowserStore_private_offset))))<br>; } GType pluma_file_browser_store_get_type (void) { return pluma_file_browser_store_type_id<br>; } static void pluma_file_browser_store_register_type (GTypeModule<br> *type_module) { GType g_define_type_id __attribute__ ((__unused__<br>)); const GTypeInfo g_define_type_info = { sizeof (PlumaFileBrowserStoreClass<br>), (GBaseInitFunc) ((void*)0), (GBaseFinalizeFunc) ((void*)0)<br>, (GClassInitFunc)(void (*)(void)) pluma_file_browser_store_class_intern_init<br>, (GClassFinalizeFunc)(void (*)(void)) pluma_file_browser_store_class_finalize<br>, ((void*)0), sizeof (PlumaFileBrowserStore), 0, (GInstanceInitFunc<br>)(void (*)(void)) pluma_file_browser_store_init, ((void*)0) }<br>; pluma_file_browser_store_type_id = g_type_module_register_type<br> (type_module, ((GType) ((20) &lt;&lt; (2))), "PlumaFileBrowserStore"<br>, &amp;g_define_type_info, (GTypeFlags) 0); g_define_type_id =<br> pluma_file_browser_store_type_id; { { PlumaFileBrowserStore_private_offset<br> = sizeof (PlumaFileBrowserStorePrivate); } { const GInterfaceInfo<br> g_implement_interface_info = { (GInterfaceInitFunc)(void (*)<br>(void)) pluma_file_browser_store_iface_init, ((void*)0), ((void<br>*)0) }; g_type_module_add_interface (type_module, g_define_type_id<br>, (gtk_tree_model_get_type ()), &amp;g_implement_interface_info<br>); } { const GInterfaceInfo g_implement_interface_info = { (GInterfaceInitFunc<br>)(void (*)(void)) pluma_file_browser_store_drag_source_init, (<br>(void*)0), ((void*)0) }; g_type_module_add_interface (type_module<br>, g_define_type_id, (gtk_tree_drag_source_get_type ()), &amp;<br>g_implement_interface_info); } ; } }</span></span></td></tr>
+<tr class="codeline" data-linenumber="201"><td class="num" id="LN201">201</td><td class="line"> <span class='macro'>G_IMPLEMENT_INTERFACE_DYNAMIC (GTK_TYPE_TREE_DRAG_SOURCE,<span class='macro_popup'>static void pluma_file_browser_store_init (PlumaFileBrowserStore<br> *self); static void pluma_file_browser_store_class_init (PlumaFileBrowserStoreClass<br> *klass); static void pluma_file_browser_store_class_finalize<br> (PlumaFileBrowserStoreClass *klass); static gpointer pluma_file_browser_store_parent_class<br> = ((void*)0); static GType pluma_file_browser_store_type_id =<br> 0; static gint PlumaFileBrowserStore_private_offset; static void<br> pluma_file_browser_store_class_intern_init (gpointer klass) {<br> pluma_file_browser_store_parent_class = g_type_class_peek_parent<br> (klass); if (PlumaFileBrowserStore_private_offset != 0) g_type_class_adjust_private_offset<br> (klass, &amp;PlumaFileBrowserStore_private_offset); pluma_file_browser_store_class_init<br> ((PlumaFileBrowserStoreClass*) klass); } __attribute__ ((__unused__<br>)) static inline gpointer pluma_file_browser_store_get_instance_private<br> (PlumaFileBrowserStore *self) { return (((gpointer) ((guint8<br>*) (self) + (glong) (PlumaFileBrowserStore_private_offset))))<br>; } GType pluma_file_browser_store_get_type (void) { return pluma_file_browser_store_type_id<br>; } static void pluma_file_browser_store_register_type (GTypeModule<br> *type_module) { GType g_define_type_id __attribute__ ((__unused__<br>)); const GTypeInfo g_define_type_info = { sizeof (PlumaFileBrowserStoreClass<br>), (GBaseInitFunc) ((void*)0), (GBaseFinalizeFunc) ((void*)0)<br>, (GClassInitFunc)(void (*)(void)) pluma_file_browser_store_class_intern_init<br>, (GClassFinalizeFunc)(void (*)(void)) pluma_file_browser_store_class_finalize<br>, ((void*)0), sizeof (PlumaFileBrowserStore), 0, (GInstanceInitFunc<br>)(void (*)(void)) pluma_file_browser_store_init, ((void*)0) }<br>; pluma_file_browser_store_type_id = g_type_module_register_type<br> (type_module, ((GType) ((20) &lt;&lt; (2))), "PlumaFileBrowserStore"<br>, &amp;g_define_type_info, (GTypeFlags) 0); g_define_type_id =<br> pluma_file_browser_store_type_id; { { PlumaFileBrowserStore_private_offset<br> = sizeof (PlumaFileBrowserStorePrivate); } { const GInterfaceInfo<br> g_implement_interface_info = { (GInterfaceInitFunc)(void (*)<br>(void)) pluma_file_browser_store_iface_init, ((void*)0), ((void<br>*)0) }; g_type_module_add_interface (type_module, g_define_type_id<br>, (gtk_tree_model_get_type ()), &amp;g_implement_interface_info<br>); } { const GInterfaceInfo g_implement_interface_info = { (GInterfaceInitFunc<br>)(void (*)(void)) pluma_file_browser_store_drag_source_init, (<br>(void*)0), ((void*)0) }; g_type_module_add_interface (type_module<br>, g_define_type_id, (gtk_tree_drag_source_get_type ()), &amp;<br>g_implement_interface_info); } ; } }</span></span></td></tr>
+<tr class="codeline" data-linenumber="202"><td class="num" id="LN202">202</td><td class="line"> <span class='macro'>pluma_file_browser_store_drag_source_init))<span class='macro_popup'>static void pluma_file_browser_store_init (PlumaFileBrowserStore<br> *self); static void pluma_file_browser_store_class_init (PlumaFileBrowserStoreClass<br> *klass); static void pluma_file_browser_store_class_finalize<br> (PlumaFileBrowserStoreClass *klass); static gpointer pluma_file_browser_store_parent_class<br> = ((void*)0); static GType pluma_file_browser_store_type_id =<br> 0; static gint PlumaFileBrowserStore_private_offset; static void<br> pluma_file_browser_store_class_intern_init (gpointer klass) {<br> pluma_file_browser_store_parent_class = g_type_class_peek_parent<br> (klass); if (PlumaFileBrowserStore_private_offset != 0) g_type_class_adjust_private_offset<br> (klass, &amp;PlumaFileBrowserStore_private_offset); pluma_file_browser_store_class_init<br> ((PlumaFileBrowserStoreClass*) klass); } __attribute__ ((__unused__<br>)) static inline gpointer pluma_file_browser_store_get_instance_private<br> (PlumaFileBrowserStore *self) { return (((gpointer) ((guint8<br>*) (self) + (glong) (PlumaFileBrowserStore_private_offset))))<br>; } GType pluma_file_browser_store_get_type (void) { return pluma_file_browser_store_type_id<br>; } static void pluma_file_browser_store_register_type (GTypeModule<br> *type_module) { GType g_define_type_id __attribute__ ((__unused__<br>)); const GTypeInfo g_define_type_info = { sizeof (PlumaFileBrowserStoreClass<br>), (GBaseInitFunc) ((void*)0), (GBaseFinalizeFunc) ((void*)0)<br>, (GClassInitFunc)(void (*)(void)) pluma_file_browser_store_class_intern_init<br>, (GClassFinalizeFunc)(void (*)(void)) pluma_file_browser_store_class_finalize<br>, ((void*)0), sizeof (PlumaFileBrowserStore), 0, (GInstanceInitFunc<br>)(void (*)(void)) pluma_file_browser_store_init, ((void*)0) }<br>; pluma_file_browser_store_type_id = g_type_module_register_type<br> (type_module, ((GType) ((20) &lt;&lt; (2))), "PlumaFileBrowserStore"<br>, &amp;g_define_type_info, (GTypeFlags) 0); g_define_type_id =<br> pluma_file_browser_store_type_id; { { PlumaFileBrowserStore_private_offset<br> = sizeof (PlumaFileBrowserStorePrivate); } { const GInterfaceInfo<br> g_implement_interface_info = { (GInterfaceInitFunc)(void (*)<br>(void)) pluma_file_browser_store_iface_init, ((void*)0), ((void<br>*)0) }; g_type_module_add_interface (type_module, g_define_type_id<br>, (gtk_tree_model_get_type ()), &amp;g_implement_interface_info<br>); } { const GInterfaceInfo g_implement_interface_info = { (GInterfaceInitFunc<br>)(void (*)(void)) pluma_file_browser_store_drag_source_init, (<br>(void*)0), ((void*)0) }; g_type_module_add_interface (type_module<br>, g_define_type_id, (gtk_tree_drag_source_get_type ()), &amp;<br>g_implement_interface_info); } ; } }</span></span></td></tr>
+<tr class="codeline" data-linenumber="203"><td class="num" id="LN203">203</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="204"><td class="num" id="LN204">204</td><td class="line"><span class='comment'>/* Properties */</span></td></tr>
+<tr class="codeline" data-linenumber="205"><td class="num" id="LN205">205</td><td class="line"><span class='keyword'>enum</span> {</td></tr>
+<tr class="codeline" data-linenumber="206"><td class="num" id="LN206">206</td><td class="line"> PROP_0,</td></tr>
+<tr class="codeline" data-linenumber="207"><td class="num" id="LN207">207</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="208"><td class="num" id="LN208">208</td><td class="line"> PROP_ROOT,</td></tr>
+<tr class="codeline" data-linenumber="209"><td class="num" id="LN209">209</td><td class="line"> PROP_VIRTUAL_ROOT,</td></tr>
+<tr class="codeline" data-linenumber="210"><td class="num" id="LN210">210</td><td class="line"> PROP_FILTER_MODE</td></tr>
+<tr class="codeline" data-linenumber="211"><td class="num" id="LN211">211</td><td class="line">};</td></tr>
+<tr class="codeline" data-linenumber="212"><td class="num" id="LN212">212</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="213"><td class="num" id="LN213">213</td><td class="line"><span class='comment'>/* Signals */</span></td></tr>
+<tr class="codeline" data-linenumber="214"><td class="num" id="LN214">214</td><td class="line"><span class='keyword'>enum</span></td></tr>
+<tr class="codeline" data-linenumber="215"><td class="num" id="LN215">215</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="216"><td class="num" id="LN216">216</td><td class="line"> BEGIN_LOADING,</td></tr>
+<tr class="codeline" data-linenumber="217"><td class="num" id="LN217">217</td><td class="line"> END_LOADING,</td></tr>
+<tr class="codeline" data-linenumber="218"><td class="num" id="LN218">218</td><td class="line"> ERROR,</td></tr>
+<tr class="codeline" data-linenumber="219"><td class="num" id="LN219">219</td><td class="line"> NO_TRASH,</td></tr>
+<tr class="codeline" data-linenumber="220"><td class="num" id="LN220">220</td><td class="line"> RENAME,</td></tr>
+<tr class="codeline" data-linenumber="221"><td class="num" id="LN221">221</td><td class="line"> BEGIN_REFRESH,</td></tr>
+<tr class="codeline" data-linenumber="222"><td class="num" id="LN222">222</td><td class="line"> END_REFRESH,</td></tr>
+<tr class="codeline" data-linenumber="223"><td class="num" id="LN223">223</td><td class="line"> UNLOAD,</td></tr>
+<tr class="codeline" data-linenumber="224"><td class="num" id="LN224">224</td><td class="line"> NUM_SIGNALS</td></tr>
+<tr class="codeline" data-linenumber="225"><td class="num" id="LN225">225</td><td class="line">};</td></tr>
+<tr class="codeline" data-linenumber="226"><td class="num" id="LN226">226</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="227"><td class="num" id="LN227">227</td><td class="line"><span class='keyword'>static</span> guint model_signals[NUM_SIGNALS] = { 0 };</td></tr>
+<tr class="codeline" data-linenumber="228"><td class="num" id="LN228">228</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="229"><td class="num" id="LN229">229</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="230"><td class="num" id="LN230">230</td><td class="line">cancel_mount_operation (PlumaFileBrowserStore *obj)</td></tr>
+<tr class="codeline" data-linenumber="231"><td class="num" id="LN231">231</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="232"><td class="num" id="LN232">232</td><td class="line"> <span class='keyword'>if</span> (obj-&gt;priv-&gt;mount_info != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="233"><td class="num" id="LN233">233</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="234"><td class="num" id="LN234">234</td><td class="line"> obj-&gt;priv-&gt;mount_info-&gt;model = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="235"><td class="num" id="LN235">235</td><td class="line"> g_cancellable_cancel (obj-&gt;priv-&gt;mount_info-&gt;cancellable);</td></tr>
+<tr class="codeline" data-linenumber="236"><td class="num" id="LN236">236</td><td class="line"> obj-&gt;priv-&gt;mount_info = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="237"><td class="num" id="LN237">237</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="238"><td class="num" id="LN238">238</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="239"><td class="num" id="LN239">239</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="240"><td class="num" id="LN240">240</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="241"><td class="num" id="LN241">241</td><td class="line">pluma_file_browser_store_finalize (GObject * object)</td></tr>
+<tr class="codeline" data-linenumber="242"><td class="num" id="LN242">242</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="243"><td class="num" id="LN243">243</td><td class="line"> PlumaFileBrowserStore *obj = <span class='macro'>PLUMA_FILE_BROWSER_STORE (object)<span class='macro_popup'>((((PlumaFileBrowserStore*) (void *) ((object)))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="244"><td class="num" id="LN244">244</td><td class="line"> GSList *item;</td></tr>
+<tr class="codeline" data-linenumber="245"><td class="num" id="LN245">245</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="246"><td class="num" id="LN246">246</td><td class="line"> <span class='comment'>/* Free all the nodes */</span></td></tr>
+<tr class="codeline" data-linenumber="247"><td class="num" id="LN247">247</td><td class="line"> file_browser_node_free (obj, obj-&gt;priv-&gt;root);</td></tr>
+<tr class="codeline" data-linenumber="248"><td class="num" id="LN248">248</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="249"><td class="num" id="LN249">249</td><td class="line"> <span class='comment'>/* Cancel any asynchronous operations */</span></td></tr>
+<tr class="codeline" data-linenumber="250"><td class="num" id="LN250">250</td><td class="line"> <span class='keyword'>for</span> (item = obj-&gt;priv-&gt;async_handles; item; item = item-&gt;next)</td></tr>
+<tr class="codeline" data-linenumber="251"><td class="num" id="LN251">251</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="252"><td class="num" id="LN252">252</td><td class="line"> AsyncData *data = (AsyncData *) (item-&gt;data);</td></tr>
+<tr class="codeline" data-linenumber="253"><td class="num" id="LN253">253</td><td class="line"> g_cancellable_cancel (data-&gt;cancellable);</td></tr>
+<tr class="codeline" data-linenumber="254"><td class="num" id="LN254">254</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="255"><td class="num" id="LN255">255</td><td class="line"> data-&gt;removed = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="256"><td class="num" id="LN256">256</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="257"><td class="num" id="LN257">257</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="258"><td class="num" id="LN258">258</td><td class="line"> cancel_mount_operation (obj);</td></tr>
+<tr class="codeline" data-linenumber="259"><td class="num" id="LN259">259</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="260"><td class="num" id="LN260">260</td><td class="line"> g_slist_free (obj-&gt;priv-&gt;async_handles);</td></tr>
+<tr class="codeline" data-linenumber="261"><td class="num" id="LN261">261</td><td class="line"> <span class='macro'>G_OBJECT_CLASS (pluma_file_browser_store_parent_class)<span class='macro_popup'>((((GObjectClass*) (void *) ((pluma_file_browser_store_parent_class<br>)))))</span></span>-&gt;finalize (object);</td></tr>
+<tr class="codeline" data-linenumber="262"><td class="num" id="LN262">262</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="263"><td class="num" id="LN263">263</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="264"><td class="num" id="LN264">264</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="265"><td class="num" id="LN265">265</td><td class="line">set_gvalue_from_node (GValue *value,</td></tr>
+<tr class="codeline" data-linenumber="266"><td class="num" id="LN266">266</td><td class="line"> FileBrowserNode *node)</td></tr>
+<tr class="codeline" data-linenumber="267"><td class="num" id="LN267">267</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="268"><td class="num" id="LN268">268</td><td class="line"> gchar * uri;</td></tr>
+<tr class="codeline" data-linenumber="269"><td class="num" id="LN269">269</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="270"><td class="num" id="LN270">270</td><td class="line"> <span class='keyword'>if</span> (node == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> || !node-&gt;file) {</td></tr>
+<tr class="codeline" data-linenumber="271"><td class="num" id="LN271">271</td><td class="line"> g_value_set_string (value, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="272"><td class="num" id="LN272">272</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="273"><td class="num" id="LN273">273</td><td class="line"> uri = g_file_get_uri (node-&gt;file);</td></tr>
+<tr class="codeline" data-linenumber="274"><td class="num" id="LN274">274</td><td class="line"> g_value_take_string (value, uri);</td></tr>
+<tr class="codeline" data-linenumber="275"><td class="num" id="LN275">275</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="276"><td class="num" id="LN276">276</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="277"><td class="num" id="LN277">277</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="278"><td class="num" id="LN278">278</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="279"><td class="num" id="LN279">279</td><td class="line">pluma_file_browser_store_get_property (GObject *object,</td></tr>
+<tr class="codeline" data-linenumber="280"><td class="num" id="LN280">280</td><td class="line"> guint prop_id,</td></tr>
+<tr class="codeline" data-linenumber="281"><td class="num" id="LN281">281</td><td class="line"> GValue *value,</td></tr>
+<tr class="codeline" data-linenumber="282"><td class="num" id="LN282">282</td><td class="line"> GParamSpec *pspec)</td></tr>
+<tr class="codeline" data-linenumber="283"><td class="num" id="LN283">283</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="284"><td class="num" id="LN284">284</td><td class="line"> PlumaFileBrowserStore *obj = <span class='macro'>PLUMA_FILE_BROWSER_STORE (object)<span class='macro_popup'>((((PlumaFileBrowserStore*) (void *) ((object)))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="285"><td class="num" id="LN285">285</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="286"><td class="num" id="LN286">286</td><td class="line"> <span class='keyword'>switch</span> (prop_id)</td></tr>
+<tr class="codeline" data-linenumber="287"><td class="num" id="LN287">287</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="288"><td class="num" id="LN288">288</td><td class="line"> <span class='keyword'>case</span> PROP_ROOT:</td></tr>
+<tr class="codeline" data-linenumber="289"><td class="num" id="LN289">289</td><td class="line"> set_gvalue_from_node (value, obj-&gt;priv-&gt;root);</td></tr>
+<tr class="codeline" data-linenumber="290"><td class="num" id="LN290">290</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="291"><td class="num" id="LN291">291</td><td class="line"> <span class='keyword'>case</span> PROP_VIRTUAL_ROOT:</td></tr>
+<tr class="codeline" data-linenumber="292"><td class="num" id="LN292">292</td><td class="line"> set_gvalue_from_node (value, obj-&gt;priv-&gt;virtual_root);</td></tr>
+<tr class="codeline" data-linenumber="293"><td class="num" id="LN293">293</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="294"><td class="num" id="LN294">294</td><td class="line"> <span class='keyword'>case</span> PROP_FILTER_MODE:</td></tr>
+<tr class="codeline" data-linenumber="295"><td class="num" id="LN295">295</td><td class="line"> g_value_set_flags (value, obj-&gt;priv-&gt;filter_mode);</td></tr>
+<tr class="codeline" data-linenumber="296"><td class="num" id="LN296">296</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="297"><td class="num" id="LN297">297</td><td class="line"> <span class='keyword'>default</span>:</td></tr>
+<tr class="codeline" data-linenumber="298"><td class="num" id="LN298">298</td><td class="line"> <span class='macro'>G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec)<span class='macro_popup'>do { GObject *_glib__object = (GObject*) ((object)); GParamSpec<br> *_glib__pspec = (GParamSpec*) ((pspec)); guint _glib__property_id<br> = ((prop_id)); g_warning ("%s:%d: invalid %s id %u for \"%s\" of type '%s' in '%s'"<br>, "pluma-file-browser-store.c", 298, ("property"), _glib__property_id<br>, _glib__pspec-&gt;name, g_type_name ((((((GTypeClass*) (((GTypeInstance<br>*) (_glib__pspec))-&gt;g_class))-&gt;g_type)))), (g_type_name<br> ((((((GTypeClass*) (((GTypeInstance*) (_glib__object))-&gt;g_class<br>))-&gt;g_type)))))); } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="299"><td class="num" id="LN299">299</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="300"><td class="num" id="LN300">300</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="301"><td class="num" id="LN301">301</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="302"><td class="num" id="LN302">302</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="303"><td class="num" id="LN303">303</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="304"><td class="num" id="LN304">304</td><td class="line">pluma_file_browser_store_set_property (GObject *object,</td></tr>
+<tr class="codeline" data-linenumber="305"><td class="num" id="LN305">305</td><td class="line"> guint prop_id,</td></tr>
+<tr class="codeline" data-linenumber="306"><td class="num" id="LN306">306</td><td class="line"> <span class='keyword'>const</span> GValue *value,</td></tr>
+<tr class="codeline" data-linenumber="307"><td class="num" id="LN307">307</td><td class="line"> GParamSpec *pspec)</td></tr>
+<tr class="codeline" data-linenumber="308"><td class="num" id="LN308">308</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="309"><td class="num" id="LN309">309</td><td class="line"> PlumaFileBrowserStore *obj = <span class='macro'>PLUMA_FILE_BROWSER_STORE (object)<span class='macro_popup'>((((PlumaFileBrowserStore*) (void *) ((object)))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="310"><td class="num" id="LN310">310</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="311"><td class="num" id="LN311">311</td><td class="line"> <span class='keyword'>switch</span> (prop_id)</td></tr>
+<tr class="codeline" data-linenumber="312"><td class="num" id="LN312">312</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="313"><td class="num" id="LN313">313</td><td class="line"> <span class='keyword'>case</span> PROP_FILTER_MODE:</td></tr>
+<tr class="codeline" data-linenumber="314"><td class="num" id="LN314">314</td><td class="line"> pluma_file_browser_store_set_filter_mode (obj,</td></tr>
+<tr class="codeline" data-linenumber="315"><td class="num" id="LN315">315</td><td class="line"> g_value_get_flags (value));</td></tr>
+<tr class="codeline" data-linenumber="316"><td class="num" id="LN316">316</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="317"><td class="num" id="LN317">317</td><td class="line"> <span class='keyword'>default</span>:</td></tr>
+<tr class="codeline" data-linenumber="318"><td class="num" id="LN318">318</td><td class="line"> <span class='macro'>G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec)<span class='macro_popup'>do { GObject *_glib__object = (GObject*) ((object)); GParamSpec<br> *_glib__pspec = (GParamSpec*) ((pspec)); guint _glib__property_id<br> = ((prop_id)); g_warning ("%s:%d: invalid %s id %u for \"%s\" of type '%s' in '%s'"<br>, "pluma-file-browser-store.c", 318, ("property"), _glib__property_id<br>, _glib__pspec-&gt;name, g_type_name ((((((GTypeClass*) (((GTypeInstance<br>*) (_glib__pspec))-&gt;g_class))-&gt;g_type)))), (g_type_name<br> ((((((GTypeClass*) (((GTypeInstance*) (_glib__object))-&gt;g_class<br>))-&gt;g_type)))))); } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="319"><td class="num" id="LN319">319</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="320"><td class="num" id="LN320">320</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="321"><td class="num" id="LN321">321</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="322"><td class="num" id="LN322">322</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="323"><td class="num" id="LN323">323</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="324"><td class="num" id="LN324">324</td><td class="line">pluma_file_browser_store_class_init (PlumaFileBrowserStoreClass * klass)</td></tr>
+<tr class="codeline" data-linenumber="325"><td class="num" id="LN325">325</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="326"><td class="num" id="LN326">326</td><td class="line"> GObjectClass *object_class = <span class='macro'>G_OBJECT_CLASS (klass)<span class='macro_popup'>((((GObjectClass*) (void *) ((klass)))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="327"><td class="num" id="LN327">327</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="328"><td class="num" id="LN328">328</td><td class="line"> object_class-&gt;finalize = pluma_file_browser_store_finalize;</td></tr>
+<tr class="codeline" data-linenumber="329"><td class="num" id="LN329">329</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="330"><td class="num" id="LN330">330</td><td class="line"> object_class-&gt;get_property = pluma_file_browser_store_get_property;</td></tr>
+<tr class="codeline" data-linenumber="331"><td class="num" id="LN331">331</td><td class="line"> object_class-&gt;set_property = pluma_file_browser_store_set_property;</td></tr>
+<tr class="codeline" data-linenumber="332"><td class="num" id="LN332">332</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="333"><td class="num" id="LN333">333</td><td class="line"> g_object_class_install_property (object_class, PROP_ROOT,</td></tr>
+<tr class="codeline" data-linenumber="334"><td class="num" id="LN334">334</td><td class="line"> g_param_spec_string (<span class='string_literal'>"root"</span>,</td></tr>
+<tr class="codeline" data-linenumber="335"><td class="num" id="LN335">335</td><td class="line"> <span class='string_literal'>"Root"</span>,</td></tr>
+<tr class="codeline" data-linenumber="336"><td class="num" id="LN336">336</td><td class="line"> <span class='string_literal'>"The root uri"</span>,</td></tr>
+<tr class="codeline" data-linenumber="337"><td class="num" id="LN337">337</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="338"><td class="num" id="LN338">338</td><td class="line"> G_PARAM_READABLE));</td></tr>
+<tr class="codeline" data-linenumber="339"><td class="num" id="LN339">339</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="340"><td class="num" id="LN340">340</td><td class="line"> g_object_class_install_property (object_class, PROP_VIRTUAL_ROOT,</td></tr>
+<tr class="codeline" data-linenumber="341"><td class="num" id="LN341">341</td><td class="line"> g_param_spec_string (<span class='string_literal'>"virtual-root"</span>,</td></tr>
+<tr class="codeline" data-linenumber="342"><td class="num" id="LN342">342</td><td class="line"> <span class='string_literal'>"Virtual Root"</span>,</td></tr>
+<tr class="codeline" data-linenumber="343"><td class="num" id="LN343">343</td><td class="line"> <span class='string_literal'>"The virtual root uri"</span>,</td></tr>
+<tr class="codeline" data-linenumber="344"><td class="num" id="LN344">344</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="345"><td class="num" id="LN345">345</td><td class="line"> G_PARAM_READABLE));</td></tr>
+<tr class="codeline" data-linenumber="346"><td class="num" id="LN346">346</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="347"><td class="num" id="LN347">347</td><td class="line"> g_object_class_install_property (object_class, PROP_FILTER_MODE,</td></tr>
+<tr class="codeline" data-linenumber="348"><td class="num" id="LN348">348</td><td class="line"> g_param_spec_flags (<span class='string_literal'>"filter-mode"</span>,</td></tr>
+<tr class="codeline" data-linenumber="349"><td class="num" id="LN349">349</td><td class="line"> <span class='string_literal'>"Filter Mode"</span>,</td></tr>
+<tr class="codeline" data-linenumber="350"><td class="num" id="LN350">350</td><td class="line"> <span class='string_literal'>"The filter mode"</span>,</td></tr>
+<tr class="codeline" data-linenumber="351"><td class="num" id="LN351">351</td><td class="line"> <span class='macro'>PLUMA_TYPE_FILE_BROWSER_STORE_FILTER_MODE<span class='macro_popup'>(pluma_file_browser_store_filter_mode_get_type())</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="352"><td class="num" id="LN352">352</td><td class="line"> pluma_file_browser_store_filter_mode_get_default (),</td></tr>
+<tr class="codeline" data-linenumber="353"><td class="num" id="LN353">353</td><td class="line"> G_PARAM_READWRITE));</td></tr>
+<tr class="codeline" data-linenumber="354"><td class="num" id="LN354">354</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="355"><td class="num" id="LN355">355</td><td class="line"> model_signals[BEGIN_LOADING] =</td></tr>
+<tr class="codeline" data-linenumber="356"><td class="num" id="LN356">356</td><td class="line"> g_signal_new (<span class='string_literal'>"begin-loading"</span>,</td></tr>
+<tr class="codeline" data-linenumber="357"><td class="num" id="LN357">357</td><td class="line"> <span class='macro'>G_OBJECT_CLASS_TYPE (object_class)<span class='macro_popup'>((((GTypeClass*) (object_class))-&gt;g_type))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="358"><td class="num" id="LN358">358</td><td class="line"> G_SIGNAL_RUN_LAST,</td></tr>
+<tr class="codeline" data-linenumber="359"><td class="num" id="LN359">359</td><td class="line"> <span class='macro'>G_STRUCT_OFFSET (PlumaFileBrowserStoreClass, begin_loading)<span class='macro_popup'>((glong) __builtin_offsetof(PlumaFileBrowserStoreClass, begin_loading<br>))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="360"><td class="num" id="LN360">360</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="361"><td class="num" id="LN361">361</td><td class="line"> <span class='macro'>G_TYPE_NONE<span class='macro_popup'>((GType) ((1) &lt;&lt; (2)))</span></span>, 1, <span class='macro'>GTK_TYPE_TREE_ITER<span class='macro_popup'>(gtk_tree_iter_get_type ())</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="362"><td class="num" id="LN362">362</td><td class="line"> model_signals[END_LOADING] =</td></tr>
+<tr class="codeline" data-linenumber="363"><td class="num" id="LN363">363</td><td class="line"> g_signal_new (<span class='string_literal'>"end-loading"</span>,</td></tr>
+<tr class="codeline" data-linenumber="364"><td class="num" id="LN364">364</td><td class="line"> <span class='macro'>G_OBJECT_CLASS_TYPE (object_class)<span class='macro_popup'>((((GTypeClass*) (object_class))-&gt;g_type))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="365"><td class="num" id="LN365">365</td><td class="line"> G_SIGNAL_RUN_LAST,</td></tr>
+<tr class="codeline" data-linenumber="366"><td class="num" id="LN366">366</td><td class="line"> <span class='macro'>G_STRUCT_OFFSET (PlumaFileBrowserStoreClass, end_loading)<span class='macro_popup'>((glong) __builtin_offsetof(PlumaFileBrowserStoreClass, end_loading<br>))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="367"><td class="num" id="LN367">367</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="368"><td class="num" id="LN368">368</td><td class="line"> <span class='macro'>G_TYPE_NONE<span class='macro_popup'>((GType) ((1) &lt;&lt; (2)))</span></span>, 1,</td></tr>
+<tr class="codeline" data-linenumber="369"><td class="num" id="LN369">369</td><td class="line"> <span class='macro'>GTK_TYPE_TREE_ITER<span class='macro_popup'>(gtk_tree_iter_get_type ())</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="370"><td class="num" id="LN370">370</td><td class="line"> model_signals[ERROR] =</td></tr>
+<tr class="codeline" data-linenumber="371"><td class="num" id="LN371">371</td><td class="line"> g_signal_new (<span class='string_literal'>"error"</span>, <span class='macro'>G_OBJECT_CLASS_TYPE (object_class)<span class='macro_popup'>((((GTypeClass*) (object_class))-&gt;g_type))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="372"><td class="num" id="LN372">372</td><td class="line"> G_SIGNAL_RUN_LAST,</td></tr>
+<tr class="codeline" data-linenumber="373"><td class="num" id="LN373">373</td><td class="line"> <span class='macro'>G_STRUCT_OFFSET (PlumaFileBrowserStoreClass, error)<span class='macro_popup'>((glong) __builtin_offsetof(PlumaFileBrowserStoreClass, error<br>))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="374"><td class="num" id="LN374">374</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="375"><td class="num" id="LN375">375</td><td class="line"> <span class='macro'>G_TYPE_NONE<span class='macro_popup'>((GType) ((1) &lt;&lt; (2)))</span></span>, 2, <span class='macro'>G_TYPE_UINT<span class='macro_popup'>((GType) ((7) &lt;&lt; (2)))</span></span>, <span class='macro'>G_TYPE_STRING<span class='macro_popup'>((GType) ((16) &lt;&lt; (2)))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="376"><td class="num" id="LN376">376</td><td class="line"> model_signals[NO_TRASH] =</td></tr>
+<tr class="codeline" data-linenumber="377"><td class="num" id="LN377">377</td><td class="line"> g_signal_new (<span class='string_literal'>"no-trash"</span>, <span class='macro'>G_OBJECT_CLASS_TYPE (object_class)<span class='macro_popup'>((((GTypeClass*) (object_class))-&gt;g_type))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="378"><td class="num" id="LN378">378</td><td class="line"> G_SIGNAL_RUN_LAST,</td></tr>
+<tr class="codeline" data-linenumber="379"><td class="num" id="LN379">379</td><td class="line"> <span class='macro'>G_STRUCT_OFFSET (PlumaFileBrowserStoreClass, no_trash)<span class='macro_popup'>((glong) __builtin_offsetof(PlumaFileBrowserStoreClass, no_trash<br>))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="380"><td class="num" id="LN380">380</td><td class="line"> g_signal_accumulator_true_handled, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="381"><td class="num" id="LN381">381</td><td class="line"> <span class='macro'>G_TYPE_BOOLEAN<span class='macro_popup'>((GType) ((5) &lt;&lt; (2)))</span></span>, 1, <span class='macro'>G_TYPE_POINTER<span class='macro_popup'>((GType) ((17) &lt;&lt; (2)))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="382"><td class="num" id="LN382">382</td><td class="line"> model_signals[RENAME] =</td></tr>
+<tr class="codeline" data-linenumber="383"><td class="num" id="LN383">383</td><td class="line"> g_signal_new (<span class='string_literal'>"rename"</span>,</td></tr>
+<tr class="codeline" data-linenumber="384"><td class="num" id="LN384">384</td><td class="line"> <span class='macro'>G_OBJECT_CLASS_TYPE (object_class)<span class='macro_popup'>((((GTypeClass*) (object_class))-&gt;g_type))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="385"><td class="num" id="LN385">385</td><td class="line"> G_SIGNAL_RUN_LAST,</td></tr>
+<tr class="codeline" data-linenumber="386"><td class="num" id="LN386">386</td><td class="line"> <span class='macro'>G_STRUCT_OFFSET (PlumaFileBrowserStoreClass, rename)<span class='macro_popup'>((glong) __builtin_offsetof(PlumaFileBrowserStoreClass, rename<br>))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="387"><td class="num" id="LN387">387</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="388"><td class="num" id="LN388">388</td><td class="line"> <span class='macro'>G_TYPE_NONE<span class='macro_popup'>((GType) ((1) &lt;&lt; (2)))</span></span>, 2,</td></tr>
+<tr class="codeline" data-linenumber="389"><td class="num" id="LN389">389</td><td class="line"> <span class='macro'>G_TYPE_STRING<span class='macro_popup'>((GType) ((16) &lt;&lt; (2)))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="390"><td class="num" id="LN390">390</td><td class="line"> <span class='macro'>G_TYPE_STRING<span class='macro_popup'>((GType) ((16) &lt;&lt; (2)))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="391"><td class="num" id="LN391">391</td><td class="line"> model_signals[BEGIN_REFRESH] =</td></tr>
+<tr class="codeline" data-linenumber="392"><td class="num" id="LN392">392</td><td class="line"> g_signal_new (<span class='string_literal'>"begin-refresh"</span>,</td></tr>
+<tr class="codeline" data-linenumber="393"><td class="num" id="LN393">393</td><td class="line"> <span class='macro'>G_OBJECT_CLASS_TYPE (object_class)<span class='macro_popup'>((((GTypeClass*) (object_class))-&gt;g_type))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="394"><td class="num" id="LN394">394</td><td class="line"> G_SIGNAL_RUN_LAST,</td></tr>
+<tr class="codeline" data-linenumber="395"><td class="num" id="LN395">395</td><td class="line"> <span class='macro'>G_STRUCT_OFFSET (PlumaFileBrowserStoreClass, begin_refresh)<span class='macro_popup'>((glong) __builtin_offsetof(PlumaFileBrowserStoreClass, begin_refresh<br>))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="396"><td class="num" id="LN396">396</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="397"><td class="num" id="LN397">397</td><td class="line"> <span class='macro'>G_TYPE_NONE<span class='macro_popup'>((GType) ((1) &lt;&lt; (2)))</span></span>, 0);</td></tr>
+<tr class="codeline" data-linenumber="398"><td class="num" id="LN398">398</td><td class="line"> model_signals[END_REFRESH] =</td></tr>
+<tr class="codeline" data-linenumber="399"><td class="num" id="LN399">399</td><td class="line"> g_signal_new (<span class='string_literal'>"end-refresh"</span>,</td></tr>
+<tr class="codeline" data-linenumber="400"><td class="num" id="LN400">400</td><td class="line"> <span class='macro'>G_OBJECT_CLASS_TYPE (object_class)<span class='macro_popup'>((((GTypeClass*) (object_class))-&gt;g_type))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="401"><td class="num" id="LN401">401</td><td class="line"> G_SIGNAL_RUN_LAST,</td></tr>
+<tr class="codeline" data-linenumber="402"><td class="num" id="LN402">402</td><td class="line"> <span class='macro'>G_STRUCT_OFFSET (PlumaFileBrowserStoreClass, end_refresh)<span class='macro_popup'>((glong) __builtin_offsetof(PlumaFileBrowserStoreClass, end_refresh<br>))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="403"><td class="num" id="LN403">403</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="404"><td class="num" id="LN404">404</td><td class="line"> <span class='macro'>G_TYPE_NONE<span class='macro_popup'>((GType) ((1) &lt;&lt; (2)))</span></span>, 0);</td></tr>
+<tr class="codeline" data-linenumber="405"><td class="num" id="LN405">405</td><td class="line"> model_signals[UNLOAD] =</td></tr>
+<tr class="codeline" data-linenumber="406"><td class="num" id="LN406">406</td><td class="line"> g_signal_new (<span class='string_literal'>"unload"</span>,</td></tr>
+<tr class="codeline" data-linenumber="407"><td class="num" id="LN407">407</td><td class="line"> <span class='macro'>G_OBJECT_CLASS_TYPE (object_class)<span class='macro_popup'>((((GTypeClass*) (object_class))-&gt;g_type))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="408"><td class="num" id="LN408">408</td><td class="line"> G_SIGNAL_RUN_LAST,</td></tr>
+<tr class="codeline" data-linenumber="409"><td class="num" id="LN409">409</td><td class="line"> <span class='macro'>G_STRUCT_OFFSET (PlumaFileBrowserStoreClass, unload)<span class='macro_popup'>((glong) __builtin_offsetof(PlumaFileBrowserStoreClass, unload<br>))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="410"><td class="num" id="LN410">410</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="411"><td class="num" id="LN411">411</td><td class="line"> <span class='macro'>G_TYPE_NONE<span class='macro_popup'>((GType) ((1) &lt;&lt; (2)))</span></span>, 1,</td></tr>
+<tr class="codeline" data-linenumber="412"><td class="num" id="LN412">412</td><td class="line"> <span class='macro'>G_TYPE_STRING<span class='macro_popup'>((GType) ((16) &lt;&lt; (2)))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="413"><td class="num" id="LN413">413</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="414"><td class="num" id="LN414">414</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="415"><td class="num" id="LN415">415</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="416"><td class="num" id="LN416">416</td><td class="line">pluma_file_browser_store_class_finalize (PlumaFileBrowserStoreClass *klass)</td></tr>
+<tr class="codeline" data-linenumber="417"><td class="num" id="LN417">417</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="418"><td class="num" id="LN418">418</td><td class="line"> <span class='comment'>/* dummy function - used by G_DEFINE_DYNAMIC_TYPE_EXTENDED */</span></td></tr>
+<tr class="codeline" data-linenumber="419"><td class="num" id="LN419">419</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="420"><td class="num" id="LN420">420</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="421"><td class="num" id="LN421">421</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="422"><td class="num" id="LN422">422</td><td class="line">pluma_file_browser_store_iface_init (GtkTreeModelIface * iface)</td></tr>
+<tr class="codeline" data-linenumber="423"><td class="num" id="LN423">423</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="424"><td class="num" id="LN424">424</td><td class="line"> iface-&gt;get_flags = pluma_file_browser_store_get_flags;</td></tr>
+<tr class="codeline" data-linenumber="425"><td class="num" id="LN425">425</td><td class="line"> iface-&gt;get_n_columns = pluma_file_browser_store_get_n_columns;</td></tr>
+<tr class="codeline" data-linenumber="426"><td class="num" id="LN426">426</td><td class="line"> iface-&gt;get_column_type = pluma_file_browser_store_get_column_type;</td></tr>
+<tr class="codeline" data-linenumber="427"><td class="num" id="LN427">427</td><td class="line"> iface-&gt;get_iter = pluma_file_browser_store_get_iter;</td></tr>
+<tr class="codeline" data-linenumber="428"><td class="num" id="LN428">428</td><td class="line"> iface-&gt;get_path = pluma_file_browser_store_get_path;</td></tr>
+<tr class="codeline" data-linenumber="429"><td class="num" id="LN429">429</td><td class="line"> iface-&gt;get_value = pluma_file_browser_store_get_value;</td></tr>
+<tr class="codeline" data-linenumber="430"><td class="num" id="LN430">430</td><td class="line"> iface-&gt;iter_next = pluma_file_browser_store_iter_next;</td></tr>
+<tr class="codeline" data-linenumber="431"><td class="num" id="LN431">431</td><td class="line"> iface-&gt;iter_children = pluma_file_browser_store_iter_children;</td></tr>
+<tr class="codeline" data-linenumber="432"><td class="num" id="LN432">432</td><td class="line"> iface-&gt;iter_has_child = pluma_file_browser_store_iter_has_child;</td></tr>
+<tr class="codeline" data-linenumber="433"><td class="num" id="LN433">433</td><td class="line"> iface-&gt;iter_n_children = pluma_file_browser_store_iter_n_children;</td></tr>
+<tr class="codeline" data-linenumber="434"><td class="num" id="LN434">434</td><td class="line"> iface-&gt;iter_nth_child = pluma_file_browser_store_iter_nth_child;</td></tr>
+<tr class="codeline" data-linenumber="435"><td class="num" id="LN435">435</td><td class="line"> iface-&gt;iter_parent = pluma_file_browser_store_iter_parent;</td></tr>
+<tr class="codeline" data-linenumber="436"><td class="num" id="LN436">436</td><td class="line"> iface-&gt;row_inserted = pluma_file_browser_store_row_inserted;</td></tr>
+<tr class="codeline" data-linenumber="437"><td class="num" id="LN437">437</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="438"><td class="num" id="LN438">438</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="439"><td class="num" id="LN439">439</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="440"><td class="num" id="LN440">440</td><td class="line">pluma_file_browser_store_drag_source_init (GtkTreeDragSourceIface * iface)</td></tr>
+<tr class="codeline" data-linenumber="441"><td class="num" id="LN441">441</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="442"><td class="num" id="LN442">442</td><td class="line"> iface-&gt;row_draggable = pluma_file_browser_store_row_draggable;</td></tr>
+<tr class="codeline" data-linenumber="443"><td class="num" id="LN443">443</td><td class="line"> iface-&gt;drag_data_delete = pluma_file_browser_store_drag_data_delete;</td></tr>
+<tr class="codeline" data-linenumber="444"><td class="num" id="LN444">444</td><td class="line"> iface-&gt;drag_data_get = pluma_file_browser_store_drag_data_get;</td></tr>
+<tr class="codeline" data-linenumber="445"><td class="num" id="LN445">445</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="446"><td class="num" id="LN446">446</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="447"><td class="num" id="LN447">447</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="448"><td class="num" id="LN448">448</td><td class="line">pluma_file_browser_store_init (PlumaFileBrowserStore * obj)</td></tr>
+<tr class="codeline" data-linenumber="449"><td class="num" id="LN449">449</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="450"><td class="num" id="LN450">450</td><td class="line"> obj-&gt;priv = pluma_file_browser_store_get_instance_private (obj);</td></tr>
+<tr class="codeline" data-linenumber="451"><td class="num" id="LN451">451</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="452"><td class="num" id="LN452">452</td><td class="line"> obj-&gt;priv-&gt;column_types[PLUMA_FILE_BROWSER_STORE_COLUMN_URI] =</td></tr>
+<tr class="codeline" data-linenumber="453"><td class="num" id="LN453">453</td><td class="line"> <span class='macro'>G_TYPE_STRING<span class='macro_popup'>((GType) ((16) &lt;&lt; (2)))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="454"><td class="num" id="LN454">454</td><td class="line"> obj-&gt;priv-&gt;column_types[PLUMA_FILE_BROWSER_STORE_COLUMN_NAME] =</td></tr>
+<tr class="codeline" data-linenumber="455"><td class="num" id="LN455">455</td><td class="line"> <span class='macro'>G_TYPE_STRING<span class='macro_popup'>((GType) ((16) &lt;&lt; (2)))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="456"><td class="num" id="LN456">456</td><td class="line"> obj-&gt;priv-&gt;column_types[PLUMA_FILE_BROWSER_STORE_COLUMN_FLAGS] =</td></tr>
+<tr class="codeline" data-linenumber="457"><td class="num" id="LN457">457</td><td class="line"> <span class='macro'>G_TYPE_UINT<span class='macro_popup'>((GType) ((7) &lt;&lt; (2)))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="458"><td class="num" id="LN458">458</td><td class="line"> obj-&gt;priv-&gt;column_types[PLUMA_FILE_BROWSER_STORE_COLUMN_ICON] =</td></tr>
+<tr class="codeline" data-linenumber="459"><td class="num" id="LN459">459</td><td class="line"> <span class='macro'>GDK_TYPE_PIXBUF<span class='macro_popup'>(gdk_pixbuf_get_type ())</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="460"><td class="num" id="LN460">460</td><td class="line"> obj-&gt;priv-&gt;column_types[PLUMA_FILE_BROWSER_STORE_COLUMN_EMBLEM] =</td></tr>
+<tr class="codeline" data-linenumber="461"><td class="num" id="LN461">461</td><td class="line"> <span class='macro'>GDK_TYPE_PIXBUF<span class='macro_popup'>(gdk_pixbuf_get_type ())</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="462"><td class="num" id="LN462">462</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="463"><td class="num" id="LN463">463</td><td class="line"> <span class='comment'>// Default filter mode is hiding the hidden files</span></td></tr>
+<tr class="codeline" data-linenumber="464"><td class="num" id="LN464">464</td><td class="line"> obj-&gt;priv-&gt;filter_mode = pluma_file_browser_store_filter_mode_get_default ();</td></tr>
+<tr class="codeline" data-linenumber="465"><td class="num" id="LN465">465</td><td class="line"> obj-&gt;priv-&gt;sort_func = model_sort_default;</td></tr>
+<tr class="codeline" data-linenumber="466"><td class="num" id="LN466">466</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="467"><td class="num" id="LN467">467</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="468"><td class="num" id="LN468">468</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="469"><td class="num" id="LN469">469</td><td class="line">node_has_parent (FileBrowserNode * node, FileBrowserNode * parent)</td></tr>
+<tr class="codeline" data-linenumber="470"><td class="num" id="LN470">470</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="471"><td class="num" id="LN471">471</td><td class="line"> <span class='keyword'>if</span> (node-&gt;parent == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="472"><td class="num" id="LN472">472</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="473"><td class="num" id="LN473">473</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="474"><td class="num" id="LN474">474</td><td class="line"> <span class='keyword'>if</span> (node-&gt;parent == parent)</td></tr>
+<tr class="codeline" data-linenumber="475"><td class="num" id="LN475">475</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="476"><td class="num" id="LN476">476</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="477"><td class="num" id="LN477">477</td><td class="line"> <span class='keyword'>return</span> node_has_parent (node-&gt;parent, parent);</td></tr>
+<tr class="codeline" data-linenumber="478"><td class="num" id="LN478">478</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="479"><td class="num" id="LN479">479</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="480"><td class="num" id="LN480">480</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="481"><td class="num" id="LN481">481</td><td class="line">node_in_tree (PlumaFileBrowserStore * model, FileBrowserNode * node)</td></tr>
+<tr class="codeline" data-linenumber="482"><td class="num" id="LN482">482</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="483"><td class="num" id="LN483">483</td><td class="line"> <span class='keyword'>return</span> node_has_parent (node, model-&gt;priv-&gt;virtual_root);</td></tr>
+<tr class="codeline" data-linenumber="484"><td class="num" id="LN484">484</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="485"><td class="num" id="LN485">485</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="486"><td class="num" id="LN486">486</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="487"><td class="num" id="LN487">487</td><td class="line">model_node_visibility (PlumaFileBrowserStore * model,</td></tr>
+<tr class="codeline" data-linenumber="488"><td class="num" id="LN488">488</td><td class="line"> FileBrowserNode * node)</td></tr>
+<tr class="codeline" data-linenumber="489"><td class="num" id="LN489">489</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="490"><td class="num" id="LN490">490</td><td class="line"> <span class='keyword'>if</span> (node == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="491"><td class="num" id="LN491">491</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="492"><td class="num" id="LN492">492</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="493"><td class="num" id="LN493">493</td><td class="line"> <span class='keyword'>if</span> (<span class='macro'>NODE_IS_DUMMY (node)<span class='macro_popup'>(((node)-&gt;flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_DUMMY<br>))</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="494"><td class="num" id="LN494">494</td><td class="line"> <span class='keyword'>return</span> !<span class='macro'>NODE_IS_HIDDEN (node)<span class='macro_popup'>(((node)-&gt;flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_HIDDEN<br>))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="495"><td class="num" id="LN495">495</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="496"><td class="num" id="LN496">496</td><td class="line"> <span class='keyword'>if</span> (node == model-&gt;priv-&gt;virtual_root)</td></tr>
+<tr class="codeline" data-linenumber="497"><td class="num" id="LN497">497</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="498"><td class="num" id="LN498">498</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="499"><td class="num" id="LN499">499</td><td class="line"> <span class='keyword'>if</span> (!node_has_parent (node, model-&gt;priv-&gt;virtual_root))</td></tr>
+<tr class="codeline" data-linenumber="500"><td class="num" id="LN500">500</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="501"><td class="num" id="LN501">501</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="502"><td class="num" id="LN502">502</td><td class="line"> <span class='keyword'>return</span> !<span class='macro'>NODE_IS_FILTERED (node)<span class='macro_popup'>(((node)-&gt;flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_FILTERED<br>))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="503"><td class="num" id="LN503">503</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="504"><td class="num" id="LN504">504</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="505"><td class="num" id="LN505">505</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="506"><td class="num" id="LN506">506</td><td class="line">model_node_inserted (PlumaFileBrowserStore * model,</td></tr>
+<tr class="codeline" data-linenumber="507"><td class="num" id="LN507">507</td><td class="line"> FileBrowserNode * node)</td></tr>
+<tr class="codeline" data-linenumber="508"><td class="num" id="LN508">508</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="509"><td class="num" id="LN509">509</td><td class="line"> <span class='keyword'>return</span> node == model-&gt;priv-&gt;virtual_root || (model_node_visibility (model, node) &amp;&amp; node-&gt;inserted);</td></tr>
+<tr class="codeline" data-linenumber="510"><td class="num" id="LN510">510</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="511"><td class="num" id="LN511">511</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="512"><td class="num" id="LN512">512</td><td class="line"><span class='comment'>/* Interface implementation */</span></td></tr>
+<tr class="codeline" data-linenumber="513"><td class="num" id="LN513">513</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="514"><td class="num" id="LN514">514</td><td class="line"><span class='keyword'>static</span> GtkTreeModelFlags</td></tr>
+<tr class="codeline" data-linenumber="515"><td class="num" id="LN515">515</td><td class="line">pluma_file_browser_store_get_flags (GtkTreeModel * tree_model)</td></tr>
+<tr class="codeline" data-linenumber="516"><td class="num" id="LN516">516</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="517"><td class="num" id="LN517">517</td><td class="line"> <span class='macro'>g_return_val_if_fail (PLUMA_IS_FILE_BROWSER_STORE (tree_model),<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_186<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((tree_model)); GType __t = ((pluma_file_browser_store_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_186 = 1; else _g_boolean_var_186 =<br> 0; _g_boolean_var_186; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "PLUMA_IS_FILE_BROWSER_STORE (tree_model)"<br>); return ((GtkTreeModelFlags) 0); } } while (0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="518"><td class="num" id="LN518">518</td><td class="line"> <span class='macro'>(GtkTreeModelFlags) 0)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_186<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((tree_model)); GType __t = ((pluma_file_browser_store_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_186 = 1; else _g_boolean_var_186 =<br> 0; _g_boolean_var_186; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "PLUMA_IS_FILE_BROWSER_STORE (tree_model)"<br>); return ((GtkTreeModelFlags) 0); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="519"><td class="num" id="LN519">519</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="520"><td class="num" id="LN520">520</td><td class="line"> <span class='keyword'>return</span> GTK_TREE_MODEL_ITERS_PERSIST;</td></tr>
+<tr class="codeline" data-linenumber="521"><td class="num" id="LN521">521</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="522"><td class="num" id="LN522">522</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="523"><td class="num" id="LN523">523</td><td class="line"><span class='keyword'>static</span> gint</td></tr>
+<tr class="codeline" data-linenumber="524"><td class="num" id="LN524">524</td><td class="line">pluma_file_browser_store_get_n_columns (GtkTreeModel * tree_model)</td></tr>
+<tr class="codeline" data-linenumber="525"><td class="num" id="LN525">525</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="526"><td class="num" id="LN526">526</td><td class="line"> <span class='macro'>g_return_val_if_fail (PLUMA_IS_FILE_BROWSER_STORE (tree_model), 0)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_187<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((tree_model)); GType __t = ((pluma_file_browser_store_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_187 = 1; else _g_boolean_var_187 =<br> 0; _g_boolean_var_187; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "PLUMA_IS_FILE_BROWSER_STORE (tree_model)"<br>); return (0); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="527"><td class="num" id="LN527">527</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="528"><td class="num" id="LN528">528</td><td class="line"> <span class='keyword'>return</span> PLUMA_FILE_BROWSER_STORE_COLUMN_NUM;</td></tr>
+<tr class="codeline" data-linenumber="529"><td class="num" id="LN529">529</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="530"><td class="num" id="LN530">530</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="531"><td class="num" id="LN531">531</td><td class="line"><span class='keyword'>static</span> GType</td></tr>
+<tr class="codeline" data-linenumber="532"><td class="num" id="LN532">532</td><td class="line">pluma_file_browser_store_get_column_type (GtkTreeModel * tree_model, gint idx)</td></tr>
+<tr class="codeline" data-linenumber="533"><td class="num" id="LN533">533</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="534"><td class="num" id="LN534">534</td><td class="line"> <span class='macro'>g_return_val_if_fail (PLUMA_IS_FILE_BROWSER_STORE (tree_model),<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_188<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((tree_model)); GType __t = ((pluma_file_browser_store_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_188 = 1; else _g_boolean_var_188 =<br> 0; _g_boolean_var_188; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "PLUMA_IS_FILE_BROWSER_STORE (tree_model)"<br>); return (((GType) ((0) &lt;&lt; (2)))); } } while (0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="535"><td class="num" id="LN535">535</td><td class="line"> <span class='macro'>G_TYPE_INVALID)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_188<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((tree_model)); GType __t = ((pluma_file_browser_store_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_188 = 1; else _g_boolean_var_188 =<br> 0; _g_boolean_var_188; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "PLUMA_IS_FILE_BROWSER_STORE (tree_model)"<br>); return (((GType) ((0) &lt;&lt; (2)))); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="536"><td class="num" id="LN536">536</td><td class="line"> <span class='macro'>g_return_val_if_fail (idx &lt; PLUMA_FILE_BROWSER_STORE_COLUMN_NUM &amp;&amp;<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_189<br>; if (idx &lt; PLUMA_FILE_BROWSER_STORE_COLUMN_NUM &amp;&amp;<br> idx &gt;= 0) _g_boolean_var_189 = 1; else _g_boolean_var_189<br> = 0; _g_boolean_var_189; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "idx &lt; PLUMA_FILE_BROWSER_STORE_COLUMN_NUM &amp;&amp; idx &gt;= 0"<br>); return (((GType) ((0) &lt;&lt; (2)))); } } while (0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="537"><td class="num" id="LN537">537</td><td class="line"> <span class='macro'>idx &gt;= 0, G_TYPE_INVALID)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_189<br>; if (idx &lt; PLUMA_FILE_BROWSER_STORE_COLUMN_NUM &amp;&amp;<br> idx &gt;= 0) _g_boolean_var_189 = 1; else _g_boolean_var_189<br> = 0; _g_boolean_var_189; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "idx &lt; PLUMA_FILE_BROWSER_STORE_COLUMN_NUM &amp;&amp; idx &gt;= 0"<br>); return (((GType) ((0) &lt;&lt; (2)))); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="538"><td class="num" id="LN538">538</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="539"><td class="num" id="LN539">539</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>PLUMA_FILE_BROWSER_STORE (tree_model)<span class='macro_popup'>((((PlumaFileBrowserStore*) (void *) ((tree_model)))))</span></span>-&gt;priv-&gt;column_types[idx];</td></tr>
+<tr class="codeline" data-linenumber="540"><td class="num" id="LN540">540</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="541"><td class="num" id="LN541">541</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="542"><td class="num" id="LN542">542</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="543"><td class="num" id="LN543">543</td><td class="line">pluma_file_browser_store_get_iter (GtkTreeModel * tree_model,</td></tr>
+<tr class="codeline" data-linenumber="544"><td class="num" id="LN544">544</td><td class="line"> GtkTreeIter * iter, GtkTreePath * path)</td></tr>
+<tr class="codeline" data-linenumber="545"><td class="num" id="LN545">545</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="546"><td class="num" id="LN546">546</td><td class="line"> gint * indices, depth, i;</td></tr>
+<tr class="codeline" data-linenumber="547"><td class="num" id="LN547">547</td><td class="line"> FileBrowserNode * node;</td></tr>
+<tr class="codeline" data-linenumber="548"><td class="num" id="LN548">548</td><td class="line"> PlumaFileBrowserStore * model;</td></tr>
+<tr class="codeline" data-linenumber="549"><td class="num" id="LN549">549</td><td class="line"> gint num;</td></tr>
+<tr class="codeline" data-linenumber="550"><td class="num" id="LN550">550</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="551"><td class="num" id="LN551">551</td><td class="line"> <span class='macro'>g_assert (PLUMA_IS_FILE_BROWSER_STORE (tree_model))<span class='macro_popup'>do { if (__builtin_expect (__extension__ ({ int _g_boolean_var_190<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((tree_model)); GType __t = ((pluma_file_browser_store_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_190 = 1; else _g_boolean_var_190 =<br> 0; _g_boolean_var_190; }), 1)) ; else g_assertion_message_expr<br> (((gchar*) 0), "pluma-file-browser-store.c", 551, ((const char<br>*) (__func__)), "PLUMA_IS_FILE_BROWSER_STORE (tree_model)"); }<br> while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="552"><td class="num" id="LN552">552</td><td class="line"> <span class='macro'>g_assert (path != NULL)<span class='macro_popup'>do { if (__builtin_expect (__extension__ ({ int _g_boolean_var_191<br>; if (path != ((void*)0)) _g_boolean_var_191 = 1; else _g_boolean_var_191<br> = 0; _g_boolean_var_191; }), 1)) ; else g_assertion_message_expr<br> (((gchar*) 0), "pluma-file-browser-store.c", 552, ((const char<br>*) (__func__)), "path != NULL"); } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="553"><td class="num" id="LN553">553</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="554"><td class="num" id="LN554">554</td><td class="line"> model = <span class='macro'>PLUMA_FILE_BROWSER_STORE (tree_model)<span class='macro_popup'>((((PlumaFileBrowserStore*) (void *) ((tree_model)))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="555"><td class="num" id="LN555">555</td><td class="line"> indices = gtk_tree_path_get_indices (path);</td></tr>
+<tr class="codeline" data-linenumber="556"><td class="num" id="LN556">556</td><td class="line"> depth = gtk_tree_path_get_depth (path);</td></tr>
+<tr class="codeline" data-linenumber="557"><td class="num" id="LN557">557</td><td class="line"> node = model-&gt;priv-&gt;virtual_root;</td></tr>
+<tr class="codeline" data-linenumber="558"><td class="num" id="LN558">558</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="559"><td class="num" id="LN559">559</td><td class="line"> <span class='keyword'>for</span> (i = 0; i &lt; depth; ++i) {</td></tr>
+<tr class="codeline" data-linenumber="560"><td class="num" id="LN560">560</td><td class="line"> GSList * item;</td></tr>
+<tr class="codeline" data-linenumber="561"><td class="num" id="LN561">561</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="562"><td class="num" id="LN562">562</td><td class="line"> <span class='keyword'>if</span> (node == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="563"><td class="num" id="LN563">563</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="564"><td class="num" id="LN564">564</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="565"><td class="num" id="LN565">565</td><td class="line"> num = 0;</td></tr>
+<tr class="codeline" data-linenumber="566"><td class="num" id="LN566">566</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="567"><td class="num" id="LN567">567</td><td class="line"> <span class='keyword'>if</span> (!<span class='macro'>NODE_IS_DIR (node)<span class='macro_popup'>(((node)-&gt;flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_DIRECTORY<br>))</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="568"><td class="num" id="LN568">568</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="569"><td class="num" id="LN569">569</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="570"><td class="num" id="LN570">570</td><td class="line"> <span class='keyword'>for</span> (item = <span class='macro'>FILE_BROWSER_NODE_DIR (node)<span class='macro_popup'>((FileBrowserNodeDir *)(node))</span></span>-&gt;children; item; item = item-&gt;next) {</td></tr>
+<tr class="codeline" data-linenumber="571"><td class="num" id="LN571">571</td><td class="line"> FileBrowserNode * child;</td></tr>
+<tr class="codeline" data-linenumber="572"><td class="num" id="LN572">572</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="573"><td class="num" id="LN573">573</td><td class="line"> child = (FileBrowserNode *) (item-&gt;data);</td></tr>
+<tr class="codeline" data-linenumber="574"><td class="num" id="LN574">574</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="575"><td class="num" id="LN575">575</td><td class="line"> <span class='keyword'>if</span> (model_node_inserted (model, child)) {</td></tr>
+<tr class="codeline" data-linenumber="576"><td class="num" id="LN576">576</td><td class="line"> <span class='keyword'>if</span> (num == indices[i]) {</td></tr>
+<tr class="codeline" data-linenumber="577"><td class="num" id="LN577">577</td><td class="line"> node = child;</td></tr>
+<tr class="codeline" data-linenumber="578"><td class="num" id="LN578">578</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="579"><td class="num" id="LN579">579</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="580"><td class="num" id="LN580">580</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="581"><td class="num" id="LN581">581</td><td class="line"> num++;</td></tr>
+<tr class="codeline" data-linenumber="582"><td class="num" id="LN582">582</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="583"><td class="num" id="LN583">583</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="584"><td class="num" id="LN584">584</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="585"><td class="num" id="LN585">585</td><td class="line"> <span class='keyword'>if</span> (item == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="586"><td class="num" id="LN586">586</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="587"><td class="num" id="LN587">587</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="588"><td class="num" id="LN588">588</td><td class="line"> node = (FileBrowserNode *) (item-&gt;data);</td></tr>
+<tr class="codeline" data-linenumber="589"><td class="num" id="LN589">589</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="590"><td class="num" id="LN590">590</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="591"><td class="num" id="LN591">591</td><td class="line"> iter-&gt;user_data = node;</td></tr>
+<tr class="codeline" data-linenumber="592"><td class="num" id="LN592">592</td><td class="line"> iter-&gt;user_data2 = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="593"><td class="num" id="LN593">593</td><td class="line"> iter-&gt;user_data3 = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="594"><td class="num" id="LN594">594</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="595"><td class="num" id="LN595">595</td><td class="line"> <span class='keyword'>return</span> node != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="596"><td class="num" id="LN596">596</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="597"><td class="num" id="LN597">597</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="598"><td class="num" id="LN598">598</td><td class="line"><span class='keyword'>static</span> GtkTreePath *</td></tr>
+<tr class="codeline" data-linenumber="599"><td class="num" id="LN599">599</td><td class="line">pluma_file_browser_store_get_path_real (PlumaFileBrowserStore * model,</td></tr>
+<tr class="codeline" data-linenumber="600"><td class="num" id="LN600">600</td><td class="line"> FileBrowserNode * node)</td></tr>
+<tr class="codeline" data-linenumber="601"><td class="num" id="LN601">601</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="602"><td class="num" id="LN602">602</td><td class="line"> GtkTreePath *path;</td></tr>
+<tr class="codeline" data-linenumber="603"><td class="num" id="LN603">603</td><td class="line"> gint num = 0;</td></tr>
+<tr class="codeline" data-linenumber="604"><td class="num" id="LN604">604</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="605"><td class="num" id="LN605">605</td><td class="line"> path = gtk_tree_path_new ();</td></tr>
+<tr class="codeline" data-linenumber="606"><td class="num" id="LN606">606</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="607"><td class="num" id="LN607">607</td><td class="line"> <span class='keyword'>while</span> (node != model-&gt;priv-&gt;virtual_root) {</td></tr>
+<tr class="codeline" data-linenumber="608"><td class="num" id="LN608">608</td><td class="line"> GSList *item;</td></tr>
+<tr class="codeline" data-linenumber="609"><td class="num" id="LN609">609</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="610"><td class="num" id="LN610">610</td><td class="line"> <span class='keyword'>if</span> (node-&gt;parent == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="611"><td class="num" id="LN611">611</td><td class="line"> gtk_tree_path_free (path);</td></tr>
+<tr class="codeline" data-linenumber="612"><td class="num" id="LN612">612</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="613"><td class="num" id="LN613">613</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="614"><td class="num" id="LN614">614</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="615"><td class="num" id="LN615">615</td><td class="line"> num = 0;</td></tr>
+<tr class="codeline" data-linenumber="616"><td class="num" id="LN616">616</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="617"><td class="num" id="LN617">617</td><td class="line"> <span class='keyword'>for</span> (item = <span class='macro'>FILE_BROWSER_NODE_DIR (node-&gt;parent)<span class='macro_popup'>((FileBrowserNodeDir *)(node-&gt;parent))</span></span>-&gt;children; item; item = item-&gt;next) {</td></tr>
+<tr class="codeline" data-linenumber="618"><td class="num" id="LN618">618</td><td class="line"> FileBrowserNode *check;</td></tr>
+<tr class="codeline" data-linenumber="619"><td class="num" id="LN619">619</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="620"><td class="num" id="LN620">620</td><td class="line"> check = (FileBrowserNode *) (item-&gt;data);</td></tr>
+<tr class="codeline" data-linenumber="621"><td class="num" id="LN621">621</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="622"><td class="num" id="LN622">622</td><td class="line"> <span class='keyword'>if</span> (model_node_visibility (model, check) &amp;&amp; (check == node || check-&gt;inserted)) {</td></tr>
+<tr class="codeline" data-linenumber="623"><td class="num" id="LN623">623</td><td class="line"> <span class='keyword'>if</span> (check == node) {</td></tr>
+<tr class="codeline" data-linenumber="624"><td class="num" id="LN624">624</td><td class="line"> gtk_tree_path_prepend_index (path,</td></tr>
+<tr class="codeline" data-linenumber="625"><td class="num" id="LN625">625</td><td class="line"> num);</td></tr>
+<tr class="codeline" data-linenumber="626"><td class="num" id="LN626">626</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="627"><td class="num" id="LN627">627</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="628"><td class="num" id="LN628">628</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="629"><td class="num" id="LN629">629</td><td class="line"> ++num;</td></tr>
+<tr class="codeline" data-linenumber="630"><td class="num" id="LN630">630</td><td class="line"> } <span class='keyword'>else</span> <span class='keyword'>if</span> (check == node) {</td></tr>
+<tr class="codeline" data-linenumber="631"><td class="num" id="LN631">631</td><td class="line"> <span class='keyword'>if</span> (<span class='macro'>NODE_IS_DUMMY (node)<span class='macro_popup'>(((node)-&gt;flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_DUMMY<br>))</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="632"><td class="num" id="LN632">632</td><td class="line"> g_warning (<span class='string_literal'>"Dummy not visible???"</span>);</td></tr>
+<tr class="codeline" data-linenumber="633"><td class="num" id="LN633">633</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="634"><td class="num" id="LN634">634</td><td class="line"> gtk_tree_path_free (path);</td></tr>
+<tr class="codeline" data-linenumber="635"><td class="num" id="LN635">635</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="636"><td class="num" id="LN636">636</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="637"><td class="num" id="LN637">637</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="638"><td class="num" id="LN638">638</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="639"><td class="num" id="LN639">639</td><td class="line"> node = node-&gt;parent;</td></tr>
+<tr class="codeline" data-linenumber="640"><td class="num" id="LN640">640</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="641"><td class="num" id="LN641">641</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="642"><td class="num" id="LN642">642</td><td class="line"> <span class='keyword'>return</span> path;</td></tr>
+<tr class="codeline" data-linenumber="643"><td class="num" id="LN643">643</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="644"><td class="num" id="LN644">644</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="645"><td class="num" id="LN645">645</td><td class="line"><span class='keyword'>static</span> GtkTreePath *</td></tr>
+<tr class="codeline" data-linenumber="646"><td class="num" id="LN646">646</td><td class="line">pluma_file_browser_store_get_path (GtkTreeModel * tree_model,</td></tr>
+<tr class="codeline" data-linenumber="647"><td class="num" id="LN647">647</td><td class="line"> GtkTreeIter * iter)</td></tr>
+<tr class="codeline" data-linenumber="648"><td class="num" id="LN648">648</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="649"><td class="num" id="LN649">649</td><td class="line"> <span class='macro'>g_return_val_if_fail (PLUMA_IS_FILE_BROWSER_STORE (tree_model), NULL)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_192<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((tree_model)); GType __t = ((pluma_file_browser_store_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_192 = 1; else _g_boolean_var_192 =<br> 0; _g_boolean_var_192; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "PLUMA_IS_FILE_BROWSER_STORE (tree_model)"<br>); return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="650"><td class="num" id="LN650">650</td><td class="line"> <span class='macro'>g_return_val_if_fail (iter != NULL, NULL)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_193<br>; if (iter != ((void*)0)) _g_boolean_var_193 = 1; else _g_boolean_var_193<br> = 0; _g_boolean_var_193; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "iter != NULL"); return<br> (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="651"><td class="num" id="LN651">651</td><td class="line"> <span class='macro'>g_return_val_if_fail (iter-&gt;user_data != NULL, NULL)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_194<br>; if (iter-&gt;user_data != ((void*)0)) _g_boolean_var_194 = 1<br>; else _g_boolean_var_194 = 0; _g_boolean_var_194; }), 1))) {<br> } else { g_return_if_fail_warning (((gchar*) 0), ((const char<br>*) (__func__)), "iter-&gt;user_data != NULL"); return (((void<br>*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="652"><td class="num" id="LN652">652</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="653"><td class="num" id="LN653">653</td><td class="line"> <span class='keyword'>return</span> pluma_file_browser_store_get_path_real (<span class='macro'>PLUMA_FILE_BROWSER_STORE (tree_model)<span class='macro_popup'>((((PlumaFileBrowserStore*) (void *) ((tree_model)))))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="654"><td class="num" id="LN654">654</td><td class="line"> (FileBrowserNode *) (iter-&gt;user_data));</td></tr>
+<tr class="codeline" data-linenumber="655"><td class="num" id="LN655">655</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="656"><td class="num" id="LN656">656</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="657"><td class="num" id="LN657">657</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="658"><td class="num" id="LN658">658</td><td class="line">pluma_file_browser_store_get_value (GtkTreeModel * tree_model,</td></tr>
+<tr class="codeline" data-linenumber="659"><td class="num" id="LN659">659</td><td class="line"> GtkTreeIter * iter,</td></tr>
+<tr class="codeline" data-linenumber="660"><td class="num" id="LN660">660</td><td class="line"> gint column,</td></tr>
+<tr class="codeline" data-linenumber="661"><td class="num" id="LN661">661</td><td class="line"> GValue * value)</td></tr>
+<tr class="codeline" data-linenumber="662"><td class="num" id="LN662">662</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="663"><td class="num" id="LN663">663</td><td class="line"> FileBrowserNode *node;</td></tr>
+<tr class="codeline" data-linenumber="664"><td class="num" id="LN664">664</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="665"><td class="num" id="LN665">665</td><td class="line"> <span class='macro'>g_return_if_fail (PLUMA_IS_FILE_BROWSER_STORE (tree_model))<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_195<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((tree_model)); GType __t = ((pluma_file_browser_store_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_195 = 1; else _g_boolean_var_195 =<br> 0; _g_boolean_var_195; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "PLUMA_IS_FILE_BROWSER_STORE (tree_model)"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="666"><td class="num" id="LN666">666</td><td class="line"> <span class='macro'>g_return_if_fail (iter != NULL)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_196<br>; if (iter != ((void*)0)) _g_boolean_var_196 = 1; else _g_boolean_var_196<br> = 0; _g_boolean_var_196; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "iter != NULL"); return<br>; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="667"><td class="num" id="LN667">667</td><td class="line"> <span class='macro'>g_return_if_fail (iter-&gt;user_data != NULL)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_197<br>; if (iter-&gt;user_data != ((void*)0)) _g_boolean_var_197 = 1<br>; else _g_boolean_var_197 = 0; _g_boolean_var_197; }), 1))) {<br> } else { g_return_if_fail_warning (((gchar*) 0), ((const char<br>*) (__func__)), "iter-&gt;user_data != NULL"); return; } } while<br> (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="668"><td class="num" id="LN668">668</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="669"><td class="num" id="LN669">669</td><td class="line"> node = (FileBrowserNode *) (iter-&gt;user_data);</td></tr>
+<tr class="codeline" data-linenumber="670"><td class="num" id="LN670">670</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="671"><td class="num" id="LN671">671</td><td class="line"> g_value_init (value, <span class='macro'>PLUMA_FILE_BROWSER_STORE (tree_model)<span class='macro_popup'>((((PlumaFileBrowserStore*) (void *) ((tree_model)))))</span></span>-&gt;priv-&gt;column_types[column]);</td></tr>
+<tr class="codeline" data-linenumber="672"><td class="num" id="LN672">672</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="673"><td class="num" id="LN673">673</td><td class="line"> <span class='keyword'>switch</span> (column) {</td></tr>
+<tr class="codeline" data-linenumber="674"><td class="num" id="LN674">674</td><td class="line"> <span class='keyword'>case</span> PLUMA_FILE_BROWSER_STORE_COLUMN_URI:</td></tr>
+<tr class="codeline" data-linenumber="675"><td class="num" id="LN675">675</td><td class="line"> set_gvalue_from_node (value, node);</td></tr>
+<tr class="codeline" data-linenumber="676"><td class="num" id="LN676">676</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="677"><td class="num" id="LN677">677</td><td class="line"> <span class='keyword'>case</span> PLUMA_FILE_BROWSER_STORE_COLUMN_NAME:</td></tr>
+<tr class="codeline" data-linenumber="678"><td class="num" id="LN678">678</td><td class="line"> g_value_set_string (value, node-&gt;name);</td></tr>
+<tr class="codeline" data-linenumber="679"><td class="num" id="LN679">679</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="680"><td class="num" id="LN680">680</td><td class="line"> <span class='keyword'>case</span> PLUMA_FILE_BROWSER_STORE_COLUMN_FLAGS:</td></tr>
+<tr class="codeline" data-linenumber="681"><td class="num" id="LN681">681</td><td class="line"> g_value_set_uint (value, node-&gt;flags);</td></tr>
+<tr class="codeline" data-linenumber="682"><td class="num" id="LN682">682</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="683"><td class="num" id="LN683">683</td><td class="line"> <span class='keyword'>case</span> PLUMA_FILE_BROWSER_STORE_COLUMN_ICON:</td></tr>
+<tr class="codeline" data-linenumber="684"><td class="num" id="LN684">684</td><td class="line"> g_value_set_object (value, node-&gt;icon);</td></tr>
+<tr class="codeline" data-linenumber="685"><td class="num" id="LN685">685</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="686"><td class="num" id="LN686">686</td><td class="line"> <span class='keyword'>case</span> PLUMA_FILE_BROWSER_STORE_COLUMN_EMBLEM:</td></tr>
+<tr class="codeline" data-linenumber="687"><td class="num" id="LN687">687</td><td class="line"> g_value_set_object (value, node-&gt;emblem);</td></tr>
+<tr class="codeline" data-linenumber="688"><td class="num" id="LN688">688</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="689"><td class="num" id="LN689">689</td><td class="line"> <span class='keyword'>default</span>:</td></tr>
+<tr class="codeline" data-linenumber="690"><td class="num" id="LN690">690</td><td class="line"> <span class='macro'>g_return_if_reached ()<span class='macro_popup'>do { g_log (((gchar*) 0), G_LOG_LEVEL_CRITICAL, "file %s: line %d (%s): should not be reached"<br>, "pluma-file-browser-store.c", 690, ((const char*) (__func__<br>))); return; } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="691"><td class="num" id="LN691">691</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="692"><td class="num" id="LN692">692</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="693"><td class="num" id="LN693">693</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="694"><td class="num" id="LN694">694</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="695"><td class="num" id="LN695">695</td><td class="line">pluma_file_browser_store_iter_next (GtkTreeModel * tree_model,</td></tr>
+<tr class="codeline" data-linenumber="696"><td class="num" id="LN696">696</td><td class="line"> GtkTreeIter * iter)</td></tr>
+<tr class="codeline" data-linenumber="697"><td class="num" id="LN697">697</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="698"><td class="num" id="LN698">698</td><td class="line"> PlumaFileBrowserStore * model;</td></tr>
+<tr class="codeline" data-linenumber="699"><td class="num" id="LN699">699</td><td class="line"> FileBrowserNode * node;</td></tr>
+<tr class="codeline" data-linenumber="700"><td class="num" id="LN700">700</td><td class="line"> GSList * item;</td></tr>
+<tr class="codeline" data-linenumber="701"><td class="num" id="LN701">701</td><td class="line"> GSList * first;</td></tr>
+<tr class="codeline" data-linenumber="702"><td class="num" id="LN702">702</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="703"><td class="num" id="LN703">703</td><td class="line"> <span class='macro'>g_return_val_if_fail (PLUMA_IS_FILE_BROWSER_STORE (tree_model),<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_198<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((tree_model)); GType __t = ((pluma_file_browser_store_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_198 = 1; else _g_boolean_var_198 =<br> 0; _g_boolean_var_198; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "PLUMA_IS_FILE_BROWSER_STORE (tree_model)"<br>); return ((0)); } } while (0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="704"><td class="num" id="LN704">704</td><td class="line"> <span class='macro'>FALSE)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_198<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((tree_model)); GType __t = ((pluma_file_browser_store_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_198 = 1; else _g_boolean_var_198 =<br> 0; _g_boolean_var_198; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "PLUMA_IS_FILE_BROWSER_STORE (tree_model)"<br>); return ((0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="705"><td class="num" id="LN705">705</td><td class="line"> <span class='macro'>g_return_val_if_fail (iter != NULL, FALSE)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_199<br>; if (iter != ((void*)0)) _g_boolean_var_199 = 1; else _g_boolean_var_199<br> = 0; _g_boolean_var_199; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "iter != NULL"); return<br> ((0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="706"><td class="num" id="LN706">706</td><td class="line"> <span class='macro'>g_return_val_if_fail (iter-&gt;user_data != NULL, FALSE)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_200<br>; if (iter-&gt;user_data != ((void*)0)) _g_boolean_var_200 = 1<br>; else _g_boolean_var_200 = 0; _g_boolean_var_200; }), 1))) {<br> } else { g_return_if_fail_warning (((gchar*) 0), ((const char<br>*) (__func__)), "iter-&gt;user_data != NULL"); return ((0)); }<br> } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="707"><td class="num" id="LN707">707</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="708"><td class="num" id="LN708">708</td><td class="line"> model = <span class='macro'>PLUMA_FILE_BROWSER_STORE (tree_model)<span class='macro_popup'>((((PlumaFileBrowserStore*) (void *) ((tree_model)))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="709"><td class="num" id="LN709">709</td><td class="line"> node = (FileBrowserNode *) (iter-&gt;user_data);</td></tr>
+<tr class="codeline" data-linenumber="710"><td class="num" id="LN710">710</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="711"><td class="num" id="LN711">711</td><td class="line"> <span class='keyword'>if</span> (node-&gt;parent == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="712"><td class="num" id="LN712">712</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="713"><td class="num" id="LN713">713</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="714"><td class="num" id="LN714">714</td><td class="line"> first = <span class='macro'>g_slist_next (g_slist_find (FILE_BROWSER_NODE_DIR (node-&gt;parent)-&gt;children, node))<span class='macro_popup'>((g_slist_find (((FileBrowserNodeDir *)(node-&gt;parent))-&gt;<br>children, node)) ? (((GSList *)(g_slist_find (((FileBrowserNodeDir<br> *)(node-&gt;parent))-&gt;children, node)))-&gt;next) : ((void<br>*)0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="715"><td class="num" id="LN715">715</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="716"><td class="num" id="LN716">716</td><td class="line"> <span class='keyword'>for</span> (item = first; item; item = item-&gt;next) {</td></tr>
+<tr class="codeline" data-linenumber="717"><td class="num" id="LN717">717</td><td class="line"> <span class='keyword'>if</span> (model_node_inserted (model, (FileBrowserNode *) (item-&gt;data))) {</td></tr>
+<tr class="codeline" data-linenumber="718"><td class="num" id="LN718">718</td><td class="line"> iter-&gt;user_data = item-&gt;data;</td></tr>
+<tr class="codeline" data-linenumber="719"><td class="num" id="LN719">719</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="720"><td class="num" id="LN720">720</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="721"><td class="num" id="LN721">721</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="722"><td class="num" id="LN722">722</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="723"><td class="num" id="LN723">723</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="724"><td class="num" id="LN724">724</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="725"><td class="num" id="LN725">725</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="726"><td class="num" id="LN726">726</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="727"><td class="num" id="LN727">727</td><td class="line">pluma_file_browser_store_iter_children (GtkTreeModel * tree_model,</td></tr>
+<tr class="codeline" data-linenumber="728"><td class="num" id="LN728">728</td><td class="line"> GtkTreeIter * iter,</td></tr>
+<tr class="codeline" data-linenumber="729"><td class="num" id="LN729">729</td><td class="line"> GtkTreeIter * parent)</td></tr>
+<tr class="codeline" data-linenumber="730"><td class="num" id="LN730">730</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="731"><td class="num" id="LN731">731</td><td class="line"> FileBrowserNode * node;</td></tr>
+<tr class="codeline" data-linenumber="732"><td class="num" id="LN732">732</td><td class="line"> PlumaFileBrowserStore * model;</td></tr>
+<tr class="codeline" data-linenumber="733"><td class="num" id="LN733">733</td><td class="line"> GSList * item;</td></tr>
+<tr class="codeline" data-linenumber="734"><td class="num" id="LN734">734</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="735"><td class="num" id="LN735">735</td><td class="line"> <span class='macro'>g_return_val_if_fail (PLUMA_IS_FILE_BROWSER_STORE (tree_model),<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_201<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((tree_model)); GType __t = ((pluma_file_browser_store_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_201 = 1; else _g_boolean_var_201 =<br> 0; _g_boolean_var_201; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "PLUMA_IS_FILE_BROWSER_STORE (tree_model)"<br>); return ((0)); } } while (0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="736"><td class="num" id="LN736">736</td><td class="line"> <span class='macro'>FALSE)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_201<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((tree_model)); GType __t = ((pluma_file_browser_store_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_201 = 1; else _g_boolean_var_201 =<br> 0; _g_boolean_var_201; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "PLUMA_IS_FILE_BROWSER_STORE (tree_model)"<br>); return ((0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="737"><td class="num" id="LN737">737</td><td class="line"> <span class='macro'>g_return_val_if_fail (parent == NULL<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_202<br>; if (parent == ((void*)0) || parent-&gt;user_data != ((void*<br>)0)) _g_boolean_var_202 = 1; else _g_boolean_var_202 = 0; _g_boolean_var_202<br>; }), 1))) { } else { g_return_if_fail_warning (((gchar*) 0),<br> ((const char*) (__func__)), "parent == NULL || parent-&gt;user_data != NULL"<br>); return ((0)); } } while (0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="738"><td class="num" id="LN738">738</td><td class="line"> <span class='macro'>|| parent-&gt;user_data != NULL, FALSE)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_202<br>; if (parent == ((void*)0) || parent-&gt;user_data != ((void*<br>)0)) _g_boolean_var_202 = 1; else _g_boolean_var_202 = 0; _g_boolean_var_202<br>; }), 1))) { } else { g_return_if_fail_warning (((gchar*) 0),<br> ((const char*) (__func__)), "parent == NULL || parent-&gt;user_data != NULL"<br>); return ((0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="739"><td class="num" id="LN739">739</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="740"><td class="num" id="LN740">740</td><td class="line"> model = <span class='macro'>PLUMA_FILE_BROWSER_STORE (tree_model)<span class='macro_popup'>((((PlumaFileBrowserStore*) (void *) ((tree_model)))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="741"><td class="num" id="LN741">741</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="742"><td class="num" id="LN742">742</td><td class="line"> <span class='keyword'>if</span> (parent == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="743"><td class="num" id="LN743">743</td><td class="line"> node = model-&gt;priv-&gt;virtual_root;</td></tr>
+<tr class="codeline" data-linenumber="744"><td class="num" id="LN744">744</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="745"><td class="num" id="LN745">745</td><td class="line"> node = (FileBrowserNode *) (parent-&gt;user_data);</td></tr>
+<tr class="codeline" data-linenumber="746"><td class="num" id="LN746">746</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="747"><td class="num" id="LN747">747</td><td class="line"> <span class='keyword'>if</span> (node == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="748"><td class="num" id="LN748">748</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="749"><td class="num" id="LN749">749</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="750"><td class="num" id="LN750">750</td><td class="line"> <span class='keyword'>if</span> (!<span class='macro'>NODE_IS_DIR (node)<span class='macro_popup'>(((node)-&gt;flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_DIRECTORY<br>))</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="751"><td class="num" id="LN751">751</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="752"><td class="num" id="LN752">752</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="753"><td class="num" id="LN753">753</td><td class="line"> <span class='keyword'>for</span> (item = <span class='macro'>FILE_BROWSER_NODE_DIR (node)<span class='macro_popup'>((FileBrowserNodeDir *)(node))</span></span>-&gt;children; item; item = item-&gt;next) {</td></tr>
+<tr class="codeline" data-linenumber="754"><td class="num" id="LN754">754</td><td class="line"> <span class='keyword'>if</span> (model_node_inserted (model, (FileBrowserNode *) (item-&gt;data))) {</td></tr>
+<tr class="codeline" data-linenumber="755"><td class="num" id="LN755">755</td><td class="line"> iter-&gt;user_data = item-&gt;data;</td></tr>
+<tr class="codeline" data-linenumber="756"><td class="num" id="LN756">756</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="757"><td class="num" id="LN757">757</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="758"><td class="num" id="LN758">758</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="759"><td class="num" id="LN759">759</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="760"><td class="num" id="LN760">760</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="761"><td class="num" id="LN761">761</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="762"><td class="num" id="LN762">762</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="763"><td class="num" id="LN763">763</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="764"><td class="num" id="LN764">764</td><td class="line">filter_tree_model_iter_has_child_real (PlumaFileBrowserStore * model,</td></tr>
+<tr class="codeline" data-linenumber="765"><td class="num" id="LN765">765</td><td class="line"> FileBrowserNode * node)</td></tr>
+<tr class="codeline" data-linenumber="766"><td class="num" id="LN766">766</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="767"><td class="num" id="LN767">767</td><td class="line"> GSList *item;</td></tr>
+<tr class="codeline" data-linenumber="768"><td class="num" id="LN768">768</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="769"><td class="num" id="LN769">769</td><td class="line"> <span class='keyword'>if</span> (!<span class='macro'>NODE_IS_DIR (node)<span class='macro_popup'>(((node)-&gt;flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_DIRECTORY<br>))</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="770"><td class="num" id="LN770">770</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="771"><td class="num" id="LN771">771</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="772"><td class="num" id="LN772">772</td><td class="line"> <span class='keyword'>for</span> (item = <span class='macro'>FILE_BROWSER_NODE_DIR (node)<span class='macro_popup'>((FileBrowserNodeDir *)(node))</span></span>-&gt;children; item; item = item-&gt;next) {</td></tr>
+<tr class="codeline" data-linenumber="773"><td class="num" id="LN773">773</td><td class="line"> <span class='keyword'>if</span> (model_node_inserted (model, (FileBrowserNode *) (item-&gt;data)))</td></tr>
+<tr class="codeline" data-linenumber="774"><td class="num" id="LN774">774</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="775"><td class="num" id="LN775">775</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="776"><td class="num" id="LN776">776</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="777"><td class="num" id="LN777">777</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="778"><td class="num" id="LN778">778</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="779"><td class="num" id="LN779">779</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="780"><td class="num" id="LN780">780</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="781"><td class="num" id="LN781">781</td><td class="line">pluma_file_browser_store_iter_has_child (GtkTreeModel * tree_model,</td></tr>
+<tr class="codeline" data-linenumber="782"><td class="num" id="LN782">782</td><td class="line"> GtkTreeIter * iter)</td></tr>
+<tr class="codeline" data-linenumber="783"><td class="num" id="LN783">783</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="784"><td class="num" id="LN784">784</td><td class="line"> FileBrowserNode *node;</td></tr>
+<tr class="codeline" data-linenumber="785"><td class="num" id="LN785">785</td><td class="line"> PlumaFileBrowserStore *model;</td></tr>
+<tr class="codeline" data-linenumber="786"><td class="num" id="LN786">786</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="787"><td class="num" id="LN787">787</td><td class="line"> <span class='macro'>g_return_val_if_fail (PLUMA_IS_FILE_BROWSER_STORE (tree_model),<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_203<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((tree_model)); GType __t = ((pluma_file_browser_store_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_203 = 1; else _g_boolean_var_203 =<br> 0; _g_boolean_var_203; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "PLUMA_IS_FILE_BROWSER_STORE (tree_model)"<br>); return ((0)); } } while (0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="788"><td class="num" id="LN788">788</td><td class="line"> <span class='macro'>FALSE)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_203<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((tree_model)); GType __t = ((pluma_file_browser_store_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_203 = 1; else _g_boolean_var_203 =<br> 0; _g_boolean_var_203; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "PLUMA_IS_FILE_BROWSER_STORE (tree_model)"<br>); return ((0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="789"><td class="num" id="LN789">789</td><td class="line"> <span class='macro'>g_return_val_if_fail (iter == NULL<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_204<br>; if (iter == ((void*)0) || iter-&gt;user_data != ((void*)0))<br> _g_boolean_var_204 = 1; else _g_boolean_var_204 = 0; _g_boolean_var_204<br>; }), 1))) { } else { g_return_if_fail_warning (((gchar*) 0),<br> ((const char*) (__func__)), "iter == NULL || iter-&gt;user_data != NULL"<br>); return ((0)); } } while (0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="790"><td class="num" id="LN790">790</td><td class="line"> <span class='macro'>|| iter-&gt;user_data != NULL, FALSE)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_204<br>; if (iter == ((void*)0) || iter-&gt;user_data != ((void*)0))<br> _g_boolean_var_204 = 1; else _g_boolean_var_204 = 0; _g_boolean_var_204<br>; }), 1))) { } else { g_return_if_fail_warning (((gchar*) 0),<br> ((const char*) (__func__)), "iter == NULL || iter-&gt;user_data != NULL"<br>); return ((0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="791"><td class="num" id="LN791">791</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="792"><td class="num" id="LN792">792</td><td class="line"> model = <span class='macro'>PLUMA_FILE_BROWSER_STORE (tree_model)<span class='macro_popup'>((((PlumaFileBrowserStore*) (void *) ((tree_model)))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="793"><td class="num" id="LN793">793</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="794"><td class="num" id="LN794">794</td><td class="line"> <span class='keyword'>if</span> (iter == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="795"><td class="num" id="LN795">795</td><td class="line"> node = model-&gt;priv-&gt;virtual_root;</td></tr>
+<tr class="codeline" data-linenumber="796"><td class="num" id="LN796">796</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="797"><td class="num" id="LN797">797</td><td class="line"> node = (FileBrowserNode *) (iter-&gt;user_data);</td></tr>
+<tr class="codeline" data-linenumber="798"><td class="num" id="LN798">798</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="799"><td class="num" id="LN799">799</td><td class="line"> <span class='keyword'>return</span> filter_tree_model_iter_has_child_real (model, node);</td></tr>
+<tr class="codeline" data-linenumber="800"><td class="num" id="LN800">800</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="801"><td class="num" id="LN801">801</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="802"><td class="num" id="LN802">802</td><td class="line"><span class='keyword'>static</span> gint</td></tr>
+<tr class="codeline" data-linenumber="803"><td class="num" id="LN803">803</td><td class="line">pluma_file_browser_store_iter_n_children (GtkTreeModel * tree_model,</td></tr>
+<tr class="codeline" data-linenumber="804"><td class="num" id="LN804">804</td><td class="line"> GtkTreeIter * iter)</td></tr>
+<tr class="codeline" data-linenumber="805"><td class="num" id="LN805">805</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="806"><td class="num" id="LN806">806</td><td class="line"> FileBrowserNode *node;</td></tr>
+<tr class="codeline" data-linenumber="807"><td class="num" id="LN807">807</td><td class="line"> PlumaFileBrowserStore *model;</td></tr>
+<tr class="codeline" data-linenumber="808"><td class="num" id="LN808">808</td><td class="line"> GSList *item;</td></tr>
+<tr class="codeline" data-linenumber="809"><td class="num" id="LN809">809</td><td class="line"> gint num = 0;</td></tr>
+<tr class="codeline" data-linenumber="810"><td class="num" id="LN810">810</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="811"><td class="num" id="LN811">811</td><td class="line"> <span class='macro'>g_return_val_if_fail (PLUMA_IS_FILE_BROWSER_STORE (tree_model),<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_205<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((tree_model)); GType __t = ((pluma_file_browser_store_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_205 = 1; else _g_boolean_var_205 =<br> 0; _g_boolean_var_205; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "PLUMA_IS_FILE_BROWSER_STORE (tree_model)"<br>); return ((0)); } } while (0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="812"><td class="num" id="LN812">812</td><td class="line"> <span class='macro'>FALSE)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_205<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((tree_model)); GType __t = ((pluma_file_browser_store_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_205 = 1; else _g_boolean_var_205 =<br> 0; _g_boolean_var_205; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "PLUMA_IS_FILE_BROWSER_STORE (tree_model)"<br>); return ((0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="813"><td class="num" id="LN813">813</td><td class="line"> <span class='macro'>g_return_val_if_fail (iter == NULL<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_206<br>; if (iter == ((void*)0) || iter-&gt;user_data != ((void*)0))<br> _g_boolean_var_206 = 1; else _g_boolean_var_206 = 0; _g_boolean_var_206<br>; }), 1))) { } else { g_return_if_fail_warning (((gchar*) 0),<br> ((const char*) (__func__)), "iter == NULL || iter-&gt;user_data != NULL"<br>); return ((0)); } } while (0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="814"><td class="num" id="LN814">814</td><td class="line"> <span class='macro'>|| iter-&gt;user_data != NULL, FALSE)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_206<br>; if (iter == ((void*)0) || iter-&gt;user_data != ((void*)0))<br> _g_boolean_var_206 = 1; else _g_boolean_var_206 = 0; _g_boolean_var_206<br>; }), 1))) { } else { g_return_if_fail_warning (((gchar*) 0),<br> ((const char*) (__func__)), "iter == NULL || iter-&gt;user_data != NULL"<br>); return ((0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="815"><td class="num" id="LN815">815</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="816"><td class="num" id="LN816">816</td><td class="line"> model = <span class='macro'>PLUMA_FILE_BROWSER_STORE (tree_model)<span class='macro_popup'>((((PlumaFileBrowserStore*) (void *) ((tree_model)))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="817"><td class="num" id="LN817">817</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="818"><td class="num" id="LN818">818</td><td class="line"> <span class='keyword'>if</span> (iter == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="819"><td class="num" id="LN819">819</td><td class="line"> node = model-&gt;priv-&gt;virtual_root;</td></tr>
+<tr class="codeline" data-linenumber="820"><td class="num" id="LN820">820</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="821"><td class="num" id="LN821">821</td><td class="line"> node = (FileBrowserNode *) (iter-&gt;user_data);</td></tr>
+<tr class="codeline" data-linenumber="822"><td class="num" id="LN822">822</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="823"><td class="num" id="LN823">823</td><td class="line"> <span class='keyword'>if</span> (!<span class='macro'>NODE_IS_DIR (node)<span class='macro_popup'>(((node)-&gt;flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_DIRECTORY<br>))</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="824"><td class="num" id="LN824">824</td><td class="line"> <span class='keyword'>return</span> 0;</td></tr>
+<tr class="codeline" data-linenumber="825"><td class="num" id="LN825">825</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="826"><td class="num" id="LN826">826</td><td class="line"> <span class='keyword'>for</span> (item = <span class='macro'>FILE_BROWSER_NODE_DIR (node)<span class='macro_popup'>((FileBrowserNodeDir *)(node))</span></span>-&gt;children; item; item = item-&gt;next)</td></tr>
+<tr class="codeline" data-linenumber="827"><td class="num" id="LN827">827</td><td class="line"> <span class='keyword'>if</span> (model_node_inserted (model, (FileBrowserNode *) (item-&gt;data)))</td></tr>
+<tr class="codeline" data-linenumber="828"><td class="num" id="LN828">828</td><td class="line"> ++num;</td></tr>
+<tr class="codeline" data-linenumber="829"><td class="num" id="LN829">829</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="830"><td class="num" id="LN830">830</td><td class="line"> <span class='keyword'>return</span> num;</td></tr>
+<tr class="codeline" data-linenumber="831"><td class="num" id="LN831">831</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="832"><td class="num" id="LN832">832</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="833"><td class="num" id="LN833">833</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="834"><td class="num" id="LN834">834</td><td class="line">pluma_file_browser_store_iter_nth_child (GtkTreeModel * tree_model,</td></tr>
+<tr class="codeline" data-linenumber="835"><td class="num" id="LN835">835</td><td class="line"> GtkTreeIter * iter,</td></tr>
+<tr class="codeline" data-linenumber="836"><td class="num" id="LN836">836</td><td class="line"> GtkTreeIter * parent, gint n)</td></tr>
+<tr class="codeline" data-linenumber="837"><td class="num" id="LN837">837</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="838"><td class="num" id="LN838">838</td><td class="line"> FileBrowserNode *node;</td></tr>
+<tr class="codeline" data-linenumber="839"><td class="num" id="LN839">839</td><td class="line"> PlumaFileBrowserStore *model;</td></tr>
+<tr class="codeline" data-linenumber="840"><td class="num" id="LN840">840</td><td class="line"> GSList *item;</td></tr>
+<tr class="codeline" data-linenumber="841"><td class="num" id="LN841">841</td><td class="line"> gint num = 0;</td></tr>
+<tr class="codeline" data-linenumber="842"><td class="num" id="LN842">842</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="843"><td class="num" id="LN843">843</td><td class="line"> <span class='macro'>g_return_val_if_fail (PLUMA_IS_FILE_BROWSER_STORE (tree_model),<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_207<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((tree_model)); GType __t = ((pluma_file_browser_store_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_207 = 1; else _g_boolean_var_207 =<br> 0; _g_boolean_var_207; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "PLUMA_IS_FILE_BROWSER_STORE (tree_model)"<br>); return ((0)); } } while (0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="844"><td class="num" id="LN844">844</td><td class="line"> <span class='macro'>FALSE)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_207<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((tree_model)); GType __t = ((pluma_file_browser_store_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_207 = 1; else _g_boolean_var_207 =<br> 0; _g_boolean_var_207; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "PLUMA_IS_FILE_BROWSER_STORE (tree_model)"<br>); return ((0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="845"><td class="num" id="LN845">845</td><td class="line"> <span class='macro'>g_return_val_if_fail (parent == NULL<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_208<br>; if (parent == ((void*)0) || parent-&gt;user_data != ((void*<br>)0)) _g_boolean_var_208 = 1; else _g_boolean_var_208 = 0; _g_boolean_var_208<br>; }), 1))) { } else { g_return_if_fail_warning (((gchar*) 0),<br> ((const char*) (__func__)), "parent == NULL || parent-&gt;user_data != NULL"<br>); return ((0)); } } while (0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="846"><td class="num" id="LN846">846</td><td class="line"> <span class='macro'>|| parent-&gt;user_data != NULL, FALSE)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_208<br>; if (parent == ((void*)0) || parent-&gt;user_data != ((void*<br>)0)) _g_boolean_var_208 = 1; else _g_boolean_var_208 = 0; _g_boolean_var_208<br>; }), 1))) { } else { g_return_if_fail_warning (((gchar*) 0),<br> ((const char*) (__func__)), "parent == NULL || parent-&gt;user_data != NULL"<br>); return ((0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="847"><td class="num" id="LN847">847</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="848"><td class="num" id="LN848">848</td><td class="line"> model = <span class='macro'>PLUMA_FILE_BROWSER_STORE (tree_model)<span class='macro_popup'>((((PlumaFileBrowserStore*) (void *) ((tree_model)))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="849"><td class="num" id="LN849">849</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="850"><td class="num" id="LN850">850</td><td class="line"> <span class='keyword'>if</span> (parent == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="851"><td class="num" id="LN851">851</td><td class="line"> node = model-&gt;priv-&gt;virtual_root;</td></tr>
+<tr class="codeline" data-linenumber="852"><td class="num" id="LN852">852</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="853"><td class="num" id="LN853">853</td><td class="line"> node = (FileBrowserNode *) (parent-&gt;user_data);</td></tr>
+<tr class="codeline" data-linenumber="854"><td class="num" id="LN854">854</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="855"><td class="num" id="LN855">855</td><td class="line"> <span class='keyword'>if</span> (!<span class='macro'>NODE_IS_DIR (node)<span class='macro_popup'>(((node)-&gt;flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_DIRECTORY<br>))</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="856"><td class="num" id="LN856">856</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="857"><td class="num" id="LN857">857</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="858"><td class="num" id="LN858">858</td><td class="line"> <span class='keyword'>for</span> (item = <span class='macro'>FILE_BROWSER_NODE_DIR (node)<span class='macro_popup'>((FileBrowserNodeDir *)(node))</span></span>-&gt;children; item;</td></tr>
+<tr class="codeline" data-linenumber="859"><td class="num" id="LN859">859</td><td class="line"> item = item-&gt;next) {</td></tr>
+<tr class="codeline" data-linenumber="860"><td class="num" id="LN860">860</td><td class="line"> <span class='keyword'>if</span> (model_node_inserted (model, (FileBrowserNode *) (item-&gt;data))) {</td></tr>
+<tr class="codeline" data-linenumber="861"><td class="num" id="LN861">861</td><td class="line"> <span class='keyword'>if</span> (num == n) {</td></tr>
+<tr class="codeline" data-linenumber="862"><td class="num" id="LN862">862</td><td class="line"> iter-&gt;user_data = item-&gt;data;</td></tr>
+<tr class="codeline" data-linenumber="863"><td class="num" id="LN863">863</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="864"><td class="num" id="LN864">864</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="865"><td class="num" id="LN865">865</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="866"><td class="num" id="LN866">866</td><td class="line"> ++num;</td></tr>
+<tr class="codeline" data-linenumber="867"><td class="num" id="LN867">867</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="868"><td class="num" id="LN868">868</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="869"><td class="num" id="LN869">869</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="870"><td class="num" id="LN870">870</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="871"><td class="num" id="LN871">871</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="872"><td class="num" id="LN872">872</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="873"><td class="num" id="LN873">873</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="874"><td class="num" id="LN874">874</td><td class="line">pluma_file_browser_store_iter_parent (GtkTreeModel * tree_model,</td></tr>
+<tr class="codeline" data-linenumber="875"><td class="num" id="LN875">875</td><td class="line"> GtkTreeIter * iter,</td></tr>
+<tr class="codeline" data-linenumber="876"><td class="num" id="LN876">876</td><td class="line"> GtkTreeIter * child)</td></tr>
+<tr class="codeline" data-linenumber="877"><td class="num" id="LN877">877</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="878"><td class="num" id="LN878">878</td><td class="line"> FileBrowserNode *node;</td></tr>
+<tr class="codeline" data-linenumber="879"><td class="num" id="LN879">879</td><td class="line"> PlumaFileBrowserStore *model;</td></tr>
+<tr class="codeline" data-linenumber="880"><td class="num" id="LN880">880</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="881"><td class="num" id="LN881">881</td><td class="line"> <span class='macro'>g_return_val_if_fail (PLUMA_IS_FILE_BROWSER_STORE (tree_model), FALSE)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_209<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((tree_model)); GType __t = ((pluma_file_browser_store_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_209 = 1; else _g_boolean_var_209 =<br> 0; _g_boolean_var_209; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "PLUMA_IS_FILE_BROWSER_STORE (tree_model)"<br>); return ((0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="882"><td class="num" id="LN882">882</td><td class="line"> <span class='macro'>g_return_val_if_fail (child != NULL, FALSE)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_210<br>; if (child != ((void*)0)) _g_boolean_var_210 = 1; else _g_boolean_var_210<br> = 0; _g_boolean_var_210; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "child != NULL");<br> return ((0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="883"><td class="num" id="LN883">883</td><td class="line"> <span class='macro'>g_return_val_if_fail (child-&gt;user_data != NULL, FALSE)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_211<br>; if (child-&gt;user_data != ((void*)0)) _g_boolean_var_211 =<br> 1; else _g_boolean_var_211 = 0; _g_boolean_var_211; }), 1)))<br> { } else { g_return_if_fail_warning (((gchar*) 0), ((const char<br>*) (__func__)), "child-&gt;user_data != NULL"); return ((0));<br> } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="884"><td class="num" id="LN884">884</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="885"><td class="num" id="LN885">885</td><td class="line"> node = (FileBrowserNode *) (child-&gt;user_data);</td></tr>
+<tr class="codeline" data-linenumber="886"><td class="num" id="LN886">886</td><td class="line"> model = <span class='macro'>PLUMA_FILE_BROWSER_STORE (tree_model)<span class='macro_popup'>((((PlumaFileBrowserStore*) (void *) ((tree_model)))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="887"><td class="num" id="LN887">887</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="888"><td class="num" id="LN888">888</td><td class="line"> <span class='keyword'>if</span> (!node_in_tree (model, node))</td></tr>
+<tr class="codeline" data-linenumber="889"><td class="num" id="LN889">889</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="890"><td class="num" id="LN890">890</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="891"><td class="num" id="LN891">891</td><td class="line"> <span class='keyword'>if</span> (node-&gt;parent == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="892"><td class="num" id="LN892">892</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="893"><td class="num" id="LN893">893</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="894"><td class="num" id="LN894">894</td><td class="line"> iter-&gt;user_data = node-&gt;parent;</td></tr>
+<tr class="codeline" data-linenumber="895"><td class="num" id="LN895">895</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="896"><td class="num" id="LN896">896</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="897"><td class="num" id="LN897">897</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="898"><td class="num" id="LN898">898</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="899"><td class="num" id="LN899">899</td><td class="line">pluma_file_browser_store_row_inserted (GtkTreeModel * tree_model,</td></tr>
+<tr class="codeline" data-linenumber="900"><td class="num" id="LN900">900</td><td class="line"> GtkTreePath * path,</td></tr>
+<tr class="codeline" data-linenumber="901"><td class="num" id="LN901">901</td><td class="line"> GtkTreeIter * iter)</td></tr>
+<tr class="codeline" data-linenumber="902"><td class="num" id="LN902">902</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="903"><td class="num" id="LN903">903</td><td class="line"> FileBrowserNode * node = (FileBrowserNode *)(iter-&gt;user_data);</td></tr>
+<tr class="codeline" data-linenumber="904"><td class="num" id="LN904">904</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="905"><td class="num" id="LN905">905</td><td class="line"> node-&gt;inserted = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="906"><td class="num" id="LN906">906</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="907"><td class="num" id="LN907">907</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="908"><td class="num" id="LN908">908</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="909"><td class="num" id="LN909">909</td><td class="line">pluma_file_browser_store_row_draggable (GtkTreeDragSource * drag_source,</td></tr>
+<tr class="codeline" data-linenumber="910"><td class="num" id="LN910">910</td><td class="line"> GtkTreePath * path)</td></tr>
+<tr class="codeline" data-linenumber="911"><td class="num" id="LN911">911</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="912"><td class="num" id="LN912">912</td><td class="line"> GtkTreeIter iter;</td></tr>
+<tr class="codeline" data-linenumber="913"><td class="num" id="LN913">913</td><td class="line"> PlumaFileBrowserStoreFlag flags;</td></tr>
+<tr class="codeline" data-linenumber="914"><td class="num" id="LN914">914</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="915"><td class="num" id="LN915">915</td><td class="line"> <span class='keyword'>if</span> (!gtk_tree_model_get_iter (<span class='macro'>GTK_TREE_MODEL (drag_source)<span class='macro_popup'>((((GtkTreeModel*) (void *) ((drag_source)))))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="916"><td class="num" id="LN916">916</td><td class="line"> &amp;iter, path))</td></tr>
+<tr class="codeline" data-linenumber="917"><td class="num" id="LN917">917</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="918"><td class="num" id="LN918">918</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="919"><td class="num" id="LN919">919</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="920"><td class="num" id="LN920">920</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="921"><td class="num" id="LN921">921</td><td class="line"> gtk_tree_model_get (<span class='macro'>GTK_TREE_MODEL (drag_source)<span class='macro_popup'>((((GtkTreeModel*) (void *) ((drag_source)))))</span></span>, &amp;iter,</td></tr>
+<tr class="codeline" data-linenumber="922"><td class="num" id="LN922">922</td><td class="line"> PLUMA_FILE_BROWSER_STORE_COLUMN_FLAGS, &amp;flags,</td></tr>
+<tr class="codeline" data-linenumber="923"><td class="num" id="LN923">923</td><td class="line"> -1);</td></tr>
+<tr class="codeline" data-linenumber="924"><td class="num" id="LN924">924</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="925"><td class="num" id="LN925">925</td><td class="line"> <span class='keyword'>return</span> !<span class='macro'>FILE_IS_DUMMY(flags)<span class='macro_popup'>(flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_DUMMY)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="926"><td class="num" id="LN926">926</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="927"><td class="num" id="LN927">927</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="928"><td class="num" id="LN928">928</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="929"><td class="num" id="LN929">929</td><td class="line">pluma_file_browser_store_drag_data_delete (GtkTreeDragSource * drag_source,</td></tr>
+<tr class="codeline" data-linenumber="930"><td class="num" id="LN930">930</td><td class="line"> GtkTreePath * path)</td></tr>
+<tr class="codeline" data-linenumber="931"><td class="num" id="LN931">931</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="932"><td class="num" id="LN932">932</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="933"><td class="num" id="LN933">933</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="934"><td class="num" id="LN934">934</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="935"><td class="num" id="LN935">935</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="936"><td class="num" id="LN936">936</td><td class="line">pluma_file_browser_store_drag_data_get (GtkTreeDragSource * drag_source,</td></tr>
+<tr class="codeline" data-linenumber="937"><td class="num" id="LN937">937</td><td class="line"> GtkTreePath * path,</td></tr>
+<tr class="codeline" data-linenumber="938"><td class="num" id="LN938">938</td><td class="line"> GtkSelectionData * selection_data)</td></tr>
+<tr class="codeline" data-linenumber="939"><td class="num" id="LN939">939</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="940"><td class="num" id="LN940">940</td><td class="line"> GtkTreeIter iter;</td></tr>
+<tr class="codeline" data-linenumber="941"><td class="num" id="LN941">941</td><td class="line"> gchar *uri;</td></tr>
+<tr class="codeline" data-linenumber="942"><td class="num" id="LN942">942</td><td class="line"> gchar *uris[2] = {0, };</td></tr>
+<tr class="codeline" data-linenumber="943"><td class="num" id="LN943">943</td><td class="line"> gboolean ret;</td></tr>
+<tr class="codeline" data-linenumber="944"><td class="num" id="LN944">944</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="945"><td class="num" id="LN945">945</td><td class="line"> <span class='keyword'>if</span> (!gtk_tree_model_get_iter (<span class='macro'>GTK_TREE_MODEL (drag_source)<span class='macro_popup'>((((GtkTreeModel*) (void *) ((drag_source)))))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="946"><td class="num" id="LN946">946</td><td class="line"> &amp;iter, path))</td></tr>
+<tr class="codeline" data-linenumber="947"><td class="num" id="LN947">947</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="948"><td class="num" id="LN948">948</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="949"><td class="num" id="LN949">949</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="950"><td class="num" id="LN950">950</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="951"><td class="num" id="LN951">951</td><td class="line"> gtk_tree_model_get (<span class='macro'>GTK_TREE_MODEL (drag_source)<span class='macro_popup'>((((GtkTreeModel*) (void *) ((drag_source)))))</span></span>, &amp;iter,</td></tr>
+<tr class="codeline" data-linenumber="952"><td class="num" id="LN952">952</td><td class="line"> PLUMA_FILE_BROWSER_STORE_COLUMN_URI, &amp;uri,</td></tr>
+<tr class="codeline" data-linenumber="953"><td class="num" id="LN953">953</td><td class="line"> -1);</td></tr>
+<tr class="codeline" data-linenumber="954"><td class="num" id="LN954">954</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="955"><td class="num" id="LN955">955</td><td class="line"> <span class='macro'>g_assert (uri)<span class='macro_popup'>do { if (__builtin_expect (__extension__ ({ int _g_boolean_var_212<br>; if (uri) _g_boolean_var_212 = 1; else _g_boolean_var_212 = 0<br>; _g_boolean_var_212; }), 1)) ; else g_assertion_message_expr<br> (((gchar*) 0), "pluma-file-browser-store.c", 955, ((const char<br>*) (__func__)), "uri"); } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="956"><td class="num" id="LN956">956</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="957"><td class="num" id="LN957">957</td><td class="line"> uris[0] = uri;</td></tr>
+<tr class="codeline" data-linenumber="958"><td class="num" id="LN958">958</td><td class="line"> ret = gtk_selection_data_set_uris (selection_data, uris);</td></tr>
+<tr class="codeline" data-linenumber="959"><td class="num" id="LN959">959</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="960"><td class="num" id="LN960">960</td><td class="line"> g_free (uri);</td></tr>
+<tr class="codeline" data-linenumber="961"><td class="num" id="LN961">961</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="962"><td class="num" id="LN962">962</td><td class="line"> <span class='keyword'>return</span> ret;</td></tr>
+<tr class="codeline" data-linenumber="963"><td class="num" id="LN963">963</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="964"><td class="num" id="LN964">964</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="965"><td class="num" id="LN965">965</td><td class="line"><span class='directive'>#define <span class='macro'>FILTER_HIDDEN(mode)<span class='macro_popup'>(mode &amp; PLUMA_FILE_BROWSER_STORE_FILTER_MODE_HIDE_HIDDEN)</span></span> (mode &amp; PLUMA_FILE_BROWSER_STORE_FILTER_MODE_HIDE_HIDDEN)</span></td></tr>
+<tr class="codeline" data-linenumber="966"><td class="num" id="LN966">966</td><td class="line"><span class='directive'>#define <span class='macro'>FILTER_BINARY(mode)<span class='macro_popup'>(mode &amp; PLUMA_FILE_BROWSER_STORE_FILTER_MODE_HIDE_BINARY)</span></span> (mode &amp; PLUMA_FILE_BROWSER_STORE_FILTER_MODE_HIDE_BINARY)</span></td></tr>
+<tr class="codeline" data-linenumber="967"><td class="num" id="LN967">967</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="968"><td class="num" id="LN968">968</td><td class="line"><span class='comment'>/* Private */</span></td></tr>
+<tr class="codeline" data-linenumber="969"><td class="num" id="LN969">969</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="970"><td class="num" id="LN970">970</td><td class="line">model_begin_loading (PlumaFileBrowserStore * model, FileBrowserNode * node)</td></tr>
+<tr class="codeline" data-linenumber="971"><td class="num" id="LN971">971</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="972"><td class="num" id="LN972">972</td><td class="line"> GtkTreeIter iter;</td></tr>
+<tr class="codeline" data-linenumber="973"><td class="num" id="LN973">973</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="974"><td class="num" id="LN974">974</td><td class="line"> iter.user_data = node;</td></tr>
+<tr class="codeline" data-linenumber="975"><td class="num" id="LN975">975</td><td class="line"> g_signal_emit (model, model_signals[BEGIN_LOADING], 0, &amp;iter);</td></tr>
+<tr class="codeline" data-linenumber="976"><td class="num" id="LN976">976</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="977"><td class="num" id="LN977">977</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="978"><td class="num" id="LN978">978</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="979"><td class="num" id="LN979">979</td><td class="line">model_end_loading (PlumaFileBrowserStore * model, FileBrowserNode * node)</td></tr>
+<tr class="codeline" data-linenumber="980"><td class="num" id="LN980">980</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="981"><td class="num" id="LN981">981</td><td class="line"> GtkTreeIter iter;</td></tr>
+<tr class="codeline" data-linenumber="982"><td class="num" id="LN982">982</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="983"><td class="num" id="LN983">983</td><td class="line"> iter.user_data = node;</td></tr>
+<tr class="codeline" data-linenumber="984"><td class="num" id="LN984">984</td><td class="line"> g_signal_emit (model, model_signals[END_LOADING], 0, &amp;iter);</td></tr>
+<tr class="codeline" data-linenumber="985"><td class="num" id="LN985">985</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="986"><td class="num" id="LN986">986</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="987"><td class="num" id="LN987">987</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="988"><td class="num" id="LN988">988</td><td class="line">model_node_update_visibility (PlumaFileBrowserStore * model,</td></tr>
+<tr class="codeline" data-linenumber="989"><td class="num" id="LN989">989</td><td class="line"> FileBrowserNode * node)</td></tr>
+<tr class="codeline" data-linenumber="990"><td class="num" id="LN990">990</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="991"><td class="num" id="LN991">991</td><td class="line"> GtkTreeIter iter;</td></tr>
+<tr class="codeline" data-linenumber="992"><td class="num" id="LN992">992</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="993"><td class="num" id="LN993">993</td><td class="line"> node-&gt;flags &amp;= ~PLUMA_FILE_BROWSER_STORE_FLAG_IS_FILTERED;</td></tr>
+<tr class="codeline" data-linenumber="994"><td class="num" id="LN994">994</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="995"><td class="num" id="LN995">995</td><td class="line"> <span class='keyword'>if</span> (<span class='macro'>FILTER_HIDDEN (model-&gt;priv-&gt;filter_mode)<span class='macro_popup'>(model-&gt;priv-&gt;filter_mode &amp; PLUMA_FILE_BROWSER_STORE_FILTER_MODE_HIDE_HIDDEN<br>)</span></span> &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="996"><td class="num" id="LN996">996</td><td class="line"> <span class='macro'>NODE_IS_HIDDEN (node)<span class='macro_popup'>(((node)-&gt;flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_HIDDEN<br>))</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="997"><td class="num" id="LN997">997</td><td class="line"> node-&gt;flags |= PLUMA_FILE_BROWSER_STORE_FLAG_IS_FILTERED;</td></tr>
+<tr class="codeline" data-linenumber="998"><td class="num" id="LN998">998</td><td class="line"> <span class='keyword'>else</span> <span class='keyword'>if</span> (<span class='macro'>FILTER_BINARY (model-&gt;priv-&gt;filter_mode)<span class='macro_popup'>(model-&gt;priv-&gt;filter_mode &amp; PLUMA_FILE_BROWSER_STORE_FILTER_MODE_HIDE_BINARY<br>)</span></span> &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="999"><td class="num" id="LN999">999</td><td class="line"> (!<span class='macro'>NODE_IS_TEXT (node)<span class='macro_popup'>(((node)-&gt;flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_TEXT<br>))</span></span> &amp;&amp; !<span class='macro'>NODE_IS_DIR (node)<span class='macro_popup'>(((node)-&gt;flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_DIRECTORY<br>))</span></span>))</td></tr>
+<tr class="codeline" data-linenumber="1000"><td class="num" id="LN1000">1000</td><td class="line"> node-&gt;flags |= PLUMA_FILE_BROWSER_STORE_FLAG_IS_FILTERED;</td></tr>
+<tr class="codeline" data-linenumber="1001"><td class="num" id="LN1001">1001</td><td class="line"> <span class='keyword'>else</span> <span class='keyword'>if</span> (model-&gt;priv-&gt;filter_func) {</td></tr>
+<tr class="codeline" data-linenumber="1002"><td class="num" id="LN1002">1002</td><td class="line"> iter.user_data = node;</td></tr>
+<tr class="codeline" data-linenumber="1003"><td class="num" id="LN1003">1003</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1004"><td class="num" id="LN1004">1004</td><td class="line"> <span class='keyword'>if</span> (!model-&gt;priv-&gt;</td></tr>
+<tr class="codeline" data-linenumber="1005"><td class="num" id="LN1005">1005</td><td class="line"> filter_func (model, &amp;iter,</td></tr>
+<tr class="codeline" data-linenumber="1006"><td class="num" id="LN1006">1006</td><td class="line"> model-&gt;priv-&gt;filter_user_data))</td></tr>
+<tr class="codeline" data-linenumber="1007"><td class="num" id="LN1007">1007</td><td class="line"> node-&gt;flags |=</td></tr>
+<tr class="codeline" data-linenumber="1008"><td class="num" id="LN1008">1008</td><td class="line"> PLUMA_FILE_BROWSER_STORE_FLAG_IS_FILTERED;</td></tr>
+<tr class="codeline" data-linenumber="1009"><td class="num" id="LN1009">1009</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1010"><td class="num" id="LN1010">1010</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1011"><td class="num" id="LN1011">1011</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1012"><td class="num" id="LN1012">1012</td><td class="line"><span class='keyword'>static</span> gint</td></tr>
+<tr class="codeline" data-linenumber="1013"><td class="num" id="LN1013">1013</td><td class="line">collate_nodes (FileBrowserNode * node1, FileBrowserNode * node2)</td></tr>
+<tr class="codeline" data-linenumber="1014"><td class="num" id="LN1014">1014</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1015"><td class="num" id="LN1015">1015</td><td class="line"> <span class='keyword'>if</span> (node1-&gt;name == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="1016"><td class="num" id="LN1016">1016</td><td class="line"> <span class='keyword'>return</span> -1;</td></tr>
+<tr class="codeline" data-linenumber="1017"><td class="num" id="LN1017">1017</td><td class="line"> <span class='keyword'>else</span> <span class='keyword'>if</span> (node2-&gt;name == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="1018"><td class="num" id="LN1018">1018</td><td class="line"> <span class='keyword'>return</span> 1;</td></tr>
+<tr class="codeline" data-linenumber="1019"><td class="num" id="LN1019">1019</td><td class="line"> <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="1020"><td class="num" id="LN1020">1020</td><td class="line"> gchar *k1, *k2;</td></tr>
+<tr class="codeline" data-linenumber="1021"><td class="num" id="LN1021">1021</td><td class="line"> gint result;</td></tr>
+<tr class="codeline" data-linenumber="1022"><td class="num" id="LN1022">1022</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1023"><td class="num" id="LN1023">1023</td><td class="line"> k1 = g_utf8_collate_key_for_filename (node1-&gt;name, -1);</td></tr>
+<tr class="codeline" data-linenumber="1024"><td class="num" id="LN1024">1024</td><td class="line"> k2 = g_utf8_collate_key_for_filename (node2-&gt;name, -1);</td></tr>
+<tr class="codeline" data-linenumber="1025"><td class="num" id="LN1025">1025</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1026"><td class="num" id="LN1026">1026</td><td class="line"> result = strcmp (k1, k2);</td></tr>
+<tr class="codeline" data-linenumber="1027"><td class="num" id="LN1027">1027</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1028"><td class="num" id="LN1028">1028</td><td class="line"> g_free (k1);</td></tr>
+<tr class="codeline" data-linenumber="1029"><td class="num" id="LN1029">1029</td><td class="line"> g_free (k2);</td></tr>
+<tr class="codeline" data-linenumber="1030"><td class="num" id="LN1030">1030</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1031"><td class="num" id="LN1031">1031</td><td class="line"> <span class='keyword'>return</span> result;</td></tr>
+<tr class="codeline" data-linenumber="1032"><td class="num" id="LN1032">1032</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1033"><td class="num" id="LN1033">1033</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1034"><td class="num" id="LN1034">1034</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1035"><td class="num" id="LN1035">1035</td><td class="line"><span class='keyword'>static</span> gint</td></tr>
+<tr class="codeline" data-linenumber="1036"><td class="num" id="LN1036">1036</td><td class="line">model_sort_default (FileBrowserNode * node1, FileBrowserNode * node2)</td></tr>
+<tr class="codeline" data-linenumber="1037"><td class="num" id="LN1037">1037</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1038"><td class="num" id="LN1038">1038</td><td class="line"> gint f1;</td></tr>
+<tr class="codeline" data-linenumber="1039"><td class="num" id="LN1039">1039</td><td class="line"> gint f2;</td></tr>
+<tr class="codeline" data-linenumber="1040"><td class="num" id="LN1040">1040</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1041"><td class="num" id="LN1041">1041</td><td class="line"> f1 = <span class='macro'>NODE_IS_DUMMY (node1)<span class='macro_popup'>(((node1)-&gt;flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_DUMMY<br>))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1042"><td class="num" id="LN1042">1042</td><td class="line"> f2 = <span class='macro'>NODE_IS_DUMMY (node2)<span class='macro_popup'>(((node2)-&gt;flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_DUMMY<br>))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1043"><td class="num" id="LN1043">1043</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1044"><td class="num" id="LN1044">1044</td><td class="line"> <span class='keyword'>if</span> (f1 &amp;&amp; f2)</td></tr>
+<tr class="codeline" data-linenumber="1045"><td class="num" id="LN1045">1045</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="1046"><td class="num" id="LN1046">1046</td><td class="line"> <span class='keyword'>return</span> 0;</td></tr>
+<tr class="codeline" data-linenumber="1047"><td class="num" id="LN1047">1047</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1048"><td class="num" id="LN1048">1048</td><td class="line"> <span class='keyword'>else</span> <span class='keyword'>if</span> (f1 || f2)</td></tr>
+<tr class="codeline" data-linenumber="1049"><td class="num" id="LN1049">1049</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="1050"><td class="num" id="LN1050">1050</td><td class="line"> <span class='keyword'>return</span> f1 ? -1 : 1;</td></tr>
+<tr class="codeline" data-linenumber="1051"><td class="num" id="LN1051">1051</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1052"><td class="num" id="LN1052">1052</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1053"><td class="num" id="LN1053">1053</td><td class="line"> f1 = <span class='macro'>NODE_IS_DIR (node1)<span class='macro_popup'>(((node1)-&gt;flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_DIRECTORY<br>))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1054"><td class="num" id="LN1054">1054</td><td class="line"> f2 = <span class='macro'>NODE_IS_DIR (node2)<span class='macro_popup'>(((node2)-&gt;flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_DIRECTORY<br>))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1055"><td class="num" id="LN1055">1055</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1056"><td class="num" id="LN1056">1056</td><td class="line"> <span class='keyword'>if</span> (f1 != f2)</td></tr>
+<tr class="codeline" data-linenumber="1057"><td class="num" id="LN1057">1057</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="1058"><td class="num" id="LN1058">1058</td><td class="line"> <span class='keyword'>return</span> f1 ? -1 : 1;</td></tr>
+<tr class="codeline" data-linenumber="1059"><td class="num" id="LN1059">1059</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1060"><td class="num" id="LN1060">1060</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1061"><td class="num" id="LN1061">1061</td><td class="line"> f1 = <span class='macro'>NODE_IS_HIDDEN (node1)<span class='macro_popup'>(((node1)-&gt;flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_HIDDEN<br>))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1062"><td class="num" id="LN1062">1062</td><td class="line"> f2 = <span class='macro'>NODE_IS_HIDDEN (node2)<span class='macro_popup'>(((node2)-&gt;flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_HIDDEN<br>))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1063"><td class="num" id="LN1063">1063</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1064"><td class="num" id="LN1064">1064</td><td class="line"> <span class='keyword'>if</span> (f1 != f2)</td></tr>
+<tr class="codeline" data-linenumber="1065"><td class="num" id="LN1065">1065</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="1066"><td class="num" id="LN1066">1066</td><td class="line"> <span class='keyword'>return</span> f2 ? -1 : 1;</td></tr>
+<tr class="codeline" data-linenumber="1067"><td class="num" id="LN1067">1067</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1068"><td class="num" id="LN1068">1068</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1069"><td class="num" id="LN1069">1069</td><td class="line"> <span class='keyword'>return</span> collate_nodes (node1, node2);</td></tr>
+<tr class="codeline" data-linenumber="1070"><td class="num" id="LN1070">1070</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1071"><td class="num" id="LN1071">1071</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1072"><td class="num" id="LN1072">1072</td><td class="line"><span id="start23"><span class='keyword'>static</span></span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1073"><td class="num" id="LN1073">1073</td><td class="line">model_resort_node (PlumaFileBrowserStore * model, FileBrowserNode * node)</td></tr>
+<tr class="codeline" data-linenumber="1074"><td class="num" id="LN1074">1074</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1075"><td class="num" id="LN1075">1075</td><td class="line"> <span id="start22"><span id="end23">FileBrowserNodeDir</span></span> *dir;</td></tr>
+<tr class="codeline" data-linenumber="1076"><td class="num" id="LN1076">1076</td><td class="line"> GSList *item;</td></tr>
+<tr class="codeline" data-linenumber="1077"><td class="num" id="LN1077">1077</td><td class="line"> FileBrowserNode *child;</td></tr>
+<tr class="codeline" data-linenumber="1078"><td class="num" id="LN1078">1078</td><td class="line"> gint pos = 0;</td></tr>
+<tr class="codeline" data-linenumber="1079"><td class="num" id="LN1079">1079</td><td class="line"> GtkTreeIter iter;</td></tr>
+<tr class="codeline" data-linenumber="1080"><td class="num" id="LN1080">1080</td><td class="line"> GtkTreePath *path;</td></tr>
+<tr class="codeline" data-linenumber="1081"><td class="num" id="LN1081">1081</td><td class="line"> gint *neworder;</td></tr>
+<tr class="codeline" data-linenumber="1082"><td class="num" id="LN1082">1082</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1083"><td class="num" id="LN1083">1083</td><td class="line"> <span id="start21"><span id="end22">dir</span></span> = <span class='macro'>FILE_BROWSER_NODE_DIR (node-&gt;parent)<span class='macro_popup'>((FileBrowserNodeDir *)(node-&gt;parent))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1084"><td class="num" id="LN1084">1084</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1085"><td class="num" id="LN1085">1085</td><td class="line"> <span class='keyword'>if</span> (!model_node_visibility (model, node-&gt;parent)) {</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path26" class="msg msgControl" style="margin-left:9ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">26</div></td><td><div class="PathNav"><a href="#Path25" title="Previous event (25)">&#x2190;</a></div></td><td>Taking false branch</td><td><div class="PathNav"><a href="#Path27" title="Next event (27)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="1086"><td class="num" id="LN1086">1086</td><td class="line"> <span class='comment'>/* Just sort the children of the parent */</span></td></tr>
+<tr class="codeline" data-linenumber="1087"><td class="num" id="LN1087">1087</td><td class="line"> dir-&gt;children = g_slist_sort (dir-&gt;children,</td></tr>
+<tr class="codeline" data-linenumber="1088"><td class="num" id="LN1088">1088</td><td class="line"> (GCompareFunc) (model-&gt;priv-&gt;</td></tr>
+<tr class="codeline" data-linenumber="1089"><td class="num" id="LN1089">1089</td><td class="line"> sort_func));</td></tr>
+<tr class="codeline" data-linenumber="1090"><td class="num" id="LN1090">1090</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="1091"><td class="num" id="LN1091">1091</td><td class="line"> <span class='comment'>/* Store current positions */</span></td></tr>
+<tr class="codeline" data-linenumber="1092"><td class="num" id="LN1092">1092</td><td class="line"> <span id="start20"><span id="end21"><span class='keyword'>for</span></span></span> (item = <span id="start19"><span id="end20">dir</span></span>-&gt;children; <span id="start18"><span id="end19">item</span></span>; item = item-&gt;next) {</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path27" class="msg msgControl" style="margin-left:17ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">27</div></td><td><div class="PathNav"><a href="#Path26" title="Previous event (26)">&#x2190;</a></div></td><td>Loop condition is false. Execution continues on line 1099</td><td><div class="PathNav"><a href="#Path28" title="Next event (28)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="1093"><td class="num" id="LN1093">1093</td><td class="line"> child = (FileBrowserNode *) (item-&gt;data);</td></tr>
+<tr class="codeline" data-linenumber="1094"><td class="num" id="LN1094">1094</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1095"><td class="num" id="LN1095">1095</td><td class="line"> <span class='keyword'>if</span> (model_node_visibility (model, child))</td></tr>
+<tr class="codeline" data-linenumber="1096"><td class="num" id="LN1096">1096</td><td class="line"> child-&gt;pos = pos++;</td></tr>
+<tr class="codeline" data-linenumber="1097"><td class="num" id="LN1097">1097</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1098"><td class="num" id="LN1098">1098</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1099"><td class="num" id="LN1099">1099</td><td class="line"> <span id="start15"><span id="end16"><span id="start17"><span id="end18">dir</span></span></span></span>-&gt;children = g_slist_sort (<span id="start16"><span id="end17">dir</span></span>-&gt;children,</td></tr>
+<tr class="codeline" data-linenumber="1100"><td class="num" id="LN1100">1100</td><td class="line"> (GCompareFunc) (model-&gt;priv-&gt;</td></tr>
+<tr class="codeline" data-linenumber="1101"><td class="num" id="LN1101">1101</td><td class="line"> sort_func));</td></tr>
+<tr class="codeline" data-linenumber="1102"><td class="num" id="LN1102">1102</td><td class="line"> <span id="start8"><span id="end9">neworder</span></span> = <span id="start9"><span id="start10"><span id="end10"><span id="start11"><span id="end11"><span id="start12"><span id="end12"><span id="start13"><span id="end13"><span id="start14"><span id="end14"><span id="end15"><span class='macro'>g_new</span></span></span></span></span></span></span></span></span></span></span></span> (gint, pos)<span class='macro_popup'>(gint *) (__extension__ ({ gsize __n = (gsize) (pos); gsize __s<br> = sizeof (gint); gpointer __p; if (__s == 1) __p = g_malloc (<br>__n); else if (__builtin_constant_p (__n) &amp;&amp; (__s == 0<br> || __n &lt;= (9223372036854775807L *2UL+1UL) / __s)) __p = g_malloc<br> (__n * __s); else __p = g_malloc_n (__n, __s); __p; }))</span></span>;</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path28" class="msg msgControl" style="margin-left:28ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">28</div></td><td><div class="PathNav"><a href="#Path27" title="Previous event (27)">&#x2190;</a></div></td><td>Taking false branch</td><td><div class="PathNav"><a href="#Path29" title="Next event (29)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="1103"><td class="num" id="LN1103">1103</td><td class="line"> pos = 0;</td></tr>
+<tr class="codeline" data-linenumber="1104"><td class="num" id="LN1104">1104</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1105"><td class="num" id="LN1105">1105</td><td class="line"> <span class='comment'>/* Store the new positions */</span></td></tr>
+<tr class="codeline" data-linenumber="1106"><td class="num" id="LN1106">1106</td><td class="line"> <span id="start7"><span id="end8"><span class='keyword'>for</span></span></span> (item = dir-&gt;children; item; item = item-&gt;next) {</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path29" class="msg msgControl" style="margin-left:17ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">29</div></td><td><div class="PathNav"><a href="#Path28" title="Previous event (28)">&#x2190;</a></div></td><td>Loop condition is true. Entering loop body</td><td><div class="PathNav"><a href="#Path30" title="Next event (30)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="1107"><td class="num" id="LN1107">1107</td><td class="line"> <span id="start4"><span id="end5"><span id="start6"><span id="end7">child</span></span></span></span> = (FileBrowserNode *) (<span id="start5"><span id="end6">item</span></span>-&gt;data);</td></tr>
+<tr class="codeline" data-linenumber="1108"><td class="num" id="LN1108">1108</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1109"><td class="num" id="LN1109">1109</td><td class="line"> <span id="start3"><span id="end4"><span class='keyword'>if</span></span></span> (model_node_visibility (model, child))</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path30" class="msg msgControl" style="margin-left:25ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">30</div></td><td><div class="PathNav"><a href="#Path29" title="Previous event (29)">&#x2190;</a></div></td><td>Taking true branch</td><td><div class="PathNav"><a href="#EndPath" title="Next event (31)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="1110"><td class="num" id="LN1110">1110</td><td class="line"> <span class="mrange"><span id="start0"><span id="end1"><span id="start2"><span id="end3">neworder</span></span></span></span>[pos++] <span id="end0">=</span> <span id="start1"><span id="end2">child</span></span>-&gt;pos</span>;</td></tr>
+<tr><td class="num"></td><td class="line"><div id="EndPath" class="msg msgEvent" style="margin-left:49ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexEvent">31</div></td><td><div class="PathNav"><a href="#Path30" title="Previous event (30)">&#x2190;</a></div></td><td>Out of bound memory access (access exceeds upper limit of memory block)</td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="1111"><td class="num" id="LN1111">1111</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1112"><td class="num" id="LN1112">1112</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1113"><td class="num" id="LN1113">1113</td><td class="line"> iter.user_data = node-&gt;parent;</td></tr>
+<tr class="codeline" data-linenumber="1114"><td class="num" id="LN1114">1114</td><td class="line"> path =</td></tr>
+<tr class="codeline" data-linenumber="1115"><td class="num" id="LN1115">1115</td><td class="line"> pluma_file_browser_store_get_path_real (model,</td></tr>
+<tr class="codeline" data-linenumber="1116"><td class="num" id="LN1116">1116</td><td class="line"> node-&gt;parent);</td></tr>
+<tr class="codeline" data-linenumber="1117"><td class="num" id="LN1117">1117</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1118"><td class="num" id="LN1118">1118</td><td class="line"> gtk_tree_model_rows_reordered (<span class='macro'>GTK_TREE_MODEL (model)<span class='macro_popup'>((((GtkTreeModel*) (void *) ((model)))))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="1119"><td class="num" id="LN1119">1119</td><td class="line"> path, &amp;iter, neworder);</td></tr>
+<tr class="codeline" data-linenumber="1120"><td class="num" id="LN1120">1120</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1121"><td class="num" id="LN1121">1121</td><td class="line"> g_free (neworder);</td></tr>
+<tr class="codeline" data-linenumber="1122"><td class="num" id="LN1122">1122</td><td class="line"> gtk_tree_path_free (path);</td></tr>
+<tr class="codeline" data-linenumber="1123"><td class="num" id="LN1123">1123</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1124"><td class="num" id="LN1124">1124</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1125"><td class="num" id="LN1125">1125</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1126"><td class="num" id="LN1126">1126</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1127"><td class="num" id="LN1127">1127</td><td class="line">row_changed (PlumaFileBrowserStore * model,</td></tr>
+<tr class="codeline" data-linenumber="1128"><td class="num" id="LN1128">1128</td><td class="line"> GtkTreePath ** path,</td></tr>
+<tr class="codeline" data-linenumber="1129"><td class="num" id="LN1129">1129</td><td class="line"> GtkTreeIter * iter)</td></tr>
+<tr class="codeline" data-linenumber="1130"><td class="num" id="LN1130">1130</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1131"><td class="num" id="LN1131">1131</td><td class="line"> GtkTreeRowReference *ref = gtk_tree_row_reference_new (<span class='macro'>GTK_TREE_MODEL (model)<span class='macro_popup'>((((GtkTreeModel*) (void *) ((model)))))</span></span>, *path);</td></tr>
+<tr class="codeline" data-linenumber="1132"><td class="num" id="LN1132">1132</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1133"><td class="num" id="LN1133">1133</td><td class="line"> <span class='comment'>/* Insert a copy of the actual path here because the row-inserted</span></td></tr>
+<tr class="codeline" data-linenumber="1134"><td class="num" id="LN1134">1134</td><td class="line"> <span class='comment'>signal may alter the path */</span></td></tr>
+<tr class="codeline" data-linenumber="1135"><td class="num" id="LN1135">1135</td><td class="line"> gtk_tree_model_row_changed (<span class='macro'>GTK_TREE_MODEL(model)<span class='macro_popup'>((((GtkTreeModel*) (void *) ((model)))))</span></span>, *path, iter);</td></tr>
+<tr class="codeline" data-linenumber="1136"><td class="num" id="LN1136">1136</td><td class="line"> gtk_tree_path_free (*path);</td></tr>
+<tr class="codeline" data-linenumber="1137"><td class="num" id="LN1137">1137</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1138"><td class="num" id="LN1138">1138</td><td class="line"> *path = gtk_tree_row_reference_get_path (ref);</td></tr>
+<tr class="codeline" data-linenumber="1139"><td class="num" id="LN1139">1139</td><td class="line"> gtk_tree_row_reference_free (ref);</td></tr>
+<tr class="codeline" data-linenumber="1140"><td class="num" id="LN1140">1140</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1141"><td class="num" id="LN1141">1141</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1142"><td class="num" id="LN1142">1142</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1143"><td class="num" id="LN1143">1143</td><td class="line">row_inserted (PlumaFileBrowserStore * model,</td></tr>
+<tr class="codeline" data-linenumber="1144"><td class="num" id="LN1144">1144</td><td class="line"> GtkTreePath ** path,</td></tr>
+<tr class="codeline" data-linenumber="1145"><td class="num" id="LN1145">1145</td><td class="line"> GtkTreeIter * iter)</td></tr>
+<tr class="codeline" data-linenumber="1146"><td class="num" id="LN1146">1146</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1147"><td class="num" id="LN1147">1147</td><td class="line"> <span class='comment'>/* This function creates a row reference for the path because it's</span></td></tr>
+<tr class="codeline" data-linenumber="1148"><td class="num" id="LN1148">1148</td><td class="line"> <span class='comment'>uncertain what might change the actual model/view when we insert</span></td></tr>
+<tr class="codeline" data-linenumber="1149"><td class="num" id="LN1149">1149</td><td class="line"> <span class='comment'>a node, maybe another directory load is triggered for example.</span></td></tr>
+<tr class="codeline" data-linenumber="1150"><td class="num" id="LN1150">1150</td><td class="line"> <span class='comment'>Because functions that use this function rely on the notion that</span></td></tr>
+<tr class="codeline" data-linenumber="1151"><td class="num" id="LN1151">1151</td><td class="line"> <span class='comment'>the path remains pointed towards the inserted node, we use the</span></td></tr>
+<tr class="codeline" data-linenumber="1152"><td class="num" id="LN1152">1152</td><td class="line"> <span class='comment'>reference to keep track. */</span></td></tr>
+<tr class="codeline" data-linenumber="1153"><td class="num" id="LN1153">1153</td><td class="line"> GtkTreeRowReference *ref = gtk_tree_row_reference_new (<span class='macro'>GTK_TREE_MODEL (model)<span class='macro_popup'>((((GtkTreeModel*) (void *) ((model)))))</span></span>, *path);</td></tr>
+<tr class="codeline" data-linenumber="1154"><td class="num" id="LN1154">1154</td><td class="line"> GtkTreePath * copy = gtk_tree_path_copy (*path);</td></tr>
+<tr class="codeline" data-linenumber="1155"><td class="num" id="LN1155">1155</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1156"><td class="num" id="LN1156">1156</td><td class="line"> gtk_tree_model_row_inserted (<span class='macro'>GTK_TREE_MODEL(model)<span class='macro_popup'>((((GtkTreeModel*) (void *) ((model)))))</span></span>, copy, iter);</td></tr>
+<tr class="codeline" data-linenumber="1157"><td class="num" id="LN1157">1157</td><td class="line"> gtk_tree_path_free (copy);</td></tr>
+<tr class="codeline" data-linenumber="1158"><td class="num" id="LN1158">1158</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1159"><td class="num" id="LN1159">1159</td><td class="line"> <span class='keyword'>if</span> (ref)</td></tr>
+<tr class="codeline" data-linenumber="1160"><td class="num" id="LN1160">1160</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="1161"><td class="num" id="LN1161">1161</td><td class="line"> gtk_tree_path_free (*path);</td></tr>
+<tr class="codeline" data-linenumber="1162"><td class="num" id="LN1162">1162</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1163"><td class="num" id="LN1163">1163</td><td class="line"> <span class='comment'>/* To restore the path, we get the path from the reference. But, since</span></td></tr>
+<tr class="codeline" data-linenumber="1164"><td class="num" id="LN1164">1164</td><td class="line"> <span class='comment'>we inserted a row, the path will be one index further than the</span></td></tr>
+<tr class="codeline" data-linenumber="1165"><td class="num" id="LN1165">1165</td><td class="line"> <span class='comment'>actual path of our node. We therefore call gtk_tree_path_prev */</span></td></tr>
+<tr class="codeline" data-linenumber="1166"><td class="num" id="LN1166">1166</td><td class="line"> *path = gtk_tree_row_reference_get_path (ref);</td></tr>
+<tr class="codeline" data-linenumber="1167"><td class="num" id="LN1167">1167</td><td class="line"> gtk_tree_path_prev (*path);</td></tr>
+<tr class="codeline" data-linenumber="1168"><td class="num" id="LN1168">1168</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1169"><td class="num" id="LN1169">1169</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1170"><td class="num" id="LN1170">1170</td><td class="line"> gtk_tree_row_reference_free (ref);</td></tr>
+<tr class="codeline" data-linenumber="1171"><td class="num" id="LN1171">1171</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1172"><td class="num" id="LN1172">1172</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1173"><td class="num" id="LN1173">1173</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1174"><td class="num" id="LN1174">1174</td><td class="line">row_deleted (PlumaFileBrowserStore * model,</td></tr>
+<tr class="codeline" data-linenumber="1175"><td class="num" id="LN1175">1175</td><td class="line"> <span class='keyword'>const</span> GtkTreePath * path)</td></tr>
+<tr class="codeline" data-linenumber="1176"><td class="num" id="LN1176">1176</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1177"><td class="num" id="LN1177">1177</td><td class="line"> GtkTreePath *copy = gtk_tree_path_copy (path);</td></tr>
+<tr class="codeline" data-linenumber="1178"><td class="num" id="LN1178">1178</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1179"><td class="num" id="LN1179">1179</td><td class="line"> <span class='comment'>/* Delete a copy of the actual path here because the row-deleted</span></td></tr>
+<tr class="codeline" data-linenumber="1180"><td class="num" id="LN1180">1180</td><td class="line"> <span class='comment'>signal may alter the path */</span></td></tr>
+<tr class="codeline" data-linenumber="1181"><td class="num" id="LN1181">1181</td><td class="line"> gtk_tree_model_row_deleted (<span class='macro'>GTK_TREE_MODEL(model)<span class='macro_popup'>((((GtkTreeModel*) (void *) ((model)))))</span></span>, copy);</td></tr>
+<tr class="codeline" data-linenumber="1182"><td class="num" id="LN1182">1182</td><td class="line"> gtk_tree_path_free (copy);</td></tr>
+<tr class="codeline" data-linenumber="1183"><td class="num" id="LN1183">1183</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1184"><td class="num" id="LN1184">1184</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1185"><td class="num" id="LN1185">1185</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1186"><td class="num" id="LN1186">1186</td><td class="line">model_refilter_node (PlumaFileBrowserStore * model,</td></tr>
+<tr class="codeline" data-linenumber="1187"><td class="num" id="LN1187">1187</td><td class="line"> FileBrowserNode * node,</td></tr>
+<tr class="codeline" data-linenumber="1188"><td class="num" id="LN1188">1188</td><td class="line"> GtkTreePath ** path)</td></tr>
+<tr class="codeline" data-linenumber="1189"><td class="num" id="LN1189">1189</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1190"><td class="num" id="LN1190">1190</td><td class="line"> gboolean old_visible;</td></tr>
+<tr class="codeline" data-linenumber="1191"><td class="num" id="LN1191">1191</td><td class="line"> gboolean new_visible;</td></tr>
+<tr class="codeline" data-linenumber="1192"><td class="num" id="LN1192">1192</td><td class="line"> FileBrowserNodeDir *dir;</td></tr>
+<tr class="codeline" data-linenumber="1193"><td class="num" id="LN1193">1193</td><td class="line"> GSList *item;</td></tr>
+<tr class="codeline" data-linenumber="1194"><td class="num" id="LN1194">1194</td><td class="line"> GtkTreeIter iter;</td></tr>
+<tr class="codeline" data-linenumber="1195"><td class="num" id="LN1195">1195</td><td class="line"> GtkTreePath *tmppath = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1196"><td class="num" id="LN1196">1196</td><td class="line"> gboolean in_tree;</td></tr>
+<tr class="codeline" data-linenumber="1197"><td class="num" id="LN1197">1197</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1198"><td class="num" id="LN1198">1198</td><td class="line"> <span class='keyword'>if</span> (node == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="1199"><td class="num" id="LN1199">1199</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="1200"><td class="num" id="LN1200">1200</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1201"><td class="num" id="LN1201">1201</td><td class="line"> old_visible = model_node_visibility (model, node);</td></tr>
+<tr class="codeline" data-linenumber="1202"><td class="num" id="LN1202">1202</td><td class="line"> model_node_update_visibility (model, node);</td></tr>
+<tr class="codeline" data-linenumber="1203"><td class="num" id="LN1203">1203</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1204"><td class="num" id="LN1204">1204</td><td class="line"> in_tree = node_in_tree (model, node);</td></tr>
+<tr class="codeline" data-linenumber="1205"><td class="num" id="LN1205">1205</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1206"><td class="num" id="LN1206">1206</td><td class="line"> <span class='keyword'>if</span> (path == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="1207"><td class="num" id="LN1207">1207</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="1208"><td class="num" id="LN1208">1208</td><td class="line"> <span class='keyword'>if</span> (in_tree)</td></tr>
+<tr class="codeline" data-linenumber="1209"><td class="num" id="LN1209">1209</td><td class="line"> tmppath = pluma_file_browser_store_get_path_real (model,</td></tr>
+<tr class="codeline" data-linenumber="1210"><td class="num" id="LN1210">1210</td><td class="line"> node);</td></tr>
+<tr class="codeline" data-linenumber="1211"><td class="num" id="LN1211">1211</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="1212"><td class="num" id="LN1212">1212</td><td class="line"> tmppath = gtk_tree_path_new_first ();</td></tr>
+<tr class="codeline" data-linenumber="1213"><td class="num" id="LN1213">1213</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1214"><td class="num" id="LN1214">1214</td><td class="line"> path = &amp;tmppath;</td></tr>
+<tr class="codeline" data-linenumber="1215"><td class="num" id="LN1215">1215</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1216"><td class="num" id="LN1216">1216</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1217"><td class="num" id="LN1217">1217</td><td class="line"> <span class='keyword'>if</span> (<span class='macro'>NODE_IS_DIR (node)<span class='macro_popup'>(((node)-&gt;flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_DIRECTORY<br>))</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1218"><td class="num" id="LN1218">1218</td><td class="line"> <span class='keyword'>if</span> (in_tree)</td></tr>
+<tr class="codeline" data-linenumber="1219"><td class="num" id="LN1219">1219</td><td class="line"> gtk_tree_path_down (*path);</td></tr>
+<tr class="codeline" data-linenumber="1220"><td class="num" id="LN1220">1220</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1221"><td class="num" id="LN1221">1221</td><td class="line"> dir = <span class='macro'>FILE_BROWSER_NODE_DIR (node)<span class='macro_popup'>((FileBrowserNodeDir *)(node))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1222"><td class="num" id="LN1222">1222</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1223"><td class="num" id="LN1223">1223</td><td class="line"> <span class='keyword'>for</span> (item = dir-&gt;children; item; item = item-&gt;next) {</td></tr>
+<tr class="codeline" data-linenumber="1224"><td class="num" id="LN1224">1224</td><td class="line"> model_refilter_node (model,</td></tr>
+<tr class="codeline" data-linenumber="1225"><td class="num" id="LN1225">1225</td><td class="line"> (FileBrowserNode *) (item-&gt;data),</td></tr>
+<tr class="codeline" data-linenumber="1226"><td class="num" id="LN1226">1226</td><td class="line"> path);</td></tr>
+<tr class="codeline" data-linenumber="1227"><td class="num" id="LN1227">1227</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1228"><td class="num" id="LN1228">1228</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1229"><td class="num" id="LN1229">1229</td><td class="line"> <span class='keyword'>if</span> (in_tree)</td></tr>
+<tr class="codeline" data-linenumber="1230"><td class="num" id="LN1230">1230</td><td class="line"> gtk_tree_path_up (*path);</td></tr>
+<tr class="codeline" data-linenumber="1231"><td class="num" id="LN1231">1231</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1232"><td class="num" id="LN1232">1232</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1233"><td class="num" id="LN1233">1233</td><td class="line"> <span class='keyword'>if</span> (in_tree) {</td></tr>
+<tr class="codeline" data-linenumber="1234"><td class="num" id="LN1234">1234</td><td class="line"> new_visible = model_node_visibility (model, node);</td></tr>
+<tr class="codeline" data-linenumber="1235"><td class="num" id="LN1235">1235</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1236"><td class="num" id="LN1236">1236</td><td class="line"> <span class='keyword'>if</span> (old_visible != new_visible) {</td></tr>
+<tr class="codeline" data-linenumber="1237"><td class="num" id="LN1237">1237</td><td class="line"> <span class='keyword'>if</span> (old_visible) {</td></tr>
+<tr class="codeline" data-linenumber="1238"><td class="num" id="LN1238">1238</td><td class="line"> node-&gt;inserted = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1239"><td class="num" id="LN1239">1239</td><td class="line"> row_deleted (model, *path);</td></tr>
+<tr class="codeline" data-linenumber="1240"><td class="num" id="LN1240">1240</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="1241"><td class="num" id="LN1241">1241</td><td class="line"> iter.user_data = node;</td></tr>
+<tr class="codeline" data-linenumber="1242"><td class="num" id="LN1242">1242</td><td class="line"> row_inserted (model, path, &amp;iter);</td></tr>
+<tr class="codeline" data-linenumber="1243"><td class="num" id="LN1243">1243</td><td class="line"> gtk_tree_path_next (*path);</td></tr>
+<tr class="codeline" data-linenumber="1244"><td class="num" id="LN1244">1244</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1245"><td class="num" id="LN1245">1245</td><td class="line"> } <span class='keyword'>else</span> <span class='keyword'>if</span> (old_visible) {</td></tr>
+<tr class="codeline" data-linenumber="1246"><td class="num" id="LN1246">1246</td><td class="line"> gtk_tree_path_next (*path);</td></tr>
+<tr class="codeline" data-linenumber="1247"><td class="num" id="LN1247">1247</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1248"><td class="num" id="LN1248">1248</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1249"><td class="num" id="LN1249">1249</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1250"><td class="num" id="LN1250">1250</td><td class="line"> model_check_dummy (model, node);</td></tr>
+<tr class="codeline" data-linenumber="1251"><td class="num" id="LN1251">1251</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1252"><td class="num" id="LN1252">1252</td><td class="line"> <span class='keyword'>if</span> (tmppath)</td></tr>
+<tr class="codeline" data-linenumber="1253"><td class="num" id="LN1253">1253</td><td class="line"> gtk_tree_path_free (tmppath);</td></tr>
+<tr class="codeline" data-linenumber="1254"><td class="num" id="LN1254">1254</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1255"><td class="num" id="LN1255">1255</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1256"><td class="num" id="LN1256">1256</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1257"><td class="num" id="LN1257">1257</td><td class="line">model_refilter (PlumaFileBrowserStore * model)</td></tr>
+<tr class="codeline" data-linenumber="1258"><td class="num" id="LN1258">1258</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1259"><td class="num" id="LN1259">1259</td><td class="line"> model_refilter_node (model, model-&gt;priv-&gt;root, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1260"><td class="num" id="LN1260">1260</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1261"><td class="num" id="LN1261">1261</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1262"><td class="num" id="LN1262">1262</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1263"><td class="num" id="LN1263">1263</td><td class="line">file_browser_node_set_name (FileBrowserNode * node)</td></tr>
+<tr class="codeline" data-linenumber="1264"><td class="num" id="LN1264">1264</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1265"><td class="num" id="LN1265">1265</td><td class="line"> g_free (node-&gt;name);</td></tr>
+<tr class="codeline" data-linenumber="1266"><td class="num" id="LN1266">1266</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1267"><td class="num" id="LN1267">1267</td><td class="line"> <span class='keyword'>if</span> (node-&gt;file) {</td></tr>
+<tr class="codeline" data-linenumber="1268"><td class="num" id="LN1268">1268</td><td class="line"> node-&gt;name = pluma_file_browser_utils_file_basename (node-&gt;file);</td></tr>
+<tr class="codeline" data-linenumber="1269"><td class="num" id="LN1269">1269</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="1270"><td class="num" id="LN1270">1270</td><td class="line"> node-&gt;name = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1271"><td class="num" id="LN1271">1271</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1272"><td class="num" id="LN1272">1272</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1273"><td class="num" id="LN1273">1273</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1274"><td class="num" id="LN1274">1274</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1275"><td class="num" id="LN1275">1275</td><td class="line">file_browser_node_init (FileBrowserNode * node, GFile * file,</td></tr>
+<tr class="codeline" data-linenumber="1276"><td class="num" id="LN1276">1276</td><td class="line"> FileBrowserNode * parent)</td></tr>
+<tr class="codeline" data-linenumber="1277"><td class="num" id="LN1277">1277</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1278"><td class="num" id="LN1278">1278</td><td class="line"> <span class='keyword'>if</span> (file != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1279"><td class="num" id="LN1279">1279</td><td class="line"> node-&gt;file = <span class='macro'>g_object_ref (file)<span class='macro_popup'>((__typeof__ (file)) (g_object_ref) (file))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1280"><td class="num" id="LN1280">1280</td><td class="line"> file_browser_node_set_name (node);</td></tr>
+<tr class="codeline" data-linenumber="1281"><td class="num" id="LN1281">1281</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1282"><td class="num" id="LN1282">1282</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1283"><td class="num" id="LN1283">1283</td><td class="line"> node-&gt;parent = parent;</td></tr>
+<tr class="codeline" data-linenumber="1284"><td class="num" id="LN1284">1284</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1285"><td class="num" id="LN1285">1285</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1286"><td class="num" id="LN1286">1286</td><td class="line"><span class='keyword'>static</span> FileBrowserNode *</td></tr>
+<tr class="codeline" data-linenumber="1287"><td class="num" id="LN1287">1287</td><td class="line">file_browser_node_new (GFile * file, FileBrowserNode * parent)</td></tr>
+<tr class="codeline" data-linenumber="1288"><td class="num" id="LN1288">1288</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1289"><td class="num" id="LN1289">1289</td><td class="line"> FileBrowserNode *node = <span class='macro'>g_slice_new0 (FileBrowserNode)<span class='macro_popup'>(FileBrowserNode *) (__extension__ ({ gsize __s = sizeof (FileBrowserNode<br>); gpointer __p; __p = g_slice_alloc (__s); memset (__p, 0, __s<br>); __p; }))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1290"><td class="num" id="LN1290">1290</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1291"><td class="num" id="LN1291">1291</td><td class="line"> file_browser_node_init (node, file, parent);</td></tr>
+<tr class="codeline" data-linenumber="1292"><td class="num" id="LN1292">1292</td><td class="line"> <span class='keyword'>return</span> node;</td></tr>
+<tr class="codeline" data-linenumber="1293"><td class="num" id="LN1293">1293</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1294"><td class="num" id="LN1294">1294</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1295"><td class="num" id="LN1295">1295</td><td class="line"><span class='keyword'>static</span> FileBrowserNode *</td></tr>
+<tr class="codeline" data-linenumber="1296"><td class="num" id="LN1296">1296</td><td class="line">file_browser_node_dir_new (PlumaFileBrowserStore * model,</td></tr>
+<tr class="codeline" data-linenumber="1297"><td class="num" id="LN1297">1297</td><td class="line"> GFile * file, FileBrowserNode * parent)</td></tr>
+<tr class="codeline" data-linenumber="1298"><td class="num" id="LN1298">1298</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1299"><td class="num" id="LN1299">1299</td><td class="line"> FileBrowserNode *node =</td></tr>
+<tr class="codeline" data-linenumber="1300"><td class="num" id="LN1300">1300</td><td class="line"> (FileBrowserNode *) <span class='macro'>g_slice_new0 (FileBrowserNodeDir)<span class='macro_popup'>(FileBrowserNodeDir *) (__extension__ ({ gsize __s = sizeof (<br>FileBrowserNodeDir); gpointer __p; __p = g_slice_alloc (__s);<br> memset (__p, 0, __s); __p; }))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1301"><td class="num" id="LN1301">1301</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1302"><td class="num" id="LN1302">1302</td><td class="line"> file_browser_node_init (node, file, parent);</td></tr>
+<tr class="codeline" data-linenumber="1303"><td class="num" id="LN1303">1303</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1304"><td class="num" id="LN1304">1304</td><td class="line"> node-&gt;flags |= PLUMA_FILE_BROWSER_STORE_FLAG_IS_DIRECTORY;</td></tr>
+<tr class="codeline" data-linenumber="1305"><td class="num" id="LN1305">1305</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1306"><td class="num" id="LN1306">1306</td><td class="line"> <span class='macro'>FILE_BROWSER_NODE_DIR (node)<span class='macro_popup'>((FileBrowserNodeDir *)(node))</span></span>-&gt;model = model;</td></tr>
+<tr class="codeline" data-linenumber="1307"><td class="num" id="LN1307">1307</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1308"><td class="num" id="LN1308">1308</td><td class="line"> <span class='keyword'>return</span> node;</td></tr>
+<tr class="codeline" data-linenumber="1309"><td class="num" id="LN1309">1309</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1310"><td class="num" id="LN1310">1310</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1311"><td class="num" id="LN1311">1311</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1312"><td class="num" id="LN1312">1312</td><td class="line">file_browser_node_free_children (PlumaFileBrowserStore * model,</td></tr>
+<tr class="codeline" data-linenumber="1313"><td class="num" id="LN1313">1313</td><td class="line"> FileBrowserNode * node)</td></tr>
+<tr class="codeline" data-linenumber="1314"><td class="num" id="LN1314">1314</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1315"><td class="num" id="LN1315">1315</td><td class="line"> GSList *item;</td></tr>
+<tr class="codeline" data-linenumber="1316"><td class="num" id="LN1316">1316</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1317"><td class="num" id="LN1317">1317</td><td class="line"> <span class='keyword'>if</span> (node == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="1318"><td class="num" id="LN1318">1318</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="1319"><td class="num" id="LN1319">1319</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1320"><td class="num" id="LN1320">1320</td><td class="line"> <span class='keyword'>if</span> (<span class='macro'>NODE_IS_DIR (node)<span class='macro_popup'>(((node)-&gt;flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_DIRECTORY<br>))</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1321"><td class="num" id="LN1321">1321</td><td class="line"> <span class='keyword'>for</span> (item = <span class='macro'>FILE_BROWSER_NODE_DIR (node)<span class='macro_popup'>((FileBrowserNodeDir *)(node))</span></span>-&gt;children; item;</td></tr>
+<tr class="codeline" data-linenumber="1322"><td class="num" id="LN1322">1322</td><td class="line"> item = item-&gt;next)</td></tr>
+<tr class="codeline" data-linenumber="1323"><td class="num" id="LN1323">1323</td><td class="line"> file_browser_node_free (model,</td></tr>
+<tr class="codeline" data-linenumber="1324"><td class="num" id="LN1324">1324</td><td class="line"> (FileBrowserNode *) (item-&gt;</td></tr>
+<tr class="codeline" data-linenumber="1325"><td class="num" id="LN1325">1325</td><td class="line"> data));</td></tr>
+<tr class="codeline" data-linenumber="1326"><td class="num" id="LN1326">1326</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1327"><td class="num" id="LN1327">1327</td><td class="line"> g_slist_free (<span class='macro'>FILE_BROWSER_NODE_DIR (node)<span class='macro_popup'>((FileBrowserNodeDir *)(node))</span></span>-&gt;children);</td></tr>
+<tr class="codeline" data-linenumber="1328"><td class="num" id="LN1328">1328</td><td class="line"> <span class='macro'>FILE_BROWSER_NODE_DIR (node)<span class='macro_popup'>((FileBrowserNodeDir *)(node))</span></span>-&gt;children = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1329"><td class="num" id="LN1329">1329</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1330"><td class="num" id="LN1330">1330</td><td class="line"> <span class='comment'>/* This node is no longer loaded */</span></td></tr>
+<tr class="codeline" data-linenumber="1331"><td class="num" id="LN1331">1331</td><td class="line"> node-&gt;flags &amp;= ~PLUMA_FILE_BROWSER_STORE_FLAG_LOADED;</td></tr>
+<tr class="codeline" data-linenumber="1332"><td class="num" id="LN1332">1332</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1333"><td class="num" id="LN1333">1333</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1334"><td class="num" id="LN1334">1334</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1335"><td class="num" id="LN1335">1335</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1336"><td class="num" id="LN1336">1336</td><td class="line">file_browser_node_free (PlumaFileBrowserStore * model,</td></tr>
+<tr class="codeline" data-linenumber="1337"><td class="num" id="LN1337">1337</td><td class="line"> FileBrowserNode * node)</td></tr>
+<tr class="codeline" data-linenumber="1338"><td class="num" id="LN1338">1338</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1339"><td class="num" id="LN1339">1339</td><td class="line"> gchar *uri;</td></tr>
+<tr class="codeline" data-linenumber="1340"><td class="num" id="LN1340">1340</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1341"><td class="num" id="LN1341">1341</td><td class="line"> <span class='keyword'>if</span> (node == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="1342"><td class="num" id="LN1342">1342</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="1343"><td class="num" id="LN1343">1343</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1344"><td class="num" id="LN1344">1344</td><td class="line"> <span class='keyword'>if</span> (<span class='macro'>NODE_IS_DIR (node)<span class='macro_popup'>(((node)-&gt;flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_DIRECTORY<br>))</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="1345"><td class="num" id="LN1345">1345</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="1346"><td class="num" id="LN1346">1346</td><td class="line"> FileBrowserNodeDir *dir;</td></tr>
+<tr class="codeline" data-linenumber="1347"><td class="num" id="LN1347">1347</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1348"><td class="num" id="LN1348">1348</td><td class="line"> dir = <span class='macro'>FILE_BROWSER_NODE_DIR (node)<span class='macro_popup'>((FileBrowserNodeDir *)(node))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1349"><td class="num" id="LN1349">1349</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1350"><td class="num" id="LN1350">1350</td><td class="line"> <span class='keyword'>if</span> (dir-&gt;cancellable) {</td></tr>
+<tr class="codeline" data-linenumber="1351"><td class="num" id="LN1351">1351</td><td class="line"> g_cancellable_cancel (dir-&gt;cancellable);</td></tr>
+<tr class="codeline" data-linenumber="1352"><td class="num" id="LN1352">1352</td><td class="line"> g_object_unref (dir-&gt;cancellable);</td></tr>
+<tr class="codeline" data-linenumber="1353"><td class="num" id="LN1353">1353</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1354"><td class="num" id="LN1354">1354</td><td class="line"> model_end_loading (model, node);</td></tr>
+<tr class="codeline" data-linenumber="1355"><td class="num" id="LN1355">1355</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1356"><td class="num" id="LN1356">1356</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1357"><td class="num" id="LN1357">1357</td><td class="line"> file_browser_node_free_children (model, node);</td></tr>
+<tr class="codeline" data-linenumber="1358"><td class="num" id="LN1358">1358</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1359"><td class="num" id="LN1359">1359</td><td class="line"> <span class='keyword'>if</span> (dir-&gt;monitor) {</td></tr>
+<tr class="codeline" data-linenumber="1360"><td class="num" id="LN1360">1360</td><td class="line"> g_file_monitor_cancel (dir-&gt;monitor);</td></tr>
+<tr class="codeline" data-linenumber="1361"><td class="num" id="LN1361">1361</td><td class="line"> g_object_unref (dir-&gt;monitor);</td></tr>
+<tr class="codeline" data-linenumber="1362"><td class="num" id="LN1362">1362</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1363"><td class="num" id="LN1363">1363</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1364"><td class="num" id="LN1364">1364</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1365"><td class="num" id="LN1365">1365</td><td class="line"> <span class='keyword'>if</span> (node-&gt;file)</td></tr>
+<tr class="codeline" data-linenumber="1366"><td class="num" id="LN1366">1366</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="1367"><td class="num" id="LN1367">1367</td><td class="line"> uri = g_file_get_uri (node-&gt;file);</td></tr>
+<tr class="codeline" data-linenumber="1368"><td class="num" id="LN1368">1368</td><td class="line"> g_signal_emit (model, model_signals[UNLOAD], 0, uri);</td></tr>
+<tr class="codeline" data-linenumber="1369"><td class="num" id="LN1369">1369</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1370"><td class="num" id="LN1370">1370</td><td class="line"> g_free (uri);</td></tr>
+<tr class="codeline" data-linenumber="1371"><td class="num" id="LN1371">1371</td><td class="line"> g_object_unref (node-&gt;file);</td></tr>
+<tr class="codeline" data-linenumber="1372"><td class="num" id="LN1372">1372</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1373"><td class="num" id="LN1373">1373</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1374"><td class="num" id="LN1374">1374</td><td class="line"> <span class='keyword'>if</span> (node-&gt;icon)</td></tr>
+<tr class="codeline" data-linenumber="1375"><td class="num" id="LN1375">1375</td><td class="line"> g_object_unref (node-&gt;icon);</td></tr>
+<tr class="codeline" data-linenumber="1376"><td class="num" id="LN1376">1376</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1377"><td class="num" id="LN1377">1377</td><td class="line"> <span class='keyword'>if</span> (node-&gt;emblem)</td></tr>
+<tr class="codeline" data-linenumber="1378"><td class="num" id="LN1378">1378</td><td class="line"> g_object_unref (node-&gt;emblem);</td></tr>
+<tr class="codeline" data-linenumber="1379"><td class="num" id="LN1379">1379</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1380"><td class="num" id="LN1380">1380</td><td class="line"> g_free (node-&gt;name);</td></tr>
+<tr class="codeline" data-linenumber="1381"><td class="num" id="LN1381">1381</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1382"><td class="num" id="LN1382">1382</td><td class="line"> <span class='keyword'>if</span> (<span class='macro'>NODE_IS_DIR (node)<span class='macro_popup'>(((node)-&gt;flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_DIRECTORY<br>))</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="1383"><td class="num" id="LN1383">1383</td><td class="line"> <span class='macro'>g_slice_free (FileBrowserNodeDir, (FileBrowserNodeDir *)node)<span class='macro_popup'>do { if (1) g_slice_free1 (sizeof (FileBrowserNodeDir), ((FileBrowserNodeDir<br> *)node)); else (void) ((FileBrowserNodeDir*) 0 == ((FileBrowserNodeDir<br> *)node)); } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1384"><td class="num" id="LN1384">1384</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="1385"><td class="num" id="LN1385">1385</td><td class="line"> <span class='macro'>g_slice_free (FileBrowserNode, (FileBrowserNode *)node)<span class='macro_popup'>do { if (1) g_slice_free1 (sizeof (FileBrowserNode), ((FileBrowserNode<br> *)node)); else (void) ((FileBrowserNode*) 0 == ((FileBrowserNode<br> *)node)); } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1386"><td class="num" id="LN1386">1386</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1387"><td class="num" id="LN1387">1387</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1388"><td class="num" id="LN1388">1388</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="1389"><td class="num" id="LN1389">1389</td><td class="line"> <span class='comment'>* model_remove_node_children:</span></td></tr>
+<tr class="codeline" data-linenumber="1390"><td class="num" id="LN1390">1390</td><td class="line"> <span class='comment'>* @model: the #PlumaFileBrowserStore</span></td></tr>
+<tr class="codeline" data-linenumber="1391"><td class="num" id="LN1391">1391</td><td class="line"> <span class='comment'>* @node: the FileBrowserNode to remove</span></td></tr>
+<tr class="codeline" data-linenumber="1392"><td class="num" id="LN1392">1392</td><td class="line"> <span class='comment'>* @path: the path of the node, or NULL to let the path be calculated</span></td></tr>
+<tr class="codeline" data-linenumber="1393"><td class="num" id="LN1393">1393</td><td class="line"> <span class='comment'>* @free_nodes: whether to also remove the nodes from memory</span></td></tr>
+<tr class="codeline" data-linenumber="1394"><td class="num" id="LN1394">1394</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="1395"><td class="num" id="LN1395">1395</td><td class="line"> <span class='comment'>* Removes all the children of node from the model. This function is used</span></td></tr>
+<tr class="codeline" data-linenumber="1396"><td class="num" id="LN1396">1396</td><td class="line"> <span class='comment'>* to remove the child nodes from the _model_. Don't use it to just free</span></td></tr>
+<tr class="codeline" data-linenumber="1397"><td class="num" id="LN1397">1397</td><td class="line"> <span class='comment'>* a node.</span></td></tr>
+<tr class="codeline" data-linenumber="1398"><td class="num" id="LN1398">1398</td><td class="line"> <span class='comment'>**/</span></td></tr>
+<tr class="codeline" data-linenumber="1399"><td class="num" id="LN1399">1399</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1400"><td class="num" id="LN1400">1400</td><td class="line">model_remove_node_children (PlumaFileBrowserStore * model,</td></tr>
+<tr class="codeline" data-linenumber="1401"><td class="num" id="LN1401">1401</td><td class="line"> FileBrowserNode * node,</td></tr>
+<tr class="codeline" data-linenumber="1402"><td class="num" id="LN1402">1402</td><td class="line"> GtkTreePath * path,</td></tr>
+<tr class="codeline" data-linenumber="1403"><td class="num" id="LN1403">1403</td><td class="line"> gboolean free_nodes)</td></tr>
+<tr class="codeline" data-linenumber="1404"><td class="num" id="LN1404">1404</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1405"><td class="num" id="LN1405">1405</td><td class="line"> FileBrowserNodeDir *dir;</td></tr>
+<tr class="codeline" data-linenumber="1406"><td class="num" id="LN1406">1406</td><td class="line"> GtkTreePath *path_child;</td></tr>
+<tr class="codeline" data-linenumber="1407"><td class="num" id="LN1407">1407</td><td class="line"> GSList *list;</td></tr>
+<tr class="codeline" data-linenumber="1408"><td class="num" id="LN1408">1408</td><td class="line"> GSList *item;</td></tr>
+<tr class="codeline" data-linenumber="1409"><td class="num" id="LN1409">1409</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1410"><td class="num" id="LN1410">1410</td><td class="line"> <span class='keyword'>if</span> (node == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> || !<span class='macro'>NODE_IS_DIR (node)<span class='macro_popup'>(((node)-&gt;flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_DIRECTORY<br>))</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="1411"><td class="num" id="LN1411">1411</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="1412"><td class="num" id="LN1412">1412</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1413"><td class="num" id="LN1413">1413</td><td class="line"> dir = <span class='macro'>FILE_BROWSER_NODE_DIR (node)<span class='macro_popup'>((FileBrowserNodeDir *)(node))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1414"><td class="num" id="LN1414">1414</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1415"><td class="num" id="LN1415">1415</td><td class="line"> <span class='keyword'>if</span> (dir-&gt;children == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="1416"><td class="num" id="LN1416">1416</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="1417"><td class="num" id="LN1417">1417</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1418"><td class="num" id="LN1418">1418</td><td class="line"> <span class='keyword'>if</span> (!model_node_visibility (model, node)) {</td></tr>
+<tr class="codeline" data-linenumber="1419"><td class="num" id="LN1419">1419</td><td class="line"> <span class='comment'>// Node is invisible and therefore the children can just</span></td></tr>
+<tr class="codeline" data-linenumber="1420"><td class="num" id="LN1420">1420</td><td class="line"> <span class='comment'>// be freed</span></td></tr>
+<tr class="codeline" data-linenumber="1421"><td class="num" id="LN1421">1421</td><td class="line"> <span class='keyword'>if</span> (free_nodes)</td></tr>
+<tr class="codeline" data-linenumber="1422"><td class="num" id="LN1422">1422</td><td class="line"> file_browser_node_free_children (model, node);</td></tr>
+<tr class="codeline" data-linenumber="1423"><td class="num" id="LN1423">1423</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1424"><td class="num" id="LN1424">1424</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="1425"><td class="num" id="LN1425">1425</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1426"><td class="num" id="LN1426">1426</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1427"><td class="num" id="LN1427">1427</td><td class="line"> <span class='keyword'>if</span> (path == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="1428"><td class="num" id="LN1428">1428</td><td class="line"> path_child =</td></tr>
+<tr class="codeline" data-linenumber="1429"><td class="num" id="LN1429">1429</td><td class="line"> pluma_file_browser_store_get_path_real (model, node);</td></tr>
+<tr class="codeline" data-linenumber="1430"><td class="num" id="LN1430">1430</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="1431"><td class="num" id="LN1431">1431</td><td class="line"> path_child = gtk_tree_path_copy (path);</td></tr>
+<tr class="codeline" data-linenumber="1432"><td class="num" id="LN1432">1432</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1433"><td class="num" id="LN1433">1433</td><td class="line"> gtk_tree_path_down (path_child);</td></tr>
+<tr class="codeline" data-linenumber="1434"><td class="num" id="LN1434">1434</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1435"><td class="num" id="LN1435">1435</td><td class="line"> list = g_slist_copy (dir-&gt;children);</td></tr>
+<tr class="codeline" data-linenumber="1436"><td class="num" id="LN1436">1436</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1437"><td class="num" id="LN1437">1437</td><td class="line"> <span class='keyword'>for</span> (item = list; item; item = item-&gt;next) {</td></tr>
+<tr class="codeline" data-linenumber="1438"><td class="num" id="LN1438">1438</td><td class="line"> model_remove_node (model, (FileBrowserNode *) (item-&gt;data),</td></tr>
+<tr class="codeline" data-linenumber="1439"><td class="num" id="LN1439">1439</td><td class="line"> path_child, free_nodes);</td></tr>
+<tr class="codeline" data-linenumber="1440"><td class="num" id="LN1440">1440</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1441"><td class="num" id="LN1441">1441</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1442"><td class="num" id="LN1442">1442</td><td class="line"> g_slist_free (list);</td></tr>
+<tr class="codeline" data-linenumber="1443"><td class="num" id="LN1443">1443</td><td class="line"> gtk_tree_path_free (path_child);</td></tr>
+<tr class="codeline" data-linenumber="1444"><td class="num" id="LN1444">1444</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1445"><td class="num" id="LN1445">1445</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1446"><td class="num" id="LN1446">1446</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="1447"><td class="num" id="LN1447">1447</td><td class="line"> <span class='comment'>* model_remove_node:</span></td></tr>
+<tr class="codeline" data-linenumber="1448"><td class="num" id="LN1448">1448</td><td class="line"> <span class='comment'>* @model: the #PlumaFileBrowserStore</span></td></tr>
+<tr class="codeline" data-linenumber="1449"><td class="num" id="LN1449">1449</td><td class="line"> <span class='comment'>* @node: the FileBrowserNode to remove</span></td></tr>
+<tr class="codeline" data-linenumber="1450"><td class="num" id="LN1450">1450</td><td class="line"> <span class='comment'>* @path: the path to use to remove this node, or NULL to use the path</span></td></tr>
+<tr class="codeline" data-linenumber="1451"><td class="num" id="LN1451">1451</td><td class="line"> <span class='comment'>* calculated from the node itself</span></td></tr>
+<tr class="codeline" data-linenumber="1452"><td class="num" id="LN1452">1452</td><td class="line"> <span class='comment'>* @free_nodes: whether to also remove the nodes from memory</span></td></tr>
+<tr class="codeline" data-linenumber="1453"><td class="num" id="LN1453">1453</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="1454"><td class="num" id="LN1454">1454</td><td class="line"> <span class='comment'>* Removes this node and all its children from the model. This function is used</span></td></tr>
+<tr class="codeline" data-linenumber="1455"><td class="num" id="LN1455">1455</td><td class="line"> <span class='comment'>* to remove the node from the _model_. Don't use it to just free</span></td></tr>
+<tr class="codeline" data-linenumber="1456"><td class="num" id="LN1456">1456</td><td class="line"> <span class='comment'>* a node.</span></td></tr>
+<tr class="codeline" data-linenumber="1457"><td class="num" id="LN1457">1457</td><td class="line"> <span class='comment'>**/</span></td></tr>
+<tr class="codeline" data-linenumber="1458"><td class="num" id="LN1458">1458</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1459"><td class="num" id="LN1459">1459</td><td class="line">model_remove_node (PlumaFileBrowserStore * model,</td></tr>
+<tr class="codeline" data-linenumber="1460"><td class="num" id="LN1460">1460</td><td class="line"> FileBrowserNode * node,</td></tr>
+<tr class="codeline" data-linenumber="1461"><td class="num" id="LN1461">1461</td><td class="line"> GtkTreePath * path,</td></tr>
+<tr class="codeline" data-linenumber="1462"><td class="num" id="LN1462">1462</td><td class="line"> gboolean free_nodes)</td></tr>
+<tr class="codeline" data-linenumber="1463"><td class="num" id="LN1463">1463</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1464"><td class="num" id="LN1464">1464</td><td class="line"> gboolean free_path = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1465"><td class="num" id="LN1465">1465</td><td class="line"> FileBrowserNode *parent;</td></tr>
+<tr class="codeline" data-linenumber="1466"><td class="num" id="LN1466">1466</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1467"><td class="num" id="LN1467">1467</td><td class="line"> <span class='keyword'>if</span> (path == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1468"><td class="num" id="LN1468">1468</td><td class="line"> path =</td></tr>
+<tr class="codeline" data-linenumber="1469"><td class="num" id="LN1469">1469</td><td class="line"> pluma_file_browser_store_get_path_real (model, node);</td></tr>
+<tr class="codeline" data-linenumber="1470"><td class="num" id="LN1470">1470</td><td class="line"> free_path = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1471"><td class="num" id="LN1471">1471</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1472"><td class="num" id="LN1472">1472</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1473"><td class="num" id="LN1473">1473</td><td class="line"> model_remove_node_children (model, node, path, free_nodes);</td></tr>
+<tr class="codeline" data-linenumber="1474"><td class="num" id="LN1474">1474</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1475"><td class="num" id="LN1475">1475</td><td class="line"> <span class='comment'>/* Only delete if the node is visible in the tree (but only when it's</span></td></tr>
+<tr class="codeline" data-linenumber="1476"><td class="num" id="LN1476">1476</td><td class="line"> <span class='comment'>not the virtual root) */</span></td></tr>
+<tr class="codeline" data-linenumber="1477"><td class="num" id="LN1477">1477</td><td class="line"> <span class='keyword'>if</span> (model_node_visibility (model, node) &amp;&amp; node != model-&gt;priv-&gt;virtual_root)</td></tr>
+<tr class="codeline" data-linenumber="1478"><td class="num" id="LN1478">1478</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="1479"><td class="num" id="LN1479">1479</td><td class="line"> node-&gt;inserted = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1480"><td class="num" id="LN1480">1480</td><td class="line"> row_deleted (model, path);</td></tr>
+<tr class="codeline" data-linenumber="1481"><td class="num" id="LN1481">1481</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1482"><td class="num" id="LN1482">1482</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1483"><td class="num" id="LN1483">1483</td><td class="line"> <span class='keyword'>if</span> (free_path)</td></tr>
+<tr class="codeline" data-linenumber="1484"><td class="num" id="LN1484">1484</td><td class="line"> gtk_tree_path_free (path);</td></tr>
+<tr class="codeline" data-linenumber="1485"><td class="num" id="LN1485">1485</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1486"><td class="num" id="LN1486">1486</td><td class="line"> parent = node-&gt;parent;</td></tr>
+<tr class="codeline" data-linenumber="1487"><td class="num" id="LN1487">1487</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1488"><td class="num" id="LN1488">1488</td><td class="line"> <span class='keyword'>if</span> (free_nodes) {</td></tr>
+<tr class="codeline" data-linenumber="1489"><td class="num" id="LN1489">1489</td><td class="line"> <span class='comment'>/* Remove the node from the parents children list */</span></td></tr>
+<tr class="codeline" data-linenumber="1490"><td class="num" id="LN1490">1490</td><td class="line"> <span class='keyword'>if</span> (parent)</td></tr>
+<tr class="codeline" data-linenumber="1491"><td class="num" id="LN1491">1491</td><td class="line"> <span class='macro'>FILE_BROWSER_NODE_DIR (node-&gt;parent)<span class='macro_popup'>((FileBrowserNodeDir *)(node-&gt;parent))</span></span>-&gt;children =</td></tr>
+<tr class="codeline" data-linenumber="1492"><td class="num" id="LN1492">1492</td><td class="line"> g_slist_remove (<span class='macro'>FILE_BROWSER_NODE_DIR<span class='macro_popup'>((FileBrowserNodeDir *)(node-&gt;parent))</span></span></td></tr>
+<tr class="codeline" data-linenumber="1493"><td class="num" id="LN1493">1493</td><td class="line"> <span class='macro'>(node-&gt;parent)<span class='macro_popup'>((FileBrowserNodeDir *)(node-&gt;parent))</span></span>-&gt;children,</td></tr>
+<tr class="codeline" data-linenumber="1494"><td class="num" id="LN1494">1494</td><td class="line"> node);</td></tr>
+<tr class="codeline" data-linenumber="1495"><td class="num" id="LN1495">1495</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1496"><td class="num" id="LN1496">1496</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1497"><td class="num" id="LN1497">1497</td><td class="line"> <span class='comment'>/* If this is the virtual root, than set the parent as the virtual root */</span></td></tr>
+<tr class="codeline" data-linenumber="1498"><td class="num" id="LN1498">1498</td><td class="line"> <span class='keyword'>if</span> (node == model-&gt;priv-&gt;virtual_root)</td></tr>
+<tr class="codeline" data-linenumber="1499"><td class="num" id="LN1499">1499</td><td class="line"> set_virtual_root_from_node (model, parent);</td></tr>
+<tr class="codeline" data-linenumber="1500"><td class="num" id="LN1500">1500</td><td class="line"> <span class='keyword'>else</span> <span class='keyword'>if</span> (parent &amp;&amp; model_node_visibility (model, parent) &amp;&amp; !(free_nodes &amp;&amp; <span class='macro'>NODE_IS_DUMMY(node)<span class='macro_popup'>(((node)-&gt;flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_DUMMY<br>))</span></span>))</td></tr>
+<tr class="codeline" data-linenumber="1501"><td class="num" id="LN1501">1501</td><td class="line"> model_check_dummy (model, parent);</td></tr>
+<tr class="codeline" data-linenumber="1502"><td class="num" id="LN1502">1502</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1503"><td class="num" id="LN1503">1503</td><td class="line"> <span class='comment'>/* Now free the node if necessary */</span></td></tr>
+<tr class="codeline" data-linenumber="1504"><td class="num" id="LN1504">1504</td><td class="line"> <span class='keyword'>if</span> (free_nodes)</td></tr>
+<tr class="codeline" data-linenumber="1505"><td class="num" id="LN1505">1505</td><td class="line"> file_browser_node_free (model, node);</td></tr>
+<tr class="codeline" data-linenumber="1506"><td class="num" id="LN1506">1506</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1507"><td class="num" id="LN1507">1507</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1508"><td class="num" id="LN1508">1508</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="1509"><td class="num" id="LN1509">1509</td><td class="line"> <span class='comment'>* model_clear:</span></td></tr>
+<tr class="codeline" data-linenumber="1510"><td class="num" id="LN1510">1510</td><td class="line"> <span class='comment'>* @model: the #PlumaFileBrowserStore</span></td></tr>
+<tr class="codeline" data-linenumber="1511"><td class="num" id="LN1511">1511</td><td class="line"> <span class='comment'>* @free_nodes: whether to also remove the nodes from memory</span></td></tr>
+<tr class="codeline" data-linenumber="1512"><td class="num" id="LN1512">1512</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="1513"><td class="num" id="LN1513">1513</td><td class="line"> <span class='comment'>* Removes all nodes from the model. This function is used</span></td></tr>
+<tr class="codeline" data-linenumber="1514"><td class="num" id="LN1514">1514</td><td class="line"> <span class='comment'>* to remove all the nodes from the _model_. Don't use it to just free the</span></td></tr>
+<tr class="codeline" data-linenumber="1515"><td class="num" id="LN1515">1515</td><td class="line"> <span class='comment'>* nodes in the model.</span></td></tr>
+<tr class="codeline" data-linenumber="1516"><td class="num" id="LN1516">1516</td><td class="line"> <span class='comment'>**/</span></td></tr>
+<tr class="codeline" data-linenumber="1517"><td class="num" id="LN1517">1517</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1518"><td class="num" id="LN1518">1518</td><td class="line">model_clear (PlumaFileBrowserStore * model, gboolean free_nodes)</td></tr>
+<tr class="codeline" data-linenumber="1519"><td class="num" id="LN1519">1519</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1520"><td class="num" id="LN1520">1520</td><td class="line"> GtkTreePath *path;</td></tr>
+<tr class="codeline" data-linenumber="1521"><td class="num" id="LN1521">1521</td><td class="line"> FileBrowserNodeDir *dir;</td></tr>
+<tr class="codeline" data-linenumber="1522"><td class="num" id="LN1522">1522</td><td class="line"> FileBrowserNode *dummy;</td></tr>
+<tr class="codeline" data-linenumber="1523"><td class="num" id="LN1523">1523</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1524"><td class="num" id="LN1524">1524</td><td class="line"> path = gtk_tree_path_new ();</td></tr>
+<tr class="codeline" data-linenumber="1525"><td class="num" id="LN1525">1525</td><td class="line"> model_remove_node_children (model, model-&gt;priv-&gt;virtual_root, path,</td></tr>
+<tr class="codeline" data-linenumber="1526"><td class="num" id="LN1526">1526</td><td class="line"> free_nodes);</td></tr>
+<tr class="codeline" data-linenumber="1527"><td class="num" id="LN1527">1527</td><td class="line"> gtk_tree_path_free (path);</td></tr>
+<tr class="codeline" data-linenumber="1528"><td class="num" id="LN1528">1528</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1529"><td class="num" id="LN1529">1529</td><td class="line"> <span class='comment'>/* Remove the dummy if there is one */</span></td></tr>
+<tr class="codeline" data-linenumber="1530"><td class="num" id="LN1530">1530</td><td class="line"> <span class='keyword'>if</span> (model-&gt;priv-&gt;virtual_root) {</td></tr>
+<tr class="codeline" data-linenumber="1531"><td class="num" id="LN1531">1531</td><td class="line"> dir = <span class='macro'>FILE_BROWSER_NODE_DIR (model-&gt;priv-&gt;virtual_root)<span class='macro_popup'>((FileBrowserNodeDir *)(model-&gt;priv-&gt;virtual_root))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1532"><td class="num" id="LN1532">1532</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1533"><td class="num" id="LN1533">1533</td><td class="line"> <span class='keyword'>if</span> (dir-&gt;children != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1534"><td class="num" id="LN1534">1534</td><td class="line"> dummy = (FileBrowserNode *) (dir-&gt;children-&gt;data);</td></tr>
+<tr class="codeline" data-linenumber="1535"><td class="num" id="LN1535">1535</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1536"><td class="num" id="LN1536">1536</td><td class="line"> <span class='keyword'>if</span> (<span class='macro'>NODE_IS_DUMMY (dummy)<span class='macro_popup'>(((dummy)-&gt;flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_DUMMY<br>))</span></span></td></tr>
+<tr class="codeline" data-linenumber="1537"><td class="num" id="LN1537">1537</td><td class="line"> &amp;&amp; model_node_visibility (model, dummy)) {</td></tr>
+<tr class="codeline" data-linenumber="1538"><td class="num" id="LN1538">1538</td><td class="line"> path = gtk_tree_path_new_first ();</td></tr>
+<tr class="codeline" data-linenumber="1539"><td class="num" id="LN1539">1539</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1540"><td class="num" id="LN1540">1540</td><td class="line"> dummy-&gt;inserted = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1541"><td class="num" id="LN1541">1541</td><td class="line"> row_deleted (model, path);</td></tr>
+<tr class="codeline" data-linenumber="1542"><td class="num" id="LN1542">1542</td><td class="line"> gtk_tree_path_free (path);</td></tr>
+<tr class="codeline" data-linenumber="1543"><td class="num" id="LN1543">1543</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1544"><td class="num" id="LN1544">1544</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1545"><td class="num" id="LN1545">1545</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1546"><td class="num" id="LN1546">1546</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1547"><td class="num" id="LN1547">1547</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1548"><td class="num" id="LN1548">1548</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1549"><td class="num" id="LN1549">1549</td><td class="line">file_browser_node_unload (PlumaFileBrowserStore * model,</td></tr>
+<tr class="codeline" data-linenumber="1550"><td class="num" id="LN1550">1550</td><td class="line"> FileBrowserNode * node, gboolean remove_children)</td></tr>
+<tr class="codeline" data-linenumber="1551"><td class="num" id="LN1551">1551</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1552"><td class="num" id="LN1552">1552</td><td class="line"> FileBrowserNodeDir *dir;</td></tr>
+<tr class="codeline" data-linenumber="1553"><td class="num" id="LN1553">1553</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1554"><td class="num" id="LN1554">1554</td><td class="line"> <span class='keyword'>if</span> (node == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="1555"><td class="num" id="LN1555">1555</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="1556"><td class="num" id="LN1556">1556</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1557"><td class="num" id="LN1557">1557</td><td class="line"> <span class='keyword'>if</span> (!<span class='macro'>NODE_IS_DIR (node)<span class='macro_popup'>(((node)-&gt;flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_DIRECTORY<br>))</span></span> || !<span class='macro'>NODE_LOADED (node)<span class='macro_popup'>(((node)-&gt;flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_LOADED<br>))</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="1558"><td class="num" id="LN1558">1558</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="1559"><td class="num" id="LN1559">1559</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1560"><td class="num" id="LN1560">1560</td><td class="line"> dir = <span class='macro'>FILE_BROWSER_NODE_DIR (node)<span class='macro_popup'>((FileBrowserNodeDir *)(node))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1561"><td class="num" id="LN1561">1561</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1562"><td class="num" id="LN1562">1562</td><td class="line"> <span class='keyword'>if</span> (remove_children)</td></tr>
+<tr class="codeline" data-linenumber="1563"><td class="num" id="LN1563">1563</td><td class="line"> model_remove_node_children (model, node, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1564"><td class="num" id="LN1564">1564</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1565"><td class="num" id="LN1565">1565</td><td class="line"> <span class='keyword'>if</span> (dir-&gt;cancellable) {</td></tr>
+<tr class="codeline" data-linenumber="1566"><td class="num" id="LN1566">1566</td><td class="line"> g_cancellable_cancel (dir-&gt;cancellable);</td></tr>
+<tr class="codeline" data-linenumber="1567"><td class="num" id="LN1567">1567</td><td class="line"> g_object_unref (dir-&gt;cancellable);</td></tr>
+<tr class="codeline" data-linenumber="1568"><td class="num" id="LN1568">1568</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1569"><td class="num" id="LN1569">1569</td><td class="line"> model_end_loading (model, node);</td></tr>
+<tr class="codeline" data-linenumber="1570"><td class="num" id="LN1570">1570</td><td class="line"> dir-&gt;cancellable = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1571"><td class="num" id="LN1571">1571</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1572"><td class="num" id="LN1572">1572</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1573"><td class="num" id="LN1573">1573</td><td class="line"> <span class='keyword'>if</span> (dir-&gt;monitor) {</td></tr>
+<tr class="codeline" data-linenumber="1574"><td class="num" id="LN1574">1574</td><td class="line"> g_file_monitor_cancel (dir-&gt;monitor);</td></tr>
+<tr class="codeline" data-linenumber="1575"><td class="num" id="LN1575">1575</td><td class="line"> g_object_unref (dir-&gt;monitor);</td></tr>
+<tr class="codeline" data-linenumber="1576"><td class="num" id="LN1576">1576</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1577"><td class="num" id="LN1577">1577</td><td class="line"> dir-&gt;monitor = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1578"><td class="num" id="LN1578">1578</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1579"><td class="num" id="LN1579">1579</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1580"><td class="num" id="LN1580">1580</td><td class="line"> node-&gt;flags &amp;= ~PLUMA_FILE_BROWSER_STORE_FLAG_LOADED;</td></tr>
+<tr class="codeline" data-linenumber="1581"><td class="num" id="LN1581">1581</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1582"><td class="num" id="LN1582">1582</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1583"><td class="num" id="LN1583">1583</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1584"><td class="num" id="LN1584">1584</td><td class="line">model_recomposite_icon_real (PlumaFileBrowserStore * tree_model,</td></tr>
+<tr class="codeline" data-linenumber="1585"><td class="num" id="LN1585">1585</td><td class="line"> FileBrowserNode * node,</td></tr>
+<tr class="codeline" data-linenumber="1586"><td class="num" id="LN1586">1586</td><td class="line"> GFileInfo * info)</td></tr>
+<tr class="codeline" data-linenumber="1587"><td class="num" id="LN1587">1587</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1588"><td class="num" id="LN1588">1588</td><td class="line"> GdkPixbuf *icon;</td></tr>
+<tr class="codeline" data-linenumber="1589"><td class="num" id="LN1589">1589</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1590"><td class="num" id="LN1590">1590</td><td class="line"> <span class='macro'>g_return_if_fail (PLUMA_IS_FILE_BROWSER_STORE (tree_model))<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_213<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((tree_model)); GType __t = ((pluma_file_browser_store_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_213 = 1; else _g_boolean_var_213 =<br> 0; _g_boolean_var_213; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "PLUMA_IS_FILE_BROWSER_STORE (tree_model)"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1591"><td class="num" id="LN1591">1591</td><td class="line"> <span class='macro'>g_return_if_fail (node != NULL)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_214<br>; if (node != ((void*)0)) _g_boolean_var_214 = 1; else _g_boolean_var_214<br> = 0; _g_boolean_var_214; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "node != NULL"); return<br>; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1592"><td class="num" id="LN1592">1592</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1593"><td class="num" id="LN1593">1593</td><td class="line"> <span class='keyword'>if</span> (node-&gt;file == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="1594"><td class="num" id="LN1594">1594</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="1595"><td class="num" id="LN1595">1595</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1596"><td class="num" id="LN1596">1596</td><td class="line"> <span class='keyword'>if</span> (info) {</td></tr>
+<tr class="codeline" data-linenumber="1597"><td class="num" id="LN1597">1597</td><td class="line"> GIcon *gicon = g_file_info_get_icon (info);</td></tr>
+<tr class="codeline" data-linenumber="1598"><td class="num" id="LN1598">1598</td><td class="line"> <span class='keyword'>if</span> (gicon != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="1599"><td class="num" id="LN1599">1599</td><td class="line"> icon = pluma_file_browser_utils_pixbuf_from_icon (gicon, GTK_ICON_SIZE_MENU);</td></tr>
+<tr class="codeline" data-linenumber="1600"><td class="num" id="LN1600">1600</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="1601"><td class="num" id="LN1601">1601</td><td class="line"> icon = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1602"><td class="num" id="LN1602">1602</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="1603"><td class="num" id="LN1603">1603</td><td class="line"> icon = pluma_file_browser_utils_pixbuf_from_file (node-&gt;file, GTK_ICON_SIZE_MENU);</td></tr>
+<tr class="codeline" data-linenumber="1604"><td class="num" id="LN1604">1604</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1605"><td class="num" id="LN1605">1605</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1606"><td class="num" id="LN1606">1606</td><td class="line"> <span class='keyword'>if</span> (node-&gt;icon)</td></tr>
+<tr class="codeline" data-linenumber="1607"><td class="num" id="LN1607">1607</td><td class="line"> g_object_unref (node-&gt;icon);</td></tr>
+<tr class="codeline" data-linenumber="1608"><td class="num" id="LN1608">1608</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1609"><td class="num" id="LN1609">1609</td><td class="line"> <span class='keyword'>if</span> (node-&gt;emblem) {</td></tr>
+<tr class="codeline" data-linenumber="1610"><td class="num" id="LN1610">1610</td><td class="line"> gint icon_size;</td></tr>
+<tr class="codeline" data-linenumber="1611"><td class="num" id="LN1611">1611</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1612"><td class="num" id="LN1612">1612</td><td class="line"> gtk_icon_size_lookup (GTK_ICON_SIZE_MENU, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, &amp;icon_size);</td></tr>
+<tr class="codeline" data-linenumber="1613"><td class="num" id="LN1613">1613</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1614"><td class="num" id="LN1614">1614</td><td class="line"> <span class='keyword'>if</span> (icon == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1615"><td class="num" id="LN1615">1615</td><td class="line"> node-&gt;icon =</td></tr>
+<tr class="codeline" data-linenumber="1616"><td class="num" id="LN1616">1616</td><td class="line"> gdk_pixbuf_new (gdk_pixbuf_get_colorspace (node-&gt;emblem),</td></tr>
+<tr class="codeline" data-linenumber="1617"><td class="num" id="LN1617">1617</td><td class="line"> gdk_pixbuf_get_has_alpha (node-&gt;emblem),</td></tr>
+<tr class="codeline" data-linenumber="1618"><td class="num" id="LN1618">1618</td><td class="line"> gdk_pixbuf_get_bits_per_sample (node-&gt;emblem),</td></tr>
+<tr class="codeline" data-linenumber="1619"><td class="num" id="LN1619">1619</td><td class="line"> icon_size,</td></tr>
+<tr class="codeline" data-linenumber="1620"><td class="num" id="LN1620">1620</td><td class="line"> icon_size);</td></tr>
+<tr class="codeline" data-linenumber="1621"><td class="num" id="LN1621">1621</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="1622"><td class="num" id="LN1622">1622</td><td class="line"> node-&gt;icon = gdk_pixbuf_copy (icon);</td></tr>
+<tr class="codeline" data-linenumber="1623"><td class="num" id="LN1623">1623</td><td class="line"> g_object_unref (icon);</td></tr>
+<tr class="codeline" data-linenumber="1624"><td class="num" id="LN1624">1624</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1625"><td class="num" id="LN1625">1625</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1626"><td class="num" id="LN1626">1626</td><td class="line"> gdk_pixbuf_composite (node-&gt;emblem, node-&gt;icon,</td></tr>
+<tr class="codeline" data-linenumber="1627"><td class="num" id="LN1627">1627</td><td class="line"> icon_size - 10, icon_size - 10, 10,</td></tr>
+<tr class="codeline" data-linenumber="1628"><td class="num" id="LN1628">1628</td><td class="line"> 10, icon_size - 10, icon_size - 10,</td></tr>
+<tr class="codeline" data-linenumber="1629"><td class="num" id="LN1629">1629</td><td class="line"> 1, 1, GDK_INTERP_NEAREST, 255);</td></tr>
+<tr class="codeline" data-linenumber="1630"><td class="num" id="LN1630">1630</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="1631"><td class="num" id="LN1631">1631</td><td class="line"> node-&gt;icon = icon;</td></tr>
+<tr class="codeline" data-linenumber="1632"><td class="num" id="LN1632">1632</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1633"><td class="num" id="LN1633">1633</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1634"><td class="num" id="LN1634">1634</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1635"><td class="num" id="LN1635">1635</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1636"><td class="num" id="LN1636">1636</td><td class="line">model_recomposite_icon (PlumaFileBrowserStore * tree_model,</td></tr>
+<tr class="codeline" data-linenumber="1637"><td class="num" id="LN1637">1637</td><td class="line"> GtkTreeIter * iter)</td></tr>
+<tr class="codeline" data-linenumber="1638"><td class="num" id="LN1638">1638</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1639"><td class="num" id="LN1639">1639</td><td class="line"> <span class='macro'>g_return_if_fail (PLUMA_IS_FILE_BROWSER_STORE (tree_model))<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_215<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((tree_model)); GType __t = ((pluma_file_browser_store_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_215 = 1; else _g_boolean_var_215 =<br> 0; _g_boolean_var_215; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "PLUMA_IS_FILE_BROWSER_STORE (tree_model)"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1640"><td class="num" id="LN1640">1640</td><td class="line"> <span class='macro'>g_return_if_fail (iter != NULL)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_216<br>; if (iter != ((void*)0)) _g_boolean_var_216 = 1; else _g_boolean_var_216<br> = 0; _g_boolean_var_216; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "iter != NULL"); return<br>; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1641"><td class="num" id="LN1641">1641</td><td class="line"> <span class='macro'>g_return_if_fail (iter-&gt;user_data != NULL)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_217<br>; if (iter-&gt;user_data != ((void*)0)) _g_boolean_var_217 = 1<br>; else _g_boolean_var_217 = 0; _g_boolean_var_217; }), 1))) {<br> } else { g_return_if_fail_warning (((gchar*) 0), ((const char<br>*) (__func__)), "iter-&gt;user_data != NULL"); return; } } while<br> (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1642"><td class="num" id="LN1642">1642</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1643"><td class="num" id="LN1643">1643</td><td class="line"> model_recomposite_icon_real (tree_model,</td></tr>
+<tr class="codeline" data-linenumber="1644"><td class="num" id="LN1644">1644</td><td class="line"> (FileBrowserNode *) (iter-&gt;user_data),</td></tr>
+<tr class="codeline" data-linenumber="1645"><td class="num" id="LN1645">1645</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1646"><td class="num" id="LN1646">1646</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1647"><td class="num" id="LN1647">1647</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1648"><td class="num" id="LN1648">1648</td><td class="line"><span class='keyword'>static</span> FileBrowserNode *</td></tr>
+<tr class="codeline" data-linenumber="1649"><td class="num" id="LN1649">1649</td><td class="line">model_create_dummy_node (PlumaFileBrowserStore * model,</td></tr>
+<tr class="codeline" data-linenumber="1650"><td class="num" id="LN1650">1650</td><td class="line"> FileBrowserNode * parent)</td></tr>
+<tr class="codeline" data-linenumber="1651"><td class="num" id="LN1651">1651</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1652"><td class="num" id="LN1652">1652</td><td class="line"> FileBrowserNode *dummy;</td></tr>
+<tr class="codeline" data-linenumber="1653"><td class="num" id="LN1653">1653</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1654"><td class="num" id="LN1654">1654</td><td class="line"> dummy = file_browser_node_new (<span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, parent);</td></tr>
+<tr class="codeline" data-linenumber="1655"><td class="num" id="LN1655">1655</td><td class="line"> dummy-&gt;name = <span class='macro'>g_strdup (_(<span class='string_literal'>"(Empty)"</span>))<span class='macro_popup'>g_strdup_inline (((char *) g_dgettext ("pluma", "(Empty)")))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1656"><td class="num" id="LN1656">1656</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1657"><td class="num" id="LN1657">1657</td><td class="line"> dummy-&gt;flags |= PLUMA_FILE_BROWSER_STORE_FLAG_IS_DUMMY;</td></tr>
+<tr class="codeline" data-linenumber="1658"><td class="num" id="LN1658">1658</td><td class="line"> dummy-&gt;flags |= PLUMA_FILE_BROWSER_STORE_FLAG_IS_HIDDEN;</td></tr>
+<tr class="codeline" data-linenumber="1659"><td class="num" id="LN1659">1659</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1660"><td class="num" id="LN1660">1660</td><td class="line"> <span class='keyword'>return</span> dummy;</td></tr>
+<tr class="codeline" data-linenumber="1661"><td class="num" id="LN1661">1661</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1662"><td class="num" id="LN1662">1662</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1663"><td class="num" id="LN1663">1663</td><td class="line"><span class='keyword'>static</span> FileBrowserNode *</td></tr>
+<tr class="codeline" data-linenumber="1664"><td class="num" id="LN1664">1664</td><td class="line">model_add_dummy_node (PlumaFileBrowserStore * model,</td></tr>
+<tr class="codeline" data-linenumber="1665"><td class="num" id="LN1665">1665</td><td class="line"> FileBrowserNode * parent)</td></tr>
+<tr class="codeline" data-linenumber="1666"><td class="num" id="LN1666">1666</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1667"><td class="num" id="LN1667">1667</td><td class="line"> FileBrowserNode *dummy;</td></tr>
+<tr class="codeline" data-linenumber="1668"><td class="num" id="LN1668">1668</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1669"><td class="num" id="LN1669">1669</td><td class="line"> dummy = model_create_dummy_node (model, parent);</td></tr>
+<tr class="codeline" data-linenumber="1670"><td class="num" id="LN1670">1670</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1671"><td class="num" id="LN1671">1671</td><td class="line"> <span class='keyword'>if</span> (model_node_visibility (model, parent))</td></tr>
+<tr class="codeline" data-linenumber="1672"><td class="num" id="LN1672">1672</td><td class="line"> dummy-&gt;flags &amp;= ~PLUMA_FILE_BROWSER_STORE_FLAG_IS_HIDDEN;</td></tr>
+<tr class="codeline" data-linenumber="1673"><td class="num" id="LN1673">1673</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1674"><td class="num" id="LN1674">1674</td><td class="line"> model_add_node (model, dummy, parent);</td></tr>
+<tr class="codeline" data-linenumber="1675"><td class="num" id="LN1675">1675</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1676"><td class="num" id="LN1676">1676</td><td class="line"> <span class='keyword'>return</span> dummy;</td></tr>
+<tr class="codeline" data-linenumber="1677"><td class="num" id="LN1677">1677</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1678"><td class="num" id="LN1678">1678</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1679"><td class="num" id="LN1679">1679</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1680"><td class="num" id="LN1680">1680</td><td class="line">model_check_dummy (PlumaFileBrowserStore * model, FileBrowserNode * node)</td></tr>
+<tr class="codeline" data-linenumber="1681"><td class="num" id="LN1681">1681</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1682"><td class="num" id="LN1682">1682</td><td class="line"> <span class='comment'>// Hide the dummy child if needed</span></td></tr>
+<tr class="codeline" data-linenumber="1683"><td class="num" id="LN1683">1683</td><td class="line"> <span class='keyword'>if</span> (<span class='macro'>NODE_IS_DIR (node)<span class='macro_popup'>(((node)-&gt;flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_DIRECTORY<br>))</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1684"><td class="num" id="LN1684">1684</td><td class="line"> FileBrowserNode *dummy;</td></tr>
+<tr class="codeline" data-linenumber="1685"><td class="num" id="LN1685">1685</td><td class="line"> GtkTreeIter iter;</td></tr>
+<tr class="codeline" data-linenumber="1686"><td class="num" id="LN1686">1686</td><td class="line"> GtkTreePath *path;</td></tr>
+<tr class="codeline" data-linenumber="1687"><td class="num" id="LN1687">1687</td><td class="line"> guint flags;</td></tr>
+<tr class="codeline" data-linenumber="1688"><td class="num" id="LN1688">1688</td><td class="line"> FileBrowserNodeDir *dir;</td></tr>
+<tr class="codeline" data-linenumber="1689"><td class="num" id="LN1689">1689</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1690"><td class="num" id="LN1690">1690</td><td class="line"> dir = <span class='macro'>FILE_BROWSER_NODE_DIR (node)<span class='macro_popup'>((FileBrowserNodeDir *)(node))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1691"><td class="num" id="LN1691">1691</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1692"><td class="num" id="LN1692">1692</td><td class="line"> <span class='keyword'>if</span> (dir-&gt;children == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1693"><td class="num" id="LN1693">1693</td><td class="line"> model_add_dummy_node (model, node);</td></tr>
+<tr class="codeline" data-linenumber="1694"><td class="num" id="LN1694">1694</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="1695"><td class="num" id="LN1695">1695</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1696"><td class="num" id="LN1696">1696</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1697"><td class="num" id="LN1697">1697</td><td class="line"> dummy = (FileBrowserNode *) (dir-&gt;children-&gt;data);</td></tr>
+<tr class="codeline" data-linenumber="1698"><td class="num" id="LN1698">1698</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1699"><td class="num" id="LN1699">1699</td><td class="line"> <span class='keyword'>if</span> (!<span class='macro'>NODE_IS_DUMMY (dummy)<span class='macro_popup'>(((dummy)-&gt;flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_DUMMY<br>))</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1700"><td class="num" id="LN1700">1700</td><td class="line"> dummy = model_create_dummy_node (model, node);</td></tr>
+<tr class="codeline" data-linenumber="1701"><td class="num" id="LN1701">1701</td><td class="line"> dir-&gt;children = g_slist_prepend (dir-&gt;children, dummy);</td></tr>
+<tr class="codeline" data-linenumber="1702"><td class="num" id="LN1702">1702</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1703"><td class="num" id="LN1703">1703</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1704"><td class="num" id="LN1704">1704</td><td class="line"> <span class='keyword'>if</span> (!model_node_visibility (model, node)) {</td></tr>
+<tr class="codeline" data-linenumber="1705"><td class="num" id="LN1705">1705</td><td class="line"> dummy-&gt;flags |=</td></tr>
+<tr class="codeline" data-linenumber="1706"><td class="num" id="LN1706">1706</td><td class="line"> PLUMA_FILE_BROWSER_STORE_FLAG_IS_HIDDEN;</td></tr>
+<tr class="codeline" data-linenumber="1707"><td class="num" id="LN1707">1707</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="1708"><td class="num" id="LN1708">1708</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1709"><td class="num" id="LN1709">1709</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1710"><td class="num" id="LN1710">1710</td><td class="line"> <span class='comment'>/* Temporarily set the node to invisible to check</span></td></tr>
+<tr class="codeline" data-linenumber="1711"><td class="num" id="LN1711">1711</td><td class="line"> <span class='comment'>* for real children */</span></td></tr>
+<tr class="codeline" data-linenumber="1712"><td class="num" id="LN1712">1712</td><td class="line"> flags = dummy-&gt;flags;</td></tr>
+<tr class="codeline" data-linenumber="1713"><td class="num" id="LN1713">1713</td><td class="line"> dummy-&gt;flags |= PLUMA_FILE_BROWSER_STORE_FLAG_IS_HIDDEN;</td></tr>
+<tr class="codeline" data-linenumber="1714"><td class="num" id="LN1714">1714</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1715"><td class="num" id="LN1715">1715</td><td class="line"> <span class='keyword'>if</span> (!filter_tree_model_iter_has_child_real (model, node)) {</td></tr>
+<tr class="codeline" data-linenumber="1716"><td class="num" id="LN1716">1716</td><td class="line"> dummy-&gt;flags &amp;=</td></tr>
+<tr class="codeline" data-linenumber="1717"><td class="num" id="LN1717">1717</td><td class="line"> ~PLUMA_FILE_BROWSER_STORE_FLAG_IS_HIDDEN;</td></tr>
+<tr class="codeline" data-linenumber="1718"><td class="num" id="LN1718">1718</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1719"><td class="num" id="LN1719">1719</td><td class="line"> <span class='keyword'>if</span> (<span class='macro'>FILE_IS_HIDDEN (flags)<span class='macro_popup'>(flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_HIDDEN)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1720"><td class="num" id="LN1720">1720</td><td class="line"> <span class='comment'>// Was hidden, needs to be inserted</span></td></tr>
+<tr class="codeline" data-linenumber="1721"><td class="num" id="LN1721">1721</td><td class="line"> iter.user_data = dummy;</td></tr>
+<tr class="codeline" data-linenumber="1722"><td class="num" id="LN1722">1722</td><td class="line"> path =</td></tr>
+<tr class="codeline" data-linenumber="1723"><td class="num" id="LN1723">1723</td><td class="line"> pluma_file_browser_store_get_path_real</td></tr>
+<tr class="codeline" data-linenumber="1724"><td class="num" id="LN1724">1724</td><td class="line"> (model, dummy);</td></tr>
+<tr class="codeline" data-linenumber="1725"><td class="num" id="LN1725">1725</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1726"><td class="num" id="LN1726">1726</td><td class="line"> row_inserted (model, &amp;path, &amp;iter);</td></tr>
+<tr class="codeline" data-linenumber="1727"><td class="num" id="LN1727">1727</td><td class="line"> gtk_tree_path_free (path);</td></tr>
+<tr class="codeline" data-linenumber="1728"><td class="num" id="LN1728">1728</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1729"><td class="num" id="LN1729">1729</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="1730"><td class="num" id="LN1730">1730</td><td class="line"> <span class='keyword'>if</span> (!<span class='macro'>FILE_IS_HIDDEN (flags)<span class='macro_popup'>(flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_HIDDEN)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1731"><td class="num" id="LN1731">1731</td><td class="line"> <span class='comment'>// Was shown, needs to be removed</span></td></tr>
+<tr class="codeline" data-linenumber="1732"><td class="num" id="LN1732">1732</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1733"><td class="num" id="LN1733">1733</td><td class="line"> <span class='comment'>// To get the path we need to set it to visible temporarily</span></td></tr>
+<tr class="codeline" data-linenumber="1734"><td class="num" id="LN1734">1734</td><td class="line"> dummy-&gt;flags &amp;=</td></tr>
+<tr class="codeline" data-linenumber="1735"><td class="num" id="LN1735">1735</td><td class="line"> ~PLUMA_FILE_BROWSER_STORE_FLAG_IS_HIDDEN;</td></tr>
+<tr class="codeline" data-linenumber="1736"><td class="num" id="LN1736">1736</td><td class="line"> path =</td></tr>
+<tr class="codeline" data-linenumber="1737"><td class="num" id="LN1737">1737</td><td class="line"> pluma_file_browser_store_get_path_real</td></tr>
+<tr class="codeline" data-linenumber="1738"><td class="num" id="LN1738">1738</td><td class="line"> (model, dummy);</td></tr>
+<tr class="codeline" data-linenumber="1739"><td class="num" id="LN1739">1739</td><td class="line"> dummy-&gt;flags |=</td></tr>
+<tr class="codeline" data-linenumber="1740"><td class="num" id="LN1740">1740</td><td class="line"> PLUMA_FILE_BROWSER_STORE_FLAG_IS_HIDDEN;</td></tr>
+<tr class="codeline" data-linenumber="1741"><td class="num" id="LN1741">1741</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1742"><td class="num" id="LN1742">1742</td><td class="line"> dummy-&gt;inserted = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1743"><td class="num" id="LN1743">1743</td><td class="line"> row_deleted (model, path);</td></tr>
+<tr class="codeline" data-linenumber="1744"><td class="num" id="LN1744">1744</td><td class="line"> gtk_tree_path_free (path);</td></tr>
+<tr class="codeline" data-linenumber="1745"><td class="num" id="LN1745">1745</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1746"><td class="num" id="LN1746">1746</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1747"><td class="num" id="LN1747">1747</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1748"><td class="num" id="LN1748">1748</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1749"><td class="num" id="LN1749">1749</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1750"><td class="num" id="LN1750">1750</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1751"><td class="num" id="LN1751">1751</td><td class="line">insert_node_sorted (PlumaFileBrowserStore * model,</td></tr>
+<tr class="codeline" data-linenumber="1752"><td class="num" id="LN1752">1752</td><td class="line"> FileBrowserNode * child,</td></tr>
+<tr class="codeline" data-linenumber="1753"><td class="num" id="LN1753">1753</td><td class="line"> FileBrowserNode * parent)</td></tr>
+<tr class="codeline" data-linenumber="1754"><td class="num" id="LN1754">1754</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1755"><td class="num" id="LN1755">1755</td><td class="line"> FileBrowserNodeDir *dir;</td></tr>
+<tr class="codeline" data-linenumber="1756"><td class="num" id="LN1756">1756</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1757"><td class="num" id="LN1757">1757</td><td class="line"> dir = <span class='macro'>FILE_BROWSER_NODE_DIR (parent)<span class='macro_popup'>((FileBrowserNodeDir *)(parent))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1758"><td class="num" id="LN1758">1758</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1759"><td class="num" id="LN1759">1759</td><td class="line"> <span class='keyword'>if</span> (model-&gt;priv-&gt;sort_func == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1760"><td class="num" id="LN1760">1760</td><td class="line"> dir-&gt;children = g_slist_append (dir-&gt;children, child);</td></tr>
+<tr class="codeline" data-linenumber="1761"><td class="num" id="LN1761">1761</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="1762"><td class="num" id="LN1762">1762</td><td class="line"> dir-&gt;children =</td></tr>
+<tr class="codeline" data-linenumber="1763"><td class="num" id="LN1763">1763</td><td class="line"> g_slist_insert_sorted (dir-&gt;children, child,</td></tr>
+<tr class="codeline" data-linenumber="1764"><td class="num" id="LN1764">1764</td><td class="line"> (GCompareFunc) (model-&gt;priv-&gt;</td></tr>
+<tr class="codeline" data-linenumber="1765"><td class="num" id="LN1765">1765</td><td class="line"> sort_func));</td></tr>
+<tr class="codeline" data-linenumber="1766"><td class="num" id="LN1766">1766</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1767"><td class="num" id="LN1767">1767</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1768"><td class="num" id="LN1768">1768</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1769"><td class="num" id="LN1769">1769</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1770"><td class="num" id="LN1770">1770</td><td class="line">model_add_node (PlumaFileBrowserStore * model, FileBrowserNode * child,</td></tr>
+<tr class="codeline" data-linenumber="1771"><td class="num" id="LN1771">1771</td><td class="line"> FileBrowserNode * parent)</td></tr>
+<tr class="codeline" data-linenumber="1772"><td class="num" id="LN1772">1772</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1773"><td class="num" id="LN1773">1773</td><td class="line"> <span class='comment'>/* Add child to parents children */</span></td></tr>
+<tr class="codeline" data-linenumber="1774"><td class="num" id="LN1774">1774</td><td class="line"> insert_node_sorted (model, child, parent);</td></tr>
+<tr class="codeline" data-linenumber="1775"><td class="num" id="LN1775">1775</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1776"><td class="num" id="LN1776">1776</td><td class="line"> <span class='keyword'>if</span> (model_node_visibility (model, parent) &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="1777"><td class="num" id="LN1777">1777</td><td class="line"> model_node_visibility (model, child)) {</td></tr>
+<tr class="codeline" data-linenumber="1778"><td class="num" id="LN1778">1778</td><td class="line"> GtkTreeIter iter;</td></tr>
+<tr class="codeline" data-linenumber="1779"><td class="num" id="LN1779">1779</td><td class="line"> GtkTreePath *path;</td></tr>
+<tr class="codeline" data-linenumber="1780"><td class="num" id="LN1780">1780</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1781"><td class="num" id="LN1781">1781</td><td class="line"> iter.user_data = child;</td></tr>
+<tr class="codeline" data-linenumber="1782"><td class="num" id="LN1782">1782</td><td class="line"> path = pluma_file_browser_store_get_path_real (model, child);</td></tr>
+<tr class="codeline" data-linenumber="1783"><td class="num" id="LN1783">1783</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1784"><td class="num" id="LN1784">1784</td><td class="line"> <span class='comment'>/* Emit row inserted */</span></td></tr>
+<tr class="codeline" data-linenumber="1785"><td class="num" id="LN1785">1785</td><td class="line"> row_inserted (model, &amp;path, &amp;iter);</td></tr>
+<tr class="codeline" data-linenumber="1786"><td class="num" id="LN1786">1786</td><td class="line"> gtk_tree_path_free (path);</td></tr>
+<tr class="codeline" data-linenumber="1787"><td class="num" id="LN1787">1787</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1788"><td class="num" id="LN1788">1788</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1789"><td class="num" id="LN1789">1789</td><td class="line"> model_check_dummy (model, parent);</td></tr>
+<tr class="codeline" data-linenumber="1790"><td class="num" id="LN1790">1790</td><td class="line"> model_check_dummy (model, child);</td></tr>
+<tr class="codeline" data-linenumber="1791"><td class="num" id="LN1791">1791</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1792"><td class="num" id="LN1792">1792</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1793"><td class="num" id="LN1793">1793</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1794"><td class="num" id="LN1794">1794</td><td class="line">model_add_nodes_batch (PlumaFileBrowserStore * model,</td></tr>
+<tr class="codeline" data-linenumber="1795"><td class="num" id="LN1795">1795</td><td class="line"> GSList * children,</td></tr>
+<tr class="codeline" data-linenumber="1796"><td class="num" id="LN1796">1796</td><td class="line"> FileBrowserNode * parent)</td></tr>
+<tr class="codeline" data-linenumber="1797"><td class="num" id="LN1797">1797</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1798"><td class="num" id="LN1798">1798</td><td class="line"> GSList *sorted_children;</td></tr>
+<tr class="codeline" data-linenumber="1799"><td class="num" id="LN1799">1799</td><td class="line"> GSList *child;</td></tr>
+<tr class="codeline" data-linenumber="1800"><td class="num" id="LN1800">1800</td><td class="line"> GSList *prev;</td></tr>
+<tr class="codeline" data-linenumber="1801"><td class="num" id="LN1801">1801</td><td class="line"> GSList *l;</td></tr>
+<tr class="codeline" data-linenumber="1802"><td class="num" id="LN1802">1802</td><td class="line"> FileBrowserNodeDir *dir;</td></tr>
+<tr class="codeline" data-linenumber="1803"><td class="num" id="LN1803">1803</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1804"><td class="num" id="LN1804">1804</td><td class="line"> dir = <span class='macro'>FILE_BROWSER_NODE_DIR (parent)<span class='macro_popup'>((FileBrowserNodeDir *)(parent))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1805"><td class="num" id="LN1805">1805</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1806"><td class="num" id="LN1806">1806</td><td class="line"> sorted_children = g_slist_sort (children, (GCompareFunc) model-&gt;priv-&gt;sort_func);</td></tr>
+<tr class="codeline" data-linenumber="1807"><td class="num" id="LN1807">1807</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1808"><td class="num" id="LN1808">1808</td><td class="line"> child = sorted_children;</td></tr>
+<tr class="codeline" data-linenumber="1809"><td class="num" id="LN1809">1809</td><td class="line"> l = dir-&gt;children;</td></tr>
+<tr class="codeline" data-linenumber="1810"><td class="num" id="LN1810">1810</td><td class="line"> prev = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1811"><td class="num" id="LN1811">1811</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1812"><td class="num" id="LN1812">1812</td><td class="line"> model_check_dummy (model, parent);</td></tr>
+<tr class="codeline" data-linenumber="1813"><td class="num" id="LN1813">1813</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1814"><td class="num" id="LN1814">1814</td><td class="line"> <span class='keyword'>while</span> (child) {</td></tr>
+<tr class="codeline" data-linenumber="1815"><td class="num" id="LN1815">1815</td><td class="line"> FileBrowserNode *node = child-&gt;data;</td></tr>
+<tr class="codeline" data-linenumber="1816"><td class="num" id="LN1816">1816</td><td class="line"> GtkTreeIter iter;</td></tr>
+<tr class="codeline" data-linenumber="1817"><td class="num" id="LN1817">1817</td><td class="line"> GtkTreePath *path;</td></tr>
+<tr class="codeline" data-linenumber="1818"><td class="num" id="LN1818">1818</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1819"><td class="num" id="LN1819">1819</td><td class="line"> <span class='comment'>/* reached the end of the first list, just append the second */</span></td></tr>
+<tr class="codeline" data-linenumber="1820"><td class="num" id="LN1820">1820</td><td class="line"> <span class='keyword'>if</span> (l == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1821"><td class="num" id="LN1821">1821</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1822"><td class="num" id="LN1822">1822</td><td class="line"> dir-&gt;children = g_slist_concat (dir-&gt;children, child);</td></tr>
+<tr class="codeline" data-linenumber="1823"><td class="num" id="LN1823">1823</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1824"><td class="num" id="LN1824">1824</td><td class="line"> <span class='keyword'>for</span> (l = child; l; l = l-&gt;next) {</td></tr>
+<tr class="codeline" data-linenumber="1825"><td class="num" id="LN1825">1825</td><td class="line"> <span class='keyword'>if</span> (model_node_visibility (model, parent) &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="1826"><td class="num" id="LN1826">1826</td><td class="line"> model_node_visibility (model, l-&gt;data)) {</td></tr>
+<tr class="codeline" data-linenumber="1827"><td class="num" id="LN1827">1827</td><td class="line"> iter.user_data = l-&gt;data;</td></tr>
+<tr class="codeline" data-linenumber="1828"><td class="num" id="LN1828">1828</td><td class="line"> path = pluma_file_browser_store_get_path_real (model, l-&gt;data);</td></tr>
+<tr class="codeline" data-linenumber="1829"><td class="num" id="LN1829">1829</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1830"><td class="num" id="LN1830">1830</td><td class="line"> <span class='comment'>// Emit row inserted</span></td></tr>
+<tr class="codeline" data-linenumber="1831"><td class="num" id="LN1831">1831</td><td class="line"> row_inserted (model, &amp;path, &amp;iter);</td></tr>
+<tr class="codeline" data-linenumber="1832"><td class="num" id="LN1832">1832</td><td class="line"> gtk_tree_path_free (path);</td></tr>
+<tr class="codeline" data-linenumber="1833"><td class="num" id="LN1833">1833</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1834"><td class="num" id="LN1834">1834</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1835"><td class="num" id="LN1835">1835</td><td class="line"> model_check_dummy (model, l-&gt;data);</td></tr>
+<tr class="codeline" data-linenumber="1836"><td class="num" id="LN1836">1836</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1837"><td class="num" id="LN1837">1837</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1838"><td class="num" id="LN1838">1838</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1839"><td class="num" id="LN1839">1839</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1840"><td class="num" id="LN1840">1840</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1841"><td class="num" id="LN1841">1841</td><td class="line"> <span class='keyword'>if</span> (model-&gt;priv-&gt;sort_func (l-&gt;data, node) &gt; 0) {</td></tr>
+<tr class="codeline" data-linenumber="1842"><td class="num" id="LN1842">1842</td><td class="line"> GSList *next_child;</td></tr>
+<tr class="codeline" data-linenumber="1843"><td class="num" id="LN1843">1843</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1844"><td class="num" id="LN1844">1844</td><td class="line"> <span class='keyword'>if</span> (prev == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1845"><td class="num" id="LN1845">1845</td><td class="line"> <span class='comment'>/* prepend to the list */</span></td></tr>
+<tr class="codeline" data-linenumber="1846"><td class="num" id="LN1846">1846</td><td class="line"> dir-&gt;children = g_slist_prepend (dir-&gt;children, child);</td></tr>
+<tr class="codeline" data-linenumber="1847"><td class="num" id="LN1847">1847</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="1848"><td class="num" id="LN1848">1848</td><td class="line"> prev-&gt;next = child;</td></tr>
+<tr class="codeline" data-linenumber="1849"><td class="num" id="LN1849">1849</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1850"><td class="num" id="LN1850">1850</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1851"><td class="num" id="LN1851">1851</td><td class="line"> next_child = child-&gt;next;</td></tr>
+<tr class="codeline" data-linenumber="1852"><td class="num" id="LN1852">1852</td><td class="line"> prev = child;</td></tr>
+<tr class="codeline" data-linenumber="1853"><td class="num" id="LN1853">1853</td><td class="line"> child-&gt;next = l;</td></tr>
+<tr class="codeline" data-linenumber="1854"><td class="num" id="LN1854">1854</td><td class="line"> child = next_child;</td></tr>
+<tr class="codeline" data-linenumber="1855"><td class="num" id="LN1855">1855</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1856"><td class="num" id="LN1856">1856</td><td class="line"> <span class='keyword'>if</span> (model_node_visibility (model, parent) &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="1857"><td class="num" id="LN1857">1857</td><td class="line"> model_node_visibility (model, node)) {</td></tr>
+<tr class="codeline" data-linenumber="1858"><td class="num" id="LN1858">1858</td><td class="line"> iter.user_data = node;</td></tr>
+<tr class="codeline" data-linenumber="1859"><td class="num" id="LN1859">1859</td><td class="line"> path = pluma_file_browser_store_get_path_real (model, node);</td></tr>
+<tr class="codeline" data-linenumber="1860"><td class="num" id="LN1860">1860</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1861"><td class="num" id="LN1861">1861</td><td class="line"> <span class='comment'>// Emit row inserted</span></td></tr>
+<tr class="codeline" data-linenumber="1862"><td class="num" id="LN1862">1862</td><td class="line"> row_inserted (model, &amp;path, &amp;iter);</td></tr>
+<tr class="codeline" data-linenumber="1863"><td class="num" id="LN1863">1863</td><td class="line"> gtk_tree_path_free (path);</td></tr>
+<tr class="codeline" data-linenumber="1864"><td class="num" id="LN1864">1864</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1865"><td class="num" id="LN1865">1865</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1866"><td class="num" id="LN1866">1866</td><td class="line"> model_check_dummy (model, node);</td></tr>
+<tr class="codeline" data-linenumber="1867"><td class="num" id="LN1867">1867</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1868"><td class="num" id="LN1868">1868</td><td class="line"> <span class='comment'>/* try again at the same l position with the</span></td></tr>
+<tr class="codeline" data-linenumber="1869"><td class="num" id="LN1869">1869</td><td class="line"> <span class='comment'>* next child */</span></td></tr>
+<tr class="codeline" data-linenumber="1870"><td class="num" id="LN1870">1870</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="1871"><td class="num" id="LN1871">1871</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1872"><td class="num" id="LN1872">1872</td><td class="line"> <span class='comment'>/* Move to the next item in the list */</span></td></tr>
+<tr class="codeline" data-linenumber="1873"><td class="num" id="LN1873">1873</td><td class="line"> prev = l;</td></tr>
+<tr class="codeline" data-linenumber="1874"><td class="num" id="LN1874">1874</td><td class="line"> l = l-&gt;next;</td></tr>
+<tr class="codeline" data-linenumber="1875"><td class="num" id="LN1875">1875</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1876"><td class="num" id="LN1876">1876</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1877"><td class="num" id="LN1877">1877</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1878"><td class="num" id="LN1878">1878</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1879"><td class="num" id="LN1879">1879</td><td class="line"><span class='keyword'>static</span> gchar <span class='keyword'>const</span> *</td></tr>
+<tr class="codeline" data-linenumber="1880"><td class="num" id="LN1880">1880</td><td class="line">backup_content_type (GFileInfo * info)</td></tr>
+<tr class="codeline" data-linenumber="1881"><td class="num" id="LN1881">1881</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1882"><td class="num" id="LN1882">1882</td><td class="line"> gchar <span class='keyword'>const</span> * content;</td></tr>
+<tr class="codeline" data-linenumber="1883"><td class="num" id="LN1883">1883</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1884"><td class="num" id="LN1884">1884</td><td class="line"> <span class='keyword'>if</span> (!g_file_info_get_is_backup (info))</td></tr>
+<tr class="codeline" data-linenumber="1885"><td class="num" id="LN1885">1885</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1886"><td class="num" id="LN1886">1886</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1887"><td class="num" id="LN1887">1887</td><td class="line"> content = g_file_info_get_content_type (info);</td></tr>
+<tr class="codeline" data-linenumber="1888"><td class="num" id="LN1888">1888</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1889"><td class="num" id="LN1889">1889</td><td class="line"> <span class='keyword'>if</span> (!content || g_content_type_equals (content, <span class='string_literal'>"application/x-trash"</span>))</td></tr>
+<tr class="codeline" data-linenumber="1890"><td class="num" id="LN1890">1890</td><td class="line"> <span class='keyword'>return</span> <span class='string_literal'>"text/plain"</span>;</td></tr>
+<tr class="codeline" data-linenumber="1891"><td class="num" id="LN1891">1891</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1892"><td class="num" id="LN1892">1892</td><td class="line"> <span class='keyword'>return</span> content;</td></tr>
+<tr class="codeline" data-linenumber="1893"><td class="num" id="LN1893">1893</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1894"><td class="num" id="LN1894">1894</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1895"><td class="num" id="LN1895">1895</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1896"><td class="num" id="LN1896">1896</td><td class="line">file_browser_node_set_from_info (PlumaFileBrowserStore * model,</td></tr>
+<tr class="codeline" data-linenumber="1897"><td class="num" id="LN1897">1897</td><td class="line"> FileBrowserNode * node,</td></tr>
+<tr class="codeline" data-linenumber="1898"><td class="num" id="LN1898">1898</td><td class="line"> GFileInfo * info,</td></tr>
+<tr class="codeline" data-linenumber="1899"><td class="num" id="LN1899">1899</td><td class="line"> gboolean isadded)</td></tr>
+<tr class="codeline" data-linenumber="1900"><td class="num" id="LN1900">1900</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1901"><td class="num" id="LN1901">1901</td><td class="line"> gchar <span class='keyword'>const</span> * content;</td></tr>
+<tr class="codeline" data-linenumber="1902"><td class="num" id="LN1902">1902</td><td class="line"> gboolean free_info = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1903"><td class="num" id="LN1903">1903</td><td class="line"> GtkTreePath * path;</td></tr>
+<tr class="codeline" data-linenumber="1904"><td class="num" id="LN1904">1904</td><td class="line"> gchar * uri;</td></tr>
+<tr class="codeline" data-linenumber="1905"><td class="num" id="LN1905">1905</td><td class="line"> GError * error = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1906"><td class="num" id="LN1906">1906</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1907"><td class="num" id="LN1907">1907</td><td class="line"> <span class='keyword'>if</span> (info == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1908"><td class="num" id="LN1908">1908</td><td class="line"> info = g_file_query_info (node-&gt;file,</td></tr>
+<tr class="codeline" data-linenumber="1909"><td class="num" id="LN1909">1909</td><td class="line"> <span class='macro'>STANDARD_ATTRIBUTE_TYPES<span class='macro_popup'>"standard::type" "," "standard::is-hidden" "," "standard::is-backup"<br> "," "standard::name" "," "standard::content-type" "," "standard::icon"</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="1910"><td class="num" id="LN1910">1910</td><td class="line"> G_FILE_QUERY_INFO_NONE,</td></tr>
+<tr class="codeline" data-linenumber="1911"><td class="num" id="LN1911">1911</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="1912"><td class="num" id="LN1912">1912</td><td class="line"> &amp;error);</td></tr>
+<tr class="codeline" data-linenumber="1913"><td class="num" id="LN1913">1913</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1914"><td class="num" id="LN1914">1914</td><td class="line"> <span class='keyword'>if</span> (!info) {</td></tr>
+<tr class="codeline" data-linenumber="1915"><td class="num" id="LN1915">1915</td><td class="line"> <span class='keyword'>if</span> (!(error-&gt;domain == <span class='macro'>G_IO_ERROR<span class='macro_popup'>g_io_error_quark()</span></span> &amp;&amp; error-&gt;code == G_IO_ERROR_NOT_FOUND)) {</td></tr>
+<tr class="codeline" data-linenumber="1916"><td class="num" id="LN1916">1916</td><td class="line"> uri = g_file_get_uri (node-&gt;file);</td></tr>
+<tr class="codeline" data-linenumber="1917"><td class="num" id="LN1917">1917</td><td class="line"> g_warning (<span class='string_literal'>"Could not get info for %s: %s"</span>, uri, error-&gt;message);</td></tr>
+<tr class="codeline" data-linenumber="1918"><td class="num" id="LN1918">1918</td><td class="line"> g_free (uri);</td></tr>
+<tr class="codeline" data-linenumber="1919"><td class="num" id="LN1919">1919</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1920"><td class="num" id="LN1920">1920</td><td class="line"> g_error_free (error);</td></tr>
+<tr class="codeline" data-linenumber="1921"><td class="num" id="LN1921">1921</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1922"><td class="num" id="LN1922">1922</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="1923"><td class="num" id="LN1923">1923</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1924"><td class="num" id="LN1924">1924</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1925"><td class="num" id="LN1925">1925</td><td class="line"> free_info = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1926"><td class="num" id="LN1926">1926</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1927"><td class="num" id="LN1927">1927</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1928"><td class="num" id="LN1928">1928</td><td class="line"> <span class='keyword'>if</span> (g_file_info_get_is_hidden (info) || g_file_info_get_is_backup (info))</td></tr>
+<tr class="codeline" data-linenumber="1929"><td class="num" id="LN1929">1929</td><td class="line"> node-&gt;flags |= PLUMA_FILE_BROWSER_STORE_FLAG_IS_HIDDEN;</td></tr>
+<tr class="codeline" data-linenumber="1930"><td class="num" id="LN1930">1930</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1931"><td class="num" id="LN1931">1931</td><td class="line"> <span class='keyword'>if</span> (g_file_info_get_file_type (info) == G_FILE_TYPE_DIRECTORY)</td></tr>
+<tr class="codeline" data-linenumber="1932"><td class="num" id="LN1932">1932</td><td class="line"> node-&gt;flags |= PLUMA_FILE_BROWSER_STORE_FLAG_IS_DIRECTORY;</td></tr>
+<tr class="codeline" data-linenumber="1933"><td class="num" id="LN1933">1933</td><td class="line"> <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="1934"><td class="num" id="LN1934">1934</td><td class="line"> <span class='keyword'>if</span> (!(content = backup_content_type (info)))</td></tr>
+<tr class="codeline" data-linenumber="1935"><td class="num" id="LN1935">1935</td><td class="line"> content = g_file_info_get_content_type (info);</td></tr>
+<tr class="codeline" data-linenumber="1936"><td class="num" id="LN1936">1936</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1937"><td class="num" id="LN1937">1937</td><td class="line"> <span class='keyword'>if</span> (!content ||</td></tr>
+<tr class="codeline" data-linenumber="1938"><td class="num" id="LN1938">1938</td><td class="line"> g_content_type_is_unknown (content) ||</td></tr>
+<tr class="codeline" data-linenumber="1939"><td class="num" id="LN1939">1939</td><td class="line"> g_content_type_is_a (content, <span class='string_literal'>"text/plain"</span>))</td></tr>
+<tr class="codeline" data-linenumber="1940"><td class="num" id="LN1940">1940</td><td class="line"> node-&gt;flags |= PLUMA_FILE_BROWSER_STORE_FLAG_IS_TEXT;</td></tr>
+<tr class="codeline" data-linenumber="1941"><td class="num" id="LN1941">1941</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1942"><td class="num" id="LN1942">1942</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1943"><td class="num" id="LN1943">1943</td><td class="line"> model_recomposite_icon_real (model, node, info);</td></tr>
+<tr class="codeline" data-linenumber="1944"><td class="num" id="LN1944">1944</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1945"><td class="num" id="LN1945">1945</td><td class="line"> <span class='keyword'>if</span> (free_info)</td></tr>
+<tr class="codeline" data-linenumber="1946"><td class="num" id="LN1946">1946</td><td class="line"> g_object_unref (info);</td></tr>
+<tr class="codeline" data-linenumber="1947"><td class="num" id="LN1947">1947</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1948"><td class="num" id="LN1948">1948</td><td class="line"> <span class='keyword'>if</span> (isadded) {</td></tr>
+<tr class="codeline" data-linenumber="1949"><td class="num" id="LN1949">1949</td><td class="line"> path = pluma_file_browser_store_get_path_real (model, node);</td></tr>
+<tr class="codeline" data-linenumber="1950"><td class="num" id="LN1950">1950</td><td class="line"> model_refilter_node (model, node, &amp;path);</td></tr>
+<tr class="codeline" data-linenumber="1951"><td class="num" id="LN1951">1951</td><td class="line"> gtk_tree_path_free (path);</td></tr>
+<tr class="codeline" data-linenumber="1952"><td class="num" id="LN1952">1952</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1953"><td class="num" id="LN1953">1953</td><td class="line"> model_check_dummy (model, node-&gt;parent);</td></tr>
+<tr class="codeline" data-linenumber="1954"><td class="num" id="LN1954">1954</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="1955"><td class="num" id="LN1955">1955</td><td class="line"> model_node_update_visibility (model, node);</td></tr>
+<tr class="codeline" data-linenumber="1956"><td class="num" id="LN1956">1956</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1957"><td class="num" id="LN1957">1957</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1958"><td class="num" id="LN1958">1958</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1959"><td class="num" id="LN1959">1959</td><td class="line"><span class='keyword'>static</span> FileBrowserNode *</td></tr>
+<tr class="codeline" data-linenumber="1960"><td class="num" id="LN1960">1960</td><td class="line">node_list_contains_file (GSList *children, GFile * file)</td></tr>
+<tr class="codeline" data-linenumber="1961"><td class="num" id="LN1961">1961</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1962"><td class="num" id="LN1962">1962</td><td class="line"> GSList *item;</td></tr>
+<tr class="codeline" data-linenumber="1963"><td class="num" id="LN1963">1963</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1964"><td class="num" id="LN1964">1964</td><td class="line"> <span class='keyword'>for</span> (item = children; item; item = item-&gt;next) {</td></tr>
+<tr class="codeline" data-linenumber="1965"><td class="num" id="LN1965">1965</td><td class="line"> FileBrowserNode *node;</td></tr>
+<tr class="codeline" data-linenumber="1966"><td class="num" id="LN1966">1966</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1967"><td class="num" id="LN1967">1967</td><td class="line"> node = (FileBrowserNode *) (item-&gt;data);</td></tr>
+<tr class="codeline" data-linenumber="1968"><td class="num" id="LN1968">1968</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1969"><td class="num" id="LN1969">1969</td><td class="line"> <span class='keyword'>if</span> (node-&gt;file != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="1970"><td class="num" id="LN1970">1970</td><td class="line"> &amp;&amp; g_file_equal (node-&gt;file, file))</td></tr>
+<tr class="codeline" data-linenumber="1971"><td class="num" id="LN1971">1971</td><td class="line"> <span class='keyword'>return</span> node;</td></tr>
+<tr class="codeline" data-linenumber="1972"><td class="num" id="LN1972">1972</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1973"><td class="num" id="LN1973">1973</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1974"><td class="num" id="LN1974">1974</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1975"><td class="num" id="LN1975">1975</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1976"><td class="num" id="LN1976">1976</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1977"><td class="num" id="LN1977">1977</td><td class="line"><span class='keyword'>static</span> FileBrowserNode *</td></tr>
+<tr class="codeline" data-linenumber="1978"><td class="num" id="LN1978">1978</td><td class="line">model_add_node_from_file (PlumaFileBrowserStore * model,</td></tr>
+<tr class="codeline" data-linenumber="1979"><td class="num" id="LN1979">1979</td><td class="line"> FileBrowserNode * parent,</td></tr>
+<tr class="codeline" data-linenumber="1980"><td class="num" id="LN1980">1980</td><td class="line"> GFile * file,</td></tr>
+<tr class="codeline" data-linenumber="1981"><td class="num" id="LN1981">1981</td><td class="line"> GFileInfo * info)</td></tr>
+<tr class="codeline" data-linenumber="1982"><td class="num" id="LN1982">1982</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1983"><td class="num" id="LN1983">1983</td><td class="line"> FileBrowserNode *node;</td></tr>
+<tr class="codeline" data-linenumber="1984"><td class="num" id="LN1984">1984</td><td class="line"> gboolean free_info = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1985"><td class="num" id="LN1985">1985</td><td class="line"> GError * error = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1986"><td class="num" id="LN1986">1986</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1987"><td class="num" id="LN1987">1987</td><td class="line"> <span class='keyword'>if</span> ((node = node_list_contains_file (<span class='macro'>FILE_BROWSER_NODE_DIR (parent)<span class='macro_popup'>((FileBrowserNodeDir *)(parent))</span></span>-&gt;children, file)) == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1988"><td class="num" id="LN1988">1988</td><td class="line"> <span class='keyword'>if</span> (info == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1989"><td class="num" id="LN1989">1989</td><td class="line"> info = g_file_query_info (file,</td></tr>
+<tr class="codeline" data-linenumber="1990"><td class="num" id="LN1990">1990</td><td class="line"> <span class='macro'>STANDARD_ATTRIBUTE_TYPES<span class='macro_popup'>"standard::type" "," "standard::is-hidden" "," "standard::is-backup"<br> "," "standard::name" "," "standard::content-type" "," "standard::icon"</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="1991"><td class="num" id="LN1991">1991</td><td class="line"> G_FILE_QUERY_INFO_NONE,</td></tr>
+<tr class="codeline" data-linenumber="1992"><td class="num" id="LN1992">1992</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="1993"><td class="num" id="LN1993">1993</td><td class="line"> &amp;error);</td></tr>
+<tr class="codeline" data-linenumber="1994"><td class="num" id="LN1994">1994</td><td class="line"> free_info = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1995"><td class="num" id="LN1995">1995</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1996"><td class="num" id="LN1996">1996</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1997"><td class="num" id="LN1997">1997</td><td class="line"> <span class='keyword'>if</span> (!info) {</td></tr>
+<tr class="codeline" data-linenumber="1998"><td class="num" id="LN1998">1998</td><td class="line"> g_warning (<span class='string_literal'>"Error querying file info: %s"</span>, error-&gt;message);</td></tr>
+<tr class="codeline" data-linenumber="1999"><td class="num" id="LN1999">1999</td><td class="line"> g_error_free (error);</td></tr>
+<tr class="codeline" data-linenumber="2000"><td class="num" id="LN2000">2000</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2001"><td class="num" id="LN2001">2001</td><td class="line"> <span class='comment'>/* FIXME: What to do now then... */</span></td></tr>
+<tr class="codeline" data-linenumber="2002"><td class="num" id="LN2002">2002</td><td class="line"> node = file_browser_node_new (file, parent);</td></tr>
+<tr class="codeline" data-linenumber="2003"><td class="num" id="LN2003">2003</td><td class="line"> } <span class='keyword'>else</span> <span class='keyword'>if</span> (g_file_info_get_file_type (info) == G_FILE_TYPE_DIRECTORY) {</td></tr>
+<tr class="codeline" data-linenumber="2004"><td class="num" id="LN2004">2004</td><td class="line"> node = file_browser_node_dir_new (model, file, parent);</td></tr>
+<tr class="codeline" data-linenumber="2005"><td class="num" id="LN2005">2005</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="2006"><td class="num" id="LN2006">2006</td><td class="line"> node = file_browser_node_new (file, parent);</td></tr>
+<tr class="codeline" data-linenumber="2007"><td class="num" id="LN2007">2007</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2008"><td class="num" id="LN2008">2008</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2009"><td class="num" id="LN2009">2009</td><td class="line"> file_browser_node_set_from_info (model, node, info, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2010"><td class="num" id="LN2010">2010</td><td class="line"> model_add_node (model, node, parent);</td></tr>
+<tr class="codeline" data-linenumber="2011"><td class="num" id="LN2011">2011</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2012"><td class="num" id="LN2012">2012</td><td class="line"> <span class='keyword'>if</span> (info &amp;&amp; free_info)</td></tr>
+<tr class="codeline" data-linenumber="2013"><td class="num" id="LN2013">2013</td><td class="line"> g_object_unref (info);</td></tr>
+<tr class="codeline" data-linenumber="2014"><td class="num" id="LN2014">2014</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2015"><td class="num" id="LN2015">2015</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2016"><td class="num" id="LN2016">2016</td><td class="line"> <span class='keyword'>return</span> node;</td></tr>
+<tr class="codeline" data-linenumber="2017"><td class="num" id="LN2017">2017</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2018"><td class="num" id="LN2018">2018</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2019"><td class="num" id="LN2019">2019</td><td class="line"><span class='comment'>/* We pass in a copy of the list of parent-&gt;children so that we do</span></td></tr>
+<tr class="codeline" data-linenumber="2020"><td class="num" id="LN2020">2020</td><td class="line"> <span class='comment'>* not have to check if a file already exists among the ones we just</span></td></tr>
+<tr class="codeline" data-linenumber="2021"><td class="num" id="LN2021">2021</td><td class="line"> <span class='comment'>* added */</span></td></tr>
+<tr class="codeline" data-linenumber="2022"><td class="num" id="LN2022">2022</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2023"><td class="num" id="LN2023">2023</td><td class="line">model_add_nodes_from_files (PlumaFileBrowserStore * model,</td></tr>
+<tr class="codeline" data-linenumber="2024"><td class="num" id="LN2024">2024</td><td class="line"> FileBrowserNode * parent,</td></tr>
+<tr class="codeline" data-linenumber="2025"><td class="num" id="LN2025">2025</td><td class="line"> GSList * original_children,</td></tr>
+<tr class="codeline" data-linenumber="2026"><td class="num" id="LN2026">2026</td><td class="line"> GList * files)</td></tr>
+<tr class="codeline" data-linenumber="2027"><td class="num" id="LN2027">2027</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2028"><td class="num" id="LN2028">2028</td><td class="line"> GList *item;</td></tr>
+<tr class="codeline" data-linenumber="2029"><td class="num" id="LN2029">2029</td><td class="line"> GSList *nodes = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2030"><td class="num" id="LN2030">2030</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2031"><td class="num" id="LN2031">2031</td><td class="line"> <span class='keyword'>for</span> (item = files; item; item = item-&gt;next) {</td></tr>
+<tr class="codeline" data-linenumber="2032"><td class="num" id="LN2032">2032</td><td class="line"> GFileInfo *info = <span class='macro'>G_FILE_INFO (item-&gt;data)<span class='macro_popup'>((((GFileInfo*) (void *) ((item-&gt;data)))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2033"><td class="num" id="LN2033">2033</td><td class="line"> GFileType type;</td></tr>
+<tr class="codeline" data-linenumber="2034"><td class="num" id="LN2034">2034</td><td class="line"> gchar <span class='keyword'>const</span> * name;</td></tr>
+<tr class="codeline" data-linenumber="2035"><td class="num" id="LN2035">2035</td><td class="line"> GFile * file;</td></tr>
+<tr class="codeline" data-linenumber="2036"><td class="num" id="LN2036">2036</td><td class="line"> FileBrowserNode *node;</td></tr>
+<tr class="codeline" data-linenumber="2037"><td class="num" id="LN2037">2037</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2038"><td class="num" id="LN2038">2038</td><td class="line"> type = g_file_info_get_file_type (info);</td></tr>
+<tr class="codeline" data-linenumber="2039"><td class="num" id="LN2039">2039</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2040"><td class="num" id="LN2040">2040</td><td class="line"> <span class='comment'>/* Skip all non regular, non directory files */</span></td></tr>
+<tr class="codeline" data-linenumber="2041"><td class="num" id="LN2041">2041</td><td class="line"> <span class='keyword'>if</span> (type != G_FILE_TYPE_REGULAR &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="2042"><td class="num" id="LN2042">2042</td><td class="line"> type != G_FILE_TYPE_DIRECTORY &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="2043"><td class="num" id="LN2043">2043</td><td class="line"> type != G_FILE_TYPE_SYMBOLIC_LINK) {</td></tr>
+<tr class="codeline" data-linenumber="2044"><td class="num" id="LN2044">2044</td><td class="line"> g_object_unref (info);</td></tr>
+<tr class="codeline" data-linenumber="2045"><td class="num" id="LN2045">2045</td><td class="line"> <span class='keyword'>continue</span>;</td></tr>
+<tr class="codeline" data-linenumber="2046"><td class="num" id="LN2046">2046</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2047"><td class="num" id="LN2047">2047</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2048"><td class="num" id="LN2048">2048</td><td class="line"> name = g_file_info_get_name (info);</td></tr>
+<tr class="codeline" data-linenumber="2049"><td class="num" id="LN2049">2049</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2050"><td class="num" id="LN2050">2050</td><td class="line"> <span class='comment'>/* Skip '.' and '..' directories */</span></td></tr>
+<tr class="codeline" data-linenumber="2051"><td class="num" id="LN2051">2051</td><td class="line"> <span class='keyword'>if</span> (type == G_FILE_TYPE_DIRECTORY &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="2052"><td class="num" id="LN2052">2052</td><td class="line"> (strcmp (name, <span class='string_literal'>"."</span>) == 0 ||</td></tr>
+<tr class="codeline" data-linenumber="2053"><td class="num" id="LN2053">2053</td><td class="line"> strcmp (name, <span class='string_literal'>".."</span>) == 0)) {</td></tr>
+<tr class="codeline" data-linenumber="2054"><td class="num" id="LN2054">2054</td><td class="line"> <span class='keyword'>continue</span>;</td></tr>
+<tr class="codeline" data-linenumber="2055"><td class="num" id="LN2055">2055</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2056"><td class="num" id="LN2056">2056</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2057"><td class="num" id="LN2057">2057</td><td class="line"> file = g_file_get_child (parent-&gt;file, name);</td></tr>
+<tr class="codeline" data-linenumber="2058"><td class="num" id="LN2058">2058</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2059"><td class="num" id="LN2059">2059</td><td class="line"> <span class='keyword'>if</span> ((node = node_list_contains_file (original_children, file)) == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="2060"><td class="num" id="LN2060">2060</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2061"><td class="num" id="LN2061">2061</td><td class="line"> <span class='keyword'>if</span> (g_file_info_get_file_type (info) == G_FILE_TYPE_DIRECTORY) {</td></tr>
+<tr class="codeline" data-linenumber="2062"><td class="num" id="LN2062">2062</td><td class="line"> node = file_browser_node_dir_new (model, file, parent);</td></tr>
+<tr class="codeline" data-linenumber="2063"><td class="num" id="LN2063">2063</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="2064"><td class="num" id="LN2064">2064</td><td class="line"> node = file_browser_node_new (file, parent);</td></tr>
+<tr class="codeline" data-linenumber="2065"><td class="num" id="LN2065">2065</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2066"><td class="num" id="LN2066">2066</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2067"><td class="num" id="LN2067">2067</td><td class="line"> file_browser_node_set_from_info (model, node, info, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2068"><td class="num" id="LN2068">2068</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2069"><td class="num" id="LN2069">2069</td><td class="line"> nodes = g_slist_prepend (nodes, node);</td></tr>
+<tr class="codeline" data-linenumber="2070"><td class="num" id="LN2070">2070</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2071"><td class="num" id="LN2071">2071</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2072"><td class="num" id="LN2072">2072</td><td class="line"> g_object_unref (file);</td></tr>
+<tr class="codeline" data-linenumber="2073"><td class="num" id="LN2073">2073</td><td class="line"> g_object_unref (info);</td></tr>
+<tr class="codeline" data-linenumber="2074"><td class="num" id="LN2074">2074</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2075"><td class="num" id="LN2075">2075</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2076"><td class="num" id="LN2076">2076</td><td class="line"> <span class='keyword'>if</span> (nodes)</td></tr>
+<tr class="codeline" data-linenumber="2077"><td class="num" id="LN2077">2077</td><td class="line"> model_add_nodes_batch (model, nodes, parent);</td></tr>
+<tr class="codeline" data-linenumber="2078"><td class="num" id="LN2078">2078</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2079"><td class="num" id="LN2079">2079</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2080"><td class="num" id="LN2080">2080</td><td class="line"><span class='keyword'>static</span> FileBrowserNode *</td></tr>
+<tr class="codeline" data-linenumber="2081"><td class="num" id="LN2081">2081</td><td class="line">model_add_node_from_dir (PlumaFileBrowserStore * model,</td></tr>
+<tr class="codeline" data-linenumber="2082"><td class="num" id="LN2082">2082</td><td class="line"> FileBrowserNode * parent,</td></tr>
+<tr class="codeline" data-linenumber="2083"><td class="num" id="LN2083">2083</td><td class="line"> GFile * file)</td></tr>
+<tr class="codeline" data-linenumber="2084"><td class="num" id="LN2084">2084</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2085"><td class="num" id="LN2085">2085</td><td class="line"> FileBrowserNode *node;</td></tr>
+<tr class="codeline" data-linenumber="2086"><td class="num" id="LN2086">2086</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2087"><td class="num" id="LN2087">2087</td><td class="line"> <span class='comment'>/* Check if it already exists */</span></td></tr>
+<tr class="codeline" data-linenumber="2088"><td class="num" id="LN2088">2088</td><td class="line"> <span class='keyword'>if</span> ((node = node_list_contains_file (<span class='macro'>FILE_BROWSER_NODE_DIR (parent)<span class='macro_popup'>((FileBrowserNodeDir *)(parent))</span></span>-&gt;children, file)) == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="2089"><td class="num" id="LN2089">2089</td><td class="line"> node = file_browser_node_dir_new (model, file, parent);</td></tr>
+<tr class="codeline" data-linenumber="2090"><td class="num" id="LN2090">2090</td><td class="line"> file_browser_node_set_from_info (model, node, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2091"><td class="num" id="LN2091">2091</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2092"><td class="num" id="LN2092">2092</td><td class="line"> <span class='keyword'>if</span> (node-&gt;name == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="2093"><td class="num" id="LN2093">2093</td><td class="line"> file_browser_node_set_name (node);</td></tr>
+<tr class="codeline" data-linenumber="2094"><td class="num" id="LN2094">2094</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2095"><td class="num" id="LN2095">2095</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2096"><td class="num" id="LN2096">2096</td><td class="line"> <span class='keyword'>if</span> (node-&gt;icon == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="2097"><td class="num" id="LN2097">2097</td><td class="line"> node-&gt;icon = pluma_file_browser_utils_pixbuf_from_theme (<span class='string_literal'>"folder"</span>, GTK_ICON_SIZE_MENU);</td></tr>
+<tr class="codeline" data-linenumber="2098"><td class="num" id="LN2098">2098</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2099"><td class="num" id="LN2099">2099</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2100"><td class="num" id="LN2100">2100</td><td class="line"> model_add_node (model, node, parent);</td></tr>
+<tr class="codeline" data-linenumber="2101"><td class="num" id="LN2101">2101</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2102"><td class="num" id="LN2102">2102</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2103"><td class="num" id="LN2103">2103</td><td class="line"> <span class='keyword'>return</span> node;</td></tr>
+<tr class="codeline" data-linenumber="2104"><td class="num" id="LN2104">2104</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2105"><td class="num" id="LN2105">2105</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2106"><td class="num" id="LN2106">2106</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2107"><td class="num" id="LN2107">2107</td><td class="line">on_directory_monitor_event (GFileMonitor * monitor,</td></tr>
+<tr class="codeline" data-linenumber="2108"><td class="num" id="LN2108">2108</td><td class="line"> GFile * file,</td></tr>
+<tr class="codeline" data-linenumber="2109"><td class="num" id="LN2109">2109</td><td class="line"> GFile * other_file,</td></tr>
+<tr class="codeline" data-linenumber="2110"><td class="num" id="LN2110">2110</td><td class="line"> GFileMonitorEvent event_type,</td></tr>
+<tr class="codeline" data-linenumber="2111"><td class="num" id="LN2111">2111</td><td class="line"> FileBrowserNode * parent)</td></tr>
+<tr class="codeline" data-linenumber="2112"><td class="num" id="LN2112">2112</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2113"><td class="num" id="LN2113">2113</td><td class="line"> FileBrowserNode *node;</td></tr>
+<tr class="codeline" data-linenumber="2114"><td class="num" id="LN2114">2114</td><td class="line"> FileBrowserNodeDir *dir = <span class='macro'>FILE_BROWSER_NODE_DIR (parent)<span class='macro_popup'>((FileBrowserNodeDir *)(parent))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2115"><td class="num" id="LN2115">2115</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2116"><td class="num" id="LN2116">2116</td><td class="line"> <span class='keyword'>switch</span> (event_type) {</td></tr>
+<tr class="codeline" data-linenumber="2117"><td class="num" id="LN2117">2117</td><td class="line"> <span class='keyword'>case</span> G_FILE_MONITOR_EVENT_DELETED:</td></tr>
+<tr class="codeline" data-linenumber="2118"><td class="num" id="LN2118">2118</td><td class="line"> node = node_list_contains_file (dir-&gt;children, file);</td></tr>
+<tr class="codeline" data-linenumber="2119"><td class="num" id="LN2119">2119</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2120"><td class="num" id="LN2120">2120</td><td class="line"> <span class='keyword'>if</span> (node != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="2121"><td class="num" id="LN2121">2121</td><td class="line"> model_remove_node (dir-&gt;model, node, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2122"><td class="num" id="LN2122">2122</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2123"><td class="num" id="LN2123">2123</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="2124"><td class="num" id="LN2124">2124</td><td class="line"> <span class='keyword'>case</span> G_FILE_MONITOR_EVENT_CREATED:</td></tr>
+<tr class="codeline" data-linenumber="2125"><td class="num" id="LN2125">2125</td><td class="line"> <span class='keyword'>if</span> (g_file_query_exists (file, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)) {</td></tr>
+<tr class="codeline" data-linenumber="2126"><td class="num" id="LN2126">2126</td><td class="line"> model_add_node_from_file (dir-&gt;model, parent, file, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2127"><td class="num" id="LN2127">2127</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2128"><td class="num" id="LN2128">2128</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2129"><td class="num" id="LN2129">2129</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="2130"><td class="num" id="LN2130">2130</td><td class="line"> <span class='keyword'>default</span>:</td></tr>
+<tr class="codeline" data-linenumber="2131"><td class="num" id="LN2131">2131</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="2132"><td class="num" id="LN2132">2132</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2133"><td class="num" id="LN2133">2133</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2134"><td class="num" id="LN2134">2134</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2135"><td class="num" id="LN2135">2135</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2136"><td class="num" id="LN2136">2136</td><td class="line">async_node_free (AsyncNode *async)</td></tr>
+<tr class="codeline" data-linenumber="2137"><td class="num" id="LN2137">2137</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2138"><td class="num" id="LN2138">2138</td><td class="line"> g_object_unref (async-&gt;cancellable);</td></tr>
+<tr class="codeline" data-linenumber="2139"><td class="num" id="LN2139">2139</td><td class="line"> g_slist_free (async-&gt;original_children);</td></tr>
+<tr class="codeline" data-linenumber="2140"><td class="num" id="LN2140">2140</td><td class="line"> g_free (async);</td></tr>
+<tr class="codeline" data-linenumber="2141"><td class="num" id="LN2141">2141</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2142"><td class="num" id="LN2142">2142</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2143"><td class="num" id="LN2143">2143</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2144"><td class="num" id="LN2144">2144</td><td class="line">model_iterate_next_files_cb (GFileEnumerator * enumerator,</td></tr>
+<tr class="codeline" data-linenumber="2145"><td class="num" id="LN2145">2145</td><td class="line"> GAsyncResult * result,</td></tr>
+<tr class="codeline" data-linenumber="2146"><td class="num" id="LN2146">2146</td><td class="line"> AsyncNode * async)</td></tr>
+<tr class="codeline" data-linenumber="2147"><td class="num" id="LN2147">2147</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2148"><td class="num" id="LN2148">2148</td><td class="line"> GList * files;</td></tr>
+<tr class="codeline" data-linenumber="2149"><td class="num" id="LN2149">2149</td><td class="line"> GError * error = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2150"><td class="num" id="LN2150">2150</td><td class="line"> FileBrowserNodeDir * dir = async-&gt;dir;</td></tr>
+<tr class="codeline" data-linenumber="2151"><td class="num" id="LN2151">2151</td><td class="line"> FileBrowserNode * parent = (FileBrowserNode *)dir;</td></tr>
+<tr class="codeline" data-linenumber="2152"><td class="num" id="LN2152">2152</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2153"><td class="num" id="LN2153">2153</td><td class="line"> files = g_file_enumerator_next_files_finish (enumerator, result, &amp;error);</td></tr>
+<tr class="codeline" data-linenumber="2154"><td class="num" id="LN2154">2154</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2155"><td class="num" id="LN2155">2155</td><td class="line"> <span class='keyword'>if</span> (files == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="2156"><td class="num" id="LN2156">2156</td><td class="line"> g_file_enumerator_close (enumerator, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2157"><td class="num" id="LN2157">2157</td><td class="line"> async_node_free (async);</td></tr>
+<tr class="codeline" data-linenumber="2158"><td class="num" id="LN2158">2158</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2159"><td class="num" id="LN2159">2159</td><td class="line"> <span class='keyword'>if</span> (!error)</td></tr>
+<tr class="codeline" data-linenumber="2160"><td class="num" id="LN2160">2160</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="2161"><td class="num" id="LN2161">2161</td><td class="line"> <span class='comment'>/* We're done loading */</span></td></tr>
+<tr class="codeline" data-linenumber="2162"><td class="num" id="LN2162">2162</td><td class="line"> g_object_unref (dir-&gt;cancellable);</td></tr>
+<tr class="codeline" data-linenumber="2163"><td class="num" id="LN2163">2163</td><td class="line"> dir-&gt;cancellable = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2164"><td class="num" id="LN2164">2164</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2165"><td class="num" id="LN2165">2165</td><td class="line"><span class='comment'>/*</span></td></tr>
+<tr class="codeline" data-linenumber="2166"><td class="num" id="LN2166">2166</td><td class="line"> <span class='comment'>* FIXME: This is temporarly, it is a bug in gio:</span></td></tr>
+<tr class="codeline" data-linenumber="2167"><td class="num" id="LN2167">2167</td><td class="line"> <span class='comment'>* http://bugzilla.gnome.org/show_bug.cgi?id=565924</span></td></tr>
+<tr class="codeline" data-linenumber="2168"><td class="num" id="LN2168">2168</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="2169"><td class="num" id="LN2169">2169</td><td class="line"> <span class='keyword'>if</span> (g_file_is_native (parent-&gt;file) &amp;&amp; dir-&gt;monitor == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="2170"><td class="num" id="LN2170">2170</td><td class="line"> dir-&gt;monitor = g_file_monitor_directory (parent-&gt;file,</td></tr>
+<tr class="codeline" data-linenumber="2171"><td class="num" id="LN2171">2171</td><td class="line"> G_FILE_MONITOR_NONE,</td></tr>
+<tr class="codeline" data-linenumber="2172"><td class="num" id="LN2172">2172</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="2173"><td class="num" id="LN2173">2173</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2174"><td class="num" id="LN2174">2174</td><td class="line"> <span class='keyword'>if</span> (dir-&gt;monitor != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="2175"><td class="num" id="LN2175">2175</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="2176"><td class="num" id="LN2176">2176</td><td class="line"> <span class='macro'>g_signal_connect (dir-&gt;monitor,<span class='macro_popup'>g_signal_connect_data ((dir-&gt;monitor), ("changed"), (((GCallback<br>) (on_directory_monitor_event))), (parent), ((void*)0), (GConnectFlags<br>) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="2177"><td class="num" id="LN2177">2177</td><td class="line"> <span class='string_literal'><span class='macro'>"changed"</span>,<span class='macro_popup'>g_signal_connect_data ((dir-&gt;monitor), ("changed"), (((GCallback<br>) (on_directory_monitor_event))), (parent), ((void*)0), (GConnectFlags<br>) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="2178"><td class="num" id="LN2178">2178</td><td class="line"> <span class='macro'>G_CALLBACK (on_directory_monitor_event),<span class='macro_popup'>g_signal_connect_data ((dir-&gt;monitor), ("changed"), (((GCallback<br>) (on_directory_monitor_event))), (parent), ((void*)0), (GConnectFlags<br>) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="2179"><td class="num" id="LN2179">2179</td><td class="line"> <span class='macro'>parent)<span class='macro_popup'>g_signal_connect_data ((dir-&gt;monitor), ("changed"), (((GCallback<br>) (on_directory_monitor_event))), (parent), ((void*)0), (GConnectFlags<br>) 0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2180"><td class="num" id="LN2180">2180</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2181"><td class="num" id="LN2181">2181</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2182"><td class="num" id="LN2182">2182</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2183"><td class="num" id="LN2183">2183</td><td class="line"> model_check_dummy (dir-&gt;model, parent);</td></tr>
+<tr class="codeline" data-linenumber="2184"><td class="num" id="LN2184">2184</td><td class="line"> model_end_loading (dir-&gt;model, parent);</td></tr>
+<tr class="codeline" data-linenumber="2185"><td class="num" id="LN2185">2185</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="2186"><td class="num" id="LN2186">2186</td><td class="line"> <span class='comment'>/* Simply return if we were cancelled */</span></td></tr>
+<tr class="codeline" data-linenumber="2187"><td class="num" id="LN2187">2187</td><td class="line"> <span class='keyword'>if</span> (error-&gt;domain == <span class='macro'>G_IO_ERROR<span class='macro_popup'>g_io_error_quark()</span></span> &amp;&amp; error-&gt;code == G_IO_ERROR_CANCELLED)</td></tr>
+<tr class="codeline" data-linenumber="2188"><td class="num" id="LN2188">2188</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="2189"><td class="num" id="LN2189">2189</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2190"><td class="num" id="LN2190">2190</td><td class="line"> <span class='comment'>/* Otherwise handle the error appropriately */</span></td></tr>
+<tr class="codeline" data-linenumber="2191"><td class="num" id="LN2191">2191</td><td class="line"> g_signal_emit (dir-&gt;model,</td></tr>
+<tr class="codeline" data-linenumber="2192"><td class="num" id="LN2192">2192</td><td class="line"> model_signals[ERROR],</td></tr>
+<tr class="codeline" data-linenumber="2193"><td class="num" id="LN2193">2193</td><td class="line"> 0,</td></tr>
+<tr class="codeline" data-linenumber="2194"><td class="num" id="LN2194">2194</td><td class="line"> PLUMA_FILE_BROWSER_ERROR_LOAD_DIRECTORY,</td></tr>
+<tr class="codeline" data-linenumber="2195"><td class="num" id="LN2195">2195</td><td class="line"> error-&gt;message);</td></tr>
+<tr class="codeline" data-linenumber="2196"><td class="num" id="LN2196">2196</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2197"><td class="num" id="LN2197">2197</td><td class="line"> file_browser_node_unload (dir-&gt;model, (FileBrowserNode *)parent, <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2198"><td class="num" id="LN2198">2198</td><td class="line"> g_error_free (error);</td></tr>
+<tr class="codeline" data-linenumber="2199"><td class="num" id="LN2199">2199</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2200"><td class="num" id="LN2200">2200</td><td class="line"> } <span class='keyword'>else</span> <span class='keyword'>if</span> (g_cancellable_is_cancelled (async-&gt;cancellable)) {</td></tr>
+<tr class="codeline" data-linenumber="2201"><td class="num" id="LN2201">2201</td><td class="line"> <span class='comment'>/* Check cancel state manually */</span></td></tr>
+<tr class="codeline" data-linenumber="2202"><td class="num" id="LN2202">2202</td><td class="line"> g_file_enumerator_close (enumerator, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2203"><td class="num" id="LN2203">2203</td><td class="line"> async_node_free (async);</td></tr>
+<tr class="codeline" data-linenumber="2204"><td class="num" id="LN2204">2204</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="2205"><td class="num" id="LN2205">2205</td><td class="line"> model_add_nodes_from_files (dir-&gt;model, parent, async-&gt;original_children, files);</td></tr>
+<tr class="codeline" data-linenumber="2206"><td class="num" id="LN2206">2206</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2207"><td class="num" id="LN2207">2207</td><td class="line"> g_list_free (files);</td></tr>
+<tr class="codeline" data-linenumber="2208"><td class="num" id="LN2208">2208</td><td class="line"> next_files_async (enumerator, async);</td></tr>
+<tr class="codeline" data-linenumber="2209"><td class="num" id="LN2209">2209</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2210"><td class="num" id="LN2210">2210</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2211"><td class="num" id="LN2211">2211</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2212"><td class="num" id="LN2212">2212</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2213"><td class="num" id="LN2213">2213</td><td class="line">next_files_async (GFileEnumerator * enumerator,</td></tr>
+<tr class="codeline" data-linenumber="2214"><td class="num" id="LN2214">2214</td><td class="line"> AsyncNode * async)</td></tr>
+<tr class="codeline" data-linenumber="2215"><td class="num" id="LN2215">2215</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2216"><td class="num" id="LN2216">2216</td><td class="line"> g_file_enumerator_next_files_async (enumerator,</td></tr>
+<tr class="codeline" data-linenumber="2217"><td class="num" id="LN2217">2217</td><td class="line"> <span class='macro'>DIRECTORY_LOAD_ITEMS_PER_CALLBACK<span class='macro_popup'>100</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="2218"><td class="num" id="LN2218">2218</td><td class="line"> <span class='macro'>G_PRIORITY_DEFAULT<span class='macro_popup'>0</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="2219"><td class="num" id="LN2219">2219</td><td class="line"> async-&gt;cancellable,</td></tr>
+<tr class="codeline" data-linenumber="2220"><td class="num" id="LN2220">2220</td><td class="line"> (GAsyncReadyCallback)model_iterate_next_files_cb,</td></tr>
+<tr class="codeline" data-linenumber="2221"><td class="num" id="LN2221">2221</td><td class="line"> async);</td></tr>
+<tr class="codeline" data-linenumber="2222"><td class="num" id="LN2222">2222</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2223"><td class="num" id="LN2223">2223</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2224"><td class="num" id="LN2224">2224</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2225"><td class="num" id="LN2225">2225</td><td class="line">model_iterate_children_cb (GFile * file,</td></tr>
+<tr class="codeline" data-linenumber="2226"><td class="num" id="LN2226">2226</td><td class="line"> GAsyncResult * result,</td></tr>
+<tr class="codeline" data-linenumber="2227"><td class="num" id="LN2227">2227</td><td class="line"> AsyncNode * async)</td></tr>
+<tr class="codeline" data-linenumber="2228"><td class="num" id="LN2228">2228</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2229"><td class="num" id="LN2229">2229</td><td class="line"> GError * error = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2230"><td class="num" id="LN2230">2230</td><td class="line"> GFileEnumerator * enumerator;</td></tr>
+<tr class="codeline" data-linenumber="2231"><td class="num" id="LN2231">2231</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2232"><td class="num" id="LN2232">2232</td><td class="line"> <span class='keyword'>if</span> (g_cancellable_is_cancelled (async-&gt;cancellable))</td></tr>
+<tr class="codeline" data-linenumber="2233"><td class="num" id="LN2233">2233</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="2234"><td class="num" id="LN2234">2234</td><td class="line"> async_node_free (async);</td></tr>
+<tr class="codeline" data-linenumber="2235"><td class="num" id="LN2235">2235</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="2236"><td class="num" id="LN2236">2236</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2237"><td class="num" id="LN2237">2237</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2238"><td class="num" id="LN2238">2238</td><td class="line"> enumerator = g_file_enumerate_children_finish (file, result, &amp;error);</td></tr>
+<tr class="codeline" data-linenumber="2239"><td class="num" id="LN2239">2239</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2240"><td class="num" id="LN2240">2240</td><td class="line"> <span class='keyword'>if</span> (enumerator == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="2241"><td class="num" id="LN2241">2241</td><td class="line"> <span class='comment'>/* Simply return if we were cancelled or if the dir is not there */</span></td></tr>
+<tr class="codeline" data-linenumber="2242"><td class="num" id="LN2242">2242</td><td class="line"> FileBrowserNodeDir *dir = async-&gt;dir;</td></tr>
+<tr class="codeline" data-linenumber="2243"><td class="num" id="LN2243">2243</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2244"><td class="num" id="LN2244">2244</td><td class="line"> <span class='comment'>/* Otherwise handle the error appropriately */</span></td></tr>
+<tr class="codeline" data-linenumber="2245"><td class="num" id="LN2245">2245</td><td class="line"> g_signal_emit (dir-&gt;model,</td></tr>
+<tr class="codeline" data-linenumber="2246"><td class="num" id="LN2246">2246</td><td class="line"> model_signals[ERROR],</td></tr>
+<tr class="codeline" data-linenumber="2247"><td class="num" id="LN2247">2247</td><td class="line"> 0,</td></tr>
+<tr class="codeline" data-linenumber="2248"><td class="num" id="LN2248">2248</td><td class="line"> PLUMA_FILE_BROWSER_ERROR_LOAD_DIRECTORY,</td></tr>
+<tr class="codeline" data-linenumber="2249"><td class="num" id="LN2249">2249</td><td class="line"> error-&gt;message);</td></tr>
+<tr class="codeline" data-linenumber="2250"><td class="num" id="LN2250">2250</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2251"><td class="num" id="LN2251">2251</td><td class="line"> file_browser_node_unload (dir-&gt;model, (FileBrowserNode *)dir, <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2252"><td class="num" id="LN2252">2252</td><td class="line"> g_error_free (error);</td></tr>
+<tr class="codeline" data-linenumber="2253"><td class="num" id="LN2253">2253</td><td class="line"> async_node_free (async);</td></tr>
+<tr class="codeline" data-linenumber="2254"><td class="num" id="LN2254">2254</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="2255"><td class="num" id="LN2255">2255</td><td class="line"> next_files_async (enumerator, async);</td></tr>
+<tr class="codeline" data-linenumber="2256"><td class="num" id="LN2256">2256</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2257"><td class="num" id="LN2257">2257</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2258"><td class="num" id="LN2258">2258</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2259"><td class="num" id="LN2259">2259</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2260"><td class="num" id="LN2260">2260</td><td class="line">model_load_directory (PlumaFileBrowserStore * model,</td></tr>
+<tr class="codeline" data-linenumber="2261"><td class="num" id="LN2261">2261</td><td class="line"> FileBrowserNode * node)</td></tr>
+<tr class="codeline" data-linenumber="2262"><td class="num" id="LN2262">2262</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2263"><td class="num" id="LN2263">2263</td><td class="line"> FileBrowserNodeDir *dir;</td></tr>
+<tr class="codeline" data-linenumber="2264"><td class="num" id="LN2264">2264</td><td class="line"> AsyncNode *async;</td></tr>
+<tr class="codeline" data-linenumber="2265"><td class="num" id="LN2265">2265</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2266"><td class="num" id="LN2266">2266</td><td class="line"> <span class='macro'>g_return_if_fail (NODE_IS_DIR (node))<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_218<br>; if ((((node)-&gt;flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_DIRECTORY<br>))) _g_boolean_var_218 = 1; else _g_boolean_var_218 = 0; _g_boolean_var_218<br>; }), 1))) { } else { g_return_if_fail_warning (((gchar*) 0),<br> ((const char*) (__func__)), "NODE_IS_DIR (node)"); return; }<br> } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2267"><td class="num" id="LN2267">2267</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2268"><td class="num" id="LN2268">2268</td><td class="line"> dir = <span class='macro'>FILE_BROWSER_NODE_DIR (node)<span class='macro_popup'>((FileBrowserNodeDir *)(node))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2269"><td class="num" id="LN2269">2269</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2270"><td class="num" id="LN2270">2270</td><td class="line"> <span class='comment'>/* Cancel a previous load */</span></td></tr>
+<tr class="codeline" data-linenumber="2271"><td class="num" id="LN2271">2271</td><td class="line"> <span class='keyword'>if</span> (dir-&gt;cancellable != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="2272"><td class="num" id="LN2272">2272</td><td class="line"> file_browser_node_unload (dir-&gt;model, node, <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2273"><td class="num" id="LN2273">2273</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2274"><td class="num" id="LN2274">2274</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2275"><td class="num" id="LN2275">2275</td><td class="line"> node-&gt;flags |= PLUMA_FILE_BROWSER_STORE_FLAG_LOADED;</td></tr>
+<tr class="codeline" data-linenumber="2276"><td class="num" id="LN2276">2276</td><td class="line"> model_begin_loading (model, node);</td></tr>
+<tr class="codeline" data-linenumber="2277"><td class="num" id="LN2277">2277</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2278"><td class="num" id="LN2278">2278</td><td class="line"> dir-&gt;cancellable = g_cancellable_new ();</td></tr>
+<tr class="codeline" data-linenumber="2279"><td class="num" id="LN2279">2279</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2280"><td class="num" id="LN2280">2280</td><td class="line"> async = <span class='macro'>g_new (AsyncNode, 1)<span class='macro_popup'>(AsyncNode *) (__extension__ ({ gsize __n = (gsize) (1); gsize<br> __s = sizeof (AsyncNode); gpointer __p; if (__s == 1) __p = g_malloc<br> (__n); else if (__builtin_constant_p (__n) &amp;&amp; (__s ==<br> 0 || __n &lt;= (9223372036854775807L *2UL+1UL) / __s)) __p =<br> g_malloc (__n * __s); else __p = g_malloc_n (__n, __s); __p;<br> }))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2281"><td class="num" id="LN2281">2281</td><td class="line"> async-&gt;dir = dir;</td></tr>
+<tr class="codeline" data-linenumber="2282"><td class="num" id="LN2282">2282</td><td class="line"> async-&gt;cancellable = <span class='macro'>g_object_ref (dir-&gt;cancellable)<span class='macro_popup'>((__typeof__ (dir-&gt;cancellable)) (g_object_ref) (dir-&gt;cancellable<br>))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2283"><td class="num" id="LN2283">2283</td><td class="line"> async-&gt;original_children = g_slist_copy (dir-&gt;children);</td></tr>
+<tr class="codeline" data-linenumber="2284"><td class="num" id="LN2284">2284</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2285"><td class="num" id="LN2285">2285</td><td class="line"> <span class='comment'>/* Start loading async */</span></td></tr>
+<tr class="codeline" data-linenumber="2286"><td class="num" id="LN2286">2286</td><td class="line"> g_file_enumerate_children_async (node-&gt;file,</td></tr>
+<tr class="codeline" data-linenumber="2287"><td class="num" id="LN2287">2287</td><td class="line"> <span class='macro'>STANDARD_ATTRIBUTE_TYPES<span class='macro_popup'>"standard::type" "," "standard::is-hidden" "," "standard::is-backup"<br> "," "standard::name" "," "standard::content-type" "," "standard::icon"</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="2288"><td class="num" id="LN2288">2288</td><td class="line"> G_FILE_QUERY_INFO_NONE,</td></tr>
+<tr class="codeline" data-linenumber="2289"><td class="num" id="LN2289">2289</td><td class="line"> <span class='macro'>G_PRIORITY_DEFAULT<span class='macro_popup'>0</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="2290"><td class="num" id="LN2290">2290</td><td class="line"> async-&gt;cancellable,</td></tr>
+<tr class="codeline" data-linenumber="2291"><td class="num" id="LN2291">2291</td><td class="line"> (GAsyncReadyCallback)model_iterate_children_cb,</td></tr>
+<tr class="codeline" data-linenumber="2292"><td class="num" id="LN2292">2292</td><td class="line"> async);</td></tr>
+<tr class="codeline" data-linenumber="2293"><td class="num" id="LN2293">2293</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2294"><td class="num" id="LN2294">2294</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2295"><td class="num" id="LN2295">2295</td><td class="line"><span class='keyword'>static</span> GList *</td></tr>
+<tr class="codeline" data-linenumber="2296"><td class="num" id="LN2296">2296</td><td class="line">get_parent_files (PlumaFileBrowserStore * model, GFile * file)</td></tr>
+<tr class="codeline" data-linenumber="2297"><td class="num" id="LN2297">2297</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2298"><td class="num" id="LN2298">2298</td><td class="line"> GList * result = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2299"><td class="num" id="LN2299">2299</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2300"><td class="num" id="LN2300">2300</td><td class="line"> result = g_list_prepend (result, <span class='macro'>g_object_ref (file)<span class='macro_popup'>((__typeof__ (file)) (g_object_ref) (file))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2301"><td class="num" id="LN2301">2301</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2302"><td class="num" id="LN2302">2302</td><td class="line"> <span class='keyword'>while</span> ((file = g_file_get_parent (file))) {</td></tr>
+<tr class="codeline" data-linenumber="2303"><td class="num" id="LN2303">2303</td><td class="line"> <span class='keyword'>if</span> (g_file_equal (file, model-&gt;priv-&gt;root-&gt;file)) {</td></tr>
+<tr class="codeline" data-linenumber="2304"><td class="num" id="LN2304">2304</td><td class="line"> g_object_unref (file);</td></tr>
+<tr class="codeline" data-linenumber="2305"><td class="num" id="LN2305">2305</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="2306"><td class="num" id="LN2306">2306</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2307"><td class="num" id="LN2307">2307</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2308"><td class="num" id="LN2308">2308</td><td class="line"> result = g_list_prepend (result, file);</td></tr>
+<tr class="codeline" data-linenumber="2309"><td class="num" id="LN2309">2309</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2310"><td class="num" id="LN2310">2310</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2311"><td class="num" id="LN2311">2311</td><td class="line"> <span class='keyword'>return</span> result;</td></tr>
+<tr class="codeline" data-linenumber="2312"><td class="num" id="LN2312">2312</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2313"><td class="num" id="LN2313">2313</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2314"><td class="num" id="LN2314">2314</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2315"><td class="num" id="LN2315">2315</td><td class="line">model_fill (PlumaFileBrowserStore * model, FileBrowserNode * node,</td></tr>
+<tr class="codeline" data-linenumber="2316"><td class="num" id="LN2316">2316</td><td class="line"> GtkTreePath ** path)</td></tr>
+<tr class="codeline" data-linenumber="2317"><td class="num" id="LN2317">2317</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2318"><td class="num" id="LN2318">2318</td><td class="line"> gboolean free_path = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2319"><td class="num" id="LN2319">2319</td><td class="line"> GtkTreeIter iter = {0,};</td></tr>
+<tr class="codeline" data-linenumber="2320"><td class="num" id="LN2320">2320</td><td class="line"> GSList *item;</td></tr>
+<tr class="codeline" data-linenumber="2321"><td class="num" id="LN2321">2321</td><td class="line"> FileBrowserNode *child;</td></tr>
+<tr class="codeline" data-linenumber="2322"><td class="num" id="LN2322">2322</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2323"><td class="num" id="LN2323">2323</td><td class="line"> <span class='keyword'>if</span> (node == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="2324"><td class="num" id="LN2324">2324</td><td class="line"> node = model-&gt;priv-&gt;virtual_root;</td></tr>
+<tr class="codeline" data-linenumber="2325"><td class="num" id="LN2325">2325</td><td class="line"> *path = gtk_tree_path_new ();</td></tr>
+<tr class="codeline" data-linenumber="2326"><td class="num" id="LN2326">2326</td><td class="line"> free_path = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2327"><td class="num" id="LN2327">2327</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2328"><td class="num" id="LN2328">2328</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2329"><td class="num" id="LN2329">2329</td><td class="line"> <span class='keyword'>if</span> (*path == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="2330"><td class="num" id="LN2330">2330</td><td class="line"> *path =</td></tr>
+<tr class="codeline" data-linenumber="2331"><td class="num" id="LN2331">2331</td><td class="line"> pluma_file_browser_store_get_path_real (model, node);</td></tr>
+<tr class="codeline" data-linenumber="2332"><td class="num" id="LN2332">2332</td><td class="line"> free_path = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2333"><td class="num" id="LN2333">2333</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2334"><td class="num" id="LN2334">2334</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2335"><td class="num" id="LN2335">2335</td><td class="line"> <span class='keyword'>if</span> (!model_node_visibility (model, node)) {</td></tr>
+<tr class="codeline" data-linenumber="2336"><td class="num" id="LN2336">2336</td><td class="line"> <span class='keyword'>if</span> (free_path)</td></tr>
+<tr class="codeline" data-linenumber="2337"><td class="num" id="LN2337">2337</td><td class="line"> gtk_tree_path_free (*path);</td></tr>
+<tr class="codeline" data-linenumber="2338"><td class="num" id="LN2338">2338</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2339"><td class="num" id="LN2339">2339</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="2340"><td class="num" id="LN2340">2340</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2341"><td class="num" id="LN2341">2341</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2342"><td class="num" id="LN2342">2342</td><td class="line"> <span class='keyword'>if</span> (node != model-&gt;priv-&gt;virtual_root) {</td></tr>
+<tr class="codeline" data-linenumber="2343"><td class="num" id="LN2343">2343</td><td class="line"> <span class='comment'>/* Insert node */</span></td></tr>
+<tr class="codeline" data-linenumber="2344"><td class="num" id="LN2344">2344</td><td class="line"> iter.user_data = node;</td></tr>
+<tr class="codeline" data-linenumber="2345"><td class="num" id="LN2345">2345</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2346"><td class="num" id="LN2346">2346</td><td class="line"> row_inserted(model, path, &amp;iter);</td></tr>
+<tr class="codeline" data-linenumber="2347"><td class="num" id="LN2347">2347</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2348"><td class="num" id="LN2348">2348</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2349"><td class="num" id="LN2349">2349</td><td class="line"> <span class='keyword'>if</span> (<span class='macro'>NODE_IS_DIR (node)<span class='macro_popup'>(((node)-&gt;flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_DIRECTORY<br>))</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="2350"><td class="num" id="LN2350">2350</td><td class="line"> <span class='comment'>/* Go to the first child */</span></td></tr>
+<tr class="codeline" data-linenumber="2351"><td class="num" id="LN2351">2351</td><td class="line"> gtk_tree_path_down (*path);</td></tr>
+<tr class="codeline" data-linenumber="2352"><td class="num" id="LN2352">2352</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2353"><td class="num" id="LN2353">2353</td><td class="line"> <span class='keyword'>for</span> (item = <span class='macro'>FILE_BROWSER_NODE_DIR (node)<span class='macro_popup'>((FileBrowserNodeDir *)(node))</span></span>-&gt;children; item;</td></tr>
+<tr class="codeline" data-linenumber="2354"><td class="num" id="LN2354">2354</td><td class="line"> item = item-&gt;next) {</td></tr>
+<tr class="codeline" data-linenumber="2355"><td class="num" id="LN2355">2355</td><td class="line"> child = (FileBrowserNode *) (item-&gt;data);</td></tr>
+<tr class="codeline" data-linenumber="2356"><td class="num" id="LN2356">2356</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2357"><td class="num" id="LN2357">2357</td><td class="line"> <span class='keyword'>if</span> (model_node_visibility (model, child)) {</td></tr>
+<tr class="codeline" data-linenumber="2358"><td class="num" id="LN2358">2358</td><td class="line"> model_fill (model, child, path);</td></tr>
+<tr class="codeline" data-linenumber="2359"><td class="num" id="LN2359">2359</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2360"><td class="num" id="LN2360">2360</td><td class="line"> <span class='comment'>/* Increase path for next child */</span></td></tr>
+<tr class="codeline" data-linenumber="2361"><td class="num" id="LN2361">2361</td><td class="line"> gtk_tree_path_next (*path);</td></tr>
+<tr class="codeline" data-linenumber="2362"><td class="num" id="LN2362">2362</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2363"><td class="num" id="LN2363">2363</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2364"><td class="num" id="LN2364">2364</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2365"><td class="num" id="LN2365">2365</td><td class="line"> <span class='comment'>/* Move back up to node path */</span></td></tr>
+<tr class="codeline" data-linenumber="2366"><td class="num" id="LN2366">2366</td><td class="line"> gtk_tree_path_up (*path);</td></tr>
+<tr class="codeline" data-linenumber="2367"><td class="num" id="LN2367">2367</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2368"><td class="num" id="LN2368">2368</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2369"><td class="num" id="LN2369">2369</td><td class="line"> model_check_dummy (model, node);</td></tr>
+<tr class="codeline" data-linenumber="2370"><td class="num" id="LN2370">2370</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2371"><td class="num" id="LN2371">2371</td><td class="line"> <span class='keyword'>if</span> (free_path)</td></tr>
+<tr class="codeline" data-linenumber="2372"><td class="num" id="LN2372">2372</td><td class="line"> gtk_tree_path_free (*path);</td></tr>
+<tr class="codeline" data-linenumber="2373"><td class="num" id="LN2373">2373</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2374"><td class="num" id="LN2374">2374</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2375"><td class="num" id="LN2375">2375</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2376"><td class="num" id="LN2376">2376</td><td class="line">set_virtual_root_from_node (PlumaFileBrowserStore * model,</td></tr>
+<tr class="codeline" data-linenumber="2377"><td class="num" id="LN2377">2377</td><td class="line"> FileBrowserNode * node)</td></tr>
+<tr class="codeline" data-linenumber="2378"><td class="num" id="LN2378">2378</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2379"><td class="num" id="LN2379">2379</td><td class="line"> FileBrowserNode *next;</td></tr>
+<tr class="codeline" data-linenumber="2380"><td class="num" id="LN2380">2380</td><td class="line"> FileBrowserNode *prev;</td></tr>
+<tr class="codeline" data-linenumber="2381"><td class="num" id="LN2381">2381</td><td class="line"> FileBrowserNode *check;</td></tr>
+<tr class="codeline" data-linenumber="2382"><td class="num" id="LN2382">2382</td><td class="line"> FileBrowserNodeDir *dir;</td></tr>
+<tr class="codeline" data-linenumber="2383"><td class="num" id="LN2383">2383</td><td class="line"> GSList *item;</td></tr>
+<tr class="codeline" data-linenumber="2384"><td class="num" id="LN2384">2384</td><td class="line"> GSList *copy;</td></tr>
+<tr class="codeline" data-linenumber="2385"><td class="num" id="LN2385">2385</td><td class="line"> GtkTreePath *empty = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2386"><td class="num" id="LN2386">2386</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2387"><td class="num" id="LN2387">2387</td><td class="line"> <span class='macro'>g_assert (node != NULL)<span class='macro_popup'>do { if (__builtin_expect (__extension__ ({ int _g_boolean_var_219<br>; if (node != ((void*)0)) _g_boolean_var_219 = 1; else _g_boolean_var_219<br> = 0; _g_boolean_var_219; }), 1)) ; else g_assertion_message_expr<br> (((gchar*) 0), "pluma-file-browser-store.c", 2387, ((const char<br>*) (__func__)), "node != NULL"); } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2388"><td class="num" id="LN2388">2388</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2389"><td class="num" id="LN2389">2389</td><td class="line"> prev = node;</td></tr>
+<tr class="codeline" data-linenumber="2390"><td class="num" id="LN2390">2390</td><td class="line"> next = prev-&gt;parent;</td></tr>
+<tr class="codeline" data-linenumber="2391"><td class="num" id="LN2391">2391</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2392"><td class="num" id="LN2392">2392</td><td class="line"> <span class='comment'>/* Free all the nodes below that we don't need in cache */</span></td></tr>
+<tr class="codeline" data-linenumber="2393"><td class="num" id="LN2393">2393</td><td class="line"> <span class='keyword'>while</span> (prev != model-&gt;priv-&gt;root) {</td></tr>
+<tr class="codeline" data-linenumber="2394"><td class="num" id="LN2394">2394</td><td class="line"> dir = <span class='macro'>FILE_BROWSER_NODE_DIR (next)<span class='macro_popup'>((FileBrowserNodeDir *)(next))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2395"><td class="num" id="LN2395">2395</td><td class="line"> copy = g_slist_copy (dir-&gt;children);</td></tr>
+<tr class="codeline" data-linenumber="2396"><td class="num" id="LN2396">2396</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2397"><td class="num" id="LN2397">2397</td><td class="line"> <span class='keyword'>for</span> (item = copy; item; item = item-&gt;next) {</td></tr>
+<tr class="codeline" data-linenumber="2398"><td class="num" id="LN2398">2398</td><td class="line"> check = (FileBrowserNode *) (item-&gt;data);</td></tr>
+<tr class="codeline" data-linenumber="2399"><td class="num" id="LN2399">2399</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2400"><td class="num" id="LN2400">2400</td><td class="line"> <span class='keyword'>if</span> (prev == node) {</td></tr>
+<tr class="codeline" data-linenumber="2401"><td class="num" id="LN2401">2401</td><td class="line"> <span class='comment'>/* Only free the children, keeping this depth in cache */</span></td></tr>
+<tr class="codeline" data-linenumber="2402"><td class="num" id="LN2402">2402</td><td class="line"> <span class='keyword'>if</span> (check != node) {</td></tr>
+<tr class="codeline" data-linenumber="2403"><td class="num" id="LN2403">2403</td><td class="line"> file_browser_node_free_children</td></tr>
+<tr class="codeline" data-linenumber="2404"><td class="num" id="LN2404">2404</td><td class="line"> (model, check);</td></tr>
+<tr class="codeline" data-linenumber="2405"><td class="num" id="LN2405">2405</td><td class="line"> file_browser_node_unload (model,</td></tr>
+<tr class="codeline" data-linenumber="2406"><td class="num" id="LN2406">2406</td><td class="line"> check,</td></tr>
+<tr class="codeline" data-linenumber="2407"><td class="num" id="LN2407">2407</td><td class="line"> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2408"><td class="num" id="LN2408">2408</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2409"><td class="num" id="LN2409">2409</td><td class="line"> } <span class='keyword'>else</span> <span class='keyword'>if</span> (check != prev) {</td></tr>
+<tr class="codeline" data-linenumber="2410"><td class="num" id="LN2410">2410</td><td class="line"> <span class='comment'>/* Only free when the node is not in the chain */</span></td></tr>
+<tr class="codeline" data-linenumber="2411"><td class="num" id="LN2411">2411</td><td class="line"> dir-&gt;children =</td></tr>
+<tr class="codeline" data-linenumber="2412"><td class="num" id="LN2412">2412</td><td class="line"> g_slist_remove (dir-&gt;children, check);</td></tr>
+<tr class="codeline" data-linenumber="2413"><td class="num" id="LN2413">2413</td><td class="line"> file_browser_node_free (model, check);</td></tr>
+<tr class="codeline" data-linenumber="2414"><td class="num" id="LN2414">2414</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2415"><td class="num" id="LN2415">2415</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2416"><td class="num" id="LN2416">2416</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2417"><td class="num" id="LN2417">2417</td><td class="line"> <span class='keyword'>if</span> (prev != node)</td></tr>
+<tr class="codeline" data-linenumber="2418"><td class="num" id="LN2418">2418</td><td class="line"> file_browser_node_unload (model, next, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2419"><td class="num" id="LN2419">2419</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2420"><td class="num" id="LN2420">2420</td><td class="line"> g_slist_free (copy);</td></tr>
+<tr class="codeline" data-linenumber="2421"><td class="num" id="LN2421">2421</td><td class="line"> prev = next;</td></tr>
+<tr class="codeline" data-linenumber="2422"><td class="num" id="LN2422">2422</td><td class="line"> next = prev-&gt;parent;</td></tr>
+<tr class="codeline" data-linenumber="2423"><td class="num" id="LN2423">2423</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2424"><td class="num" id="LN2424">2424</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2425"><td class="num" id="LN2425">2425</td><td class="line"> <span class='comment'>/* Free all the nodes up that we don't need in cache */</span></td></tr>
+<tr class="codeline" data-linenumber="2426"><td class="num" id="LN2426">2426</td><td class="line"> <span class='keyword'>for</span> (item = <span class='macro'>FILE_BROWSER_NODE_DIR (node)<span class='macro_popup'>((FileBrowserNodeDir *)(node))</span></span>-&gt;children; item;</td></tr>
+<tr class="codeline" data-linenumber="2427"><td class="num" id="LN2427">2427</td><td class="line"> item = item-&gt;next) {</td></tr>
+<tr class="codeline" data-linenumber="2428"><td class="num" id="LN2428">2428</td><td class="line"> check = (FileBrowserNode *) (item-&gt;data);</td></tr>
+<tr class="codeline" data-linenumber="2429"><td class="num" id="LN2429">2429</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2430"><td class="num" id="LN2430">2430</td><td class="line"> <span class='keyword'>if</span> (<span class='macro'>NODE_IS_DIR (check)<span class='macro_popup'>(((check)-&gt;flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_DIRECTORY<br>))</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="2431"><td class="num" id="LN2431">2431</td><td class="line"> <span class='keyword'>for</span> (copy =</td></tr>
+<tr class="codeline" data-linenumber="2432"><td class="num" id="LN2432">2432</td><td class="line"> <span class='macro'>FILE_BROWSER_NODE_DIR (check)<span class='macro_popup'>((FileBrowserNodeDir *)(check))</span></span>-&gt;children; copy;</td></tr>
+<tr class="codeline" data-linenumber="2433"><td class="num" id="LN2433">2433</td><td class="line"> copy = copy-&gt;next) {</td></tr>
+<tr class="codeline" data-linenumber="2434"><td class="num" id="LN2434">2434</td><td class="line"> file_browser_node_free_children (model,</td></tr>
+<tr class="codeline" data-linenumber="2435"><td class="num" id="LN2435">2435</td><td class="line"> (FileBrowserNode</td></tr>
+<tr class="codeline" data-linenumber="2436"><td class="num" id="LN2436">2436</td><td class="line"> *)</td></tr>
+<tr class="codeline" data-linenumber="2437"><td class="num" id="LN2437">2437</td><td class="line"> (copy-&gt;</td></tr>
+<tr class="codeline" data-linenumber="2438"><td class="num" id="LN2438">2438</td><td class="line"> data));</td></tr>
+<tr class="codeline" data-linenumber="2439"><td class="num" id="LN2439">2439</td><td class="line"> file_browser_node_unload (model,</td></tr>
+<tr class="codeline" data-linenumber="2440"><td class="num" id="LN2440">2440</td><td class="line"> (FileBrowserNode</td></tr>
+<tr class="codeline" data-linenumber="2441"><td class="num" id="LN2441">2441</td><td class="line"> *) (copy-&gt;data),</td></tr>
+<tr class="codeline" data-linenumber="2442"><td class="num" id="LN2442">2442</td><td class="line"> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2443"><td class="num" id="LN2443">2443</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2444"><td class="num" id="LN2444">2444</td><td class="line"> } <span class='keyword'>else</span> <span class='keyword'>if</span> (<span class='macro'>NODE_IS_DUMMY (check)<span class='macro_popup'>(((check)-&gt;flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_DUMMY<br>))</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="2445"><td class="num" id="LN2445">2445</td><td class="line"> check-&gt;flags |=</td></tr>
+<tr class="codeline" data-linenumber="2446"><td class="num" id="LN2446">2446</td><td class="line"> PLUMA_FILE_BROWSER_STORE_FLAG_IS_HIDDEN;</td></tr>
+<tr class="codeline" data-linenumber="2447"><td class="num" id="LN2447">2447</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2448"><td class="num" id="LN2448">2448</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2449"><td class="num" id="LN2449">2449</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2450"><td class="num" id="LN2450">2450</td><td class="line"> <span class='comment'>/* Now finally, set the virtual root, and load it up! */</span></td></tr>
+<tr class="codeline" data-linenumber="2451"><td class="num" id="LN2451">2451</td><td class="line"> model-&gt;priv-&gt;virtual_root = node;</td></tr>
+<tr class="codeline" data-linenumber="2452"><td class="num" id="LN2452">2452</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2453"><td class="num" id="LN2453">2453</td><td class="line"> <span class='comment'>/* Notify that the virtual-root has changed before loading up new nodes so that the</span></td></tr>
+<tr class="codeline" data-linenumber="2454"><td class="num" id="LN2454">2454</td><td class="line"> <span class='comment'>"root_changed" signal can be emitted before any "inserted" signals */</span></td></tr>
+<tr class="codeline" data-linenumber="2455"><td class="num" id="LN2455">2455</td><td class="line"> g_object_notify (<span class='macro'>G_OBJECT (model)<span class='macro_popup'>((((GObject*) (void *) ((model)))))</span></span>, <span class='string_literal'>"virtual-root"</span>);</td></tr>
+<tr class="codeline" data-linenumber="2456"><td class="num" id="LN2456">2456</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2457"><td class="num" id="LN2457">2457</td><td class="line"> model_fill (model, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, &amp;empty);</td></tr>
+<tr class="codeline" data-linenumber="2458"><td class="num" id="LN2458">2458</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2459"><td class="num" id="LN2459">2459</td><td class="line"> <span class='keyword'>if</span> (!<span class='macro'>NODE_LOADED (node)<span class='macro_popup'>(((node)-&gt;flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_LOADED<br>))</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="2460"><td class="num" id="LN2460">2460</td><td class="line"> model_load_directory (model, node);</td></tr>
+<tr class="codeline" data-linenumber="2461"><td class="num" id="LN2461">2461</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2462"><td class="num" id="LN2462">2462</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2463"><td class="num" id="LN2463">2463</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2464"><td class="num" id="LN2464">2464</td><td class="line">set_virtual_root_from_file (PlumaFileBrowserStore * model,</td></tr>
+<tr class="codeline" data-linenumber="2465"><td class="num" id="LN2465">2465</td><td class="line"> GFile * file)</td></tr>
+<tr class="codeline" data-linenumber="2466"><td class="num" id="LN2466">2466</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2467"><td class="num" id="LN2467">2467</td><td class="line"> GList * files;</td></tr>
+<tr class="codeline" data-linenumber="2468"><td class="num" id="LN2468">2468</td><td class="line"> GList * item;</td></tr>
+<tr class="codeline" data-linenumber="2469"><td class="num" id="LN2469">2469</td><td class="line"> FileBrowserNode * parent;</td></tr>
+<tr class="codeline" data-linenumber="2470"><td class="num" id="LN2470">2470</td><td class="line"> GFile * check;</td></tr>
+<tr class="codeline" data-linenumber="2471"><td class="num" id="LN2471">2471</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2472"><td class="num" id="LN2472">2472</td><td class="line"> <span class='comment'>/* Always clear the model before altering the nodes */</span></td></tr>
+<tr class="codeline" data-linenumber="2473"><td class="num" id="LN2473">2473</td><td class="line"> model_clear (model, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2474"><td class="num" id="LN2474">2474</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2475"><td class="num" id="LN2475">2475</td><td class="line"> <span class='comment'>/* Create the node path, get all the uri's */</span></td></tr>
+<tr class="codeline" data-linenumber="2476"><td class="num" id="LN2476">2476</td><td class="line"> files = get_parent_files (model, file);</td></tr>
+<tr class="codeline" data-linenumber="2477"><td class="num" id="LN2477">2477</td><td class="line"> parent = model-&gt;priv-&gt;root;</td></tr>
+<tr class="codeline" data-linenumber="2478"><td class="num" id="LN2478">2478</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2479"><td class="num" id="LN2479">2479</td><td class="line"> <span class='keyword'>for</span> (item = files; item; item = item-&gt;next) {</td></tr>
+<tr class="codeline" data-linenumber="2480"><td class="num" id="LN2480">2480</td><td class="line"> check = <span class='macro'>G_FILE (item-&gt;data)<span class='macro_popup'>((((GFile*) (void *) ((item-&gt;data)))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2481"><td class="num" id="LN2481">2481</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2482"><td class="num" id="LN2482">2482</td><td class="line"> parent = model_add_node_from_dir (model, parent, check);</td></tr>
+<tr class="codeline" data-linenumber="2483"><td class="num" id="LN2483">2483</td><td class="line"> g_object_unref (check);</td></tr>
+<tr class="codeline" data-linenumber="2484"><td class="num" id="LN2484">2484</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2485"><td class="num" id="LN2485">2485</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2486"><td class="num" id="LN2486">2486</td><td class="line"> g_list_free (files);</td></tr>
+<tr class="codeline" data-linenumber="2487"><td class="num" id="LN2487">2487</td><td class="line"> set_virtual_root_from_node (model, parent);</td></tr>
+<tr class="codeline" data-linenumber="2488"><td class="num" id="LN2488">2488</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2489"><td class="num" id="LN2489">2489</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2490"><td class="num" id="LN2490">2490</td><td class="line"><span class='keyword'>static</span> FileBrowserNode *</td></tr>
+<tr class="codeline" data-linenumber="2491"><td class="num" id="LN2491">2491</td><td class="line">model_find_node_children (PlumaFileBrowserStore * model,</td></tr>
+<tr class="codeline" data-linenumber="2492"><td class="num" id="LN2492">2492</td><td class="line"> FileBrowserNode * parent,</td></tr>
+<tr class="codeline" data-linenumber="2493"><td class="num" id="LN2493">2493</td><td class="line"> GFile * file)</td></tr>
+<tr class="codeline" data-linenumber="2494"><td class="num" id="LN2494">2494</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2495"><td class="num" id="LN2495">2495</td><td class="line"> FileBrowserNodeDir *dir;</td></tr>
+<tr class="codeline" data-linenumber="2496"><td class="num" id="LN2496">2496</td><td class="line"> FileBrowserNode *child;</td></tr>
+<tr class="codeline" data-linenumber="2497"><td class="num" id="LN2497">2497</td><td class="line"> FileBrowserNode *result;</td></tr>
+<tr class="codeline" data-linenumber="2498"><td class="num" id="LN2498">2498</td><td class="line"> GSList *children;</td></tr>
+<tr class="codeline" data-linenumber="2499"><td class="num" id="LN2499">2499</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2500"><td class="num" id="LN2500">2500</td><td class="line"> <span class='keyword'>if</span> (!<span class='macro'>NODE_IS_DIR (parent)<span class='macro_popup'>(((parent)-&gt;flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_DIRECTORY<br>))</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="2501"><td class="num" id="LN2501">2501</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2502"><td class="num" id="LN2502">2502</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2503"><td class="num" id="LN2503">2503</td><td class="line"> dir = <span class='macro'>FILE_BROWSER_NODE_DIR (parent)<span class='macro_popup'>((FileBrowserNodeDir *)(parent))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2504"><td class="num" id="LN2504">2504</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2505"><td class="num" id="LN2505">2505</td><td class="line"> <span class='keyword'>for</span> (children = dir-&gt;children; children; children = children-&gt;next) {</td></tr>
+<tr class="codeline" data-linenumber="2506"><td class="num" id="LN2506">2506</td><td class="line"> child = (FileBrowserNode *)(children-&gt;data);</td></tr>
+<tr class="codeline" data-linenumber="2507"><td class="num" id="LN2507">2507</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2508"><td class="num" id="LN2508">2508</td><td class="line"> result = model_find_node (model, child, file);</td></tr>
+<tr class="codeline" data-linenumber="2509"><td class="num" id="LN2509">2509</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2510"><td class="num" id="LN2510">2510</td><td class="line"> <span class='keyword'>if</span> (result)</td></tr>
+<tr class="codeline" data-linenumber="2511"><td class="num" id="LN2511">2511</td><td class="line"> <span class='keyword'>return</span> result;</td></tr>
+<tr class="codeline" data-linenumber="2512"><td class="num" id="LN2512">2512</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2513"><td class="num" id="LN2513">2513</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2514"><td class="num" id="LN2514">2514</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2515"><td class="num" id="LN2515">2515</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2516"><td class="num" id="LN2516">2516</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2517"><td class="num" id="LN2517">2517</td><td class="line"><span class='keyword'>static</span> FileBrowserNode *</td></tr>
+<tr class="codeline" data-linenumber="2518"><td class="num" id="LN2518">2518</td><td class="line">model_find_node (PlumaFileBrowserStore * model,</td></tr>
+<tr class="codeline" data-linenumber="2519"><td class="num" id="LN2519">2519</td><td class="line"> FileBrowserNode * node,</td></tr>
+<tr class="codeline" data-linenumber="2520"><td class="num" id="LN2520">2520</td><td class="line"> GFile * file)</td></tr>
+<tr class="codeline" data-linenumber="2521"><td class="num" id="LN2521">2521</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2522"><td class="num" id="LN2522">2522</td><td class="line"> <span class='keyword'>if</span> (node == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="2523"><td class="num" id="LN2523">2523</td><td class="line"> node = model-&gt;priv-&gt;root;</td></tr>
+<tr class="codeline" data-linenumber="2524"><td class="num" id="LN2524">2524</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2525"><td class="num" id="LN2525">2525</td><td class="line"> <span class='keyword'>if</span> (node-&gt;file &amp;&amp; g_file_equal (node-&gt;file, file))</td></tr>
+<tr class="codeline" data-linenumber="2526"><td class="num" id="LN2526">2526</td><td class="line"> <span class='keyword'>return</span> node;</td></tr>
+<tr class="codeline" data-linenumber="2527"><td class="num" id="LN2527">2527</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2528"><td class="num" id="LN2528">2528</td><td class="line"> <span class='keyword'>if</span> (<span class='macro'>NODE_IS_DIR (node)<span class='macro_popup'>(((node)-&gt;flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_DIRECTORY<br>))</span></span> &amp;&amp; g_file_has_prefix (file, node-&gt;file))</td></tr>
+<tr class="codeline" data-linenumber="2529"><td class="num" id="LN2529">2529</td><td class="line"> <span class='keyword'>return</span> model_find_node_children (model, node, file);</td></tr>
+<tr class="codeline" data-linenumber="2530"><td class="num" id="LN2530">2530</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2531"><td class="num" id="LN2531">2531</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2532"><td class="num" id="LN2532">2532</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2533"><td class="num" id="LN2533">2533</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2534"><td class="num" id="LN2534">2534</td><td class="line"><span class='keyword'>static</span> GQuark</td></tr>
+<tr class="codeline" data-linenumber="2535"><td class="num" id="LN2535">2535</td><td class="line">pluma_file_browser_store_error_quark (<span class='keyword'>void</span>)</td></tr>
+<tr class="codeline" data-linenumber="2536"><td class="num" id="LN2536">2536</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2537"><td class="num" id="LN2537">2537</td><td class="line"> <span class='keyword'>static</span> GQuark quark = 0;</td></tr>
+<tr class="codeline" data-linenumber="2538"><td class="num" id="LN2538">2538</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2539"><td class="num" id="LN2539">2539</td><td class="line"> <span class='keyword'>if</span> (<span class='macro'>G_UNLIKELY (quark == 0)<span class='macro_popup'>(__builtin_expect (__extension__ ({ int _g_boolean_var_220; if<br> (quark == 0) _g_boolean_var_220 = 1; else _g_boolean_var_220<br> = 0; _g_boolean_var_220; }), 0))</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="2540"><td class="num" id="LN2540">2540</td><td class="line"> quark = g_quark_from_string (<span class='string_literal'>"pluma_file_browser_store_error"</span>);</td></tr>
+<tr class="codeline" data-linenumber="2541"><td class="num" id="LN2541">2541</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2542"><td class="num" id="LN2542">2542</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2543"><td class="num" id="LN2543">2543</td><td class="line"> <span class='keyword'>return</span> quark;</td></tr>
+<tr class="codeline" data-linenumber="2544"><td class="num" id="LN2544">2544</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2545"><td class="num" id="LN2545">2545</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2546"><td class="num" id="LN2546">2546</td><td class="line"><span class='keyword'>static</span> GFile *</td></tr>
+<tr class="codeline" data-linenumber="2547"><td class="num" id="LN2547">2547</td><td class="line">unique_new_name (GFile * directory, gchar <span class='keyword'>const</span> * name)</td></tr>
+<tr class="codeline" data-linenumber="2548"><td class="num" id="LN2548">2548</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2549"><td class="num" id="LN2549">2549</td><td class="line"> GFile * newuri = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2550"><td class="num" id="LN2550">2550</td><td class="line"> guint num = 0;</td></tr>
+<tr class="codeline" data-linenumber="2551"><td class="num" id="LN2551">2551</td><td class="line"> gchar * newname;</td></tr>
+<tr class="codeline" data-linenumber="2552"><td class="num" id="LN2552">2552</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2553"><td class="num" id="LN2553">2553</td><td class="line"> <span class='keyword'>while</span> (newuri == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> || g_file_query_exists (newuri, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)) {</td></tr>
+<tr class="codeline" data-linenumber="2554"><td class="num" id="LN2554">2554</td><td class="line"> <span class='keyword'>if</span> (newuri != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="2555"><td class="num" id="LN2555">2555</td><td class="line"> g_object_unref (newuri);</td></tr>
+<tr class="codeline" data-linenumber="2556"><td class="num" id="LN2556">2556</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2557"><td class="num" id="LN2557">2557</td><td class="line"> <span class='keyword'>if</span> (num == 0)</td></tr>
+<tr class="codeline" data-linenumber="2558"><td class="num" id="LN2558">2558</td><td class="line"> newname = <span class='macro'>g_strdup (name)<span class='macro_popup'>g_strdup_inline (name)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2559"><td class="num" id="LN2559">2559</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="2560"><td class="num" id="LN2560">2560</td><td class="line"> newname = g_strdup_printf (<span class='string_literal'>"%s(%d)"</span>, name, num);</td></tr>
+<tr class="codeline" data-linenumber="2561"><td class="num" id="LN2561">2561</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2562"><td class="num" id="LN2562">2562</td><td class="line"> newuri = g_file_get_child (directory, newname);</td></tr>
+<tr class="codeline" data-linenumber="2563"><td class="num" id="LN2563">2563</td><td class="line"> g_free (newname);</td></tr>
+<tr class="codeline" data-linenumber="2564"><td class="num" id="LN2564">2564</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2565"><td class="num" id="LN2565">2565</td><td class="line"> ++num;</td></tr>
+<tr class="codeline" data-linenumber="2566"><td class="num" id="LN2566">2566</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2567"><td class="num" id="LN2567">2567</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2568"><td class="num" id="LN2568">2568</td><td class="line"> <span class='keyword'>return</span> newuri;</td></tr>
+<tr class="codeline" data-linenumber="2569"><td class="num" id="LN2569">2569</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2570"><td class="num" id="LN2570">2570</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2571"><td class="num" id="LN2571">2571</td><td class="line"><span class='keyword'>static</span> PlumaFileBrowserStoreResult</td></tr>
+<tr class="codeline" data-linenumber="2572"><td class="num" id="LN2572">2572</td><td class="line">model_root_mounted (PlumaFileBrowserStore * model, gchar <span class='keyword'>const</span> * virtual_root)</td></tr>
+<tr class="codeline" data-linenumber="2573"><td class="num" id="LN2573">2573</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2574"><td class="num" id="LN2574">2574</td><td class="line"> model_check_dummy (model, model-&gt;priv-&gt;root);</td></tr>
+<tr class="codeline" data-linenumber="2575"><td class="num" id="LN2575">2575</td><td class="line"> g_object_notify (<span class='macro'>G_OBJECT (model)<span class='macro_popup'>((((GObject*) (void *) ((model)))))</span></span>, <span class='string_literal'>"root"</span>);</td></tr>
+<tr class="codeline" data-linenumber="2576"><td class="num" id="LN2576">2576</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2577"><td class="num" id="LN2577">2577</td><td class="line"> <span class='keyword'>if</span> (virtual_root != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="2578"><td class="num" id="LN2578">2578</td><td class="line"> <span class='keyword'>return</span></td></tr>
+<tr class="codeline" data-linenumber="2579"><td class="num" id="LN2579">2579</td><td class="line"> pluma_file_browser_store_set_virtual_root_from_string</td></tr>
+<tr class="codeline" data-linenumber="2580"><td class="num" id="LN2580">2580</td><td class="line"> (model, virtual_root);</td></tr>
+<tr class="codeline" data-linenumber="2581"><td class="num" id="LN2581">2581</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="2582"><td class="num" id="LN2582">2582</td><td class="line"> set_virtual_root_from_node (model,</td></tr>
+<tr class="codeline" data-linenumber="2583"><td class="num" id="LN2583">2583</td><td class="line"> model-&gt;priv-&gt;root);</td></tr>
+<tr class="codeline" data-linenumber="2584"><td class="num" id="LN2584">2584</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2585"><td class="num" id="LN2585">2585</td><td class="line"> <span class='keyword'>return</span> PLUMA_FILE_BROWSER_STORE_RESULT_OK;</td></tr>
+<tr class="codeline" data-linenumber="2586"><td class="num" id="LN2586">2586</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2587"><td class="num" id="LN2587">2587</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2588"><td class="num" id="LN2588">2588</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2589"><td class="num" id="LN2589">2589</td><td class="line">handle_root_error (PlumaFileBrowserStore * model, GError *error)</td></tr>
+<tr class="codeline" data-linenumber="2590"><td class="num" id="LN2590">2590</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2591"><td class="num" id="LN2591">2591</td><td class="line"> FileBrowserNode * root;</td></tr>
+<tr class="codeline" data-linenumber="2592"><td class="num" id="LN2592">2592</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2593"><td class="num" id="LN2593">2593</td><td class="line"> g_signal_emit (model,</td></tr>
+<tr class="codeline" data-linenumber="2594"><td class="num" id="LN2594">2594</td><td class="line"> model_signals[ERROR],</td></tr>
+<tr class="codeline" data-linenumber="2595"><td class="num" id="LN2595">2595</td><td class="line"> 0,</td></tr>
+<tr class="codeline" data-linenumber="2596"><td class="num" id="LN2596">2596</td><td class="line"> PLUMA_FILE_BROWSER_ERROR_SET_ROOT,</td></tr>
+<tr class="codeline" data-linenumber="2597"><td class="num" id="LN2597">2597</td><td class="line"> error-&gt;message);</td></tr>
+<tr class="codeline" data-linenumber="2598"><td class="num" id="LN2598">2598</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2599"><td class="num" id="LN2599">2599</td><td class="line"> <span class='comment'>/* Set the virtual root to the root */</span></td></tr>
+<tr class="codeline" data-linenumber="2600"><td class="num" id="LN2600">2600</td><td class="line"> root = model-&gt;priv-&gt;root;</td></tr>
+<tr class="codeline" data-linenumber="2601"><td class="num" id="LN2601">2601</td><td class="line"> model-&gt;priv-&gt;virtual_root = root;</td></tr>
+<tr class="codeline" data-linenumber="2602"><td class="num" id="LN2602">2602</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2603"><td class="num" id="LN2603">2603</td><td class="line"> <span class='comment'>/* Set the root to be loaded */</span></td></tr>
+<tr class="codeline" data-linenumber="2604"><td class="num" id="LN2604">2604</td><td class="line"> root-&gt;flags |= PLUMA_FILE_BROWSER_STORE_FLAG_LOADED;</td></tr>
+<tr class="codeline" data-linenumber="2605"><td class="num" id="LN2605">2605</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2606"><td class="num" id="LN2606">2606</td><td class="line"> <span class='comment'>/* Check the dummy */</span></td></tr>
+<tr class="codeline" data-linenumber="2607"><td class="num" id="LN2607">2607</td><td class="line"> model_check_dummy (model, root);</td></tr>
+<tr class="codeline" data-linenumber="2608"><td class="num" id="LN2608">2608</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2609"><td class="num" id="LN2609">2609</td><td class="line"> g_object_notify (<span class='macro'>G_OBJECT (model)<span class='macro_popup'>((((GObject*) (void *) ((model)))))</span></span>, <span class='string_literal'>"root"</span>);</td></tr>
+<tr class="codeline" data-linenumber="2610"><td class="num" id="LN2610">2610</td><td class="line"> g_object_notify (<span class='macro'>G_OBJECT (model)<span class='macro_popup'>((((GObject*) (void *) ((model)))))</span></span>, <span class='string_literal'>"virtual-root"</span>);</td></tr>
+<tr class="codeline" data-linenumber="2611"><td class="num" id="LN2611">2611</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2612"><td class="num" id="LN2612">2612</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2613"><td class="num" id="LN2613">2613</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2614"><td class="num" id="LN2614">2614</td><td class="line">mount_cb (GFile * file,</td></tr>
+<tr class="codeline" data-linenumber="2615"><td class="num" id="LN2615">2615</td><td class="line"> GAsyncResult * res,</td></tr>
+<tr class="codeline" data-linenumber="2616"><td class="num" id="LN2616">2616</td><td class="line"> MountInfo * mount_info)</td></tr>
+<tr class="codeline" data-linenumber="2617"><td class="num" id="LN2617">2617</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2618"><td class="num" id="LN2618">2618</td><td class="line"> gboolean mounted;</td></tr>
+<tr class="codeline" data-linenumber="2619"><td class="num" id="LN2619">2619</td><td class="line"> GError * error = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2620"><td class="num" id="LN2620">2620</td><td class="line"> PlumaFileBrowserStore * model = mount_info-&gt;model;</td></tr>
+<tr class="codeline" data-linenumber="2621"><td class="num" id="LN2621">2621</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2622"><td class="num" id="LN2622">2622</td><td class="line"> mounted = g_file_mount_enclosing_volume_finish (file, res, &amp;error);</td></tr>
+<tr class="codeline" data-linenumber="2623"><td class="num" id="LN2623">2623</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2624"><td class="num" id="LN2624">2624</td><td class="line"> <span class='keyword'>if</span> (mount_info-&gt;model)</td></tr>
+<tr class="codeline" data-linenumber="2625"><td class="num" id="LN2625">2625</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="2626"><td class="num" id="LN2626">2626</td><td class="line"> model-&gt;priv-&gt;mount_info = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2627"><td class="num" id="LN2627">2627</td><td class="line"> model_end_loading (model, model-&gt;priv-&gt;root);</td></tr>
+<tr class="codeline" data-linenumber="2628"><td class="num" id="LN2628">2628</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2629"><td class="num" id="LN2629">2629</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2630"><td class="num" id="LN2630">2630</td><td class="line"> <span class='keyword'>if</span> (!mount_info-&gt;model || g_cancellable_is_cancelled (mount_info-&gt;cancellable))</td></tr>
+<tr class="codeline" data-linenumber="2631"><td class="num" id="LN2631">2631</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="2632"><td class="num" id="LN2632">2632</td><td class="line"> <span class='comment'>// Reset because it might be reused?</span></td></tr>
+<tr class="codeline" data-linenumber="2633"><td class="num" id="LN2633">2633</td><td class="line"> g_cancellable_reset (mount_info-&gt;cancellable);</td></tr>
+<tr class="codeline" data-linenumber="2634"><td class="num" id="LN2634">2634</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2635"><td class="num" id="LN2635">2635</td><td class="line"> <span class='keyword'>else</span> <span class='keyword'>if</span> (mounted)</td></tr>
+<tr class="codeline" data-linenumber="2636"><td class="num" id="LN2636">2636</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="2637"><td class="num" id="LN2637">2637</td><td class="line"> model_root_mounted (model, mount_info-&gt;virtual_root);</td></tr>
+<tr class="codeline" data-linenumber="2638"><td class="num" id="LN2638">2638</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2639"><td class="num" id="LN2639">2639</td><td class="line"> <span class='keyword'>else</span> <span class='keyword'>if</span> (error-&gt;code != G_IO_ERROR_CANCELLED)</td></tr>
+<tr class="codeline" data-linenumber="2640"><td class="num" id="LN2640">2640</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="2641"><td class="num" id="LN2641">2641</td><td class="line"> handle_root_error (model, error);</td></tr>
+<tr class="codeline" data-linenumber="2642"><td class="num" id="LN2642">2642</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2643"><td class="num" id="LN2643">2643</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2644"><td class="num" id="LN2644">2644</td><td class="line"> <span class='keyword'>if</span> (error)</td></tr>
+<tr class="codeline" data-linenumber="2645"><td class="num" id="LN2645">2645</td><td class="line"> g_error_free (error);</td></tr>
+<tr class="codeline" data-linenumber="2646"><td class="num" id="LN2646">2646</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2647"><td class="num" id="LN2647">2647</td><td class="line"> g_object_unref (mount_info-&gt;operation);</td></tr>
+<tr class="codeline" data-linenumber="2648"><td class="num" id="LN2648">2648</td><td class="line"> g_object_unref (mount_info-&gt;cancellable);</td></tr>
+<tr class="codeline" data-linenumber="2649"><td class="num" id="LN2649">2649</td><td class="line"> g_free (mount_info-&gt;virtual_root);</td></tr>
+<tr class="codeline" data-linenumber="2650"><td class="num" id="LN2650">2650</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2651"><td class="num" id="LN2651">2651</td><td class="line"> g_free (mount_info);</td></tr>
+<tr class="codeline" data-linenumber="2652"><td class="num" id="LN2652">2652</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2653"><td class="num" id="LN2653">2653</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2654"><td class="num" id="LN2654">2654</td><td class="line"><span class='keyword'>static</span> PlumaFileBrowserStoreResult</td></tr>
+<tr class="codeline" data-linenumber="2655"><td class="num" id="LN2655">2655</td><td class="line">model_mount_root (PlumaFileBrowserStore * model, gchar <span class='keyword'>const</span> * virtual_root)</td></tr>
+<tr class="codeline" data-linenumber="2656"><td class="num" id="LN2656">2656</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2657"><td class="num" id="LN2657">2657</td><td class="line"> GFileInfo * info;</td></tr>
+<tr class="codeline" data-linenumber="2658"><td class="num" id="LN2658">2658</td><td class="line"> GError * error = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2659"><td class="num" id="LN2659">2659</td><td class="line"> MountInfo * mount_info;</td></tr>
+<tr class="codeline" data-linenumber="2660"><td class="num" id="LN2660">2660</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2661"><td class="num" id="LN2661">2661</td><td class="line"> info = g_file_query_info (model-&gt;priv-&gt;root-&gt;file,</td></tr>
+<tr class="codeline" data-linenumber="2662"><td class="num" id="LN2662">2662</td><td class="line"> <span class='macro'>G_FILE_ATTRIBUTE_STANDARD_TYPE<span class='macro_popup'>"standard::type"</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="2663"><td class="num" id="LN2663">2663</td><td class="line"> G_FILE_QUERY_INFO_NONE,</td></tr>
+<tr class="codeline" data-linenumber="2664"><td class="num" id="LN2664">2664</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="2665"><td class="num" id="LN2665">2665</td><td class="line"> &amp;error);</td></tr>
+<tr class="codeline" data-linenumber="2666"><td class="num" id="LN2666">2666</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2667"><td class="num" id="LN2667">2667</td><td class="line"> <span class='keyword'>if</span> (!info) {</td></tr>
+<tr class="codeline" data-linenumber="2668"><td class="num" id="LN2668">2668</td><td class="line"> <span class='keyword'>if</span> (error-&gt;code == G_IO_ERROR_NOT_MOUNTED) {</td></tr>
+<tr class="codeline" data-linenumber="2669"><td class="num" id="LN2669">2669</td><td class="line"> <span class='comment'>/* Try to mount it */</span></td></tr>
+<tr class="codeline" data-linenumber="2670"><td class="num" id="LN2670">2670</td><td class="line"> <span class='macro'>FILE_BROWSER_NODE_DIR (model-&gt;priv-&gt;root)<span class='macro_popup'>((FileBrowserNodeDir *)(model-&gt;priv-&gt;root))</span></span>-&gt;cancellable = g_cancellable_new ();</td></tr>
+<tr class="codeline" data-linenumber="2671"><td class="num" id="LN2671">2671</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2672"><td class="num" id="LN2672">2672</td><td class="line"> mount_info = <span class='macro'>g_new(MountInfo, 1)<span class='macro_popup'>(MountInfo *) (__extension__ ({ gsize __n = (gsize) (1); gsize<br> __s = sizeof (MountInfo); gpointer __p; if (__s == 1) __p = g_malloc<br> (__n); else if (__builtin_constant_p (__n) &amp;&amp; (__s ==<br> 0 || __n &lt;= (9223372036854775807L *2UL+1UL) / __s)) __p =<br> g_malloc (__n * __s); else __p = g_malloc_n (__n, __s); __p;<br> }))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2673"><td class="num" id="LN2673">2673</td><td class="line"> mount_info-&gt;model = model;</td></tr>
+<tr class="codeline" data-linenumber="2674"><td class="num" id="LN2674">2674</td><td class="line"> mount_info-&gt;virtual_root = <span class='macro'>g_strdup (virtual_root)<span class='macro_popup'>g_strdup_inline (virtual_root)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2675"><td class="num" id="LN2675">2675</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2676"><td class="num" id="LN2676">2676</td><td class="line"> <span class='comment'>/* FIXME: we should be setting the correct window */</span></td></tr>
+<tr class="codeline" data-linenumber="2677"><td class="num" id="LN2677">2677</td><td class="line"> mount_info-&gt;operation = gtk_mount_operation_new (<span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2678"><td class="num" id="LN2678">2678</td><td class="line"> mount_info-&gt;cancellable = <span class='macro'>g_object_ref (FILE_BROWSER_NODE_DIR (model-&gt;priv-&gt;root)-&gt;cancellable)<span class='macro_popup'>((__typeof__ (((FileBrowserNodeDir *)(model-&gt;priv-&gt;root<br>))-&gt;cancellable)) (g_object_ref) (((FileBrowserNodeDir *)(<br>model-&gt;priv-&gt;root))-&gt;cancellable))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2679"><td class="num" id="LN2679">2679</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2680"><td class="num" id="LN2680">2680</td><td class="line"> model_begin_loading (model, model-&gt;priv-&gt;root);</td></tr>
+<tr class="codeline" data-linenumber="2681"><td class="num" id="LN2681">2681</td><td class="line"> g_file_mount_enclosing_volume (model-&gt;priv-&gt;root-&gt;file,</td></tr>
+<tr class="codeline" data-linenumber="2682"><td class="num" id="LN2682">2682</td><td class="line"> G_MOUNT_MOUNT_NONE,</td></tr>
+<tr class="codeline" data-linenumber="2683"><td class="num" id="LN2683">2683</td><td class="line"> mount_info-&gt;operation,</td></tr>
+<tr class="codeline" data-linenumber="2684"><td class="num" id="LN2684">2684</td><td class="line"> mount_info-&gt;cancellable,</td></tr>
+<tr class="codeline" data-linenumber="2685"><td class="num" id="LN2685">2685</td><td class="line"> (GAsyncReadyCallback)mount_cb,</td></tr>
+<tr class="codeline" data-linenumber="2686"><td class="num" id="LN2686">2686</td><td class="line"> mount_info);</td></tr>
+<tr class="codeline" data-linenumber="2687"><td class="num" id="LN2687">2687</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2688"><td class="num" id="LN2688">2688</td><td class="line"> model-&gt;priv-&gt;mount_info = mount_info;</td></tr>
+<tr class="codeline" data-linenumber="2689"><td class="num" id="LN2689">2689</td><td class="line"> <span class='keyword'>return</span> PLUMA_FILE_BROWSER_STORE_RESULT_MOUNTING;</td></tr>
+<tr class="codeline" data-linenumber="2690"><td class="num" id="LN2690">2690</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2691"><td class="num" id="LN2691">2691</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="2692"><td class="num" id="LN2692">2692</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="2693"><td class="num" id="LN2693">2693</td><td class="line"> handle_root_error (model, error);</td></tr>
+<tr class="codeline" data-linenumber="2694"><td class="num" id="LN2694">2694</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2695"><td class="num" id="LN2695">2695</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2696"><td class="num" id="LN2696">2696</td><td class="line"> g_error_free (error);</td></tr>
+<tr class="codeline" data-linenumber="2697"><td class="num" id="LN2697">2697</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="2698"><td class="num" id="LN2698">2698</td><td class="line"> g_object_unref (info);</td></tr>
+<tr class="codeline" data-linenumber="2699"><td class="num" id="LN2699">2699</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2700"><td class="num" id="LN2700">2700</td><td class="line"> <span class='keyword'>return</span> model_root_mounted (model, virtual_root);</td></tr>
+<tr class="codeline" data-linenumber="2701"><td class="num" id="LN2701">2701</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2702"><td class="num" id="LN2702">2702</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2703"><td class="num" id="LN2703">2703</td><td class="line"> <span class='keyword'>return</span> PLUMA_FILE_BROWSER_STORE_RESULT_OK;</td></tr>
+<tr class="codeline" data-linenumber="2704"><td class="num" id="LN2704">2704</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2705"><td class="num" id="LN2705">2705</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2706"><td class="num" id="LN2706">2706</td><td class="line"><span class='comment'>/* Public */</span></td></tr>
+<tr class="codeline" data-linenumber="2707"><td class="num" id="LN2707">2707</td><td class="line">PlumaFileBrowserStore *</td></tr>
+<tr class="codeline" data-linenumber="2708"><td class="num" id="LN2708">2708</td><td class="line">pluma_file_browser_store_new (gchar <span class='keyword'>const</span> *root)</td></tr>
+<tr class="codeline" data-linenumber="2709"><td class="num" id="LN2709">2709</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2710"><td class="num" id="LN2710">2710</td><td class="line"> PlumaFileBrowserStore *obj =</td></tr>
+<tr class="codeline" data-linenumber="2711"><td class="num" id="LN2711">2711</td><td class="line"> <span class='macro'>PLUMA_FILE_BROWSER_STORE (g_object_new<span class='macro_popup'>((((PlumaFileBrowserStore*) (void *) ((g_object_new ((pluma_file_browser_store_get_type<br> ()), ((void*)0)))))))</span></span></td></tr>
+<tr class="codeline" data-linenumber="2712"><td class="num" id="LN2712">2712</td><td class="line"> <span class='macro'>(PLUMA_TYPE_FILE_BROWSER_STORE,<span class='macro_popup'>((((PlumaFileBrowserStore*) (void *) ((g_object_new ((pluma_file_browser_store_get_type<br> ()), ((void*)0)))))))</span></span></td></tr>
+<tr class="codeline" data-linenumber="2713"><td class="num" id="LN2713">2713</td><td class="line"> <span class='macro'>NULL))<span class='macro_popup'>((((PlumaFileBrowserStore*) (void *) ((g_object_new ((pluma_file_browser_store_get_type<br> ()), ((void*)0)))))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2714"><td class="num" id="LN2714">2714</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2715"><td class="num" id="LN2715">2715</td><td class="line"> pluma_file_browser_store_set_root (obj, root);</td></tr>
+<tr class="codeline" data-linenumber="2716"><td class="num" id="LN2716">2716</td><td class="line"> <span class='keyword'>return</span> obj;</td></tr>
+<tr class="codeline" data-linenumber="2717"><td class="num" id="LN2717">2717</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2718"><td class="num" id="LN2718">2718</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2719"><td class="num" id="LN2719">2719</td><td class="line"><span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2720"><td class="num" id="LN2720">2720</td><td class="line">pluma_file_browser_store_set_value (PlumaFileBrowserStore * tree_model,</td></tr>
+<tr class="codeline" data-linenumber="2721"><td class="num" id="LN2721">2721</td><td class="line"> GtkTreeIter * iter, gint column,</td></tr>
+<tr class="codeline" data-linenumber="2722"><td class="num" id="LN2722">2722</td><td class="line"> GValue * value)</td></tr>
+<tr class="codeline" data-linenumber="2723"><td class="num" id="LN2723">2723</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2724"><td class="num" id="LN2724">2724</td><td class="line"> gpointer data;</td></tr>
+<tr class="codeline" data-linenumber="2725"><td class="num" id="LN2725">2725</td><td class="line"> FileBrowserNode *node;</td></tr>
+<tr class="codeline" data-linenumber="2726"><td class="num" id="LN2726">2726</td><td class="line"> GtkTreePath *path;</td></tr>
+<tr class="codeline" data-linenumber="2727"><td class="num" id="LN2727">2727</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2728"><td class="num" id="LN2728">2728</td><td class="line"> <span class='macro'>g_return_if_fail (PLUMA_IS_FILE_BROWSER_STORE (tree_model))<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_221<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((tree_model)); GType __t = ((pluma_file_browser_store_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_221 = 1; else _g_boolean_var_221 =<br> 0; _g_boolean_var_221; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "PLUMA_IS_FILE_BROWSER_STORE (tree_model)"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2729"><td class="num" id="LN2729">2729</td><td class="line"> <span class='macro'>g_return_if_fail (column ==<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_222<br>; if (column == PLUMA_FILE_BROWSER_STORE_COLUMN_EMBLEM) _g_boolean_var_222<br> = 1; else _g_boolean_var_222 = 0; _g_boolean_var_222; }), 1)<br>)) { } else { g_return_if_fail_warning (((gchar*) 0), ((const<br> char*) (__func__)), "column == PLUMA_FILE_BROWSER_STORE_COLUMN_EMBLEM"<br>); return; } } while (0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="2730"><td class="num" id="LN2730">2730</td><td class="line"> <span class='macro'>PLUMA_FILE_BROWSER_STORE_COLUMN_EMBLEM)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_222<br>; if (column == PLUMA_FILE_BROWSER_STORE_COLUMN_EMBLEM) _g_boolean_var_222<br> = 1; else _g_boolean_var_222 = 0; _g_boolean_var_222; }), 1)<br>)) { } else { g_return_if_fail_warning (((gchar*) 0), ((const<br> char*) (__func__)), "column == PLUMA_FILE_BROWSER_STORE_COLUMN_EMBLEM"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2731"><td class="num" id="LN2731">2731</td><td class="line"> <span class='macro'>g_return_if_fail (G_VALUE_HOLDS_OBJECT (value))<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_223<br>; if ((((__extension__ ({ const GValue *__val = (const GValue<br>*) ((value)); GType __t = (((GType) ((20) &lt;&lt; (2)))); gboolean<br> __r; if (!__val) __r = (0); else if (__val-&gt;g_type == __t<br>) __r = (!(0)); else __r = g_type_check_value_holds (__val, __t<br>); __r; }))))) _g_boolean_var_223 = 1; else _g_boolean_var_223<br> = 0; _g_boolean_var_223; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "G_VALUE_HOLDS_OBJECT (value)"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2732"><td class="num" id="LN2732">2732</td><td class="line"> <span class='macro'>g_return_if_fail (iter != NULL)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_224<br>; if (iter != ((void*)0)) _g_boolean_var_224 = 1; else _g_boolean_var_224<br> = 0; _g_boolean_var_224; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "iter != NULL"); return<br>; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2733"><td class="num" id="LN2733">2733</td><td class="line"> <span class='macro'>g_return_if_fail (iter-&gt;user_data != NULL)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_225<br>; if (iter-&gt;user_data != ((void*)0)) _g_boolean_var_225 = 1<br>; else _g_boolean_var_225 = 0; _g_boolean_var_225; }), 1))) {<br> } else { g_return_if_fail_warning (((gchar*) 0), ((const char<br>*) (__func__)), "iter-&gt;user_data != NULL"); return; } } while<br> (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2734"><td class="num" id="LN2734">2734</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2735"><td class="num" id="LN2735">2735</td><td class="line"> data = g_value_get_object (value);</td></tr>
+<tr class="codeline" data-linenumber="2736"><td class="num" id="LN2736">2736</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2737"><td class="num" id="LN2737">2737</td><td class="line"> <span class='keyword'>if</span> (data)</td></tr>
+<tr class="codeline" data-linenumber="2738"><td class="num" id="LN2738">2738</td><td class="line"> <span class='macro'>g_return_if_fail (GDK_IS_PIXBUF (data))<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_226<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((data)); GType __t = ((gdk_pixbuf_get_type ())); gboolean<br> __r; if (!__inst) __r = (0); else if (__inst-&gt;g_class &amp;&amp;<br> __inst-&gt;g_class-&gt;g_type == __t) __r = (!(0)); else __r<br> = g_type_check_instance_is_a (__inst, __t); __r; }))))) _g_boolean_var_226<br> = 1; else _g_boolean_var_226 = 0; _g_boolean_var_226; }), 1)<br>)) { } else { g_return_if_fail_warning (((gchar*) 0), ((const<br> char*) (__func__)), "GDK_IS_PIXBUF (data)"); return; } } while<br> (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2739"><td class="num" id="LN2739">2739</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2740"><td class="num" id="LN2740">2740</td><td class="line"> node = (FileBrowserNode *) (iter-&gt;user_data);</td></tr>
+<tr class="codeline" data-linenumber="2741"><td class="num" id="LN2741">2741</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2742"><td class="num" id="LN2742">2742</td><td class="line"> <span class='keyword'>if</span> (node-&gt;emblem)</td></tr>
+<tr class="codeline" data-linenumber="2743"><td class="num" id="LN2743">2743</td><td class="line"> g_object_unref (node-&gt;emblem);</td></tr>
+<tr class="codeline" data-linenumber="2744"><td class="num" id="LN2744">2744</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2745"><td class="num" id="LN2745">2745</td><td class="line"> <span class='keyword'>if</span> (data)</td></tr>
+<tr class="codeline" data-linenumber="2746"><td class="num" id="LN2746">2746</td><td class="line"> node-&gt;emblem = <span class='macro'>g_object_ref (GDK_PIXBUF (data))<span class='macro_popup'>((__typeof__ (((((GdkPixbuf*) (void *) ((data))))))) (g_object_ref<br>) (((((GdkPixbuf*) (void *) ((data)))))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2747"><td class="num" id="LN2747">2747</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="2748"><td class="num" id="LN2748">2748</td><td class="line"> node-&gt;emblem = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2749"><td class="num" id="LN2749">2749</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2750"><td class="num" id="LN2750">2750</td><td class="line"> model_recomposite_icon (tree_model, iter);</td></tr>
+<tr class="codeline" data-linenumber="2751"><td class="num" id="LN2751">2751</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2752"><td class="num" id="LN2752">2752</td><td class="line"> <span class='keyword'>if</span> (model_node_visibility (tree_model, node)) {</td></tr>
+<tr class="codeline" data-linenumber="2753"><td class="num" id="LN2753">2753</td><td class="line"> path = pluma_file_browser_store_get_path (<span class='macro'>GTK_TREE_MODEL (tree_model)<span class='macro_popup'>((((GtkTreeModel*) (void *) ((tree_model)))))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="2754"><td class="num" id="LN2754">2754</td><td class="line"> iter);</td></tr>
+<tr class="codeline" data-linenumber="2755"><td class="num" id="LN2755">2755</td><td class="line"> row_changed (tree_model, &amp;path, iter);</td></tr>
+<tr class="codeline" data-linenumber="2756"><td class="num" id="LN2756">2756</td><td class="line"> gtk_tree_path_free (path);</td></tr>
+<tr class="codeline" data-linenumber="2757"><td class="num" id="LN2757">2757</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2758"><td class="num" id="LN2758">2758</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2759"><td class="num" id="LN2759">2759</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2760"><td class="num" id="LN2760">2760</td><td class="line">PlumaFileBrowserStoreResult</td></tr>
+<tr class="codeline" data-linenumber="2761"><td class="num" id="LN2761">2761</td><td class="line">pluma_file_browser_store_set_virtual_root (PlumaFileBrowserStore * model,</td></tr>
+<tr class="codeline" data-linenumber="2762"><td class="num" id="LN2762">2762</td><td class="line"> GtkTreeIter * iter)</td></tr>
+<tr class="codeline" data-linenumber="2763"><td class="num" id="LN2763">2763</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2764"><td class="num" id="LN2764">2764</td><td class="line"> <span class='macro'>g_return_val_if_fail (PLUMA_IS_FILE_BROWSER_STORE (model),<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_227<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((model)); GType __t = ((pluma_file_browser_store_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_227 = 1; else _g_boolean_var_227 =<br> 0; _g_boolean_var_227; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "PLUMA_IS_FILE_BROWSER_STORE (model)"<br>); return (PLUMA_FILE_BROWSER_STORE_RESULT_NO_CHANGE); } } while<br> (0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="2765"><td class="num" id="LN2765">2765</td><td class="line"> <span class='macro'>PLUMA_FILE_BROWSER_STORE_RESULT_NO_CHANGE)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_227<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((model)); GType __t = ((pluma_file_browser_store_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_227 = 1; else _g_boolean_var_227 =<br> 0; _g_boolean_var_227; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "PLUMA_IS_FILE_BROWSER_STORE (model)"<br>); return (PLUMA_FILE_BROWSER_STORE_RESULT_NO_CHANGE); } } while<br> (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2766"><td class="num" id="LN2766">2766</td><td class="line"> <span class='macro'>g_return_val_if_fail (iter != NULL,<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_228<br>; if (iter != ((void*)0)) _g_boolean_var_228 = 1; else _g_boolean_var_228<br> = 0; _g_boolean_var_228; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "iter != NULL"); return<br> (PLUMA_FILE_BROWSER_STORE_RESULT_NO_CHANGE); } } while (0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="2767"><td class="num" id="LN2767">2767</td><td class="line"> <span class='macro'>PLUMA_FILE_BROWSER_STORE_RESULT_NO_CHANGE)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_228<br>; if (iter != ((void*)0)) _g_boolean_var_228 = 1; else _g_boolean_var_228<br> = 0; _g_boolean_var_228; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "iter != NULL"); return<br> (PLUMA_FILE_BROWSER_STORE_RESULT_NO_CHANGE); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2768"><td class="num" id="LN2768">2768</td><td class="line"> <span class='macro'>g_return_val_if_fail (iter-&gt;user_data != NULL,<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_229<br>; if (iter-&gt;user_data != ((void*)0)) _g_boolean_var_229 = 1<br>; else _g_boolean_var_229 = 0; _g_boolean_var_229; }), 1))) {<br> } else { g_return_if_fail_warning (((gchar*) 0), ((const char<br>*) (__func__)), "iter-&gt;user_data != NULL"); return (PLUMA_FILE_BROWSER_STORE_RESULT_NO_CHANGE<br>); } } while (0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="2769"><td class="num" id="LN2769">2769</td><td class="line"> <span class='macro'>PLUMA_FILE_BROWSER_STORE_RESULT_NO_CHANGE)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_229<br>; if (iter-&gt;user_data != ((void*)0)) _g_boolean_var_229 = 1<br>; else _g_boolean_var_229 = 0; _g_boolean_var_229; }), 1))) {<br> } else { g_return_if_fail_warning (((gchar*) 0), ((const char<br>*) (__func__)), "iter-&gt;user_data != NULL"); return (PLUMA_FILE_BROWSER_STORE_RESULT_NO_CHANGE<br>); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2770"><td class="num" id="LN2770">2770</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2771"><td class="num" id="LN2771">2771</td><td class="line"> model_clear (model, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2772"><td class="num" id="LN2772">2772</td><td class="line"> set_virtual_root_from_node (model,</td></tr>
+<tr class="codeline" data-linenumber="2773"><td class="num" id="LN2773">2773</td><td class="line"> (FileBrowserNode *) (iter-&gt;user_data));</td></tr>
+<tr class="codeline" data-linenumber="2774"><td class="num" id="LN2774">2774</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2775"><td class="num" id="LN2775">2775</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2776"><td class="num" id="LN2776">2776</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2777"><td class="num" id="LN2777">2777</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2778"><td class="num" id="LN2778">2778</td><td class="line">PlumaFileBrowserStoreResult</td></tr>
+<tr class="codeline" data-linenumber="2779"><td class="num" id="LN2779">2779</td><td class="line">pluma_file_browser_store_set_virtual_root_from_string</td></tr>
+<tr class="codeline" data-linenumber="2780"><td class="num" id="LN2780">2780</td><td class="line"> (PlumaFileBrowserStore * model, gchar <span class='keyword'>const</span> *root) {</td></tr>
+<tr class="codeline" data-linenumber="2781"><td class="num" id="LN2781">2781</td><td class="line"> GFile *file;</td></tr>
+<tr class="codeline" data-linenumber="2782"><td class="num" id="LN2782">2782</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2783"><td class="num" id="LN2783">2783</td><td class="line"> <span class='macro'>g_return_val_if_fail (PLUMA_IS_FILE_BROWSER_STORE (model),<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_230<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((model)); GType __t = ((pluma_file_browser_store_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_230 = 1; else _g_boolean_var_230 =<br> 0; _g_boolean_var_230; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "PLUMA_IS_FILE_BROWSER_STORE (model)"<br>); return (PLUMA_FILE_BROWSER_STORE_RESULT_NO_CHANGE); } } while<br> (0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="2784"><td class="num" id="LN2784">2784</td><td class="line"> <span class='macro'>PLUMA_FILE_BROWSER_STORE_RESULT_NO_CHANGE)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_230<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((model)); GType __t = ((pluma_file_browser_store_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_230 = 1; else _g_boolean_var_230 =<br> 0; _g_boolean_var_230; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "PLUMA_IS_FILE_BROWSER_STORE (model)"<br>); return (PLUMA_FILE_BROWSER_STORE_RESULT_NO_CHANGE); } } while<br> (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2785"><td class="num" id="LN2785">2785</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2786"><td class="num" id="LN2786">2786</td><td class="line"> file = g_file_new_for_uri (root);</td></tr>
+<tr class="codeline" data-linenumber="2787"><td class="num" id="LN2787">2787</td><td class="line"> <span class='keyword'>if</span> (file == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="2788"><td class="num" id="LN2788">2788</td><td class="line"> g_warning (<span class='string_literal'>"Invalid uri (%s)"</span>, root);</td></tr>
+<tr class="codeline" data-linenumber="2789"><td class="num" id="LN2789">2789</td><td class="line"> <span class='keyword'>return</span> PLUMA_FILE_BROWSER_STORE_RESULT_NO_CHANGE;</td></tr>
+<tr class="codeline" data-linenumber="2790"><td class="num" id="LN2790">2790</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2791"><td class="num" id="LN2791">2791</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2792"><td class="num" id="LN2792">2792</td><td class="line"> <span class='comment'>/* Check if uri is already the virtual root */</span></td></tr>
+<tr class="codeline" data-linenumber="2793"><td class="num" id="LN2793">2793</td><td class="line"> <span class='keyword'>if</span> (model-&gt;priv-&gt;virtual_root &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="2794"><td class="num" id="LN2794">2794</td><td class="line"> g_file_equal (model-&gt;priv-&gt;virtual_root-&gt;file, file)) {</td></tr>
+<tr class="codeline" data-linenumber="2795"><td class="num" id="LN2795">2795</td><td class="line"> g_object_unref (file);</td></tr>
+<tr class="codeline" data-linenumber="2796"><td class="num" id="LN2796">2796</td><td class="line"> <span class='keyword'>return</span> PLUMA_FILE_BROWSER_STORE_RESULT_NO_CHANGE;</td></tr>
+<tr class="codeline" data-linenumber="2797"><td class="num" id="LN2797">2797</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2798"><td class="num" id="LN2798">2798</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2799"><td class="num" id="LN2799">2799</td><td class="line"> <span class='comment'>/* Check if uri is the root itself */</span></td></tr>
+<tr class="codeline" data-linenumber="2800"><td class="num" id="LN2800">2800</td><td class="line"> <span class='keyword'>if</span> (g_file_equal (model-&gt;priv-&gt;root-&gt;file, file)) {</td></tr>
+<tr class="codeline" data-linenumber="2801"><td class="num" id="LN2801">2801</td><td class="line"> g_object_unref (file);</td></tr>
+<tr class="codeline" data-linenumber="2802"><td class="num" id="LN2802">2802</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2803"><td class="num" id="LN2803">2803</td><td class="line"> <span class='comment'>/* Always clear the model before altering the nodes */</span></td></tr>
+<tr class="codeline" data-linenumber="2804"><td class="num" id="LN2804">2804</td><td class="line"> model_clear (model, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2805"><td class="num" id="LN2805">2805</td><td class="line"> set_virtual_root_from_node (model, model-&gt;priv-&gt;root);</td></tr>
+<tr class="codeline" data-linenumber="2806"><td class="num" id="LN2806">2806</td><td class="line"> <span class='keyword'>return</span> PLUMA_FILE_BROWSER_STORE_RESULT_OK;</td></tr>
+<tr class="codeline" data-linenumber="2807"><td class="num" id="LN2807">2807</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2808"><td class="num" id="LN2808">2808</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2809"><td class="num" id="LN2809">2809</td><td class="line"> <span class='keyword'>if</span> (!g_file_has_prefix (file, model-&gt;priv-&gt;root-&gt;file)) {</td></tr>
+<tr class="codeline" data-linenumber="2810"><td class="num" id="LN2810">2810</td><td class="line"> gchar *str, *str1;</td></tr>
+<tr class="codeline" data-linenumber="2811"><td class="num" id="LN2811">2811</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2812"><td class="num" id="LN2812">2812</td><td class="line"> str = g_file_get_parse_name (model-&gt;priv-&gt;root-&gt;file);</td></tr>
+<tr class="codeline" data-linenumber="2813"><td class="num" id="LN2813">2813</td><td class="line"> str1 = g_file_get_parse_name (file);</td></tr>
+<tr class="codeline" data-linenumber="2814"><td class="num" id="LN2814">2814</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2815"><td class="num" id="LN2815">2815</td><td class="line"> g_warning</td></tr>
+<tr class="codeline" data-linenumber="2816"><td class="num" id="LN2816">2816</td><td class="line"> (<span class='string_literal'>"Virtual root (%s) is not below actual root (%s)"</span>,</td></tr>
+<tr class="codeline" data-linenumber="2817"><td class="num" id="LN2817">2817</td><td class="line"> str1, str);</td></tr>
+<tr class="codeline" data-linenumber="2818"><td class="num" id="LN2818">2818</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2819"><td class="num" id="LN2819">2819</td><td class="line"> g_free (str);</td></tr>
+<tr class="codeline" data-linenumber="2820"><td class="num" id="LN2820">2820</td><td class="line"> g_free (str1);</td></tr>
+<tr class="codeline" data-linenumber="2821"><td class="num" id="LN2821">2821</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2822"><td class="num" id="LN2822">2822</td><td class="line"> g_object_unref (file);</td></tr>
+<tr class="codeline" data-linenumber="2823"><td class="num" id="LN2823">2823</td><td class="line"> <span class='keyword'>return</span> PLUMA_FILE_BROWSER_STORE_RESULT_ERROR;</td></tr>
+<tr class="codeline" data-linenumber="2824"><td class="num" id="LN2824">2824</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2825"><td class="num" id="LN2825">2825</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2826"><td class="num" id="LN2826">2826</td><td class="line"> set_virtual_root_from_file (model, file);</td></tr>
+<tr class="codeline" data-linenumber="2827"><td class="num" id="LN2827">2827</td><td class="line"> g_object_unref (file);</td></tr>
+<tr class="codeline" data-linenumber="2828"><td class="num" id="LN2828">2828</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2829"><td class="num" id="LN2829">2829</td><td class="line"> <span class='keyword'>return</span> PLUMA_FILE_BROWSER_STORE_RESULT_OK;</td></tr>
+<tr class="codeline" data-linenumber="2830"><td class="num" id="LN2830">2830</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2831"><td class="num" id="LN2831">2831</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2832"><td class="num" id="LN2832">2832</td><td class="line">PlumaFileBrowserStoreResult</td></tr>
+<tr class="codeline" data-linenumber="2833"><td class="num" id="LN2833">2833</td><td class="line">pluma_file_browser_store_set_virtual_root_top (PlumaFileBrowserStore *</td></tr>
+<tr class="codeline" data-linenumber="2834"><td class="num" id="LN2834">2834</td><td class="line"> model)</td></tr>
+<tr class="codeline" data-linenumber="2835"><td class="num" id="LN2835">2835</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2836"><td class="num" id="LN2836">2836</td><td class="line"> <span class='macro'>g_return_val_if_fail (PLUMA_IS_FILE_BROWSER_STORE (model),<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_231<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((model)); GType __t = ((pluma_file_browser_store_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_231 = 1; else _g_boolean_var_231 =<br> 0; _g_boolean_var_231; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "PLUMA_IS_FILE_BROWSER_STORE (model)"<br>); return (PLUMA_FILE_BROWSER_STORE_RESULT_NO_CHANGE); } } while<br> (0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="2837"><td class="num" id="LN2837">2837</td><td class="line"> <span class='macro'>PLUMA_FILE_BROWSER_STORE_RESULT_NO_CHANGE)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_231<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((model)); GType __t = ((pluma_file_browser_store_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_231 = 1; else _g_boolean_var_231 =<br> 0; _g_boolean_var_231; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "PLUMA_IS_FILE_BROWSER_STORE (model)"<br>); return (PLUMA_FILE_BROWSER_STORE_RESULT_NO_CHANGE); } } while<br> (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2838"><td class="num" id="LN2838">2838</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2839"><td class="num" id="LN2839">2839</td><td class="line"> <span class='keyword'>if</span> (model-&gt;priv-&gt;virtual_root == model-&gt;priv-&gt;root)</td></tr>
+<tr class="codeline" data-linenumber="2840"><td class="num" id="LN2840">2840</td><td class="line"> <span class='keyword'>return</span> PLUMA_FILE_BROWSER_STORE_RESULT_NO_CHANGE;</td></tr>
+<tr class="codeline" data-linenumber="2841"><td class="num" id="LN2841">2841</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2842"><td class="num" id="LN2842">2842</td><td class="line"> model_clear (model, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2843"><td class="num" id="LN2843">2843</td><td class="line"> set_virtual_root_from_node (model, model-&gt;priv-&gt;root);</td></tr>
+<tr class="codeline" data-linenumber="2844"><td class="num" id="LN2844">2844</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2845"><td class="num" id="LN2845">2845</td><td class="line"> <span class='keyword'>return</span> PLUMA_FILE_BROWSER_STORE_RESULT_OK;</td></tr>
+<tr class="codeline" data-linenumber="2846"><td class="num" id="LN2846">2846</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2847"><td class="num" id="LN2847">2847</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2848"><td class="num" id="LN2848">2848</td><td class="line">PlumaFileBrowserStoreResult</td></tr>
+<tr class="codeline" data-linenumber="2849"><td class="num" id="LN2849">2849</td><td class="line">pluma_file_browser_store_set_virtual_root_up (PlumaFileBrowserStore *</td></tr>
+<tr class="codeline" data-linenumber="2850"><td class="num" id="LN2850">2850</td><td class="line"> model)</td></tr>
+<tr class="codeline" data-linenumber="2851"><td class="num" id="LN2851">2851</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2852"><td class="num" id="LN2852">2852</td><td class="line"> <span class='macro'>g_return_val_if_fail (PLUMA_IS_FILE_BROWSER_STORE (model),<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_232<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((model)); GType __t = ((pluma_file_browser_store_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_232 = 1; else _g_boolean_var_232 =<br> 0; _g_boolean_var_232; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "PLUMA_IS_FILE_BROWSER_STORE (model)"<br>); return (PLUMA_FILE_BROWSER_STORE_RESULT_NO_CHANGE); } } while<br> (0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="2853"><td class="num" id="LN2853">2853</td><td class="line"> <span class='macro'>PLUMA_FILE_BROWSER_STORE_RESULT_NO_CHANGE)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_232<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((model)); GType __t = ((pluma_file_browser_store_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_232 = 1; else _g_boolean_var_232 =<br> 0; _g_boolean_var_232; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "PLUMA_IS_FILE_BROWSER_STORE (model)"<br>); return (PLUMA_FILE_BROWSER_STORE_RESULT_NO_CHANGE); } } while<br> (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2854"><td class="num" id="LN2854">2854</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2855"><td class="num" id="LN2855">2855</td><td class="line"> <span class='keyword'>if</span> (model-&gt;priv-&gt;virtual_root == model-&gt;priv-&gt;root)</td></tr>
+<tr class="codeline" data-linenumber="2856"><td class="num" id="LN2856">2856</td><td class="line"> <span class='keyword'>return</span> PLUMA_FILE_BROWSER_STORE_RESULT_NO_CHANGE;</td></tr>
+<tr class="codeline" data-linenumber="2857"><td class="num" id="LN2857">2857</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2858"><td class="num" id="LN2858">2858</td><td class="line"> model_clear (model, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2859"><td class="num" id="LN2859">2859</td><td class="line"> set_virtual_root_from_node (model,</td></tr>
+<tr class="codeline" data-linenumber="2860"><td class="num" id="LN2860">2860</td><td class="line"> model-&gt;priv-&gt;virtual_root-&gt;parent);</td></tr>
+<tr class="codeline" data-linenumber="2861"><td class="num" id="LN2861">2861</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2862"><td class="num" id="LN2862">2862</td><td class="line"> <span class='keyword'>return</span> PLUMA_FILE_BROWSER_STORE_RESULT_OK;</td></tr>
+<tr class="codeline" data-linenumber="2863"><td class="num" id="LN2863">2863</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2864"><td class="num" id="LN2864">2864</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2865"><td class="num" id="LN2865">2865</td><td class="line">gboolean</td></tr>
+<tr class="codeline" data-linenumber="2866"><td class="num" id="LN2866">2866</td><td class="line">pluma_file_browser_store_get_iter_virtual_root (PlumaFileBrowserStore *</td></tr>
+<tr class="codeline" data-linenumber="2867"><td class="num" id="LN2867">2867</td><td class="line"> model, GtkTreeIter * iter)</td></tr>
+<tr class="codeline" data-linenumber="2868"><td class="num" id="LN2868">2868</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2869"><td class="num" id="LN2869">2869</td><td class="line"> <span class='macro'>g_return_val_if_fail (PLUMA_IS_FILE_BROWSER_STORE (model), FALSE)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_233<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((model)); GType __t = ((pluma_file_browser_store_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_233 = 1; else _g_boolean_var_233 =<br> 0; _g_boolean_var_233; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "PLUMA_IS_FILE_BROWSER_STORE (model)"<br>); return ((0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2870"><td class="num" id="LN2870">2870</td><td class="line"> <span class='macro'>g_return_val_if_fail (iter != NULL, FALSE)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_234<br>; if (iter != ((void*)0)) _g_boolean_var_234 = 1; else _g_boolean_var_234<br> = 0; _g_boolean_var_234; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "iter != NULL"); return<br> ((0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2871"><td class="num" id="LN2871">2871</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2872"><td class="num" id="LN2872">2872</td><td class="line"> <span class='keyword'>if</span> (model-&gt;priv-&gt;virtual_root == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="2873"><td class="num" id="LN2873">2873</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2874"><td class="num" id="LN2874">2874</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2875"><td class="num" id="LN2875">2875</td><td class="line"> iter-&gt;user_data = model-&gt;priv-&gt;virtual_root;</td></tr>
+<tr class="codeline" data-linenumber="2876"><td class="num" id="LN2876">2876</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2877"><td class="num" id="LN2877">2877</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2878"><td class="num" id="LN2878">2878</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2879"><td class="num" id="LN2879">2879</td><td class="line">gboolean</td></tr>
+<tr class="codeline" data-linenumber="2880"><td class="num" id="LN2880">2880</td><td class="line">pluma_file_browser_store_get_iter_root (PlumaFileBrowserStore * model,</td></tr>
+<tr class="codeline" data-linenumber="2881"><td class="num" id="LN2881">2881</td><td class="line"> GtkTreeIter * iter)</td></tr>
+<tr class="codeline" data-linenumber="2882"><td class="num" id="LN2882">2882</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2883"><td class="num" id="LN2883">2883</td><td class="line"> <span class='macro'>g_return_val_if_fail (PLUMA_IS_FILE_BROWSER_STORE (model), FALSE)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_235<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((model)); GType __t = ((pluma_file_browser_store_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_235 = 1; else _g_boolean_var_235 =<br> 0; _g_boolean_var_235; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "PLUMA_IS_FILE_BROWSER_STORE (model)"<br>); return ((0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2884"><td class="num" id="LN2884">2884</td><td class="line"> <span class='macro'>g_return_val_if_fail (iter != NULL, FALSE)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_236<br>; if (iter != ((void*)0)) _g_boolean_var_236 = 1; else _g_boolean_var_236<br> = 0; _g_boolean_var_236; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "iter != NULL"); return<br> ((0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2885"><td class="num" id="LN2885">2885</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2886"><td class="num" id="LN2886">2886</td><td class="line"> <span class='keyword'>if</span> (model-&gt;priv-&gt;root == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="2887"><td class="num" id="LN2887">2887</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2888"><td class="num" id="LN2888">2888</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2889"><td class="num" id="LN2889">2889</td><td class="line"> iter-&gt;user_data = model-&gt;priv-&gt;root;</td></tr>
+<tr class="codeline" data-linenumber="2890"><td class="num" id="LN2890">2890</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2891"><td class="num" id="LN2891">2891</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2892"><td class="num" id="LN2892">2892</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2893"><td class="num" id="LN2893">2893</td><td class="line">gboolean</td></tr>
+<tr class="codeline" data-linenumber="2894"><td class="num" id="LN2894">2894</td><td class="line">pluma_file_browser_store_iter_equal (PlumaFileBrowserStore * model,</td></tr>
+<tr class="codeline" data-linenumber="2895"><td class="num" id="LN2895">2895</td><td class="line"> GtkTreeIter * iter1,</td></tr>
+<tr class="codeline" data-linenumber="2896"><td class="num" id="LN2896">2896</td><td class="line"> GtkTreeIter * iter2)</td></tr>
+<tr class="codeline" data-linenumber="2897"><td class="num" id="LN2897">2897</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2898"><td class="num" id="LN2898">2898</td><td class="line"> <span class='macro'>g_return_val_if_fail (PLUMA_IS_FILE_BROWSER_STORE (model), FALSE)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_237<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((model)); GType __t = ((pluma_file_browser_store_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_237 = 1; else _g_boolean_var_237 =<br> 0; _g_boolean_var_237; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "PLUMA_IS_FILE_BROWSER_STORE (model)"<br>); return ((0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2899"><td class="num" id="LN2899">2899</td><td class="line"> <span class='macro'>g_return_val_if_fail (iter1 != NULL, FALSE)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_238<br>; if (iter1 != ((void*)0)) _g_boolean_var_238 = 1; else _g_boolean_var_238<br> = 0; _g_boolean_var_238; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "iter1 != NULL");<br> return ((0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2900"><td class="num" id="LN2900">2900</td><td class="line"> <span class='macro'>g_return_val_if_fail (iter2 != NULL, FALSE)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_239<br>; if (iter2 != ((void*)0)) _g_boolean_var_239 = 1; else _g_boolean_var_239<br> = 0; _g_boolean_var_239; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "iter2 != NULL");<br> return ((0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2901"><td class="num" id="LN2901">2901</td><td class="line"> <span class='macro'>g_return_val_if_fail (iter1-&gt;user_data != NULL, FALSE)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_240<br>; if (iter1-&gt;user_data != ((void*)0)) _g_boolean_var_240 =<br> 1; else _g_boolean_var_240 = 0; _g_boolean_var_240; }), 1)))<br> { } else { g_return_if_fail_warning (((gchar*) 0), ((const char<br>*) (__func__)), "iter1-&gt;user_data != NULL"); return ((0));<br> } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2902"><td class="num" id="LN2902">2902</td><td class="line"> <span class='macro'>g_return_val_if_fail (iter2-&gt;user_data != NULL, FALSE)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_241<br>; if (iter2-&gt;user_data != ((void*)0)) _g_boolean_var_241 =<br> 1; else _g_boolean_var_241 = 0; _g_boolean_var_241; }), 1)))<br> { } else { g_return_if_fail_warning (((gchar*) 0), ((const char<br>*) (__func__)), "iter2-&gt;user_data != NULL"); return ((0));<br> } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2903"><td class="num" id="LN2903">2903</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2904"><td class="num" id="LN2904">2904</td><td class="line"> <span class='keyword'>return</span> (iter1-&gt;user_data == iter2-&gt;user_data);</td></tr>
+<tr class="codeline" data-linenumber="2905"><td class="num" id="LN2905">2905</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2906"><td class="num" id="LN2906">2906</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2907"><td class="num" id="LN2907">2907</td><td class="line"><span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2908"><td class="num" id="LN2908">2908</td><td class="line">pluma_file_browser_store_cancel_mount_operation (PlumaFileBrowserStore *store)</td></tr>
+<tr class="codeline" data-linenumber="2909"><td class="num" id="LN2909">2909</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2910"><td class="num" id="LN2910">2910</td><td class="line"> <span class='macro'>g_return_if_fail (PLUMA_IS_FILE_BROWSER_STORE (store))<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_242<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((store)); GType __t = ((pluma_file_browser_store_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_242 = 1; else _g_boolean_var_242 =<br> 0; _g_boolean_var_242; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "PLUMA_IS_FILE_BROWSER_STORE (store)"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2911"><td class="num" id="LN2911">2911</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2912"><td class="num" id="LN2912">2912</td><td class="line"> cancel_mount_operation (store);</td></tr>
+<tr class="codeline" data-linenumber="2913"><td class="num" id="LN2913">2913</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2914"><td class="num" id="LN2914">2914</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2915"><td class="num" id="LN2915">2915</td><td class="line">PlumaFileBrowserStoreResult</td></tr>
+<tr class="codeline" data-linenumber="2916"><td class="num" id="LN2916">2916</td><td class="line">pluma_file_browser_store_set_root_and_virtual_root (PlumaFileBrowserStore *</td></tr>
+<tr class="codeline" data-linenumber="2917"><td class="num" id="LN2917">2917</td><td class="line"> model,</td></tr>
+<tr class="codeline" data-linenumber="2918"><td class="num" id="LN2918">2918</td><td class="line"> gchar <span class='keyword'>const</span> *root,</td></tr>
+<tr class="codeline" data-linenumber="2919"><td class="num" id="LN2919">2919</td><td class="line"> gchar <span class='keyword'>const</span> *virtual_root)</td></tr>
+<tr class="codeline" data-linenumber="2920"><td class="num" id="LN2920">2920</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2921"><td class="num" id="LN2921">2921</td><td class="line"> GFile * file = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2922"><td class="num" id="LN2922">2922</td><td class="line"> GFile * vfile = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2923"><td class="num" id="LN2923">2923</td><td class="line"> FileBrowserNode * node;</td></tr>
+<tr class="codeline" data-linenumber="2924"><td class="num" id="LN2924">2924</td><td class="line"> gboolean equal = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2925"><td class="num" id="LN2925">2925</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2926"><td class="num" id="LN2926">2926</td><td class="line"> <span class='macro'>g_return_val_if_fail (PLUMA_IS_FILE_BROWSER_STORE (model),<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_243<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((model)); GType __t = ((pluma_file_browser_store_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_243 = 1; else _g_boolean_var_243 =<br> 0; _g_boolean_var_243; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "PLUMA_IS_FILE_BROWSER_STORE (model)"<br>); return (PLUMA_FILE_BROWSER_STORE_RESULT_NO_CHANGE); } } while<br> (0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="2927"><td class="num" id="LN2927">2927</td><td class="line"> <span class='macro'>PLUMA_FILE_BROWSER_STORE_RESULT_NO_CHANGE)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_243<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((model)); GType __t = ((pluma_file_browser_store_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_243 = 1; else _g_boolean_var_243 =<br> 0; _g_boolean_var_243; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "PLUMA_IS_FILE_BROWSER_STORE (model)"<br>); return (PLUMA_FILE_BROWSER_STORE_RESULT_NO_CHANGE); } } while<br> (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2928"><td class="num" id="LN2928">2928</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2929"><td class="num" id="LN2929">2929</td><td class="line"> <span class='keyword'>if</span> (root == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> &amp;&amp; model-&gt;priv-&gt;root == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="2930"><td class="num" id="LN2930">2930</td><td class="line"> <span class='keyword'>return</span> PLUMA_FILE_BROWSER_STORE_RESULT_NO_CHANGE;</td></tr>
+<tr class="codeline" data-linenumber="2931"><td class="num" id="LN2931">2931</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2932"><td class="num" id="LN2932">2932</td><td class="line"> <span class='keyword'>if</span> (root != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="2933"><td class="num" id="LN2933">2933</td><td class="line"> file = g_file_new_for_uri (root);</td></tr>
+<tr class="codeline" data-linenumber="2934"><td class="num" id="LN2934">2934</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2935"><td class="num" id="LN2935">2935</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2936"><td class="num" id="LN2936">2936</td><td class="line"> <span class='keyword'>if</span> (root != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> &amp;&amp; model-&gt;priv-&gt;root != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="2937"><td class="num" id="LN2937">2937</td><td class="line"> equal = g_file_equal (file, model-&gt;priv-&gt;root-&gt;file);</td></tr>
+<tr class="codeline" data-linenumber="2938"><td class="num" id="LN2938">2938</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2939"><td class="num" id="LN2939">2939</td><td class="line"> <span class='keyword'>if</span> (equal &amp;&amp; virtual_root == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="2940"><td class="num" id="LN2940">2940</td><td class="line"> g_object_unref (file);</td></tr>
+<tr class="codeline" data-linenumber="2941"><td class="num" id="LN2941">2941</td><td class="line"> <span class='keyword'>return</span> PLUMA_FILE_BROWSER_STORE_RESULT_NO_CHANGE;</td></tr>
+<tr class="codeline" data-linenumber="2942"><td class="num" id="LN2942">2942</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2943"><td class="num" id="LN2943">2943</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2944"><td class="num" id="LN2944">2944</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2945"><td class="num" id="LN2945">2945</td><td class="line"> <span class='keyword'>if</span> (virtual_root) {</td></tr>
+<tr class="codeline" data-linenumber="2946"><td class="num" id="LN2946">2946</td><td class="line"> vfile = g_file_new_for_uri (virtual_root);</td></tr>
+<tr class="codeline" data-linenumber="2947"><td class="num" id="LN2947">2947</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2948"><td class="num" id="LN2948">2948</td><td class="line"> <span class='keyword'>if</span> (equal &amp;&amp; g_file_equal (vfile, model-&gt;priv-&gt;virtual_root-&gt;file)) {</td></tr>
+<tr class="codeline" data-linenumber="2949"><td class="num" id="LN2949">2949</td><td class="line"> <span class='keyword'>if</span> (file)</td></tr>
+<tr class="codeline" data-linenumber="2950"><td class="num" id="LN2950">2950</td><td class="line"> g_object_unref (file);</td></tr>
+<tr class="codeline" data-linenumber="2951"><td class="num" id="LN2951">2951</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2952"><td class="num" id="LN2952">2952</td><td class="line"> g_object_unref (vfile);</td></tr>
+<tr class="codeline" data-linenumber="2953"><td class="num" id="LN2953">2953</td><td class="line"> <span class='keyword'>return</span> PLUMA_FILE_BROWSER_STORE_RESULT_NO_CHANGE;</td></tr>
+<tr class="codeline" data-linenumber="2954"><td class="num" id="LN2954">2954</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2955"><td class="num" id="LN2955">2955</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2956"><td class="num" id="LN2956">2956</td><td class="line"> g_object_unref (vfile);</td></tr>
+<tr class="codeline" data-linenumber="2957"><td class="num" id="LN2957">2957</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2958"><td class="num" id="LN2958">2958</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2959"><td class="num" id="LN2959">2959</td><td class="line"> <span class='comment'>/* make sure to cancel any previous mount operations */</span></td></tr>
+<tr class="codeline" data-linenumber="2960"><td class="num" id="LN2960">2960</td><td class="line"> cancel_mount_operation (model);</td></tr>
+<tr class="codeline" data-linenumber="2961"><td class="num" id="LN2961">2961</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2962"><td class="num" id="LN2962">2962</td><td class="line"> <span class='comment'>/* Always clear the model before altering the nodes */</span></td></tr>
+<tr class="codeline" data-linenumber="2963"><td class="num" id="LN2963">2963</td><td class="line"> model_clear (model, <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2964"><td class="num" id="LN2964">2964</td><td class="line"> file_browser_node_free (model, model-&gt;priv-&gt;root);</td></tr>
+<tr class="codeline" data-linenumber="2965"><td class="num" id="LN2965">2965</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2966"><td class="num" id="LN2966">2966</td><td class="line"> model-&gt;priv-&gt;root = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2967"><td class="num" id="LN2967">2967</td><td class="line"> model-&gt;priv-&gt;virtual_root = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2968"><td class="num" id="LN2968">2968</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2969"><td class="num" id="LN2969">2969</td><td class="line"> <span class='keyword'>if</span> (file != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="2970"><td class="num" id="LN2970">2970</td><td class="line"> <span class='comment'>/* Create the root node */</span></td></tr>
+<tr class="codeline" data-linenumber="2971"><td class="num" id="LN2971">2971</td><td class="line"> node = file_browser_node_dir_new (model, file, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2972"><td class="num" id="LN2972">2972</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2973"><td class="num" id="LN2973">2973</td><td class="line"> g_object_unref (file);</td></tr>
+<tr class="codeline" data-linenumber="2974"><td class="num" id="LN2974">2974</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2975"><td class="num" id="LN2975">2975</td><td class="line"> model-&gt;priv-&gt;root = node;</td></tr>
+<tr class="codeline" data-linenumber="2976"><td class="num" id="LN2976">2976</td><td class="line"> <span class='keyword'>return</span> model_mount_root (model, virtual_root);</td></tr>
+<tr class="codeline" data-linenumber="2977"><td class="num" id="LN2977">2977</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="2978"><td class="num" id="LN2978">2978</td><td class="line"> g_object_notify (<span class='macro'>G_OBJECT (model)<span class='macro_popup'>((((GObject*) (void *) ((model)))))</span></span>, <span class='string_literal'>"root"</span>);</td></tr>
+<tr class="codeline" data-linenumber="2979"><td class="num" id="LN2979">2979</td><td class="line"> g_object_notify (<span class='macro'>G_OBJECT (model)<span class='macro_popup'>((((GObject*) (void *) ((model)))))</span></span>, <span class='string_literal'>"virtual-root"</span>);</td></tr>
+<tr class="codeline" data-linenumber="2980"><td class="num" id="LN2980">2980</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2981"><td class="num" id="LN2981">2981</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2982"><td class="num" id="LN2982">2982</td><td class="line"> <span class='keyword'>return</span> PLUMA_FILE_BROWSER_STORE_RESULT_OK;</td></tr>
+<tr class="codeline" data-linenumber="2983"><td class="num" id="LN2983">2983</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2984"><td class="num" id="LN2984">2984</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2985"><td class="num" id="LN2985">2985</td><td class="line">PlumaFileBrowserStoreResult</td></tr>
+<tr class="codeline" data-linenumber="2986"><td class="num" id="LN2986">2986</td><td class="line">pluma_file_browser_store_set_root (PlumaFileBrowserStore * model,</td></tr>
+<tr class="codeline" data-linenumber="2987"><td class="num" id="LN2987">2987</td><td class="line"> gchar <span class='keyword'>const</span> *root)</td></tr>
+<tr class="codeline" data-linenumber="2988"><td class="num" id="LN2988">2988</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2989"><td class="num" id="LN2989">2989</td><td class="line"> <span class='macro'>g_return_val_if_fail (PLUMA_IS_FILE_BROWSER_STORE (model),<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_244<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((model)); GType __t = ((pluma_file_browser_store_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_244 = 1; else _g_boolean_var_244 =<br> 0; _g_boolean_var_244; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "PLUMA_IS_FILE_BROWSER_STORE (model)"<br>); return (PLUMA_FILE_BROWSER_STORE_RESULT_NO_CHANGE); } } while<br> (0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="2990"><td class="num" id="LN2990">2990</td><td class="line"> <span class='macro'>PLUMA_FILE_BROWSER_STORE_RESULT_NO_CHANGE)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_244<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((model)); GType __t = ((pluma_file_browser_store_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_244 = 1; else _g_boolean_var_244 =<br> 0; _g_boolean_var_244; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "PLUMA_IS_FILE_BROWSER_STORE (model)"<br>); return (PLUMA_FILE_BROWSER_STORE_RESULT_NO_CHANGE); } } while<br> (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2991"><td class="num" id="LN2991">2991</td><td class="line"> <span class='keyword'>return</span> pluma_file_browser_store_set_root_and_virtual_root (model,</td></tr>
+<tr class="codeline" data-linenumber="2992"><td class="num" id="LN2992">2992</td><td class="line"> root,</td></tr>
+<tr class="codeline" data-linenumber="2993"><td class="num" id="LN2993">2993</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2994"><td class="num" id="LN2994">2994</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2995"><td class="num" id="LN2995">2995</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2996"><td class="num" id="LN2996">2996</td><td class="line">gchar *</td></tr>
+<tr class="codeline" data-linenumber="2997"><td class="num" id="LN2997">2997</td><td class="line">pluma_file_browser_store_get_root (PlumaFileBrowserStore * model)</td></tr>
+<tr class="codeline" data-linenumber="2998"><td class="num" id="LN2998">2998</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2999"><td class="num" id="LN2999">2999</td><td class="line"> <span class='macro'>g_return_val_if_fail (PLUMA_IS_FILE_BROWSER_STORE (model), NULL)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_245<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((model)); GType __t = ((pluma_file_browser_store_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_245 = 1; else _g_boolean_var_245 =<br> 0; _g_boolean_var_245; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "PLUMA_IS_FILE_BROWSER_STORE (model)"<br>); return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3000"><td class="num" id="LN3000">3000</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3001"><td class="num" id="LN3001">3001</td><td class="line"> <span class='keyword'>if</span> (model-&gt;priv-&gt;root == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> || model-&gt;priv-&gt;root-&gt;file == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="3002"><td class="num" id="LN3002">3002</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3003"><td class="num" id="LN3003">3003</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="3004"><td class="num" id="LN3004">3004</td><td class="line"> <span class='keyword'>return</span> g_file_get_uri (model-&gt;priv-&gt;root-&gt;file);</td></tr>
+<tr class="codeline" data-linenumber="3005"><td class="num" id="LN3005">3005</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3006"><td class="num" id="LN3006">3006</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3007"><td class="num" id="LN3007">3007</td><td class="line">gchar *</td></tr>
+<tr class="codeline" data-linenumber="3008"><td class="num" id="LN3008">3008</td><td class="line">pluma_file_browser_store_get_virtual_root (PlumaFileBrowserStore * model)</td></tr>
+<tr class="codeline" data-linenumber="3009"><td class="num" id="LN3009">3009</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3010"><td class="num" id="LN3010">3010</td><td class="line"> <span class='macro'>g_return_val_if_fail (PLUMA_IS_FILE_BROWSER_STORE (model), NULL)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_246<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((model)); GType __t = ((pluma_file_browser_store_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_246 = 1; else _g_boolean_var_246 =<br> 0; _g_boolean_var_246; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "PLUMA_IS_FILE_BROWSER_STORE (model)"<br>); return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3011"><td class="num" id="LN3011">3011</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3012"><td class="num" id="LN3012">3012</td><td class="line"> <span class='keyword'>if</span> (model-&gt;priv-&gt;virtual_root == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> || model-&gt;priv-&gt;virtual_root-&gt;file == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="3013"><td class="num" id="LN3013">3013</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3014"><td class="num" id="LN3014">3014</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="3015"><td class="num" id="LN3015">3015</td><td class="line"> <span class='keyword'>return</span> g_file_get_uri (model-&gt;priv-&gt;virtual_root-&gt;file);</td></tr>
+<tr class="codeline" data-linenumber="3016"><td class="num" id="LN3016">3016</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3017"><td class="num" id="LN3017">3017</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3018"><td class="num" id="LN3018">3018</td><td class="line"><span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="3019"><td class="num" id="LN3019">3019</td><td class="line">_pluma_file_browser_store_iter_expanded (PlumaFileBrowserStore * model,</td></tr>
+<tr class="codeline" data-linenumber="3020"><td class="num" id="LN3020">3020</td><td class="line"> GtkTreeIter * iter)</td></tr>
+<tr class="codeline" data-linenumber="3021"><td class="num" id="LN3021">3021</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3022"><td class="num" id="LN3022">3022</td><td class="line"> FileBrowserNode *node;</td></tr>
+<tr class="codeline" data-linenumber="3023"><td class="num" id="LN3023">3023</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3024"><td class="num" id="LN3024">3024</td><td class="line"> <span class='macro'>g_return_if_fail (PLUMA_IS_FILE_BROWSER_STORE (model))<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_247<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((model)); GType __t = ((pluma_file_browser_store_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_247 = 1; else _g_boolean_var_247 =<br> 0; _g_boolean_var_247; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "PLUMA_IS_FILE_BROWSER_STORE (model)"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3025"><td class="num" id="LN3025">3025</td><td class="line"> <span class='macro'>g_return_if_fail (iter != NULL)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_248<br>; if (iter != ((void*)0)) _g_boolean_var_248 = 1; else _g_boolean_var_248<br> = 0; _g_boolean_var_248; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "iter != NULL"); return<br>; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3026"><td class="num" id="LN3026">3026</td><td class="line"> <span class='macro'>g_return_if_fail (iter-&gt;user_data != NULL)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_249<br>; if (iter-&gt;user_data != ((void*)0)) _g_boolean_var_249 = 1<br>; else _g_boolean_var_249 = 0; _g_boolean_var_249; }), 1))) {<br> } else { g_return_if_fail_warning (((gchar*) 0), ((const char<br>*) (__func__)), "iter-&gt;user_data != NULL"); return; } } while<br> (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3027"><td class="num" id="LN3027">3027</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3028"><td class="num" id="LN3028">3028</td><td class="line"> node = (FileBrowserNode *) (iter-&gt;user_data);</td></tr>
+<tr class="codeline" data-linenumber="3029"><td class="num" id="LN3029">3029</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3030"><td class="num" id="LN3030">3030</td><td class="line"> <span class='keyword'>if</span> (<span class='macro'>NODE_IS_DIR (node)<span class='macro_popup'>(((node)-&gt;flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_DIRECTORY<br>))</span></span> &amp;&amp; !<span class='macro'>NODE_LOADED (node)<span class='macro_popup'>(((node)-&gt;flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_LOADED<br>))</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3031"><td class="num" id="LN3031">3031</td><td class="line"> <span class='comment'>/* Load it now */</span></td></tr>
+<tr class="codeline" data-linenumber="3032"><td class="num" id="LN3032">3032</td><td class="line"> model_load_directory (model, node);</td></tr>
+<tr class="codeline" data-linenumber="3033"><td class="num" id="LN3033">3033</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3034"><td class="num" id="LN3034">3034</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3035"><td class="num" id="LN3035">3035</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3036"><td class="num" id="LN3036">3036</td><td class="line"><span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="3037"><td class="num" id="LN3037">3037</td><td class="line">_pluma_file_browser_store_iter_collapsed (PlumaFileBrowserStore * model,</td></tr>
+<tr class="codeline" data-linenumber="3038"><td class="num" id="LN3038">3038</td><td class="line"> GtkTreeIter * iter)</td></tr>
+<tr class="codeline" data-linenumber="3039"><td class="num" id="LN3039">3039</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3040"><td class="num" id="LN3040">3040</td><td class="line"> FileBrowserNode *node;</td></tr>
+<tr class="codeline" data-linenumber="3041"><td class="num" id="LN3041">3041</td><td class="line"> GSList *item;</td></tr>
+<tr class="codeline" data-linenumber="3042"><td class="num" id="LN3042">3042</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3043"><td class="num" id="LN3043">3043</td><td class="line"> <span class='macro'>g_return_if_fail (PLUMA_IS_FILE_BROWSER_STORE (model))<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_250<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((model)); GType __t = ((pluma_file_browser_store_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_250 = 1; else _g_boolean_var_250 =<br> 0; _g_boolean_var_250; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "PLUMA_IS_FILE_BROWSER_STORE (model)"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3044"><td class="num" id="LN3044">3044</td><td class="line"> <span class='macro'>g_return_if_fail (iter != NULL)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_251<br>; if (iter != ((void*)0)) _g_boolean_var_251 = 1; else _g_boolean_var_251<br> = 0; _g_boolean_var_251; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "iter != NULL"); return<br>; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3045"><td class="num" id="LN3045">3045</td><td class="line"> <span class='macro'>g_return_if_fail (iter-&gt;user_data != NULL)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_252<br>; if (iter-&gt;user_data != ((void*)0)) _g_boolean_var_252 = 1<br>; else _g_boolean_var_252 = 0; _g_boolean_var_252; }), 1))) {<br> } else { g_return_if_fail_warning (((gchar*) 0), ((const char<br>*) (__func__)), "iter-&gt;user_data != NULL"); return; } } while<br> (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3046"><td class="num" id="LN3046">3046</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3047"><td class="num" id="LN3047">3047</td><td class="line"> node = (FileBrowserNode *) (iter-&gt;user_data);</td></tr>
+<tr class="codeline" data-linenumber="3048"><td class="num" id="LN3048">3048</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3049"><td class="num" id="LN3049">3049</td><td class="line"> <span class='keyword'>if</span> (<span class='macro'>NODE_IS_DIR (node)<span class='macro_popup'>(((node)-&gt;flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_DIRECTORY<br>))</span></span> &amp;&amp; <span class='macro'>NODE_LOADED (node)<span class='macro_popup'>(((node)-&gt;flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_LOADED<br>))</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3050"><td class="num" id="LN3050">3050</td><td class="line"> <span class='comment'>/* Unload children of the children, keeping 1 depth in cache */</span></td></tr>
+<tr class="codeline" data-linenumber="3051"><td class="num" id="LN3051">3051</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3052"><td class="num" id="LN3052">3052</td><td class="line"> <span class='keyword'>for</span> (item = <span class='macro'>FILE_BROWSER_NODE_DIR (node)<span class='macro_popup'>((FileBrowserNodeDir *)(node))</span></span>-&gt;children; item;</td></tr>
+<tr class="codeline" data-linenumber="3053"><td class="num" id="LN3053">3053</td><td class="line"> item = item-&gt;next) {</td></tr>
+<tr class="codeline" data-linenumber="3054"><td class="num" id="LN3054">3054</td><td class="line"> node = (FileBrowserNode *) (item-&gt;data);</td></tr>
+<tr class="codeline" data-linenumber="3055"><td class="num" id="LN3055">3055</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3056"><td class="num" id="LN3056">3056</td><td class="line"> <span class='keyword'>if</span> (<span class='macro'>NODE_IS_DIR (node)<span class='macro_popup'>(((node)-&gt;flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_DIRECTORY<br>))</span></span> &amp;&amp; <span class='macro'>NODE_LOADED (node)<span class='macro_popup'>(((node)-&gt;flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_LOADED<br>))</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3057"><td class="num" id="LN3057">3057</td><td class="line"> file_browser_node_unload (model, node,</td></tr>
+<tr class="codeline" data-linenumber="3058"><td class="num" id="LN3058">3058</td><td class="line"> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3059"><td class="num" id="LN3059">3059</td><td class="line"> model_check_dummy (model, node);</td></tr>
+<tr class="codeline" data-linenumber="3060"><td class="num" id="LN3060">3060</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3061"><td class="num" id="LN3061">3061</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3062"><td class="num" id="LN3062">3062</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3063"><td class="num" id="LN3063">3063</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3064"><td class="num" id="LN3064">3064</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3065"><td class="num" id="LN3065">3065</td><td class="line">PlumaFileBrowserStoreFilterMode</td></tr>
+<tr class="codeline" data-linenumber="3066"><td class="num" id="LN3066">3066</td><td class="line">pluma_file_browser_store_get_filter_mode (PlumaFileBrowserStore * model)</td></tr>
+<tr class="codeline" data-linenumber="3067"><td class="num" id="LN3067">3067</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3068"><td class="num" id="LN3068">3068</td><td class="line"> <span class='keyword'>return</span> model-&gt;priv-&gt;filter_mode;</td></tr>
+<tr class="codeline" data-linenumber="3069"><td class="num" id="LN3069">3069</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3070"><td class="num" id="LN3070">3070</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3071"><td class="num" id="LN3071">3071</td><td class="line"><span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="3072"><td class="num" id="LN3072">3072</td><td class="line">pluma_file_browser_store_set_filter_mode (PlumaFileBrowserStore * model,</td></tr>
+<tr class="codeline" data-linenumber="3073"><td class="num" id="LN3073">3073</td><td class="line"> PlumaFileBrowserStoreFilterMode</td></tr>
+<tr class="codeline" data-linenumber="3074"><td class="num" id="LN3074">3074</td><td class="line"> mode)</td></tr>
+<tr class="codeline" data-linenumber="3075"><td class="num" id="LN3075">3075</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3076"><td class="num" id="LN3076">3076</td><td class="line"> <span class='macro'>g_return_if_fail (PLUMA_IS_FILE_BROWSER_STORE (model))<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_253<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((model)); GType __t = ((pluma_file_browser_store_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_253 = 1; else _g_boolean_var_253 =<br> 0; _g_boolean_var_253; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "PLUMA_IS_FILE_BROWSER_STORE (model)"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3077"><td class="num" id="LN3077">3077</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3078"><td class="num" id="LN3078">3078</td><td class="line"> <span class='keyword'>if</span> (model-&gt;priv-&gt;filter_mode == mode)</td></tr>
+<tr class="codeline" data-linenumber="3079"><td class="num" id="LN3079">3079</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="3080"><td class="num" id="LN3080">3080</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3081"><td class="num" id="LN3081">3081</td><td class="line"> model-&gt;priv-&gt;filter_mode = mode;</td></tr>
+<tr class="codeline" data-linenumber="3082"><td class="num" id="LN3082">3082</td><td class="line"> model_refilter (model);</td></tr>
+<tr class="codeline" data-linenumber="3083"><td class="num" id="LN3083">3083</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3084"><td class="num" id="LN3084">3084</td><td class="line"> g_object_notify (<span class='macro'>G_OBJECT (model)<span class='macro_popup'>((((GObject*) (void *) ((model)))))</span></span>, <span class='string_literal'>"filter-mode"</span>);</td></tr>
+<tr class="codeline" data-linenumber="3085"><td class="num" id="LN3085">3085</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3086"><td class="num" id="LN3086">3086</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3087"><td class="num" id="LN3087">3087</td><td class="line"><span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="3088"><td class="num" id="LN3088">3088</td><td class="line">pluma_file_browser_store_set_filter_func (PlumaFileBrowserStore * model,</td></tr>
+<tr class="codeline" data-linenumber="3089"><td class="num" id="LN3089">3089</td><td class="line"> PlumaFileBrowserStoreFilterFunc</td></tr>
+<tr class="codeline" data-linenumber="3090"><td class="num" id="LN3090">3090</td><td class="line"> func, gpointer user_data)</td></tr>
+<tr class="codeline" data-linenumber="3091"><td class="num" id="LN3091">3091</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3092"><td class="num" id="LN3092">3092</td><td class="line"> <span class='macro'>g_return_if_fail (PLUMA_IS_FILE_BROWSER_STORE (model))<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_254<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((model)); GType __t = ((pluma_file_browser_store_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_254 = 1; else _g_boolean_var_254 =<br> 0; _g_boolean_var_254; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "PLUMA_IS_FILE_BROWSER_STORE (model)"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3093"><td class="num" id="LN3093">3093</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3094"><td class="num" id="LN3094">3094</td><td class="line"> model-&gt;priv-&gt;filter_func = func;</td></tr>
+<tr class="codeline" data-linenumber="3095"><td class="num" id="LN3095">3095</td><td class="line"> model-&gt;priv-&gt;filter_user_data = user_data;</td></tr>
+<tr class="codeline" data-linenumber="3096"><td class="num" id="LN3096">3096</td><td class="line"> model_refilter (model);</td></tr>
+<tr class="codeline" data-linenumber="3097"><td class="num" id="LN3097">3097</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3098"><td class="num" id="LN3098">3098</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3099"><td class="num" id="LN3099">3099</td><td class="line"><span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="3100"><td class="num" id="LN3100">3100</td><td class="line">pluma_file_browser_store_refilter (PlumaFileBrowserStore * model)</td></tr>
+<tr class="codeline" data-linenumber="3101"><td class="num" id="LN3101">3101</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3102"><td class="num" id="LN3102">3102</td><td class="line"> model_refilter (model);</td></tr>
+<tr class="codeline" data-linenumber="3103"><td class="num" id="LN3103">3103</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3104"><td class="num" id="LN3104">3104</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3105"><td class="num" id="LN3105">3105</td><td class="line">PlumaFileBrowserStoreFilterMode</td></tr>
+<tr class="codeline" data-linenumber="3106"><td class="num" id="LN3106">3106</td><td class="line">pluma_file_browser_store_filter_mode_get_default (<span class='keyword'>void</span>)</td></tr>
+<tr class="codeline" data-linenumber="3107"><td class="num" id="LN3107">3107</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3108"><td class="num" id="LN3108">3108</td><td class="line"> <span class='keyword'>return</span> PLUMA_FILE_BROWSER_STORE_FILTER_MODE_HIDE_HIDDEN;</td></tr>
+<tr class="codeline" data-linenumber="3109"><td class="num" id="LN3109">3109</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3110"><td class="num" id="LN3110">3110</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3111"><td class="num" id="LN3111">3111</td><td class="line"><span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="3112"><td class="num" id="LN3112">3112</td><td class="line">pluma_file_browser_store_refresh (PlumaFileBrowserStore * model)</td></tr>
+<tr class="codeline" data-linenumber="3113"><td class="num" id="LN3113">3113</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3114"><td class="num" id="LN3114">3114</td><td class="line"> <span class='macro'>g_return_if_fail (PLUMA_IS_FILE_BROWSER_STORE (model))<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_255<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((model)); GType __t = ((pluma_file_browser_store_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_255 = 1; else _g_boolean_var_255 =<br> 0; _g_boolean_var_255; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "PLUMA_IS_FILE_BROWSER_STORE (model)"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3115"><td class="num" id="LN3115">3115</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3116"><td class="num" id="LN3116">3116</td><td class="line"> <span class='keyword'>if</span> (model-&gt;priv-&gt;root == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> || model-&gt;priv-&gt;virtual_root == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="3117"><td class="num" id="LN3117">3117</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="3118"><td class="num" id="LN3118">3118</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3119"><td class="num" id="LN3119">3119</td><td class="line"> <span class='comment'>/* Clear the model */</span></td></tr>
+<tr class="codeline" data-linenumber="3120"><td class="num" id="LN3120">3120</td><td class="line"> g_signal_emit (model, model_signals[BEGIN_REFRESH], 0);</td></tr>
+<tr class="codeline" data-linenumber="3121"><td class="num" id="LN3121">3121</td><td class="line"> file_browser_node_unload (model, model-&gt;priv-&gt;virtual_root, <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3122"><td class="num" id="LN3122">3122</td><td class="line"> model_load_directory (model, model-&gt;priv-&gt;virtual_root);</td></tr>
+<tr class="codeline" data-linenumber="3123"><td class="num" id="LN3123">3123</td><td class="line"> g_signal_emit (model, model_signals[END_REFRESH], 0);</td></tr>
+<tr class="codeline" data-linenumber="3124"><td class="num" id="LN3124">3124</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3125"><td class="num" id="LN3125">3125</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3126"><td class="num" id="LN3126">3126</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="3127"><td class="num" id="LN3127">3127</td><td class="line">reparent_node (FileBrowserNode * node, gboolean reparent)</td></tr>
+<tr class="codeline" data-linenumber="3128"><td class="num" id="LN3128">3128</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3129"><td class="num" id="LN3129">3129</td><td class="line"> FileBrowserNodeDir * dir;</td></tr>
+<tr class="codeline" data-linenumber="3130"><td class="num" id="LN3130">3130</td><td class="line"> GSList * child;</td></tr>
+<tr class="codeline" data-linenumber="3131"><td class="num" id="LN3131">3131</td><td class="line"> GFile * parent;</td></tr>
+<tr class="codeline" data-linenumber="3132"><td class="num" id="LN3132">3132</td><td class="line"> gchar * base;</td></tr>
+<tr class="codeline" data-linenumber="3133"><td class="num" id="LN3133">3133</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3134"><td class="num" id="LN3134">3134</td><td class="line"> <span class='keyword'>if</span> (!node-&gt;file) {</td></tr>
+<tr class="codeline" data-linenumber="3135"><td class="num" id="LN3135">3135</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="3136"><td class="num" id="LN3136">3136</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3137"><td class="num" id="LN3137">3137</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3138"><td class="num" id="LN3138">3138</td><td class="line"> <span class='keyword'>if</span> (reparent) {</td></tr>
+<tr class="codeline" data-linenumber="3139"><td class="num" id="LN3139">3139</td><td class="line"> parent = node-&gt;parent-&gt;file;</td></tr>
+<tr class="codeline" data-linenumber="3140"><td class="num" id="LN3140">3140</td><td class="line"> base = g_file_get_basename (node-&gt;file);</td></tr>
+<tr class="codeline" data-linenumber="3141"><td class="num" id="LN3141">3141</td><td class="line"> g_object_unref (node-&gt;file);</td></tr>
+<tr class="codeline" data-linenumber="3142"><td class="num" id="LN3142">3142</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3143"><td class="num" id="LN3143">3143</td><td class="line"> node-&gt;file = g_file_get_child (parent, base);</td></tr>
+<tr class="codeline" data-linenumber="3144"><td class="num" id="LN3144">3144</td><td class="line"> g_free (base);</td></tr>
+<tr class="codeline" data-linenumber="3145"><td class="num" id="LN3145">3145</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3146"><td class="num" id="LN3146">3146</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3147"><td class="num" id="LN3147">3147</td><td class="line"> <span class='keyword'>if</span> (<span class='macro'>NODE_IS_DIR (node)<span class='macro_popup'>(((node)-&gt;flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_DIRECTORY<br>))</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3148"><td class="num" id="LN3148">3148</td><td class="line"> dir = <span class='macro'>FILE_BROWSER_NODE_DIR (node)<span class='macro_popup'>((FileBrowserNodeDir *)(node))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3149"><td class="num" id="LN3149">3149</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3150"><td class="num" id="LN3150">3150</td><td class="line"> <span class='keyword'>for</span> (child = dir-&gt;children; child; child = child-&gt;next) {</td></tr>
+<tr class="codeline" data-linenumber="3151"><td class="num" id="LN3151">3151</td><td class="line"> reparent_node ((FileBrowserNode *)child-&gt;data, <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3152"><td class="num" id="LN3152">3152</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3153"><td class="num" id="LN3153">3153</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3154"><td class="num" id="LN3154">3154</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3155"><td class="num" id="LN3155">3155</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3156"><td class="num" id="LN3156">3156</td><td class="line">gboolean</td></tr>
+<tr class="codeline" data-linenumber="3157"><td class="num" id="LN3157">3157</td><td class="line">pluma_file_browser_store_rename (PlumaFileBrowserStore * model,</td></tr>
+<tr class="codeline" data-linenumber="3158"><td class="num" id="LN3158">3158</td><td class="line"> GtkTreeIter * iter,</td></tr>
+<tr class="codeline" data-linenumber="3159"><td class="num" id="LN3159">3159</td><td class="line"> <span class='keyword'>const</span> gchar * new_name,</td></tr>
+<tr class="codeline" data-linenumber="3160"><td class="num" id="LN3160">3160</td><td class="line"> GError ** error)</td></tr>
+<tr class="codeline" data-linenumber="3161"><td class="num" id="LN3161">3161</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3162"><td class="num" id="LN3162">3162</td><td class="line"> <span id="start78">FileBrowserNode</span> *node;</td></tr>
+<tr class="codeline" data-linenumber="3163"><td class="num" id="LN3163">3163</td><td class="line"> GFile * file;</td></tr>
+<tr class="codeline" data-linenumber="3164"><td class="num" id="LN3164">3164</td><td class="line"> GFile * parent;</td></tr>
+<tr class="codeline" data-linenumber="3165"><td class="num" id="LN3165">3165</td><td class="line"> GFile * previous;</td></tr>
+<tr class="codeline" data-linenumber="3166"><td class="num" id="LN3166">3166</td><td class="line"> GError * err = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3167"><td class="num" id="LN3167">3167</td><td class="line"> gchar * olduri;</td></tr>
+<tr class="codeline" data-linenumber="3168"><td class="num" id="LN3168">3168</td><td class="line"> gchar * newuri;</td></tr>
+<tr class="codeline" data-linenumber="3169"><td class="num" id="LN3169">3169</td><td class="line"> <span id="start77"><span id="end78">GtkTreePath</span></span> *path;</td></tr>
+<tr class="codeline" data-linenumber="3170"><td class="num" id="LN3170">3170</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3171"><td class="num" id="LN3171">3171</td><td class="line"> <span id="start64"><span id="start65"><span id="end65"><span id="start66"><span id="end66"><span id="start67"><span id="end67"><span id="start68"><span id="end68"><span class="mrange"><span id="start69"><span id="end69"><span id="start70"><span id="end70"><span class="mrange"><span id="start71"><span id="end71"><span id="start72"><span id="end72"><span id="start73"><span id="end73"><span class="mrange"><span id="start74"><span id="end74"><span id="start75"><span id="end75"><span id="start76"><span id="end76"><span id="end77"><span class='macro'>g_return_val_if_fail</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span> (PLUMA_IS_FILE_BROWSER_STORE (model), FALSE)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_256<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((model)); GType __t = ((pluma_file_browser_store_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_256 = 1; else _g_boolean_var_256 =<br> 0; _g_boolean_var_256; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "PLUMA_IS_FILE_BROWSER_STORE (model)"<br>); return ((0)); } } while (0)</span></span>;</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path1" class="msg msgEvent" style="margin-left:9ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexEvent">1</div></td><td>Assuming '__inst' is non-null</td><td><div class="PathNav"><a href="#Path2" title="Next event (2)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path2" class="msg msgControl" style="margin-left:9ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">2</div></td><td><div class="PathNav"><a href="#Path1" title="Previous event (1)">&#x2190;</a></div></td><td>Taking false branch</td><td><div class="PathNav"><a href="#Path3" title="Next event (3)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path3" class="msg msgEvent" style="margin-left:9ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexEvent">3</div></td><td><div class="PathNav"><a href="#Path2" title="Previous event (2)">&#x2190;</a></div></td><td>Assuming field 'g_class' is null</td><td><div class="PathNav"><a href="#Path4" title="Next event (4)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path4" class="msg msgEvent" style="margin-left:9ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexEvent">4</div></td><td><div class="PathNav"><a href="#Path3" title="Previous event (3)">&#x2190;</a></div></td><td>Assuming the condition is true</td><td><div class="PathNav"><a href="#Path5" title="Next event (5)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path5" class="msg msgControl" style="margin-left:9ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">5</div></td><td><div class="PathNav"><a href="#Path4" title="Previous event (4)">&#x2190;</a></div></td><td>Taking true branch</td><td><div class="PathNav"><a href="#Path6" title="Next event (6)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path6" class="msg msgControl" style="margin-left:9ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">6</div></td><td><div class="PathNav"><a href="#Path5" title="Previous event (5)">&#x2190;</a></div></td><td>Taking true branch</td><td><div class="PathNav"><a href="#Path7" title="Next event (7)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path7" class="msg msgControl" style="margin-left:9ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">7</div></td><td><div class="PathNav"><a href="#Path6" title="Previous event (6)">&#x2190;</a></div></td><td>Loop condition is false. Exiting loop</td><td><div class="PathNav"><a href="#Path8" title="Next event (8)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="3172"><td class="num" id="LN3172">3172</td><td class="line"> <span id="start57"><span id="start58"><span id="end58"><span id="start59"><span id="end59"><span id="start60"><span id="end60"><span id="start61"><span id="end61"><span class="mrange"><span id="start62"><span id="end62"><span id="start63"><span id="end63"><span id="end64"><span class='macro'>g_return_val_if_fail</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span> (iter != NULL, FALSE)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_257<br>; if (iter != ((void*)0)) _g_boolean_var_257 = 1; else _g_boolean_var_257<br> = 0; _g_boolean_var_257; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "iter != NULL"); return<br> ((0)); } } while (0)</span></span>;</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path8" class="msg msgEvent" style="margin-left:9ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexEvent">8</div></td><td><div class="PathNav"><a href="#Path7" title="Previous event (7)">&#x2190;</a></div></td><td>Assuming 'iter' is not equal to null</td><td><div class="PathNav"><a href="#Path9" title="Next event (9)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path9" class="msg msgControl" style="margin-left:9ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">9</div></td><td><div class="PathNav"><a href="#Path8" title="Previous event (8)">&#x2190;</a></div></td><td>Taking true branch</td><td><div class="PathNav"><a href="#Path10" title="Next event (10)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path10" class="msg msgControl" style="margin-left:9ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">10</div></td><td><div class="PathNav"><a href="#Path9" title="Previous event (9)">&#x2190;</a></div></td><td>Taking true branch</td><td><div class="PathNav"><a href="#Path11" title="Next event (11)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path11" class="msg msgControl" style="margin-left:9ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">11</div></td><td><div class="PathNav"><a href="#Path10" title="Previous event (10)">&#x2190;</a></div></td><td>Loop condition is false. Exiting loop</td><td><div class="PathNav"><a href="#Path12" title="Next event (12)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="3173"><td class="num" id="LN3173">3173</td><td class="line"> <span id="start50"><span id="start51"><span id="end51"><span id="start52"><span id="end52"><span id="start53"><span id="end53"><span id="start54"><span id="end54"><span class="mrange"><span id="start55"><span id="end55"><span id="start56"><span id="end56"><span id="end57"><span class='macro'>g_return_val_if_fail</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span> (iter-&gt;user_data != NULL, FALSE)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_258<br>; if (iter-&gt;user_data != ((void*)0)) _g_boolean_var_258 = 1<br>; else _g_boolean_var_258 = 0; _g_boolean_var_258; }), 1))) {<br> } else { g_return_if_fail_warning (((gchar*) 0), ((const char<br>*) (__func__)), "iter-&gt;user_data != NULL"); return ((0)); }<br> } while (0)</span></span>;</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path12" class="msg msgEvent" style="margin-left:9ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexEvent">12</div></td><td><div class="PathNav"><a href="#Path11" title="Previous event (11)">&#x2190;</a></div></td><td>Assuming field 'user_data' is not equal to null</td><td><div class="PathNav"><a href="#Path13" title="Next event (13)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path13" class="msg msgControl" style="margin-left:9ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">13</div></td><td><div class="PathNav"><a href="#Path12" title="Previous event (12)">&#x2190;</a></div></td><td>Taking true branch</td><td><div class="PathNav"><a href="#Path14" title="Next event (14)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path14" class="msg msgControl" style="margin-left:9ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">14</div></td><td><div class="PathNav"><a href="#Path13" title="Previous event (13)">&#x2190;</a></div></td><td>Taking true branch</td><td><div class="PathNav"><a href="#Path15" title="Next event (15)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path15" class="msg msgControl" style="margin-left:9ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">15</div></td><td><div class="PathNav"><a href="#Path14" title="Previous event (14)">&#x2190;</a></div></td><td>Loop condition is false. Exiting loop</td><td><div class="PathNav"><a href="#Path16" title="Next event (16)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="3174"><td class="num" id="LN3174">3174</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3175"><td class="num" id="LN3175">3175</td><td class="line"> <span id="start47"><span id="end48"><span id="start49"><span id="end50">node</span></span></span></span> = (FileBrowserNode *) (<span id="start48"><span id="end49">iter</span></span>-&gt;user_data);</td></tr>
+<tr class="codeline" data-linenumber="3176"><td class="num" id="LN3176">3176</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3177"><td class="num" id="LN3177">3177</td><td class="line"> <span id="start46"><span id="end47">parent</span></span> = g_file_get_parent (node-&gt;file);</td></tr>
+<tr class="codeline" data-linenumber="3178"><td class="num" id="LN3178">3178</td><td class="line"> <span id="start39"><span id="start40"><span id="end40"><span id="start41"><span id="end41"><span id="start42"><span id="end42"><span id="start43"><span id="end43"><span class="mrange"><span id="start44"><span id="end44"><span id="start45"><span id="end45"><span id="end46"><span class='macro'>g_return_val_if_fail</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span> (parent != NULL, FALSE)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_259<br>; if (parent != ((void*)0)) _g_boolean_var_259 = 1; else _g_boolean_var_259<br> = 0; _g_boolean_var_259; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "parent != NULL")<br>; return ((0)); } } while (0)</span></span>;</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path16" class="msg msgEvent" style="margin-left:9ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexEvent">16</div></td><td><div class="PathNav"><a href="#Path15" title="Previous event (15)">&#x2190;</a></div></td><td>Assuming 'parent' is not equal to null</td><td><div class="PathNav"><a href="#Path17" title="Next event (17)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path17" class="msg msgControl" style="margin-left:9ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">17</div></td><td><div class="PathNav"><a href="#Path16" title="Previous event (16)">&#x2190;</a></div></td><td>Taking true branch</td><td><div class="PathNav"><a href="#Path18" title="Next event (18)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path18" class="msg msgControl" style="margin-left:9ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">18</div></td><td><div class="PathNav"><a href="#Path17" title="Previous event (17)">&#x2190;</a></div></td><td>Taking true branch</td><td><div class="PathNav"><a href="#Path19" title="Next event (19)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path19" class="msg msgControl" style="margin-left:9ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">19</div></td><td><div class="PathNav"><a href="#Path18" title="Previous event (18)">&#x2190;</a></div></td><td>Loop condition is false. Exiting loop</td><td><div class="PathNav"><a href="#Path20" title="Next event (20)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="3179"><td class="num" id="LN3179">3179</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3180"><td class="num" id="LN3180">3180</td><td class="line"> <span id="start36"><span id="end37"><span id="start38"><span id="end39">file</span></span></span></span> = g_file_get_child (<span id="start37"><span id="end38">parent</span></span>, new_name);</td></tr>
+<tr class="codeline" data-linenumber="3181"><td class="num" id="LN3181">3181</td><td class="line"> g_object_unref (parent);</td></tr>
+<tr class="codeline" data-linenumber="3182"><td class="num" id="LN3182">3182</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3183"><td class="num" id="LN3183">3183</td><td class="line"> <span id="start35"><span id="end36"><span class='keyword'>if</span></span></span> (<span id="start34"><span class="mrange"><span id="end35">g_file_equal</span></span> (node-&gt;file, file)</span>) {</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path20" class="msg msgEvent" style="margin-left:13ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexEvent">20</div></td><td><div class="PathNav"><a href="#Path19" title="Previous event (19)">&#x2190;</a></div></td><td>Assuming the condition is false</td><td><div class="PathNav"><a href="#Path21" title="Next event (21)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path21" class="msg msgControl" style="margin-left:9ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">21</div></td><td><div class="PathNav"><a href="#Path20" title="Previous event (20)">&#x2190;</a></div></td><td>Taking false branch</td><td><div class="PathNav"><a href="#Path22" title="Next event (22)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="3184"><td class="num" id="LN3184">3184</td><td class="line"> g_object_unref (file);</td></tr>
+<tr class="codeline" data-linenumber="3185"><td class="num" id="LN3185">3185</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3186"><td class="num" id="LN3186">3186</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3187"><td class="num" id="LN3187">3187</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3188"><td class="num" id="LN3188">3188</td><td class="line"> <span id="start33"><span id="end34"><span class='keyword'>if</span></span></span> (<span id="start31"><span class="mrange"><span id="end32">g_file_move</span></span> (<span id="start32"><span id="end33">node</span></span>-&gt;file, file, G_FILE_COPY_NONE, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, &amp;err)</span>) {</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path22" class="msg msgEvent" style="margin-left:13ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexEvent">22</div></td><td><div class="PathNav"><a href="#Path21" title="Previous event (21)">&#x2190;</a></div></td><td>Assuming the condition is true</td><td><div class="PathNav"><a href="#Path23" title="Next event (23)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path23" class="msg msgControl" style="margin-left:9ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">23</div></td><td><div class="PathNav"><a href="#Path22" title="Previous event (22)">&#x2190;</a></div></td><td>Taking true branch</td><td><div class="PathNav"><a href="#Path24" title="Next event (24)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="3189"><td class="num" id="LN3189">3189</td><td class="line"> <span id="start28"><span id="end29"><span id="start30"><span id="end31">previous</span></span></span></span> = <span id="start29"><span id="end30">node</span></span>-&gt;file;</td></tr>
+<tr class="codeline" data-linenumber="3190"><td class="num" id="LN3190">3190</td><td class="line"> node-&gt;file = file;</td></tr>
+<tr class="codeline" data-linenumber="3191"><td class="num" id="LN3191">3191</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3192"><td class="num" id="LN3192">3192</td><td class="line"> <span class='comment'>/* This makes sure the actual info for the node is requeried */</span></td></tr>
+<tr class="codeline" data-linenumber="3193"><td class="num" id="LN3193">3193</td><td class="line"> file_browser_node_set_name (node);</td></tr>
+<tr class="codeline" data-linenumber="3194"><td class="num" id="LN3194">3194</td><td class="line"> file_browser_node_set_from_info (model, node, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3195"><td class="num" id="LN3195">3195</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3196"><td class="num" id="LN3196">3196</td><td class="line"> reparent_node (node, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3197"><td class="num" id="LN3197">3197</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3198"><td class="num" id="LN3198">3198</td><td class="line"> <span id="start27"><span id="end28"><span class='keyword'>if</span></span></span> (model_node_visibility (model, node)) {</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path24" class="msg msgControl" style="margin-left:17ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">24</div></td><td><div class="PathNav"><a href="#Path23" title="Previous event (23)">&#x2190;</a></div></td><td>Taking true branch</td><td><div class="PathNav"><a href="#Path25" title="Next event (25)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="3199"><td class="num" id="LN3199">3199</td><td class="line"> <span id="start24"><span id="end25"><span id="start26"><span id="end27">path</span></span></span></span> = pluma_file_browser_store_get_path_real (<span id="start25"><span id="end26">model</span></span>, node);</td></tr>
+<tr class="codeline" data-linenumber="3200"><td class="num" id="LN3200">3200</td><td class="line"> row_changed (model, &amp;path, iter);</td></tr>
+<tr class="codeline" data-linenumber="3201"><td class="num" id="LN3201">3201</td><td class="line"> gtk_tree_path_free (path);</td></tr>
+<tr class="codeline" data-linenumber="3202"><td class="num" id="LN3202">3202</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3203"><td class="num" id="LN3203">3203</td><td class="line"> <span class='comment'>/* Reorder this item */</span></td></tr>
+<tr class="codeline" data-linenumber="3204"><td class="num" id="LN3204">3204</td><td class="line"> <span class="mrange"><span id="end24">model_resort_node</span> (model, node)</span>;</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path25" class="msg msgEvent" style="margin-left:25ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexEvent">25</div></td><td><div class="PathNav"><a href="#Path24" title="Previous event (24)">&#x2190;</a></div></td><td>Calling 'model_resort_node'</td><td><div class="PathNav"><a href="#Path26" title="Next event (26)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="3205"><td class="num" id="LN3205">3205</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="3206"><td class="num" id="LN3206">3206</td><td class="line"> g_object_unref (previous);</td></tr>
+<tr class="codeline" data-linenumber="3207"><td class="num" id="LN3207">3207</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3208"><td class="num" id="LN3208">3208</td><td class="line"> <span class='keyword'>if</span> (error != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="3209"><td class="num" id="LN3209">3209</td><td class="line"> *error = g_error_new_literal (pluma_file_browser_store_error_quark (),</td></tr>
+<tr class="codeline" data-linenumber="3210"><td class="num" id="LN3210">3210</td><td class="line"> PLUMA_FILE_BROWSER_ERROR_RENAME,</td></tr>
+<tr class="codeline" data-linenumber="3211"><td class="num" id="LN3211">3211</td><td class="line"> <span class='macro'>_(<span class='string_literal'>"The renamed file is currently filtered out. You need to adjust your filter settings to make the file visible"</span>)<span class='macro_popup'>((char *) g_dgettext ("pluma", "The renamed file is currently filtered out. You need to adjust your filter settings to make the file visible"<br>))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3212"><td class="num" id="LN3212">3212</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3213"><td class="num" id="LN3213">3213</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3214"><td class="num" id="LN3214">3214</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3215"><td class="num" id="LN3215">3215</td><td class="line"> olduri = g_file_get_uri (previous);</td></tr>
+<tr class="codeline" data-linenumber="3216"><td class="num" id="LN3216">3216</td><td class="line"> newuri = g_file_get_uri (node-&gt;file);</td></tr>
+<tr class="codeline" data-linenumber="3217"><td class="num" id="LN3217">3217</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3218"><td class="num" id="LN3218">3218</td><td class="line"> g_signal_emit (model, model_signals[RENAME], 0, olduri, newuri);</td></tr>
+<tr class="codeline" data-linenumber="3219"><td class="num" id="LN3219">3219</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3220"><td class="num" id="LN3220">3220</td><td class="line"> g_object_unref (previous);</td></tr>
+<tr class="codeline" data-linenumber="3221"><td class="num" id="LN3221">3221</td><td class="line"> g_free (olduri);</td></tr>
+<tr class="codeline" data-linenumber="3222"><td class="num" id="LN3222">3222</td><td class="line"> g_free (newuri);</td></tr>
+<tr class="codeline" data-linenumber="3223"><td class="num" id="LN3223">3223</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3224"><td class="num" id="LN3224">3224</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3225"><td class="num" id="LN3225">3225</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="3226"><td class="num" id="LN3226">3226</td><td class="line"> g_object_unref (file);</td></tr>
+<tr class="codeline" data-linenumber="3227"><td class="num" id="LN3227">3227</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3228"><td class="num" id="LN3228">3228</td><td class="line"> <span class='keyword'>if</span> (err) {</td></tr>
+<tr class="codeline" data-linenumber="3229"><td class="num" id="LN3229">3229</td><td class="line"> <span class='keyword'>if</span> (error != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3230"><td class="num" id="LN3230">3230</td><td class="line"> *error =</td></tr>
+<tr class="codeline" data-linenumber="3231"><td class="num" id="LN3231">3231</td><td class="line"> g_error_new_literal</td></tr>
+<tr class="codeline" data-linenumber="3232"><td class="num" id="LN3232">3232</td><td class="line"> (pluma_file_browser_store_error_quark (),</td></tr>
+<tr class="codeline" data-linenumber="3233"><td class="num" id="LN3233">3233</td><td class="line"> PLUMA_FILE_BROWSER_ERROR_RENAME,</td></tr>
+<tr class="codeline" data-linenumber="3234"><td class="num" id="LN3234">3234</td><td class="line"> err-&gt;message);</td></tr>
+<tr class="codeline" data-linenumber="3235"><td class="num" id="LN3235">3235</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3236"><td class="num" id="LN3236">3236</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3237"><td class="num" id="LN3237">3237</td><td class="line"> g_error_free (err);</td></tr>
+<tr class="codeline" data-linenumber="3238"><td class="num" id="LN3238">3238</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3239"><td class="num" id="LN3239">3239</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3240"><td class="num" id="LN3240">3240</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3241"><td class="num" id="LN3241">3241</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3242"><td class="num" id="LN3242">3242</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3243"><td class="num" id="LN3243">3243</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3244"><td class="num" id="LN3244">3244</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="3245"><td class="num" id="LN3245">3245</td><td class="line">async_data_free (AsyncData * data)</td></tr>
+<tr class="codeline" data-linenumber="3246"><td class="num" id="LN3246">3246</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3247"><td class="num" id="LN3247">3247</td><td class="line"> g_object_unref (data-&gt;cancellable);</td></tr>
+<tr class="codeline" data-linenumber="3248"><td class="num" id="LN3248">3248</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3249"><td class="num" id="LN3249">3249</td><td class="line"> g_list_free_full (data-&gt;files, g_object_unref);</td></tr>
+<tr class="codeline" data-linenumber="3250"><td class="num" id="LN3250">3250</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3251"><td class="num" id="LN3251">3251</td><td class="line"> <span class='keyword'>if</span> (!data-&gt;removed)</td></tr>
+<tr class="codeline" data-linenumber="3252"><td class="num" id="LN3252">3252</td><td class="line"> data-&gt;model-&gt;priv-&gt;async_handles = g_slist_remove (data-&gt;model-&gt;priv-&gt;async_handles, data);</td></tr>
+<tr class="codeline" data-linenumber="3253"><td class="num" id="LN3253">3253</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3254"><td class="num" id="LN3254">3254</td><td class="line"> g_free (data);</td></tr>
+<tr class="codeline" data-linenumber="3255"><td class="num" id="LN3255">3255</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3256"><td class="num" id="LN3256">3256</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3257"><td class="num" id="LN3257">3257</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="3258"><td class="num" id="LN3258">3258</td><td class="line">emit_no_trash (AsyncData * data)</td></tr>
+<tr class="codeline" data-linenumber="3259"><td class="num" id="LN3259">3259</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3260"><td class="num" id="LN3260">3260</td><td class="line"> <span class='comment'>/* Emit the no trash error */</span></td></tr>
+<tr class="codeline" data-linenumber="3261"><td class="num" id="LN3261">3261</td><td class="line"> gboolean ret;</td></tr>
+<tr class="codeline" data-linenumber="3262"><td class="num" id="LN3262">3262</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3263"><td class="num" id="LN3263">3263</td><td class="line"> g_signal_emit (data-&gt;model, model_signals[NO_TRASH], 0, data-&gt;files, &amp;ret);</td></tr>
+<tr class="codeline" data-linenumber="3264"><td class="num" id="LN3264">3264</td><td class="line"> <span class='keyword'>return</span> ret;</td></tr>
+<tr class="codeline" data-linenumber="3265"><td class="num" id="LN3265">3265</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3266"><td class="num" id="LN3266">3266</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3267"><td class="num" id="LN3267">3267</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="3268"><td class="num" id="LN3268">3268</td><td class="line">delete_file_finished (GFile *file,</td></tr>
+<tr class="codeline" data-linenumber="3269"><td class="num" id="LN3269">3269</td><td class="line"> GAsyncResult *res,</td></tr>
+<tr class="codeline" data-linenumber="3270"><td class="num" id="LN3270">3270</td><td class="line"> AsyncData *data)</td></tr>
+<tr class="codeline" data-linenumber="3271"><td class="num" id="LN3271">3271</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3272"><td class="num" id="LN3272">3272</td><td class="line"> GError * error = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3273"><td class="num" id="LN3273">3273</td><td class="line"> gboolean ok;</td></tr>
+<tr class="codeline" data-linenumber="3274"><td class="num" id="LN3274">3274</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3275"><td class="num" id="LN3275">3275</td><td class="line"> <span class='keyword'>if</span> (data-&gt;trash)</td></tr>
+<tr class="codeline" data-linenumber="3276"><td class="num" id="LN3276">3276</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="3277"><td class="num" id="LN3277">3277</td><td class="line"> ok = g_file_trash_finish (file, res, &amp;error);</td></tr>
+<tr class="codeline" data-linenumber="3278"><td class="num" id="LN3278">3278</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3279"><td class="num" id="LN3279">3279</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="3280"><td class="num" id="LN3280">3280</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="3281"><td class="num" id="LN3281">3281</td><td class="line"> ok = g_file_delete_finish (file, res, &amp;error);</td></tr>
+<tr class="codeline" data-linenumber="3282"><td class="num" id="LN3282">3282</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3283"><td class="num" id="LN3283">3283</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3284"><td class="num" id="LN3284">3284</td><td class="line"> <span class='keyword'>if</span> (ok)</td></tr>
+<tr class="codeline" data-linenumber="3285"><td class="num" id="LN3285">3285</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="3286"><td class="num" id="LN3286">3286</td><td class="line"> <span class='comment'>/* Remove the file from the model */</span></td></tr>
+<tr class="codeline" data-linenumber="3287"><td class="num" id="LN3287">3287</td><td class="line"> FileBrowserNode *node = model_find_node (data-&gt;model, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, file);</td></tr>
+<tr class="codeline" data-linenumber="3288"><td class="num" id="LN3288">3288</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3289"><td class="num" id="LN3289">3289</td><td class="line"> <span class='keyword'>if</span> (node != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="3290"><td class="num" id="LN3290">3290</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="3291"><td class="num" id="LN3291">3291</td><td class="line"> model_remove_node (data-&gt;model, node, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3292"><td class="num" id="LN3292">3292</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3293"><td class="num" id="LN3293">3293</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3294"><td class="num" id="LN3294">3294</td><td class="line"> <span class='comment'>/* Process the next file */</span></td></tr>
+<tr class="codeline" data-linenumber="3295"><td class="num" id="LN3295">3295</td><td class="line"> data-&gt;iter = data-&gt;iter-&gt;next;</td></tr>
+<tr class="codeline" data-linenumber="3296"><td class="num" id="LN3296">3296</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3297"><td class="num" id="LN3297">3297</td><td class="line"> <span class='keyword'>else</span> <span class='keyword'>if</span> (!ok &amp;&amp; error != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="3298"><td class="num" id="LN3298">3298</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="3299"><td class="num" id="LN3299">3299</td><td class="line"> gint code = error-&gt;code;</td></tr>
+<tr class="codeline" data-linenumber="3300"><td class="num" id="LN3300">3300</td><td class="line"> g_error_free (error);</td></tr>
+<tr class="codeline" data-linenumber="3301"><td class="num" id="LN3301">3301</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3302"><td class="num" id="LN3302">3302</td><td class="line"> <span class='keyword'>if</span> (data-&gt;trash &amp;&amp; code == G_IO_ERROR_NOT_SUPPORTED) {</td></tr>
+<tr class="codeline" data-linenumber="3303"><td class="num" id="LN3303">3303</td><td class="line"> <span class='comment'>/* Trash is not supported on this system. Ask the user</span></td></tr>
+<tr class="codeline" data-linenumber="3304"><td class="num" id="LN3304">3304</td><td class="line"> <span class='comment'>* if he wants to delete completely the files instead.</span></td></tr>
+<tr class="codeline" data-linenumber="3305"><td class="num" id="LN3305">3305</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="3306"><td class="num" id="LN3306">3306</td><td class="line"> <span class='keyword'>if</span> (emit_no_trash (data))</td></tr>
+<tr class="codeline" data-linenumber="3307"><td class="num" id="LN3307">3307</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="3308"><td class="num" id="LN3308">3308</td><td class="line"> <span class='comment'>/* Changes this into a delete job */</span></td></tr>
+<tr class="codeline" data-linenumber="3309"><td class="num" id="LN3309">3309</td><td class="line"> data-&gt;trash = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3310"><td class="num" id="LN3310">3310</td><td class="line"> data-&gt;iter = data-&gt;files;</td></tr>
+<tr class="codeline" data-linenumber="3311"><td class="num" id="LN3311">3311</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3312"><td class="num" id="LN3312">3312</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="3313"><td class="num" id="LN3313">3313</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="3314"><td class="num" id="LN3314">3314</td><td class="line"> <span class='comment'>/* End the job */</span></td></tr>
+<tr class="codeline" data-linenumber="3315"><td class="num" id="LN3315">3315</td><td class="line"> async_data_free (data);</td></tr>
+<tr class="codeline" data-linenumber="3316"><td class="num" id="LN3316">3316</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="3317"><td class="num" id="LN3317">3317</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3318"><td class="num" id="LN3318">3318</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3319"><td class="num" id="LN3319">3319</td><td class="line"> <span class='keyword'>else</span> <span class='keyword'>if</span> (code == G_IO_ERROR_CANCELLED)</td></tr>
+<tr class="codeline" data-linenumber="3320"><td class="num" id="LN3320">3320</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="3321"><td class="num" id="LN3321">3321</td><td class="line"> <span class='comment'>/* Job has been cancelled, end the job */</span></td></tr>
+<tr class="codeline" data-linenumber="3322"><td class="num" id="LN3322">3322</td><td class="line"> async_data_free (data);</td></tr>
+<tr class="codeline" data-linenumber="3323"><td class="num" id="LN3323">3323</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="3324"><td class="num" id="LN3324">3324</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3325"><td class="num" id="LN3325">3325</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3326"><td class="num" id="LN3326">3326</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3327"><td class="num" id="LN3327">3327</td><td class="line"> <span class='comment'>/* Continue the job */</span></td></tr>
+<tr class="codeline" data-linenumber="3328"><td class="num" id="LN3328">3328</td><td class="line"> delete_files (data);</td></tr>
+<tr class="codeline" data-linenumber="3329"><td class="num" id="LN3329">3329</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3330"><td class="num" id="LN3330">3330</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3331"><td class="num" id="LN3331">3331</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="3332"><td class="num" id="LN3332">3332</td><td class="line">delete_files (AsyncData *data)</td></tr>
+<tr class="codeline" data-linenumber="3333"><td class="num" id="LN3333">3333</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3334"><td class="num" id="LN3334">3334</td><td class="line"> GFile *file;</td></tr>
+<tr class="codeline" data-linenumber="3335"><td class="num" id="LN3335">3335</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3336"><td class="num" id="LN3336">3336</td><td class="line"> <span class='comment'>/* Check if our job is done */</span></td></tr>
+<tr class="codeline" data-linenumber="3337"><td class="num" id="LN3337">3337</td><td class="line"> <span class='keyword'>if</span> (data-&gt;iter == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="3338"><td class="num" id="LN3338">3338</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="3339"><td class="num" id="LN3339">3339</td><td class="line"> async_data_free (data);</td></tr>
+<tr class="codeline" data-linenumber="3340"><td class="num" id="LN3340">3340</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="3341"><td class="num" id="LN3341">3341</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3342"><td class="num" id="LN3342">3342</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3343"><td class="num" id="LN3343">3343</td><td class="line"> file = <span class='macro'>G_FILE (data-&gt;iter-&gt;data)<span class='macro_popup'>((((GFile*) (void *) ((data-&gt;iter-&gt;data)))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3344"><td class="num" id="LN3344">3344</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3345"><td class="num" id="LN3345">3345</td><td class="line"> <span class='keyword'>if</span> (data-&gt;trash)</td></tr>
+<tr class="codeline" data-linenumber="3346"><td class="num" id="LN3346">3346</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="3347"><td class="num" id="LN3347">3347</td><td class="line"> g_file_trash_async (file,</td></tr>
+<tr class="codeline" data-linenumber="3348"><td class="num" id="LN3348">3348</td><td class="line"> <span class='macro'>G_PRIORITY_DEFAULT<span class='macro_popup'>0</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="3349"><td class="num" id="LN3349">3349</td><td class="line"> data-&gt;cancellable,</td></tr>
+<tr class="codeline" data-linenumber="3350"><td class="num" id="LN3350">3350</td><td class="line"> (GAsyncReadyCallback)delete_file_finished,</td></tr>
+<tr class="codeline" data-linenumber="3351"><td class="num" id="LN3351">3351</td><td class="line"> data);</td></tr>
+<tr class="codeline" data-linenumber="3352"><td class="num" id="LN3352">3352</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3353"><td class="num" id="LN3353">3353</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="3354"><td class="num" id="LN3354">3354</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="3355"><td class="num" id="LN3355">3355</td><td class="line"> g_file_delete_async (file,</td></tr>
+<tr class="codeline" data-linenumber="3356"><td class="num" id="LN3356">3356</td><td class="line"> <span class='macro'>G_PRIORITY_DEFAULT<span class='macro_popup'>0</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="3357"><td class="num" id="LN3357">3357</td><td class="line"> data-&gt;cancellable,</td></tr>
+<tr class="codeline" data-linenumber="3358"><td class="num" id="LN3358">3358</td><td class="line"> (GAsyncReadyCallback)delete_file_finished,</td></tr>
+<tr class="codeline" data-linenumber="3359"><td class="num" id="LN3359">3359</td><td class="line"> data);</td></tr>
+<tr class="codeline" data-linenumber="3360"><td class="num" id="LN3360">3360</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3361"><td class="num" id="LN3361">3361</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3362"><td class="num" id="LN3362">3362</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3363"><td class="num" id="LN3363">3363</td><td class="line">PlumaFileBrowserStoreResult</td></tr>
+<tr class="codeline" data-linenumber="3364"><td class="num" id="LN3364">3364</td><td class="line">pluma_file_browser_store_delete_all (PlumaFileBrowserStore *model,</td></tr>
+<tr class="codeline" data-linenumber="3365"><td class="num" id="LN3365">3365</td><td class="line"> GList *rows, gboolean trash)</td></tr>
+<tr class="codeline" data-linenumber="3366"><td class="num" id="LN3366">3366</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3367"><td class="num" id="LN3367">3367</td><td class="line"> FileBrowserNode * node;</td></tr>
+<tr class="codeline" data-linenumber="3368"><td class="num" id="LN3368">3368</td><td class="line"> AsyncData * data;</td></tr>
+<tr class="codeline" data-linenumber="3369"><td class="num" id="LN3369">3369</td><td class="line"> GList * files = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3370"><td class="num" id="LN3370">3370</td><td class="line"> GList * row;</td></tr>
+<tr class="codeline" data-linenumber="3371"><td class="num" id="LN3371">3371</td><td class="line"> GtkTreeIter iter;</td></tr>
+<tr class="codeline" data-linenumber="3372"><td class="num" id="LN3372">3372</td><td class="line"> GtkTreePath * prev = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3373"><td class="num" id="LN3373">3373</td><td class="line"> GtkTreePath * path;</td></tr>
+<tr class="codeline" data-linenumber="3374"><td class="num" id="LN3374">3374</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3375"><td class="num" id="LN3375">3375</td><td class="line"> <span class='macro'>g_return_val_if_fail (PLUMA_IS_FILE_BROWSER_STORE (model), PLUMA_FILE_BROWSER_STORE_RESULT_NO_CHANGE)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_260<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((model)); GType __t = ((pluma_file_browser_store_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_260 = 1; else _g_boolean_var_260 =<br> 0; _g_boolean_var_260; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "PLUMA_IS_FILE_BROWSER_STORE (model)"<br>); return (PLUMA_FILE_BROWSER_STORE_RESULT_NO_CHANGE); } } while<br> (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3376"><td class="num" id="LN3376">3376</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3377"><td class="num" id="LN3377">3377</td><td class="line"> <span class='keyword'>if</span> (rows == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="3378"><td class="num" id="LN3378">3378</td><td class="line"> <span class='keyword'>return</span> PLUMA_FILE_BROWSER_STORE_RESULT_NO_CHANGE;</td></tr>
+<tr class="codeline" data-linenumber="3379"><td class="num" id="LN3379">3379</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3380"><td class="num" id="LN3380">3380</td><td class="line"> <span class='comment'>/* First we sort the paths so that we can later on remove any</span></td></tr>
+<tr class="codeline" data-linenumber="3381"><td class="num" id="LN3381">3381</td><td class="line"> <span class='comment'>files/directories that are actually subfiles/directories of</span></td></tr>
+<tr class="codeline" data-linenumber="3382"><td class="num" id="LN3382">3382</td><td class="line"> <span class='comment'>a directory that's also deleted */</span></td></tr>
+<tr class="codeline" data-linenumber="3383"><td class="num" id="LN3383">3383</td><td class="line"> rows = g_list_sort (g_list_copy (rows), (GCompareFunc)gtk_tree_path_compare);</td></tr>
+<tr class="codeline" data-linenumber="3384"><td class="num" id="LN3384">3384</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3385"><td class="num" id="LN3385">3385</td><td class="line"> <span class='keyword'>for</span> (row = rows; row; row = row-&gt;next) {</td></tr>
+<tr class="codeline" data-linenumber="3386"><td class="num" id="LN3386">3386</td><td class="line"> path = (GtkTreePath *)(row-&gt;data);</td></tr>
+<tr class="codeline" data-linenumber="3387"><td class="num" id="LN3387">3387</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3388"><td class="num" id="LN3388">3388</td><td class="line"> <span class='keyword'>if</span> (!gtk_tree_model_get_iter (<span class='macro'>GTK_TREE_MODEL (model)<span class='macro_popup'>((((GtkTreeModel*) (void *) ((model)))))</span></span>, &amp;iter, path))</td></tr>
+<tr class="codeline" data-linenumber="3389"><td class="num" id="LN3389">3389</td><td class="line"> <span class='keyword'>continue</span>;</td></tr>
+<tr class="codeline" data-linenumber="3390"><td class="num" id="LN3390">3390</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3391"><td class="num" id="LN3391">3391</td><td class="line"> <span class='comment'>/* Skip if the current path is actually a descendant of the</span></td></tr>
+<tr class="codeline" data-linenumber="3392"><td class="num" id="LN3392">3392</td><td class="line"> <span class='comment'>previous path */</span></td></tr>
+<tr class="codeline" data-linenumber="3393"><td class="num" id="LN3393">3393</td><td class="line"> <span class='keyword'>if</span> (prev != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> &amp;&amp; gtk_tree_path_is_descendant (path, prev))</td></tr>
+<tr class="codeline" data-linenumber="3394"><td class="num" id="LN3394">3394</td><td class="line"> <span class='keyword'>continue</span>;</td></tr>
+<tr class="codeline" data-linenumber="3395"><td class="num" id="LN3395">3395</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3396"><td class="num" id="LN3396">3396</td><td class="line"> prev = path;</td></tr>
+<tr class="codeline" data-linenumber="3397"><td class="num" id="LN3397">3397</td><td class="line"> node = (FileBrowserNode *)(iter.user_data);</td></tr>
+<tr class="codeline" data-linenumber="3398"><td class="num" id="LN3398">3398</td><td class="line"> files = g_list_prepend (files, <span class='macro'>g_object_ref (node-&gt;file)<span class='macro_popup'>((__typeof__ (node-&gt;file)) (g_object_ref) (node-&gt;file))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3399"><td class="num" id="LN3399">3399</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3400"><td class="num" id="LN3400">3400</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3401"><td class="num" id="LN3401">3401</td><td class="line"> data = <span class='macro'>g_new (AsyncData, 1)<span class='macro_popup'>(AsyncData *) (__extension__ ({ gsize __n = (gsize) (1); gsize<br> __s = sizeof (AsyncData); gpointer __p; if (__s == 1) __p = g_malloc<br> (__n); else if (__builtin_constant_p (__n) &amp;&amp; (__s ==<br> 0 || __n &lt;= (9223372036854775807L *2UL+1UL) / __s)) __p =<br> g_malloc (__n * __s); else __p = g_malloc_n (__n, __s); __p;<br> }))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3402"><td class="num" id="LN3402">3402</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3403"><td class="num" id="LN3403">3403</td><td class="line"> data-&gt;model = model;</td></tr>
+<tr class="codeline" data-linenumber="3404"><td class="num" id="LN3404">3404</td><td class="line"> data-&gt;cancellable = g_cancellable_new ();</td></tr>
+<tr class="codeline" data-linenumber="3405"><td class="num" id="LN3405">3405</td><td class="line"> data-&gt;files = files;</td></tr>
+<tr class="codeline" data-linenumber="3406"><td class="num" id="LN3406">3406</td><td class="line"> data-&gt;trash = trash;</td></tr>
+<tr class="codeline" data-linenumber="3407"><td class="num" id="LN3407">3407</td><td class="line"> data-&gt;iter = files;</td></tr>
+<tr class="codeline" data-linenumber="3408"><td class="num" id="LN3408">3408</td><td class="line"> data-&gt;removed = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3409"><td class="num" id="LN3409">3409</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3410"><td class="num" id="LN3410">3410</td><td class="line"> model-&gt;priv-&gt;async_handles =</td></tr>
+<tr class="codeline" data-linenumber="3411"><td class="num" id="LN3411">3411</td><td class="line"> g_slist_prepend (model-&gt;priv-&gt;async_handles, data);</td></tr>
+<tr class="codeline" data-linenumber="3412"><td class="num" id="LN3412">3412</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3413"><td class="num" id="LN3413">3413</td><td class="line"> delete_files (data);</td></tr>
+<tr class="codeline" data-linenumber="3414"><td class="num" id="LN3414">3414</td><td class="line"> g_list_free (rows);</td></tr>
+<tr class="codeline" data-linenumber="3415"><td class="num" id="LN3415">3415</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3416"><td class="num" id="LN3416">3416</td><td class="line"> <span class='keyword'>return</span> PLUMA_FILE_BROWSER_STORE_RESULT_OK;</td></tr>
+<tr class="codeline" data-linenumber="3417"><td class="num" id="LN3417">3417</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3418"><td class="num" id="LN3418">3418</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3419"><td class="num" id="LN3419">3419</td><td class="line">PlumaFileBrowserStoreResult</td></tr>
+<tr class="codeline" data-linenumber="3420"><td class="num" id="LN3420">3420</td><td class="line">pluma_file_browser_store_delete (PlumaFileBrowserStore * model,</td></tr>
+<tr class="codeline" data-linenumber="3421"><td class="num" id="LN3421">3421</td><td class="line"> GtkTreeIter * iter, gboolean trash)</td></tr>
+<tr class="codeline" data-linenumber="3422"><td class="num" id="LN3422">3422</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3423"><td class="num" id="LN3423">3423</td><td class="line"> FileBrowserNode *node;</td></tr>
+<tr class="codeline" data-linenumber="3424"><td class="num" id="LN3424">3424</td><td class="line"> GList *rows = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3425"><td class="num" id="LN3425">3425</td><td class="line"> PlumaFileBrowserStoreResult result;</td></tr>
+<tr class="codeline" data-linenumber="3426"><td class="num" id="LN3426">3426</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3427"><td class="num" id="LN3427">3427</td><td class="line"> <span class='macro'>g_return_val_if_fail (PLUMA_IS_FILE_BROWSER_STORE (model), PLUMA_FILE_BROWSER_STORE_RESULT_NO_CHANGE)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_261<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((model)); GType __t = ((pluma_file_browser_store_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_261 = 1; else _g_boolean_var_261 =<br> 0; _g_boolean_var_261; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "PLUMA_IS_FILE_BROWSER_STORE (model)"<br>); return (PLUMA_FILE_BROWSER_STORE_RESULT_NO_CHANGE); } } while<br> (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3428"><td class="num" id="LN3428">3428</td><td class="line"> <span class='macro'>g_return_val_if_fail (iter != NULL, PLUMA_FILE_BROWSER_STORE_RESULT_NO_CHANGE)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_262<br>; if (iter != ((void*)0)) _g_boolean_var_262 = 1; else _g_boolean_var_262<br> = 0; _g_boolean_var_262; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "iter != NULL"); return<br> (PLUMA_FILE_BROWSER_STORE_RESULT_NO_CHANGE); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3429"><td class="num" id="LN3429">3429</td><td class="line"> <span class='macro'>g_return_val_if_fail (iter-&gt;user_data != NULL, PLUMA_FILE_BROWSER_STORE_RESULT_NO_CHANGE)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_263<br>; if (iter-&gt;user_data != ((void*)0)) _g_boolean_var_263 = 1<br>; else _g_boolean_var_263 = 0; _g_boolean_var_263; }), 1))) {<br> } else { g_return_if_fail_warning (((gchar*) 0), ((const char<br>*) (__func__)), "iter-&gt;user_data != NULL"); return (PLUMA_FILE_BROWSER_STORE_RESULT_NO_CHANGE<br>); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3430"><td class="num" id="LN3430">3430</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3431"><td class="num" id="LN3431">3431</td><td class="line"> node = (FileBrowserNode *) (iter-&gt;user_data);</td></tr>
+<tr class="codeline" data-linenumber="3432"><td class="num" id="LN3432">3432</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3433"><td class="num" id="LN3433">3433</td><td class="line"> <span class='keyword'>if</span> (<span class='macro'>NODE_IS_DUMMY (node)<span class='macro_popup'>(((node)-&gt;flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_DUMMY<br>))</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="3434"><td class="num" id="LN3434">3434</td><td class="line"> <span class='keyword'>return</span> PLUMA_FILE_BROWSER_STORE_RESULT_NO_CHANGE;</td></tr>
+<tr class="codeline" data-linenumber="3435"><td class="num" id="LN3435">3435</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3436"><td class="num" id="LN3436">3436</td><td class="line"> rows = g_list_append(<span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, pluma_file_browser_store_get_path_real (model, node));</td></tr>
+<tr class="codeline" data-linenumber="3437"><td class="num" id="LN3437">3437</td><td class="line"> result = pluma_file_browser_store_delete_all (model, rows, trash);</td></tr>
+<tr class="codeline" data-linenumber="3438"><td class="num" id="LN3438">3438</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3439"><td class="num" id="LN3439">3439</td><td class="line"> g_list_free_full (rows, (GDestroyNotify) gtk_tree_path_free);</td></tr>
+<tr class="codeline" data-linenumber="3440"><td class="num" id="LN3440">3440</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3441"><td class="num" id="LN3441">3441</td><td class="line"> <span class='keyword'>return</span> result;</td></tr>
+<tr class="codeline" data-linenumber="3442"><td class="num" id="LN3442">3442</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3443"><td class="num" id="LN3443">3443</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3444"><td class="num" id="LN3444">3444</td><td class="line">gboolean</td></tr>
+<tr class="codeline" data-linenumber="3445"><td class="num" id="LN3445">3445</td><td class="line">pluma_file_browser_store_new_file (PlumaFileBrowserStore * model,</td></tr>
+<tr class="codeline" data-linenumber="3446"><td class="num" id="LN3446">3446</td><td class="line"> GtkTreeIter * parent,</td></tr>
+<tr class="codeline" data-linenumber="3447"><td class="num" id="LN3447">3447</td><td class="line"> GtkTreeIter * iter)</td></tr>
+<tr class="codeline" data-linenumber="3448"><td class="num" id="LN3448">3448</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3449"><td class="num" id="LN3449">3449</td><td class="line"> GFile * file;</td></tr>
+<tr class="codeline" data-linenumber="3450"><td class="num" id="LN3450">3450</td><td class="line"> GFileOutputStream * stream;</td></tr>
+<tr class="codeline" data-linenumber="3451"><td class="num" id="LN3451">3451</td><td class="line"> FileBrowserNodeDir *parent_node;</td></tr>
+<tr class="codeline" data-linenumber="3452"><td class="num" id="LN3452">3452</td><td class="line"> gboolean result = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3453"><td class="num" id="LN3453">3453</td><td class="line"> FileBrowserNode *node;</td></tr>
+<tr class="codeline" data-linenumber="3454"><td class="num" id="LN3454">3454</td><td class="line"> GError * error = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3455"><td class="num" id="LN3455">3455</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3456"><td class="num" id="LN3456">3456</td><td class="line"> <span class='macro'>g_return_val_if_fail (PLUMA_IS_FILE_BROWSER_STORE (model), FALSE)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_264<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((model)); GType __t = ((pluma_file_browser_store_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_264 = 1; else _g_boolean_var_264 =<br> 0; _g_boolean_var_264; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "PLUMA_IS_FILE_BROWSER_STORE (model)"<br>); return ((0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3457"><td class="num" id="LN3457">3457</td><td class="line"> <span class='macro'>g_return_val_if_fail (parent != NULL, FALSE)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_265<br>; if (parent != ((void*)0)) _g_boolean_var_265 = 1; else _g_boolean_var_265<br> = 0; _g_boolean_var_265; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "parent != NULL")<br>; return ((0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3458"><td class="num" id="LN3458">3458</td><td class="line"> <span class='macro'>g_return_val_if_fail (parent-&gt;user_data != NULL, FALSE)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_266<br>; if (parent-&gt;user_data != ((void*)0)) _g_boolean_var_266 =<br> 1; else _g_boolean_var_266 = 0; _g_boolean_var_266; }), 1)))<br> { } else { g_return_if_fail_warning (((gchar*) 0), ((const char<br>*) (__func__)), "parent-&gt;user_data != NULL"); return ((0))<br>; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3459"><td class="num" id="LN3459">3459</td><td class="line"> <span class='macro'>g_return_val_if_fail (NODE_IS_DIR<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_267<br>; if (((((FileBrowserNode *) (parent-&gt;user_data))-&gt;flags<br> &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_DIRECTORY))) _g_boolean_var_267<br> = 1; else _g_boolean_var_267 = 0; _g_boolean_var_267; }), 1)<br>)) { } else { g_return_if_fail_warning (((gchar*) 0), ((const<br> char*) (__func__)), "NODE_IS_DIR ((FileBrowserNode *) (parent-&gt;user_data))"<br>); return ((0)); } } while (0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="3460"><td class="num" id="LN3460">3460</td><td class="line"> <span class='macro'>((FileBrowserNode *) (parent-&gt;user_data)),<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_267<br>; if (((((FileBrowserNode *) (parent-&gt;user_data))-&gt;flags<br> &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_DIRECTORY))) _g_boolean_var_267<br> = 1; else _g_boolean_var_267 = 0; _g_boolean_var_267; }), 1)<br>)) { } else { g_return_if_fail_warning (((gchar*) 0), ((const<br> char*) (__func__)), "NODE_IS_DIR ((FileBrowserNode *) (parent-&gt;user_data))"<br>); return ((0)); } } while (0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="3461"><td class="num" id="LN3461">3461</td><td class="line"> <span class='macro'>FALSE)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_267<br>; if (((((FileBrowserNode *) (parent-&gt;user_data))-&gt;flags<br> &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_DIRECTORY))) _g_boolean_var_267<br> = 1; else _g_boolean_var_267 = 0; _g_boolean_var_267; }), 1)<br>)) { } else { g_return_if_fail_warning (((gchar*) 0), ((const<br> char*) (__func__)), "NODE_IS_DIR ((FileBrowserNode *) (parent-&gt;user_data))"<br>); return ((0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3462"><td class="num" id="LN3462">3462</td><td class="line"> <span class='macro'>g_return_val_if_fail (iter != NULL, FALSE)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_268<br>; if (iter != ((void*)0)) _g_boolean_var_268 = 1; else _g_boolean_var_268<br> = 0; _g_boolean_var_268; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "iter != NULL"); return<br> ((0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3463"><td class="num" id="LN3463">3463</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3464"><td class="num" id="LN3464">3464</td><td class="line"> parent_node = <span class='macro'>FILE_BROWSER_NODE_DIR (parent-&gt;user_data)<span class='macro_popup'>((FileBrowserNodeDir *)(parent-&gt;user_data))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3465"><td class="num" id="LN3465">3465</td><td class="line"> <span class='comment'>/* Translators: This is the default name of new files created by the file browser pane. */</span></td></tr>
+<tr class="codeline" data-linenumber="3466"><td class="num" id="LN3466">3466</td><td class="line"> file = unique_new_name (((FileBrowserNode *) parent_node)-&gt;file, <span class='macro'>_(<span class='string_literal'>"file"</span>)<span class='macro_popup'>((char *) g_dgettext ("pluma", "file"))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3467"><td class="num" id="LN3467">3467</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3468"><td class="num" id="LN3468">3468</td><td class="line"> stream = g_file_create (file, G_FILE_CREATE_NONE, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, &amp;error);</td></tr>
+<tr class="codeline" data-linenumber="3469"><td class="num" id="LN3469">3469</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3470"><td class="num" id="LN3470">3470</td><td class="line"> <span class='keyword'>if</span> (!stream)</td></tr>
+<tr class="codeline" data-linenumber="3471"><td class="num" id="LN3471">3471</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="3472"><td class="num" id="LN3472">3472</td><td class="line"> g_signal_emit (model, model_signals[ERROR], 0,</td></tr>
+<tr class="codeline" data-linenumber="3473"><td class="num" id="LN3473">3473</td><td class="line"> PLUMA_FILE_BROWSER_ERROR_NEW_FILE,</td></tr>
+<tr class="codeline" data-linenumber="3474"><td class="num" id="LN3474">3474</td><td class="line"> error-&gt;message);</td></tr>
+<tr class="codeline" data-linenumber="3475"><td class="num" id="LN3475">3475</td><td class="line"> g_error_free (error);</td></tr>
+<tr class="codeline" data-linenumber="3476"><td class="num" id="LN3476">3476</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="3477"><td class="num" id="LN3477">3477</td><td class="line"> g_object_unref (stream);</td></tr>
+<tr class="codeline" data-linenumber="3478"><td class="num" id="LN3478">3478</td><td class="line"> node = model_add_node_from_file (model,</td></tr>
+<tr class="codeline" data-linenumber="3479"><td class="num" id="LN3479">3479</td><td class="line"> (FileBrowserNode *)parent_node,</td></tr>
+<tr class="codeline" data-linenumber="3480"><td class="num" id="LN3480">3480</td><td class="line"> file,</td></tr>
+<tr class="codeline" data-linenumber="3481"><td class="num" id="LN3481">3481</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3482"><td class="num" id="LN3482">3482</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3483"><td class="num" id="LN3483">3483</td><td class="line"> <span class='keyword'>if</span> (model_node_visibility (model, node)) {</td></tr>
+<tr class="codeline" data-linenumber="3484"><td class="num" id="LN3484">3484</td><td class="line"> iter-&gt;user_data = node;</td></tr>
+<tr class="codeline" data-linenumber="3485"><td class="num" id="LN3485">3485</td><td class="line"> result = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3486"><td class="num" id="LN3486">3486</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="3487"><td class="num" id="LN3487">3487</td><td class="line"> g_signal_emit (model, model_signals[ERROR], 0,</td></tr>
+<tr class="codeline" data-linenumber="3488"><td class="num" id="LN3488">3488</td><td class="line"> PLUMA_FILE_BROWSER_ERROR_NEW_FILE,</td></tr>
+<tr class="codeline" data-linenumber="3489"><td class="num" id="LN3489">3489</td><td class="line"> <span class='macro'>_<span class='macro_popup'>((char *) g_dgettext ("pluma", "The new file is currently filtered out. You need to adjust your filter settings to make the file visible"<br>))</span></span></td></tr>
+<tr class="codeline" data-linenumber="3490"><td class="num" id="LN3490">3490</td><td class="line"> <span class='macro'>(<span class='string_literal'>"The new file is currently filtered out. You need to adjust your filter settings to make the file visible"</span>)<span class='macro_popup'>((char *) g_dgettext ("pluma", "The new file is currently filtered out. You need to adjust your filter settings to make the file visible"<br>))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3491"><td class="num" id="LN3491">3491</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3492"><td class="num" id="LN3492">3492</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3493"><td class="num" id="LN3493">3493</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3494"><td class="num" id="LN3494">3494</td><td class="line"> g_object_unref (file);</td></tr>
+<tr class="codeline" data-linenumber="3495"><td class="num" id="LN3495">3495</td><td class="line"> <span class='keyword'>return</span> result;</td></tr>
+<tr class="codeline" data-linenumber="3496"><td class="num" id="LN3496">3496</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3497"><td class="num" id="LN3497">3497</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3498"><td class="num" id="LN3498">3498</td><td class="line">gboolean</td></tr>
+<tr class="codeline" data-linenumber="3499"><td class="num" id="LN3499">3499</td><td class="line">pluma_file_browser_store_new_directory (PlumaFileBrowserStore * model,</td></tr>
+<tr class="codeline" data-linenumber="3500"><td class="num" id="LN3500">3500</td><td class="line"> GtkTreeIter * parent,</td></tr>
+<tr class="codeline" data-linenumber="3501"><td class="num" id="LN3501">3501</td><td class="line"> GtkTreeIter * iter)</td></tr>
+<tr class="codeline" data-linenumber="3502"><td class="num" id="LN3502">3502</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3503"><td class="num" id="LN3503">3503</td><td class="line"> GFile * file;</td></tr>
+<tr class="codeline" data-linenumber="3504"><td class="num" id="LN3504">3504</td><td class="line"> FileBrowserNodeDir *parent_node;</td></tr>
+<tr class="codeline" data-linenumber="3505"><td class="num" id="LN3505">3505</td><td class="line"> GError * error = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3506"><td class="num" id="LN3506">3506</td><td class="line"> FileBrowserNode *node;</td></tr>
+<tr class="codeline" data-linenumber="3507"><td class="num" id="LN3507">3507</td><td class="line"> gboolean result = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3508"><td class="num" id="LN3508">3508</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3509"><td class="num" id="LN3509">3509</td><td class="line"> <span class='macro'>g_return_val_if_fail (PLUMA_IS_FILE_BROWSER_STORE (model), FALSE)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_269<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((model)); GType __t = ((pluma_file_browser_store_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_269 = 1; else _g_boolean_var_269 =<br> 0; _g_boolean_var_269; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "PLUMA_IS_FILE_BROWSER_STORE (model)"<br>); return ((0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3510"><td class="num" id="LN3510">3510</td><td class="line"> <span class='macro'>g_return_val_if_fail (parent != NULL, FALSE)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_270<br>; if (parent != ((void*)0)) _g_boolean_var_270 = 1; else _g_boolean_var_270<br> = 0; _g_boolean_var_270; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "parent != NULL")<br>; return ((0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3511"><td class="num" id="LN3511">3511</td><td class="line"> <span class='macro'>g_return_val_if_fail (parent-&gt;user_data != NULL, FALSE)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_271<br>; if (parent-&gt;user_data != ((void*)0)) _g_boolean_var_271 =<br> 1; else _g_boolean_var_271 = 0; _g_boolean_var_271; }), 1)))<br> { } else { g_return_if_fail_warning (((gchar*) 0), ((const char<br>*) (__func__)), "parent-&gt;user_data != NULL"); return ((0))<br>; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3512"><td class="num" id="LN3512">3512</td><td class="line"> <span class='macro'>g_return_val_if_fail (NODE_IS_DIR<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_272<br>; if (((((FileBrowserNode *) (parent-&gt;user_data))-&gt;flags<br> &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_DIRECTORY))) _g_boolean_var_272<br> = 1; else _g_boolean_var_272 = 0; _g_boolean_var_272; }), 1)<br>)) { } else { g_return_if_fail_warning (((gchar*) 0), ((const<br> char*) (__func__)), "NODE_IS_DIR ((FileBrowserNode *) (parent-&gt;user_data))"<br>); return ((0)); } } while (0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="3513"><td class="num" id="LN3513">3513</td><td class="line"> <span class='macro'>((FileBrowserNode *) (parent-&gt;user_data)),<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_272<br>; if (((((FileBrowserNode *) (parent-&gt;user_data))-&gt;flags<br> &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_DIRECTORY))) _g_boolean_var_272<br> = 1; else _g_boolean_var_272 = 0; _g_boolean_var_272; }), 1)<br>)) { } else { g_return_if_fail_warning (((gchar*) 0), ((const<br> char*) (__func__)), "NODE_IS_DIR ((FileBrowserNode *) (parent-&gt;user_data))"<br>); return ((0)); } } while (0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="3514"><td class="num" id="LN3514">3514</td><td class="line"> <span class='macro'>FALSE)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_272<br>; if (((((FileBrowserNode *) (parent-&gt;user_data))-&gt;flags<br> &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_DIRECTORY))) _g_boolean_var_272<br> = 1; else _g_boolean_var_272 = 0; _g_boolean_var_272; }), 1)<br>)) { } else { g_return_if_fail_warning (((gchar*) 0), ((const<br> char*) (__func__)), "NODE_IS_DIR ((FileBrowserNode *) (parent-&gt;user_data))"<br>); return ((0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3515"><td class="num" id="LN3515">3515</td><td class="line"> <span class='macro'>g_return_val_if_fail (iter != NULL, FALSE)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_273<br>; if (iter != ((void*)0)) _g_boolean_var_273 = 1; else _g_boolean_var_273<br> = 0; _g_boolean_var_273; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "iter != NULL"); return<br> ((0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3516"><td class="num" id="LN3516">3516</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3517"><td class="num" id="LN3517">3517</td><td class="line"> parent_node = <span class='macro'>FILE_BROWSER_NODE_DIR (parent-&gt;user_data)<span class='macro_popup'>((FileBrowserNodeDir *)(parent-&gt;user_data))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3518"><td class="num" id="LN3518">3518</td><td class="line"> <span class='comment'>/* Translators: This is the default name of new directories created by the file browser pane. */</span></td></tr>
+<tr class="codeline" data-linenumber="3519"><td class="num" id="LN3519">3519</td><td class="line"> file = unique_new_name (((FileBrowserNode *) parent_node)-&gt;file, <span class='macro'>_(<span class='string_literal'>"directory"</span>)<span class='macro_popup'>((char *) g_dgettext ("pluma", "directory"))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3520"><td class="num" id="LN3520">3520</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3521"><td class="num" id="LN3521">3521</td><td class="line"> <span class='keyword'>if</span> (!g_file_make_directory (file, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, &amp;error)) {</td></tr>
+<tr class="codeline" data-linenumber="3522"><td class="num" id="LN3522">3522</td><td class="line"> g_signal_emit (model, model_signals[ERROR], 0,</td></tr>
+<tr class="codeline" data-linenumber="3523"><td class="num" id="LN3523">3523</td><td class="line"> PLUMA_FILE_BROWSER_ERROR_NEW_DIRECTORY,</td></tr>
+<tr class="codeline" data-linenumber="3524"><td class="num" id="LN3524">3524</td><td class="line"> error-&gt;message);</td></tr>
+<tr class="codeline" data-linenumber="3525"><td class="num" id="LN3525">3525</td><td class="line"> g_error_free (error);</td></tr>
+<tr class="codeline" data-linenumber="3526"><td class="num" id="LN3526">3526</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="3527"><td class="num" id="LN3527">3527</td><td class="line"> node = model_add_node_from_file (model,</td></tr>
+<tr class="codeline" data-linenumber="3528"><td class="num" id="LN3528">3528</td><td class="line"> (FileBrowserNode *)parent_node,</td></tr>
+<tr class="codeline" data-linenumber="3529"><td class="num" id="LN3529">3529</td><td class="line"> file,</td></tr>
+<tr class="codeline" data-linenumber="3530"><td class="num" id="LN3530">3530</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3531"><td class="num" id="LN3531">3531</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3532"><td class="num" id="LN3532">3532</td><td class="line"> <span class='keyword'>if</span> (model_node_visibility (model, node)) {</td></tr>
+<tr class="codeline" data-linenumber="3533"><td class="num" id="LN3533">3533</td><td class="line"> iter-&gt;user_data = node;</td></tr>
+<tr class="codeline" data-linenumber="3534"><td class="num" id="LN3534">3534</td><td class="line"> result = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3535"><td class="num" id="LN3535">3535</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="3536"><td class="num" id="LN3536">3536</td><td class="line"> g_signal_emit (model, model_signals[ERROR], 0,</td></tr>
+<tr class="codeline" data-linenumber="3537"><td class="num" id="LN3537">3537</td><td class="line"> PLUMA_FILE_BROWSER_ERROR_NEW_FILE,</td></tr>
+<tr class="codeline" data-linenumber="3538"><td class="num" id="LN3538">3538</td><td class="line"> <span class='macro'>_<span class='macro_popup'>((char *) g_dgettext ("pluma", "The new directory is currently filtered out. You need to adjust your filter settings to make the directory visible"<br>))</span></span></td></tr>
+<tr class="codeline" data-linenumber="3539"><td class="num" id="LN3539">3539</td><td class="line"> <span class='macro'>(<span class='string_literal'>"The new directory is currently filtered out. You need to adjust your filter settings to make the directory visible"</span>)<span class='macro_popup'>((char *) g_dgettext ("pluma", "The new directory is currently filtered out. You need to adjust your filter settings to make the directory visible"<br>))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3540"><td class="num" id="LN3540">3540</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3541"><td class="num" id="LN3541">3541</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3542"><td class="num" id="LN3542">3542</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3543"><td class="num" id="LN3543">3543</td><td class="line"> g_object_unref (file);</td></tr>
+<tr class="codeline" data-linenumber="3544"><td class="num" id="LN3544">3544</td><td class="line"> <span class='keyword'>return</span> result;</td></tr>
+<tr class="codeline" data-linenumber="3545"><td class="num" id="LN3545">3545</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3546"><td class="num" id="LN3546">3546</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3547"><td class="num" id="LN3547">3547</td><td class="line"><span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="3548"><td class="num" id="LN3548">3548</td><td class="line">_pluma_file_browser_store_register_type (GTypeModule *type_module)</td></tr>
+<tr class="codeline" data-linenumber="3549"><td class="num" id="LN3549">3549</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3550"><td class="num" id="LN3550">3550</td><td class="line"> pluma_file_browser_store_register_type (type_module);</td></tr>
+<tr class="codeline" data-linenumber="3551"><td class="num" id="LN3551">3551</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3552"><td class="num" id="LN3552">3552</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3553"><td class="num" id="LN3553">3553</td><td class="line"><span class='comment'>// ex:ts=8:noet:</span></td></tr>
+</table></body></html>
diff --git a/2023-05-28-030536-6612-1@f643dde74cbd_master/report-7b3428.html b/2023-05-28-030536-6612-1@f643dde74cbd_master/report-7b3428.html
new file mode 100644
index 00000000..f9e203d3
--- /dev/null
+++ b/2023-05-28-030536-6612-1@f643dde74cbd_master/report-7b3428.html
@@ -0,0 +1,4233 @@
+<!doctype html>
+<html>
+<head>
+<title>pluma-file-browser-store.c</title>
+
+<style type="text/css">
+body { color:#000000; background-color:#ffffff }
+body { font-family:Helvetica, sans-serif; font-size:10pt }
+h1 { font-size:14pt }
+.FileName { margin-top: 5px; margin-bottom: 5px; display: inline; }
+.FileNav { margin-left: 5px; margin-right: 5px; display: inline; }
+.FileNav a { text-decoration:none; font-size: larger; }
+.divider { margin-top: 30px; margin-bottom: 30px; height: 15px; }
+.divider { background-color: gray; }
+.code { border-collapse:collapse; width:100%; }
+.code { font-family: "Monospace", monospace; font-size:10pt }
+.code { line-height: 1.2em }
+.comment { color: green; font-style: oblique }
+.keyword { color: blue }
+.string_literal { color: red }
+.directive { color: darkmagenta }
+
+/* Macros and variables could have pop-up notes hidden by default.
+ - Macro pop-up: expansion of the macro
+ - Variable pop-up: value (table) of the variable */
+.macro_popup, .variable_popup { display: none; }
+
+/* Pop-up appears on mouse-hover event. */
+.macro:hover .macro_popup, .variable:hover .variable_popup {
+ display: block;
+ padding: 2px;
+ -webkit-border-radius:5px;
+ -webkit-box-shadow:1px 1px 7px #000;
+ border-radius:5px;
+ box-shadow:1px 1px 7px #000;
+ position: absolute;
+ top: -1em;
+ left:10em;
+ z-index: 1
+}
+
+.macro_popup {
+ border: 2px solid red;
+ background-color:#FFF0F0;
+ font-weight: normal;
+}
+
+.variable_popup {
+ border: 2px solid blue;
+ background-color:#F0F0FF;
+ font-weight: bold;
+ font-family: Helvetica, sans-serif;
+ font-size: 9pt;
+}
+
+/* Pop-up notes needs a relative position as a base where they pops up. */
+.macro, .variable {
+ background-color: PaleGoldenRod;
+ position: relative;
+}
+.macro { color: DarkMagenta; }
+
+#tooltiphint {
+ position: fixed;
+ width: 50em;
+ margin-left: -25em;
+ left: 50%;
+ padding: 10px;
+ border: 1px solid #b0b0b0;
+ border-radius: 2px;
+ box-shadow: 1px 1px 7px black;
+ background-color: #c0c0c0;
+ z-index: 2;
+}
+
+.num { width:2.5em; padding-right:2ex; background-color:#eeeeee }
+.num { text-align:right; font-size:8pt }
+.num { color:#444444 }
+.line { padding-left: 1ex; border-left: 3px solid #ccc }
+.line { white-space: pre }
+.msg { -webkit-box-shadow:1px 1px 7px #000 }
+.msg { box-shadow:1px 1px 7px #000 }
+.msg { -webkit-border-radius:5px }
+.msg { border-radius:5px }
+.msg { font-family:Helvetica, sans-serif; font-size:8pt }
+.msg { float:left }
+.msg { position:relative }
+.msg { padding:0.25em 1ex 0.25em 1ex }
+.msg { margin-top:10px; margin-bottom:10px }
+.msg { font-weight:bold }
+.msg { max-width:60em; word-wrap: break-word; white-space: pre-wrap }
+.msgT { padding:0x; spacing:0x }
+.msgEvent { background-color:#fff8b4; color:#000000 }
+.msgControl { background-color:#bbbbbb; color:#000000 }
+.msgNote { background-color:#ddeeff; color:#000000 }
+.mrange { background-color:#dfddf3 }
+.mrange { border-bottom:1px solid #6F9DBE }
+.PathIndex { font-weight: bold; padding:0px 5px; margin-right:5px; }
+.PathIndex { -webkit-border-radius:8px }
+.PathIndex { border-radius:8px }
+.PathIndexEvent { background-color:#bfba87 }
+.PathIndexControl { background-color:#8c8c8c }
+.PathIndexPopUp { background-color: #879abc; }
+.PathNav a { text-decoration:none; font-size: larger }
+.CodeInsertionHint { font-weight: bold; background-color: #10dd10 }
+.CodeRemovalHint { background-color:#de1010 }
+.CodeRemovalHint { border-bottom:1px solid #6F9DBE }
+.msg.selected{ background-color:orange !important; }
+
+table.simpletable {
+ padding: 5px;
+ font-size:12pt;
+ margin:20px;
+ border-collapse: collapse; border-spacing: 0px;
+}
+td.rowname {
+ text-align: right;
+ vertical-align: top;
+ font-weight: bold;
+ color:#444444;
+ padding-right:2ex;
+}
+
+/* Hidden text. */
+input.spoilerhider + label {
+ cursor: pointer;
+ text-decoration: underline;
+ display: block;
+}
+input.spoilerhider {
+ display: none;
+}
+input.spoilerhider ~ .spoiler {
+ overflow: hidden;
+ margin: 10px auto 0;
+ height: 0;
+ opacity: 0;
+}
+input.spoilerhider:checked + label + .spoiler{
+ height: auto;
+ opacity: 1;
+}
+</style>
+</head>
+<body>
+<!-- BUGDESC Although the value stored to 'node' is used in the enclosing expression, the value is never actually read from 'node' -->
+
+<!-- BUGTYPE Dead nested assignment -->
+
+<!-- BUGCATEGORY Unused code -->
+
+<!-- BUGFILE /rootdir/plugins/filebrowser/pluma-file-browser-store.c -->
+
+<!-- FILENAME pluma-file-browser-store.c -->
+
+<!-- FUNCTIONNAME model_add_nodes_from_files -->
+
+<!-- ISSUEHASHCONTENTOFLINEINCONTEXT 7b3428bd0cc65757974a0fc4afa90a9d -->
+
+<!-- BUGLINE 2059 -->
+
+<!-- BUGCOLUMN 8 -->
+
+<!-- BUGPATHLENGTH 1 -->
+
+<!-- BUGMETAEND -->
+<!-- REPORTHEADER -->
+<h3>Bug Summary</h3>
+<table class="simpletable">
+<tr><td class="rowname">File:</td><td>plugins/filebrowser/pluma-file-browser-store.c</td></tr>
+<tr><td class="rowname">Warning:</td><td><a href="#EndPath">line 2059, column 8</a><br />Although the value stored to 'node' is used in the enclosing expression, the value is never actually read from 'node'</td></tr>
+
+</table>
+<!-- REPORTSUMMARYEXTRA -->
+<h3>Annotated Source Code</h3>
+<p>Press <a href="#" onclick="toggleHelp(); return false;">'?'</a>
+ to see keyboard shortcuts</p>
+<input type="checkbox" class="spoilerhider" id="showinvocation" />
+<label for="showinvocation" >Show analyzer invocation</label>
+<div class="spoiler">clang -cc1 -cc1 -triple x86_64-redhat-linux-gnu -analyze -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name pluma-file-browser-store.c -analyzer-checker=core -analyzer-checker=apiModeling -analyzer-checker=unix -analyzer-checker=deadcode -analyzer-checker=security.insecureAPI.UncheckedReturn -analyzer-checker=security.insecureAPI.getpw -analyzer-checker=security.insecureAPI.gets -analyzer-checker=security.insecureAPI.mktemp -analyzer-checker=security.insecureAPI.mkstemp -analyzer-checker=security.insecureAPI.vfork -analyzer-checker=nullability.NullPassedToNonnull -analyzer-checker=nullability.NullReturnedFromNonnull -analyzer-output plist -w -setup-static-analyzer -mrelocation-model pic -pic-level 2 -fhalf-no-semantic-interposition -mframe-pointer=none -fmath-errno -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=2 -target-cpu x86-64 -tune-cpu generic -debugger-tuning=gdb -fcoverage-compilation-dir=/rootdir/plugins/filebrowser -resource-dir /usr/lib64/clang/16 -D HAVE_CONFIG_H -I . -I ../.. -I ../.. -I /usr/include/libxml2 -I /usr/include/glib-2.0 -I /usr/lib64/glib-2.0/include -I /usr/include/sysprof-4 -I /usr/include/libmount -I /usr/include/blkid -I /usr/include/gtk-3.0 -I /usr/include/pango-1.0 -I /usr/include/harfbuzz -I /usr/include/freetype2 -I /usr/include/libpng16 -I /usr/include/fribidi -I /usr/include/cairo -I /usr/include/pixman-1 -I /usr/include/gdk-pixbuf-2.0 -I /usr/include/gio-unix-2.0 -I /usr/include/cloudproviders -I /usr/include/atk-1.0 -I /usr/include/at-spi2-atk/2.0 -I /usr/include/at-spi-2.0 -I /usr/include/dbus-1.0 -I /usr/lib64/dbus-1.0/include -I /usr/include/gtksourceview-4 -I /usr/include/libpeas-1.0 -I /usr/include/gobject-introspection-1.0 -D PIC -internal-isystem /usr/lib64/clang/16/include -internal-isystem /usr/local/include -internal-isystem /usr/bin/../lib/gcc/x86_64-redhat-linux/13/../../../../x86_64-redhat-linux/include -internal-externc-isystem /include -internal-externc-isystem /usr/include -O2 -Wno-unused-parameter -fdebug-compilation-dir=/rootdir/plugins/filebrowser -ferror-limit 19 -fgnuc-version=4.2.1 -vectorize-loops -vectorize-slp -analyzer-checker deadcode.DeadStores -analyzer-checker alpha.deadcode.UnreachableCode -analyzer-checker alpha.core.CastSize -analyzer-checker alpha.core.CastToStruct -analyzer-checker alpha.core.IdenticalExpr -analyzer-checker alpha.core.SizeofPtr -analyzer-checker alpha.security.ArrayBoundV2 -analyzer-checker alpha.security.MallocOverflow -analyzer-checker alpha.security.ReturnPtrRange -analyzer-checker alpha.unix.SimpleStream -analyzer-checker alpha.unix.cstring.BufferOverlap -analyzer-checker alpha.unix.cstring.NotNullTerminated -analyzer-checker alpha.unix.cstring.OutOfBounds -analyzer-checker alpha.core.FixedAddr -analyzer-checker security.insecureAPI.strcpy -analyzer-output=html -faddrsig -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o /rootdir/html-report/2023-05-28-030536-6612-1 -x c pluma-file-browser-store.c
+</div>
+<div id='tooltiphint' hidden="true">
+ <p>Keyboard shortcuts: </p>
+ <ul>
+ <li>Use 'j/k' keys for keyboard navigation</li>
+ <li>Use 'Shift+S' to show/hide relevant lines</li>
+ <li>Use '?' to toggle this window</li>
+ </ul>
+ <a href="#" onclick="toggleHelp(); return false;">Close</a>
+</div>
+<script type='text/javascript'>
+var relevant_lines = {"1": {"2059": 1}};
+
+var filterCounterexample = function (hide) {
+ var tables = document.getElementsByClassName("code");
+ for (var t=0; t<tables.length; t++) {
+ var table = tables[t];
+ var file_id = table.getAttribute("data-fileid");
+ var lines_in_fid = relevant_lines[file_id];
+ if (!lines_in_fid) {
+ lines_in_fid = {};
+ }
+ var lines = table.getElementsByClassName("codeline");
+ for (var i=0; i<lines.length; i++) {
+ var el = lines[i];
+ var lineNo = el.getAttribute("data-linenumber");
+ if (!lines_in_fid[lineNo]) {
+ if (hide) {
+ el.setAttribute("hidden", "");
+ } else {
+ el.removeAttribute("hidden");
+ }
+ }
+ }
+ }
+}
+
+window.addEventListener("keydown", function (event) {
+ if (event.defaultPrevented) {
+ return;
+ }
+ // SHIFT + S
+ if (event.shiftKey && event.keyCode == 83) {
+ var checked = document.getElementsByName("showCounterexample")[0].checked;
+ filterCounterexample(!checked);
+ document.getElementsByName("showCounterexample")[0].click();
+ } else {
+ return;
+ }
+ event.preventDefault();
+}, true);
+
+document.addEventListener("DOMContentLoaded", function() {
+ document.querySelector('input[name="showCounterexample"]').onchange=
+ function (event) {
+ filterCounterexample(this.checked);
+ };
+});
+</script>
+
+<form>
+ <input type="checkbox" name="showCounterexample" id="showCounterexample" />
+ <label for="showCounterexample">
+ Show only relevant lines
+ </label>
+ <input type="checkbox" name="showArrows"
+ id="showArrows" style="margin-left: 10px" />
+ <label for="showArrows">
+ Show control flow arrows
+ </label>
+</form>
+
+<script type='text/javascript'>
+// Return range of numbers from a range [lower, upper).
+function range(lower, upper) {
+ var array = [];
+ for (var i = lower; i <= upper; ++i) {
+ array.push(i);
+ }
+ return array;
+}
+
+var getRelatedArrowIndices = function(pathId) {
+ // HTML numeration of events is a bit different than it is in the path.
+ // Everything is rotated one step to the right, so the last element
+ // (error diagnostic) has index 0.
+ if (pathId == 0) {
+ // arrowIndices has at least 2 elements
+ pathId = arrowIndices.length - 1;
+ }
+
+ return range(arrowIndices[pathId], arrowIndices[pathId - 1]);
+}
+
+var highlightArrowsForSelectedEvent = function() {
+ const selectedNum = findNum();
+ const arrowIndicesToHighlight = getRelatedArrowIndices(selectedNum);
+ arrowIndicesToHighlight.forEach((index) => {
+ var arrow = document.querySelector("#arrow" + index);
+ if(arrow) {
+ classListAdd(arrow, "selected")
+ }
+ });
+}
+
+var getAbsoluteBoundingRect = function(element) {
+ const relative = element.getBoundingClientRect();
+ return {
+ left: relative.left + window.pageXOffset,
+ right: relative.right + window.pageXOffset,
+ top: relative.top + window.pageYOffset,
+ bottom: relative.bottom + window.pageYOffset,
+ height: relative.height,
+ width: relative.width
+ };
+}
+
+var drawArrow = function(index) {
+ // This function is based on the great answer from SO:
+ // https://stackoverflow.com/a/39575674/11582326
+ var start = document.querySelector("#start" + index);
+ var end = document.querySelector("#end" + index);
+ var arrow = document.querySelector("#arrow" + index);
+
+ var startRect = getAbsoluteBoundingRect(start);
+ var endRect = getAbsoluteBoundingRect(end);
+
+ // It is an arrow from a token to itself, no need to visualize it.
+ if (startRect.top == endRect.top &&
+ startRect.left == endRect.left)
+ return;
+
+ // Each arrow is a very simple Bézier curve, with two nodes and
+ // two handles. So, we need to calculate four points in the window:
+ // * start node
+ var posStart = { x: 0, y: 0 };
+ // * end node
+ var posEnd = { x: 0, y: 0 };
+ // * handle for the start node
+ var startHandle = { x: 0, y: 0 };
+ // * handle for the end node
+ var endHandle = { x: 0, y: 0 };
+ // One can visualize it as follows:
+ //
+ // start handle
+ // /
+ // X"""_.-""""X
+ // .' \
+ // / start node
+ // |
+ // |
+ // | end node
+ // \ /
+ // `->X
+ // X-'
+ // \
+ // end handle
+ //
+ // NOTE: (0, 0) is the top left corner of the window.
+
+ // We have 3 similar, but still different scenarios to cover:
+ //
+ // 1. Two tokens on different lines.
+ // -xxx
+ // /
+ // \
+ // -> xxx
+ // In this situation, we draw arrow on the left curving to the left.
+ // 2. Two tokens on the same line, and the destination is on the right.
+ // ____
+ // / \
+ // / V
+ // xxx xxx
+ // In this situation, we draw arrow above curving upwards.
+ // 3. Two tokens on the same line, and the destination is on the left.
+ // xxx xxx
+ // ^ /
+ // \____/
+ // In this situation, we draw arrow below curving downwards.
+ const onDifferentLines = startRect.top <= endRect.top - 5 ||
+ startRect.top >= endRect.top + 5;
+ const leftToRight = startRect.left < endRect.left;
+
+ // NOTE: various magic constants are chosen empirically for
+ // better positioning and look
+ if (onDifferentLines) {
+ // Case #1
+ const topToBottom = startRect.top < endRect.top;
+ posStart.x = startRect.left - 1;
+ // We don't want to start it at the top left corner of the token,
+ // it doesn't feel like this is where the arrow comes from.
+ // For this reason, we start it in the middle of the left side
+ // of the token.
+ posStart.y = startRect.top + startRect.height / 2;
+
+ // End node has arrow head and we give it a bit more space.
+ posEnd.x = endRect.left - 4;
+ posEnd.y = endRect.top;
+
+ // Utility object with x and y offsets for handles.
+ var curvature = {
+ // We want bottom-to-top arrow to curve a bit more, so it doesn't
+ // overlap much with top-to-bottom curves (much more frequent).
+ x: topToBottom ? 15 : 25,
+ y: Math.min((posEnd.y - posStart.y) / 3, 10)
+ }
+
+ // When destination is on the different line, we can make a
+ // curvier arrow because we have space for it.
+ // So, instead of using
+ //
+ // startHandle.x = posStart.x - curvature.x
+ // endHandle.x = posEnd.x - curvature.x
+ //
+ // We use the leftmost of these two values for both handles.
+ startHandle.x = Math.min(posStart.x, posEnd.x) - curvature.x;
+ endHandle.x = startHandle.x;
+
+ // Curving downwards from the start node...
+ startHandle.y = posStart.y + curvature.y;
+ // ... and upwards from the end node.
+ endHandle.y = posEnd.y - curvature.y;
+
+ } else if (leftToRight) {
+ // Case #2
+ // Starting from the top right corner...
+ posStart.x = startRect.right - 1;
+ posStart.y = startRect.top;
+
+ // ...and ending at the top left corner of the end token.
+ posEnd.x = endRect.left + 1;
+ posEnd.y = endRect.top - 1;
+
+ // Utility object with x and y offsets for handles.
+ var curvature = {
+ x: Math.min((posEnd.x - posStart.x) / 3, 15),
+ y: 5
+ }
+
+ // Curving to the right...
+ startHandle.x = posStart.x + curvature.x;
+ // ... and upwards from the start node.
+ startHandle.y = posStart.y - curvature.y;
+
+ // And to the left...
+ endHandle.x = posEnd.x - curvature.x;
+ // ... and upwards from the end node.
+ endHandle.y = posEnd.y - curvature.y;
+
+ } else {
+ // Case #3
+ // Starting from the bottom right corner...
+ posStart.x = startRect.right;
+ posStart.y = startRect.bottom;
+
+ // ...and ending also at the bottom right corner, but of the end token.
+ posEnd.x = endRect.right - 1;
+ posEnd.y = endRect.bottom + 1;
+
+ // Utility object with x and y offsets for handles.
+ var curvature = {
+ x: Math.min((posStart.x - posEnd.x) / 3, 15),
+ y: 5
+ }
+
+ // Curving to the left...
+ startHandle.x = posStart.x - curvature.x;
+ // ... and downwards from the start node.
+ startHandle.y = posStart.y + curvature.y;
+
+ // And to the right...
+ endHandle.x = posEnd.x + curvature.x;
+ // ... and downwards from the end node.
+ endHandle.y = posEnd.y + curvature.y;
+ }
+
+ // Put it all together into a path.
+ // More information on the format:
+ // https://developer.mozilla.org/en-US/docs/Web/SVG/Tutorial/Paths
+ var pathStr = "M" + posStart.x + "," + posStart.y + " " +
+ "C" + startHandle.x + "," + startHandle.y + " " +
+ endHandle.x + "," + endHandle.y + " " +
+ posEnd.x + "," + posEnd.y;
+
+ arrow.setAttribute("d", pathStr);
+};
+
+var drawArrows = function() {
+ const numOfArrows = document.querySelectorAll("path[id^=arrow]").length;
+ for (var i = 0; i < numOfArrows; ++i) {
+ drawArrow(i);
+ }
+}
+
+var toggleArrows = function(event) {
+ const arrows = document.querySelector("#arrows");
+ if (event.target.checked) {
+ arrows.setAttribute("visibility", "visible");
+ } else {
+ arrows.setAttribute("visibility", "hidden");
+ }
+}
+
+window.addEventListener("resize", drawArrows);
+document.addEventListener("DOMContentLoaded", function() {
+ // Whenever we show invocation, locations change, i.e. we
+ // need to redraw arrows.
+ document
+ .querySelector('input[id="showinvocation"]')
+ .addEventListener("click", drawArrows);
+ // Hiding irrelevant lines also should cause arrow rerender.
+ document
+ .querySelector('input[name="showCounterexample"]')
+ .addEventListener("change", drawArrows);
+ document
+ .querySelector('input[name="showArrows"]')
+ .addEventListener("change", toggleArrows);
+ drawArrows();
+ // Default highlighting for the last event.
+ highlightArrowsForSelectedEvent();
+});
+</script>
+
+<script type='text/javascript'>
+var digitMatcher = new RegExp("[0-9]+");
+
+var querySelectorAllArray = function(selector) {
+ return Array.prototype.slice.call(
+ document.querySelectorAll(selector));
+}
+
+document.addEventListener("DOMContentLoaded", function() {
+ querySelectorAllArray(".PathNav > a").forEach(
+ function(currentValue, currentIndex) {
+ var hrefValue = currentValue.getAttribute("href");
+ currentValue.onclick = function() {
+ scrollTo(document.querySelector(hrefValue));
+ return false;
+ };
+ });
+});
+
+var findNum = function() {
+ var s = document.querySelector(".msg.selected");
+ if (!s || s.id == "EndPath") {
+ return 0;
+ }
+ var out = parseInt(digitMatcher.exec(s.id)[0]);
+ return out;
+};
+
+var classListAdd = function(el, theClass) {
+ if(!el.className.baseVal)
+ el.className += " " + theClass;
+ else
+ el.className.baseVal += " " + theClass;
+};
+
+var classListRemove = function(el, theClass) {
+ var className = (!el.className.baseVal) ?
+ el.className : el.className.baseVal;
+ className = className.replace(" " + theClass, "");
+ if(!el.className.baseVal)
+ el.className = className;
+ else
+ el.className.baseVal = className;
+};
+
+var scrollTo = function(el) {
+ querySelectorAllArray(".selected").forEach(function(s) {
+ classListRemove(s, "selected");
+ });
+ classListAdd(el, "selected");
+ window.scrollBy(0, el.getBoundingClientRect().top -
+ (window.innerHeight / 2));
+ highlightArrowsForSelectedEvent();
+};
+
+var move = function(num, up, numItems) {
+ if (num == 1 && up || num == numItems - 1 && !up) {
+ return 0;
+ } else if (num == 0 && up) {
+ return numItems - 1;
+ } else if (num == 0 && !up) {
+ return 1 % numItems;
+ }
+ return up ? num - 1 : num + 1;
+}
+
+var numToId = function(num) {
+ if (num == 0) {
+ return document.getElementById("EndPath")
+ }
+ return document.getElementById("Path" + num);
+};
+
+var navigateTo = function(up) {
+ var numItems = document.querySelectorAll(
+ ".line > .msgEvent, .line > .msgControl").length;
+ var currentSelected = findNum();
+ var newSelected = move(currentSelected, up, numItems);
+ var newEl = numToId(newSelected, numItems);
+
+ // Scroll element into center.
+ scrollTo(newEl);
+};
+
+window.addEventListener("keydown", function (event) {
+ if (event.defaultPrevented) {
+ return;
+ }
+ // key 'j'
+ if (event.keyCode == 74) {
+ navigateTo(/*up=*/false);
+ // key 'k'
+ } else if (event.keyCode == 75) {
+ navigateTo(/*up=*/true);
+ } else {
+ return;
+ }
+ event.preventDefault();
+}, true);
+</script>
+
+<script type='text/javascript'>
+
+var toggleHelp = function() {
+ var hint = document.querySelector("#tooltiphint");
+ var attributeName = "hidden";
+ if (hint.hasAttribute(attributeName)) {
+ hint.removeAttribute(attributeName);
+ } else {
+ hint.setAttribute("hidden", "true");
+ }
+};
+window.addEventListener("keydown", function (event) {
+ if (event.defaultPrevented) {
+ return;
+ }
+ if (event.key == "?") {
+ toggleHelp();
+ } else {
+ return;
+ }
+ event.preventDefault();
+});
+</script>
+
+<style type="text/css">
+ svg {
+ position:absolute;
+ top:0;
+ left:0;
+ height:100%;
+ width:100%;
+ pointer-events: none;
+ overflow: visible
+ }
+ .arrow {
+ stroke-opacity: 0.2;
+ stroke-width: 1;
+ marker-end: url(#arrowhead);
+ }
+
+ .arrow.selected {
+ stroke-opacity: 0.6;
+ stroke-width: 2;
+ marker-end: url(#arrowheadSelected);
+ }
+
+ .arrowhead {
+ orient: auto;
+ stroke: none;
+ opacity: 0.6;
+ fill: blue;
+ }
+</style>
+<svg xmlns="http://www.w3.org/2000/svg">
+ <defs>
+ <marker id="arrowheadSelected" class="arrowhead" opacity="0.6"
+ viewBox="0 0 10 10" refX="3" refY="5"
+ markerWidth="4" markerHeight="4">
+ <path d="M 0 0 L 10 5 L 0 10 z" />
+ </marker>
+ <marker id="arrowhead" class="arrowhead" opacity="0.2"
+ viewBox="0 0 10 10" refX="3" refY="5"
+ markerWidth="4" markerHeight="4">
+ <path d="M 0 0 L 10 5 L 0 10 z" />
+ </marker>
+ </defs>
+ <g id="arrows" fill="none" stroke="blue" visibility="hidden">
+
+ </g>
+</svg>
+<script type='text/javascript'>
+const arrowIndices = [ 0,0 ]
+</script>
+<table class="code" data-fileid="1">
+<tr class="codeline" data-linenumber="1"><td class="num" id="LN1">1</td><td class="line"><span class='comment'>/*</span></td></tr>
+<tr class="codeline" data-linenumber="2"><td class="num" id="LN2">2</td><td class="line"> <span class='comment'>* pluma-file-browser-store.c - Pluma plugin providing easy file access</span></td></tr>
+<tr class="codeline" data-linenumber="3"><td class="num" id="LN3">3</td><td class="line"> <span class='comment'>* from the sidepanel</span></td></tr>
+<tr class="codeline" data-linenumber="4"><td class="num" id="LN4">4</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="5"><td class="num" id="LN5">5</td><td class="line"> <span class='comment'>* Copyright (C) 2006 - Jesse van den Kieboom &lt;[email protected]&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="6"><td class="num" id="LN6">6</td><td class="line"> <span class='comment'>* Copyright (C) 2012-2021 MATE Developers</span></td></tr>
+<tr class="codeline" data-linenumber="7"><td class="num" id="LN7">7</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="8"><td class="num" id="LN8">8</td><td class="line"> <span class='comment'>* This program is free software; you can redistribute it and/or modify</span></td></tr>
+<tr class="codeline" data-linenumber="9"><td class="num" id="LN9">9</td><td class="line"> <span class='comment'>* it under the terms of the GNU General Public License as published by</span></td></tr>
+<tr class="codeline" data-linenumber="10"><td class="num" id="LN10">10</td><td class="line"> <span class='comment'>* the Free Software Foundation; either version 2, or (at your option)</span></td></tr>
+<tr class="codeline" data-linenumber="11"><td class="num" id="LN11">11</td><td class="line"> <span class='comment'>* any later version.</span></td></tr>
+<tr class="codeline" data-linenumber="12"><td class="num" id="LN12">12</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="13"><td class="num" id="LN13">13</td><td class="line"> <span class='comment'>* This program is distributed in the hope that it will be useful,</span></td></tr>
+<tr class="codeline" data-linenumber="14"><td class="num" id="LN14">14</td><td class="line"> <span class='comment'>* but WITHOUT ANY WARRANTY; without even the implied warranty of</span></td></tr>
+<tr class="codeline" data-linenumber="15"><td class="num" id="LN15">15</td><td class="line"> <span class='comment'>* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></td></tr>
+<tr class="codeline" data-linenumber="16"><td class="num" id="LN16">16</td><td class="line"> <span class='comment'>* GNU General Public License for more details.</span></td></tr>
+<tr class="codeline" data-linenumber="17"><td class="num" id="LN17">17</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="18"><td class="num" id="LN18">18</td><td class="line"> <span class='comment'>* You should have received a copy of the GNU General Public License</span></td></tr>
+<tr class="codeline" data-linenumber="19"><td class="num" id="LN19">19</td><td class="line"> <span class='comment'>* along with this program; if not, write to the Free Software</span></td></tr>
+<tr class="codeline" data-linenumber="20"><td class="num" id="LN20">20</td><td class="line"> <span class='comment'>* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.</span></td></tr>
+<tr class="codeline" data-linenumber="21"><td class="num" id="LN21">21</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="22"><td class="num" id="LN22">22</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="23"><td class="num" id="LN23">23</td><td class="line"><span class='directive'>#ifdef <span class='macro'>HAVE_CONFIG_H<span class='macro_popup'>1</span></span></span></td></tr>
+<tr class="codeline" data-linenumber="24"><td class="num" id="LN24">24</td><td class="line"><span class='directive'>#include &lt;config.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="25"><td class="num" id="LN25">25</td><td class="line"><span class='directive'>#endif</span></td></tr>
+<tr class="codeline" data-linenumber="26"><td class="num" id="LN26">26</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="27"><td class="num" id="LN27">27</td><td class="line"><span class='directive'>#include &lt;string.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="28"><td class="num" id="LN28">28</td><td class="line"><span class='directive'>#include &lt;glib/gi18n-lib.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="29"><td class="num" id="LN29">29</td><td class="line"><span class='directive'>#include &lt;gio/gio.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="30"><td class="num" id="LN30">30</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="31"><td class="num" id="LN31">31</td><td class="line"><span class='directive'>#include "pluma-file-browser-store.h"</span></td></tr>
+<tr class="codeline" data-linenumber="32"><td class="num" id="LN32">32</td><td class="line"><span class='directive'>#include "pluma-file-browser-enum-types.h"</span></td></tr>
+<tr class="codeline" data-linenumber="33"><td class="num" id="LN33">33</td><td class="line"><span class='directive'>#include "pluma-file-browser-error.h"</span></td></tr>
+<tr class="codeline" data-linenumber="34"><td class="num" id="LN34">34</td><td class="line"><span class='directive'>#include "pluma-file-browser-utils.h"</span></td></tr>
+<tr class="codeline" data-linenumber="35"><td class="num" id="LN35">35</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="36"><td class="num" id="LN36">36</td><td class="line"><span class='directive'>#define <span class='macro'>NODE_IS_DIR(node)<span class='macro_popup'>(((node)-&gt;flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_DIRECTORY<br>))</span></span> (<span class='macro'>FILE_IS_DIR((node)-&gt;flags)<span class='macro_popup'>((node)-&gt;flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_DIRECTORY<br>)</span></span>)</span></td></tr>
+<tr class="codeline" data-linenumber="37"><td class="num" id="LN37">37</td><td class="line"><span class='directive'>#define <span class='macro'>NODE_IS_HIDDEN(node)<span class='macro_popup'>(((node)-&gt;flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_HIDDEN<br>))</span></span> (<span class='macro'>FILE_IS_HIDDEN((node)-&gt;flags)<span class='macro_popup'>((node)-&gt;flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_HIDDEN<br>)</span></span>)</span></td></tr>
+<tr class="codeline" data-linenumber="38"><td class="num" id="LN38">38</td><td class="line"><span class='directive'>#define <span class='macro'>NODE_IS_TEXT(node)<span class='macro_popup'>(((node)-&gt;flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_TEXT<br>))</span></span> (<span class='macro'>FILE_IS_TEXT((node)-&gt;flags)<span class='macro_popup'>((node)-&gt;flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_TEXT<br>)</span></span>)</span></td></tr>
+<tr class="codeline" data-linenumber="39"><td class="num" id="LN39">39</td><td class="line"><span class='directive'>#define <span class='macro'>NODE_LOADED(node)<span class='macro_popup'>(((node)-&gt;flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_LOADED<br>))</span></span> (<span class='macro'>FILE_LOADED((node)-&gt;flags)<span class='macro_popup'>((node)-&gt;flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_LOADED)</span></span>)</span></td></tr>
+<tr class="codeline" data-linenumber="40"><td class="num" id="LN40">40</td><td class="line"><span class='directive'>#define <span class='macro'>NODE_IS_FILTERED(node)<span class='macro_popup'>(((node)-&gt;flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_FILTERED<br>))</span></span> (<span class='macro'>FILE_IS_FILTERED((node)-&gt;flags)<span class='macro_popup'>((node)-&gt;flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_FILTERED<br>)</span></span>)</span></td></tr>
+<tr class="codeline" data-linenumber="41"><td class="num" id="LN41">41</td><td class="line"><span class='directive'>#define <span class='macro'>NODE_IS_DUMMY(node)<span class='macro_popup'>(((node)-&gt;flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_DUMMY<br>))</span></span> (<span class='macro'>FILE_IS_DUMMY((node)-&gt;flags)<span class='macro_popup'>((node)-&gt;flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_DUMMY<br>)</span></span>)</span></td></tr>
+<tr class="codeline" data-linenumber="42"><td class="num" id="LN42">42</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="43"><td class="num" id="LN43">43</td><td class="line"><span class='directive'>#define <span class='macro'>FILE_BROWSER_NODE_DIR(node)<span class='macro_popup'>((FileBrowserNodeDir *)(node))</span></span> ((FileBrowserNodeDir *)(node))</span></td></tr>
+<tr class="codeline" data-linenumber="44"><td class="num" id="LN44">44</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="45"><td class="num" id="LN45">45</td><td class="line"><span class='directive'>#define <span class='macro'>DIRECTORY_LOAD_ITEMS_PER_CALLBACK<span class='macro_popup'>100</span></span> 100</span></td></tr>
+<tr class="codeline" data-linenumber="46"><td class="num" id="LN46">46</td><td class="line"><span class='directive'>#define <span class='macro'>STANDARD_ATTRIBUTE_TYPES<span class='macro_popup'>"standard::type" "," "standard::is-hidden" "," "standard::is-backup"<br> "," "standard::name" "," "standard::content-type" "," "standard::icon"</span></span> <span class='macro'>G_FILE_ATTRIBUTE_STANDARD_TYPE<span class='macro_popup'>"standard::type"</span></span> "," \</span></td></tr>
+<tr class="codeline" data-linenumber="47"><td class="num" id="LN47">47</td><td class="line"> <span class='directive'><span class='macro'>G_FILE_ATTRIBUTE_STANDARD_IS_HIDDEN<span class='macro_popup'>"standard::is-hidden"</span></span> "," \</span></td></tr>
+<tr class="codeline" data-linenumber="48"><td class="num" id="LN48">48</td><td class="line"> <span class='directive'><span class='macro'>G_FILE_ATTRIBUTE_STANDARD_IS_BACKUP<span class='macro_popup'>"standard::is-backup"</span></span> "," \</span></td></tr>
+<tr class="codeline" data-linenumber="49"><td class="num" id="LN49">49</td><td class="line"> <span class='directive'><span class='macro'>G_FILE_ATTRIBUTE_STANDARD_NAME<span class='macro_popup'>"standard::name"</span></span> "," \</span></td></tr>
+<tr class="codeline" data-linenumber="50"><td class="num" id="LN50">50</td><td class="line"> <span class='directive'><span class='macro'>G_FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE<span class='macro_popup'>"standard::content-type"</span></span> "," \</span></td></tr>
+<tr class="codeline" data-linenumber="51"><td class="num" id="LN51">51</td><td class="line"> <span class='directive'><span class='macro'>G_FILE_ATTRIBUTE_STANDARD_ICON<span class='macro_popup'>"standard::icon"</span></span></span></td></tr>
+<tr class="codeline" data-linenumber="52"><td class="num" id="LN52">52</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="53"><td class="num" id="LN53">53</td><td class="line"><span class='keyword'>typedef</span> <span class='keyword'>struct</span> _FileBrowserNode FileBrowserNode;</td></tr>
+<tr class="codeline" data-linenumber="54"><td class="num" id="LN54">54</td><td class="line"><span class='keyword'>typedef</span> <span class='keyword'>struct</span> _FileBrowserNodeDir FileBrowserNodeDir;</td></tr>
+<tr class="codeline" data-linenumber="55"><td class="num" id="LN55">55</td><td class="line"><span class='keyword'>typedef</span> <span class='keyword'>struct</span> _AsyncData AsyncData;</td></tr>
+<tr class="codeline" data-linenumber="56"><td class="num" id="LN56">56</td><td class="line"><span class='keyword'>typedef</span> <span class='keyword'>struct</span> _AsyncNode AsyncNode;</td></tr>
+<tr class="codeline" data-linenumber="57"><td class="num" id="LN57">57</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="58"><td class="num" id="LN58">58</td><td class="line"><span class='keyword'>typedef</span> gint (*SortFunc) (FileBrowserNode * node1,</td></tr>
+<tr class="codeline" data-linenumber="59"><td class="num" id="LN59">59</td><td class="line"> FileBrowserNode * node2);</td></tr>
+<tr class="codeline" data-linenumber="60"><td class="num" id="LN60">60</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="61"><td class="num" id="LN61">61</td><td class="line"><span class='keyword'>struct</span> _AsyncData</td></tr>
+<tr class="codeline" data-linenumber="62"><td class="num" id="LN62">62</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="63"><td class="num" id="LN63">63</td><td class="line"> PlumaFileBrowserStore * model;</td></tr>
+<tr class="codeline" data-linenumber="64"><td class="num" id="LN64">64</td><td class="line"> GCancellable * cancellable;</td></tr>
+<tr class="codeline" data-linenumber="65"><td class="num" id="LN65">65</td><td class="line"> gboolean trash;</td></tr>
+<tr class="codeline" data-linenumber="66"><td class="num" id="LN66">66</td><td class="line"> GList * files;</td></tr>
+<tr class="codeline" data-linenumber="67"><td class="num" id="LN67">67</td><td class="line"> GList * iter;</td></tr>
+<tr class="codeline" data-linenumber="68"><td class="num" id="LN68">68</td><td class="line"> gboolean removed;</td></tr>
+<tr class="codeline" data-linenumber="69"><td class="num" id="LN69">69</td><td class="line">};</td></tr>
+<tr class="codeline" data-linenumber="70"><td class="num" id="LN70">70</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="71"><td class="num" id="LN71">71</td><td class="line"><span class='keyword'>struct</span> _AsyncNode</td></tr>
+<tr class="codeline" data-linenumber="72"><td class="num" id="LN72">72</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="73"><td class="num" id="LN73">73</td><td class="line"> FileBrowserNodeDir *dir;</td></tr>
+<tr class="codeline" data-linenumber="74"><td class="num" id="LN74">74</td><td class="line"> GCancellable *cancellable;</td></tr>
+<tr class="codeline" data-linenumber="75"><td class="num" id="LN75">75</td><td class="line"> GSList *original_children;</td></tr>
+<tr class="codeline" data-linenumber="76"><td class="num" id="LN76">76</td><td class="line">};</td></tr>
+<tr class="codeline" data-linenumber="77"><td class="num" id="LN77">77</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="78"><td class="num" id="LN78">78</td><td class="line"><span class='keyword'>typedef</span> <span class='keyword'>struct</span> {</td></tr>
+<tr class="codeline" data-linenumber="79"><td class="num" id="LN79">79</td><td class="line"> PlumaFileBrowserStore * model;</td></tr>
+<tr class="codeline" data-linenumber="80"><td class="num" id="LN80">80</td><td class="line"> gchar * virtual_root;</td></tr>
+<tr class="codeline" data-linenumber="81"><td class="num" id="LN81">81</td><td class="line"> GMountOperation * operation;</td></tr>
+<tr class="codeline" data-linenumber="82"><td class="num" id="LN82">82</td><td class="line"> GCancellable * cancellable;</td></tr>
+<tr class="codeline" data-linenumber="83"><td class="num" id="LN83">83</td><td class="line">} MountInfo;</td></tr>
+<tr class="codeline" data-linenumber="84"><td class="num" id="LN84">84</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="85"><td class="num" id="LN85">85</td><td class="line"><span class='keyword'>struct</span> _FileBrowserNode</td></tr>
+<tr class="codeline" data-linenumber="86"><td class="num" id="LN86">86</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="87"><td class="num" id="LN87">87</td><td class="line"> GFile *file;</td></tr>
+<tr class="codeline" data-linenumber="88"><td class="num" id="LN88">88</td><td class="line"> guint flags;</td></tr>
+<tr class="codeline" data-linenumber="89"><td class="num" id="LN89">89</td><td class="line"> gchar *name;</td></tr>
+<tr class="codeline" data-linenumber="90"><td class="num" id="LN90">90</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="91"><td class="num" id="LN91">91</td><td class="line"> GdkPixbuf *icon;</td></tr>
+<tr class="codeline" data-linenumber="92"><td class="num" id="LN92">92</td><td class="line"> GdkPixbuf *emblem;</td></tr>
+<tr class="codeline" data-linenumber="93"><td class="num" id="LN93">93</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="94"><td class="num" id="LN94">94</td><td class="line"> FileBrowserNode *parent;</td></tr>
+<tr class="codeline" data-linenumber="95"><td class="num" id="LN95">95</td><td class="line"> gint pos;</td></tr>
+<tr class="codeline" data-linenumber="96"><td class="num" id="LN96">96</td><td class="line"> gboolean inserted;</td></tr>
+<tr class="codeline" data-linenumber="97"><td class="num" id="LN97">97</td><td class="line">};</td></tr>
+<tr class="codeline" data-linenumber="98"><td class="num" id="LN98">98</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="99"><td class="num" id="LN99">99</td><td class="line"><span class='keyword'>struct</span> _FileBrowserNodeDir</td></tr>
+<tr class="codeline" data-linenumber="100"><td class="num" id="LN100">100</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="101"><td class="num" id="LN101">101</td><td class="line"> FileBrowserNode node;</td></tr>
+<tr class="codeline" data-linenumber="102"><td class="num" id="LN102">102</td><td class="line"> GSList *children;</td></tr>
+<tr class="codeline" data-linenumber="103"><td class="num" id="LN103">103</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="104"><td class="num" id="LN104">104</td><td class="line"> GCancellable *cancellable;</td></tr>
+<tr class="codeline" data-linenumber="105"><td class="num" id="LN105">105</td><td class="line"> GFileMonitor *monitor;</td></tr>
+<tr class="codeline" data-linenumber="106"><td class="num" id="LN106">106</td><td class="line"> PlumaFileBrowserStore *model;</td></tr>
+<tr class="codeline" data-linenumber="107"><td class="num" id="LN107">107</td><td class="line">};</td></tr>
+<tr class="codeline" data-linenumber="108"><td class="num" id="LN108">108</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="109"><td class="num" id="LN109">109</td><td class="line"><span class='keyword'>struct</span> _PlumaFileBrowserStorePrivate</td></tr>
+<tr class="codeline" data-linenumber="110"><td class="num" id="LN110">110</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="111"><td class="num" id="LN111">111</td><td class="line"> FileBrowserNode *root;</td></tr>
+<tr class="codeline" data-linenumber="112"><td class="num" id="LN112">112</td><td class="line"> FileBrowserNode *virtual_root;</td></tr>
+<tr class="codeline" data-linenumber="113"><td class="num" id="LN113">113</td><td class="line"> GType column_types[PLUMA_FILE_BROWSER_STORE_COLUMN_NUM];</td></tr>
+<tr class="codeline" data-linenumber="114"><td class="num" id="LN114">114</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="115"><td class="num" id="LN115">115</td><td class="line"> PlumaFileBrowserStoreFilterMode filter_mode;</td></tr>
+<tr class="codeline" data-linenumber="116"><td class="num" id="LN116">116</td><td class="line"> PlumaFileBrowserStoreFilterFunc filter_func;</td></tr>
+<tr class="codeline" data-linenumber="117"><td class="num" id="LN117">117</td><td class="line"> gpointer filter_user_data;</td></tr>
+<tr class="codeline" data-linenumber="118"><td class="num" id="LN118">118</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="119"><td class="num" id="LN119">119</td><td class="line"> SortFunc sort_func;</td></tr>
+<tr class="codeline" data-linenumber="120"><td class="num" id="LN120">120</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="121"><td class="num" id="LN121">121</td><td class="line"> GSList *async_handles;</td></tr>
+<tr class="codeline" data-linenumber="122"><td class="num" id="LN122">122</td><td class="line"> MountInfo *mount_info;</td></tr>
+<tr class="codeline" data-linenumber="123"><td class="num" id="LN123">123</td><td class="line">};</td></tr>
+<tr class="codeline" data-linenumber="124"><td class="num" id="LN124">124</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="125"><td class="num" id="LN125">125</td><td class="line"><span class='keyword'>static</span> FileBrowserNode *model_find_node (PlumaFileBrowserStore *model,</td></tr>
+<tr class="codeline" data-linenumber="126"><td class="num" id="LN126">126</td><td class="line"> FileBrowserNode *node,</td></tr>
+<tr class="codeline" data-linenumber="127"><td class="num" id="LN127">127</td><td class="line"> GFile *uri);</td></tr>
+<tr class="codeline" data-linenumber="128"><td class="num" id="LN128">128</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span> model_remove_node (PlumaFileBrowserStore * model,</td></tr>
+<tr class="codeline" data-linenumber="129"><td class="num" id="LN129">129</td><td class="line"> FileBrowserNode * node,</td></tr>
+<tr class="codeline" data-linenumber="130"><td class="num" id="LN130">130</td><td class="line"> GtkTreePath * path,</td></tr>
+<tr class="codeline" data-linenumber="131"><td class="num" id="LN131">131</td><td class="line"> gboolean free_nodes);</td></tr>
+<tr class="codeline" data-linenumber="132"><td class="num" id="LN132">132</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="133"><td class="num" id="LN133">133</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span> set_virtual_root_from_node (PlumaFileBrowserStore * model,</td></tr>
+<tr class="codeline" data-linenumber="134"><td class="num" id="LN134">134</td><td class="line"> FileBrowserNode * node);</td></tr>
+<tr class="codeline" data-linenumber="135"><td class="num" id="LN135">135</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="136"><td class="num" id="LN136">136</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span> pluma_file_browser_store_iface_init (GtkTreeModelIface * iface);</td></tr>
+<tr class="codeline" data-linenumber="137"><td class="num" id="LN137">137</td><td class="line"><span class='keyword'>static</span> GtkTreeModelFlags pluma_file_browser_store_get_flags (GtkTreeModel * tree_model);</td></tr>
+<tr class="codeline" data-linenumber="138"><td class="num" id="LN138">138</td><td class="line"><span class='keyword'>static</span> gint pluma_file_browser_store_get_n_columns (GtkTreeModel * tree_model);</td></tr>
+<tr class="codeline" data-linenumber="139"><td class="num" id="LN139">139</td><td class="line"><span class='keyword'>static</span> GType pluma_file_browser_store_get_column_type (GtkTreeModel * tree_model,</td></tr>
+<tr class="codeline" data-linenumber="140"><td class="num" id="LN140">140</td><td class="line"> gint index);</td></tr>
+<tr class="codeline" data-linenumber="141"><td class="num" id="LN141">141</td><td class="line"><span class='keyword'>static</span> gboolean pluma_file_browser_store_get_iter (GtkTreeModel * tree_model,</td></tr>
+<tr class="codeline" data-linenumber="142"><td class="num" id="LN142">142</td><td class="line"> GtkTreeIter * iter,</td></tr>
+<tr class="codeline" data-linenumber="143"><td class="num" id="LN143">143</td><td class="line"> GtkTreePath * path);</td></tr>
+<tr class="codeline" data-linenumber="144"><td class="num" id="LN144">144</td><td class="line"><span class='keyword'>static</span> GtkTreePath *pluma_file_browser_store_get_path (GtkTreeModel * tree_model,</td></tr>
+<tr class="codeline" data-linenumber="145"><td class="num" id="LN145">145</td><td class="line"> GtkTreeIter * iter);</td></tr>
+<tr class="codeline" data-linenumber="146"><td class="num" id="LN146">146</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span> pluma_file_browser_store_get_value (GtkTreeModel * tree_model,</td></tr>
+<tr class="codeline" data-linenumber="147"><td class="num" id="LN147">147</td><td class="line"> GtkTreeIter * iter,</td></tr>
+<tr class="codeline" data-linenumber="148"><td class="num" id="LN148">148</td><td class="line"> gint column,</td></tr>
+<tr class="codeline" data-linenumber="149"><td class="num" id="LN149">149</td><td class="line"> GValue * value);</td></tr>
+<tr class="codeline" data-linenumber="150"><td class="num" id="LN150">150</td><td class="line"><span class='keyword'>static</span> gboolean pluma_file_browser_store_iter_next (GtkTreeModel * tree_model,</td></tr>
+<tr class="codeline" data-linenumber="151"><td class="num" id="LN151">151</td><td class="line"> GtkTreeIter * iter);</td></tr>
+<tr class="codeline" data-linenumber="152"><td class="num" id="LN152">152</td><td class="line"><span class='keyword'>static</span> gboolean pluma_file_browser_store_iter_children (GtkTreeModel * tree_model,</td></tr>
+<tr class="codeline" data-linenumber="153"><td class="num" id="LN153">153</td><td class="line"> GtkTreeIter * iter,</td></tr>
+<tr class="codeline" data-linenumber="154"><td class="num" id="LN154">154</td><td class="line"> GtkTreeIter * parent);</td></tr>
+<tr class="codeline" data-linenumber="155"><td class="num" id="LN155">155</td><td class="line"><span class='keyword'>static</span> gboolean pluma_file_browser_store_iter_has_child (GtkTreeModel * tree_model,</td></tr>
+<tr class="codeline" data-linenumber="156"><td class="num" id="LN156">156</td><td class="line"> GtkTreeIter * iter);</td></tr>
+<tr class="codeline" data-linenumber="157"><td class="num" id="LN157">157</td><td class="line"><span class='keyword'>static</span> gint pluma_file_browser_store_iter_n_children (GtkTreeModel * tree_model,</td></tr>
+<tr class="codeline" data-linenumber="158"><td class="num" id="LN158">158</td><td class="line"> GtkTreeIter * iter);</td></tr>
+<tr class="codeline" data-linenumber="159"><td class="num" id="LN159">159</td><td class="line"><span class='keyword'>static</span> gboolean pluma_file_browser_store_iter_nth_child (GtkTreeModel * tree_model,</td></tr>
+<tr class="codeline" data-linenumber="160"><td class="num" id="LN160">160</td><td class="line"> GtkTreeIter * iter,</td></tr>
+<tr class="codeline" data-linenumber="161"><td class="num" id="LN161">161</td><td class="line"> GtkTreeIter * parent,</td></tr>
+<tr class="codeline" data-linenumber="162"><td class="num" id="LN162">162</td><td class="line"> gint n);</td></tr>
+<tr class="codeline" data-linenumber="163"><td class="num" id="LN163">163</td><td class="line"><span class='keyword'>static</span> gboolean pluma_file_browser_store_iter_parent (GtkTreeModel * tree_model,</td></tr>
+<tr class="codeline" data-linenumber="164"><td class="num" id="LN164">164</td><td class="line"> GtkTreeIter * iter,</td></tr>
+<tr class="codeline" data-linenumber="165"><td class="num" id="LN165">165</td><td class="line"> GtkTreeIter * child);</td></tr>
+<tr class="codeline" data-linenumber="166"><td class="num" id="LN166">166</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span> pluma_file_browser_store_row_inserted (GtkTreeModel * tree_model,</td></tr>
+<tr class="codeline" data-linenumber="167"><td class="num" id="LN167">167</td><td class="line"> GtkTreePath * path,</td></tr>
+<tr class="codeline" data-linenumber="168"><td class="num" id="LN168">168</td><td class="line"> GtkTreeIter * iter);</td></tr>
+<tr class="codeline" data-linenumber="169"><td class="num" id="LN169">169</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="170"><td class="num" id="LN170">170</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span> pluma_file_browser_store_drag_source_init (GtkTreeDragSourceIface * iface);</td></tr>
+<tr class="codeline" data-linenumber="171"><td class="num" id="LN171">171</td><td class="line"><span class='keyword'>static</span> gboolean pluma_file_browser_store_row_draggable (GtkTreeDragSource * drag_source,</td></tr>
+<tr class="codeline" data-linenumber="172"><td class="num" id="LN172">172</td><td class="line"> GtkTreePath * path);</td></tr>
+<tr class="codeline" data-linenumber="173"><td class="num" id="LN173">173</td><td class="line"><span class='keyword'>static</span> gboolean pluma_file_browser_store_drag_data_delete (GtkTreeDragSource * drag_source,</td></tr>
+<tr class="codeline" data-linenumber="174"><td class="num" id="LN174">174</td><td class="line"> GtkTreePath * path);</td></tr>
+<tr class="codeline" data-linenumber="175"><td class="num" id="LN175">175</td><td class="line"><span class='keyword'>static</span> gboolean pluma_file_browser_store_drag_data_get (GtkTreeDragSource * drag_source,</td></tr>
+<tr class="codeline" data-linenumber="176"><td class="num" id="LN176">176</td><td class="line"> GtkTreePath * path,</td></tr>
+<tr class="codeline" data-linenumber="177"><td class="num" id="LN177">177</td><td class="line"> GtkSelectionData * selection_data);</td></tr>
+<tr class="codeline" data-linenumber="178"><td class="num" id="LN178">178</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="179"><td class="num" id="LN179">179</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span> file_browser_node_free (PlumaFileBrowserStore * model,</td></tr>
+<tr class="codeline" data-linenumber="180"><td class="num" id="LN180">180</td><td class="line"> FileBrowserNode * node);</td></tr>
+<tr class="codeline" data-linenumber="181"><td class="num" id="LN181">181</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span> model_add_node (PlumaFileBrowserStore * model,</td></tr>
+<tr class="codeline" data-linenumber="182"><td class="num" id="LN182">182</td><td class="line"> FileBrowserNode * child,</td></tr>
+<tr class="codeline" data-linenumber="183"><td class="num" id="LN183">183</td><td class="line"> FileBrowserNode * parent);</td></tr>
+<tr class="codeline" data-linenumber="184"><td class="num" id="LN184">184</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span> model_clear (PlumaFileBrowserStore * model,</td></tr>
+<tr class="codeline" data-linenumber="185"><td class="num" id="LN185">185</td><td class="line"> gboolean free_nodes);</td></tr>
+<tr class="codeline" data-linenumber="186"><td class="num" id="LN186">186</td><td class="line"><span class='keyword'>static</span> gint model_sort_default (FileBrowserNode * node1,</td></tr>
+<tr class="codeline" data-linenumber="187"><td class="num" id="LN187">187</td><td class="line"> FileBrowserNode * node2);</td></tr>
+<tr class="codeline" data-linenumber="188"><td class="num" id="LN188">188</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span> model_check_dummy (PlumaFileBrowserStore * model,</td></tr>
+<tr class="codeline" data-linenumber="189"><td class="num" id="LN189">189</td><td class="line"> FileBrowserNode * node);</td></tr>
+<tr class="codeline" data-linenumber="190"><td class="num" id="LN190">190</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span> next_files_async (GFileEnumerator * enumerator,</td></tr>
+<tr class="codeline" data-linenumber="191"><td class="num" id="LN191">191</td><td class="line"> AsyncNode * async);</td></tr>
+<tr class="codeline" data-linenumber="192"><td class="num" id="LN192">192</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="193"><td class="num" id="LN193">193</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span> delete_files (AsyncData *data);</td></tr>
+<tr class="codeline" data-linenumber="194"><td class="num" id="LN194">194</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="195"><td class="num" id="LN195">195</td><td class="line"><span class='macro'>G_DEFINE_DYNAMIC_TYPE_EXTENDED (PlumaFileBrowserStore, pluma_file_browser_store,<span class='macro_popup'>static void pluma_file_browser_store_init (PlumaFileBrowserStore<br> *self); static void pluma_file_browser_store_class_init (PlumaFileBrowserStoreClass<br> *klass); static void pluma_file_browser_store_class_finalize<br> (PlumaFileBrowserStoreClass *klass); static gpointer pluma_file_browser_store_parent_class<br> = ((void*)0); static GType pluma_file_browser_store_type_id =<br> 0; static gint PlumaFileBrowserStore_private_offset; static void<br> pluma_file_browser_store_class_intern_init (gpointer klass) {<br> pluma_file_browser_store_parent_class = g_type_class_peek_parent<br> (klass); if (PlumaFileBrowserStore_private_offset != 0) g_type_class_adjust_private_offset<br> (klass, &amp;PlumaFileBrowserStore_private_offset); pluma_file_browser_store_class_init<br> ((PlumaFileBrowserStoreClass*) klass); } __attribute__ ((__unused__<br>)) static inline gpointer pluma_file_browser_store_get_instance_private<br> (PlumaFileBrowserStore *self) { return (((gpointer) ((guint8<br>*) (self) + (glong) (PlumaFileBrowserStore_private_offset))))<br>; } GType pluma_file_browser_store_get_type (void) { return pluma_file_browser_store_type_id<br>; } static void pluma_file_browser_store_register_type (GTypeModule<br> *type_module) { GType g_define_type_id __attribute__ ((__unused__<br>)); const GTypeInfo g_define_type_info = { sizeof (PlumaFileBrowserStoreClass<br>), (GBaseInitFunc) ((void*)0), (GBaseFinalizeFunc) ((void*)0)<br>, (GClassInitFunc)(void (*)(void)) pluma_file_browser_store_class_intern_init<br>, (GClassFinalizeFunc)(void (*)(void)) pluma_file_browser_store_class_finalize<br>, ((void*)0), sizeof (PlumaFileBrowserStore), 0, (GInstanceInitFunc<br>)(void (*)(void)) pluma_file_browser_store_init, ((void*)0) }<br>; pluma_file_browser_store_type_id = g_type_module_register_type<br> (type_module, ((GType) ((20) &lt;&lt; (2))), "PlumaFileBrowserStore"<br>, &amp;g_define_type_info, (GTypeFlags) 0); g_define_type_id =<br> pluma_file_browser_store_type_id; { { PlumaFileBrowserStore_private_offset<br> = sizeof (PlumaFileBrowserStorePrivate); } { const GInterfaceInfo<br> g_implement_interface_info = { (GInterfaceInitFunc)(void (*)<br>(void)) pluma_file_browser_store_iface_init, ((void*)0), ((void<br>*)0) }; g_type_module_add_interface (type_module, g_define_type_id<br>, (gtk_tree_model_get_type ()), &amp;g_implement_interface_info<br>); } { const GInterfaceInfo g_implement_interface_info = { (GInterfaceInitFunc<br>)(void (*)(void)) pluma_file_browser_store_drag_source_init, (<br>(void*)0), ((void*)0) }; g_type_module_add_interface (type_module<br>, g_define_type_id, (gtk_tree_drag_source_get_type ()), &amp;<br>g_implement_interface_info); } ; } }</span></span></td></tr>
+<tr class="codeline" data-linenumber="196"><td class="num" id="LN196">196</td><td class="line"> <span class='macro'>G_TYPE_OBJECT,<span class='macro_popup'>static void pluma_file_browser_store_init (PlumaFileBrowserStore<br> *self); static void pluma_file_browser_store_class_init (PlumaFileBrowserStoreClass<br> *klass); static void pluma_file_browser_store_class_finalize<br> (PlumaFileBrowserStoreClass *klass); static gpointer pluma_file_browser_store_parent_class<br> = ((void*)0); static GType pluma_file_browser_store_type_id =<br> 0; static gint PlumaFileBrowserStore_private_offset; static void<br> pluma_file_browser_store_class_intern_init (gpointer klass) {<br> pluma_file_browser_store_parent_class = g_type_class_peek_parent<br> (klass); if (PlumaFileBrowserStore_private_offset != 0) g_type_class_adjust_private_offset<br> (klass, &amp;PlumaFileBrowserStore_private_offset); pluma_file_browser_store_class_init<br> ((PlumaFileBrowserStoreClass*) klass); } __attribute__ ((__unused__<br>)) static inline gpointer pluma_file_browser_store_get_instance_private<br> (PlumaFileBrowserStore *self) { return (((gpointer) ((guint8<br>*) (self) + (glong) (PlumaFileBrowserStore_private_offset))))<br>; } GType pluma_file_browser_store_get_type (void) { return pluma_file_browser_store_type_id<br>; } static void pluma_file_browser_store_register_type (GTypeModule<br> *type_module) { GType g_define_type_id __attribute__ ((__unused__<br>)); const GTypeInfo g_define_type_info = { sizeof (PlumaFileBrowserStoreClass<br>), (GBaseInitFunc) ((void*)0), (GBaseFinalizeFunc) ((void*)0)<br>, (GClassInitFunc)(void (*)(void)) pluma_file_browser_store_class_intern_init<br>, (GClassFinalizeFunc)(void (*)(void)) pluma_file_browser_store_class_finalize<br>, ((void*)0), sizeof (PlumaFileBrowserStore), 0, (GInstanceInitFunc<br>)(void (*)(void)) pluma_file_browser_store_init, ((void*)0) }<br>; pluma_file_browser_store_type_id = g_type_module_register_type<br> (type_module, ((GType) ((20) &lt;&lt; (2))), "PlumaFileBrowserStore"<br>, &amp;g_define_type_info, (GTypeFlags) 0); g_define_type_id =<br> pluma_file_browser_store_type_id; { { PlumaFileBrowserStore_private_offset<br> = sizeof (PlumaFileBrowserStorePrivate); } { const GInterfaceInfo<br> g_implement_interface_info = { (GInterfaceInitFunc)(void (*)<br>(void)) pluma_file_browser_store_iface_init, ((void*)0), ((void<br>*)0) }; g_type_module_add_interface (type_module, g_define_type_id<br>, (gtk_tree_model_get_type ()), &amp;g_implement_interface_info<br>); } { const GInterfaceInfo g_implement_interface_info = { (GInterfaceInitFunc<br>)(void (*)(void)) pluma_file_browser_store_drag_source_init, (<br>(void*)0), ((void*)0) }; g_type_module_add_interface (type_module<br>, g_define_type_id, (gtk_tree_drag_source_get_type ()), &amp;<br>g_implement_interface_info); } ; } }</span></span></td></tr>
+<tr class="codeline" data-linenumber="197"><td class="num" id="LN197">197</td><td class="line"> <span class='macro'>0,<span class='macro_popup'>static void pluma_file_browser_store_init (PlumaFileBrowserStore<br> *self); static void pluma_file_browser_store_class_init (PlumaFileBrowserStoreClass<br> *klass); static void pluma_file_browser_store_class_finalize<br> (PlumaFileBrowserStoreClass *klass); static gpointer pluma_file_browser_store_parent_class<br> = ((void*)0); static GType pluma_file_browser_store_type_id =<br> 0; static gint PlumaFileBrowserStore_private_offset; static void<br> pluma_file_browser_store_class_intern_init (gpointer klass) {<br> pluma_file_browser_store_parent_class = g_type_class_peek_parent<br> (klass); if (PlumaFileBrowserStore_private_offset != 0) g_type_class_adjust_private_offset<br> (klass, &amp;PlumaFileBrowserStore_private_offset); pluma_file_browser_store_class_init<br> ((PlumaFileBrowserStoreClass*) klass); } __attribute__ ((__unused__<br>)) static inline gpointer pluma_file_browser_store_get_instance_private<br> (PlumaFileBrowserStore *self) { return (((gpointer) ((guint8<br>*) (self) + (glong) (PlumaFileBrowserStore_private_offset))))<br>; } GType pluma_file_browser_store_get_type (void) { return pluma_file_browser_store_type_id<br>; } static void pluma_file_browser_store_register_type (GTypeModule<br> *type_module) { GType g_define_type_id __attribute__ ((__unused__<br>)); const GTypeInfo g_define_type_info = { sizeof (PlumaFileBrowserStoreClass<br>), (GBaseInitFunc) ((void*)0), (GBaseFinalizeFunc) ((void*)0)<br>, (GClassInitFunc)(void (*)(void)) pluma_file_browser_store_class_intern_init<br>, (GClassFinalizeFunc)(void (*)(void)) pluma_file_browser_store_class_finalize<br>, ((void*)0), sizeof (PlumaFileBrowserStore), 0, (GInstanceInitFunc<br>)(void (*)(void)) pluma_file_browser_store_init, ((void*)0) }<br>; pluma_file_browser_store_type_id = g_type_module_register_type<br> (type_module, ((GType) ((20) &lt;&lt; (2))), "PlumaFileBrowserStore"<br>, &amp;g_define_type_info, (GTypeFlags) 0); g_define_type_id =<br> pluma_file_browser_store_type_id; { { PlumaFileBrowserStore_private_offset<br> = sizeof (PlumaFileBrowserStorePrivate); } { const GInterfaceInfo<br> g_implement_interface_info = { (GInterfaceInitFunc)(void (*)<br>(void)) pluma_file_browser_store_iface_init, ((void*)0), ((void<br>*)0) }; g_type_module_add_interface (type_module, g_define_type_id<br>, (gtk_tree_model_get_type ()), &amp;g_implement_interface_info<br>); } { const GInterfaceInfo g_implement_interface_info = { (GInterfaceInitFunc<br>)(void (*)(void)) pluma_file_browser_store_drag_source_init, (<br>(void*)0), ((void*)0) }; g_type_module_add_interface (type_module<br>, g_define_type_id, (gtk_tree_drag_source_get_type ()), &amp;<br>g_implement_interface_info); } ; } }</span></span></td></tr>
+<tr class="codeline" data-linenumber="198"><td class="num" id="LN198">198</td><td class="line"> <span class='macro'>G_ADD_PRIVATE_DYNAMIC (PlumaFileBrowserStore)<span class='macro_popup'>static void pluma_file_browser_store_init (PlumaFileBrowserStore<br> *self); static void pluma_file_browser_store_class_init (PlumaFileBrowserStoreClass<br> *klass); static void pluma_file_browser_store_class_finalize<br> (PlumaFileBrowserStoreClass *klass); static gpointer pluma_file_browser_store_parent_class<br> = ((void*)0); static GType pluma_file_browser_store_type_id =<br> 0; static gint PlumaFileBrowserStore_private_offset; static void<br> pluma_file_browser_store_class_intern_init (gpointer klass) {<br> pluma_file_browser_store_parent_class = g_type_class_peek_parent<br> (klass); if (PlumaFileBrowserStore_private_offset != 0) g_type_class_adjust_private_offset<br> (klass, &amp;PlumaFileBrowserStore_private_offset); pluma_file_browser_store_class_init<br> ((PlumaFileBrowserStoreClass*) klass); } __attribute__ ((__unused__<br>)) static inline gpointer pluma_file_browser_store_get_instance_private<br> (PlumaFileBrowserStore *self) { return (((gpointer) ((guint8<br>*) (self) + (glong) (PlumaFileBrowserStore_private_offset))))<br>; } GType pluma_file_browser_store_get_type (void) { return pluma_file_browser_store_type_id<br>; } static void pluma_file_browser_store_register_type (GTypeModule<br> *type_module) { GType g_define_type_id __attribute__ ((__unused__<br>)); const GTypeInfo g_define_type_info = { sizeof (PlumaFileBrowserStoreClass<br>), (GBaseInitFunc) ((void*)0), (GBaseFinalizeFunc) ((void*)0)<br>, (GClassInitFunc)(void (*)(void)) pluma_file_browser_store_class_intern_init<br>, (GClassFinalizeFunc)(void (*)(void)) pluma_file_browser_store_class_finalize<br>, ((void*)0), sizeof (PlumaFileBrowserStore), 0, (GInstanceInitFunc<br>)(void (*)(void)) pluma_file_browser_store_init, ((void*)0) }<br>; pluma_file_browser_store_type_id = g_type_module_register_type<br> (type_module, ((GType) ((20) &lt;&lt; (2))), "PlumaFileBrowserStore"<br>, &amp;g_define_type_info, (GTypeFlags) 0); g_define_type_id =<br> pluma_file_browser_store_type_id; { { PlumaFileBrowserStore_private_offset<br> = sizeof (PlumaFileBrowserStorePrivate); } { const GInterfaceInfo<br> g_implement_interface_info = { (GInterfaceInitFunc)(void (*)<br>(void)) pluma_file_browser_store_iface_init, ((void*)0), ((void<br>*)0) }; g_type_module_add_interface (type_module, g_define_type_id<br>, (gtk_tree_model_get_type ()), &amp;g_implement_interface_info<br>); } { const GInterfaceInfo g_implement_interface_info = { (GInterfaceInitFunc<br>)(void (*)(void)) pluma_file_browser_store_drag_source_init, (<br>(void*)0), ((void*)0) }; g_type_module_add_interface (type_module<br>, g_define_type_id, (gtk_tree_drag_source_get_type ()), &amp;<br>g_implement_interface_info); } ; } }</span></span></td></tr>
+<tr class="codeline" data-linenumber="199"><td class="num" id="LN199">199</td><td class="line"> <span class='macro'>G_IMPLEMENT_INTERFACE_DYNAMIC (GTK_TYPE_TREE_MODEL,<span class='macro_popup'>static void pluma_file_browser_store_init (PlumaFileBrowserStore<br> *self); static void pluma_file_browser_store_class_init (PlumaFileBrowserStoreClass<br> *klass); static void pluma_file_browser_store_class_finalize<br> (PlumaFileBrowserStoreClass *klass); static gpointer pluma_file_browser_store_parent_class<br> = ((void*)0); static GType pluma_file_browser_store_type_id =<br> 0; static gint PlumaFileBrowserStore_private_offset; static void<br> pluma_file_browser_store_class_intern_init (gpointer klass) {<br> pluma_file_browser_store_parent_class = g_type_class_peek_parent<br> (klass); if (PlumaFileBrowserStore_private_offset != 0) g_type_class_adjust_private_offset<br> (klass, &amp;PlumaFileBrowserStore_private_offset); pluma_file_browser_store_class_init<br> ((PlumaFileBrowserStoreClass*) klass); } __attribute__ ((__unused__<br>)) static inline gpointer pluma_file_browser_store_get_instance_private<br> (PlumaFileBrowserStore *self) { return (((gpointer) ((guint8<br>*) (self) + (glong) (PlumaFileBrowserStore_private_offset))))<br>; } GType pluma_file_browser_store_get_type (void) { return pluma_file_browser_store_type_id<br>; } static void pluma_file_browser_store_register_type (GTypeModule<br> *type_module) { GType g_define_type_id __attribute__ ((__unused__<br>)); const GTypeInfo g_define_type_info = { sizeof (PlumaFileBrowserStoreClass<br>), (GBaseInitFunc) ((void*)0), (GBaseFinalizeFunc) ((void*)0)<br>, (GClassInitFunc)(void (*)(void)) pluma_file_browser_store_class_intern_init<br>, (GClassFinalizeFunc)(void (*)(void)) pluma_file_browser_store_class_finalize<br>, ((void*)0), sizeof (PlumaFileBrowserStore), 0, (GInstanceInitFunc<br>)(void (*)(void)) pluma_file_browser_store_init, ((void*)0) }<br>; pluma_file_browser_store_type_id = g_type_module_register_type<br> (type_module, ((GType) ((20) &lt;&lt; (2))), "PlumaFileBrowserStore"<br>, &amp;g_define_type_info, (GTypeFlags) 0); g_define_type_id =<br> pluma_file_browser_store_type_id; { { PlumaFileBrowserStore_private_offset<br> = sizeof (PlumaFileBrowserStorePrivate); } { const GInterfaceInfo<br> g_implement_interface_info = { (GInterfaceInitFunc)(void (*)<br>(void)) pluma_file_browser_store_iface_init, ((void*)0), ((void<br>*)0) }; g_type_module_add_interface (type_module, g_define_type_id<br>, (gtk_tree_model_get_type ()), &amp;g_implement_interface_info<br>); } { const GInterfaceInfo g_implement_interface_info = { (GInterfaceInitFunc<br>)(void (*)(void)) pluma_file_browser_store_drag_source_init, (<br>(void*)0), ((void*)0) }; g_type_module_add_interface (type_module<br>, g_define_type_id, (gtk_tree_drag_source_get_type ()), &amp;<br>g_implement_interface_info); } ; } }</span></span></td></tr>
+<tr class="codeline" data-linenumber="200"><td class="num" id="LN200">200</td><td class="line"> <span class='macro'>pluma_file_browser_store_iface_init)<span class='macro_popup'>static void pluma_file_browser_store_init (PlumaFileBrowserStore<br> *self); static void pluma_file_browser_store_class_init (PlumaFileBrowserStoreClass<br> *klass); static void pluma_file_browser_store_class_finalize<br> (PlumaFileBrowserStoreClass *klass); static gpointer pluma_file_browser_store_parent_class<br> = ((void*)0); static GType pluma_file_browser_store_type_id =<br> 0; static gint PlumaFileBrowserStore_private_offset; static void<br> pluma_file_browser_store_class_intern_init (gpointer klass) {<br> pluma_file_browser_store_parent_class = g_type_class_peek_parent<br> (klass); if (PlumaFileBrowserStore_private_offset != 0) g_type_class_adjust_private_offset<br> (klass, &amp;PlumaFileBrowserStore_private_offset); pluma_file_browser_store_class_init<br> ((PlumaFileBrowserStoreClass*) klass); } __attribute__ ((__unused__<br>)) static inline gpointer pluma_file_browser_store_get_instance_private<br> (PlumaFileBrowserStore *self) { return (((gpointer) ((guint8<br>*) (self) + (glong) (PlumaFileBrowserStore_private_offset))))<br>; } GType pluma_file_browser_store_get_type (void) { return pluma_file_browser_store_type_id<br>; } static void pluma_file_browser_store_register_type (GTypeModule<br> *type_module) { GType g_define_type_id __attribute__ ((__unused__<br>)); const GTypeInfo g_define_type_info = { sizeof (PlumaFileBrowserStoreClass<br>), (GBaseInitFunc) ((void*)0), (GBaseFinalizeFunc) ((void*)0)<br>, (GClassInitFunc)(void (*)(void)) pluma_file_browser_store_class_intern_init<br>, (GClassFinalizeFunc)(void (*)(void)) pluma_file_browser_store_class_finalize<br>, ((void*)0), sizeof (PlumaFileBrowserStore), 0, (GInstanceInitFunc<br>)(void (*)(void)) pluma_file_browser_store_init, ((void*)0) }<br>; pluma_file_browser_store_type_id = g_type_module_register_type<br> (type_module, ((GType) ((20) &lt;&lt; (2))), "PlumaFileBrowserStore"<br>, &amp;g_define_type_info, (GTypeFlags) 0); g_define_type_id =<br> pluma_file_browser_store_type_id; { { PlumaFileBrowserStore_private_offset<br> = sizeof (PlumaFileBrowserStorePrivate); } { const GInterfaceInfo<br> g_implement_interface_info = { (GInterfaceInitFunc)(void (*)<br>(void)) pluma_file_browser_store_iface_init, ((void*)0), ((void<br>*)0) }; g_type_module_add_interface (type_module, g_define_type_id<br>, (gtk_tree_model_get_type ()), &amp;g_implement_interface_info<br>); } { const GInterfaceInfo g_implement_interface_info = { (GInterfaceInitFunc<br>)(void (*)(void)) pluma_file_browser_store_drag_source_init, (<br>(void*)0), ((void*)0) }; g_type_module_add_interface (type_module<br>, g_define_type_id, (gtk_tree_drag_source_get_type ()), &amp;<br>g_implement_interface_info); } ; } }</span></span></td></tr>
+<tr class="codeline" data-linenumber="201"><td class="num" id="LN201">201</td><td class="line"> <span class='macro'>G_IMPLEMENT_INTERFACE_DYNAMIC (GTK_TYPE_TREE_DRAG_SOURCE,<span class='macro_popup'>static void pluma_file_browser_store_init (PlumaFileBrowserStore<br> *self); static void pluma_file_browser_store_class_init (PlumaFileBrowserStoreClass<br> *klass); static void pluma_file_browser_store_class_finalize<br> (PlumaFileBrowserStoreClass *klass); static gpointer pluma_file_browser_store_parent_class<br> = ((void*)0); static GType pluma_file_browser_store_type_id =<br> 0; static gint PlumaFileBrowserStore_private_offset; static void<br> pluma_file_browser_store_class_intern_init (gpointer klass) {<br> pluma_file_browser_store_parent_class = g_type_class_peek_parent<br> (klass); if (PlumaFileBrowserStore_private_offset != 0) g_type_class_adjust_private_offset<br> (klass, &amp;PlumaFileBrowserStore_private_offset); pluma_file_browser_store_class_init<br> ((PlumaFileBrowserStoreClass*) klass); } __attribute__ ((__unused__<br>)) static inline gpointer pluma_file_browser_store_get_instance_private<br> (PlumaFileBrowserStore *self) { return (((gpointer) ((guint8<br>*) (self) + (glong) (PlumaFileBrowserStore_private_offset))))<br>; } GType pluma_file_browser_store_get_type (void) { return pluma_file_browser_store_type_id<br>; } static void pluma_file_browser_store_register_type (GTypeModule<br> *type_module) { GType g_define_type_id __attribute__ ((__unused__<br>)); const GTypeInfo g_define_type_info = { sizeof (PlumaFileBrowserStoreClass<br>), (GBaseInitFunc) ((void*)0), (GBaseFinalizeFunc) ((void*)0)<br>, (GClassInitFunc)(void (*)(void)) pluma_file_browser_store_class_intern_init<br>, (GClassFinalizeFunc)(void (*)(void)) pluma_file_browser_store_class_finalize<br>, ((void*)0), sizeof (PlumaFileBrowserStore), 0, (GInstanceInitFunc<br>)(void (*)(void)) pluma_file_browser_store_init, ((void*)0) }<br>; pluma_file_browser_store_type_id = g_type_module_register_type<br> (type_module, ((GType) ((20) &lt;&lt; (2))), "PlumaFileBrowserStore"<br>, &amp;g_define_type_info, (GTypeFlags) 0); g_define_type_id =<br> pluma_file_browser_store_type_id; { { PlumaFileBrowserStore_private_offset<br> = sizeof (PlumaFileBrowserStorePrivate); } { const GInterfaceInfo<br> g_implement_interface_info = { (GInterfaceInitFunc)(void (*)<br>(void)) pluma_file_browser_store_iface_init, ((void*)0), ((void<br>*)0) }; g_type_module_add_interface (type_module, g_define_type_id<br>, (gtk_tree_model_get_type ()), &amp;g_implement_interface_info<br>); } { const GInterfaceInfo g_implement_interface_info = { (GInterfaceInitFunc<br>)(void (*)(void)) pluma_file_browser_store_drag_source_init, (<br>(void*)0), ((void*)0) }; g_type_module_add_interface (type_module<br>, g_define_type_id, (gtk_tree_drag_source_get_type ()), &amp;<br>g_implement_interface_info); } ; } }</span></span></td></tr>
+<tr class="codeline" data-linenumber="202"><td class="num" id="LN202">202</td><td class="line"> <span class='macro'>pluma_file_browser_store_drag_source_init))<span class='macro_popup'>static void pluma_file_browser_store_init (PlumaFileBrowserStore<br> *self); static void pluma_file_browser_store_class_init (PlumaFileBrowserStoreClass<br> *klass); static void pluma_file_browser_store_class_finalize<br> (PlumaFileBrowserStoreClass *klass); static gpointer pluma_file_browser_store_parent_class<br> = ((void*)0); static GType pluma_file_browser_store_type_id =<br> 0; static gint PlumaFileBrowserStore_private_offset; static void<br> pluma_file_browser_store_class_intern_init (gpointer klass) {<br> pluma_file_browser_store_parent_class = g_type_class_peek_parent<br> (klass); if (PlumaFileBrowserStore_private_offset != 0) g_type_class_adjust_private_offset<br> (klass, &amp;PlumaFileBrowserStore_private_offset); pluma_file_browser_store_class_init<br> ((PlumaFileBrowserStoreClass*) klass); } __attribute__ ((__unused__<br>)) static inline gpointer pluma_file_browser_store_get_instance_private<br> (PlumaFileBrowserStore *self) { return (((gpointer) ((guint8<br>*) (self) + (glong) (PlumaFileBrowserStore_private_offset))))<br>; } GType pluma_file_browser_store_get_type (void) { return pluma_file_browser_store_type_id<br>; } static void pluma_file_browser_store_register_type (GTypeModule<br> *type_module) { GType g_define_type_id __attribute__ ((__unused__<br>)); const GTypeInfo g_define_type_info = { sizeof (PlumaFileBrowserStoreClass<br>), (GBaseInitFunc) ((void*)0), (GBaseFinalizeFunc) ((void*)0)<br>, (GClassInitFunc)(void (*)(void)) pluma_file_browser_store_class_intern_init<br>, (GClassFinalizeFunc)(void (*)(void)) pluma_file_browser_store_class_finalize<br>, ((void*)0), sizeof (PlumaFileBrowserStore), 0, (GInstanceInitFunc<br>)(void (*)(void)) pluma_file_browser_store_init, ((void*)0) }<br>; pluma_file_browser_store_type_id = g_type_module_register_type<br> (type_module, ((GType) ((20) &lt;&lt; (2))), "PlumaFileBrowserStore"<br>, &amp;g_define_type_info, (GTypeFlags) 0); g_define_type_id =<br> pluma_file_browser_store_type_id; { { PlumaFileBrowserStore_private_offset<br> = sizeof (PlumaFileBrowserStorePrivate); } { const GInterfaceInfo<br> g_implement_interface_info = { (GInterfaceInitFunc)(void (*)<br>(void)) pluma_file_browser_store_iface_init, ((void*)0), ((void<br>*)0) }; g_type_module_add_interface (type_module, g_define_type_id<br>, (gtk_tree_model_get_type ()), &amp;g_implement_interface_info<br>); } { const GInterfaceInfo g_implement_interface_info = { (GInterfaceInitFunc<br>)(void (*)(void)) pluma_file_browser_store_drag_source_init, (<br>(void*)0), ((void*)0) }; g_type_module_add_interface (type_module<br>, g_define_type_id, (gtk_tree_drag_source_get_type ()), &amp;<br>g_implement_interface_info); } ; } }</span></span></td></tr>
+<tr class="codeline" data-linenumber="203"><td class="num" id="LN203">203</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="204"><td class="num" id="LN204">204</td><td class="line"><span class='comment'>/* Properties */</span></td></tr>
+<tr class="codeline" data-linenumber="205"><td class="num" id="LN205">205</td><td class="line"><span class='keyword'>enum</span> {</td></tr>
+<tr class="codeline" data-linenumber="206"><td class="num" id="LN206">206</td><td class="line"> PROP_0,</td></tr>
+<tr class="codeline" data-linenumber="207"><td class="num" id="LN207">207</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="208"><td class="num" id="LN208">208</td><td class="line"> PROP_ROOT,</td></tr>
+<tr class="codeline" data-linenumber="209"><td class="num" id="LN209">209</td><td class="line"> PROP_VIRTUAL_ROOT,</td></tr>
+<tr class="codeline" data-linenumber="210"><td class="num" id="LN210">210</td><td class="line"> PROP_FILTER_MODE</td></tr>
+<tr class="codeline" data-linenumber="211"><td class="num" id="LN211">211</td><td class="line">};</td></tr>
+<tr class="codeline" data-linenumber="212"><td class="num" id="LN212">212</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="213"><td class="num" id="LN213">213</td><td class="line"><span class='comment'>/* Signals */</span></td></tr>
+<tr class="codeline" data-linenumber="214"><td class="num" id="LN214">214</td><td class="line"><span class='keyword'>enum</span></td></tr>
+<tr class="codeline" data-linenumber="215"><td class="num" id="LN215">215</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="216"><td class="num" id="LN216">216</td><td class="line"> BEGIN_LOADING,</td></tr>
+<tr class="codeline" data-linenumber="217"><td class="num" id="LN217">217</td><td class="line"> END_LOADING,</td></tr>
+<tr class="codeline" data-linenumber="218"><td class="num" id="LN218">218</td><td class="line"> ERROR,</td></tr>
+<tr class="codeline" data-linenumber="219"><td class="num" id="LN219">219</td><td class="line"> NO_TRASH,</td></tr>
+<tr class="codeline" data-linenumber="220"><td class="num" id="LN220">220</td><td class="line"> RENAME,</td></tr>
+<tr class="codeline" data-linenumber="221"><td class="num" id="LN221">221</td><td class="line"> BEGIN_REFRESH,</td></tr>
+<tr class="codeline" data-linenumber="222"><td class="num" id="LN222">222</td><td class="line"> END_REFRESH,</td></tr>
+<tr class="codeline" data-linenumber="223"><td class="num" id="LN223">223</td><td class="line"> UNLOAD,</td></tr>
+<tr class="codeline" data-linenumber="224"><td class="num" id="LN224">224</td><td class="line"> NUM_SIGNALS</td></tr>
+<tr class="codeline" data-linenumber="225"><td class="num" id="LN225">225</td><td class="line">};</td></tr>
+<tr class="codeline" data-linenumber="226"><td class="num" id="LN226">226</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="227"><td class="num" id="LN227">227</td><td class="line"><span class='keyword'>static</span> guint model_signals[NUM_SIGNALS] = { 0 };</td></tr>
+<tr class="codeline" data-linenumber="228"><td class="num" id="LN228">228</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="229"><td class="num" id="LN229">229</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="230"><td class="num" id="LN230">230</td><td class="line">cancel_mount_operation (PlumaFileBrowserStore *obj)</td></tr>
+<tr class="codeline" data-linenumber="231"><td class="num" id="LN231">231</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="232"><td class="num" id="LN232">232</td><td class="line"> <span class='keyword'>if</span> (obj-&gt;priv-&gt;mount_info != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="233"><td class="num" id="LN233">233</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="234"><td class="num" id="LN234">234</td><td class="line"> obj-&gt;priv-&gt;mount_info-&gt;model = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="235"><td class="num" id="LN235">235</td><td class="line"> g_cancellable_cancel (obj-&gt;priv-&gt;mount_info-&gt;cancellable);</td></tr>
+<tr class="codeline" data-linenumber="236"><td class="num" id="LN236">236</td><td class="line"> obj-&gt;priv-&gt;mount_info = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="237"><td class="num" id="LN237">237</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="238"><td class="num" id="LN238">238</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="239"><td class="num" id="LN239">239</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="240"><td class="num" id="LN240">240</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="241"><td class="num" id="LN241">241</td><td class="line">pluma_file_browser_store_finalize (GObject * object)</td></tr>
+<tr class="codeline" data-linenumber="242"><td class="num" id="LN242">242</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="243"><td class="num" id="LN243">243</td><td class="line"> PlumaFileBrowserStore *obj = <span class='macro'>PLUMA_FILE_BROWSER_STORE (object)<span class='macro_popup'>((((PlumaFileBrowserStore*) (void *) ((object)))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="244"><td class="num" id="LN244">244</td><td class="line"> GSList *item;</td></tr>
+<tr class="codeline" data-linenumber="245"><td class="num" id="LN245">245</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="246"><td class="num" id="LN246">246</td><td class="line"> <span class='comment'>/* Free all the nodes */</span></td></tr>
+<tr class="codeline" data-linenumber="247"><td class="num" id="LN247">247</td><td class="line"> file_browser_node_free (obj, obj-&gt;priv-&gt;root);</td></tr>
+<tr class="codeline" data-linenumber="248"><td class="num" id="LN248">248</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="249"><td class="num" id="LN249">249</td><td class="line"> <span class='comment'>/* Cancel any asynchronous operations */</span></td></tr>
+<tr class="codeline" data-linenumber="250"><td class="num" id="LN250">250</td><td class="line"> <span class='keyword'>for</span> (item = obj-&gt;priv-&gt;async_handles; item; item = item-&gt;next)</td></tr>
+<tr class="codeline" data-linenumber="251"><td class="num" id="LN251">251</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="252"><td class="num" id="LN252">252</td><td class="line"> AsyncData *data = (AsyncData *) (item-&gt;data);</td></tr>
+<tr class="codeline" data-linenumber="253"><td class="num" id="LN253">253</td><td class="line"> g_cancellable_cancel (data-&gt;cancellable);</td></tr>
+<tr class="codeline" data-linenumber="254"><td class="num" id="LN254">254</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="255"><td class="num" id="LN255">255</td><td class="line"> data-&gt;removed = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="256"><td class="num" id="LN256">256</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="257"><td class="num" id="LN257">257</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="258"><td class="num" id="LN258">258</td><td class="line"> cancel_mount_operation (obj);</td></tr>
+<tr class="codeline" data-linenumber="259"><td class="num" id="LN259">259</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="260"><td class="num" id="LN260">260</td><td class="line"> g_slist_free (obj-&gt;priv-&gt;async_handles);</td></tr>
+<tr class="codeline" data-linenumber="261"><td class="num" id="LN261">261</td><td class="line"> <span class='macro'>G_OBJECT_CLASS (pluma_file_browser_store_parent_class)<span class='macro_popup'>((((GObjectClass*) (void *) ((pluma_file_browser_store_parent_class<br>)))))</span></span>-&gt;finalize (object);</td></tr>
+<tr class="codeline" data-linenumber="262"><td class="num" id="LN262">262</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="263"><td class="num" id="LN263">263</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="264"><td class="num" id="LN264">264</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="265"><td class="num" id="LN265">265</td><td class="line">set_gvalue_from_node (GValue *value,</td></tr>
+<tr class="codeline" data-linenumber="266"><td class="num" id="LN266">266</td><td class="line"> FileBrowserNode *node)</td></tr>
+<tr class="codeline" data-linenumber="267"><td class="num" id="LN267">267</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="268"><td class="num" id="LN268">268</td><td class="line"> gchar * uri;</td></tr>
+<tr class="codeline" data-linenumber="269"><td class="num" id="LN269">269</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="270"><td class="num" id="LN270">270</td><td class="line"> <span class='keyword'>if</span> (node == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> || !node-&gt;file) {</td></tr>
+<tr class="codeline" data-linenumber="271"><td class="num" id="LN271">271</td><td class="line"> g_value_set_string (value, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="272"><td class="num" id="LN272">272</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="273"><td class="num" id="LN273">273</td><td class="line"> uri = g_file_get_uri (node-&gt;file);</td></tr>
+<tr class="codeline" data-linenumber="274"><td class="num" id="LN274">274</td><td class="line"> g_value_take_string (value, uri);</td></tr>
+<tr class="codeline" data-linenumber="275"><td class="num" id="LN275">275</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="276"><td class="num" id="LN276">276</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="277"><td class="num" id="LN277">277</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="278"><td class="num" id="LN278">278</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="279"><td class="num" id="LN279">279</td><td class="line">pluma_file_browser_store_get_property (GObject *object,</td></tr>
+<tr class="codeline" data-linenumber="280"><td class="num" id="LN280">280</td><td class="line"> guint prop_id,</td></tr>
+<tr class="codeline" data-linenumber="281"><td class="num" id="LN281">281</td><td class="line"> GValue *value,</td></tr>
+<tr class="codeline" data-linenumber="282"><td class="num" id="LN282">282</td><td class="line"> GParamSpec *pspec)</td></tr>
+<tr class="codeline" data-linenumber="283"><td class="num" id="LN283">283</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="284"><td class="num" id="LN284">284</td><td class="line"> PlumaFileBrowserStore *obj = <span class='macro'>PLUMA_FILE_BROWSER_STORE (object)<span class='macro_popup'>((((PlumaFileBrowserStore*) (void *) ((object)))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="285"><td class="num" id="LN285">285</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="286"><td class="num" id="LN286">286</td><td class="line"> <span class='keyword'>switch</span> (prop_id)</td></tr>
+<tr class="codeline" data-linenumber="287"><td class="num" id="LN287">287</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="288"><td class="num" id="LN288">288</td><td class="line"> <span class='keyword'>case</span> PROP_ROOT:</td></tr>
+<tr class="codeline" data-linenumber="289"><td class="num" id="LN289">289</td><td class="line"> set_gvalue_from_node (value, obj-&gt;priv-&gt;root);</td></tr>
+<tr class="codeline" data-linenumber="290"><td class="num" id="LN290">290</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="291"><td class="num" id="LN291">291</td><td class="line"> <span class='keyword'>case</span> PROP_VIRTUAL_ROOT:</td></tr>
+<tr class="codeline" data-linenumber="292"><td class="num" id="LN292">292</td><td class="line"> set_gvalue_from_node (value, obj-&gt;priv-&gt;virtual_root);</td></tr>
+<tr class="codeline" data-linenumber="293"><td class="num" id="LN293">293</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="294"><td class="num" id="LN294">294</td><td class="line"> <span class='keyword'>case</span> PROP_FILTER_MODE:</td></tr>
+<tr class="codeline" data-linenumber="295"><td class="num" id="LN295">295</td><td class="line"> g_value_set_flags (value, obj-&gt;priv-&gt;filter_mode);</td></tr>
+<tr class="codeline" data-linenumber="296"><td class="num" id="LN296">296</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="297"><td class="num" id="LN297">297</td><td class="line"> <span class='keyword'>default</span>:</td></tr>
+<tr class="codeline" data-linenumber="298"><td class="num" id="LN298">298</td><td class="line"> <span class='macro'>G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec)<span class='macro_popup'>do { GObject *_glib__object = (GObject*) ((object)); GParamSpec<br> *_glib__pspec = (GParamSpec*) ((pspec)); guint _glib__property_id<br> = ((prop_id)); g_warning ("%s:%d: invalid %s id %u for \"%s\" of type '%s' in '%s'"<br>, "pluma-file-browser-store.c", 298, ("property"), _glib__property_id<br>, _glib__pspec-&gt;name, g_type_name ((((((GTypeClass*) (((GTypeInstance<br>*) (_glib__pspec))-&gt;g_class))-&gt;g_type)))), (g_type_name<br> ((((((GTypeClass*) (((GTypeInstance*) (_glib__object))-&gt;g_class<br>))-&gt;g_type)))))); } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="299"><td class="num" id="LN299">299</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="300"><td class="num" id="LN300">300</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="301"><td class="num" id="LN301">301</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="302"><td class="num" id="LN302">302</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="303"><td class="num" id="LN303">303</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="304"><td class="num" id="LN304">304</td><td class="line">pluma_file_browser_store_set_property (GObject *object,</td></tr>
+<tr class="codeline" data-linenumber="305"><td class="num" id="LN305">305</td><td class="line"> guint prop_id,</td></tr>
+<tr class="codeline" data-linenumber="306"><td class="num" id="LN306">306</td><td class="line"> <span class='keyword'>const</span> GValue *value,</td></tr>
+<tr class="codeline" data-linenumber="307"><td class="num" id="LN307">307</td><td class="line"> GParamSpec *pspec)</td></tr>
+<tr class="codeline" data-linenumber="308"><td class="num" id="LN308">308</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="309"><td class="num" id="LN309">309</td><td class="line"> PlumaFileBrowserStore *obj = <span class='macro'>PLUMA_FILE_BROWSER_STORE (object)<span class='macro_popup'>((((PlumaFileBrowserStore*) (void *) ((object)))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="310"><td class="num" id="LN310">310</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="311"><td class="num" id="LN311">311</td><td class="line"> <span class='keyword'>switch</span> (prop_id)</td></tr>
+<tr class="codeline" data-linenumber="312"><td class="num" id="LN312">312</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="313"><td class="num" id="LN313">313</td><td class="line"> <span class='keyword'>case</span> PROP_FILTER_MODE:</td></tr>
+<tr class="codeline" data-linenumber="314"><td class="num" id="LN314">314</td><td class="line"> pluma_file_browser_store_set_filter_mode (obj,</td></tr>
+<tr class="codeline" data-linenumber="315"><td class="num" id="LN315">315</td><td class="line"> g_value_get_flags (value));</td></tr>
+<tr class="codeline" data-linenumber="316"><td class="num" id="LN316">316</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="317"><td class="num" id="LN317">317</td><td class="line"> <span class='keyword'>default</span>:</td></tr>
+<tr class="codeline" data-linenumber="318"><td class="num" id="LN318">318</td><td class="line"> <span class='macro'>G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec)<span class='macro_popup'>do { GObject *_glib__object = (GObject*) ((object)); GParamSpec<br> *_glib__pspec = (GParamSpec*) ((pspec)); guint _glib__property_id<br> = ((prop_id)); g_warning ("%s:%d: invalid %s id %u for \"%s\" of type '%s' in '%s'"<br>, "pluma-file-browser-store.c", 318, ("property"), _glib__property_id<br>, _glib__pspec-&gt;name, g_type_name ((((((GTypeClass*) (((GTypeInstance<br>*) (_glib__pspec))-&gt;g_class))-&gt;g_type)))), (g_type_name<br> ((((((GTypeClass*) (((GTypeInstance*) (_glib__object))-&gt;g_class<br>))-&gt;g_type)))))); } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="319"><td class="num" id="LN319">319</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="320"><td class="num" id="LN320">320</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="321"><td class="num" id="LN321">321</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="322"><td class="num" id="LN322">322</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="323"><td class="num" id="LN323">323</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="324"><td class="num" id="LN324">324</td><td class="line">pluma_file_browser_store_class_init (PlumaFileBrowserStoreClass * klass)</td></tr>
+<tr class="codeline" data-linenumber="325"><td class="num" id="LN325">325</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="326"><td class="num" id="LN326">326</td><td class="line"> GObjectClass *object_class = <span class='macro'>G_OBJECT_CLASS (klass)<span class='macro_popup'>((((GObjectClass*) (void *) ((klass)))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="327"><td class="num" id="LN327">327</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="328"><td class="num" id="LN328">328</td><td class="line"> object_class-&gt;finalize = pluma_file_browser_store_finalize;</td></tr>
+<tr class="codeline" data-linenumber="329"><td class="num" id="LN329">329</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="330"><td class="num" id="LN330">330</td><td class="line"> object_class-&gt;get_property = pluma_file_browser_store_get_property;</td></tr>
+<tr class="codeline" data-linenumber="331"><td class="num" id="LN331">331</td><td class="line"> object_class-&gt;set_property = pluma_file_browser_store_set_property;</td></tr>
+<tr class="codeline" data-linenumber="332"><td class="num" id="LN332">332</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="333"><td class="num" id="LN333">333</td><td class="line"> g_object_class_install_property (object_class, PROP_ROOT,</td></tr>
+<tr class="codeline" data-linenumber="334"><td class="num" id="LN334">334</td><td class="line"> g_param_spec_string (<span class='string_literal'>"root"</span>,</td></tr>
+<tr class="codeline" data-linenumber="335"><td class="num" id="LN335">335</td><td class="line"> <span class='string_literal'>"Root"</span>,</td></tr>
+<tr class="codeline" data-linenumber="336"><td class="num" id="LN336">336</td><td class="line"> <span class='string_literal'>"The root uri"</span>,</td></tr>
+<tr class="codeline" data-linenumber="337"><td class="num" id="LN337">337</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="338"><td class="num" id="LN338">338</td><td class="line"> G_PARAM_READABLE));</td></tr>
+<tr class="codeline" data-linenumber="339"><td class="num" id="LN339">339</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="340"><td class="num" id="LN340">340</td><td class="line"> g_object_class_install_property (object_class, PROP_VIRTUAL_ROOT,</td></tr>
+<tr class="codeline" data-linenumber="341"><td class="num" id="LN341">341</td><td class="line"> g_param_spec_string (<span class='string_literal'>"virtual-root"</span>,</td></tr>
+<tr class="codeline" data-linenumber="342"><td class="num" id="LN342">342</td><td class="line"> <span class='string_literal'>"Virtual Root"</span>,</td></tr>
+<tr class="codeline" data-linenumber="343"><td class="num" id="LN343">343</td><td class="line"> <span class='string_literal'>"The virtual root uri"</span>,</td></tr>
+<tr class="codeline" data-linenumber="344"><td class="num" id="LN344">344</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="345"><td class="num" id="LN345">345</td><td class="line"> G_PARAM_READABLE));</td></tr>
+<tr class="codeline" data-linenumber="346"><td class="num" id="LN346">346</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="347"><td class="num" id="LN347">347</td><td class="line"> g_object_class_install_property (object_class, PROP_FILTER_MODE,</td></tr>
+<tr class="codeline" data-linenumber="348"><td class="num" id="LN348">348</td><td class="line"> g_param_spec_flags (<span class='string_literal'>"filter-mode"</span>,</td></tr>
+<tr class="codeline" data-linenumber="349"><td class="num" id="LN349">349</td><td class="line"> <span class='string_literal'>"Filter Mode"</span>,</td></tr>
+<tr class="codeline" data-linenumber="350"><td class="num" id="LN350">350</td><td class="line"> <span class='string_literal'>"The filter mode"</span>,</td></tr>
+<tr class="codeline" data-linenumber="351"><td class="num" id="LN351">351</td><td class="line"> <span class='macro'>PLUMA_TYPE_FILE_BROWSER_STORE_FILTER_MODE<span class='macro_popup'>(pluma_file_browser_store_filter_mode_get_type())</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="352"><td class="num" id="LN352">352</td><td class="line"> pluma_file_browser_store_filter_mode_get_default (),</td></tr>
+<tr class="codeline" data-linenumber="353"><td class="num" id="LN353">353</td><td class="line"> G_PARAM_READWRITE));</td></tr>
+<tr class="codeline" data-linenumber="354"><td class="num" id="LN354">354</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="355"><td class="num" id="LN355">355</td><td class="line"> model_signals[BEGIN_LOADING] =</td></tr>
+<tr class="codeline" data-linenumber="356"><td class="num" id="LN356">356</td><td class="line"> g_signal_new (<span class='string_literal'>"begin-loading"</span>,</td></tr>
+<tr class="codeline" data-linenumber="357"><td class="num" id="LN357">357</td><td class="line"> <span class='macro'>G_OBJECT_CLASS_TYPE (object_class)<span class='macro_popup'>((((GTypeClass*) (object_class))-&gt;g_type))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="358"><td class="num" id="LN358">358</td><td class="line"> G_SIGNAL_RUN_LAST,</td></tr>
+<tr class="codeline" data-linenumber="359"><td class="num" id="LN359">359</td><td class="line"> <span class='macro'>G_STRUCT_OFFSET (PlumaFileBrowserStoreClass, begin_loading)<span class='macro_popup'>((glong) __builtin_offsetof(PlumaFileBrowserStoreClass, begin_loading<br>))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="360"><td class="num" id="LN360">360</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="361"><td class="num" id="LN361">361</td><td class="line"> <span class='macro'>G_TYPE_NONE<span class='macro_popup'>((GType) ((1) &lt;&lt; (2)))</span></span>, 1, <span class='macro'>GTK_TYPE_TREE_ITER<span class='macro_popup'>(gtk_tree_iter_get_type ())</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="362"><td class="num" id="LN362">362</td><td class="line"> model_signals[END_LOADING] =</td></tr>
+<tr class="codeline" data-linenumber="363"><td class="num" id="LN363">363</td><td class="line"> g_signal_new (<span class='string_literal'>"end-loading"</span>,</td></tr>
+<tr class="codeline" data-linenumber="364"><td class="num" id="LN364">364</td><td class="line"> <span class='macro'>G_OBJECT_CLASS_TYPE (object_class)<span class='macro_popup'>((((GTypeClass*) (object_class))-&gt;g_type))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="365"><td class="num" id="LN365">365</td><td class="line"> G_SIGNAL_RUN_LAST,</td></tr>
+<tr class="codeline" data-linenumber="366"><td class="num" id="LN366">366</td><td class="line"> <span class='macro'>G_STRUCT_OFFSET (PlumaFileBrowserStoreClass, end_loading)<span class='macro_popup'>((glong) __builtin_offsetof(PlumaFileBrowserStoreClass, end_loading<br>))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="367"><td class="num" id="LN367">367</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="368"><td class="num" id="LN368">368</td><td class="line"> <span class='macro'>G_TYPE_NONE<span class='macro_popup'>((GType) ((1) &lt;&lt; (2)))</span></span>, 1,</td></tr>
+<tr class="codeline" data-linenumber="369"><td class="num" id="LN369">369</td><td class="line"> <span class='macro'>GTK_TYPE_TREE_ITER<span class='macro_popup'>(gtk_tree_iter_get_type ())</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="370"><td class="num" id="LN370">370</td><td class="line"> model_signals[ERROR] =</td></tr>
+<tr class="codeline" data-linenumber="371"><td class="num" id="LN371">371</td><td class="line"> g_signal_new (<span class='string_literal'>"error"</span>, <span class='macro'>G_OBJECT_CLASS_TYPE (object_class)<span class='macro_popup'>((((GTypeClass*) (object_class))-&gt;g_type))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="372"><td class="num" id="LN372">372</td><td class="line"> G_SIGNAL_RUN_LAST,</td></tr>
+<tr class="codeline" data-linenumber="373"><td class="num" id="LN373">373</td><td class="line"> <span class='macro'>G_STRUCT_OFFSET (PlumaFileBrowserStoreClass, error)<span class='macro_popup'>((glong) __builtin_offsetof(PlumaFileBrowserStoreClass, error<br>))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="374"><td class="num" id="LN374">374</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="375"><td class="num" id="LN375">375</td><td class="line"> <span class='macro'>G_TYPE_NONE<span class='macro_popup'>((GType) ((1) &lt;&lt; (2)))</span></span>, 2, <span class='macro'>G_TYPE_UINT<span class='macro_popup'>((GType) ((7) &lt;&lt; (2)))</span></span>, <span class='macro'>G_TYPE_STRING<span class='macro_popup'>((GType) ((16) &lt;&lt; (2)))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="376"><td class="num" id="LN376">376</td><td class="line"> model_signals[NO_TRASH] =</td></tr>
+<tr class="codeline" data-linenumber="377"><td class="num" id="LN377">377</td><td class="line"> g_signal_new (<span class='string_literal'>"no-trash"</span>, <span class='macro'>G_OBJECT_CLASS_TYPE (object_class)<span class='macro_popup'>((((GTypeClass*) (object_class))-&gt;g_type))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="378"><td class="num" id="LN378">378</td><td class="line"> G_SIGNAL_RUN_LAST,</td></tr>
+<tr class="codeline" data-linenumber="379"><td class="num" id="LN379">379</td><td class="line"> <span class='macro'>G_STRUCT_OFFSET (PlumaFileBrowserStoreClass, no_trash)<span class='macro_popup'>((glong) __builtin_offsetof(PlumaFileBrowserStoreClass, no_trash<br>))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="380"><td class="num" id="LN380">380</td><td class="line"> g_signal_accumulator_true_handled, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="381"><td class="num" id="LN381">381</td><td class="line"> <span class='macro'>G_TYPE_BOOLEAN<span class='macro_popup'>((GType) ((5) &lt;&lt; (2)))</span></span>, 1, <span class='macro'>G_TYPE_POINTER<span class='macro_popup'>((GType) ((17) &lt;&lt; (2)))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="382"><td class="num" id="LN382">382</td><td class="line"> model_signals[RENAME] =</td></tr>
+<tr class="codeline" data-linenumber="383"><td class="num" id="LN383">383</td><td class="line"> g_signal_new (<span class='string_literal'>"rename"</span>,</td></tr>
+<tr class="codeline" data-linenumber="384"><td class="num" id="LN384">384</td><td class="line"> <span class='macro'>G_OBJECT_CLASS_TYPE (object_class)<span class='macro_popup'>((((GTypeClass*) (object_class))-&gt;g_type))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="385"><td class="num" id="LN385">385</td><td class="line"> G_SIGNAL_RUN_LAST,</td></tr>
+<tr class="codeline" data-linenumber="386"><td class="num" id="LN386">386</td><td class="line"> <span class='macro'>G_STRUCT_OFFSET (PlumaFileBrowserStoreClass, rename)<span class='macro_popup'>((glong) __builtin_offsetof(PlumaFileBrowserStoreClass, rename<br>))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="387"><td class="num" id="LN387">387</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="388"><td class="num" id="LN388">388</td><td class="line"> <span class='macro'>G_TYPE_NONE<span class='macro_popup'>((GType) ((1) &lt;&lt; (2)))</span></span>, 2,</td></tr>
+<tr class="codeline" data-linenumber="389"><td class="num" id="LN389">389</td><td class="line"> <span class='macro'>G_TYPE_STRING<span class='macro_popup'>((GType) ((16) &lt;&lt; (2)))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="390"><td class="num" id="LN390">390</td><td class="line"> <span class='macro'>G_TYPE_STRING<span class='macro_popup'>((GType) ((16) &lt;&lt; (2)))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="391"><td class="num" id="LN391">391</td><td class="line"> model_signals[BEGIN_REFRESH] =</td></tr>
+<tr class="codeline" data-linenumber="392"><td class="num" id="LN392">392</td><td class="line"> g_signal_new (<span class='string_literal'>"begin-refresh"</span>,</td></tr>
+<tr class="codeline" data-linenumber="393"><td class="num" id="LN393">393</td><td class="line"> <span class='macro'>G_OBJECT_CLASS_TYPE (object_class)<span class='macro_popup'>((((GTypeClass*) (object_class))-&gt;g_type))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="394"><td class="num" id="LN394">394</td><td class="line"> G_SIGNAL_RUN_LAST,</td></tr>
+<tr class="codeline" data-linenumber="395"><td class="num" id="LN395">395</td><td class="line"> <span class='macro'>G_STRUCT_OFFSET (PlumaFileBrowserStoreClass, begin_refresh)<span class='macro_popup'>((glong) __builtin_offsetof(PlumaFileBrowserStoreClass, begin_refresh<br>))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="396"><td class="num" id="LN396">396</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="397"><td class="num" id="LN397">397</td><td class="line"> <span class='macro'>G_TYPE_NONE<span class='macro_popup'>((GType) ((1) &lt;&lt; (2)))</span></span>, 0);</td></tr>
+<tr class="codeline" data-linenumber="398"><td class="num" id="LN398">398</td><td class="line"> model_signals[END_REFRESH] =</td></tr>
+<tr class="codeline" data-linenumber="399"><td class="num" id="LN399">399</td><td class="line"> g_signal_new (<span class='string_literal'>"end-refresh"</span>,</td></tr>
+<tr class="codeline" data-linenumber="400"><td class="num" id="LN400">400</td><td class="line"> <span class='macro'>G_OBJECT_CLASS_TYPE (object_class)<span class='macro_popup'>((((GTypeClass*) (object_class))-&gt;g_type))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="401"><td class="num" id="LN401">401</td><td class="line"> G_SIGNAL_RUN_LAST,</td></tr>
+<tr class="codeline" data-linenumber="402"><td class="num" id="LN402">402</td><td class="line"> <span class='macro'>G_STRUCT_OFFSET (PlumaFileBrowserStoreClass, end_refresh)<span class='macro_popup'>((glong) __builtin_offsetof(PlumaFileBrowserStoreClass, end_refresh<br>))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="403"><td class="num" id="LN403">403</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="404"><td class="num" id="LN404">404</td><td class="line"> <span class='macro'>G_TYPE_NONE<span class='macro_popup'>((GType) ((1) &lt;&lt; (2)))</span></span>, 0);</td></tr>
+<tr class="codeline" data-linenumber="405"><td class="num" id="LN405">405</td><td class="line"> model_signals[UNLOAD] =</td></tr>
+<tr class="codeline" data-linenumber="406"><td class="num" id="LN406">406</td><td class="line"> g_signal_new (<span class='string_literal'>"unload"</span>,</td></tr>
+<tr class="codeline" data-linenumber="407"><td class="num" id="LN407">407</td><td class="line"> <span class='macro'>G_OBJECT_CLASS_TYPE (object_class)<span class='macro_popup'>((((GTypeClass*) (object_class))-&gt;g_type))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="408"><td class="num" id="LN408">408</td><td class="line"> G_SIGNAL_RUN_LAST,</td></tr>
+<tr class="codeline" data-linenumber="409"><td class="num" id="LN409">409</td><td class="line"> <span class='macro'>G_STRUCT_OFFSET (PlumaFileBrowserStoreClass, unload)<span class='macro_popup'>((glong) __builtin_offsetof(PlumaFileBrowserStoreClass, unload<br>))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="410"><td class="num" id="LN410">410</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="411"><td class="num" id="LN411">411</td><td class="line"> <span class='macro'>G_TYPE_NONE<span class='macro_popup'>((GType) ((1) &lt;&lt; (2)))</span></span>, 1,</td></tr>
+<tr class="codeline" data-linenumber="412"><td class="num" id="LN412">412</td><td class="line"> <span class='macro'>G_TYPE_STRING<span class='macro_popup'>((GType) ((16) &lt;&lt; (2)))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="413"><td class="num" id="LN413">413</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="414"><td class="num" id="LN414">414</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="415"><td class="num" id="LN415">415</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="416"><td class="num" id="LN416">416</td><td class="line">pluma_file_browser_store_class_finalize (PlumaFileBrowserStoreClass *klass)</td></tr>
+<tr class="codeline" data-linenumber="417"><td class="num" id="LN417">417</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="418"><td class="num" id="LN418">418</td><td class="line"> <span class='comment'>/* dummy function - used by G_DEFINE_DYNAMIC_TYPE_EXTENDED */</span></td></tr>
+<tr class="codeline" data-linenumber="419"><td class="num" id="LN419">419</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="420"><td class="num" id="LN420">420</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="421"><td class="num" id="LN421">421</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="422"><td class="num" id="LN422">422</td><td class="line">pluma_file_browser_store_iface_init (GtkTreeModelIface * iface)</td></tr>
+<tr class="codeline" data-linenumber="423"><td class="num" id="LN423">423</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="424"><td class="num" id="LN424">424</td><td class="line"> iface-&gt;get_flags = pluma_file_browser_store_get_flags;</td></tr>
+<tr class="codeline" data-linenumber="425"><td class="num" id="LN425">425</td><td class="line"> iface-&gt;get_n_columns = pluma_file_browser_store_get_n_columns;</td></tr>
+<tr class="codeline" data-linenumber="426"><td class="num" id="LN426">426</td><td class="line"> iface-&gt;get_column_type = pluma_file_browser_store_get_column_type;</td></tr>
+<tr class="codeline" data-linenumber="427"><td class="num" id="LN427">427</td><td class="line"> iface-&gt;get_iter = pluma_file_browser_store_get_iter;</td></tr>
+<tr class="codeline" data-linenumber="428"><td class="num" id="LN428">428</td><td class="line"> iface-&gt;get_path = pluma_file_browser_store_get_path;</td></tr>
+<tr class="codeline" data-linenumber="429"><td class="num" id="LN429">429</td><td class="line"> iface-&gt;get_value = pluma_file_browser_store_get_value;</td></tr>
+<tr class="codeline" data-linenumber="430"><td class="num" id="LN430">430</td><td class="line"> iface-&gt;iter_next = pluma_file_browser_store_iter_next;</td></tr>
+<tr class="codeline" data-linenumber="431"><td class="num" id="LN431">431</td><td class="line"> iface-&gt;iter_children = pluma_file_browser_store_iter_children;</td></tr>
+<tr class="codeline" data-linenumber="432"><td class="num" id="LN432">432</td><td class="line"> iface-&gt;iter_has_child = pluma_file_browser_store_iter_has_child;</td></tr>
+<tr class="codeline" data-linenumber="433"><td class="num" id="LN433">433</td><td class="line"> iface-&gt;iter_n_children = pluma_file_browser_store_iter_n_children;</td></tr>
+<tr class="codeline" data-linenumber="434"><td class="num" id="LN434">434</td><td class="line"> iface-&gt;iter_nth_child = pluma_file_browser_store_iter_nth_child;</td></tr>
+<tr class="codeline" data-linenumber="435"><td class="num" id="LN435">435</td><td class="line"> iface-&gt;iter_parent = pluma_file_browser_store_iter_parent;</td></tr>
+<tr class="codeline" data-linenumber="436"><td class="num" id="LN436">436</td><td class="line"> iface-&gt;row_inserted = pluma_file_browser_store_row_inserted;</td></tr>
+<tr class="codeline" data-linenumber="437"><td class="num" id="LN437">437</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="438"><td class="num" id="LN438">438</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="439"><td class="num" id="LN439">439</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="440"><td class="num" id="LN440">440</td><td class="line">pluma_file_browser_store_drag_source_init (GtkTreeDragSourceIface * iface)</td></tr>
+<tr class="codeline" data-linenumber="441"><td class="num" id="LN441">441</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="442"><td class="num" id="LN442">442</td><td class="line"> iface-&gt;row_draggable = pluma_file_browser_store_row_draggable;</td></tr>
+<tr class="codeline" data-linenumber="443"><td class="num" id="LN443">443</td><td class="line"> iface-&gt;drag_data_delete = pluma_file_browser_store_drag_data_delete;</td></tr>
+<tr class="codeline" data-linenumber="444"><td class="num" id="LN444">444</td><td class="line"> iface-&gt;drag_data_get = pluma_file_browser_store_drag_data_get;</td></tr>
+<tr class="codeline" data-linenumber="445"><td class="num" id="LN445">445</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="446"><td class="num" id="LN446">446</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="447"><td class="num" id="LN447">447</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="448"><td class="num" id="LN448">448</td><td class="line">pluma_file_browser_store_init (PlumaFileBrowserStore * obj)</td></tr>
+<tr class="codeline" data-linenumber="449"><td class="num" id="LN449">449</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="450"><td class="num" id="LN450">450</td><td class="line"> obj-&gt;priv = pluma_file_browser_store_get_instance_private (obj);</td></tr>
+<tr class="codeline" data-linenumber="451"><td class="num" id="LN451">451</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="452"><td class="num" id="LN452">452</td><td class="line"> obj-&gt;priv-&gt;column_types[PLUMA_FILE_BROWSER_STORE_COLUMN_URI] =</td></tr>
+<tr class="codeline" data-linenumber="453"><td class="num" id="LN453">453</td><td class="line"> <span class='macro'>G_TYPE_STRING<span class='macro_popup'>((GType) ((16) &lt;&lt; (2)))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="454"><td class="num" id="LN454">454</td><td class="line"> obj-&gt;priv-&gt;column_types[PLUMA_FILE_BROWSER_STORE_COLUMN_NAME] =</td></tr>
+<tr class="codeline" data-linenumber="455"><td class="num" id="LN455">455</td><td class="line"> <span class='macro'>G_TYPE_STRING<span class='macro_popup'>((GType) ((16) &lt;&lt; (2)))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="456"><td class="num" id="LN456">456</td><td class="line"> obj-&gt;priv-&gt;column_types[PLUMA_FILE_BROWSER_STORE_COLUMN_FLAGS] =</td></tr>
+<tr class="codeline" data-linenumber="457"><td class="num" id="LN457">457</td><td class="line"> <span class='macro'>G_TYPE_UINT<span class='macro_popup'>((GType) ((7) &lt;&lt; (2)))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="458"><td class="num" id="LN458">458</td><td class="line"> obj-&gt;priv-&gt;column_types[PLUMA_FILE_BROWSER_STORE_COLUMN_ICON] =</td></tr>
+<tr class="codeline" data-linenumber="459"><td class="num" id="LN459">459</td><td class="line"> <span class='macro'>GDK_TYPE_PIXBUF<span class='macro_popup'>(gdk_pixbuf_get_type ())</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="460"><td class="num" id="LN460">460</td><td class="line"> obj-&gt;priv-&gt;column_types[PLUMA_FILE_BROWSER_STORE_COLUMN_EMBLEM] =</td></tr>
+<tr class="codeline" data-linenumber="461"><td class="num" id="LN461">461</td><td class="line"> <span class='macro'>GDK_TYPE_PIXBUF<span class='macro_popup'>(gdk_pixbuf_get_type ())</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="462"><td class="num" id="LN462">462</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="463"><td class="num" id="LN463">463</td><td class="line"> <span class='comment'>// Default filter mode is hiding the hidden files</span></td></tr>
+<tr class="codeline" data-linenumber="464"><td class="num" id="LN464">464</td><td class="line"> obj-&gt;priv-&gt;filter_mode = pluma_file_browser_store_filter_mode_get_default ();</td></tr>
+<tr class="codeline" data-linenumber="465"><td class="num" id="LN465">465</td><td class="line"> obj-&gt;priv-&gt;sort_func = model_sort_default;</td></tr>
+<tr class="codeline" data-linenumber="466"><td class="num" id="LN466">466</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="467"><td class="num" id="LN467">467</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="468"><td class="num" id="LN468">468</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="469"><td class="num" id="LN469">469</td><td class="line">node_has_parent (FileBrowserNode * node, FileBrowserNode * parent)</td></tr>
+<tr class="codeline" data-linenumber="470"><td class="num" id="LN470">470</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="471"><td class="num" id="LN471">471</td><td class="line"> <span class='keyword'>if</span> (node-&gt;parent == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="472"><td class="num" id="LN472">472</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="473"><td class="num" id="LN473">473</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="474"><td class="num" id="LN474">474</td><td class="line"> <span class='keyword'>if</span> (node-&gt;parent == parent)</td></tr>
+<tr class="codeline" data-linenumber="475"><td class="num" id="LN475">475</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="476"><td class="num" id="LN476">476</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="477"><td class="num" id="LN477">477</td><td class="line"> <span class='keyword'>return</span> node_has_parent (node-&gt;parent, parent);</td></tr>
+<tr class="codeline" data-linenumber="478"><td class="num" id="LN478">478</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="479"><td class="num" id="LN479">479</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="480"><td class="num" id="LN480">480</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="481"><td class="num" id="LN481">481</td><td class="line">node_in_tree (PlumaFileBrowserStore * model, FileBrowserNode * node)</td></tr>
+<tr class="codeline" data-linenumber="482"><td class="num" id="LN482">482</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="483"><td class="num" id="LN483">483</td><td class="line"> <span class='keyword'>return</span> node_has_parent (node, model-&gt;priv-&gt;virtual_root);</td></tr>
+<tr class="codeline" data-linenumber="484"><td class="num" id="LN484">484</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="485"><td class="num" id="LN485">485</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="486"><td class="num" id="LN486">486</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="487"><td class="num" id="LN487">487</td><td class="line">model_node_visibility (PlumaFileBrowserStore * model,</td></tr>
+<tr class="codeline" data-linenumber="488"><td class="num" id="LN488">488</td><td class="line"> FileBrowserNode * node)</td></tr>
+<tr class="codeline" data-linenumber="489"><td class="num" id="LN489">489</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="490"><td class="num" id="LN490">490</td><td class="line"> <span class='keyword'>if</span> (node == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="491"><td class="num" id="LN491">491</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="492"><td class="num" id="LN492">492</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="493"><td class="num" id="LN493">493</td><td class="line"> <span class='keyword'>if</span> (<span class='macro'>NODE_IS_DUMMY (node)<span class='macro_popup'>(((node)-&gt;flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_DUMMY<br>))</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="494"><td class="num" id="LN494">494</td><td class="line"> <span class='keyword'>return</span> !<span class='macro'>NODE_IS_HIDDEN (node)<span class='macro_popup'>(((node)-&gt;flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_HIDDEN<br>))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="495"><td class="num" id="LN495">495</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="496"><td class="num" id="LN496">496</td><td class="line"> <span class='keyword'>if</span> (node == model-&gt;priv-&gt;virtual_root)</td></tr>
+<tr class="codeline" data-linenumber="497"><td class="num" id="LN497">497</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="498"><td class="num" id="LN498">498</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="499"><td class="num" id="LN499">499</td><td class="line"> <span class='keyword'>if</span> (!node_has_parent (node, model-&gt;priv-&gt;virtual_root))</td></tr>
+<tr class="codeline" data-linenumber="500"><td class="num" id="LN500">500</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="501"><td class="num" id="LN501">501</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="502"><td class="num" id="LN502">502</td><td class="line"> <span class='keyword'>return</span> !<span class='macro'>NODE_IS_FILTERED (node)<span class='macro_popup'>(((node)-&gt;flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_FILTERED<br>))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="503"><td class="num" id="LN503">503</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="504"><td class="num" id="LN504">504</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="505"><td class="num" id="LN505">505</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="506"><td class="num" id="LN506">506</td><td class="line">model_node_inserted (PlumaFileBrowserStore * model,</td></tr>
+<tr class="codeline" data-linenumber="507"><td class="num" id="LN507">507</td><td class="line"> FileBrowserNode * node)</td></tr>
+<tr class="codeline" data-linenumber="508"><td class="num" id="LN508">508</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="509"><td class="num" id="LN509">509</td><td class="line"> <span class='keyword'>return</span> node == model-&gt;priv-&gt;virtual_root || (model_node_visibility (model, node) &amp;&amp; node-&gt;inserted);</td></tr>
+<tr class="codeline" data-linenumber="510"><td class="num" id="LN510">510</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="511"><td class="num" id="LN511">511</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="512"><td class="num" id="LN512">512</td><td class="line"><span class='comment'>/* Interface implementation */</span></td></tr>
+<tr class="codeline" data-linenumber="513"><td class="num" id="LN513">513</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="514"><td class="num" id="LN514">514</td><td class="line"><span class='keyword'>static</span> GtkTreeModelFlags</td></tr>
+<tr class="codeline" data-linenumber="515"><td class="num" id="LN515">515</td><td class="line">pluma_file_browser_store_get_flags (GtkTreeModel * tree_model)</td></tr>
+<tr class="codeline" data-linenumber="516"><td class="num" id="LN516">516</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="517"><td class="num" id="LN517">517</td><td class="line"> <span class='macro'>g_return_val_if_fail (PLUMA_IS_FILE_BROWSER_STORE (tree_model),<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_274<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((tree_model)); GType __t = ((pluma_file_browser_store_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_274 = 1; else _g_boolean_var_274 =<br> 0; _g_boolean_var_274; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "PLUMA_IS_FILE_BROWSER_STORE (tree_model)"<br>); return ((GtkTreeModelFlags) 0); } } while (0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="518"><td class="num" id="LN518">518</td><td class="line"> <span class='macro'>(GtkTreeModelFlags) 0)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_274<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((tree_model)); GType __t = ((pluma_file_browser_store_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_274 = 1; else _g_boolean_var_274 =<br> 0; _g_boolean_var_274; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "PLUMA_IS_FILE_BROWSER_STORE (tree_model)"<br>); return ((GtkTreeModelFlags) 0); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="519"><td class="num" id="LN519">519</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="520"><td class="num" id="LN520">520</td><td class="line"> <span class='keyword'>return</span> GTK_TREE_MODEL_ITERS_PERSIST;</td></tr>
+<tr class="codeline" data-linenumber="521"><td class="num" id="LN521">521</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="522"><td class="num" id="LN522">522</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="523"><td class="num" id="LN523">523</td><td class="line"><span class='keyword'>static</span> gint</td></tr>
+<tr class="codeline" data-linenumber="524"><td class="num" id="LN524">524</td><td class="line">pluma_file_browser_store_get_n_columns (GtkTreeModel * tree_model)</td></tr>
+<tr class="codeline" data-linenumber="525"><td class="num" id="LN525">525</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="526"><td class="num" id="LN526">526</td><td class="line"> <span class='macro'>g_return_val_if_fail (PLUMA_IS_FILE_BROWSER_STORE (tree_model), 0)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_275<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((tree_model)); GType __t = ((pluma_file_browser_store_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_275 = 1; else _g_boolean_var_275 =<br> 0; _g_boolean_var_275; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "PLUMA_IS_FILE_BROWSER_STORE (tree_model)"<br>); return (0); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="527"><td class="num" id="LN527">527</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="528"><td class="num" id="LN528">528</td><td class="line"> <span class='keyword'>return</span> PLUMA_FILE_BROWSER_STORE_COLUMN_NUM;</td></tr>
+<tr class="codeline" data-linenumber="529"><td class="num" id="LN529">529</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="530"><td class="num" id="LN530">530</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="531"><td class="num" id="LN531">531</td><td class="line"><span class='keyword'>static</span> GType</td></tr>
+<tr class="codeline" data-linenumber="532"><td class="num" id="LN532">532</td><td class="line">pluma_file_browser_store_get_column_type (GtkTreeModel * tree_model, gint idx)</td></tr>
+<tr class="codeline" data-linenumber="533"><td class="num" id="LN533">533</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="534"><td class="num" id="LN534">534</td><td class="line"> <span class='macro'>g_return_val_if_fail (PLUMA_IS_FILE_BROWSER_STORE (tree_model),<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_276<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((tree_model)); GType __t = ((pluma_file_browser_store_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_276 = 1; else _g_boolean_var_276 =<br> 0; _g_boolean_var_276; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "PLUMA_IS_FILE_BROWSER_STORE (tree_model)"<br>); return (((GType) ((0) &lt;&lt; (2)))); } } while (0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="535"><td class="num" id="LN535">535</td><td class="line"> <span class='macro'>G_TYPE_INVALID)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_276<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((tree_model)); GType __t = ((pluma_file_browser_store_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_276 = 1; else _g_boolean_var_276 =<br> 0; _g_boolean_var_276; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "PLUMA_IS_FILE_BROWSER_STORE (tree_model)"<br>); return (((GType) ((0) &lt;&lt; (2)))); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="536"><td class="num" id="LN536">536</td><td class="line"> <span class='macro'>g_return_val_if_fail (idx &lt; PLUMA_FILE_BROWSER_STORE_COLUMN_NUM &amp;&amp;<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_277<br>; if (idx &lt; PLUMA_FILE_BROWSER_STORE_COLUMN_NUM &amp;&amp;<br> idx &gt;= 0) _g_boolean_var_277 = 1; else _g_boolean_var_277<br> = 0; _g_boolean_var_277; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "idx &lt; PLUMA_FILE_BROWSER_STORE_COLUMN_NUM &amp;&amp; idx &gt;= 0"<br>); return (((GType) ((0) &lt;&lt; (2)))); } } while (0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="537"><td class="num" id="LN537">537</td><td class="line"> <span class='macro'>idx &gt;= 0, G_TYPE_INVALID)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_277<br>; if (idx &lt; PLUMA_FILE_BROWSER_STORE_COLUMN_NUM &amp;&amp;<br> idx &gt;= 0) _g_boolean_var_277 = 1; else _g_boolean_var_277<br> = 0; _g_boolean_var_277; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "idx &lt; PLUMA_FILE_BROWSER_STORE_COLUMN_NUM &amp;&amp; idx &gt;= 0"<br>); return (((GType) ((0) &lt;&lt; (2)))); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="538"><td class="num" id="LN538">538</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="539"><td class="num" id="LN539">539</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>PLUMA_FILE_BROWSER_STORE (tree_model)<span class='macro_popup'>((((PlumaFileBrowserStore*) (void *) ((tree_model)))))</span></span>-&gt;priv-&gt;column_types[idx];</td></tr>
+<tr class="codeline" data-linenumber="540"><td class="num" id="LN540">540</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="541"><td class="num" id="LN541">541</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="542"><td class="num" id="LN542">542</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="543"><td class="num" id="LN543">543</td><td class="line">pluma_file_browser_store_get_iter (GtkTreeModel * tree_model,</td></tr>
+<tr class="codeline" data-linenumber="544"><td class="num" id="LN544">544</td><td class="line"> GtkTreeIter * iter, GtkTreePath * path)</td></tr>
+<tr class="codeline" data-linenumber="545"><td class="num" id="LN545">545</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="546"><td class="num" id="LN546">546</td><td class="line"> gint * indices, depth, i;</td></tr>
+<tr class="codeline" data-linenumber="547"><td class="num" id="LN547">547</td><td class="line"> FileBrowserNode * node;</td></tr>
+<tr class="codeline" data-linenumber="548"><td class="num" id="LN548">548</td><td class="line"> PlumaFileBrowserStore * model;</td></tr>
+<tr class="codeline" data-linenumber="549"><td class="num" id="LN549">549</td><td class="line"> gint num;</td></tr>
+<tr class="codeline" data-linenumber="550"><td class="num" id="LN550">550</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="551"><td class="num" id="LN551">551</td><td class="line"> <span class='macro'>g_assert (PLUMA_IS_FILE_BROWSER_STORE (tree_model))<span class='macro_popup'>do { if (__builtin_expect (__extension__ ({ int _g_boolean_var_278<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((tree_model)); GType __t = ((pluma_file_browser_store_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_278 = 1; else _g_boolean_var_278 =<br> 0; _g_boolean_var_278; }), 1)) ; else g_assertion_message_expr<br> (((gchar*) 0), "pluma-file-browser-store.c", 551, ((const char<br>*) (__func__)), "PLUMA_IS_FILE_BROWSER_STORE (tree_model)"); }<br> while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="552"><td class="num" id="LN552">552</td><td class="line"> <span class='macro'>g_assert (path != NULL)<span class='macro_popup'>do { if (__builtin_expect (__extension__ ({ int _g_boolean_var_279<br>; if (path != ((void*)0)) _g_boolean_var_279 = 1; else _g_boolean_var_279<br> = 0; _g_boolean_var_279; }), 1)) ; else g_assertion_message_expr<br> (((gchar*) 0), "pluma-file-browser-store.c", 552, ((const char<br>*) (__func__)), "path != NULL"); } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="553"><td class="num" id="LN553">553</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="554"><td class="num" id="LN554">554</td><td class="line"> model = <span class='macro'>PLUMA_FILE_BROWSER_STORE (tree_model)<span class='macro_popup'>((((PlumaFileBrowserStore*) (void *) ((tree_model)))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="555"><td class="num" id="LN555">555</td><td class="line"> indices = gtk_tree_path_get_indices (path);</td></tr>
+<tr class="codeline" data-linenumber="556"><td class="num" id="LN556">556</td><td class="line"> depth = gtk_tree_path_get_depth (path);</td></tr>
+<tr class="codeline" data-linenumber="557"><td class="num" id="LN557">557</td><td class="line"> node = model-&gt;priv-&gt;virtual_root;</td></tr>
+<tr class="codeline" data-linenumber="558"><td class="num" id="LN558">558</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="559"><td class="num" id="LN559">559</td><td class="line"> <span class='keyword'>for</span> (i = 0; i &lt; depth; ++i) {</td></tr>
+<tr class="codeline" data-linenumber="560"><td class="num" id="LN560">560</td><td class="line"> GSList * item;</td></tr>
+<tr class="codeline" data-linenumber="561"><td class="num" id="LN561">561</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="562"><td class="num" id="LN562">562</td><td class="line"> <span class='keyword'>if</span> (node == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="563"><td class="num" id="LN563">563</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="564"><td class="num" id="LN564">564</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="565"><td class="num" id="LN565">565</td><td class="line"> num = 0;</td></tr>
+<tr class="codeline" data-linenumber="566"><td class="num" id="LN566">566</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="567"><td class="num" id="LN567">567</td><td class="line"> <span class='keyword'>if</span> (!<span class='macro'>NODE_IS_DIR (node)<span class='macro_popup'>(((node)-&gt;flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_DIRECTORY<br>))</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="568"><td class="num" id="LN568">568</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="569"><td class="num" id="LN569">569</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="570"><td class="num" id="LN570">570</td><td class="line"> <span class='keyword'>for</span> (item = <span class='macro'>FILE_BROWSER_NODE_DIR (node)<span class='macro_popup'>((FileBrowserNodeDir *)(node))</span></span>-&gt;children; item; item = item-&gt;next) {</td></tr>
+<tr class="codeline" data-linenumber="571"><td class="num" id="LN571">571</td><td class="line"> FileBrowserNode * child;</td></tr>
+<tr class="codeline" data-linenumber="572"><td class="num" id="LN572">572</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="573"><td class="num" id="LN573">573</td><td class="line"> child = (FileBrowserNode *) (item-&gt;data);</td></tr>
+<tr class="codeline" data-linenumber="574"><td class="num" id="LN574">574</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="575"><td class="num" id="LN575">575</td><td class="line"> <span class='keyword'>if</span> (model_node_inserted (model, child)) {</td></tr>
+<tr class="codeline" data-linenumber="576"><td class="num" id="LN576">576</td><td class="line"> <span class='keyword'>if</span> (num == indices[i]) {</td></tr>
+<tr class="codeline" data-linenumber="577"><td class="num" id="LN577">577</td><td class="line"> node = child;</td></tr>
+<tr class="codeline" data-linenumber="578"><td class="num" id="LN578">578</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="579"><td class="num" id="LN579">579</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="580"><td class="num" id="LN580">580</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="581"><td class="num" id="LN581">581</td><td class="line"> num++;</td></tr>
+<tr class="codeline" data-linenumber="582"><td class="num" id="LN582">582</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="583"><td class="num" id="LN583">583</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="584"><td class="num" id="LN584">584</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="585"><td class="num" id="LN585">585</td><td class="line"> <span class='keyword'>if</span> (item == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="586"><td class="num" id="LN586">586</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="587"><td class="num" id="LN587">587</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="588"><td class="num" id="LN588">588</td><td class="line"> node = (FileBrowserNode *) (item-&gt;data);</td></tr>
+<tr class="codeline" data-linenumber="589"><td class="num" id="LN589">589</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="590"><td class="num" id="LN590">590</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="591"><td class="num" id="LN591">591</td><td class="line"> iter-&gt;user_data = node;</td></tr>
+<tr class="codeline" data-linenumber="592"><td class="num" id="LN592">592</td><td class="line"> iter-&gt;user_data2 = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="593"><td class="num" id="LN593">593</td><td class="line"> iter-&gt;user_data3 = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="594"><td class="num" id="LN594">594</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="595"><td class="num" id="LN595">595</td><td class="line"> <span class='keyword'>return</span> node != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="596"><td class="num" id="LN596">596</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="597"><td class="num" id="LN597">597</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="598"><td class="num" id="LN598">598</td><td class="line"><span class='keyword'>static</span> GtkTreePath *</td></tr>
+<tr class="codeline" data-linenumber="599"><td class="num" id="LN599">599</td><td class="line">pluma_file_browser_store_get_path_real (PlumaFileBrowserStore * model,</td></tr>
+<tr class="codeline" data-linenumber="600"><td class="num" id="LN600">600</td><td class="line"> FileBrowserNode * node)</td></tr>
+<tr class="codeline" data-linenumber="601"><td class="num" id="LN601">601</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="602"><td class="num" id="LN602">602</td><td class="line"> GtkTreePath *path;</td></tr>
+<tr class="codeline" data-linenumber="603"><td class="num" id="LN603">603</td><td class="line"> gint num = 0;</td></tr>
+<tr class="codeline" data-linenumber="604"><td class="num" id="LN604">604</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="605"><td class="num" id="LN605">605</td><td class="line"> path = gtk_tree_path_new ();</td></tr>
+<tr class="codeline" data-linenumber="606"><td class="num" id="LN606">606</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="607"><td class="num" id="LN607">607</td><td class="line"> <span class='keyword'>while</span> (node != model-&gt;priv-&gt;virtual_root) {</td></tr>
+<tr class="codeline" data-linenumber="608"><td class="num" id="LN608">608</td><td class="line"> GSList *item;</td></tr>
+<tr class="codeline" data-linenumber="609"><td class="num" id="LN609">609</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="610"><td class="num" id="LN610">610</td><td class="line"> <span class='keyword'>if</span> (node-&gt;parent == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="611"><td class="num" id="LN611">611</td><td class="line"> gtk_tree_path_free (path);</td></tr>
+<tr class="codeline" data-linenumber="612"><td class="num" id="LN612">612</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="613"><td class="num" id="LN613">613</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="614"><td class="num" id="LN614">614</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="615"><td class="num" id="LN615">615</td><td class="line"> num = 0;</td></tr>
+<tr class="codeline" data-linenumber="616"><td class="num" id="LN616">616</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="617"><td class="num" id="LN617">617</td><td class="line"> <span class='keyword'>for</span> (item = <span class='macro'>FILE_BROWSER_NODE_DIR (node-&gt;parent)<span class='macro_popup'>((FileBrowserNodeDir *)(node-&gt;parent))</span></span>-&gt;children; item; item = item-&gt;next) {</td></tr>
+<tr class="codeline" data-linenumber="618"><td class="num" id="LN618">618</td><td class="line"> FileBrowserNode *check;</td></tr>
+<tr class="codeline" data-linenumber="619"><td class="num" id="LN619">619</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="620"><td class="num" id="LN620">620</td><td class="line"> check = (FileBrowserNode *) (item-&gt;data);</td></tr>
+<tr class="codeline" data-linenumber="621"><td class="num" id="LN621">621</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="622"><td class="num" id="LN622">622</td><td class="line"> <span class='keyword'>if</span> (model_node_visibility (model, check) &amp;&amp; (check == node || check-&gt;inserted)) {</td></tr>
+<tr class="codeline" data-linenumber="623"><td class="num" id="LN623">623</td><td class="line"> <span class='keyword'>if</span> (check == node) {</td></tr>
+<tr class="codeline" data-linenumber="624"><td class="num" id="LN624">624</td><td class="line"> gtk_tree_path_prepend_index (path,</td></tr>
+<tr class="codeline" data-linenumber="625"><td class="num" id="LN625">625</td><td class="line"> num);</td></tr>
+<tr class="codeline" data-linenumber="626"><td class="num" id="LN626">626</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="627"><td class="num" id="LN627">627</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="628"><td class="num" id="LN628">628</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="629"><td class="num" id="LN629">629</td><td class="line"> ++num;</td></tr>
+<tr class="codeline" data-linenumber="630"><td class="num" id="LN630">630</td><td class="line"> } <span class='keyword'>else</span> <span class='keyword'>if</span> (check == node) {</td></tr>
+<tr class="codeline" data-linenumber="631"><td class="num" id="LN631">631</td><td class="line"> <span class='keyword'>if</span> (<span class='macro'>NODE_IS_DUMMY (node)<span class='macro_popup'>(((node)-&gt;flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_DUMMY<br>))</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="632"><td class="num" id="LN632">632</td><td class="line"> g_warning (<span class='string_literal'>"Dummy not visible???"</span>);</td></tr>
+<tr class="codeline" data-linenumber="633"><td class="num" id="LN633">633</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="634"><td class="num" id="LN634">634</td><td class="line"> gtk_tree_path_free (path);</td></tr>
+<tr class="codeline" data-linenumber="635"><td class="num" id="LN635">635</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="636"><td class="num" id="LN636">636</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="637"><td class="num" id="LN637">637</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="638"><td class="num" id="LN638">638</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="639"><td class="num" id="LN639">639</td><td class="line"> node = node-&gt;parent;</td></tr>
+<tr class="codeline" data-linenumber="640"><td class="num" id="LN640">640</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="641"><td class="num" id="LN641">641</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="642"><td class="num" id="LN642">642</td><td class="line"> <span class='keyword'>return</span> path;</td></tr>
+<tr class="codeline" data-linenumber="643"><td class="num" id="LN643">643</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="644"><td class="num" id="LN644">644</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="645"><td class="num" id="LN645">645</td><td class="line"><span class='keyword'>static</span> GtkTreePath *</td></tr>
+<tr class="codeline" data-linenumber="646"><td class="num" id="LN646">646</td><td class="line">pluma_file_browser_store_get_path (GtkTreeModel * tree_model,</td></tr>
+<tr class="codeline" data-linenumber="647"><td class="num" id="LN647">647</td><td class="line"> GtkTreeIter * iter)</td></tr>
+<tr class="codeline" data-linenumber="648"><td class="num" id="LN648">648</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="649"><td class="num" id="LN649">649</td><td class="line"> <span class='macro'>g_return_val_if_fail (PLUMA_IS_FILE_BROWSER_STORE (tree_model), NULL)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_280<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((tree_model)); GType __t = ((pluma_file_browser_store_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_280 = 1; else _g_boolean_var_280 =<br> 0; _g_boolean_var_280; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "PLUMA_IS_FILE_BROWSER_STORE (tree_model)"<br>); return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="650"><td class="num" id="LN650">650</td><td class="line"> <span class='macro'>g_return_val_if_fail (iter != NULL, NULL)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_281<br>; if (iter != ((void*)0)) _g_boolean_var_281 = 1; else _g_boolean_var_281<br> = 0; _g_boolean_var_281; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "iter != NULL"); return<br> (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="651"><td class="num" id="LN651">651</td><td class="line"> <span class='macro'>g_return_val_if_fail (iter-&gt;user_data != NULL, NULL)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_282<br>; if (iter-&gt;user_data != ((void*)0)) _g_boolean_var_282 = 1<br>; else _g_boolean_var_282 = 0; _g_boolean_var_282; }), 1))) {<br> } else { g_return_if_fail_warning (((gchar*) 0), ((const char<br>*) (__func__)), "iter-&gt;user_data != NULL"); return (((void<br>*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="652"><td class="num" id="LN652">652</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="653"><td class="num" id="LN653">653</td><td class="line"> <span class='keyword'>return</span> pluma_file_browser_store_get_path_real (<span class='macro'>PLUMA_FILE_BROWSER_STORE (tree_model)<span class='macro_popup'>((((PlumaFileBrowserStore*) (void *) ((tree_model)))))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="654"><td class="num" id="LN654">654</td><td class="line"> (FileBrowserNode *) (iter-&gt;user_data));</td></tr>
+<tr class="codeline" data-linenumber="655"><td class="num" id="LN655">655</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="656"><td class="num" id="LN656">656</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="657"><td class="num" id="LN657">657</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="658"><td class="num" id="LN658">658</td><td class="line">pluma_file_browser_store_get_value (GtkTreeModel * tree_model,</td></tr>
+<tr class="codeline" data-linenumber="659"><td class="num" id="LN659">659</td><td class="line"> GtkTreeIter * iter,</td></tr>
+<tr class="codeline" data-linenumber="660"><td class="num" id="LN660">660</td><td class="line"> gint column,</td></tr>
+<tr class="codeline" data-linenumber="661"><td class="num" id="LN661">661</td><td class="line"> GValue * value)</td></tr>
+<tr class="codeline" data-linenumber="662"><td class="num" id="LN662">662</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="663"><td class="num" id="LN663">663</td><td class="line"> FileBrowserNode *node;</td></tr>
+<tr class="codeline" data-linenumber="664"><td class="num" id="LN664">664</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="665"><td class="num" id="LN665">665</td><td class="line"> <span class='macro'>g_return_if_fail (PLUMA_IS_FILE_BROWSER_STORE (tree_model))<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_283<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((tree_model)); GType __t = ((pluma_file_browser_store_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_283 = 1; else _g_boolean_var_283 =<br> 0; _g_boolean_var_283; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "PLUMA_IS_FILE_BROWSER_STORE (tree_model)"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="666"><td class="num" id="LN666">666</td><td class="line"> <span class='macro'>g_return_if_fail (iter != NULL)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_284<br>; if (iter != ((void*)0)) _g_boolean_var_284 = 1; else _g_boolean_var_284<br> = 0; _g_boolean_var_284; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "iter != NULL"); return<br>; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="667"><td class="num" id="LN667">667</td><td class="line"> <span class='macro'>g_return_if_fail (iter-&gt;user_data != NULL)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_285<br>; if (iter-&gt;user_data != ((void*)0)) _g_boolean_var_285 = 1<br>; else _g_boolean_var_285 = 0; _g_boolean_var_285; }), 1))) {<br> } else { g_return_if_fail_warning (((gchar*) 0), ((const char<br>*) (__func__)), "iter-&gt;user_data != NULL"); return; } } while<br> (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="668"><td class="num" id="LN668">668</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="669"><td class="num" id="LN669">669</td><td class="line"> node = (FileBrowserNode *) (iter-&gt;user_data);</td></tr>
+<tr class="codeline" data-linenumber="670"><td class="num" id="LN670">670</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="671"><td class="num" id="LN671">671</td><td class="line"> g_value_init (value, <span class='macro'>PLUMA_FILE_BROWSER_STORE (tree_model)<span class='macro_popup'>((((PlumaFileBrowserStore*) (void *) ((tree_model)))))</span></span>-&gt;priv-&gt;column_types[column]);</td></tr>
+<tr class="codeline" data-linenumber="672"><td class="num" id="LN672">672</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="673"><td class="num" id="LN673">673</td><td class="line"> <span class='keyword'>switch</span> (column) {</td></tr>
+<tr class="codeline" data-linenumber="674"><td class="num" id="LN674">674</td><td class="line"> <span class='keyword'>case</span> PLUMA_FILE_BROWSER_STORE_COLUMN_URI:</td></tr>
+<tr class="codeline" data-linenumber="675"><td class="num" id="LN675">675</td><td class="line"> set_gvalue_from_node (value, node);</td></tr>
+<tr class="codeline" data-linenumber="676"><td class="num" id="LN676">676</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="677"><td class="num" id="LN677">677</td><td class="line"> <span class='keyword'>case</span> PLUMA_FILE_BROWSER_STORE_COLUMN_NAME:</td></tr>
+<tr class="codeline" data-linenumber="678"><td class="num" id="LN678">678</td><td class="line"> g_value_set_string (value, node-&gt;name);</td></tr>
+<tr class="codeline" data-linenumber="679"><td class="num" id="LN679">679</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="680"><td class="num" id="LN680">680</td><td class="line"> <span class='keyword'>case</span> PLUMA_FILE_BROWSER_STORE_COLUMN_FLAGS:</td></tr>
+<tr class="codeline" data-linenumber="681"><td class="num" id="LN681">681</td><td class="line"> g_value_set_uint (value, node-&gt;flags);</td></tr>
+<tr class="codeline" data-linenumber="682"><td class="num" id="LN682">682</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="683"><td class="num" id="LN683">683</td><td class="line"> <span class='keyword'>case</span> PLUMA_FILE_BROWSER_STORE_COLUMN_ICON:</td></tr>
+<tr class="codeline" data-linenumber="684"><td class="num" id="LN684">684</td><td class="line"> g_value_set_object (value, node-&gt;icon);</td></tr>
+<tr class="codeline" data-linenumber="685"><td class="num" id="LN685">685</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="686"><td class="num" id="LN686">686</td><td class="line"> <span class='keyword'>case</span> PLUMA_FILE_BROWSER_STORE_COLUMN_EMBLEM:</td></tr>
+<tr class="codeline" data-linenumber="687"><td class="num" id="LN687">687</td><td class="line"> g_value_set_object (value, node-&gt;emblem);</td></tr>
+<tr class="codeline" data-linenumber="688"><td class="num" id="LN688">688</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="689"><td class="num" id="LN689">689</td><td class="line"> <span class='keyword'>default</span>:</td></tr>
+<tr class="codeline" data-linenumber="690"><td class="num" id="LN690">690</td><td class="line"> <span class='macro'>g_return_if_reached ()<span class='macro_popup'>do { g_log (((gchar*) 0), G_LOG_LEVEL_CRITICAL, "file %s: line %d (%s): should not be reached"<br>, "pluma-file-browser-store.c", 690, ((const char*) (__func__<br>))); return; } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="691"><td class="num" id="LN691">691</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="692"><td class="num" id="LN692">692</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="693"><td class="num" id="LN693">693</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="694"><td class="num" id="LN694">694</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="695"><td class="num" id="LN695">695</td><td class="line">pluma_file_browser_store_iter_next (GtkTreeModel * tree_model,</td></tr>
+<tr class="codeline" data-linenumber="696"><td class="num" id="LN696">696</td><td class="line"> GtkTreeIter * iter)</td></tr>
+<tr class="codeline" data-linenumber="697"><td class="num" id="LN697">697</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="698"><td class="num" id="LN698">698</td><td class="line"> PlumaFileBrowserStore * model;</td></tr>
+<tr class="codeline" data-linenumber="699"><td class="num" id="LN699">699</td><td class="line"> FileBrowserNode * node;</td></tr>
+<tr class="codeline" data-linenumber="700"><td class="num" id="LN700">700</td><td class="line"> GSList * item;</td></tr>
+<tr class="codeline" data-linenumber="701"><td class="num" id="LN701">701</td><td class="line"> GSList * first;</td></tr>
+<tr class="codeline" data-linenumber="702"><td class="num" id="LN702">702</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="703"><td class="num" id="LN703">703</td><td class="line"> <span class='macro'>g_return_val_if_fail (PLUMA_IS_FILE_BROWSER_STORE (tree_model),<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_286<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((tree_model)); GType __t = ((pluma_file_browser_store_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_286 = 1; else _g_boolean_var_286 =<br> 0; _g_boolean_var_286; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "PLUMA_IS_FILE_BROWSER_STORE (tree_model)"<br>); return ((0)); } } while (0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="704"><td class="num" id="LN704">704</td><td class="line"> <span class='macro'>FALSE)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_286<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((tree_model)); GType __t = ((pluma_file_browser_store_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_286 = 1; else _g_boolean_var_286 =<br> 0; _g_boolean_var_286; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "PLUMA_IS_FILE_BROWSER_STORE (tree_model)"<br>); return ((0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="705"><td class="num" id="LN705">705</td><td class="line"> <span class='macro'>g_return_val_if_fail (iter != NULL, FALSE)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_287<br>; if (iter != ((void*)0)) _g_boolean_var_287 = 1; else _g_boolean_var_287<br> = 0; _g_boolean_var_287; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "iter != NULL"); return<br> ((0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="706"><td class="num" id="LN706">706</td><td class="line"> <span class='macro'>g_return_val_if_fail (iter-&gt;user_data != NULL, FALSE)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_288<br>; if (iter-&gt;user_data != ((void*)0)) _g_boolean_var_288 = 1<br>; else _g_boolean_var_288 = 0; _g_boolean_var_288; }), 1))) {<br> } else { g_return_if_fail_warning (((gchar*) 0), ((const char<br>*) (__func__)), "iter-&gt;user_data != NULL"); return ((0)); }<br> } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="707"><td class="num" id="LN707">707</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="708"><td class="num" id="LN708">708</td><td class="line"> model = <span class='macro'>PLUMA_FILE_BROWSER_STORE (tree_model)<span class='macro_popup'>((((PlumaFileBrowserStore*) (void *) ((tree_model)))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="709"><td class="num" id="LN709">709</td><td class="line"> node = (FileBrowserNode *) (iter-&gt;user_data);</td></tr>
+<tr class="codeline" data-linenumber="710"><td class="num" id="LN710">710</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="711"><td class="num" id="LN711">711</td><td class="line"> <span class='keyword'>if</span> (node-&gt;parent == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="712"><td class="num" id="LN712">712</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="713"><td class="num" id="LN713">713</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="714"><td class="num" id="LN714">714</td><td class="line"> first = <span class='macro'>g_slist_next (g_slist_find (FILE_BROWSER_NODE_DIR (node-&gt;parent)-&gt;children, node))<span class='macro_popup'>((g_slist_find (((FileBrowserNodeDir *)(node-&gt;parent))-&gt;<br>children, node)) ? (((GSList *)(g_slist_find (((FileBrowserNodeDir<br> *)(node-&gt;parent))-&gt;children, node)))-&gt;next) : ((void<br>*)0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="715"><td class="num" id="LN715">715</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="716"><td class="num" id="LN716">716</td><td class="line"> <span class='keyword'>for</span> (item = first; item; item = item-&gt;next) {</td></tr>
+<tr class="codeline" data-linenumber="717"><td class="num" id="LN717">717</td><td class="line"> <span class='keyword'>if</span> (model_node_inserted (model, (FileBrowserNode *) (item-&gt;data))) {</td></tr>
+<tr class="codeline" data-linenumber="718"><td class="num" id="LN718">718</td><td class="line"> iter-&gt;user_data = item-&gt;data;</td></tr>
+<tr class="codeline" data-linenumber="719"><td class="num" id="LN719">719</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="720"><td class="num" id="LN720">720</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="721"><td class="num" id="LN721">721</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="722"><td class="num" id="LN722">722</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="723"><td class="num" id="LN723">723</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="724"><td class="num" id="LN724">724</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="725"><td class="num" id="LN725">725</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="726"><td class="num" id="LN726">726</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="727"><td class="num" id="LN727">727</td><td class="line">pluma_file_browser_store_iter_children (GtkTreeModel * tree_model,</td></tr>
+<tr class="codeline" data-linenumber="728"><td class="num" id="LN728">728</td><td class="line"> GtkTreeIter * iter,</td></tr>
+<tr class="codeline" data-linenumber="729"><td class="num" id="LN729">729</td><td class="line"> GtkTreeIter * parent)</td></tr>
+<tr class="codeline" data-linenumber="730"><td class="num" id="LN730">730</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="731"><td class="num" id="LN731">731</td><td class="line"> FileBrowserNode * node;</td></tr>
+<tr class="codeline" data-linenumber="732"><td class="num" id="LN732">732</td><td class="line"> PlumaFileBrowserStore * model;</td></tr>
+<tr class="codeline" data-linenumber="733"><td class="num" id="LN733">733</td><td class="line"> GSList * item;</td></tr>
+<tr class="codeline" data-linenumber="734"><td class="num" id="LN734">734</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="735"><td class="num" id="LN735">735</td><td class="line"> <span class='macro'>g_return_val_if_fail (PLUMA_IS_FILE_BROWSER_STORE (tree_model),<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_289<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((tree_model)); GType __t = ((pluma_file_browser_store_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_289 = 1; else _g_boolean_var_289 =<br> 0; _g_boolean_var_289; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "PLUMA_IS_FILE_BROWSER_STORE (tree_model)"<br>); return ((0)); } } while (0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="736"><td class="num" id="LN736">736</td><td class="line"> <span class='macro'>FALSE)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_289<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((tree_model)); GType __t = ((pluma_file_browser_store_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_289 = 1; else _g_boolean_var_289 =<br> 0; _g_boolean_var_289; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "PLUMA_IS_FILE_BROWSER_STORE (tree_model)"<br>); return ((0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="737"><td class="num" id="LN737">737</td><td class="line"> <span class='macro'>g_return_val_if_fail (parent == NULL<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_290<br>; if (parent == ((void*)0) || parent-&gt;user_data != ((void*<br>)0)) _g_boolean_var_290 = 1; else _g_boolean_var_290 = 0; _g_boolean_var_290<br>; }), 1))) { } else { g_return_if_fail_warning (((gchar*) 0),<br> ((const char*) (__func__)), "parent == NULL || parent-&gt;user_data != NULL"<br>); return ((0)); } } while (0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="738"><td class="num" id="LN738">738</td><td class="line"> <span class='macro'>|| parent-&gt;user_data != NULL, FALSE)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_290<br>; if (parent == ((void*)0) || parent-&gt;user_data != ((void*<br>)0)) _g_boolean_var_290 = 1; else _g_boolean_var_290 = 0; _g_boolean_var_290<br>; }), 1))) { } else { g_return_if_fail_warning (((gchar*) 0),<br> ((const char*) (__func__)), "parent == NULL || parent-&gt;user_data != NULL"<br>); return ((0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="739"><td class="num" id="LN739">739</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="740"><td class="num" id="LN740">740</td><td class="line"> model = <span class='macro'>PLUMA_FILE_BROWSER_STORE (tree_model)<span class='macro_popup'>((((PlumaFileBrowserStore*) (void *) ((tree_model)))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="741"><td class="num" id="LN741">741</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="742"><td class="num" id="LN742">742</td><td class="line"> <span class='keyword'>if</span> (parent == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="743"><td class="num" id="LN743">743</td><td class="line"> node = model-&gt;priv-&gt;virtual_root;</td></tr>
+<tr class="codeline" data-linenumber="744"><td class="num" id="LN744">744</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="745"><td class="num" id="LN745">745</td><td class="line"> node = (FileBrowserNode *) (parent-&gt;user_data);</td></tr>
+<tr class="codeline" data-linenumber="746"><td class="num" id="LN746">746</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="747"><td class="num" id="LN747">747</td><td class="line"> <span class='keyword'>if</span> (node == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="748"><td class="num" id="LN748">748</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="749"><td class="num" id="LN749">749</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="750"><td class="num" id="LN750">750</td><td class="line"> <span class='keyword'>if</span> (!<span class='macro'>NODE_IS_DIR (node)<span class='macro_popup'>(((node)-&gt;flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_DIRECTORY<br>))</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="751"><td class="num" id="LN751">751</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="752"><td class="num" id="LN752">752</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="753"><td class="num" id="LN753">753</td><td class="line"> <span class='keyword'>for</span> (item = <span class='macro'>FILE_BROWSER_NODE_DIR (node)<span class='macro_popup'>((FileBrowserNodeDir *)(node))</span></span>-&gt;children; item; item = item-&gt;next) {</td></tr>
+<tr class="codeline" data-linenumber="754"><td class="num" id="LN754">754</td><td class="line"> <span class='keyword'>if</span> (model_node_inserted (model, (FileBrowserNode *) (item-&gt;data))) {</td></tr>
+<tr class="codeline" data-linenumber="755"><td class="num" id="LN755">755</td><td class="line"> iter-&gt;user_data = item-&gt;data;</td></tr>
+<tr class="codeline" data-linenumber="756"><td class="num" id="LN756">756</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="757"><td class="num" id="LN757">757</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="758"><td class="num" id="LN758">758</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="759"><td class="num" id="LN759">759</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="760"><td class="num" id="LN760">760</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="761"><td class="num" id="LN761">761</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="762"><td class="num" id="LN762">762</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="763"><td class="num" id="LN763">763</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="764"><td class="num" id="LN764">764</td><td class="line">filter_tree_model_iter_has_child_real (PlumaFileBrowserStore * model,</td></tr>
+<tr class="codeline" data-linenumber="765"><td class="num" id="LN765">765</td><td class="line"> FileBrowserNode * node)</td></tr>
+<tr class="codeline" data-linenumber="766"><td class="num" id="LN766">766</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="767"><td class="num" id="LN767">767</td><td class="line"> GSList *item;</td></tr>
+<tr class="codeline" data-linenumber="768"><td class="num" id="LN768">768</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="769"><td class="num" id="LN769">769</td><td class="line"> <span class='keyword'>if</span> (!<span class='macro'>NODE_IS_DIR (node)<span class='macro_popup'>(((node)-&gt;flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_DIRECTORY<br>))</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="770"><td class="num" id="LN770">770</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="771"><td class="num" id="LN771">771</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="772"><td class="num" id="LN772">772</td><td class="line"> <span class='keyword'>for</span> (item = <span class='macro'>FILE_BROWSER_NODE_DIR (node)<span class='macro_popup'>((FileBrowserNodeDir *)(node))</span></span>-&gt;children; item; item = item-&gt;next) {</td></tr>
+<tr class="codeline" data-linenumber="773"><td class="num" id="LN773">773</td><td class="line"> <span class='keyword'>if</span> (model_node_inserted (model, (FileBrowserNode *) (item-&gt;data)))</td></tr>
+<tr class="codeline" data-linenumber="774"><td class="num" id="LN774">774</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="775"><td class="num" id="LN775">775</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="776"><td class="num" id="LN776">776</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="777"><td class="num" id="LN777">777</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="778"><td class="num" id="LN778">778</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="779"><td class="num" id="LN779">779</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="780"><td class="num" id="LN780">780</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="781"><td class="num" id="LN781">781</td><td class="line">pluma_file_browser_store_iter_has_child (GtkTreeModel * tree_model,</td></tr>
+<tr class="codeline" data-linenumber="782"><td class="num" id="LN782">782</td><td class="line"> GtkTreeIter * iter)</td></tr>
+<tr class="codeline" data-linenumber="783"><td class="num" id="LN783">783</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="784"><td class="num" id="LN784">784</td><td class="line"> FileBrowserNode *node;</td></tr>
+<tr class="codeline" data-linenumber="785"><td class="num" id="LN785">785</td><td class="line"> PlumaFileBrowserStore *model;</td></tr>
+<tr class="codeline" data-linenumber="786"><td class="num" id="LN786">786</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="787"><td class="num" id="LN787">787</td><td class="line"> <span class='macro'>g_return_val_if_fail (PLUMA_IS_FILE_BROWSER_STORE (tree_model),<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_291<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((tree_model)); GType __t = ((pluma_file_browser_store_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_291 = 1; else _g_boolean_var_291 =<br> 0; _g_boolean_var_291; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "PLUMA_IS_FILE_BROWSER_STORE (tree_model)"<br>); return ((0)); } } while (0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="788"><td class="num" id="LN788">788</td><td class="line"> <span class='macro'>FALSE)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_291<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((tree_model)); GType __t = ((pluma_file_browser_store_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_291 = 1; else _g_boolean_var_291 =<br> 0; _g_boolean_var_291; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "PLUMA_IS_FILE_BROWSER_STORE (tree_model)"<br>); return ((0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="789"><td class="num" id="LN789">789</td><td class="line"> <span class='macro'>g_return_val_if_fail (iter == NULL<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_292<br>; if (iter == ((void*)0) || iter-&gt;user_data != ((void*)0))<br> _g_boolean_var_292 = 1; else _g_boolean_var_292 = 0; _g_boolean_var_292<br>; }), 1))) { } else { g_return_if_fail_warning (((gchar*) 0),<br> ((const char*) (__func__)), "iter == NULL || iter-&gt;user_data != NULL"<br>); return ((0)); } } while (0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="790"><td class="num" id="LN790">790</td><td class="line"> <span class='macro'>|| iter-&gt;user_data != NULL, FALSE)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_292<br>; if (iter == ((void*)0) || iter-&gt;user_data != ((void*)0))<br> _g_boolean_var_292 = 1; else _g_boolean_var_292 = 0; _g_boolean_var_292<br>; }), 1))) { } else { g_return_if_fail_warning (((gchar*) 0),<br> ((const char*) (__func__)), "iter == NULL || iter-&gt;user_data != NULL"<br>); return ((0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="791"><td class="num" id="LN791">791</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="792"><td class="num" id="LN792">792</td><td class="line"> model = <span class='macro'>PLUMA_FILE_BROWSER_STORE (tree_model)<span class='macro_popup'>((((PlumaFileBrowserStore*) (void *) ((tree_model)))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="793"><td class="num" id="LN793">793</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="794"><td class="num" id="LN794">794</td><td class="line"> <span class='keyword'>if</span> (iter == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="795"><td class="num" id="LN795">795</td><td class="line"> node = model-&gt;priv-&gt;virtual_root;</td></tr>
+<tr class="codeline" data-linenumber="796"><td class="num" id="LN796">796</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="797"><td class="num" id="LN797">797</td><td class="line"> node = (FileBrowserNode *) (iter-&gt;user_data);</td></tr>
+<tr class="codeline" data-linenumber="798"><td class="num" id="LN798">798</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="799"><td class="num" id="LN799">799</td><td class="line"> <span class='keyword'>return</span> filter_tree_model_iter_has_child_real (model, node);</td></tr>
+<tr class="codeline" data-linenumber="800"><td class="num" id="LN800">800</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="801"><td class="num" id="LN801">801</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="802"><td class="num" id="LN802">802</td><td class="line"><span class='keyword'>static</span> gint</td></tr>
+<tr class="codeline" data-linenumber="803"><td class="num" id="LN803">803</td><td class="line">pluma_file_browser_store_iter_n_children (GtkTreeModel * tree_model,</td></tr>
+<tr class="codeline" data-linenumber="804"><td class="num" id="LN804">804</td><td class="line"> GtkTreeIter * iter)</td></tr>
+<tr class="codeline" data-linenumber="805"><td class="num" id="LN805">805</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="806"><td class="num" id="LN806">806</td><td class="line"> FileBrowserNode *node;</td></tr>
+<tr class="codeline" data-linenumber="807"><td class="num" id="LN807">807</td><td class="line"> PlumaFileBrowserStore *model;</td></tr>
+<tr class="codeline" data-linenumber="808"><td class="num" id="LN808">808</td><td class="line"> GSList *item;</td></tr>
+<tr class="codeline" data-linenumber="809"><td class="num" id="LN809">809</td><td class="line"> gint num = 0;</td></tr>
+<tr class="codeline" data-linenumber="810"><td class="num" id="LN810">810</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="811"><td class="num" id="LN811">811</td><td class="line"> <span class='macro'>g_return_val_if_fail (PLUMA_IS_FILE_BROWSER_STORE (tree_model),<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_293<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((tree_model)); GType __t = ((pluma_file_browser_store_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_293 = 1; else _g_boolean_var_293 =<br> 0; _g_boolean_var_293; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "PLUMA_IS_FILE_BROWSER_STORE (tree_model)"<br>); return ((0)); } } while (0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="812"><td class="num" id="LN812">812</td><td class="line"> <span class='macro'>FALSE)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_293<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((tree_model)); GType __t = ((pluma_file_browser_store_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_293 = 1; else _g_boolean_var_293 =<br> 0; _g_boolean_var_293; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "PLUMA_IS_FILE_BROWSER_STORE (tree_model)"<br>); return ((0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="813"><td class="num" id="LN813">813</td><td class="line"> <span class='macro'>g_return_val_if_fail (iter == NULL<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_294<br>; if (iter == ((void*)0) || iter-&gt;user_data != ((void*)0))<br> _g_boolean_var_294 = 1; else _g_boolean_var_294 = 0; _g_boolean_var_294<br>; }), 1))) { } else { g_return_if_fail_warning (((gchar*) 0),<br> ((const char*) (__func__)), "iter == NULL || iter-&gt;user_data != NULL"<br>); return ((0)); } } while (0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="814"><td class="num" id="LN814">814</td><td class="line"> <span class='macro'>|| iter-&gt;user_data != NULL, FALSE)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_294<br>; if (iter == ((void*)0) || iter-&gt;user_data != ((void*)0))<br> _g_boolean_var_294 = 1; else _g_boolean_var_294 = 0; _g_boolean_var_294<br>; }), 1))) { } else { g_return_if_fail_warning (((gchar*) 0),<br> ((const char*) (__func__)), "iter == NULL || iter-&gt;user_data != NULL"<br>); return ((0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="815"><td class="num" id="LN815">815</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="816"><td class="num" id="LN816">816</td><td class="line"> model = <span class='macro'>PLUMA_FILE_BROWSER_STORE (tree_model)<span class='macro_popup'>((((PlumaFileBrowserStore*) (void *) ((tree_model)))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="817"><td class="num" id="LN817">817</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="818"><td class="num" id="LN818">818</td><td class="line"> <span class='keyword'>if</span> (iter == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="819"><td class="num" id="LN819">819</td><td class="line"> node = model-&gt;priv-&gt;virtual_root;</td></tr>
+<tr class="codeline" data-linenumber="820"><td class="num" id="LN820">820</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="821"><td class="num" id="LN821">821</td><td class="line"> node = (FileBrowserNode *) (iter-&gt;user_data);</td></tr>
+<tr class="codeline" data-linenumber="822"><td class="num" id="LN822">822</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="823"><td class="num" id="LN823">823</td><td class="line"> <span class='keyword'>if</span> (!<span class='macro'>NODE_IS_DIR (node)<span class='macro_popup'>(((node)-&gt;flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_DIRECTORY<br>))</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="824"><td class="num" id="LN824">824</td><td class="line"> <span class='keyword'>return</span> 0;</td></tr>
+<tr class="codeline" data-linenumber="825"><td class="num" id="LN825">825</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="826"><td class="num" id="LN826">826</td><td class="line"> <span class='keyword'>for</span> (item = <span class='macro'>FILE_BROWSER_NODE_DIR (node)<span class='macro_popup'>((FileBrowserNodeDir *)(node))</span></span>-&gt;children; item; item = item-&gt;next)</td></tr>
+<tr class="codeline" data-linenumber="827"><td class="num" id="LN827">827</td><td class="line"> <span class='keyword'>if</span> (model_node_inserted (model, (FileBrowserNode *) (item-&gt;data)))</td></tr>
+<tr class="codeline" data-linenumber="828"><td class="num" id="LN828">828</td><td class="line"> ++num;</td></tr>
+<tr class="codeline" data-linenumber="829"><td class="num" id="LN829">829</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="830"><td class="num" id="LN830">830</td><td class="line"> <span class='keyword'>return</span> num;</td></tr>
+<tr class="codeline" data-linenumber="831"><td class="num" id="LN831">831</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="832"><td class="num" id="LN832">832</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="833"><td class="num" id="LN833">833</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="834"><td class="num" id="LN834">834</td><td class="line">pluma_file_browser_store_iter_nth_child (GtkTreeModel * tree_model,</td></tr>
+<tr class="codeline" data-linenumber="835"><td class="num" id="LN835">835</td><td class="line"> GtkTreeIter * iter,</td></tr>
+<tr class="codeline" data-linenumber="836"><td class="num" id="LN836">836</td><td class="line"> GtkTreeIter * parent, gint n)</td></tr>
+<tr class="codeline" data-linenumber="837"><td class="num" id="LN837">837</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="838"><td class="num" id="LN838">838</td><td class="line"> FileBrowserNode *node;</td></tr>
+<tr class="codeline" data-linenumber="839"><td class="num" id="LN839">839</td><td class="line"> PlumaFileBrowserStore *model;</td></tr>
+<tr class="codeline" data-linenumber="840"><td class="num" id="LN840">840</td><td class="line"> GSList *item;</td></tr>
+<tr class="codeline" data-linenumber="841"><td class="num" id="LN841">841</td><td class="line"> gint num = 0;</td></tr>
+<tr class="codeline" data-linenumber="842"><td class="num" id="LN842">842</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="843"><td class="num" id="LN843">843</td><td class="line"> <span class='macro'>g_return_val_if_fail (PLUMA_IS_FILE_BROWSER_STORE (tree_model),<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_295<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((tree_model)); GType __t = ((pluma_file_browser_store_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_295 = 1; else _g_boolean_var_295 =<br> 0; _g_boolean_var_295; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "PLUMA_IS_FILE_BROWSER_STORE (tree_model)"<br>); return ((0)); } } while (0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="844"><td class="num" id="LN844">844</td><td class="line"> <span class='macro'>FALSE)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_295<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((tree_model)); GType __t = ((pluma_file_browser_store_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_295 = 1; else _g_boolean_var_295 =<br> 0; _g_boolean_var_295; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "PLUMA_IS_FILE_BROWSER_STORE (tree_model)"<br>); return ((0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="845"><td class="num" id="LN845">845</td><td class="line"> <span class='macro'>g_return_val_if_fail (parent == NULL<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_296<br>; if (parent == ((void*)0) || parent-&gt;user_data != ((void*<br>)0)) _g_boolean_var_296 = 1; else _g_boolean_var_296 = 0; _g_boolean_var_296<br>; }), 1))) { } else { g_return_if_fail_warning (((gchar*) 0),<br> ((const char*) (__func__)), "parent == NULL || parent-&gt;user_data != NULL"<br>); return ((0)); } } while (0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="846"><td class="num" id="LN846">846</td><td class="line"> <span class='macro'>|| parent-&gt;user_data != NULL, FALSE)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_296<br>; if (parent == ((void*)0) || parent-&gt;user_data != ((void*<br>)0)) _g_boolean_var_296 = 1; else _g_boolean_var_296 = 0; _g_boolean_var_296<br>; }), 1))) { } else { g_return_if_fail_warning (((gchar*) 0),<br> ((const char*) (__func__)), "parent == NULL || parent-&gt;user_data != NULL"<br>); return ((0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="847"><td class="num" id="LN847">847</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="848"><td class="num" id="LN848">848</td><td class="line"> model = <span class='macro'>PLUMA_FILE_BROWSER_STORE (tree_model)<span class='macro_popup'>((((PlumaFileBrowserStore*) (void *) ((tree_model)))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="849"><td class="num" id="LN849">849</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="850"><td class="num" id="LN850">850</td><td class="line"> <span class='keyword'>if</span> (parent == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="851"><td class="num" id="LN851">851</td><td class="line"> node = model-&gt;priv-&gt;virtual_root;</td></tr>
+<tr class="codeline" data-linenumber="852"><td class="num" id="LN852">852</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="853"><td class="num" id="LN853">853</td><td class="line"> node = (FileBrowserNode *) (parent-&gt;user_data);</td></tr>
+<tr class="codeline" data-linenumber="854"><td class="num" id="LN854">854</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="855"><td class="num" id="LN855">855</td><td class="line"> <span class='keyword'>if</span> (!<span class='macro'>NODE_IS_DIR (node)<span class='macro_popup'>(((node)-&gt;flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_DIRECTORY<br>))</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="856"><td class="num" id="LN856">856</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="857"><td class="num" id="LN857">857</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="858"><td class="num" id="LN858">858</td><td class="line"> <span class='keyword'>for</span> (item = <span class='macro'>FILE_BROWSER_NODE_DIR (node)<span class='macro_popup'>((FileBrowserNodeDir *)(node))</span></span>-&gt;children; item;</td></tr>
+<tr class="codeline" data-linenumber="859"><td class="num" id="LN859">859</td><td class="line"> item = item-&gt;next) {</td></tr>
+<tr class="codeline" data-linenumber="860"><td class="num" id="LN860">860</td><td class="line"> <span class='keyword'>if</span> (model_node_inserted (model, (FileBrowserNode *) (item-&gt;data))) {</td></tr>
+<tr class="codeline" data-linenumber="861"><td class="num" id="LN861">861</td><td class="line"> <span class='keyword'>if</span> (num == n) {</td></tr>
+<tr class="codeline" data-linenumber="862"><td class="num" id="LN862">862</td><td class="line"> iter-&gt;user_data = item-&gt;data;</td></tr>
+<tr class="codeline" data-linenumber="863"><td class="num" id="LN863">863</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="864"><td class="num" id="LN864">864</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="865"><td class="num" id="LN865">865</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="866"><td class="num" id="LN866">866</td><td class="line"> ++num;</td></tr>
+<tr class="codeline" data-linenumber="867"><td class="num" id="LN867">867</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="868"><td class="num" id="LN868">868</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="869"><td class="num" id="LN869">869</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="870"><td class="num" id="LN870">870</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="871"><td class="num" id="LN871">871</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="872"><td class="num" id="LN872">872</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="873"><td class="num" id="LN873">873</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="874"><td class="num" id="LN874">874</td><td class="line">pluma_file_browser_store_iter_parent (GtkTreeModel * tree_model,</td></tr>
+<tr class="codeline" data-linenumber="875"><td class="num" id="LN875">875</td><td class="line"> GtkTreeIter * iter,</td></tr>
+<tr class="codeline" data-linenumber="876"><td class="num" id="LN876">876</td><td class="line"> GtkTreeIter * child)</td></tr>
+<tr class="codeline" data-linenumber="877"><td class="num" id="LN877">877</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="878"><td class="num" id="LN878">878</td><td class="line"> FileBrowserNode *node;</td></tr>
+<tr class="codeline" data-linenumber="879"><td class="num" id="LN879">879</td><td class="line"> PlumaFileBrowserStore *model;</td></tr>
+<tr class="codeline" data-linenumber="880"><td class="num" id="LN880">880</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="881"><td class="num" id="LN881">881</td><td class="line"> <span class='macro'>g_return_val_if_fail (PLUMA_IS_FILE_BROWSER_STORE (tree_model), FALSE)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_297<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((tree_model)); GType __t = ((pluma_file_browser_store_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_297 = 1; else _g_boolean_var_297 =<br> 0; _g_boolean_var_297; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "PLUMA_IS_FILE_BROWSER_STORE (tree_model)"<br>); return ((0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="882"><td class="num" id="LN882">882</td><td class="line"> <span class='macro'>g_return_val_if_fail (child != NULL, FALSE)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_298<br>; if (child != ((void*)0)) _g_boolean_var_298 = 1; else _g_boolean_var_298<br> = 0; _g_boolean_var_298; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "child != NULL");<br> return ((0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="883"><td class="num" id="LN883">883</td><td class="line"> <span class='macro'>g_return_val_if_fail (child-&gt;user_data != NULL, FALSE)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_299<br>; if (child-&gt;user_data != ((void*)0)) _g_boolean_var_299 =<br> 1; else _g_boolean_var_299 = 0; _g_boolean_var_299; }), 1)))<br> { } else { g_return_if_fail_warning (((gchar*) 0), ((const char<br>*) (__func__)), "child-&gt;user_data != NULL"); return ((0));<br> } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="884"><td class="num" id="LN884">884</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="885"><td class="num" id="LN885">885</td><td class="line"> node = (FileBrowserNode *) (child-&gt;user_data);</td></tr>
+<tr class="codeline" data-linenumber="886"><td class="num" id="LN886">886</td><td class="line"> model = <span class='macro'>PLUMA_FILE_BROWSER_STORE (tree_model)<span class='macro_popup'>((((PlumaFileBrowserStore*) (void *) ((tree_model)))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="887"><td class="num" id="LN887">887</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="888"><td class="num" id="LN888">888</td><td class="line"> <span class='keyword'>if</span> (!node_in_tree (model, node))</td></tr>
+<tr class="codeline" data-linenumber="889"><td class="num" id="LN889">889</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="890"><td class="num" id="LN890">890</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="891"><td class="num" id="LN891">891</td><td class="line"> <span class='keyword'>if</span> (node-&gt;parent == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="892"><td class="num" id="LN892">892</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="893"><td class="num" id="LN893">893</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="894"><td class="num" id="LN894">894</td><td class="line"> iter-&gt;user_data = node-&gt;parent;</td></tr>
+<tr class="codeline" data-linenumber="895"><td class="num" id="LN895">895</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="896"><td class="num" id="LN896">896</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="897"><td class="num" id="LN897">897</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="898"><td class="num" id="LN898">898</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="899"><td class="num" id="LN899">899</td><td class="line">pluma_file_browser_store_row_inserted (GtkTreeModel * tree_model,</td></tr>
+<tr class="codeline" data-linenumber="900"><td class="num" id="LN900">900</td><td class="line"> GtkTreePath * path,</td></tr>
+<tr class="codeline" data-linenumber="901"><td class="num" id="LN901">901</td><td class="line"> GtkTreeIter * iter)</td></tr>
+<tr class="codeline" data-linenumber="902"><td class="num" id="LN902">902</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="903"><td class="num" id="LN903">903</td><td class="line"> FileBrowserNode * node = (FileBrowserNode *)(iter-&gt;user_data);</td></tr>
+<tr class="codeline" data-linenumber="904"><td class="num" id="LN904">904</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="905"><td class="num" id="LN905">905</td><td class="line"> node-&gt;inserted = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="906"><td class="num" id="LN906">906</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="907"><td class="num" id="LN907">907</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="908"><td class="num" id="LN908">908</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="909"><td class="num" id="LN909">909</td><td class="line">pluma_file_browser_store_row_draggable (GtkTreeDragSource * drag_source,</td></tr>
+<tr class="codeline" data-linenumber="910"><td class="num" id="LN910">910</td><td class="line"> GtkTreePath * path)</td></tr>
+<tr class="codeline" data-linenumber="911"><td class="num" id="LN911">911</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="912"><td class="num" id="LN912">912</td><td class="line"> GtkTreeIter iter;</td></tr>
+<tr class="codeline" data-linenumber="913"><td class="num" id="LN913">913</td><td class="line"> PlumaFileBrowserStoreFlag flags;</td></tr>
+<tr class="codeline" data-linenumber="914"><td class="num" id="LN914">914</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="915"><td class="num" id="LN915">915</td><td class="line"> <span class='keyword'>if</span> (!gtk_tree_model_get_iter (<span class='macro'>GTK_TREE_MODEL (drag_source)<span class='macro_popup'>((((GtkTreeModel*) (void *) ((drag_source)))))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="916"><td class="num" id="LN916">916</td><td class="line"> &amp;iter, path))</td></tr>
+<tr class="codeline" data-linenumber="917"><td class="num" id="LN917">917</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="918"><td class="num" id="LN918">918</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="919"><td class="num" id="LN919">919</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="920"><td class="num" id="LN920">920</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="921"><td class="num" id="LN921">921</td><td class="line"> gtk_tree_model_get (<span class='macro'>GTK_TREE_MODEL (drag_source)<span class='macro_popup'>((((GtkTreeModel*) (void *) ((drag_source)))))</span></span>, &amp;iter,</td></tr>
+<tr class="codeline" data-linenumber="922"><td class="num" id="LN922">922</td><td class="line"> PLUMA_FILE_BROWSER_STORE_COLUMN_FLAGS, &amp;flags,</td></tr>
+<tr class="codeline" data-linenumber="923"><td class="num" id="LN923">923</td><td class="line"> -1);</td></tr>
+<tr class="codeline" data-linenumber="924"><td class="num" id="LN924">924</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="925"><td class="num" id="LN925">925</td><td class="line"> <span class='keyword'>return</span> !<span class='macro'>FILE_IS_DUMMY(flags)<span class='macro_popup'>(flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_DUMMY)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="926"><td class="num" id="LN926">926</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="927"><td class="num" id="LN927">927</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="928"><td class="num" id="LN928">928</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="929"><td class="num" id="LN929">929</td><td class="line">pluma_file_browser_store_drag_data_delete (GtkTreeDragSource * drag_source,</td></tr>
+<tr class="codeline" data-linenumber="930"><td class="num" id="LN930">930</td><td class="line"> GtkTreePath * path)</td></tr>
+<tr class="codeline" data-linenumber="931"><td class="num" id="LN931">931</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="932"><td class="num" id="LN932">932</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="933"><td class="num" id="LN933">933</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="934"><td class="num" id="LN934">934</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="935"><td class="num" id="LN935">935</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="936"><td class="num" id="LN936">936</td><td class="line">pluma_file_browser_store_drag_data_get (GtkTreeDragSource * drag_source,</td></tr>
+<tr class="codeline" data-linenumber="937"><td class="num" id="LN937">937</td><td class="line"> GtkTreePath * path,</td></tr>
+<tr class="codeline" data-linenumber="938"><td class="num" id="LN938">938</td><td class="line"> GtkSelectionData * selection_data)</td></tr>
+<tr class="codeline" data-linenumber="939"><td class="num" id="LN939">939</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="940"><td class="num" id="LN940">940</td><td class="line"> GtkTreeIter iter;</td></tr>
+<tr class="codeline" data-linenumber="941"><td class="num" id="LN941">941</td><td class="line"> gchar *uri;</td></tr>
+<tr class="codeline" data-linenumber="942"><td class="num" id="LN942">942</td><td class="line"> gchar *uris[2] = {0, };</td></tr>
+<tr class="codeline" data-linenumber="943"><td class="num" id="LN943">943</td><td class="line"> gboolean ret;</td></tr>
+<tr class="codeline" data-linenumber="944"><td class="num" id="LN944">944</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="945"><td class="num" id="LN945">945</td><td class="line"> <span class='keyword'>if</span> (!gtk_tree_model_get_iter (<span class='macro'>GTK_TREE_MODEL (drag_source)<span class='macro_popup'>((((GtkTreeModel*) (void *) ((drag_source)))))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="946"><td class="num" id="LN946">946</td><td class="line"> &amp;iter, path))</td></tr>
+<tr class="codeline" data-linenumber="947"><td class="num" id="LN947">947</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="948"><td class="num" id="LN948">948</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="949"><td class="num" id="LN949">949</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="950"><td class="num" id="LN950">950</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="951"><td class="num" id="LN951">951</td><td class="line"> gtk_tree_model_get (<span class='macro'>GTK_TREE_MODEL (drag_source)<span class='macro_popup'>((((GtkTreeModel*) (void *) ((drag_source)))))</span></span>, &amp;iter,</td></tr>
+<tr class="codeline" data-linenumber="952"><td class="num" id="LN952">952</td><td class="line"> PLUMA_FILE_BROWSER_STORE_COLUMN_URI, &amp;uri,</td></tr>
+<tr class="codeline" data-linenumber="953"><td class="num" id="LN953">953</td><td class="line"> -1);</td></tr>
+<tr class="codeline" data-linenumber="954"><td class="num" id="LN954">954</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="955"><td class="num" id="LN955">955</td><td class="line"> <span class='macro'>g_assert (uri)<span class='macro_popup'>do { if (__builtin_expect (__extension__ ({ int _g_boolean_var_300<br>; if (uri) _g_boolean_var_300 = 1; else _g_boolean_var_300 = 0<br>; _g_boolean_var_300; }), 1)) ; else g_assertion_message_expr<br> (((gchar*) 0), "pluma-file-browser-store.c", 955, ((const char<br>*) (__func__)), "uri"); } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="956"><td class="num" id="LN956">956</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="957"><td class="num" id="LN957">957</td><td class="line"> uris[0] = uri;</td></tr>
+<tr class="codeline" data-linenumber="958"><td class="num" id="LN958">958</td><td class="line"> ret = gtk_selection_data_set_uris (selection_data, uris);</td></tr>
+<tr class="codeline" data-linenumber="959"><td class="num" id="LN959">959</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="960"><td class="num" id="LN960">960</td><td class="line"> g_free (uri);</td></tr>
+<tr class="codeline" data-linenumber="961"><td class="num" id="LN961">961</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="962"><td class="num" id="LN962">962</td><td class="line"> <span class='keyword'>return</span> ret;</td></tr>
+<tr class="codeline" data-linenumber="963"><td class="num" id="LN963">963</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="964"><td class="num" id="LN964">964</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="965"><td class="num" id="LN965">965</td><td class="line"><span class='directive'>#define <span class='macro'>FILTER_HIDDEN(mode)<span class='macro_popup'>(mode &amp; PLUMA_FILE_BROWSER_STORE_FILTER_MODE_HIDE_HIDDEN)</span></span> (mode &amp; PLUMA_FILE_BROWSER_STORE_FILTER_MODE_HIDE_HIDDEN)</span></td></tr>
+<tr class="codeline" data-linenumber="966"><td class="num" id="LN966">966</td><td class="line"><span class='directive'>#define <span class='macro'>FILTER_BINARY(mode)<span class='macro_popup'>(mode &amp; PLUMA_FILE_BROWSER_STORE_FILTER_MODE_HIDE_BINARY)</span></span> (mode &amp; PLUMA_FILE_BROWSER_STORE_FILTER_MODE_HIDE_BINARY)</span></td></tr>
+<tr class="codeline" data-linenumber="967"><td class="num" id="LN967">967</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="968"><td class="num" id="LN968">968</td><td class="line"><span class='comment'>/* Private */</span></td></tr>
+<tr class="codeline" data-linenumber="969"><td class="num" id="LN969">969</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="970"><td class="num" id="LN970">970</td><td class="line">model_begin_loading (PlumaFileBrowserStore * model, FileBrowserNode * node)</td></tr>
+<tr class="codeline" data-linenumber="971"><td class="num" id="LN971">971</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="972"><td class="num" id="LN972">972</td><td class="line"> GtkTreeIter iter;</td></tr>
+<tr class="codeline" data-linenumber="973"><td class="num" id="LN973">973</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="974"><td class="num" id="LN974">974</td><td class="line"> iter.user_data = node;</td></tr>
+<tr class="codeline" data-linenumber="975"><td class="num" id="LN975">975</td><td class="line"> g_signal_emit (model, model_signals[BEGIN_LOADING], 0, &amp;iter);</td></tr>
+<tr class="codeline" data-linenumber="976"><td class="num" id="LN976">976</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="977"><td class="num" id="LN977">977</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="978"><td class="num" id="LN978">978</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="979"><td class="num" id="LN979">979</td><td class="line">model_end_loading (PlumaFileBrowserStore * model, FileBrowserNode * node)</td></tr>
+<tr class="codeline" data-linenumber="980"><td class="num" id="LN980">980</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="981"><td class="num" id="LN981">981</td><td class="line"> GtkTreeIter iter;</td></tr>
+<tr class="codeline" data-linenumber="982"><td class="num" id="LN982">982</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="983"><td class="num" id="LN983">983</td><td class="line"> iter.user_data = node;</td></tr>
+<tr class="codeline" data-linenumber="984"><td class="num" id="LN984">984</td><td class="line"> g_signal_emit (model, model_signals[END_LOADING], 0, &amp;iter);</td></tr>
+<tr class="codeline" data-linenumber="985"><td class="num" id="LN985">985</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="986"><td class="num" id="LN986">986</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="987"><td class="num" id="LN987">987</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="988"><td class="num" id="LN988">988</td><td class="line">model_node_update_visibility (PlumaFileBrowserStore * model,</td></tr>
+<tr class="codeline" data-linenumber="989"><td class="num" id="LN989">989</td><td class="line"> FileBrowserNode * node)</td></tr>
+<tr class="codeline" data-linenumber="990"><td class="num" id="LN990">990</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="991"><td class="num" id="LN991">991</td><td class="line"> GtkTreeIter iter;</td></tr>
+<tr class="codeline" data-linenumber="992"><td class="num" id="LN992">992</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="993"><td class="num" id="LN993">993</td><td class="line"> node-&gt;flags &amp;= ~PLUMA_FILE_BROWSER_STORE_FLAG_IS_FILTERED;</td></tr>
+<tr class="codeline" data-linenumber="994"><td class="num" id="LN994">994</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="995"><td class="num" id="LN995">995</td><td class="line"> <span class='keyword'>if</span> (<span class='macro'>FILTER_HIDDEN (model-&gt;priv-&gt;filter_mode)<span class='macro_popup'>(model-&gt;priv-&gt;filter_mode &amp; PLUMA_FILE_BROWSER_STORE_FILTER_MODE_HIDE_HIDDEN<br>)</span></span> &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="996"><td class="num" id="LN996">996</td><td class="line"> <span class='macro'>NODE_IS_HIDDEN (node)<span class='macro_popup'>(((node)-&gt;flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_HIDDEN<br>))</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="997"><td class="num" id="LN997">997</td><td class="line"> node-&gt;flags |= PLUMA_FILE_BROWSER_STORE_FLAG_IS_FILTERED;</td></tr>
+<tr class="codeline" data-linenumber="998"><td class="num" id="LN998">998</td><td class="line"> <span class='keyword'>else</span> <span class='keyword'>if</span> (<span class='macro'>FILTER_BINARY (model-&gt;priv-&gt;filter_mode)<span class='macro_popup'>(model-&gt;priv-&gt;filter_mode &amp; PLUMA_FILE_BROWSER_STORE_FILTER_MODE_HIDE_BINARY<br>)</span></span> &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="999"><td class="num" id="LN999">999</td><td class="line"> (!<span class='macro'>NODE_IS_TEXT (node)<span class='macro_popup'>(((node)-&gt;flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_TEXT<br>))</span></span> &amp;&amp; !<span class='macro'>NODE_IS_DIR (node)<span class='macro_popup'>(((node)-&gt;flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_DIRECTORY<br>))</span></span>))</td></tr>
+<tr class="codeline" data-linenumber="1000"><td class="num" id="LN1000">1000</td><td class="line"> node-&gt;flags |= PLUMA_FILE_BROWSER_STORE_FLAG_IS_FILTERED;</td></tr>
+<tr class="codeline" data-linenumber="1001"><td class="num" id="LN1001">1001</td><td class="line"> <span class='keyword'>else</span> <span class='keyword'>if</span> (model-&gt;priv-&gt;filter_func) {</td></tr>
+<tr class="codeline" data-linenumber="1002"><td class="num" id="LN1002">1002</td><td class="line"> iter.user_data = node;</td></tr>
+<tr class="codeline" data-linenumber="1003"><td class="num" id="LN1003">1003</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1004"><td class="num" id="LN1004">1004</td><td class="line"> <span class='keyword'>if</span> (!model-&gt;priv-&gt;</td></tr>
+<tr class="codeline" data-linenumber="1005"><td class="num" id="LN1005">1005</td><td class="line"> filter_func (model, &amp;iter,</td></tr>
+<tr class="codeline" data-linenumber="1006"><td class="num" id="LN1006">1006</td><td class="line"> model-&gt;priv-&gt;filter_user_data))</td></tr>
+<tr class="codeline" data-linenumber="1007"><td class="num" id="LN1007">1007</td><td class="line"> node-&gt;flags |=</td></tr>
+<tr class="codeline" data-linenumber="1008"><td class="num" id="LN1008">1008</td><td class="line"> PLUMA_FILE_BROWSER_STORE_FLAG_IS_FILTERED;</td></tr>
+<tr class="codeline" data-linenumber="1009"><td class="num" id="LN1009">1009</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1010"><td class="num" id="LN1010">1010</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1011"><td class="num" id="LN1011">1011</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1012"><td class="num" id="LN1012">1012</td><td class="line"><span class='keyword'>static</span> gint</td></tr>
+<tr class="codeline" data-linenumber="1013"><td class="num" id="LN1013">1013</td><td class="line">collate_nodes (FileBrowserNode * node1, FileBrowserNode * node2)</td></tr>
+<tr class="codeline" data-linenumber="1014"><td class="num" id="LN1014">1014</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1015"><td class="num" id="LN1015">1015</td><td class="line"> <span class='keyword'>if</span> (node1-&gt;name == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="1016"><td class="num" id="LN1016">1016</td><td class="line"> <span class='keyword'>return</span> -1;</td></tr>
+<tr class="codeline" data-linenumber="1017"><td class="num" id="LN1017">1017</td><td class="line"> <span class='keyword'>else</span> <span class='keyword'>if</span> (node2-&gt;name == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="1018"><td class="num" id="LN1018">1018</td><td class="line"> <span class='keyword'>return</span> 1;</td></tr>
+<tr class="codeline" data-linenumber="1019"><td class="num" id="LN1019">1019</td><td class="line"> <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="1020"><td class="num" id="LN1020">1020</td><td class="line"> gchar *k1, *k2;</td></tr>
+<tr class="codeline" data-linenumber="1021"><td class="num" id="LN1021">1021</td><td class="line"> gint result;</td></tr>
+<tr class="codeline" data-linenumber="1022"><td class="num" id="LN1022">1022</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1023"><td class="num" id="LN1023">1023</td><td class="line"> k1 = g_utf8_collate_key_for_filename (node1-&gt;name, -1);</td></tr>
+<tr class="codeline" data-linenumber="1024"><td class="num" id="LN1024">1024</td><td class="line"> k2 = g_utf8_collate_key_for_filename (node2-&gt;name, -1);</td></tr>
+<tr class="codeline" data-linenumber="1025"><td class="num" id="LN1025">1025</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1026"><td class="num" id="LN1026">1026</td><td class="line"> result = strcmp (k1, k2);</td></tr>
+<tr class="codeline" data-linenumber="1027"><td class="num" id="LN1027">1027</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1028"><td class="num" id="LN1028">1028</td><td class="line"> g_free (k1);</td></tr>
+<tr class="codeline" data-linenumber="1029"><td class="num" id="LN1029">1029</td><td class="line"> g_free (k2);</td></tr>
+<tr class="codeline" data-linenumber="1030"><td class="num" id="LN1030">1030</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1031"><td class="num" id="LN1031">1031</td><td class="line"> <span class='keyword'>return</span> result;</td></tr>
+<tr class="codeline" data-linenumber="1032"><td class="num" id="LN1032">1032</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1033"><td class="num" id="LN1033">1033</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1034"><td class="num" id="LN1034">1034</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1035"><td class="num" id="LN1035">1035</td><td class="line"><span class='keyword'>static</span> gint</td></tr>
+<tr class="codeline" data-linenumber="1036"><td class="num" id="LN1036">1036</td><td class="line">model_sort_default (FileBrowserNode * node1, FileBrowserNode * node2)</td></tr>
+<tr class="codeline" data-linenumber="1037"><td class="num" id="LN1037">1037</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1038"><td class="num" id="LN1038">1038</td><td class="line"> gint f1;</td></tr>
+<tr class="codeline" data-linenumber="1039"><td class="num" id="LN1039">1039</td><td class="line"> gint f2;</td></tr>
+<tr class="codeline" data-linenumber="1040"><td class="num" id="LN1040">1040</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1041"><td class="num" id="LN1041">1041</td><td class="line"> f1 = <span class='macro'>NODE_IS_DUMMY (node1)<span class='macro_popup'>(((node1)-&gt;flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_DUMMY<br>))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1042"><td class="num" id="LN1042">1042</td><td class="line"> f2 = <span class='macro'>NODE_IS_DUMMY (node2)<span class='macro_popup'>(((node2)-&gt;flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_DUMMY<br>))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1043"><td class="num" id="LN1043">1043</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1044"><td class="num" id="LN1044">1044</td><td class="line"> <span class='keyword'>if</span> (f1 &amp;&amp; f2)</td></tr>
+<tr class="codeline" data-linenumber="1045"><td class="num" id="LN1045">1045</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="1046"><td class="num" id="LN1046">1046</td><td class="line"> <span class='keyword'>return</span> 0;</td></tr>
+<tr class="codeline" data-linenumber="1047"><td class="num" id="LN1047">1047</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1048"><td class="num" id="LN1048">1048</td><td class="line"> <span class='keyword'>else</span> <span class='keyword'>if</span> (f1 || f2)</td></tr>
+<tr class="codeline" data-linenumber="1049"><td class="num" id="LN1049">1049</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="1050"><td class="num" id="LN1050">1050</td><td class="line"> <span class='keyword'>return</span> f1 ? -1 : 1;</td></tr>
+<tr class="codeline" data-linenumber="1051"><td class="num" id="LN1051">1051</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1052"><td class="num" id="LN1052">1052</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1053"><td class="num" id="LN1053">1053</td><td class="line"> f1 = <span class='macro'>NODE_IS_DIR (node1)<span class='macro_popup'>(((node1)-&gt;flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_DIRECTORY<br>))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1054"><td class="num" id="LN1054">1054</td><td class="line"> f2 = <span class='macro'>NODE_IS_DIR (node2)<span class='macro_popup'>(((node2)-&gt;flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_DIRECTORY<br>))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1055"><td class="num" id="LN1055">1055</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1056"><td class="num" id="LN1056">1056</td><td class="line"> <span class='keyword'>if</span> (f1 != f2)</td></tr>
+<tr class="codeline" data-linenumber="1057"><td class="num" id="LN1057">1057</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="1058"><td class="num" id="LN1058">1058</td><td class="line"> <span class='keyword'>return</span> f1 ? -1 : 1;</td></tr>
+<tr class="codeline" data-linenumber="1059"><td class="num" id="LN1059">1059</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1060"><td class="num" id="LN1060">1060</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1061"><td class="num" id="LN1061">1061</td><td class="line"> f1 = <span class='macro'>NODE_IS_HIDDEN (node1)<span class='macro_popup'>(((node1)-&gt;flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_HIDDEN<br>))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1062"><td class="num" id="LN1062">1062</td><td class="line"> f2 = <span class='macro'>NODE_IS_HIDDEN (node2)<span class='macro_popup'>(((node2)-&gt;flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_HIDDEN<br>))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1063"><td class="num" id="LN1063">1063</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1064"><td class="num" id="LN1064">1064</td><td class="line"> <span class='keyword'>if</span> (f1 != f2)</td></tr>
+<tr class="codeline" data-linenumber="1065"><td class="num" id="LN1065">1065</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="1066"><td class="num" id="LN1066">1066</td><td class="line"> <span class='keyword'>return</span> f2 ? -1 : 1;</td></tr>
+<tr class="codeline" data-linenumber="1067"><td class="num" id="LN1067">1067</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1068"><td class="num" id="LN1068">1068</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1069"><td class="num" id="LN1069">1069</td><td class="line"> <span class='keyword'>return</span> collate_nodes (node1, node2);</td></tr>
+<tr class="codeline" data-linenumber="1070"><td class="num" id="LN1070">1070</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1071"><td class="num" id="LN1071">1071</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1072"><td class="num" id="LN1072">1072</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1073"><td class="num" id="LN1073">1073</td><td class="line">model_resort_node (PlumaFileBrowserStore * model, FileBrowserNode * node)</td></tr>
+<tr class="codeline" data-linenumber="1074"><td class="num" id="LN1074">1074</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1075"><td class="num" id="LN1075">1075</td><td class="line"> FileBrowserNodeDir *dir;</td></tr>
+<tr class="codeline" data-linenumber="1076"><td class="num" id="LN1076">1076</td><td class="line"> GSList *item;</td></tr>
+<tr class="codeline" data-linenumber="1077"><td class="num" id="LN1077">1077</td><td class="line"> FileBrowserNode *child;</td></tr>
+<tr class="codeline" data-linenumber="1078"><td class="num" id="LN1078">1078</td><td class="line"> gint pos = 0;</td></tr>
+<tr class="codeline" data-linenumber="1079"><td class="num" id="LN1079">1079</td><td class="line"> GtkTreeIter iter;</td></tr>
+<tr class="codeline" data-linenumber="1080"><td class="num" id="LN1080">1080</td><td class="line"> GtkTreePath *path;</td></tr>
+<tr class="codeline" data-linenumber="1081"><td class="num" id="LN1081">1081</td><td class="line"> gint *neworder;</td></tr>
+<tr class="codeline" data-linenumber="1082"><td class="num" id="LN1082">1082</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1083"><td class="num" id="LN1083">1083</td><td class="line"> dir = <span class='macro'>FILE_BROWSER_NODE_DIR (node-&gt;parent)<span class='macro_popup'>((FileBrowserNodeDir *)(node-&gt;parent))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1084"><td class="num" id="LN1084">1084</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1085"><td class="num" id="LN1085">1085</td><td class="line"> <span class='keyword'>if</span> (!model_node_visibility (model, node-&gt;parent)) {</td></tr>
+<tr class="codeline" data-linenumber="1086"><td class="num" id="LN1086">1086</td><td class="line"> <span class='comment'>/* Just sort the children of the parent */</span></td></tr>
+<tr class="codeline" data-linenumber="1087"><td class="num" id="LN1087">1087</td><td class="line"> dir-&gt;children = g_slist_sort (dir-&gt;children,</td></tr>
+<tr class="codeline" data-linenumber="1088"><td class="num" id="LN1088">1088</td><td class="line"> (GCompareFunc) (model-&gt;priv-&gt;</td></tr>
+<tr class="codeline" data-linenumber="1089"><td class="num" id="LN1089">1089</td><td class="line"> sort_func));</td></tr>
+<tr class="codeline" data-linenumber="1090"><td class="num" id="LN1090">1090</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="1091"><td class="num" id="LN1091">1091</td><td class="line"> <span class='comment'>/* Store current positions */</span></td></tr>
+<tr class="codeline" data-linenumber="1092"><td class="num" id="LN1092">1092</td><td class="line"> <span class='keyword'>for</span> (item = dir-&gt;children; item; item = item-&gt;next) {</td></tr>
+<tr class="codeline" data-linenumber="1093"><td class="num" id="LN1093">1093</td><td class="line"> child = (FileBrowserNode *) (item-&gt;data);</td></tr>
+<tr class="codeline" data-linenumber="1094"><td class="num" id="LN1094">1094</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1095"><td class="num" id="LN1095">1095</td><td class="line"> <span class='keyword'>if</span> (model_node_visibility (model, child))</td></tr>
+<tr class="codeline" data-linenumber="1096"><td class="num" id="LN1096">1096</td><td class="line"> child-&gt;pos = pos++;</td></tr>
+<tr class="codeline" data-linenumber="1097"><td class="num" id="LN1097">1097</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1098"><td class="num" id="LN1098">1098</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1099"><td class="num" id="LN1099">1099</td><td class="line"> dir-&gt;children = g_slist_sort (dir-&gt;children,</td></tr>
+<tr class="codeline" data-linenumber="1100"><td class="num" id="LN1100">1100</td><td class="line"> (GCompareFunc) (model-&gt;priv-&gt;</td></tr>
+<tr class="codeline" data-linenumber="1101"><td class="num" id="LN1101">1101</td><td class="line"> sort_func));</td></tr>
+<tr class="codeline" data-linenumber="1102"><td class="num" id="LN1102">1102</td><td class="line"> neworder = <span class='macro'>g_new (gint, pos)<span class='macro_popup'>(gint *) (__extension__ ({ gsize __n = (gsize) (pos); gsize __s<br> = sizeof (gint); gpointer __p; if (__s == 1) __p = g_malloc (<br>__n); else if (__builtin_constant_p (__n) &amp;&amp; (__s == 0<br> || __n &lt;= (9223372036854775807L *2UL+1UL) / __s)) __p = g_malloc<br> (__n * __s); else __p = g_malloc_n (__n, __s); __p; }))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1103"><td class="num" id="LN1103">1103</td><td class="line"> pos = 0;</td></tr>
+<tr class="codeline" data-linenumber="1104"><td class="num" id="LN1104">1104</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1105"><td class="num" id="LN1105">1105</td><td class="line"> <span class='comment'>/* Store the new positions */</span></td></tr>
+<tr class="codeline" data-linenumber="1106"><td class="num" id="LN1106">1106</td><td class="line"> <span class='keyword'>for</span> (item = dir-&gt;children; item; item = item-&gt;next) {</td></tr>
+<tr class="codeline" data-linenumber="1107"><td class="num" id="LN1107">1107</td><td class="line"> child = (FileBrowserNode *) (item-&gt;data);</td></tr>
+<tr class="codeline" data-linenumber="1108"><td class="num" id="LN1108">1108</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1109"><td class="num" id="LN1109">1109</td><td class="line"> <span class='keyword'>if</span> (model_node_visibility (model, child))</td></tr>
+<tr class="codeline" data-linenumber="1110"><td class="num" id="LN1110">1110</td><td class="line"> neworder[pos++] = child-&gt;pos;</td></tr>
+<tr class="codeline" data-linenumber="1111"><td class="num" id="LN1111">1111</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1112"><td class="num" id="LN1112">1112</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1113"><td class="num" id="LN1113">1113</td><td class="line"> iter.user_data = node-&gt;parent;</td></tr>
+<tr class="codeline" data-linenumber="1114"><td class="num" id="LN1114">1114</td><td class="line"> path =</td></tr>
+<tr class="codeline" data-linenumber="1115"><td class="num" id="LN1115">1115</td><td class="line"> pluma_file_browser_store_get_path_real (model,</td></tr>
+<tr class="codeline" data-linenumber="1116"><td class="num" id="LN1116">1116</td><td class="line"> node-&gt;parent);</td></tr>
+<tr class="codeline" data-linenumber="1117"><td class="num" id="LN1117">1117</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1118"><td class="num" id="LN1118">1118</td><td class="line"> gtk_tree_model_rows_reordered (<span class='macro'>GTK_TREE_MODEL (model)<span class='macro_popup'>((((GtkTreeModel*) (void *) ((model)))))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="1119"><td class="num" id="LN1119">1119</td><td class="line"> path, &amp;iter, neworder);</td></tr>
+<tr class="codeline" data-linenumber="1120"><td class="num" id="LN1120">1120</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1121"><td class="num" id="LN1121">1121</td><td class="line"> g_free (neworder);</td></tr>
+<tr class="codeline" data-linenumber="1122"><td class="num" id="LN1122">1122</td><td class="line"> gtk_tree_path_free (path);</td></tr>
+<tr class="codeline" data-linenumber="1123"><td class="num" id="LN1123">1123</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1124"><td class="num" id="LN1124">1124</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1125"><td class="num" id="LN1125">1125</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1126"><td class="num" id="LN1126">1126</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1127"><td class="num" id="LN1127">1127</td><td class="line">row_changed (PlumaFileBrowserStore * model,</td></tr>
+<tr class="codeline" data-linenumber="1128"><td class="num" id="LN1128">1128</td><td class="line"> GtkTreePath ** path,</td></tr>
+<tr class="codeline" data-linenumber="1129"><td class="num" id="LN1129">1129</td><td class="line"> GtkTreeIter * iter)</td></tr>
+<tr class="codeline" data-linenumber="1130"><td class="num" id="LN1130">1130</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1131"><td class="num" id="LN1131">1131</td><td class="line"> GtkTreeRowReference *ref = gtk_tree_row_reference_new (<span class='macro'>GTK_TREE_MODEL (model)<span class='macro_popup'>((((GtkTreeModel*) (void *) ((model)))))</span></span>, *path);</td></tr>
+<tr class="codeline" data-linenumber="1132"><td class="num" id="LN1132">1132</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1133"><td class="num" id="LN1133">1133</td><td class="line"> <span class='comment'>/* Insert a copy of the actual path here because the row-inserted</span></td></tr>
+<tr class="codeline" data-linenumber="1134"><td class="num" id="LN1134">1134</td><td class="line"> <span class='comment'>signal may alter the path */</span></td></tr>
+<tr class="codeline" data-linenumber="1135"><td class="num" id="LN1135">1135</td><td class="line"> gtk_tree_model_row_changed (<span class='macro'>GTK_TREE_MODEL(model)<span class='macro_popup'>((((GtkTreeModel*) (void *) ((model)))))</span></span>, *path, iter);</td></tr>
+<tr class="codeline" data-linenumber="1136"><td class="num" id="LN1136">1136</td><td class="line"> gtk_tree_path_free (*path);</td></tr>
+<tr class="codeline" data-linenumber="1137"><td class="num" id="LN1137">1137</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1138"><td class="num" id="LN1138">1138</td><td class="line"> *path = gtk_tree_row_reference_get_path (ref);</td></tr>
+<tr class="codeline" data-linenumber="1139"><td class="num" id="LN1139">1139</td><td class="line"> gtk_tree_row_reference_free (ref);</td></tr>
+<tr class="codeline" data-linenumber="1140"><td class="num" id="LN1140">1140</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1141"><td class="num" id="LN1141">1141</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1142"><td class="num" id="LN1142">1142</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1143"><td class="num" id="LN1143">1143</td><td class="line">row_inserted (PlumaFileBrowserStore * model,</td></tr>
+<tr class="codeline" data-linenumber="1144"><td class="num" id="LN1144">1144</td><td class="line"> GtkTreePath ** path,</td></tr>
+<tr class="codeline" data-linenumber="1145"><td class="num" id="LN1145">1145</td><td class="line"> GtkTreeIter * iter)</td></tr>
+<tr class="codeline" data-linenumber="1146"><td class="num" id="LN1146">1146</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1147"><td class="num" id="LN1147">1147</td><td class="line"> <span class='comment'>/* This function creates a row reference for the path because it's</span></td></tr>
+<tr class="codeline" data-linenumber="1148"><td class="num" id="LN1148">1148</td><td class="line"> <span class='comment'>uncertain what might change the actual model/view when we insert</span></td></tr>
+<tr class="codeline" data-linenumber="1149"><td class="num" id="LN1149">1149</td><td class="line"> <span class='comment'>a node, maybe another directory load is triggered for example.</span></td></tr>
+<tr class="codeline" data-linenumber="1150"><td class="num" id="LN1150">1150</td><td class="line"> <span class='comment'>Because functions that use this function rely on the notion that</span></td></tr>
+<tr class="codeline" data-linenumber="1151"><td class="num" id="LN1151">1151</td><td class="line"> <span class='comment'>the path remains pointed towards the inserted node, we use the</span></td></tr>
+<tr class="codeline" data-linenumber="1152"><td class="num" id="LN1152">1152</td><td class="line"> <span class='comment'>reference to keep track. */</span></td></tr>
+<tr class="codeline" data-linenumber="1153"><td class="num" id="LN1153">1153</td><td class="line"> GtkTreeRowReference *ref = gtk_tree_row_reference_new (<span class='macro'>GTK_TREE_MODEL (model)<span class='macro_popup'>((((GtkTreeModel*) (void *) ((model)))))</span></span>, *path);</td></tr>
+<tr class="codeline" data-linenumber="1154"><td class="num" id="LN1154">1154</td><td class="line"> GtkTreePath * copy = gtk_tree_path_copy (*path);</td></tr>
+<tr class="codeline" data-linenumber="1155"><td class="num" id="LN1155">1155</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1156"><td class="num" id="LN1156">1156</td><td class="line"> gtk_tree_model_row_inserted (<span class='macro'>GTK_TREE_MODEL(model)<span class='macro_popup'>((((GtkTreeModel*) (void *) ((model)))))</span></span>, copy, iter);</td></tr>
+<tr class="codeline" data-linenumber="1157"><td class="num" id="LN1157">1157</td><td class="line"> gtk_tree_path_free (copy);</td></tr>
+<tr class="codeline" data-linenumber="1158"><td class="num" id="LN1158">1158</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1159"><td class="num" id="LN1159">1159</td><td class="line"> <span class='keyword'>if</span> (ref)</td></tr>
+<tr class="codeline" data-linenumber="1160"><td class="num" id="LN1160">1160</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="1161"><td class="num" id="LN1161">1161</td><td class="line"> gtk_tree_path_free (*path);</td></tr>
+<tr class="codeline" data-linenumber="1162"><td class="num" id="LN1162">1162</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1163"><td class="num" id="LN1163">1163</td><td class="line"> <span class='comment'>/* To restore the path, we get the path from the reference. But, since</span></td></tr>
+<tr class="codeline" data-linenumber="1164"><td class="num" id="LN1164">1164</td><td class="line"> <span class='comment'>we inserted a row, the path will be one index further than the</span></td></tr>
+<tr class="codeline" data-linenumber="1165"><td class="num" id="LN1165">1165</td><td class="line"> <span class='comment'>actual path of our node. We therefore call gtk_tree_path_prev */</span></td></tr>
+<tr class="codeline" data-linenumber="1166"><td class="num" id="LN1166">1166</td><td class="line"> *path = gtk_tree_row_reference_get_path (ref);</td></tr>
+<tr class="codeline" data-linenumber="1167"><td class="num" id="LN1167">1167</td><td class="line"> gtk_tree_path_prev (*path);</td></tr>
+<tr class="codeline" data-linenumber="1168"><td class="num" id="LN1168">1168</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1169"><td class="num" id="LN1169">1169</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1170"><td class="num" id="LN1170">1170</td><td class="line"> gtk_tree_row_reference_free (ref);</td></tr>
+<tr class="codeline" data-linenumber="1171"><td class="num" id="LN1171">1171</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1172"><td class="num" id="LN1172">1172</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1173"><td class="num" id="LN1173">1173</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1174"><td class="num" id="LN1174">1174</td><td class="line">row_deleted (PlumaFileBrowserStore * model,</td></tr>
+<tr class="codeline" data-linenumber="1175"><td class="num" id="LN1175">1175</td><td class="line"> <span class='keyword'>const</span> GtkTreePath * path)</td></tr>
+<tr class="codeline" data-linenumber="1176"><td class="num" id="LN1176">1176</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1177"><td class="num" id="LN1177">1177</td><td class="line"> GtkTreePath *copy = gtk_tree_path_copy (path);</td></tr>
+<tr class="codeline" data-linenumber="1178"><td class="num" id="LN1178">1178</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1179"><td class="num" id="LN1179">1179</td><td class="line"> <span class='comment'>/* Delete a copy of the actual path here because the row-deleted</span></td></tr>
+<tr class="codeline" data-linenumber="1180"><td class="num" id="LN1180">1180</td><td class="line"> <span class='comment'>signal may alter the path */</span></td></tr>
+<tr class="codeline" data-linenumber="1181"><td class="num" id="LN1181">1181</td><td class="line"> gtk_tree_model_row_deleted (<span class='macro'>GTK_TREE_MODEL(model)<span class='macro_popup'>((((GtkTreeModel*) (void *) ((model)))))</span></span>, copy);</td></tr>
+<tr class="codeline" data-linenumber="1182"><td class="num" id="LN1182">1182</td><td class="line"> gtk_tree_path_free (copy);</td></tr>
+<tr class="codeline" data-linenumber="1183"><td class="num" id="LN1183">1183</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1184"><td class="num" id="LN1184">1184</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1185"><td class="num" id="LN1185">1185</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1186"><td class="num" id="LN1186">1186</td><td class="line">model_refilter_node (PlumaFileBrowserStore * model,</td></tr>
+<tr class="codeline" data-linenumber="1187"><td class="num" id="LN1187">1187</td><td class="line"> FileBrowserNode * node,</td></tr>
+<tr class="codeline" data-linenumber="1188"><td class="num" id="LN1188">1188</td><td class="line"> GtkTreePath ** path)</td></tr>
+<tr class="codeline" data-linenumber="1189"><td class="num" id="LN1189">1189</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1190"><td class="num" id="LN1190">1190</td><td class="line"> gboolean old_visible;</td></tr>
+<tr class="codeline" data-linenumber="1191"><td class="num" id="LN1191">1191</td><td class="line"> gboolean new_visible;</td></tr>
+<tr class="codeline" data-linenumber="1192"><td class="num" id="LN1192">1192</td><td class="line"> FileBrowserNodeDir *dir;</td></tr>
+<tr class="codeline" data-linenumber="1193"><td class="num" id="LN1193">1193</td><td class="line"> GSList *item;</td></tr>
+<tr class="codeline" data-linenumber="1194"><td class="num" id="LN1194">1194</td><td class="line"> GtkTreeIter iter;</td></tr>
+<tr class="codeline" data-linenumber="1195"><td class="num" id="LN1195">1195</td><td class="line"> GtkTreePath *tmppath = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1196"><td class="num" id="LN1196">1196</td><td class="line"> gboolean in_tree;</td></tr>
+<tr class="codeline" data-linenumber="1197"><td class="num" id="LN1197">1197</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1198"><td class="num" id="LN1198">1198</td><td class="line"> <span class='keyword'>if</span> (node == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="1199"><td class="num" id="LN1199">1199</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="1200"><td class="num" id="LN1200">1200</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1201"><td class="num" id="LN1201">1201</td><td class="line"> old_visible = model_node_visibility (model, node);</td></tr>
+<tr class="codeline" data-linenumber="1202"><td class="num" id="LN1202">1202</td><td class="line"> model_node_update_visibility (model, node);</td></tr>
+<tr class="codeline" data-linenumber="1203"><td class="num" id="LN1203">1203</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1204"><td class="num" id="LN1204">1204</td><td class="line"> in_tree = node_in_tree (model, node);</td></tr>
+<tr class="codeline" data-linenumber="1205"><td class="num" id="LN1205">1205</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1206"><td class="num" id="LN1206">1206</td><td class="line"> <span class='keyword'>if</span> (path == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="1207"><td class="num" id="LN1207">1207</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="1208"><td class="num" id="LN1208">1208</td><td class="line"> <span class='keyword'>if</span> (in_tree)</td></tr>
+<tr class="codeline" data-linenumber="1209"><td class="num" id="LN1209">1209</td><td class="line"> tmppath = pluma_file_browser_store_get_path_real (model,</td></tr>
+<tr class="codeline" data-linenumber="1210"><td class="num" id="LN1210">1210</td><td class="line"> node);</td></tr>
+<tr class="codeline" data-linenumber="1211"><td class="num" id="LN1211">1211</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="1212"><td class="num" id="LN1212">1212</td><td class="line"> tmppath = gtk_tree_path_new_first ();</td></tr>
+<tr class="codeline" data-linenumber="1213"><td class="num" id="LN1213">1213</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1214"><td class="num" id="LN1214">1214</td><td class="line"> path = &amp;tmppath;</td></tr>
+<tr class="codeline" data-linenumber="1215"><td class="num" id="LN1215">1215</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1216"><td class="num" id="LN1216">1216</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1217"><td class="num" id="LN1217">1217</td><td class="line"> <span class='keyword'>if</span> (<span class='macro'>NODE_IS_DIR (node)<span class='macro_popup'>(((node)-&gt;flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_DIRECTORY<br>))</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1218"><td class="num" id="LN1218">1218</td><td class="line"> <span class='keyword'>if</span> (in_tree)</td></tr>
+<tr class="codeline" data-linenumber="1219"><td class="num" id="LN1219">1219</td><td class="line"> gtk_tree_path_down (*path);</td></tr>
+<tr class="codeline" data-linenumber="1220"><td class="num" id="LN1220">1220</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1221"><td class="num" id="LN1221">1221</td><td class="line"> dir = <span class='macro'>FILE_BROWSER_NODE_DIR (node)<span class='macro_popup'>((FileBrowserNodeDir *)(node))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1222"><td class="num" id="LN1222">1222</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1223"><td class="num" id="LN1223">1223</td><td class="line"> <span class='keyword'>for</span> (item = dir-&gt;children; item; item = item-&gt;next) {</td></tr>
+<tr class="codeline" data-linenumber="1224"><td class="num" id="LN1224">1224</td><td class="line"> model_refilter_node (model,</td></tr>
+<tr class="codeline" data-linenumber="1225"><td class="num" id="LN1225">1225</td><td class="line"> (FileBrowserNode *) (item-&gt;data),</td></tr>
+<tr class="codeline" data-linenumber="1226"><td class="num" id="LN1226">1226</td><td class="line"> path);</td></tr>
+<tr class="codeline" data-linenumber="1227"><td class="num" id="LN1227">1227</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1228"><td class="num" id="LN1228">1228</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1229"><td class="num" id="LN1229">1229</td><td class="line"> <span class='keyword'>if</span> (in_tree)</td></tr>
+<tr class="codeline" data-linenumber="1230"><td class="num" id="LN1230">1230</td><td class="line"> gtk_tree_path_up (*path);</td></tr>
+<tr class="codeline" data-linenumber="1231"><td class="num" id="LN1231">1231</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1232"><td class="num" id="LN1232">1232</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1233"><td class="num" id="LN1233">1233</td><td class="line"> <span class='keyword'>if</span> (in_tree) {</td></tr>
+<tr class="codeline" data-linenumber="1234"><td class="num" id="LN1234">1234</td><td class="line"> new_visible = model_node_visibility (model, node);</td></tr>
+<tr class="codeline" data-linenumber="1235"><td class="num" id="LN1235">1235</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1236"><td class="num" id="LN1236">1236</td><td class="line"> <span class='keyword'>if</span> (old_visible != new_visible) {</td></tr>
+<tr class="codeline" data-linenumber="1237"><td class="num" id="LN1237">1237</td><td class="line"> <span class='keyword'>if</span> (old_visible) {</td></tr>
+<tr class="codeline" data-linenumber="1238"><td class="num" id="LN1238">1238</td><td class="line"> node-&gt;inserted = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1239"><td class="num" id="LN1239">1239</td><td class="line"> row_deleted (model, *path);</td></tr>
+<tr class="codeline" data-linenumber="1240"><td class="num" id="LN1240">1240</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="1241"><td class="num" id="LN1241">1241</td><td class="line"> iter.user_data = node;</td></tr>
+<tr class="codeline" data-linenumber="1242"><td class="num" id="LN1242">1242</td><td class="line"> row_inserted (model, path, &amp;iter);</td></tr>
+<tr class="codeline" data-linenumber="1243"><td class="num" id="LN1243">1243</td><td class="line"> gtk_tree_path_next (*path);</td></tr>
+<tr class="codeline" data-linenumber="1244"><td class="num" id="LN1244">1244</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1245"><td class="num" id="LN1245">1245</td><td class="line"> } <span class='keyword'>else</span> <span class='keyword'>if</span> (old_visible) {</td></tr>
+<tr class="codeline" data-linenumber="1246"><td class="num" id="LN1246">1246</td><td class="line"> gtk_tree_path_next (*path);</td></tr>
+<tr class="codeline" data-linenumber="1247"><td class="num" id="LN1247">1247</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1248"><td class="num" id="LN1248">1248</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1249"><td class="num" id="LN1249">1249</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1250"><td class="num" id="LN1250">1250</td><td class="line"> model_check_dummy (model, node);</td></tr>
+<tr class="codeline" data-linenumber="1251"><td class="num" id="LN1251">1251</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1252"><td class="num" id="LN1252">1252</td><td class="line"> <span class='keyword'>if</span> (tmppath)</td></tr>
+<tr class="codeline" data-linenumber="1253"><td class="num" id="LN1253">1253</td><td class="line"> gtk_tree_path_free (tmppath);</td></tr>
+<tr class="codeline" data-linenumber="1254"><td class="num" id="LN1254">1254</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1255"><td class="num" id="LN1255">1255</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1256"><td class="num" id="LN1256">1256</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1257"><td class="num" id="LN1257">1257</td><td class="line">model_refilter (PlumaFileBrowserStore * model)</td></tr>
+<tr class="codeline" data-linenumber="1258"><td class="num" id="LN1258">1258</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1259"><td class="num" id="LN1259">1259</td><td class="line"> model_refilter_node (model, model-&gt;priv-&gt;root, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1260"><td class="num" id="LN1260">1260</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1261"><td class="num" id="LN1261">1261</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1262"><td class="num" id="LN1262">1262</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1263"><td class="num" id="LN1263">1263</td><td class="line">file_browser_node_set_name (FileBrowserNode * node)</td></tr>
+<tr class="codeline" data-linenumber="1264"><td class="num" id="LN1264">1264</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1265"><td class="num" id="LN1265">1265</td><td class="line"> g_free (node-&gt;name);</td></tr>
+<tr class="codeline" data-linenumber="1266"><td class="num" id="LN1266">1266</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1267"><td class="num" id="LN1267">1267</td><td class="line"> <span class='keyword'>if</span> (node-&gt;file) {</td></tr>
+<tr class="codeline" data-linenumber="1268"><td class="num" id="LN1268">1268</td><td class="line"> node-&gt;name = pluma_file_browser_utils_file_basename (node-&gt;file);</td></tr>
+<tr class="codeline" data-linenumber="1269"><td class="num" id="LN1269">1269</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="1270"><td class="num" id="LN1270">1270</td><td class="line"> node-&gt;name = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1271"><td class="num" id="LN1271">1271</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1272"><td class="num" id="LN1272">1272</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1273"><td class="num" id="LN1273">1273</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1274"><td class="num" id="LN1274">1274</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1275"><td class="num" id="LN1275">1275</td><td class="line">file_browser_node_init (FileBrowserNode * node, GFile * file,</td></tr>
+<tr class="codeline" data-linenumber="1276"><td class="num" id="LN1276">1276</td><td class="line"> FileBrowserNode * parent)</td></tr>
+<tr class="codeline" data-linenumber="1277"><td class="num" id="LN1277">1277</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1278"><td class="num" id="LN1278">1278</td><td class="line"> <span class='keyword'>if</span> (file != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1279"><td class="num" id="LN1279">1279</td><td class="line"> node-&gt;file = <span class='macro'>g_object_ref (file)<span class='macro_popup'>((__typeof__ (file)) (g_object_ref) (file))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1280"><td class="num" id="LN1280">1280</td><td class="line"> file_browser_node_set_name (node);</td></tr>
+<tr class="codeline" data-linenumber="1281"><td class="num" id="LN1281">1281</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1282"><td class="num" id="LN1282">1282</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1283"><td class="num" id="LN1283">1283</td><td class="line"> node-&gt;parent = parent;</td></tr>
+<tr class="codeline" data-linenumber="1284"><td class="num" id="LN1284">1284</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1285"><td class="num" id="LN1285">1285</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1286"><td class="num" id="LN1286">1286</td><td class="line"><span class='keyword'>static</span> FileBrowserNode *</td></tr>
+<tr class="codeline" data-linenumber="1287"><td class="num" id="LN1287">1287</td><td class="line">file_browser_node_new (GFile * file, FileBrowserNode * parent)</td></tr>
+<tr class="codeline" data-linenumber="1288"><td class="num" id="LN1288">1288</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1289"><td class="num" id="LN1289">1289</td><td class="line"> FileBrowserNode *node = <span class='macro'>g_slice_new0 (FileBrowserNode)<span class='macro_popup'>(FileBrowserNode *) (__extension__ ({ gsize __s = sizeof (FileBrowserNode<br>); gpointer __p; __p = g_slice_alloc (__s); memset (__p, 0, __s<br>); __p; }))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1290"><td class="num" id="LN1290">1290</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1291"><td class="num" id="LN1291">1291</td><td class="line"> file_browser_node_init (node, file, parent);</td></tr>
+<tr class="codeline" data-linenumber="1292"><td class="num" id="LN1292">1292</td><td class="line"> <span class='keyword'>return</span> node;</td></tr>
+<tr class="codeline" data-linenumber="1293"><td class="num" id="LN1293">1293</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1294"><td class="num" id="LN1294">1294</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1295"><td class="num" id="LN1295">1295</td><td class="line"><span class='keyword'>static</span> FileBrowserNode *</td></tr>
+<tr class="codeline" data-linenumber="1296"><td class="num" id="LN1296">1296</td><td class="line">file_browser_node_dir_new (PlumaFileBrowserStore * model,</td></tr>
+<tr class="codeline" data-linenumber="1297"><td class="num" id="LN1297">1297</td><td class="line"> GFile * file, FileBrowserNode * parent)</td></tr>
+<tr class="codeline" data-linenumber="1298"><td class="num" id="LN1298">1298</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1299"><td class="num" id="LN1299">1299</td><td class="line"> FileBrowserNode *node =</td></tr>
+<tr class="codeline" data-linenumber="1300"><td class="num" id="LN1300">1300</td><td class="line"> (FileBrowserNode *) <span class='macro'>g_slice_new0 (FileBrowserNodeDir)<span class='macro_popup'>(FileBrowserNodeDir *) (__extension__ ({ gsize __s = sizeof (<br>FileBrowserNodeDir); gpointer __p; __p = g_slice_alloc (__s);<br> memset (__p, 0, __s); __p; }))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1301"><td class="num" id="LN1301">1301</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1302"><td class="num" id="LN1302">1302</td><td class="line"> file_browser_node_init (node, file, parent);</td></tr>
+<tr class="codeline" data-linenumber="1303"><td class="num" id="LN1303">1303</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1304"><td class="num" id="LN1304">1304</td><td class="line"> node-&gt;flags |= PLUMA_FILE_BROWSER_STORE_FLAG_IS_DIRECTORY;</td></tr>
+<tr class="codeline" data-linenumber="1305"><td class="num" id="LN1305">1305</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1306"><td class="num" id="LN1306">1306</td><td class="line"> <span class='macro'>FILE_BROWSER_NODE_DIR (node)<span class='macro_popup'>((FileBrowserNodeDir *)(node))</span></span>-&gt;model = model;</td></tr>
+<tr class="codeline" data-linenumber="1307"><td class="num" id="LN1307">1307</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1308"><td class="num" id="LN1308">1308</td><td class="line"> <span class='keyword'>return</span> node;</td></tr>
+<tr class="codeline" data-linenumber="1309"><td class="num" id="LN1309">1309</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1310"><td class="num" id="LN1310">1310</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1311"><td class="num" id="LN1311">1311</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1312"><td class="num" id="LN1312">1312</td><td class="line">file_browser_node_free_children (PlumaFileBrowserStore * model,</td></tr>
+<tr class="codeline" data-linenumber="1313"><td class="num" id="LN1313">1313</td><td class="line"> FileBrowserNode * node)</td></tr>
+<tr class="codeline" data-linenumber="1314"><td class="num" id="LN1314">1314</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1315"><td class="num" id="LN1315">1315</td><td class="line"> GSList *item;</td></tr>
+<tr class="codeline" data-linenumber="1316"><td class="num" id="LN1316">1316</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1317"><td class="num" id="LN1317">1317</td><td class="line"> <span class='keyword'>if</span> (node == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="1318"><td class="num" id="LN1318">1318</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="1319"><td class="num" id="LN1319">1319</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1320"><td class="num" id="LN1320">1320</td><td class="line"> <span class='keyword'>if</span> (<span class='macro'>NODE_IS_DIR (node)<span class='macro_popup'>(((node)-&gt;flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_DIRECTORY<br>))</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1321"><td class="num" id="LN1321">1321</td><td class="line"> <span class='keyword'>for</span> (item = <span class='macro'>FILE_BROWSER_NODE_DIR (node)<span class='macro_popup'>((FileBrowserNodeDir *)(node))</span></span>-&gt;children; item;</td></tr>
+<tr class="codeline" data-linenumber="1322"><td class="num" id="LN1322">1322</td><td class="line"> item = item-&gt;next)</td></tr>
+<tr class="codeline" data-linenumber="1323"><td class="num" id="LN1323">1323</td><td class="line"> file_browser_node_free (model,</td></tr>
+<tr class="codeline" data-linenumber="1324"><td class="num" id="LN1324">1324</td><td class="line"> (FileBrowserNode *) (item-&gt;</td></tr>
+<tr class="codeline" data-linenumber="1325"><td class="num" id="LN1325">1325</td><td class="line"> data));</td></tr>
+<tr class="codeline" data-linenumber="1326"><td class="num" id="LN1326">1326</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1327"><td class="num" id="LN1327">1327</td><td class="line"> g_slist_free (<span class='macro'>FILE_BROWSER_NODE_DIR (node)<span class='macro_popup'>((FileBrowserNodeDir *)(node))</span></span>-&gt;children);</td></tr>
+<tr class="codeline" data-linenumber="1328"><td class="num" id="LN1328">1328</td><td class="line"> <span class='macro'>FILE_BROWSER_NODE_DIR (node)<span class='macro_popup'>((FileBrowserNodeDir *)(node))</span></span>-&gt;children = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1329"><td class="num" id="LN1329">1329</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1330"><td class="num" id="LN1330">1330</td><td class="line"> <span class='comment'>/* This node is no longer loaded */</span></td></tr>
+<tr class="codeline" data-linenumber="1331"><td class="num" id="LN1331">1331</td><td class="line"> node-&gt;flags &amp;= ~PLUMA_FILE_BROWSER_STORE_FLAG_LOADED;</td></tr>
+<tr class="codeline" data-linenumber="1332"><td class="num" id="LN1332">1332</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1333"><td class="num" id="LN1333">1333</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1334"><td class="num" id="LN1334">1334</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1335"><td class="num" id="LN1335">1335</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1336"><td class="num" id="LN1336">1336</td><td class="line">file_browser_node_free (PlumaFileBrowserStore * model,</td></tr>
+<tr class="codeline" data-linenumber="1337"><td class="num" id="LN1337">1337</td><td class="line"> FileBrowserNode * node)</td></tr>
+<tr class="codeline" data-linenumber="1338"><td class="num" id="LN1338">1338</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1339"><td class="num" id="LN1339">1339</td><td class="line"> gchar *uri;</td></tr>
+<tr class="codeline" data-linenumber="1340"><td class="num" id="LN1340">1340</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1341"><td class="num" id="LN1341">1341</td><td class="line"> <span class='keyword'>if</span> (node == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="1342"><td class="num" id="LN1342">1342</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="1343"><td class="num" id="LN1343">1343</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1344"><td class="num" id="LN1344">1344</td><td class="line"> <span class='keyword'>if</span> (<span class='macro'>NODE_IS_DIR (node)<span class='macro_popup'>(((node)-&gt;flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_DIRECTORY<br>))</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="1345"><td class="num" id="LN1345">1345</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="1346"><td class="num" id="LN1346">1346</td><td class="line"> FileBrowserNodeDir *dir;</td></tr>
+<tr class="codeline" data-linenumber="1347"><td class="num" id="LN1347">1347</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1348"><td class="num" id="LN1348">1348</td><td class="line"> dir = <span class='macro'>FILE_BROWSER_NODE_DIR (node)<span class='macro_popup'>((FileBrowserNodeDir *)(node))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1349"><td class="num" id="LN1349">1349</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1350"><td class="num" id="LN1350">1350</td><td class="line"> <span class='keyword'>if</span> (dir-&gt;cancellable) {</td></tr>
+<tr class="codeline" data-linenumber="1351"><td class="num" id="LN1351">1351</td><td class="line"> g_cancellable_cancel (dir-&gt;cancellable);</td></tr>
+<tr class="codeline" data-linenumber="1352"><td class="num" id="LN1352">1352</td><td class="line"> g_object_unref (dir-&gt;cancellable);</td></tr>
+<tr class="codeline" data-linenumber="1353"><td class="num" id="LN1353">1353</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1354"><td class="num" id="LN1354">1354</td><td class="line"> model_end_loading (model, node);</td></tr>
+<tr class="codeline" data-linenumber="1355"><td class="num" id="LN1355">1355</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1356"><td class="num" id="LN1356">1356</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1357"><td class="num" id="LN1357">1357</td><td class="line"> file_browser_node_free_children (model, node);</td></tr>
+<tr class="codeline" data-linenumber="1358"><td class="num" id="LN1358">1358</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1359"><td class="num" id="LN1359">1359</td><td class="line"> <span class='keyword'>if</span> (dir-&gt;monitor) {</td></tr>
+<tr class="codeline" data-linenumber="1360"><td class="num" id="LN1360">1360</td><td class="line"> g_file_monitor_cancel (dir-&gt;monitor);</td></tr>
+<tr class="codeline" data-linenumber="1361"><td class="num" id="LN1361">1361</td><td class="line"> g_object_unref (dir-&gt;monitor);</td></tr>
+<tr class="codeline" data-linenumber="1362"><td class="num" id="LN1362">1362</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1363"><td class="num" id="LN1363">1363</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1364"><td class="num" id="LN1364">1364</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1365"><td class="num" id="LN1365">1365</td><td class="line"> <span class='keyword'>if</span> (node-&gt;file)</td></tr>
+<tr class="codeline" data-linenumber="1366"><td class="num" id="LN1366">1366</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="1367"><td class="num" id="LN1367">1367</td><td class="line"> uri = g_file_get_uri (node-&gt;file);</td></tr>
+<tr class="codeline" data-linenumber="1368"><td class="num" id="LN1368">1368</td><td class="line"> g_signal_emit (model, model_signals[UNLOAD], 0, uri);</td></tr>
+<tr class="codeline" data-linenumber="1369"><td class="num" id="LN1369">1369</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1370"><td class="num" id="LN1370">1370</td><td class="line"> g_free (uri);</td></tr>
+<tr class="codeline" data-linenumber="1371"><td class="num" id="LN1371">1371</td><td class="line"> g_object_unref (node-&gt;file);</td></tr>
+<tr class="codeline" data-linenumber="1372"><td class="num" id="LN1372">1372</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1373"><td class="num" id="LN1373">1373</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1374"><td class="num" id="LN1374">1374</td><td class="line"> <span class='keyword'>if</span> (node-&gt;icon)</td></tr>
+<tr class="codeline" data-linenumber="1375"><td class="num" id="LN1375">1375</td><td class="line"> g_object_unref (node-&gt;icon);</td></tr>
+<tr class="codeline" data-linenumber="1376"><td class="num" id="LN1376">1376</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1377"><td class="num" id="LN1377">1377</td><td class="line"> <span class='keyword'>if</span> (node-&gt;emblem)</td></tr>
+<tr class="codeline" data-linenumber="1378"><td class="num" id="LN1378">1378</td><td class="line"> g_object_unref (node-&gt;emblem);</td></tr>
+<tr class="codeline" data-linenumber="1379"><td class="num" id="LN1379">1379</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1380"><td class="num" id="LN1380">1380</td><td class="line"> g_free (node-&gt;name);</td></tr>
+<tr class="codeline" data-linenumber="1381"><td class="num" id="LN1381">1381</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1382"><td class="num" id="LN1382">1382</td><td class="line"> <span class='keyword'>if</span> (<span class='macro'>NODE_IS_DIR (node)<span class='macro_popup'>(((node)-&gt;flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_DIRECTORY<br>))</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="1383"><td class="num" id="LN1383">1383</td><td class="line"> <span class='macro'>g_slice_free (FileBrowserNodeDir, (FileBrowserNodeDir *)node)<span class='macro_popup'>do { if (1) g_slice_free1 (sizeof (FileBrowserNodeDir), ((FileBrowserNodeDir<br> *)node)); else (void) ((FileBrowserNodeDir*) 0 == ((FileBrowserNodeDir<br> *)node)); } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1384"><td class="num" id="LN1384">1384</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="1385"><td class="num" id="LN1385">1385</td><td class="line"> <span class='macro'>g_slice_free (FileBrowserNode, (FileBrowserNode *)node)<span class='macro_popup'>do { if (1) g_slice_free1 (sizeof (FileBrowserNode), ((FileBrowserNode<br> *)node)); else (void) ((FileBrowserNode*) 0 == ((FileBrowserNode<br> *)node)); } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1386"><td class="num" id="LN1386">1386</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1387"><td class="num" id="LN1387">1387</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1388"><td class="num" id="LN1388">1388</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="1389"><td class="num" id="LN1389">1389</td><td class="line"> <span class='comment'>* model_remove_node_children:</span></td></tr>
+<tr class="codeline" data-linenumber="1390"><td class="num" id="LN1390">1390</td><td class="line"> <span class='comment'>* @model: the #PlumaFileBrowserStore</span></td></tr>
+<tr class="codeline" data-linenumber="1391"><td class="num" id="LN1391">1391</td><td class="line"> <span class='comment'>* @node: the FileBrowserNode to remove</span></td></tr>
+<tr class="codeline" data-linenumber="1392"><td class="num" id="LN1392">1392</td><td class="line"> <span class='comment'>* @path: the path of the node, or NULL to let the path be calculated</span></td></tr>
+<tr class="codeline" data-linenumber="1393"><td class="num" id="LN1393">1393</td><td class="line"> <span class='comment'>* @free_nodes: whether to also remove the nodes from memory</span></td></tr>
+<tr class="codeline" data-linenumber="1394"><td class="num" id="LN1394">1394</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="1395"><td class="num" id="LN1395">1395</td><td class="line"> <span class='comment'>* Removes all the children of node from the model. This function is used</span></td></tr>
+<tr class="codeline" data-linenumber="1396"><td class="num" id="LN1396">1396</td><td class="line"> <span class='comment'>* to remove the child nodes from the _model_. Don't use it to just free</span></td></tr>
+<tr class="codeline" data-linenumber="1397"><td class="num" id="LN1397">1397</td><td class="line"> <span class='comment'>* a node.</span></td></tr>
+<tr class="codeline" data-linenumber="1398"><td class="num" id="LN1398">1398</td><td class="line"> <span class='comment'>**/</span></td></tr>
+<tr class="codeline" data-linenumber="1399"><td class="num" id="LN1399">1399</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1400"><td class="num" id="LN1400">1400</td><td class="line">model_remove_node_children (PlumaFileBrowserStore * model,</td></tr>
+<tr class="codeline" data-linenumber="1401"><td class="num" id="LN1401">1401</td><td class="line"> FileBrowserNode * node,</td></tr>
+<tr class="codeline" data-linenumber="1402"><td class="num" id="LN1402">1402</td><td class="line"> GtkTreePath * path,</td></tr>
+<tr class="codeline" data-linenumber="1403"><td class="num" id="LN1403">1403</td><td class="line"> gboolean free_nodes)</td></tr>
+<tr class="codeline" data-linenumber="1404"><td class="num" id="LN1404">1404</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1405"><td class="num" id="LN1405">1405</td><td class="line"> FileBrowserNodeDir *dir;</td></tr>
+<tr class="codeline" data-linenumber="1406"><td class="num" id="LN1406">1406</td><td class="line"> GtkTreePath *path_child;</td></tr>
+<tr class="codeline" data-linenumber="1407"><td class="num" id="LN1407">1407</td><td class="line"> GSList *list;</td></tr>
+<tr class="codeline" data-linenumber="1408"><td class="num" id="LN1408">1408</td><td class="line"> GSList *item;</td></tr>
+<tr class="codeline" data-linenumber="1409"><td class="num" id="LN1409">1409</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1410"><td class="num" id="LN1410">1410</td><td class="line"> <span class='keyword'>if</span> (node == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> || !<span class='macro'>NODE_IS_DIR (node)<span class='macro_popup'>(((node)-&gt;flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_DIRECTORY<br>))</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="1411"><td class="num" id="LN1411">1411</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="1412"><td class="num" id="LN1412">1412</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1413"><td class="num" id="LN1413">1413</td><td class="line"> dir = <span class='macro'>FILE_BROWSER_NODE_DIR (node)<span class='macro_popup'>((FileBrowserNodeDir *)(node))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1414"><td class="num" id="LN1414">1414</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1415"><td class="num" id="LN1415">1415</td><td class="line"> <span class='keyword'>if</span> (dir-&gt;children == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="1416"><td class="num" id="LN1416">1416</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="1417"><td class="num" id="LN1417">1417</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1418"><td class="num" id="LN1418">1418</td><td class="line"> <span class='keyword'>if</span> (!model_node_visibility (model, node)) {</td></tr>
+<tr class="codeline" data-linenumber="1419"><td class="num" id="LN1419">1419</td><td class="line"> <span class='comment'>// Node is invisible and therefore the children can just</span></td></tr>
+<tr class="codeline" data-linenumber="1420"><td class="num" id="LN1420">1420</td><td class="line"> <span class='comment'>// be freed</span></td></tr>
+<tr class="codeline" data-linenumber="1421"><td class="num" id="LN1421">1421</td><td class="line"> <span class='keyword'>if</span> (free_nodes)</td></tr>
+<tr class="codeline" data-linenumber="1422"><td class="num" id="LN1422">1422</td><td class="line"> file_browser_node_free_children (model, node);</td></tr>
+<tr class="codeline" data-linenumber="1423"><td class="num" id="LN1423">1423</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1424"><td class="num" id="LN1424">1424</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="1425"><td class="num" id="LN1425">1425</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1426"><td class="num" id="LN1426">1426</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1427"><td class="num" id="LN1427">1427</td><td class="line"> <span class='keyword'>if</span> (path == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="1428"><td class="num" id="LN1428">1428</td><td class="line"> path_child =</td></tr>
+<tr class="codeline" data-linenumber="1429"><td class="num" id="LN1429">1429</td><td class="line"> pluma_file_browser_store_get_path_real (model, node);</td></tr>
+<tr class="codeline" data-linenumber="1430"><td class="num" id="LN1430">1430</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="1431"><td class="num" id="LN1431">1431</td><td class="line"> path_child = gtk_tree_path_copy (path);</td></tr>
+<tr class="codeline" data-linenumber="1432"><td class="num" id="LN1432">1432</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1433"><td class="num" id="LN1433">1433</td><td class="line"> gtk_tree_path_down (path_child);</td></tr>
+<tr class="codeline" data-linenumber="1434"><td class="num" id="LN1434">1434</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1435"><td class="num" id="LN1435">1435</td><td class="line"> list = g_slist_copy (dir-&gt;children);</td></tr>
+<tr class="codeline" data-linenumber="1436"><td class="num" id="LN1436">1436</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1437"><td class="num" id="LN1437">1437</td><td class="line"> <span class='keyword'>for</span> (item = list; item; item = item-&gt;next) {</td></tr>
+<tr class="codeline" data-linenumber="1438"><td class="num" id="LN1438">1438</td><td class="line"> model_remove_node (model, (FileBrowserNode *) (item-&gt;data),</td></tr>
+<tr class="codeline" data-linenumber="1439"><td class="num" id="LN1439">1439</td><td class="line"> path_child, free_nodes);</td></tr>
+<tr class="codeline" data-linenumber="1440"><td class="num" id="LN1440">1440</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1441"><td class="num" id="LN1441">1441</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1442"><td class="num" id="LN1442">1442</td><td class="line"> g_slist_free (list);</td></tr>
+<tr class="codeline" data-linenumber="1443"><td class="num" id="LN1443">1443</td><td class="line"> gtk_tree_path_free (path_child);</td></tr>
+<tr class="codeline" data-linenumber="1444"><td class="num" id="LN1444">1444</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1445"><td class="num" id="LN1445">1445</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1446"><td class="num" id="LN1446">1446</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="1447"><td class="num" id="LN1447">1447</td><td class="line"> <span class='comment'>* model_remove_node:</span></td></tr>
+<tr class="codeline" data-linenumber="1448"><td class="num" id="LN1448">1448</td><td class="line"> <span class='comment'>* @model: the #PlumaFileBrowserStore</span></td></tr>
+<tr class="codeline" data-linenumber="1449"><td class="num" id="LN1449">1449</td><td class="line"> <span class='comment'>* @node: the FileBrowserNode to remove</span></td></tr>
+<tr class="codeline" data-linenumber="1450"><td class="num" id="LN1450">1450</td><td class="line"> <span class='comment'>* @path: the path to use to remove this node, or NULL to use the path</span></td></tr>
+<tr class="codeline" data-linenumber="1451"><td class="num" id="LN1451">1451</td><td class="line"> <span class='comment'>* calculated from the node itself</span></td></tr>
+<tr class="codeline" data-linenumber="1452"><td class="num" id="LN1452">1452</td><td class="line"> <span class='comment'>* @free_nodes: whether to also remove the nodes from memory</span></td></tr>
+<tr class="codeline" data-linenumber="1453"><td class="num" id="LN1453">1453</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="1454"><td class="num" id="LN1454">1454</td><td class="line"> <span class='comment'>* Removes this node and all its children from the model. This function is used</span></td></tr>
+<tr class="codeline" data-linenumber="1455"><td class="num" id="LN1455">1455</td><td class="line"> <span class='comment'>* to remove the node from the _model_. Don't use it to just free</span></td></tr>
+<tr class="codeline" data-linenumber="1456"><td class="num" id="LN1456">1456</td><td class="line"> <span class='comment'>* a node.</span></td></tr>
+<tr class="codeline" data-linenumber="1457"><td class="num" id="LN1457">1457</td><td class="line"> <span class='comment'>**/</span></td></tr>
+<tr class="codeline" data-linenumber="1458"><td class="num" id="LN1458">1458</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1459"><td class="num" id="LN1459">1459</td><td class="line">model_remove_node (PlumaFileBrowserStore * model,</td></tr>
+<tr class="codeline" data-linenumber="1460"><td class="num" id="LN1460">1460</td><td class="line"> FileBrowserNode * node,</td></tr>
+<tr class="codeline" data-linenumber="1461"><td class="num" id="LN1461">1461</td><td class="line"> GtkTreePath * path,</td></tr>
+<tr class="codeline" data-linenumber="1462"><td class="num" id="LN1462">1462</td><td class="line"> gboolean free_nodes)</td></tr>
+<tr class="codeline" data-linenumber="1463"><td class="num" id="LN1463">1463</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1464"><td class="num" id="LN1464">1464</td><td class="line"> gboolean free_path = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1465"><td class="num" id="LN1465">1465</td><td class="line"> FileBrowserNode *parent;</td></tr>
+<tr class="codeline" data-linenumber="1466"><td class="num" id="LN1466">1466</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1467"><td class="num" id="LN1467">1467</td><td class="line"> <span class='keyword'>if</span> (path == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1468"><td class="num" id="LN1468">1468</td><td class="line"> path =</td></tr>
+<tr class="codeline" data-linenumber="1469"><td class="num" id="LN1469">1469</td><td class="line"> pluma_file_browser_store_get_path_real (model, node);</td></tr>
+<tr class="codeline" data-linenumber="1470"><td class="num" id="LN1470">1470</td><td class="line"> free_path = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1471"><td class="num" id="LN1471">1471</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1472"><td class="num" id="LN1472">1472</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1473"><td class="num" id="LN1473">1473</td><td class="line"> model_remove_node_children (model, node, path, free_nodes);</td></tr>
+<tr class="codeline" data-linenumber="1474"><td class="num" id="LN1474">1474</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1475"><td class="num" id="LN1475">1475</td><td class="line"> <span class='comment'>/* Only delete if the node is visible in the tree (but only when it's</span></td></tr>
+<tr class="codeline" data-linenumber="1476"><td class="num" id="LN1476">1476</td><td class="line"> <span class='comment'>not the virtual root) */</span></td></tr>
+<tr class="codeline" data-linenumber="1477"><td class="num" id="LN1477">1477</td><td class="line"> <span class='keyword'>if</span> (model_node_visibility (model, node) &amp;&amp; node != model-&gt;priv-&gt;virtual_root)</td></tr>
+<tr class="codeline" data-linenumber="1478"><td class="num" id="LN1478">1478</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="1479"><td class="num" id="LN1479">1479</td><td class="line"> node-&gt;inserted = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1480"><td class="num" id="LN1480">1480</td><td class="line"> row_deleted (model, path);</td></tr>
+<tr class="codeline" data-linenumber="1481"><td class="num" id="LN1481">1481</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1482"><td class="num" id="LN1482">1482</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1483"><td class="num" id="LN1483">1483</td><td class="line"> <span class='keyword'>if</span> (free_path)</td></tr>
+<tr class="codeline" data-linenumber="1484"><td class="num" id="LN1484">1484</td><td class="line"> gtk_tree_path_free (path);</td></tr>
+<tr class="codeline" data-linenumber="1485"><td class="num" id="LN1485">1485</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1486"><td class="num" id="LN1486">1486</td><td class="line"> parent = node-&gt;parent;</td></tr>
+<tr class="codeline" data-linenumber="1487"><td class="num" id="LN1487">1487</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1488"><td class="num" id="LN1488">1488</td><td class="line"> <span class='keyword'>if</span> (free_nodes) {</td></tr>
+<tr class="codeline" data-linenumber="1489"><td class="num" id="LN1489">1489</td><td class="line"> <span class='comment'>/* Remove the node from the parents children list */</span></td></tr>
+<tr class="codeline" data-linenumber="1490"><td class="num" id="LN1490">1490</td><td class="line"> <span class='keyword'>if</span> (parent)</td></tr>
+<tr class="codeline" data-linenumber="1491"><td class="num" id="LN1491">1491</td><td class="line"> <span class='macro'>FILE_BROWSER_NODE_DIR (node-&gt;parent)<span class='macro_popup'>((FileBrowserNodeDir *)(node-&gt;parent))</span></span>-&gt;children =</td></tr>
+<tr class="codeline" data-linenumber="1492"><td class="num" id="LN1492">1492</td><td class="line"> g_slist_remove (<span class='macro'>FILE_BROWSER_NODE_DIR<span class='macro_popup'>((FileBrowserNodeDir *)(node-&gt;parent))</span></span></td></tr>
+<tr class="codeline" data-linenumber="1493"><td class="num" id="LN1493">1493</td><td class="line"> <span class='macro'>(node-&gt;parent)<span class='macro_popup'>((FileBrowserNodeDir *)(node-&gt;parent))</span></span>-&gt;children,</td></tr>
+<tr class="codeline" data-linenumber="1494"><td class="num" id="LN1494">1494</td><td class="line"> node);</td></tr>
+<tr class="codeline" data-linenumber="1495"><td class="num" id="LN1495">1495</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1496"><td class="num" id="LN1496">1496</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1497"><td class="num" id="LN1497">1497</td><td class="line"> <span class='comment'>/* If this is the virtual root, than set the parent as the virtual root */</span></td></tr>
+<tr class="codeline" data-linenumber="1498"><td class="num" id="LN1498">1498</td><td class="line"> <span class='keyword'>if</span> (node == model-&gt;priv-&gt;virtual_root)</td></tr>
+<tr class="codeline" data-linenumber="1499"><td class="num" id="LN1499">1499</td><td class="line"> set_virtual_root_from_node (model, parent);</td></tr>
+<tr class="codeline" data-linenumber="1500"><td class="num" id="LN1500">1500</td><td class="line"> <span class='keyword'>else</span> <span class='keyword'>if</span> (parent &amp;&amp; model_node_visibility (model, parent) &amp;&amp; !(free_nodes &amp;&amp; <span class='macro'>NODE_IS_DUMMY(node)<span class='macro_popup'>(((node)-&gt;flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_DUMMY<br>))</span></span>))</td></tr>
+<tr class="codeline" data-linenumber="1501"><td class="num" id="LN1501">1501</td><td class="line"> model_check_dummy (model, parent);</td></tr>
+<tr class="codeline" data-linenumber="1502"><td class="num" id="LN1502">1502</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1503"><td class="num" id="LN1503">1503</td><td class="line"> <span class='comment'>/* Now free the node if necessary */</span></td></tr>
+<tr class="codeline" data-linenumber="1504"><td class="num" id="LN1504">1504</td><td class="line"> <span class='keyword'>if</span> (free_nodes)</td></tr>
+<tr class="codeline" data-linenumber="1505"><td class="num" id="LN1505">1505</td><td class="line"> file_browser_node_free (model, node);</td></tr>
+<tr class="codeline" data-linenumber="1506"><td class="num" id="LN1506">1506</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1507"><td class="num" id="LN1507">1507</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1508"><td class="num" id="LN1508">1508</td><td class="line"><span class='comment'>/**</span></td></tr>
+<tr class="codeline" data-linenumber="1509"><td class="num" id="LN1509">1509</td><td class="line"> <span class='comment'>* model_clear:</span></td></tr>
+<tr class="codeline" data-linenumber="1510"><td class="num" id="LN1510">1510</td><td class="line"> <span class='comment'>* @model: the #PlumaFileBrowserStore</span></td></tr>
+<tr class="codeline" data-linenumber="1511"><td class="num" id="LN1511">1511</td><td class="line"> <span class='comment'>* @free_nodes: whether to also remove the nodes from memory</span></td></tr>
+<tr class="codeline" data-linenumber="1512"><td class="num" id="LN1512">1512</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="1513"><td class="num" id="LN1513">1513</td><td class="line"> <span class='comment'>* Removes all nodes from the model. This function is used</span></td></tr>
+<tr class="codeline" data-linenumber="1514"><td class="num" id="LN1514">1514</td><td class="line"> <span class='comment'>* to remove all the nodes from the _model_. Don't use it to just free the</span></td></tr>
+<tr class="codeline" data-linenumber="1515"><td class="num" id="LN1515">1515</td><td class="line"> <span class='comment'>* nodes in the model.</span></td></tr>
+<tr class="codeline" data-linenumber="1516"><td class="num" id="LN1516">1516</td><td class="line"> <span class='comment'>**/</span></td></tr>
+<tr class="codeline" data-linenumber="1517"><td class="num" id="LN1517">1517</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1518"><td class="num" id="LN1518">1518</td><td class="line">model_clear (PlumaFileBrowserStore * model, gboolean free_nodes)</td></tr>
+<tr class="codeline" data-linenumber="1519"><td class="num" id="LN1519">1519</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1520"><td class="num" id="LN1520">1520</td><td class="line"> GtkTreePath *path;</td></tr>
+<tr class="codeline" data-linenumber="1521"><td class="num" id="LN1521">1521</td><td class="line"> FileBrowserNodeDir *dir;</td></tr>
+<tr class="codeline" data-linenumber="1522"><td class="num" id="LN1522">1522</td><td class="line"> FileBrowserNode *dummy;</td></tr>
+<tr class="codeline" data-linenumber="1523"><td class="num" id="LN1523">1523</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1524"><td class="num" id="LN1524">1524</td><td class="line"> path = gtk_tree_path_new ();</td></tr>
+<tr class="codeline" data-linenumber="1525"><td class="num" id="LN1525">1525</td><td class="line"> model_remove_node_children (model, model-&gt;priv-&gt;virtual_root, path,</td></tr>
+<tr class="codeline" data-linenumber="1526"><td class="num" id="LN1526">1526</td><td class="line"> free_nodes);</td></tr>
+<tr class="codeline" data-linenumber="1527"><td class="num" id="LN1527">1527</td><td class="line"> gtk_tree_path_free (path);</td></tr>
+<tr class="codeline" data-linenumber="1528"><td class="num" id="LN1528">1528</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1529"><td class="num" id="LN1529">1529</td><td class="line"> <span class='comment'>/* Remove the dummy if there is one */</span></td></tr>
+<tr class="codeline" data-linenumber="1530"><td class="num" id="LN1530">1530</td><td class="line"> <span class='keyword'>if</span> (model-&gt;priv-&gt;virtual_root) {</td></tr>
+<tr class="codeline" data-linenumber="1531"><td class="num" id="LN1531">1531</td><td class="line"> dir = <span class='macro'>FILE_BROWSER_NODE_DIR (model-&gt;priv-&gt;virtual_root)<span class='macro_popup'>((FileBrowserNodeDir *)(model-&gt;priv-&gt;virtual_root))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1532"><td class="num" id="LN1532">1532</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1533"><td class="num" id="LN1533">1533</td><td class="line"> <span class='keyword'>if</span> (dir-&gt;children != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1534"><td class="num" id="LN1534">1534</td><td class="line"> dummy = (FileBrowserNode *) (dir-&gt;children-&gt;data);</td></tr>
+<tr class="codeline" data-linenumber="1535"><td class="num" id="LN1535">1535</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1536"><td class="num" id="LN1536">1536</td><td class="line"> <span class='keyword'>if</span> (<span class='macro'>NODE_IS_DUMMY (dummy)<span class='macro_popup'>(((dummy)-&gt;flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_DUMMY<br>))</span></span></td></tr>
+<tr class="codeline" data-linenumber="1537"><td class="num" id="LN1537">1537</td><td class="line"> &amp;&amp; model_node_visibility (model, dummy)) {</td></tr>
+<tr class="codeline" data-linenumber="1538"><td class="num" id="LN1538">1538</td><td class="line"> path = gtk_tree_path_new_first ();</td></tr>
+<tr class="codeline" data-linenumber="1539"><td class="num" id="LN1539">1539</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1540"><td class="num" id="LN1540">1540</td><td class="line"> dummy-&gt;inserted = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1541"><td class="num" id="LN1541">1541</td><td class="line"> row_deleted (model, path);</td></tr>
+<tr class="codeline" data-linenumber="1542"><td class="num" id="LN1542">1542</td><td class="line"> gtk_tree_path_free (path);</td></tr>
+<tr class="codeline" data-linenumber="1543"><td class="num" id="LN1543">1543</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1544"><td class="num" id="LN1544">1544</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1545"><td class="num" id="LN1545">1545</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1546"><td class="num" id="LN1546">1546</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1547"><td class="num" id="LN1547">1547</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1548"><td class="num" id="LN1548">1548</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1549"><td class="num" id="LN1549">1549</td><td class="line">file_browser_node_unload (PlumaFileBrowserStore * model,</td></tr>
+<tr class="codeline" data-linenumber="1550"><td class="num" id="LN1550">1550</td><td class="line"> FileBrowserNode * node, gboolean remove_children)</td></tr>
+<tr class="codeline" data-linenumber="1551"><td class="num" id="LN1551">1551</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1552"><td class="num" id="LN1552">1552</td><td class="line"> FileBrowserNodeDir *dir;</td></tr>
+<tr class="codeline" data-linenumber="1553"><td class="num" id="LN1553">1553</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1554"><td class="num" id="LN1554">1554</td><td class="line"> <span class='keyword'>if</span> (node == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="1555"><td class="num" id="LN1555">1555</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="1556"><td class="num" id="LN1556">1556</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1557"><td class="num" id="LN1557">1557</td><td class="line"> <span class='keyword'>if</span> (!<span class='macro'>NODE_IS_DIR (node)<span class='macro_popup'>(((node)-&gt;flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_DIRECTORY<br>))</span></span> || !<span class='macro'>NODE_LOADED (node)<span class='macro_popup'>(((node)-&gt;flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_LOADED<br>))</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="1558"><td class="num" id="LN1558">1558</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="1559"><td class="num" id="LN1559">1559</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1560"><td class="num" id="LN1560">1560</td><td class="line"> dir = <span class='macro'>FILE_BROWSER_NODE_DIR (node)<span class='macro_popup'>((FileBrowserNodeDir *)(node))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1561"><td class="num" id="LN1561">1561</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1562"><td class="num" id="LN1562">1562</td><td class="line"> <span class='keyword'>if</span> (remove_children)</td></tr>
+<tr class="codeline" data-linenumber="1563"><td class="num" id="LN1563">1563</td><td class="line"> model_remove_node_children (model, node, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1564"><td class="num" id="LN1564">1564</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1565"><td class="num" id="LN1565">1565</td><td class="line"> <span class='keyword'>if</span> (dir-&gt;cancellable) {</td></tr>
+<tr class="codeline" data-linenumber="1566"><td class="num" id="LN1566">1566</td><td class="line"> g_cancellable_cancel (dir-&gt;cancellable);</td></tr>
+<tr class="codeline" data-linenumber="1567"><td class="num" id="LN1567">1567</td><td class="line"> g_object_unref (dir-&gt;cancellable);</td></tr>
+<tr class="codeline" data-linenumber="1568"><td class="num" id="LN1568">1568</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1569"><td class="num" id="LN1569">1569</td><td class="line"> model_end_loading (model, node);</td></tr>
+<tr class="codeline" data-linenumber="1570"><td class="num" id="LN1570">1570</td><td class="line"> dir-&gt;cancellable = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1571"><td class="num" id="LN1571">1571</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1572"><td class="num" id="LN1572">1572</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1573"><td class="num" id="LN1573">1573</td><td class="line"> <span class='keyword'>if</span> (dir-&gt;monitor) {</td></tr>
+<tr class="codeline" data-linenumber="1574"><td class="num" id="LN1574">1574</td><td class="line"> g_file_monitor_cancel (dir-&gt;monitor);</td></tr>
+<tr class="codeline" data-linenumber="1575"><td class="num" id="LN1575">1575</td><td class="line"> g_object_unref (dir-&gt;monitor);</td></tr>
+<tr class="codeline" data-linenumber="1576"><td class="num" id="LN1576">1576</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1577"><td class="num" id="LN1577">1577</td><td class="line"> dir-&gt;monitor = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1578"><td class="num" id="LN1578">1578</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1579"><td class="num" id="LN1579">1579</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1580"><td class="num" id="LN1580">1580</td><td class="line"> node-&gt;flags &amp;= ~PLUMA_FILE_BROWSER_STORE_FLAG_LOADED;</td></tr>
+<tr class="codeline" data-linenumber="1581"><td class="num" id="LN1581">1581</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1582"><td class="num" id="LN1582">1582</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1583"><td class="num" id="LN1583">1583</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1584"><td class="num" id="LN1584">1584</td><td class="line">model_recomposite_icon_real (PlumaFileBrowserStore * tree_model,</td></tr>
+<tr class="codeline" data-linenumber="1585"><td class="num" id="LN1585">1585</td><td class="line"> FileBrowserNode * node,</td></tr>
+<tr class="codeline" data-linenumber="1586"><td class="num" id="LN1586">1586</td><td class="line"> GFileInfo * info)</td></tr>
+<tr class="codeline" data-linenumber="1587"><td class="num" id="LN1587">1587</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1588"><td class="num" id="LN1588">1588</td><td class="line"> GdkPixbuf *icon;</td></tr>
+<tr class="codeline" data-linenumber="1589"><td class="num" id="LN1589">1589</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1590"><td class="num" id="LN1590">1590</td><td class="line"> <span class='macro'>g_return_if_fail (PLUMA_IS_FILE_BROWSER_STORE (tree_model))<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_301<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((tree_model)); GType __t = ((pluma_file_browser_store_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_301 = 1; else _g_boolean_var_301 =<br> 0; _g_boolean_var_301; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "PLUMA_IS_FILE_BROWSER_STORE (tree_model)"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1591"><td class="num" id="LN1591">1591</td><td class="line"> <span class='macro'>g_return_if_fail (node != NULL)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_302<br>; if (node != ((void*)0)) _g_boolean_var_302 = 1; else _g_boolean_var_302<br> = 0; _g_boolean_var_302; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "node != NULL"); return<br>; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1592"><td class="num" id="LN1592">1592</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1593"><td class="num" id="LN1593">1593</td><td class="line"> <span class='keyword'>if</span> (node-&gt;file == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="1594"><td class="num" id="LN1594">1594</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="1595"><td class="num" id="LN1595">1595</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1596"><td class="num" id="LN1596">1596</td><td class="line"> <span class='keyword'>if</span> (info) {</td></tr>
+<tr class="codeline" data-linenumber="1597"><td class="num" id="LN1597">1597</td><td class="line"> GIcon *gicon = g_file_info_get_icon (info);</td></tr>
+<tr class="codeline" data-linenumber="1598"><td class="num" id="LN1598">1598</td><td class="line"> <span class='keyword'>if</span> (gicon != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="1599"><td class="num" id="LN1599">1599</td><td class="line"> icon = pluma_file_browser_utils_pixbuf_from_icon (gicon, GTK_ICON_SIZE_MENU);</td></tr>
+<tr class="codeline" data-linenumber="1600"><td class="num" id="LN1600">1600</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="1601"><td class="num" id="LN1601">1601</td><td class="line"> icon = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1602"><td class="num" id="LN1602">1602</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="1603"><td class="num" id="LN1603">1603</td><td class="line"> icon = pluma_file_browser_utils_pixbuf_from_file (node-&gt;file, GTK_ICON_SIZE_MENU);</td></tr>
+<tr class="codeline" data-linenumber="1604"><td class="num" id="LN1604">1604</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1605"><td class="num" id="LN1605">1605</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1606"><td class="num" id="LN1606">1606</td><td class="line"> <span class='keyword'>if</span> (node-&gt;icon)</td></tr>
+<tr class="codeline" data-linenumber="1607"><td class="num" id="LN1607">1607</td><td class="line"> g_object_unref (node-&gt;icon);</td></tr>
+<tr class="codeline" data-linenumber="1608"><td class="num" id="LN1608">1608</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1609"><td class="num" id="LN1609">1609</td><td class="line"> <span class='keyword'>if</span> (node-&gt;emblem) {</td></tr>
+<tr class="codeline" data-linenumber="1610"><td class="num" id="LN1610">1610</td><td class="line"> gint icon_size;</td></tr>
+<tr class="codeline" data-linenumber="1611"><td class="num" id="LN1611">1611</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1612"><td class="num" id="LN1612">1612</td><td class="line"> gtk_icon_size_lookup (GTK_ICON_SIZE_MENU, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, &amp;icon_size);</td></tr>
+<tr class="codeline" data-linenumber="1613"><td class="num" id="LN1613">1613</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1614"><td class="num" id="LN1614">1614</td><td class="line"> <span class='keyword'>if</span> (icon == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1615"><td class="num" id="LN1615">1615</td><td class="line"> node-&gt;icon =</td></tr>
+<tr class="codeline" data-linenumber="1616"><td class="num" id="LN1616">1616</td><td class="line"> gdk_pixbuf_new (gdk_pixbuf_get_colorspace (node-&gt;emblem),</td></tr>
+<tr class="codeline" data-linenumber="1617"><td class="num" id="LN1617">1617</td><td class="line"> gdk_pixbuf_get_has_alpha (node-&gt;emblem),</td></tr>
+<tr class="codeline" data-linenumber="1618"><td class="num" id="LN1618">1618</td><td class="line"> gdk_pixbuf_get_bits_per_sample (node-&gt;emblem),</td></tr>
+<tr class="codeline" data-linenumber="1619"><td class="num" id="LN1619">1619</td><td class="line"> icon_size,</td></tr>
+<tr class="codeline" data-linenumber="1620"><td class="num" id="LN1620">1620</td><td class="line"> icon_size);</td></tr>
+<tr class="codeline" data-linenumber="1621"><td class="num" id="LN1621">1621</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="1622"><td class="num" id="LN1622">1622</td><td class="line"> node-&gt;icon = gdk_pixbuf_copy (icon);</td></tr>
+<tr class="codeline" data-linenumber="1623"><td class="num" id="LN1623">1623</td><td class="line"> g_object_unref (icon);</td></tr>
+<tr class="codeline" data-linenumber="1624"><td class="num" id="LN1624">1624</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1625"><td class="num" id="LN1625">1625</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1626"><td class="num" id="LN1626">1626</td><td class="line"> gdk_pixbuf_composite (node-&gt;emblem, node-&gt;icon,</td></tr>
+<tr class="codeline" data-linenumber="1627"><td class="num" id="LN1627">1627</td><td class="line"> icon_size - 10, icon_size - 10, 10,</td></tr>
+<tr class="codeline" data-linenumber="1628"><td class="num" id="LN1628">1628</td><td class="line"> 10, icon_size - 10, icon_size - 10,</td></tr>
+<tr class="codeline" data-linenumber="1629"><td class="num" id="LN1629">1629</td><td class="line"> 1, 1, GDK_INTERP_NEAREST, 255);</td></tr>
+<tr class="codeline" data-linenumber="1630"><td class="num" id="LN1630">1630</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="1631"><td class="num" id="LN1631">1631</td><td class="line"> node-&gt;icon = icon;</td></tr>
+<tr class="codeline" data-linenumber="1632"><td class="num" id="LN1632">1632</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1633"><td class="num" id="LN1633">1633</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1634"><td class="num" id="LN1634">1634</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1635"><td class="num" id="LN1635">1635</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1636"><td class="num" id="LN1636">1636</td><td class="line">model_recomposite_icon (PlumaFileBrowserStore * tree_model,</td></tr>
+<tr class="codeline" data-linenumber="1637"><td class="num" id="LN1637">1637</td><td class="line"> GtkTreeIter * iter)</td></tr>
+<tr class="codeline" data-linenumber="1638"><td class="num" id="LN1638">1638</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1639"><td class="num" id="LN1639">1639</td><td class="line"> <span class='macro'>g_return_if_fail (PLUMA_IS_FILE_BROWSER_STORE (tree_model))<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_303<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((tree_model)); GType __t = ((pluma_file_browser_store_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_303 = 1; else _g_boolean_var_303 =<br> 0; _g_boolean_var_303; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "PLUMA_IS_FILE_BROWSER_STORE (tree_model)"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1640"><td class="num" id="LN1640">1640</td><td class="line"> <span class='macro'>g_return_if_fail (iter != NULL)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_304<br>; if (iter != ((void*)0)) _g_boolean_var_304 = 1; else _g_boolean_var_304<br> = 0; _g_boolean_var_304; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "iter != NULL"); return<br>; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1641"><td class="num" id="LN1641">1641</td><td class="line"> <span class='macro'>g_return_if_fail (iter-&gt;user_data != NULL)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_305<br>; if (iter-&gt;user_data != ((void*)0)) _g_boolean_var_305 = 1<br>; else _g_boolean_var_305 = 0; _g_boolean_var_305; }), 1))) {<br> } else { g_return_if_fail_warning (((gchar*) 0), ((const char<br>*) (__func__)), "iter-&gt;user_data != NULL"); return; } } while<br> (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1642"><td class="num" id="LN1642">1642</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1643"><td class="num" id="LN1643">1643</td><td class="line"> model_recomposite_icon_real (tree_model,</td></tr>
+<tr class="codeline" data-linenumber="1644"><td class="num" id="LN1644">1644</td><td class="line"> (FileBrowserNode *) (iter-&gt;user_data),</td></tr>
+<tr class="codeline" data-linenumber="1645"><td class="num" id="LN1645">1645</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1646"><td class="num" id="LN1646">1646</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1647"><td class="num" id="LN1647">1647</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1648"><td class="num" id="LN1648">1648</td><td class="line"><span class='keyword'>static</span> FileBrowserNode *</td></tr>
+<tr class="codeline" data-linenumber="1649"><td class="num" id="LN1649">1649</td><td class="line">model_create_dummy_node (PlumaFileBrowserStore * model,</td></tr>
+<tr class="codeline" data-linenumber="1650"><td class="num" id="LN1650">1650</td><td class="line"> FileBrowserNode * parent)</td></tr>
+<tr class="codeline" data-linenumber="1651"><td class="num" id="LN1651">1651</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1652"><td class="num" id="LN1652">1652</td><td class="line"> FileBrowserNode *dummy;</td></tr>
+<tr class="codeline" data-linenumber="1653"><td class="num" id="LN1653">1653</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1654"><td class="num" id="LN1654">1654</td><td class="line"> dummy = file_browser_node_new (<span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, parent);</td></tr>
+<tr class="codeline" data-linenumber="1655"><td class="num" id="LN1655">1655</td><td class="line"> dummy-&gt;name = <span class='macro'>g_strdup (_(<span class='string_literal'>"(Empty)"</span>))<span class='macro_popup'>g_strdup_inline (((char *) g_dgettext ("pluma", "(Empty)")))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1656"><td class="num" id="LN1656">1656</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1657"><td class="num" id="LN1657">1657</td><td class="line"> dummy-&gt;flags |= PLUMA_FILE_BROWSER_STORE_FLAG_IS_DUMMY;</td></tr>
+<tr class="codeline" data-linenumber="1658"><td class="num" id="LN1658">1658</td><td class="line"> dummy-&gt;flags |= PLUMA_FILE_BROWSER_STORE_FLAG_IS_HIDDEN;</td></tr>
+<tr class="codeline" data-linenumber="1659"><td class="num" id="LN1659">1659</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1660"><td class="num" id="LN1660">1660</td><td class="line"> <span class='keyword'>return</span> dummy;</td></tr>
+<tr class="codeline" data-linenumber="1661"><td class="num" id="LN1661">1661</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1662"><td class="num" id="LN1662">1662</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1663"><td class="num" id="LN1663">1663</td><td class="line"><span class='keyword'>static</span> FileBrowserNode *</td></tr>
+<tr class="codeline" data-linenumber="1664"><td class="num" id="LN1664">1664</td><td class="line">model_add_dummy_node (PlumaFileBrowserStore * model,</td></tr>
+<tr class="codeline" data-linenumber="1665"><td class="num" id="LN1665">1665</td><td class="line"> FileBrowserNode * parent)</td></tr>
+<tr class="codeline" data-linenumber="1666"><td class="num" id="LN1666">1666</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1667"><td class="num" id="LN1667">1667</td><td class="line"> FileBrowserNode *dummy;</td></tr>
+<tr class="codeline" data-linenumber="1668"><td class="num" id="LN1668">1668</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1669"><td class="num" id="LN1669">1669</td><td class="line"> dummy = model_create_dummy_node (model, parent);</td></tr>
+<tr class="codeline" data-linenumber="1670"><td class="num" id="LN1670">1670</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1671"><td class="num" id="LN1671">1671</td><td class="line"> <span class='keyword'>if</span> (model_node_visibility (model, parent))</td></tr>
+<tr class="codeline" data-linenumber="1672"><td class="num" id="LN1672">1672</td><td class="line"> dummy-&gt;flags &amp;= ~PLUMA_FILE_BROWSER_STORE_FLAG_IS_HIDDEN;</td></tr>
+<tr class="codeline" data-linenumber="1673"><td class="num" id="LN1673">1673</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1674"><td class="num" id="LN1674">1674</td><td class="line"> model_add_node (model, dummy, parent);</td></tr>
+<tr class="codeline" data-linenumber="1675"><td class="num" id="LN1675">1675</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1676"><td class="num" id="LN1676">1676</td><td class="line"> <span class='keyword'>return</span> dummy;</td></tr>
+<tr class="codeline" data-linenumber="1677"><td class="num" id="LN1677">1677</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1678"><td class="num" id="LN1678">1678</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1679"><td class="num" id="LN1679">1679</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1680"><td class="num" id="LN1680">1680</td><td class="line">model_check_dummy (PlumaFileBrowserStore * model, FileBrowserNode * node)</td></tr>
+<tr class="codeline" data-linenumber="1681"><td class="num" id="LN1681">1681</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1682"><td class="num" id="LN1682">1682</td><td class="line"> <span class='comment'>// Hide the dummy child if needed</span></td></tr>
+<tr class="codeline" data-linenumber="1683"><td class="num" id="LN1683">1683</td><td class="line"> <span class='keyword'>if</span> (<span class='macro'>NODE_IS_DIR (node)<span class='macro_popup'>(((node)-&gt;flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_DIRECTORY<br>))</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1684"><td class="num" id="LN1684">1684</td><td class="line"> FileBrowserNode *dummy;</td></tr>
+<tr class="codeline" data-linenumber="1685"><td class="num" id="LN1685">1685</td><td class="line"> GtkTreeIter iter;</td></tr>
+<tr class="codeline" data-linenumber="1686"><td class="num" id="LN1686">1686</td><td class="line"> GtkTreePath *path;</td></tr>
+<tr class="codeline" data-linenumber="1687"><td class="num" id="LN1687">1687</td><td class="line"> guint flags;</td></tr>
+<tr class="codeline" data-linenumber="1688"><td class="num" id="LN1688">1688</td><td class="line"> FileBrowserNodeDir *dir;</td></tr>
+<tr class="codeline" data-linenumber="1689"><td class="num" id="LN1689">1689</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1690"><td class="num" id="LN1690">1690</td><td class="line"> dir = <span class='macro'>FILE_BROWSER_NODE_DIR (node)<span class='macro_popup'>((FileBrowserNodeDir *)(node))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1691"><td class="num" id="LN1691">1691</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1692"><td class="num" id="LN1692">1692</td><td class="line"> <span class='keyword'>if</span> (dir-&gt;children == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1693"><td class="num" id="LN1693">1693</td><td class="line"> model_add_dummy_node (model, node);</td></tr>
+<tr class="codeline" data-linenumber="1694"><td class="num" id="LN1694">1694</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="1695"><td class="num" id="LN1695">1695</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1696"><td class="num" id="LN1696">1696</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1697"><td class="num" id="LN1697">1697</td><td class="line"> dummy = (FileBrowserNode *) (dir-&gt;children-&gt;data);</td></tr>
+<tr class="codeline" data-linenumber="1698"><td class="num" id="LN1698">1698</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1699"><td class="num" id="LN1699">1699</td><td class="line"> <span class='keyword'>if</span> (!<span class='macro'>NODE_IS_DUMMY (dummy)<span class='macro_popup'>(((dummy)-&gt;flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_DUMMY<br>))</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1700"><td class="num" id="LN1700">1700</td><td class="line"> dummy = model_create_dummy_node (model, node);</td></tr>
+<tr class="codeline" data-linenumber="1701"><td class="num" id="LN1701">1701</td><td class="line"> dir-&gt;children = g_slist_prepend (dir-&gt;children, dummy);</td></tr>
+<tr class="codeline" data-linenumber="1702"><td class="num" id="LN1702">1702</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1703"><td class="num" id="LN1703">1703</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1704"><td class="num" id="LN1704">1704</td><td class="line"> <span class='keyword'>if</span> (!model_node_visibility (model, node)) {</td></tr>
+<tr class="codeline" data-linenumber="1705"><td class="num" id="LN1705">1705</td><td class="line"> dummy-&gt;flags |=</td></tr>
+<tr class="codeline" data-linenumber="1706"><td class="num" id="LN1706">1706</td><td class="line"> PLUMA_FILE_BROWSER_STORE_FLAG_IS_HIDDEN;</td></tr>
+<tr class="codeline" data-linenumber="1707"><td class="num" id="LN1707">1707</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="1708"><td class="num" id="LN1708">1708</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1709"><td class="num" id="LN1709">1709</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1710"><td class="num" id="LN1710">1710</td><td class="line"> <span class='comment'>/* Temporarily set the node to invisible to check</span></td></tr>
+<tr class="codeline" data-linenumber="1711"><td class="num" id="LN1711">1711</td><td class="line"> <span class='comment'>* for real children */</span></td></tr>
+<tr class="codeline" data-linenumber="1712"><td class="num" id="LN1712">1712</td><td class="line"> flags = dummy-&gt;flags;</td></tr>
+<tr class="codeline" data-linenumber="1713"><td class="num" id="LN1713">1713</td><td class="line"> dummy-&gt;flags |= PLUMA_FILE_BROWSER_STORE_FLAG_IS_HIDDEN;</td></tr>
+<tr class="codeline" data-linenumber="1714"><td class="num" id="LN1714">1714</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1715"><td class="num" id="LN1715">1715</td><td class="line"> <span class='keyword'>if</span> (!filter_tree_model_iter_has_child_real (model, node)) {</td></tr>
+<tr class="codeline" data-linenumber="1716"><td class="num" id="LN1716">1716</td><td class="line"> dummy-&gt;flags &amp;=</td></tr>
+<tr class="codeline" data-linenumber="1717"><td class="num" id="LN1717">1717</td><td class="line"> ~PLUMA_FILE_BROWSER_STORE_FLAG_IS_HIDDEN;</td></tr>
+<tr class="codeline" data-linenumber="1718"><td class="num" id="LN1718">1718</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1719"><td class="num" id="LN1719">1719</td><td class="line"> <span class='keyword'>if</span> (<span class='macro'>FILE_IS_HIDDEN (flags)<span class='macro_popup'>(flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_HIDDEN)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1720"><td class="num" id="LN1720">1720</td><td class="line"> <span class='comment'>// Was hidden, needs to be inserted</span></td></tr>
+<tr class="codeline" data-linenumber="1721"><td class="num" id="LN1721">1721</td><td class="line"> iter.user_data = dummy;</td></tr>
+<tr class="codeline" data-linenumber="1722"><td class="num" id="LN1722">1722</td><td class="line"> path =</td></tr>
+<tr class="codeline" data-linenumber="1723"><td class="num" id="LN1723">1723</td><td class="line"> pluma_file_browser_store_get_path_real</td></tr>
+<tr class="codeline" data-linenumber="1724"><td class="num" id="LN1724">1724</td><td class="line"> (model, dummy);</td></tr>
+<tr class="codeline" data-linenumber="1725"><td class="num" id="LN1725">1725</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1726"><td class="num" id="LN1726">1726</td><td class="line"> row_inserted (model, &amp;path, &amp;iter);</td></tr>
+<tr class="codeline" data-linenumber="1727"><td class="num" id="LN1727">1727</td><td class="line"> gtk_tree_path_free (path);</td></tr>
+<tr class="codeline" data-linenumber="1728"><td class="num" id="LN1728">1728</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1729"><td class="num" id="LN1729">1729</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="1730"><td class="num" id="LN1730">1730</td><td class="line"> <span class='keyword'>if</span> (!<span class='macro'>FILE_IS_HIDDEN (flags)<span class='macro_popup'>(flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_HIDDEN)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1731"><td class="num" id="LN1731">1731</td><td class="line"> <span class='comment'>// Was shown, needs to be removed</span></td></tr>
+<tr class="codeline" data-linenumber="1732"><td class="num" id="LN1732">1732</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1733"><td class="num" id="LN1733">1733</td><td class="line"> <span class='comment'>// To get the path we need to set it to visible temporarily</span></td></tr>
+<tr class="codeline" data-linenumber="1734"><td class="num" id="LN1734">1734</td><td class="line"> dummy-&gt;flags &amp;=</td></tr>
+<tr class="codeline" data-linenumber="1735"><td class="num" id="LN1735">1735</td><td class="line"> ~PLUMA_FILE_BROWSER_STORE_FLAG_IS_HIDDEN;</td></tr>
+<tr class="codeline" data-linenumber="1736"><td class="num" id="LN1736">1736</td><td class="line"> path =</td></tr>
+<tr class="codeline" data-linenumber="1737"><td class="num" id="LN1737">1737</td><td class="line"> pluma_file_browser_store_get_path_real</td></tr>
+<tr class="codeline" data-linenumber="1738"><td class="num" id="LN1738">1738</td><td class="line"> (model, dummy);</td></tr>
+<tr class="codeline" data-linenumber="1739"><td class="num" id="LN1739">1739</td><td class="line"> dummy-&gt;flags |=</td></tr>
+<tr class="codeline" data-linenumber="1740"><td class="num" id="LN1740">1740</td><td class="line"> PLUMA_FILE_BROWSER_STORE_FLAG_IS_HIDDEN;</td></tr>
+<tr class="codeline" data-linenumber="1741"><td class="num" id="LN1741">1741</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1742"><td class="num" id="LN1742">1742</td><td class="line"> dummy-&gt;inserted = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1743"><td class="num" id="LN1743">1743</td><td class="line"> row_deleted (model, path);</td></tr>
+<tr class="codeline" data-linenumber="1744"><td class="num" id="LN1744">1744</td><td class="line"> gtk_tree_path_free (path);</td></tr>
+<tr class="codeline" data-linenumber="1745"><td class="num" id="LN1745">1745</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1746"><td class="num" id="LN1746">1746</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1747"><td class="num" id="LN1747">1747</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1748"><td class="num" id="LN1748">1748</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1749"><td class="num" id="LN1749">1749</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1750"><td class="num" id="LN1750">1750</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1751"><td class="num" id="LN1751">1751</td><td class="line">insert_node_sorted (PlumaFileBrowserStore * model,</td></tr>
+<tr class="codeline" data-linenumber="1752"><td class="num" id="LN1752">1752</td><td class="line"> FileBrowserNode * child,</td></tr>
+<tr class="codeline" data-linenumber="1753"><td class="num" id="LN1753">1753</td><td class="line"> FileBrowserNode * parent)</td></tr>
+<tr class="codeline" data-linenumber="1754"><td class="num" id="LN1754">1754</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1755"><td class="num" id="LN1755">1755</td><td class="line"> FileBrowserNodeDir *dir;</td></tr>
+<tr class="codeline" data-linenumber="1756"><td class="num" id="LN1756">1756</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1757"><td class="num" id="LN1757">1757</td><td class="line"> dir = <span class='macro'>FILE_BROWSER_NODE_DIR (parent)<span class='macro_popup'>((FileBrowserNodeDir *)(parent))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1758"><td class="num" id="LN1758">1758</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1759"><td class="num" id="LN1759">1759</td><td class="line"> <span class='keyword'>if</span> (model-&gt;priv-&gt;sort_func == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1760"><td class="num" id="LN1760">1760</td><td class="line"> dir-&gt;children = g_slist_append (dir-&gt;children, child);</td></tr>
+<tr class="codeline" data-linenumber="1761"><td class="num" id="LN1761">1761</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="1762"><td class="num" id="LN1762">1762</td><td class="line"> dir-&gt;children =</td></tr>
+<tr class="codeline" data-linenumber="1763"><td class="num" id="LN1763">1763</td><td class="line"> g_slist_insert_sorted (dir-&gt;children, child,</td></tr>
+<tr class="codeline" data-linenumber="1764"><td class="num" id="LN1764">1764</td><td class="line"> (GCompareFunc) (model-&gt;priv-&gt;</td></tr>
+<tr class="codeline" data-linenumber="1765"><td class="num" id="LN1765">1765</td><td class="line"> sort_func));</td></tr>
+<tr class="codeline" data-linenumber="1766"><td class="num" id="LN1766">1766</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1767"><td class="num" id="LN1767">1767</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1768"><td class="num" id="LN1768">1768</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1769"><td class="num" id="LN1769">1769</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1770"><td class="num" id="LN1770">1770</td><td class="line">model_add_node (PlumaFileBrowserStore * model, FileBrowserNode * child,</td></tr>
+<tr class="codeline" data-linenumber="1771"><td class="num" id="LN1771">1771</td><td class="line"> FileBrowserNode * parent)</td></tr>
+<tr class="codeline" data-linenumber="1772"><td class="num" id="LN1772">1772</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1773"><td class="num" id="LN1773">1773</td><td class="line"> <span class='comment'>/* Add child to parents children */</span></td></tr>
+<tr class="codeline" data-linenumber="1774"><td class="num" id="LN1774">1774</td><td class="line"> insert_node_sorted (model, child, parent);</td></tr>
+<tr class="codeline" data-linenumber="1775"><td class="num" id="LN1775">1775</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1776"><td class="num" id="LN1776">1776</td><td class="line"> <span class='keyword'>if</span> (model_node_visibility (model, parent) &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="1777"><td class="num" id="LN1777">1777</td><td class="line"> model_node_visibility (model, child)) {</td></tr>
+<tr class="codeline" data-linenumber="1778"><td class="num" id="LN1778">1778</td><td class="line"> GtkTreeIter iter;</td></tr>
+<tr class="codeline" data-linenumber="1779"><td class="num" id="LN1779">1779</td><td class="line"> GtkTreePath *path;</td></tr>
+<tr class="codeline" data-linenumber="1780"><td class="num" id="LN1780">1780</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1781"><td class="num" id="LN1781">1781</td><td class="line"> iter.user_data = child;</td></tr>
+<tr class="codeline" data-linenumber="1782"><td class="num" id="LN1782">1782</td><td class="line"> path = pluma_file_browser_store_get_path_real (model, child);</td></tr>
+<tr class="codeline" data-linenumber="1783"><td class="num" id="LN1783">1783</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1784"><td class="num" id="LN1784">1784</td><td class="line"> <span class='comment'>/* Emit row inserted */</span></td></tr>
+<tr class="codeline" data-linenumber="1785"><td class="num" id="LN1785">1785</td><td class="line"> row_inserted (model, &amp;path, &amp;iter);</td></tr>
+<tr class="codeline" data-linenumber="1786"><td class="num" id="LN1786">1786</td><td class="line"> gtk_tree_path_free (path);</td></tr>
+<tr class="codeline" data-linenumber="1787"><td class="num" id="LN1787">1787</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1788"><td class="num" id="LN1788">1788</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1789"><td class="num" id="LN1789">1789</td><td class="line"> model_check_dummy (model, parent);</td></tr>
+<tr class="codeline" data-linenumber="1790"><td class="num" id="LN1790">1790</td><td class="line"> model_check_dummy (model, child);</td></tr>
+<tr class="codeline" data-linenumber="1791"><td class="num" id="LN1791">1791</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1792"><td class="num" id="LN1792">1792</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1793"><td class="num" id="LN1793">1793</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1794"><td class="num" id="LN1794">1794</td><td class="line">model_add_nodes_batch (PlumaFileBrowserStore * model,</td></tr>
+<tr class="codeline" data-linenumber="1795"><td class="num" id="LN1795">1795</td><td class="line"> GSList * children,</td></tr>
+<tr class="codeline" data-linenumber="1796"><td class="num" id="LN1796">1796</td><td class="line"> FileBrowserNode * parent)</td></tr>
+<tr class="codeline" data-linenumber="1797"><td class="num" id="LN1797">1797</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1798"><td class="num" id="LN1798">1798</td><td class="line"> GSList *sorted_children;</td></tr>
+<tr class="codeline" data-linenumber="1799"><td class="num" id="LN1799">1799</td><td class="line"> GSList *child;</td></tr>
+<tr class="codeline" data-linenumber="1800"><td class="num" id="LN1800">1800</td><td class="line"> GSList *prev;</td></tr>
+<tr class="codeline" data-linenumber="1801"><td class="num" id="LN1801">1801</td><td class="line"> GSList *l;</td></tr>
+<tr class="codeline" data-linenumber="1802"><td class="num" id="LN1802">1802</td><td class="line"> FileBrowserNodeDir *dir;</td></tr>
+<tr class="codeline" data-linenumber="1803"><td class="num" id="LN1803">1803</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1804"><td class="num" id="LN1804">1804</td><td class="line"> dir = <span class='macro'>FILE_BROWSER_NODE_DIR (parent)<span class='macro_popup'>((FileBrowserNodeDir *)(parent))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1805"><td class="num" id="LN1805">1805</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1806"><td class="num" id="LN1806">1806</td><td class="line"> sorted_children = g_slist_sort (children, (GCompareFunc) model-&gt;priv-&gt;sort_func);</td></tr>
+<tr class="codeline" data-linenumber="1807"><td class="num" id="LN1807">1807</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1808"><td class="num" id="LN1808">1808</td><td class="line"> child = sorted_children;</td></tr>
+<tr class="codeline" data-linenumber="1809"><td class="num" id="LN1809">1809</td><td class="line"> l = dir-&gt;children;</td></tr>
+<tr class="codeline" data-linenumber="1810"><td class="num" id="LN1810">1810</td><td class="line"> prev = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1811"><td class="num" id="LN1811">1811</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1812"><td class="num" id="LN1812">1812</td><td class="line"> model_check_dummy (model, parent);</td></tr>
+<tr class="codeline" data-linenumber="1813"><td class="num" id="LN1813">1813</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1814"><td class="num" id="LN1814">1814</td><td class="line"> <span class='keyword'>while</span> (child) {</td></tr>
+<tr class="codeline" data-linenumber="1815"><td class="num" id="LN1815">1815</td><td class="line"> FileBrowserNode *node = child-&gt;data;</td></tr>
+<tr class="codeline" data-linenumber="1816"><td class="num" id="LN1816">1816</td><td class="line"> GtkTreeIter iter;</td></tr>
+<tr class="codeline" data-linenumber="1817"><td class="num" id="LN1817">1817</td><td class="line"> GtkTreePath *path;</td></tr>
+<tr class="codeline" data-linenumber="1818"><td class="num" id="LN1818">1818</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1819"><td class="num" id="LN1819">1819</td><td class="line"> <span class='comment'>/* reached the end of the first list, just append the second */</span></td></tr>
+<tr class="codeline" data-linenumber="1820"><td class="num" id="LN1820">1820</td><td class="line"> <span class='keyword'>if</span> (l == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1821"><td class="num" id="LN1821">1821</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1822"><td class="num" id="LN1822">1822</td><td class="line"> dir-&gt;children = g_slist_concat (dir-&gt;children, child);</td></tr>
+<tr class="codeline" data-linenumber="1823"><td class="num" id="LN1823">1823</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1824"><td class="num" id="LN1824">1824</td><td class="line"> <span class='keyword'>for</span> (l = child; l; l = l-&gt;next) {</td></tr>
+<tr class="codeline" data-linenumber="1825"><td class="num" id="LN1825">1825</td><td class="line"> <span class='keyword'>if</span> (model_node_visibility (model, parent) &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="1826"><td class="num" id="LN1826">1826</td><td class="line"> model_node_visibility (model, l-&gt;data)) {</td></tr>
+<tr class="codeline" data-linenumber="1827"><td class="num" id="LN1827">1827</td><td class="line"> iter.user_data = l-&gt;data;</td></tr>
+<tr class="codeline" data-linenumber="1828"><td class="num" id="LN1828">1828</td><td class="line"> path = pluma_file_browser_store_get_path_real (model, l-&gt;data);</td></tr>
+<tr class="codeline" data-linenumber="1829"><td class="num" id="LN1829">1829</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1830"><td class="num" id="LN1830">1830</td><td class="line"> <span class='comment'>// Emit row inserted</span></td></tr>
+<tr class="codeline" data-linenumber="1831"><td class="num" id="LN1831">1831</td><td class="line"> row_inserted (model, &amp;path, &amp;iter);</td></tr>
+<tr class="codeline" data-linenumber="1832"><td class="num" id="LN1832">1832</td><td class="line"> gtk_tree_path_free (path);</td></tr>
+<tr class="codeline" data-linenumber="1833"><td class="num" id="LN1833">1833</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1834"><td class="num" id="LN1834">1834</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1835"><td class="num" id="LN1835">1835</td><td class="line"> model_check_dummy (model, l-&gt;data);</td></tr>
+<tr class="codeline" data-linenumber="1836"><td class="num" id="LN1836">1836</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1837"><td class="num" id="LN1837">1837</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1838"><td class="num" id="LN1838">1838</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="1839"><td class="num" id="LN1839">1839</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1840"><td class="num" id="LN1840">1840</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1841"><td class="num" id="LN1841">1841</td><td class="line"> <span class='keyword'>if</span> (model-&gt;priv-&gt;sort_func (l-&gt;data, node) &gt; 0) {</td></tr>
+<tr class="codeline" data-linenumber="1842"><td class="num" id="LN1842">1842</td><td class="line"> GSList *next_child;</td></tr>
+<tr class="codeline" data-linenumber="1843"><td class="num" id="LN1843">1843</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1844"><td class="num" id="LN1844">1844</td><td class="line"> <span class='keyword'>if</span> (prev == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1845"><td class="num" id="LN1845">1845</td><td class="line"> <span class='comment'>/* prepend to the list */</span></td></tr>
+<tr class="codeline" data-linenumber="1846"><td class="num" id="LN1846">1846</td><td class="line"> dir-&gt;children = g_slist_prepend (dir-&gt;children, child);</td></tr>
+<tr class="codeline" data-linenumber="1847"><td class="num" id="LN1847">1847</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="1848"><td class="num" id="LN1848">1848</td><td class="line"> prev-&gt;next = child;</td></tr>
+<tr class="codeline" data-linenumber="1849"><td class="num" id="LN1849">1849</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1850"><td class="num" id="LN1850">1850</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1851"><td class="num" id="LN1851">1851</td><td class="line"> next_child = child-&gt;next;</td></tr>
+<tr class="codeline" data-linenumber="1852"><td class="num" id="LN1852">1852</td><td class="line"> prev = child;</td></tr>
+<tr class="codeline" data-linenumber="1853"><td class="num" id="LN1853">1853</td><td class="line"> child-&gt;next = l;</td></tr>
+<tr class="codeline" data-linenumber="1854"><td class="num" id="LN1854">1854</td><td class="line"> child = next_child;</td></tr>
+<tr class="codeline" data-linenumber="1855"><td class="num" id="LN1855">1855</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1856"><td class="num" id="LN1856">1856</td><td class="line"> <span class='keyword'>if</span> (model_node_visibility (model, parent) &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="1857"><td class="num" id="LN1857">1857</td><td class="line"> model_node_visibility (model, node)) {</td></tr>
+<tr class="codeline" data-linenumber="1858"><td class="num" id="LN1858">1858</td><td class="line"> iter.user_data = node;</td></tr>
+<tr class="codeline" data-linenumber="1859"><td class="num" id="LN1859">1859</td><td class="line"> path = pluma_file_browser_store_get_path_real (model, node);</td></tr>
+<tr class="codeline" data-linenumber="1860"><td class="num" id="LN1860">1860</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1861"><td class="num" id="LN1861">1861</td><td class="line"> <span class='comment'>// Emit row inserted</span></td></tr>
+<tr class="codeline" data-linenumber="1862"><td class="num" id="LN1862">1862</td><td class="line"> row_inserted (model, &amp;path, &amp;iter);</td></tr>
+<tr class="codeline" data-linenumber="1863"><td class="num" id="LN1863">1863</td><td class="line"> gtk_tree_path_free (path);</td></tr>
+<tr class="codeline" data-linenumber="1864"><td class="num" id="LN1864">1864</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1865"><td class="num" id="LN1865">1865</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1866"><td class="num" id="LN1866">1866</td><td class="line"> model_check_dummy (model, node);</td></tr>
+<tr class="codeline" data-linenumber="1867"><td class="num" id="LN1867">1867</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1868"><td class="num" id="LN1868">1868</td><td class="line"> <span class='comment'>/* try again at the same l position with the</span></td></tr>
+<tr class="codeline" data-linenumber="1869"><td class="num" id="LN1869">1869</td><td class="line"> <span class='comment'>* next child */</span></td></tr>
+<tr class="codeline" data-linenumber="1870"><td class="num" id="LN1870">1870</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="1871"><td class="num" id="LN1871">1871</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1872"><td class="num" id="LN1872">1872</td><td class="line"> <span class='comment'>/* Move to the next item in the list */</span></td></tr>
+<tr class="codeline" data-linenumber="1873"><td class="num" id="LN1873">1873</td><td class="line"> prev = l;</td></tr>
+<tr class="codeline" data-linenumber="1874"><td class="num" id="LN1874">1874</td><td class="line"> l = l-&gt;next;</td></tr>
+<tr class="codeline" data-linenumber="1875"><td class="num" id="LN1875">1875</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1876"><td class="num" id="LN1876">1876</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1877"><td class="num" id="LN1877">1877</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1878"><td class="num" id="LN1878">1878</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1879"><td class="num" id="LN1879">1879</td><td class="line"><span class='keyword'>static</span> gchar <span class='keyword'>const</span> *</td></tr>
+<tr class="codeline" data-linenumber="1880"><td class="num" id="LN1880">1880</td><td class="line">backup_content_type (GFileInfo * info)</td></tr>
+<tr class="codeline" data-linenumber="1881"><td class="num" id="LN1881">1881</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1882"><td class="num" id="LN1882">1882</td><td class="line"> gchar <span class='keyword'>const</span> * content;</td></tr>
+<tr class="codeline" data-linenumber="1883"><td class="num" id="LN1883">1883</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1884"><td class="num" id="LN1884">1884</td><td class="line"> <span class='keyword'>if</span> (!g_file_info_get_is_backup (info))</td></tr>
+<tr class="codeline" data-linenumber="1885"><td class="num" id="LN1885">1885</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1886"><td class="num" id="LN1886">1886</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1887"><td class="num" id="LN1887">1887</td><td class="line"> content = g_file_info_get_content_type (info);</td></tr>
+<tr class="codeline" data-linenumber="1888"><td class="num" id="LN1888">1888</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1889"><td class="num" id="LN1889">1889</td><td class="line"> <span class='keyword'>if</span> (!content || g_content_type_equals (content, <span class='string_literal'>"application/x-trash"</span>))</td></tr>
+<tr class="codeline" data-linenumber="1890"><td class="num" id="LN1890">1890</td><td class="line"> <span class='keyword'>return</span> <span class='string_literal'>"text/plain"</span>;</td></tr>
+<tr class="codeline" data-linenumber="1891"><td class="num" id="LN1891">1891</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1892"><td class="num" id="LN1892">1892</td><td class="line"> <span class='keyword'>return</span> content;</td></tr>
+<tr class="codeline" data-linenumber="1893"><td class="num" id="LN1893">1893</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1894"><td class="num" id="LN1894">1894</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1895"><td class="num" id="LN1895">1895</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1896"><td class="num" id="LN1896">1896</td><td class="line">file_browser_node_set_from_info (PlumaFileBrowserStore * model,</td></tr>
+<tr class="codeline" data-linenumber="1897"><td class="num" id="LN1897">1897</td><td class="line"> FileBrowserNode * node,</td></tr>
+<tr class="codeline" data-linenumber="1898"><td class="num" id="LN1898">1898</td><td class="line"> GFileInfo * info,</td></tr>
+<tr class="codeline" data-linenumber="1899"><td class="num" id="LN1899">1899</td><td class="line"> gboolean isadded)</td></tr>
+<tr class="codeline" data-linenumber="1900"><td class="num" id="LN1900">1900</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1901"><td class="num" id="LN1901">1901</td><td class="line"> gchar <span class='keyword'>const</span> * content;</td></tr>
+<tr class="codeline" data-linenumber="1902"><td class="num" id="LN1902">1902</td><td class="line"> gboolean free_info = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1903"><td class="num" id="LN1903">1903</td><td class="line"> GtkTreePath * path;</td></tr>
+<tr class="codeline" data-linenumber="1904"><td class="num" id="LN1904">1904</td><td class="line"> gchar * uri;</td></tr>
+<tr class="codeline" data-linenumber="1905"><td class="num" id="LN1905">1905</td><td class="line"> GError * error = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1906"><td class="num" id="LN1906">1906</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1907"><td class="num" id="LN1907">1907</td><td class="line"> <span class='keyword'>if</span> (info == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1908"><td class="num" id="LN1908">1908</td><td class="line"> info = g_file_query_info (node-&gt;file,</td></tr>
+<tr class="codeline" data-linenumber="1909"><td class="num" id="LN1909">1909</td><td class="line"> <span class='macro'>STANDARD_ATTRIBUTE_TYPES<span class='macro_popup'>"standard::type" "," "standard::is-hidden" "," "standard::is-backup"<br> "," "standard::name" "," "standard::content-type" "," "standard::icon"</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="1910"><td class="num" id="LN1910">1910</td><td class="line"> G_FILE_QUERY_INFO_NONE,</td></tr>
+<tr class="codeline" data-linenumber="1911"><td class="num" id="LN1911">1911</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="1912"><td class="num" id="LN1912">1912</td><td class="line"> &amp;error);</td></tr>
+<tr class="codeline" data-linenumber="1913"><td class="num" id="LN1913">1913</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1914"><td class="num" id="LN1914">1914</td><td class="line"> <span class='keyword'>if</span> (!info) {</td></tr>
+<tr class="codeline" data-linenumber="1915"><td class="num" id="LN1915">1915</td><td class="line"> <span class='keyword'>if</span> (!(error-&gt;domain == <span class='macro'>G_IO_ERROR<span class='macro_popup'>g_io_error_quark()</span></span> &amp;&amp; error-&gt;code == G_IO_ERROR_NOT_FOUND)) {</td></tr>
+<tr class="codeline" data-linenumber="1916"><td class="num" id="LN1916">1916</td><td class="line"> uri = g_file_get_uri (node-&gt;file);</td></tr>
+<tr class="codeline" data-linenumber="1917"><td class="num" id="LN1917">1917</td><td class="line"> g_warning (<span class='string_literal'>"Could not get info for %s: %s"</span>, uri, error-&gt;message);</td></tr>
+<tr class="codeline" data-linenumber="1918"><td class="num" id="LN1918">1918</td><td class="line"> g_free (uri);</td></tr>
+<tr class="codeline" data-linenumber="1919"><td class="num" id="LN1919">1919</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1920"><td class="num" id="LN1920">1920</td><td class="line"> g_error_free (error);</td></tr>
+<tr class="codeline" data-linenumber="1921"><td class="num" id="LN1921">1921</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1922"><td class="num" id="LN1922">1922</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="1923"><td class="num" id="LN1923">1923</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1924"><td class="num" id="LN1924">1924</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1925"><td class="num" id="LN1925">1925</td><td class="line"> free_info = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1926"><td class="num" id="LN1926">1926</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1927"><td class="num" id="LN1927">1927</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1928"><td class="num" id="LN1928">1928</td><td class="line"> <span class='keyword'>if</span> (g_file_info_get_is_hidden (info) || g_file_info_get_is_backup (info))</td></tr>
+<tr class="codeline" data-linenumber="1929"><td class="num" id="LN1929">1929</td><td class="line"> node-&gt;flags |= PLUMA_FILE_BROWSER_STORE_FLAG_IS_HIDDEN;</td></tr>
+<tr class="codeline" data-linenumber="1930"><td class="num" id="LN1930">1930</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1931"><td class="num" id="LN1931">1931</td><td class="line"> <span class='keyword'>if</span> (g_file_info_get_file_type (info) == G_FILE_TYPE_DIRECTORY)</td></tr>
+<tr class="codeline" data-linenumber="1932"><td class="num" id="LN1932">1932</td><td class="line"> node-&gt;flags |= PLUMA_FILE_BROWSER_STORE_FLAG_IS_DIRECTORY;</td></tr>
+<tr class="codeline" data-linenumber="1933"><td class="num" id="LN1933">1933</td><td class="line"> <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="1934"><td class="num" id="LN1934">1934</td><td class="line"> <span class='keyword'>if</span> (!(content = backup_content_type (info)))</td></tr>
+<tr class="codeline" data-linenumber="1935"><td class="num" id="LN1935">1935</td><td class="line"> content = g_file_info_get_content_type (info);</td></tr>
+<tr class="codeline" data-linenumber="1936"><td class="num" id="LN1936">1936</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1937"><td class="num" id="LN1937">1937</td><td class="line"> <span class='keyword'>if</span> (!content ||</td></tr>
+<tr class="codeline" data-linenumber="1938"><td class="num" id="LN1938">1938</td><td class="line"> g_content_type_is_unknown (content) ||</td></tr>
+<tr class="codeline" data-linenumber="1939"><td class="num" id="LN1939">1939</td><td class="line"> g_content_type_is_a (content, <span class='string_literal'>"text/plain"</span>))</td></tr>
+<tr class="codeline" data-linenumber="1940"><td class="num" id="LN1940">1940</td><td class="line"> node-&gt;flags |= PLUMA_FILE_BROWSER_STORE_FLAG_IS_TEXT;</td></tr>
+<tr class="codeline" data-linenumber="1941"><td class="num" id="LN1941">1941</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1942"><td class="num" id="LN1942">1942</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1943"><td class="num" id="LN1943">1943</td><td class="line"> model_recomposite_icon_real (model, node, info);</td></tr>
+<tr class="codeline" data-linenumber="1944"><td class="num" id="LN1944">1944</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1945"><td class="num" id="LN1945">1945</td><td class="line"> <span class='keyword'>if</span> (free_info)</td></tr>
+<tr class="codeline" data-linenumber="1946"><td class="num" id="LN1946">1946</td><td class="line"> g_object_unref (info);</td></tr>
+<tr class="codeline" data-linenumber="1947"><td class="num" id="LN1947">1947</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1948"><td class="num" id="LN1948">1948</td><td class="line"> <span class='keyword'>if</span> (isadded) {</td></tr>
+<tr class="codeline" data-linenumber="1949"><td class="num" id="LN1949">1949</td><td class="line"> path = pluma_file_browser_store_get_path_real (model, node);</td></tr>
+<tr class="codeline" data-linenumber="1950"><td class="num" id="LN1950">1950</td><td class="line"> model_refilter_node (model, node, &amp;path);</td></tr>
+<tr class="codeline" data-linenumber="1951"><td class="num" id="LN1951">1951</td><td class="line"> gtk_tree_path_free (path);</td></tr>
+<tr class="codeline" data-linenumber="1952"><td class="num" id="LN1952">1952</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1953"><td class="num" id="LN1953">1953</td><td class="line"> model_check_dummy (model, node-&gt;parent);</td></tr>
+<tr class="codeline" data-linenumber="1954"><td class="num" id="LN1954">1954</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="1955"><td class="num" id="LN1955">1955</td><td class="line"> model_node_update_visibility (model, node);</td></tr>
+<tr class="codeline" data-linenumber="1956"><td class="num" id="LN1956">1956</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1957"><td class="num" id="LN1957">1957</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1958"><td class="num" id="LN1958">1958</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1959"><td class="num" id="LN1959">1959</td><td class="line"><span class='keyword'>static</span> FileBrowserNode *</td></tr>
+<tr class="codeline" data-linenumber="1960"><td class="num" id="LN1960">1960</td><td class="line">node_list_contains_file (GSList *children, GFile * file)</td></tr>
+<tr class="codeline" data-linenumber="1961"><td class="num" id="LN1961">1961</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1962"><td class="num" id="LN1962">1962</td><td class="line"> GSList *item;</td></tr>
+<tr class="codeline" data-linenumber="1963"><td class="num" id="LN1963">1963</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1964"><td class="num" id="LN1964">1964</td><td class="line"> <span class='keyword'>for</span> (item = children; item; item = item-&gt;next) {</td></tr>
+<tr class="codeline" data-linenumber="1965"><td class="num" id="LN1965">1965</td><td class="line"> FileBrowserNode *node;</td></tr>
+<tr class="codeline" data-linenumber="1966"><td class="num" id="LN1966">1966</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1967"><td class="num" id="LN1967">1967</td><td class="line"> node = (FileBrowserNode *) (item-&gt;data);</td></tr>
+<tr class="codeline" data-linenumber="1968"><td class="num" id="LN1968">1968</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1969"><td class="num" id="LN1969">1969</td><td class="line"> <span class='keyword'>if</span> (node-&gt;file != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="1970"><td class="num" id="LN1970">1970</td><td class="line"> &amp;&amp; g_file_equal (node-&gt;file, file))</td></tr>
+<tr class="codeline" data-linenumber="1971"><td class="num" id="LN1971">1971</td><td class="line"> <span class='keyword'>return</span> node;</td></tr>
+<tr class="codeline" data-linenumber="1972"><td class="num" id="LN1972">1972</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1973"><td class="num" id="LN1973">1973</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1974"><td class="num" id="LN1974">1974</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1975"><td class="num" id="LN1975">1975</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1976"><td class="num" id="LN1976">1976</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1977"><td class="num" id="LN1977">1977</td><td class="line"><span class='keyword'>static</span> FileBrowserNode *</td></tr>
+<tr class="codeline" data-linenumber="1978"><td class="num" id="LN1978">1978</td><td class="line">model_add_node_from_file (PlumaFileBrowserStore * model,</td></tr>
+<tr class="codeline" data-linenumber="1979"><td class="num" id="LN1979">1979</td><td class="line"> FileBrowserNode * parent,</td></tr>
+<tr class="codeline" data-linenumber="1980"><td class="num" id="LN1980">1980</td><td class="line"> GFile * file,</td></tr>
+<tr class="codeline" data-linenumber="1981"><td class="num" id="LN1981">1981</td><td class="line"> GFileInfo * info)</td></tr>
+<tr class="codeline" data-linenumber="1982"><td class="num" id="LN1982">1982</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1983"><td class="num" id="LN1983">1983</td><td class="line"> FileBrowserNode *node;</td></tr>
+<tr class="codeline" data-linenumber="1984"><td class="num" id="LN1984">1984</td><td class="line"> gboolean free_info = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1985"><td class="num" id="LN1985">1985</td><td class="line"> GError * error = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1986"><td class="num" id="LN1986">1986</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1987"><td class="num" id="LN1987">1987</td><td class="line"> <span class='keyword'>if</span> ((node = node_list_contains_file (<span class='macro'>FILE_BROWSER_NODE_DIR (parent)<span class='macro_popup'>((FileBrowserNodeDir *)(parent))</span></span>-&gt;children, file)) == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1988"><td class="num" id="LN1988">1988</td><td class="line"> <span class='keyword'>if</span> (info == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="1989"><td class="num" id="LN1989">1989</td><td class="line"> info = g_file_query_info (file,</td></tr>
+<tr class="codeline" data-linenumber="1990"><td class="num" id="LN1990">1990</td><td class="line"> <span class='macro'>STANDARD_ATTRIBUTE_TYPES<span class='macro_popup'>"standard::type" "," "standard::is-hidden" "," "standard::is-backup"<br> "," "standard::name" "," "standard::content-type" "," "standard::icon"</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="1991"><td class="num" id="LN1991">1991</td><td class="line"> G_FILE_QUERY_INFO_NONE,</td></tr>
+<tr class="codeline" data-linenumber="1992"><td class="num" id="LN1992">1992</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="1993"><td class="num" id="LN1993">1993</td><td class="line"> &amp;error);</td></tr>
+<tr class="codeline" data-linenumber="1994"><td class="num" id="LN1994">1994</td><td class="line"> free_info = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1995"><td class="num" id="LN1995">1995</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1996"><td class="num" id="LN1996">1996</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1997"><td class="num" id="LN1997">1997</td><td class="line"> <span class='keyword'>if</span> (!info) {</td></tr>
+<tr class="codeline" data-linenumber="1998"><td class="num" id="LN1998">1998</td><td class="line"> g_warning (<span class='string_literal'>"Error querying file info: %s"</span>, error-&gt;message);</td></tr>
+<tr class="codeline" data-linenumber="1999"><td class="num" id="LN1999">1999</td><td class="line"> g_error_free (error);</td></tr>
+<tr class="codeline" data-linenumber="2000"><td class="num" id="LN2000">2000</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2001"><td class="num" id="LN2001">2001</td><td class="line"> <span class='comment'>/* FIXME: What to do now then... */</span></td></tr>
+<tr class="codeline" data-linenumber="2002"><td class="num" id="LN2002">2002</td><td class="line"> node = file_browser_node_new (file, parent);</td></tr>
+<tr class="codeline" data-linenumber="2003"><td class="num" id="LN2003">2003</td><td class="line"> } <span class='keyword'>else</span> <span class='keyword'>if</span> (g_file_info_get_file_type (info) == G_FILE_TYPE_DIRECTORY) {</td></tr>
+<tr class="codeline" data-linenumber="2004"><td class="num" id="LN2004">2004</td><td class="line"> node = file_browser_node_dir_new (model, file, parent);</td></tr>
+<tr class="codeline" data-linenumber="2005"><td class="num" id="LN2005">2005</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="2006"><td class="num" id="LN2006">2006</td><td class="line"> node = file_browser_node_new (file, parent);</td></tr>
+<tr class="codeline" data-linenumber="2007"><td class="num" id="LN2007">2007</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2008"><td class="num" id="LN2008">2008</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2009"><td class="num" id="LN2009">2009</td><td class="line"> file_browser_node_set_from_info (model, node, info, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2010"><td class="num" id="LN2010">2010</td><td class="line"> model_add_node (model, node, parent);</td></tr>
+<tr class="codeline" data-linenumber="2011"><td class="num" id="LN2011">2011</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2012"><td class="num" id="LN2012">2012</td><td class="line"> <span class='keyword'>if</span> (info &amp;&amp; free_info)</td></tr>
+<tr class="codeline" data-linenumber="2013"><td class="num" id="LN2013">2013</td><td class="line"> g_object_unref (info);</td></tr>
+<tr class="codeline" data-linenumber="2014"><td class="num" id="LN2014">2014</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2015"><td class="num" id="LN2015">2015</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2016"><td class="num" id="LN2016">2016</td><td class="line"> <span class='keyword'>return</span> node;</td></tr>
+<tr class="codeline" data-linenumber="2017"><td class="num" id="LN2017">2017</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2018"><td class="num" id="LN2018">2018</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2019"><td class="num" id="LN2019">2019</td><td class="line"><span class='comment'>/* We pass in a copy of the list of parent-&gt;children so that we do</span></td></tr>
+<tr class="codeline" data-linenumber="2020"><td class="num" id="LN2020">2020</td><td class="line"> <span class='comment'>* not have to check if a file already exists among the ones we just</span></td></tr>
+<tr class="codeline" data-linenumber="2021"><td class="num" id="LN2021">2021</td><td class="line"> <span class='comment'>* added */</span></td></tr>
+<tr class="codeline" data-linenumber="2022"><td class="num" id="LN2022">2022</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2023"><td class="num" id="LN2023">2023</td><td class="line">model_add_nodes_from_files (PlumaFileBrowserStore * model,</td></tr>
+<tr class="codeline" data-linenumber="2024"><td class="num" id="LN2024">2024</td><td class="line"> FileBrowserNode * parent,</td></tr>
+<tr class="codeline" data-linenumber="2025"><td class="num" id="LN2025">2025</td><td class="line"> GSList * original_children,</td></tr>
+<tr class="codeline" data-linenumber="2026"><td class="num" id="LN2026">2026</td><td class="line"> GList * files)</td></tr>
+<tr class="codeline" data-linenumber="2027"><td class="num" id="LN2027">2027</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2028"><td class="num" id="LN2028">2028</td><td class="line"> GList *item;</td></tr>
+<tr class="codeline" data-linenumber="2029"><td class="num" id="LN2029">2029</td><td class="line"> GSList *nodes = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2030"><td class="num" id="LN2030">2030</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2031"><td class="num" id="LN2031">2031</td><td class="line"> <span class='keyword'>for</span> (item = files; item; item = item-&gt;next) {</td></tr>
+<tr class="codeline" data-linenumber="2032"><td class="num" id="LN2032">2032</td><td class="line"> GFileInfo *info = <span class='macro'>G_FILE_INFO (item-&gt;data)<span class='macro_popup'>((((GFileInfo*) (void *) ((item-&gt;data)))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2033"><td class="num" id="LN2033">2033</td><td class="line"> GFileType type;</td></tr>
+<tr class="codeline" data-linenumber="2034"><td class="num" id="LN2034">2034</td><td class="line"> gchar <span class='keyword'>const</span> * name;</td></tr>
+<tr class="codeline" data-linenumber="2035"><td class="num" id="LN2035">2035</td><td class="line"> GFile * file;</td></tr>
+<tr class="codeline" data-linenumber="2036"><td class="num" id="LN2036">2036</td><td class="line"> FileBrowserNode *node;</td></tr>
+<tr class="codeline" data-linenumber="2037"><td class="num" id="LN2037">2037</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2038"><td class="num" id="LN2038">2038</td><td class="line"> type = g_file_info_get_file_type (info);</td></tr>
+<tr class="codeline" data-linenumber="2039"><td class="num" id="LN2039">2039</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2040"><td class="num" id="LN2040">2040</td><td class="line"> <span class='comment'>/* Skip all non regular, non directory files */</span></td></tr>
+<tr class="codeline" data-linenumber="2041"><td class="num" id="LN2041">2041</td><td class="line"> <span class='keyword'>if</span> (type != G_FILE_TYPE_REGULAR &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="2042"><td class="num" id="LN2042">2042</td><td class="line"> type != G_FILE_TYPE_DIRECTORY &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="2043"><td class="num" id="LN2043">2043</td><td class="line"> type != G_FILE_TYPE_SYMBOLIC_LINK) {</td></tr>
+<tr class="codeline" data-linenumber="2044"><td class="num" id="LN2044">2044</td><td class="line"> g_object_unref (info);</td></tr>
+<tr class="codeline" data-linenumber="2045"><td class="num" id="LN2045">2045</td><td class="line"> <span class='keyword'>continue</span>;</td></tr>
+<tr class="codeline" data-linenumber="2046"><td class="num" id="LN2046">2046</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2047"><td class="num" id="LN2047">2047</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2048"><td class="num" id="LN2048">2048</td><td class="line"> name = g_file_info_get_name (info);</td></tr>
+<tr class="codeline" data-linenumber="2049"><td class="num" id="LN2049">2049</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2050"><td class="num" id="LN2050">2050</td><td class="line"> <span class='comment'>/* Skip '.' and '..' directories */</span></td></tr>
+<tr class="codeline" data-linenumber="2051"><td class="num" id="LN2051">2051</td><td class="line"> <span class='keyword'>if</span> (type == G_FILE_TYPE_DIRECTORY &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="2052"><td class="num" id="LN2052">2052</td><td class="line"> (strcmp (name, <span class='string_literal'>"."</span>) == 0 ||</td></tr>
+<tr class="codeline" data-linenumber="2053"><td class="num" id="LN2053">2053</td><td class="line"> strcmp (name, <span class='string_literal'>".."</span>) == 0)) {</td></tr>
+<tr class="codeline" data-linenumber="2054"><td class="num" id="LN2054">2054</td><td class="line"> <span class='keyword'>continue</span>;</td></tr>
+<tr class="codeline" data-linenumber="2055"><td class="num" id="LN2055">2055</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2056"><td class="num" id="LN2056">2056</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2057"><td class="num" id="LN2057">2057</td><td class="line"> file = g_file_get_child (parent-&gt;file, name);</td></tr>
+<tr class="codeline" data-linenumber="2058"><td class="num" id="LN2058">2058</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2059"><td class="num" id="LN2059">2059</td><td class="line"> <span class='keyword'>if</span> ((node = <span class="mrange">node_list_contains_file (original_children, file)</span>) == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr><td class="num"></td><td class="line"><div id="EndPath" class="msg msgEvent" style="margin-left:22ex">Although the value stored to 'node' is used in the enclosing expression, the value is never actually read from 'node'</div></td></tr>
+<tr class="codeline" data-linenumber="2060"><td class="num" id="LN2060">2060</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2061"><td class="num" id="LN2061">2061</td><td class="line"> <span class='keyword'>if</span> (g_file_info_get_file_type (info) == G_FILE_TYPE_DIRECTORY) {</td></tr>
+<tr class="codeline" data-linenumber="2062"><td class="num" id="LN2062">2062</td><td class="line"> node = file_browser_node_dir_new (model, file, parent);</td></tr>
+<tr class="codeline" data-linenumber="2063"><td class="num" id="LN2063">2063</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="2064"><td class="num" id="LN2064">2064</td><td class="line"> node = file_browser_node_new (file, parent);</td></tr>
+<tr class="codeline" data-linenumber="2065"><td class="num" id="LN2065">2065</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2066"><td class="num" id="LN2066">2066</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2067"><td class="num" id="LN2067">2067</td><td class="line"> file_browser_node_set_from_info (model, node, info, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2068"><td class="num" id="LN2068">2068</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2069"><td class="num" id="LN2069">2069</td><td class="line"> nodes = g_slist_prepend (nodes, node);</td></tr>
+<tr class="codeline" data-linenumber="2070"><td class="num" id="LN2070">2070</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2071"><td class="num" id="LN2071">2071</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2072"><td class="num" id="LN2072">2072</td><td class="line"> g_object_unref (file);</td></tr>
+<tr class="codeline" data-linenumber="2073"><td class="num" id="LN2073">2073</td><td class="line"> g_object_unref (info);</td></tr>
+<tr class="codeline" data-linenumber="2074"><td class="num" id="LN2074">2074</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2075"><td class="num" id="LN2075">2075</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2076"><td class="num" id="LN2076">2076</td><td class="line"> <span class='keyword'>if</span> (nodes)</td></tr>
+<tr class="codeline" data-linenumber="2077"><td class="num" id="LN2077">2077</td><td class="line"> model_add_nodes_batch (model, nodes, parent);</td></tr>
+<tr class="codeline" data-linenumber="2078"><td class="num" id="LN2078">2078</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2079"><td class="num" id="LN2079">2079</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2080"><td class="num" id="LN2080">2080</td><td class="line"><span class='keyword'>static</span> FileBrowserNode *</td></tr>
+<tr class="codeline" data-linenumber="2081"><td class="num" id="LN2081">2081</td><td class="line">model_add_node_from_dir (PlumaFileBrowserStore * model,</td></tr>
+<tr class="codeline" data-linenumber="2082"><td class="num" id="LN2082">2082</td><td class="line"> FileBrowserNode * parent,</td></tr>
+<tr class="codeline" data-linenumber="2083"><td class="num" id="LN2083">2083</td><td class="line"> GFile * file)</td></tr>
+<tr class="codeline" data-linenumber="2084"><td class="num" id="LN2084">2084</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2085"><td class="num" id="LN2085">2085</td><td class="line"> FileBrowserNode *node;</td></tr>
+<tr class="codeline" data-linenumber="2086"><td class="num" id="LN2086">2086</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2087"><td class="num" id="LN2087">2087</td><td class="line"> <span class='comment'>/* Check if it already exists */</span></td></tr>
+<tr class="codeline" data-linenumber="2088"><td class="num" id="LN2088">2088</td><td class="line"> <span class='keyword'>if</span> ((node = node_list_contains_file (<span class='macro'>FILE_BROWSER_NODE_DIR (parent)<span class='macro_popup'>((FileBrowserNodeDir *)(parent))</span></span>-&gt;children, file)) == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="2089"><td class="num" id="LN2089">2089</td><td class="line"> node = file_browser_node_dir_new (model, file, parent);</td></tr>
+<tr class="codeline" data-linenumber="2090"><td class="num" id="LN2090">2090</td><td class="line"> file_browser_node_set_from_info (model, node, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2091"><td class="num" id="LN2091">2091</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2092"><td class="num" id="LN2092">2092</td><td class="line"> <span class='keyword'>if</span> (node-&gt;name == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="2093"><td class="num" id="LN2093">2093</td><td class="line"> file_browser_node_set_name (node);</td></tr>
+<tr class="codeline" data-linenumber="2094"><td class="num" id="LN2094">2094</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2095"><td class="num" id="LN2095">2095</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2096"><td class="num" id="LN2096">2096</td><td class="line"> <span class='keyword'>if</span> (node-&gt;icon == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="2097"><td class="num" id="LN2097">2097</td><td class="line"> node-&gt;icon = pluma_file_browser_utils_pixbuf_from_theme (<span class='string_literal'>"folder"</span>, GTK_ICON_SIZE_MENU);</td></tr>
+<tr class="codeline" data-linenumber="2098"><td class="num" id="LN2098">2098</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2099"><td class="num" id="LN2099">2099</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2100"><td class="num" id="LN2100">2100</td><td class="line"> model_add_node (model, node, parent);</td></tr>
+<tr class="codeline" data-linenumber="2101"><td class="num" id="LN2101">2101</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2102"><td class="num" id="LN2102">2102</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2103"><td class="num" id="LN2103">2103</td><td class="line"> <span class='keyword'>return</span> node;</td></tr>
+<tr class="codeline" data-linenumber="2104"><td class="num" id="LN2104">2104</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2105"><td class="num" id="LN2105">2105</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2106"><td class="num" id="LN2106">2106</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2107"><td class="num" id="LN2107">2107</td><td class="line">on_directory_monitor_event (GFileMonitor * monitor,</td></tr>
+<tr class="codeline" data-linenumber="2108"><td class="num" id="LN2108">2108</td><td class="line"> GFile * file,</td></tr>
+<tr class="codeline" data-linenumber="2109"><td class="num" id="LN2109">2109</td><td class="line"> GFile * other_file,</td></tr>
+<tr class="codeline" data-linenumber="2110"><td class="num" id="LN2110">2110</td><td class="line"> GFileMonitorEvent event_type,</td></tr>
+<tr class="codeline" data-linenumber="2111"><td class="num" id="LN2111">2111</td><td class="line"> FileBrowserNode * parent)</td></tr>
+<tr class="codeline" data-linenumber="2112"><td class="num" id="LN2112">2112</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2113"><td class="num" id="LN2113">2113</td><td class="line"> FileBrowserNode *node;</td></tr>
+<tr class="codeline" data-linenumber="2114"><td class="num" id="LN2114">2114</td><td class="line"> FileBrowserNodeDir *dir = <span class='macro'>FILE_BROWSER_NODE_DIR (parent)<span class='macro_popup'>((FileBrowserNodeDir *)(parent))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2115"><td class="num" id="LN2115">2115</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2116"><td class="num" id="LN2116">2116</td><td class="line"> <span class='keyword'>switch</span> (event_type) {</td></tr>
+<tr class="codeline" data-linenumber="2117"><td class="num" id="LN2117">2117</td><td class="line"> <span class='keyword'>case</span> G_FILE_MONITOR_EVENT_DELETED:</td></tr>
+<tr class="codeline" data-linenumber="2118"><td class="num" id="LN2118">2118</td><td class="line"> node = node_list_contains_file (dir-&gt;children, file);</td></tr>
+<tr class="codeline" data-linenumber="2119"><td class="num" id="LN2119">2119</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2120"><td class="num" id="LN2120">2120</td><td class="line"> <span class='keyword'>if</span> (node != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="2121"><td class="num" id="LN2121">2121</td><td class="line"> model_remove_node (dir-&gt;model, node, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2122"><td class="num" id="LN2122">2122</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2123"><td class="num" id="LN2123">2123</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="2124"><td class="num" id="LN2124">2124</td><td class="line"> <span class='keyword'>case</span> G_FILE_MONITOR_EVENT_CREATED:</td></tr>
+<tr class="codeline" data-linenumber="2125"><td class="num" id="LN2125">2125</td><td class="line"> <span class='keyword'>if</span> (g_file_query_exists (file, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)) {</td></tr>
+<tr class="codeline" data-linenumber="2126"><td class="num" id="LN2126">2126</td><td class="line"> model_add_node_from_file (dir-&gt;model, parent, file, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2127"><td class="num" id="LN2127">2127</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2128"><td class="num" id="LN2128">2128</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2129"><td class="num" id="LN2129">2129</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="2130"><td class="num" id="LN2130">2130</td><td class="line"> <span class='keyword'>default</span>:</td></tr>
+<tr class="codeline" data-linenumber="2131"><td class="num" id="LN2131">2131</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="2132"><td class="num" id="LN2132">2132</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2133"><td class="num" id="LN2133">2133</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2134"><td class="num" id="LN2134">2134</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2135"><td class="num" id="LN2135">2135</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2136"><td class="num" id="LN2136">2136</td><td class="line">async_node_free (AsyncNode *async)</td></tr>
+<tr class="codeline" data-linenumber="2137"><td class="num" id="LN2137">2137</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2138"><td class="num" id="LN2138">2138</td><td class="line"> g_object_unref (async-&gt;cancellable);</td></tr>
+<tr class="codeline" data-linenumber="2139"><td class="num" id="LN2139">2139</td><td class="line"> g_slist_free (async-&gt;original_children);</td></tr>
+<tr class="codeline" data-linenumber="2140"><td class="num" id="LN2140">2140</td><td class="line"> g_free (async);</td></tr>
+<tr class="codeline" data-linenumber="2141"><td class="num" id="LN2141">2141</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2142"><td class="num" id="LN2142">2142</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2143"><td class="num" id="LN2143">2143</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2144"><td class="num" id="LN2144">2144</td><td class="line">model_iterate_next_files_cb (GFileEnumerator * enumerator,</td></tr>
+<tr class="codeline" data-linenumber="2145"><td class="num" id="LN2145">2145</td><td class="line"> GAsyncResult * result,</td></tr>
+<tr class="codeline" data-linenumber="2146"><td class="num" id="LN2146">2146</td><td class="line"> AsyncNode * async)</td></tr>
+<tr class="codeline" data-linenumber="2147"><td class="num" id="LN2147">2147</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2148"><td class="num" id="LN2148">2148</td><td class="line"> GList * files;</td></tr>
+<tr class="codeline" data-linenumber="2149"><td class="num" id="LN2149">2149</td><td class="line"> GError * error = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2150"><td class="num" id="LN2150">2150</td><td class="line"> FileBrowserNodeDir * dir = async-&gt;dir;</td></tr>
+<tr class="codeline" data-linenumber="2151"><td class="num" id="LN2151">2151</td><td class="line"> FileBrowserNode * parent = (FileBrowserNode *)dir;</td></tr>
+<tr class="codeline" data-linenumber="2152"><td class="num" id="LN2152">2152</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2153"><td class="num" id="LN2153">2153</td><td class="line"> files = g_file_enumerator_next_files_finish (enumerator, result, &amp;error);</td></tr>
+<tr class="codeline" data-linenumber="2154"><td class="num" id="LN2154">2154</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2155"><td class="num" id="LN2155">2155</td><td class="line"> <span class='keyword'>if</span> (files == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="2156"><td class="num" id="LN2156">2156</td><td class="line"> g_file_enumerator_close (enumerator, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2157"><td class="num" id="LN2157">2157</td><td class="line"> async_node_free (async);</td></tr>
+<tr class="codeline" data-linenumber="2158"><td class="num" id="LN2158">2158</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2159"><td class="num" id="LN2159">2159</td><td class="line"> <span class='keyword'>if</span> (!error)</td></tr>
+<tr class="codeline" data-linenumber="2160"><td class="num" id="LN2160">2160</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="2161"><td class="num" id="LN2161">2161</td><td class="line"> <span class='comment'>/* We're done loading */</span></td></tr>
+<tr class="codeline" data-linenumber="2162"><td class="num" id="LN2162">2162</td><td class="line"> g_object_unref (dir-&gt;cancellable);</td></tr>
+<tr class="codeline" data-linenumber="2163"><td class="num" id="LN2163">2163</td><td class="line"> dir-&gt;cancellable = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2164"><td class="num" id="LN2164">2164</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2165"><td class="num" id="LN2165">2165</td><td class="line"><span class='comment'>/*</span></td></tr>
+<tr class="codeline" data-linenumber="2166"><td class="num" id="LN2166">2166</td><td class="line"> <span class='comment'>* FIXME: This is temporarly, it is a bug in gio:</span></td></tr>
+<tr class="codeline" data-linenumber="2167"><td class="num" id="LN2167">2167</td><td class="line"> <span class='comment'>* http://bugzilla.gnome.org/show_bug.cgi?id=565924</span></td></tr>
+<tr class="codeline" data-linenumber="2168"><td class="num" id="LN2168">2168</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="2169"><td class="num" id="LN2169">2169</td><td class="line"> <span class='keyword'>if</span> (g_file_is_native (parent-&gt;file) &amp;&amp; dir-&gt;monitor == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="2170"><td class="num" id="LN2170">2170</td><td class="line"> dir-&gt;monitor = g_file_monitor_directory (parent-&gt;file,</td></tr>
+<tr class="codeline" data-linenumber="2171"><td class="num" id="LN2171">2171</td><td class="line"> G_FILE_MONITOR_NONE,</td></tr>
+<tr class="codeline" data-linenumber="2172"><td class="num" id="LN2172">2172</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="2173"><td class="num" id="LN2173">2173</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2174"><td class="num" id="LN2174">2174</td><td class="line"> <span class='keyword'>if</span> (dir-&gt;monitor != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="2175"><td class="num" id="LN2175">2175</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="2176"><td class="num" id="LN2176">2176</td><td class="line"> <span class='macro'>g_signal_connect (dir-&gt;monitor,<span class='macro_popup'>g_signal_connect_data ((dir-&gt;monitor), ("changed"), (((GCallback<br>) (on_directory_monitor_event))), (parent), ((void*)0), (GConnectFlags<br>) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="2177"><td class="num" id="LN2177">2177</td><td class="line"> <span class='string_literal'><span class='macro'>"changed"</span>,<span class='macro_popup'>g_signal_connect_data ((dir-&gt;monitor), ("changed"), (((GCallback<br>) (on_directory_monitor_event))), (parent), ((void*)0), (GConnectFlags<br>) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="2178"><td class="num" id="LN2178">2178</td><td class="line"> <span class='macro'>G_CALLBACK (on_directory_monitor_event),<span class='macro_popup'>g_signal_connect_data ((dir-&gt;monitor), ("changed"), (((GCallback<br>) (on_directory_monitor_event))), (parent), ((void*)0), (GConnectFlags<br>) 0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="2179"><td class="num" id="LN2179">2179</td><td class="line"> <span class='macro'>parent)<span class='macro_popup'>g_signal_connect_data ((dir-&gt;monitor), ("changed"), (((GCallback<br>) (on_directory_monitor_event))), (parent), ((void*)0), (GConnectFlags<br>) 0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2180"><td class="num" id="LN2180">2180</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2181"><td class="num" id="LN2181">2181</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2182"><td class="num" id="LN2182">2182</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2183"><td class="num" id="LN2183">2183</td><td class="line"> model_check_dummy (dir-&gt;model, parent);</td></tr>
+<tr class="codeline" data-linenumber="2184"><td class="num" id="LN2184">2184</td><td class="line"> model_end_loading (dir-&gt;model, parent);</td></tr>
+<tr class="codeline" data-linenumber="2185"><td class="num" id="LN2185">2185</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="2186"><td class="num" id="LN2186">2186</td><td class="line"> <span class='comment'>/* Simply return if we were cancelled */</span></td></tr>
+<tr class="codeline" data-linenumber="2187"><td class="num" id="LN2187">2187</td><td class="line"> <span class='keyword'>if</span> (error-&gt;domain == <span class='macro'>G_IO_ERROR<span class='macro_popup'>g_io_error_quark()</span></span> &amp;&amp; error-&gt;code == G_IO_ERROR_CANCELLED)</td></tr>
+<tr class="codeline" data-linenumber="2188"><td class="num" id="LN2188">2188</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="2189"><td class="num" id="LN2189">2189</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2190"><td class="num" id="LN2190">2190</td><td class="line"> <span class='comment'>/* Otherwise handle the error appropriately */</span></td></tr>
+<tr class="codeline" data-linenumber="2191"><td class="num" id="LN2191">2191</td><td class="line"> g_signal_emit (dir-&gt;model,</td></tr>
+<tr class="codeline" data-linenumber="2192"><td class="num" id="LN2192">2192</td><td class="line"> model_signals[ERROR],</td></tr>
+<tr class="codeline" data-linenumber="2193"><td class="num" id="LN2193">2193</td><td class="line"> 0,</td></tr>
+<tr class="codeline" data-linenumber="2194"><td class="num" id="LN2194">2194</td><td class="line"> PLUMA_FILE_BROWSER_ERROR_LOAD_DIRECTORY,</td></tr>
+<tr class="codeline" data-linenumber="2195"><td class="num" id="LN2195">2195</td><td class="line"> error-&gt;message);</td></tr>
+<tr class="codeline" data-linenumber="2196"><td class="num" id="LN2196">2196</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2197"><td class="num" id="LN2197">2197</td><td class="line"> file_browser_node_unload (dir-&gt;model, (FileBrowserNode *)parent, <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2198"><td class="num" id="LN2198">2198</td><td class="line"> g_error_free (error);</td></tr>
+<tr class="codeline" data-linenumber="2199"><td class="num" id="LN2199">2199</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2200"><td class="num" id="LN2200">2200</td><td class="line"> } <span class='keyword'>else</span> <span class='keyword'>if</span> (g_cancellable_is_cancelled (async-&gt;cancellable)) {</td></tr>
+<tr class="codeline" data-linenumber="2201"><td class="num" id="LN2201">2201</td><td class="line"> <span class='comment'>/* Check cancel state manually */</span></td></tr>
+<tr class="codeline" data-linenumber="2202"><td class="num" id="LN2202">2202</td><td class="line"> g_file_enumerator_close (enumerator, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2203"><td class="num" id="LN2203">2203</td><td class="line"> async_node_free (async);</td></tr>
+<tr class="codeline" data-linenumber="2204"><td class="num" id="LN2204">2204</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="2205"><td class="num" id="LN2205">2205</td><td class="line"> model_add_nodes_from_files (dir-&gt;model, parent, async-&gt;original_children, files);</td></tr>
+<tr class="codeline" data-linenumber="2206"><td class="num" id="LN2206">2206</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2207"><td class="num" id="LN2207">2207</td><td class="line"> g_list_free (files);</td></tr>
+<tr class="codeline" data-linenumber="2208"><td class="num" id="LN2208">2208</td><td class="line"> next_files_async (enumerator, async);</td></tr>
+<tr class="codeline" data-linenumber="2209"><td class="num" id="LN2209">2209</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2210"><td class="num" id="LN2210">2210</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2211"><td class="num" id="LN2211">2211</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2212"><td class="num" id="LN2212">2212</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2213"><td class="num" id="LN2213">2213</td><td class="line">next_files_async (GFileEnumerator * enumerator,</td></tr>
+<tr class="codeline" data-linenumber="2214"><td class="num" id="LN2214">2214</td><td class="line"> AsyncNode * async)</td></tr>
+<tr class="codeline" data-linenumber="2215"><td class="num" id="LN2215">2215</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2216"><td class="num" id="LN2216">2216</td><td class="line"> g_file_enumerator_next_files_async (enumerator,</td></tr>
+<tr class="codeline" data-linenumber="2217"><td class="num" id="LN2217">2217</td><td class="line"> <span class='macro'>DIRECTORY_LOAD_ITEMS_PER_CALLBACK<span class='macro_popup'>100</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="2218"><td class="num" id="LN2218">2218</td><td class="line"> <span class='macro'>G_PRIORITY_DEFAULT<span class='macro_popup'>0</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="2219"><td class="num" id="LN2219">2219</td><td class="line"> async-&gt;cancellable,</td></tr>
+<tr class="codeline" data-linenumber="2220"><td class="num" id="LN2220">2220</td><td class="line"> (GAsyncReadyCallback)model_iterate_next_files_cb,</td></tr>
+<tr class="codeline" data-linenumber="2221"><td class="num" id="LN2221">2221</td><td class="line"> async);</td></tr>
+<tr class="codeline" data-linenumber="2222"><td class="num" id="LN2222">2222</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2223"><td class="num" id="LN2223">2223</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2224"><td class="num" id="LN2224">2224</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2225"><td class="num" id="LN2225">2225</td><td class="line">model_iterate_children_cb (GFile * file,</td></tr>
+<tr class="codeline" data-linenumber="2226"><td class="num" id="LN2226">2226</td><td class="line"> GAsyncResult * result,</td></tr>
+<tr class="codeline" data-linenumber="2227"><td class="num" id="LN2227">2227</td><td class="line"> AsyncNode * async)</td></tr>
+<tr class="codeline" data-linenumber="2228"><td class="num" id="LN2228">2228</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2229"><td class="num" id="LN2229">2229</td><td class="line"> GError * error = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2230"><td class="num" id="LN2230">2230</td><td class="line"> GFileEnumerator * enumerator;</td></tr>
+<tr class="codeline" data-linenumber="2231"><td class="num" id="LN2231">2231</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2232"><td class="num" id="LN2232">2232</td><td class="line"> <span class='keyword'>if</span> (g_cancellable_is_cancelled (async-&gt;cancellable))</td></tr>
+<tr class="codeline" data-linenumber="2233"><td class="num" id="LN2233">2233</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="2234"><td class="num" id="LN2234">2234</td><td class="line"> async_node_free (async);</td></tr>
+<tr class="codeline" data-linenumber="2235"><td class="num" id="LN2235">2235</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="2236"><td class="num" id="LN2236">2236</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2237"><td class="num" id="LN2237">2237</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2238"><td class="num" id="LN2238">2238</td><td class="line"> enumerator = g_file_enumerate_children_finish (file, result, &amp;error);</td></tr>
+<tr class="codeline" data-linenumber="2239"><td class="num" id="LN2239">2239</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2240"><td class="num" id="LN2240">2240</td><td class="line"> <span class='keyword'>if</span> (enumerator == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="2241"><td class="num" id="LN2241">2241</td><td class="line"> <span class='comment'>/* Simply return if we were cancelled or if the dir is not there */</span></td></tr>
+<tr class="codeline" data-linenumber="2242"><td class="num" id="LN2242">2242</td><td class="line"> FileBrowserNodeDir *dir = async-&gt;dir;</td></tr>
+<tr class="codeline" data-linenumber="2243"><td class="num" id="LN2243">2243</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2244"><td class="num" id="LN2244">2244</td><td class="line"> <span class='comment'>/* Otherwise handle the error appropriately */</span></td></tr>
+<tr class="codeline" data-linenumber="2245"><td class="num" id="LN2245">2245</td><td class="line"> g_signal_emit (dir-&gt;model,</td></tr>
+<tr class="codeline" data-linenumber="2246"><td class="num" id="LN2246">2246</td><td class="line"> model_signals[ERROR],</td></tr>
+<tr class="codeline" data-linenumber="2247"><td class="num" id="LN2247">2247</td><td class="line"> 0,</td></tr>
+<tr class="codeline" data-linenumber="2248"><td class="num" id="LN2248">2248</td><td class="line"> PLUMA_FILE_BROWSER_ERROR_LOAD_DIRECTORY,</td></tr>
+<tr class="codeline" data-linenumber="2249"><td class="num" id="LN2249">2249</td><td class="line"> error-&gt;message);</td></tr>
+<tr class="codeline" data-linenumber="2250"><td class="num" id="LN2250">2250</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2251"><td class="num" id="LN2251">2251</td><td class="line"> file_browser_node_unload (dir-&gt;model, (FileBrowserNode *)dir, <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2252"><td class="num" id="LN2252">2252</td><td class="line"> g_error_free (error);</td></tr>
+<tr class="codeline" data-linenumber="2253"><td class="num" id="LN2253">2253</td><td class="line"> async_node_free (async);</td></tr>
+<tr class="codeline" data-linenumber="2254"><td class="num" id="LN2254">2254</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="2255"><td class="num" id="LN2255">2255</td><td class="line"> next_files_async (enumerator, async);</td></tr>
+<tr class="codeline" data-linenumber="2256"><td class="num" id="LN2256">2256</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2257"><td class="num" id="LN2257">2257</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2258"><td class="num" id="LN2258">2258</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2259"><td class="num" id="LN2259">2259</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2260"><td class="num" id="LN2260">2260</td><td class="line">model_load_directory (PlumaFileBrowserStore * model,</td></tr>
+<tr class="codeline" data-linenumber="2261"><td class="num" id="LN2261">2261</td><td class="line"> FileBrowserNode * node)</td></tr>
+<tr class="codeline" data-linenumber="2262"><td class="num" id="LN2262">2262</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2263"><td class="num" id="LN2263">2263</td><td class="line"> FileBrowserNodeDir *dir;</td></tr>
+<tr class="codeline" data-linenumber="2264"><td class="num" id="LN2264">2264</td><td class="line"> AsyncNode *async;</td></tr>
+<tr class="codeline" data-linenumber="2265"><td class="num" id="LN2265">2265</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2266"><td class="num" id="LN2266">2266</td><td class="line"> <span class='macro'>g_return_if_fail (NODE_IS_DIR (node))<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_306<br>; if ((((node)-&gt;flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_DIRECTORY<br>))) _g_boolean_var_306 = 1; else _g_boolean_var_306 = 0; _g_boolean_var_306<br>; }), 1))) { } else { g_return_if_fail_warning (((gchar*) 0),<br> ((const char*) (__func__)), "NODE_IS_DIR (node)"); return; }<br> } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2267"><td class="num" id="LN2267">2267</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2268"><td class="num" id="LN2268">2268</td><td class="line"> dir = <span class='macro'>FILE_BROWSER_NODE_DIR (node)<span class='macro_popup'>((FileBrowserNodeDir *)(node))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2269"><td class="num" id="LN2269">2269</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2270"><td class="num" id="LN2270">2270</td><td class="line"> <span class='comment'>/* Cancel a previous load */</span></td></tr>
+<tr class="codeline" data-linenumber="2271"><td class="num" id="LN2271">2271</td><td class="line"> <span class='keyword'>if</span> (dir-&gt;cancellable != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="2272"><td class="num" id="LN2272">2272</td><td class="line"> file_browser_node_unload (dir-&gt;model, node, <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2273"><td class="num" id="LN2273">2273</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2274"><td class="num" id="LN2274">2274</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2275"><td class="num" id="LN2275">2275</td><td class="line"> node-&gt;flags |= PLUMA_FILE_BROWSER_STORE_FLAG_LOADED;</td></tr>
+<tr class="codeline" data-linenumber="2276"><td class="num" id="LN2276">2276</td><td class="line"> model_begin_loading (model, node);</td></tr>
+<tr class="codeline" data-linenumber="2277"><td class="num" id="LN2277">2277</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2278"><td class="num" id="LN2278">2278</td><td class="line"> dir-&gt;cancellable = g_cancellable_new ();</td></tr>
+<tr class="codeline" data-linenumber="2279"><td class="num" id="LN2279">2279</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2280"><td class="num" id="LN2280">2280</td><td class="line"> async = <span class='macro'>g_new (AsyncNode, 1)<span class='macro_popup'>(AsyncNode *) (__extension__ ({ gsize __n = (gsize) (1); gsize<br> __s = sizeof (AsyncNode); gpointer __p; if (__s == 1) __p = g_malloc<br> (__n); else if (__builtin_constant_p (__n) &amp;&amp; (__s ==<br> 0 || __n &lt;= (9223372036854775807L *2UL+1UL) / __s)) __p =<br> g_malloc (__n * __s); else __p = g_malloc_n (__n, __s); __p;<br> }))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2281"><td class="num" id="LN2281">2281</td><td class="line"> async-&gt;dir = dir;</td></tr>
+<tr class="codeline" data-linenumber="2282"><td class="num" id="LN2282">2282</td><td class="line"> async-&gt;cancellable = <span class='macro'>g_object_ref (dir-&gt;cancellable)<span class='macro_popup'>((__typeof__ (dir-&gt;cancellable)) (g_object_ref) (dir-&gt;cancellable<br>))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2283"><td class="num" id="LN2283">2283</td><td class="line"> async-&gt;original_children = g_slist_copy (dir-&gt;children);</td></tr>
+<tr class="codeline" data-linenumber="2284"><td class="num" id="LN2284">2284</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2285"><td class="num" id="LN2285">2285</td><td class="line"> <span class='comment'>/* Start loading async */</span></td></tr>
+<tr class="codeline" data-linenumber="2286"><td class="num" id="LN2286">2286</td><td class="line"> g_file_enumerate_children_async (node-&gt;file,</td></tr>
+<tr class="codeline" data-linenumber="2287"><td class="num" id="LN2287">2287</td><td class="line"> <span class='macro'>STANDARD_ATTRIBUTE_TYPES<span class='macro_popup'>"standard::type" "," "standard::is-hidden" "," "standard::is-backup"<br> "," "standard::name" "," "standard::content-type" "," "standard::icon"</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="2288"><td class="num" id="LN2288">2288</td><td class="line"> G_FILE_QUERY_INFO_NONE,</td></tr>
+<tr class="codeline" data-linenumber="2289"><td class="num" id="LN2289">2289</td><td class="line"> <span class='macro'>G_PRIORITY_DEFAULT<span class='macro_popup'>0</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="2290"><td class="num" id="LN2290">2290</td><td class="line"> async-&gt;cancellable,</td></tr>
+<tr class="codeline" data-linenumber="2291"><td class="num" id="LN2291">2291</td><td class="line"> (GAsyncReadyCallback)model_iterate_children_cb,</td></tr>
+<tr class="codeline" data-linenumber="2292"><td class="num" id="LN2292">2292</td><td class="line"> async);</td></tr>
+<tr class="codeline" data-linenumber="2293"><td class="num" id="LN2293">2293</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2294"><td class="num" id="LN2294">2294</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2295"><td class="num" id="LN2295">2295</td><td class="line"><span class='keyword'>static</span> GList *</td></tr>
+<tr class="codeline" data-linenumber="2296"><td class="num" id="LN2296">2296</td><td class="line">get_parent_files (PlumaFileBrowserStore * model, GFile * file)</td></tr>
+<tr class="codeline" data-linenumber="2297"><td class="num" id="LN2297">2297</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2298"><td class="num" id="LN2298">2298</td><td class="line"> GList * result = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2299"><td class="num" id="LN2299">2299</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2300"><td class="num" id="LN2300">2300</td><td class="line"> result = g_list_prepend (result, <span class='macro'>g_object_ref (file)<span class='macro_popup'>((__typeof__ (file)) (g_object_ref) (file))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2301"><td class="num" id="LN2301">2301</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2302"><td class="num" id="LN2302">2302</td><td class="line"> <span class='keyword'>while</span> ((file = g_file_get_parent (file))) {</td></tr>
+<tr class="codeline" data-linenumber="2303"><td class="num" id="LN2303">2303</td><td class="line"> <span class='keyword'>if</span> (g_file_equal (file, model-&gt;priv-&gt;root-&gt;file)) {</td></tr>
+<tr class="codeline" data-linenumber="2304"><td class="num" id="LN2304">2304</td><td class="line"> g_object_unref (file);</td></tr>
+<tr class="codeline" data-linenumber="2305"><td class="num" id="LN2305">2305</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="2306"><td class="num" id="LN2306">2306</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2307"><td class="num" id="LN2307">2307</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2308"><td class="num" id="LN2308">2308</td><td class="line"> result = g_list_prepend (result, file);</td></tr>
+<tr class="codeline" data-linenumber="2309"><td class="num" id="LN2309">2309</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2310"><td class="num" id="LN2310">2310</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2311"><td class="num" id="LN2311">2311</td><td class="line"> <span class='keyword'>return</span> result;</td></tr>
+<tr class="codeline" data-linenumber="2312"><td class="num" id="LN2312">2312</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2313"><td class="num" id="LN2313">2313</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2314"><td class="num" id="LN2314">2314</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2315"><td class="num" id="LN2315">2315</td><td class="line">model_fill (PlumaFileBrowserStore * model, FileBrowserNode * node,</td></tr>
+<tr class="codeline" data-linenumber="2316"><td class="num" id="LN2316">2316</td><td class="line"> GtkTreePath ** path)</td></tr>
+<tr class="codeline" data-linenumber="2317"><td class="num" id="LN2317">2317</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2318"><td class="num" id="LN2318">2318</td><td class="line"> gboolean free_path = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2319"><td class="num" id="LN2319">2319</td><td class="line"> GtkTreeIter iter = {0,};</td></tr>
+<tr class="codeline" data-linenumber="2320"><td class="num" id="LN2320">2320</td><td class="line"> GSList *item;</td></tr>
+<tr class="codeline" data-linenumber="2321"><td class="num" id="LN2321">2321</td><td class="line"> FileBrowserNode *child;</td></tr>
+<tr class="codeline" data-linenumber="2322"><td class="num" id="LN2322">2322</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2323"><td class="num" id="LN2323">2323</td><td class="line"> <span class='keyword'>if</span> (node == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="2324"><td class="num" id="LN2324">2324</td><td class="line"> node = model-&gt;priv-&gt;virtual_root;</td></tr>
+<tr class="codeline" data-linenumber="2325"><td class="num" id="LN2325">2325</td><td class="line"> *path = gtk_tree_path_new ();</td></tr>
+<tr class="codeline" data-linenumber="2326"><td class="num" id="LN2326">2326</td><td class="line"> free_path = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2327"><td class="num" id="LN2327">2327</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2328"><td class="num" id="LN2328">2328</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2329"><td class="num" id="LN2329">2329</td><td class="line"> <span class='keyword'>if</span> (*path == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="2330"><td class="num" id="LN2330">2330</td><td class="line"> *path =</td></tr>
+<tr class="codeline" data-linenumber="2331"><td class="num" id="LN2331">2331</td><td class="line"> pluma_file_browser_store_get_path_real (model, node);</td></tr>
+<tr class="codeline" data-linenumber="2332"><td class="num" id="LN2332">2332</td><td class="line"> free_path = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2333"><td class="num" id="LN2333">2333</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2334"><td class="num" id="LN2334">2334</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2335"><td class="num" id="LN2335">2335</td><td class="line"> <span class='keyword'>if</span> (!model_node_visibility (model, node)) {</td></tr>
+<tr class="codeline" data-linenumber="2336"><td class="num" id="LN2336">2336</td><td class="line"> <span class='keyword'>if</span> (free_path)</td></tr>
+<tr class="codeline" data-linenumber="2337"><td class="num" id="LN2337">2337</td><td class="line"> gtk_tree_path_free (*path);</td></tr>
+<tr class="codeline" data-linenumber="2338"><td class="num" id="LN2338">2338</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2339"><td class="num" id="LN2339">2339</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="2340"><td class="num" id="LN2340">2340</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2341"><td class="num" id="LN2341">2341</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2342"><td class="num" id="LN2342">2342</td><td class="line"> <span class='keyword'>if</span> (node != model-&gt;priv-&gt;virtual_root) {</td></tr>
+<tr class="codeline" data-linenumber="2343"><td class="num" id="LN2343">2343</td><td class="line"> <span class='comment'>/* Insert node */</span></td></tr>
+<tr class="codeline" data-linenumber="2344"><td class="num" id="LN2344">2344</td><td class="line"> iter.user_data = node;</td></tr>
+<tr class="codeline" data-linenumber="2345"><td class="num" id="LN2345">2345</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2346"><td class="num" id="LN2346">2346</td><td class="line"> row_inserted(model, path, &amp;iter);</td></tr>
+<tr class="codeline" data-linenumber="2347"><td class="num" id="LN2347">2347</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2348"><td class="num" id="LN2348">2348</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2349"><td class="num" id="LN2349">2349</td><td class="line"> <span class='keyword'>if</span> (<span class='macro'>NODE_IS_DIR (node)<span class='macro_popup'>(((node)-&gt;flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_DIRECTORY<br>))</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="2350"><td class="num" id="LN2350">2350</td><td class="line"> <span class='comment'>/* Go to the first child */</span></td></tr>
+<tr class="codeline" data-linenumber="2351"><td class="num" id="LN2351">2351</td><td class="line"> gtk_tree_path_down (*path);</td></tr>
+<tr class="codeline" data-linenumber="2352"><td class="num" id="LN2352">2352</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2353"><td class="num" id="LN2353">2353</td><td class="line"> <span class='keyword'>for</span> (item = <span class='macro'>FILE_BROWSER_NODE_DIR (node)<span class='macro_popup'>((FileBrowserNodeDir *)(node))</span></span>-&gt;children; item;</td></tr>
+<tr class="codeline" data-linenumber="2354"><td class="num" id="LN2354">2354</td><td class="line"> item = item-&gt;next) {</td></tr>
+<tr class="codeline" data-linenumber="2355"><td class="num" id="LN2355">2355</td><td class="line"> child = (FileBrowserNode *) (item-&gt;data);</td></tr>
+<tr class="codeline" data-linenumber="2356"><td class="num" id="LN2356">2356</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2357"><td class="num" id="LN2357">2357</td><td class="line"> <span class='keyword'>if</span> (model_node_visibility (model, child)) {</td></tr>
+<tr class="codeline" data-linenumber="2358"><td class="num" id="LN2358">2358</td><td class="line"> model_fill (model, child, path);</td></tr>
+<tr class="codeline" data-linenumber="2359"><td class="num" id="LN2359">2359</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2360"><td class="num" id="LN2360">2360</td><td class="line"> <span class='comment'>/* Increase path for next child */</span></td></tr>
+<tr class="codeline" data-linenumber="2361"><td class="num" id="LN2361">2361</td><td class="line"> gtk_tree_path_next (*path);</td></tr>
+<tr class="codeline" data-linenumber="2362"><td class="num" id="LN2362">2362</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2363"><td class="num" id="LN2363">2363</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2364"><td class="num" id="LN2364">2364</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2365"><td class="num" id="LN2365">2365</td><td class="line"> <span class='comment'>/* Move back up to node path */</span></td></tr>
+<tr class="codeline" data-linenumber="2366"><td class="num" id="LN2366">2366</td><td class="line"> gtk_tree_path_up (*path);</td></tr>
+<tr class="codeline" data-linenumber="2367"><td class="num" id="LN2367">2367</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2368"><td class="num" id="LN2368">2368</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2369"><td class="num" id="LN2369">2369</td><td class="line"> model_check_dummy (model, node);</td></tr>
+<tr class="codeline" data-linenumber="2370"><td class="num" id="LN2370">2370</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2371"><td class="num" id="LN2371">2371</td><td class="line"> <span class='keyword'>if</span> (free_path)</td></tr>
+<tr class="codeline" data-linenumber="2372"><td class="num" id="LN2372">2372</td><td class="line"> gtk_tree_path_free (*path);</td></tr>
+<tr class="codeline" data-linenumber="2373"><td class="num" id="LN2373">2373</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2374"><td class="num" id="LN2374">2374</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2375"><td class="num" id="LN2375">2375</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2376"><td class="num" id="LN2376">2376</td><td class="line">set_virtual_root_from_node (PlumaFileBrowserStore * model,</td></tr>
+<tr class="codeline" data-linenumber="2377"><td class="num" id="LN2377">2377</td><td class="line"> FileBrowserNode * node)</td></tr>
+<tr class="codeline" data-linenumber="2378"><td class="num" id="LN2378">2378</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2379"><td class="num" id="LN2379">2379</td><td class="line"> FileBrowserNode *next;</td></tr>
+<tr class="codeline" data-linenumber="2380"><td class="num" id="LN2380">2380</td><td class="line"> FileBrowserNode *prev;</td></tr>
+<tr class="codeline" data-linenumber="2381"><td class="num" id="LN2381">2381</td><td class="line"> FileBrowserNode *check;</td></tr>
+<tr class="codeline" data-linenumber="2382"><td class="num" id="LN2382">2382</td><td class="line"> FileBrowserNodeDir *dir;</td></tr>
+<tr class="codeline" data-linenumber="2383"><td class="num" id="LN2383">2383</td><td class="line"> GSList *item;</td></tr>
+<tr class="codeline" data-linenumber="2384"><td class="num" id="LN2384">2384</td><td class="line"> GSList *copy;</td></tr>
+<tr class="codeline" data-linenumber="2385"><td class="num" id="LN2385">2385</td><td class="line"> GtkTreePath *empty = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2386"><td class="num" id="LN2386">2386</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2387"><td class="num" id="LN2387">2387</td><td class="line"> <span class='macro'>g_assert (node != NULL)<span class='macro_popup'>do { if (__builtin_expect (__extension__ ({ int _g_boolean_var_307<br>; if (node != ((void*)0)) _g_boolean_var_307 = 1; else _g_boolean_var_307<br> = 0; _g_boolean_var_307; }), 1)) ; else g_assertion_message_expr<br> (((gchar*) 0), "pluma-file-browser-store.c", 2387, ((const char<br>*) (__func__)), "node != NULL"); } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2388"><td class="num" id="LN2388">2388</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2389"><td class="num" id="LN2389">2389</td><td class="line"> prev = node;</td></tr>
+<tr class="codeline" data-linenumber="2390"><td class="num" id="LN2390">2390</td><td class="line"> next = prev-&gt;parent;</td></tr>
+<tr class="codeline" data-linenumber="2391"><td class="num" id="LN2391">2391</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2392"><td class="num" id="LN2392">2392</td><td class="line"> <span class='comment'>/* Free all the nodes below that we don't need in cache */</span></td></tr>
+<tr class="codeline" data-linenumber="2393"><td class="num" id="LN2393">2393</td><td class="line"> <span class='keyword'>while</span> (prev != model-&gt;priv-&gt;root) {</td></tr>
+<tr class="codeline" data-linenumber="2394"><td class="num" id="LN2394">2394</td><td class="line"> dir = <span class='macro'>FILE_BROWSER_NODE_DIR (next)<span class='macro_popup'>((FileBrowserNodeDir *)(next))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2395"><td class="num" id="LN2395">2395</td><td class="line"> copy = g_slist_copy (dir-&gt;children);</td></tr>
+<tr class="codeline" data-linenumber="2396"><td class="num" id="LN2396">2396</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2397"><td class="num" id="LN2397">2397</td><td class="line"> <span class='keyword'>for</span> (item = copy; item; item = item-&gt;next) {</td></tr>
+<tr class="codeline" data-linenumber="2398"><td class="num" id="LN2398">2398</td><td class="line"> check = (FileBrowserNode *) (item-&gt;data);</td></tr>
+<tr class="codeline" data-linenumber="2399"><td class="num" id="LN2399">2399</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2400"><td class="num" id="LN2400">2400</td><td class="line"> <span class='keyword'>if</span> (prev == node) {</td></tr>
+<tr class="codeline" data-linenumber="2401"><td class="num" id="LN2401">2401</td><td class="line"> <span class='comment'>/* Only free the children, keeping this depth in cache */</span></td></tr>
+<tr class="codeline" data-linenumber="2402"><td class="num" id="LN2402">2402</td><td class="line"> <span class='keyword'>if</span> (check != node) {</td></tr>
+<tr class="codeline" data-linenumber="2403"><td class="num" id="LN2403">2403</td><td class="line"> file_browser_node_free_children</td></tr>
+<tr class="codeline" data-linenumber="2404"><td class="num" id="LN2404">2404</td><td class="line"> (model, check);</td></tr>
+<tr class="codeline" data-linenumber="2405"><td class="num" id="LN2405">2405</td><td class="line"> file_browser_node_unload (model,</td></tr>
+<tr class="codeline" data-linenumber="2406"><td class="num" id="LN2406">2406</td><td class="line"> check,</td></tr>
+<tr class="codeline" data-linenumber="2407"><td class="num" id="LN2407">2407</td><td class="line"> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2408"><td class="num" id="LN2408">2408</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2409"><td class="num" id="LN2409">2409</td><td class="line"> } <span class='keyword'>else</span> <span class='keyword'>if</span> (check != prev) {</td></tr>
+<tr class="codeline" data-linenumber="2410"><td class="num" id="LN2410">2410</td><td class="line"> <span class='comment'>/* Only free when the node is not in the chain */</span></td></tr>
+<tr class="codeline" data-linenumber="2411"><td class="num" id="LN2411">2411</td><td class="line"> dir-&gt;children =</td></tr>
+<tr class="codeline" data-linenumber="2412"><td class="num" id="LN2412">2412</td><td class="line"> g_slist_remove (dir-&gt;children, check);</td></tr>
+<tr class="codeline" data-linenumber="2413"><td class="num" id="LN2413">2413</td><td class="line"> file_browser_node_free (model, check);</td></tr>
+<tr class="codeline" data-linenumber="2414"><td class="num" id="LN2414">2414</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2415"><td class="num" id="LN2415">2415</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2416"><td class="num" id="LN2416">2416</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2417"><td class="num" id="LN2417">2417</td><td class="line"> <span class='keyword'>if</span> (prev != node)</td></tr>
+<tr class="codeline" data-linenumber="2418"><td class="num" id="LN2418">2418</td><td class="line"> file_browser_node_unload (model, next, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2419"><td class="num" id="LN2419">2419</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2420"><td class="num" id="LN2420">2420</td><td class="line"> g_slist_free (copy);</td></tr>
+<tr class="codeline" data-linenumber="2421"><td class="num" id="LN2421">2421</td><td class="line"> prev = next;</td></tr>
+<tr class="codeline" data-linenumber="2422"><td class="num" id="LN2422">2422</td><td class="line"> next = prev-&gt;parent;</td></tr>
+<tr class="codeline" data-linenumber="2423"><td class="num" id="LN2423">2423</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2424"><td class="num" id="LN2424">2424</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2425"><td class="num" id="LN2425">2425</td><td class="line"> <span class='comment'>/* Free all the nodes up that we don't need in cache */</span></td></tr>
+<tr class="codeline" data-linenumber="2426"><td class="num" id="LN2426">2426</td><td class="line"> <span class='keyword'>for</span> (item = <span class='macro'>FILE_BROWSER_NODE_DIR (node)<span class='macro_popup'>((FileBrowserNodeDir *)(node))</span></span>-&gt;children; item;</td></tr>
+<tr class="codeline" data-linenumber="2427"><td class="num" id="LN2427">2427</td><td class="line"> item = item-&gt;next) {</td></tr>
+<tr class="codeline" data-linenumber="2428"><td class="num" id="LN2428">2428</td><td class="line"> check = (FileBrowserNode *) (item-&gt;data);</td></tr>
+<tr class="codeline" data-linenumber="2429"><td class="num" id="LN2429">2429</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2430"><td class="num" id="LN2430">2430</td><td class="line"> <span class='keyword'>if</span> (<span class='macro'>NODE_IS_DIR (check)<span class='macro_popup'>(((check)-&gt;flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_DIRECTORY<br>))</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="2431"><td class="num" id="LN2431">2431</td><td class="line"> <span class='keyword'>for</span> (copy =</td></tr>
+<tr class="codeline" data-linenumber="2432"><td class="num" id="LN2432">2432</td><td class="line"> <span class='macro'>FILE_BROWSER_NODE_DIR (check)<span class='macro_popup'>((FileBrowserNodeDir *)(check))</span></span>-&gt;children; copy;</td></tr>
+<tr class="codeline" data-linenumber="2433"><td class="num" id="LN2433">2433</td><td class="line"> copy = copy-&gt;next) {</td></tr>
+<tr class="codeline" data-linenumber="2434"><td class="num" id="LN2434">2434</td><td class="line"> file_browser_node_free_children (model,</td></tr>
+<tr class="codeline" data-linenumber="2435"><td class="num" id="LN2435">2435</td><td class="line"> (FileBrowserNode</td></tr>
+<tr class="codeline" data-linenumber="2436"><td class="num" id="LN2436">2436</td><td class="line"> *)</td></tr>
+<tr class="codeline" data-linenumber="2437"><td class="num" id="LN2437">2437</td><td class="line"> (copy-&gt;</td></tr>
+<tr class="codeline" data-linenumber="2438"><td class="num" id="LN2438">2438</td><td class="line"> data));</td></tr>
+<tr class="codeline" data-linenumber="2439"><td class="num" id="LN2439">2439</td><td class="line"> file_browser_node_unload (model,</td></tr>
+<tr class="codeline" data-linenumber="2440"><td class="num" id="LN2440">2440</td><td class="line"> (FileBrowserNode</td></tr>
+<tr class="codeline" data-linenumber="2441"><td class="num" id="LN2441">2441</td><td class="line"> *) (copy-&gt;data),</td></tr>
+<tr class="codeline" data-linenumber="2442"><td class="num" id="LN2442">2442</td><td class="line"> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2443"><td class="num" id="LN2443">2443</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2444"><td class="num" id="LN2444">2444</td><td class="line"> } <span class='keyword'>else</span> <span class='keyword'>if</span> (<span class='macro'>NODE_IS_DUMMY (check)<span class='macro_popup'>(((check)-&gt;flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_DUMMY<br>))</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="2445"><td class="num" id="LN2445">2445</td><td class="line"> check-&gt;flags |=</td></tr>
+<tr class="codeline" data-linenumber="2446"><td class="num" id="LN2446">2446</td><td class="line"> PLUMA_FILE_BROWSER_STORE_FLAG_IS_HIDDEN;</td></tr>
+<tr class="codeline" data-linenumber="2447"><td class="num" id="LN2447">2447</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2448"><td class="num" id="LN2448">2448</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2449"><td class="num" id="LN2449">2449</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2450"><td class="num" id="LN2450">2450</td><td class="line"> <span class='comment'>/* Now finally, set the virtual root, and load it up! */</span></td></tr>
+<tr class="codeline" data-linenumber="2451"><td class="num" id="LN2451">2451</td><td class="line"> model-&gt;priv-&gt;virtual_root = node;</td></tr>
+<tr class="codeline" data-linenumber="2452"><td class="num" id="LN2452">2452</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2453"><td class="num" id="LN2453">2453</td><td class="line"> <span class='comment'>/* Notify that the virtual-root has changed before loading up new nodes so that the</span></td></tr>
+<tr class="codeline" data-linenumber="2454"><td class="num" id="LN2454">2454</td><td class="line"> <span class='comment'>"root_changed" signal can be emitted before any "inserted" signals */</span></td></tr>
+<tr class="codeline" data-linenumber="2455"><td class="num" id="LN2455">2455</td><td class="line"> g_object_notify (<span class='macro'>G_OBJECT (model)<span class='macro_popup'>((((GObject*) (void *) ((model)))))</span></span>, <span class='string_literal'>"virtual-root"</span>);</td></tr>
+<tr class="codeline" data-linenumber="2456"><td class="num" id="LN2456">2456</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2457"><td class="num" id="LN2457">2457</td><td class="line"> model_fill (model, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, &amp;empty);</td></tr>
+<tr class="codeline" data-linenumber="2458"><td class="num" id="LN2458">2458</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2459"><td class="num" id="LN2459">2459</td><td class="line"> <span class='keyword'>if</span> (!<span class='macro'>NODE_LOADED (node)<span class='macro_popup'>(((node)-&gt;flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_LOADED<br>))</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="2460"><td class="num" id="LN2460">2460</td><td class="line"> model_load_directory (model, node);</td></tr>
+<tr class="codeline" data-linenumber="2461"><td class="num" id="LN2461">2461</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2462"><td class="num" id="LN2462">2462</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2463"><td class="num" id="LN2463">2463</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2464"><td class="num" id="LN2464">2464</td><td class="line">set_virtual_root_from_file (PlumaFileBrowserStore * model,</td></tr>
+<tr class="codeline" data-linenumber="2465"><td class="num" id="LN2465">2465</td><td class="line"> GFile * file)</td></tr>
+<tr class="codeline" data-linenumber="2466"><td class="num" id="LN2466">2466</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2467"><td class="num" id="LN2467">2467</td><td class="line"> GList * files;</td></tr>
+<tr class="codeline" data-linenumber="2468"><td class="num" id="LN2468">2468</td><td class="line"> GList * item;</td></tr>
+<tr class="codeline" data-linenumber="2469"><td class="num" id="LN2469">2469</td><td class="line"> FileBrowserNode * parent;</td></tr>
+<tr class="codeline" data-linenumber="2470"><td class="num" id="LN2470">2470</td><td class="line"> GFile * check;</td></tr>
+<tr class="codeline" data-linenumber="2471"><td class="num" id="LN2471">2471</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2472"><td class="num" id="LN2472">2472</td><td class="line"> <span class='comment'>/* Always clear the model before altering the nodes */</span></td></tr>
+<tr class="codeline" data-linenumber="2473"><td class="num" id="LN2473">2473</td><td class="line"> model_clear (model, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2474"><td class="num" id="LN2474">2474</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2475"><td class="num" id="LN2475">2475</td><td class="line"> <span class='comment'>/* Create the node path, get all the uri's */</span></td></tr>
+<tr class="codeline" data-linenumber="2476"><td class="num" id="LN2476">2476</td><td class="line"> files = get_parent_files (model, file);</td></tr>
+<tr class="codeline" data-linenumber="2477"><td class="num" id="LN2477">2477</td><td class="line"> parent = model-&gt;priv-&gt;root;</td></tr>
+<tr class="codeline" data-linenumber="2478"><td class="num" id="LN2478">2478</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2479"><td class="num" id="LN2479">2479</td><td class="line"> <span class='keyword'>for</span> (item = files; item; item = item-&gt;next) {</td></tr>
+<tr class="codeline" data-linenumber="2480"><td class="num" id="LN2480">2480</td><td class="line"> check = <span class='macro'>G_FILE (item-&gt;data)<span class='macro_popup'>((((GFile*) (void *) ((item-&gt;data)))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2481"><td class="num" id="LN2481">2481</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2482"><td class="num" id="LN2482">2482</td><td class="line"> parent = model_add_node_from_dir (model, parent, check);</td></tr>
+<tr class="codeline" data-linenumber="2483"><td class="num" id="LN2483">2483</td><td class="line"> g_object_unref (check);</td></tr>
+<tr class="codeline" data-linenumber="2484"><td class="num" id="LN2484">2484</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2485"><td class="num" id="LN2485">2485</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2486"><td class="num" id="LN2486">2486</td><td class="line"> g_list_free (files);</td></tr>
+<tr class="codeline" data-linenumber="2487"><td class="num" id="LN2487">2487</td><td class="line"> set_virtual_root_from_node (model, parent);</td></tr>
+<tr class="codeline" data-linenumber="2488"><td class="num" id="LN2488">2488</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2489"><td class="num" id="LN2489">2489</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2490"><td class="num" id="LN2490">2490</td><td class="line"><span class='keyword'>static</span> FileBrowserNode *</td></tr>
+<tr class="codeline" data-linenumber="2491"><td class="num" id="LN2491">2491</td><td class="line">model_find_node_children (PlumaFileBrowserStore * model,</td></tr>
+<tr class="codeline" data-linenumber="2492"><td class="num" id="LN2492">2492</td><td class="line"> FileBrowserNode * parent,</td></tr>
+<tr class="codeline" data-linenumber="2493"><td class="num" id="LN2493">2493</td><td class="line"> GFile * file)</td></tr>
+<tr class="codeline" data-linenumber="2494"><td class="num" id="LN2494">2494</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2495"><td class="num" id="LN2495">2495</td><td class="line"> FileBrowserNodeDir *dir;</td></tr>
+<tr class="codeline" data-linenumber="2496"><td class="num" id="LN2496">2496</td><td class="line"> FileBrowserNode *child;</td></tr>
+<tr class="codeline" data-linenumber="2497"><td class="num" id="LN2497">2497</td><td class="line"> FileBrowserNode *result;</td></tr>
+<tr class="codeline" data-linenumber="2498"><td class="num" id="LN2498">2498</td><td class="line"> GSList *children;</td></tr>
+<tr class="codeline" data-linenumber="2499"><td class="num" id="LN2499">2499</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2500"><td class="num" id="LN2500">2500</td><td class="line"> <span class='keyword'>if</span> (!<span class='macro'>NODE_IS_DIR (parent)<span class='macro_popup'>(((parent)-&gt;flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_DIRECTORY<br>))</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="2501"><td class="num" id="LN2501">2501</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2502"><td class="num" id="LN2502">2502</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2503"><td class="num" id="LN2503">2503</td><td class="line"> dir = <span class='macro'>FILE_BROWSER_NODE_DIR (parent)<span class='macro_popup'>((FileBrowserNodeDir *)(parent))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2504"><td class="num" id="LN2504">2504</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2505"><td class="num" id="LN2505">2505</td><td class="line"> <span class='keyword'>for</span> (children = dir-&gt;children; children; children = children-&gt;next) {</td></tr>
+<tr class="codeline" data-linenumber="2506"><td class="num" id="LN2506">2506</td><td class="line"> child = (FileBrowserNode *)(children-&gt;data);</td></tr>
+<tr class="codeline" data-linenumber="2507"><td class="num" id="LN2507">2507</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2508"><td class="num" id="LN2508">2508</td><td class="line"> result = model_find_node (model, child, file);</td></tr>
+<tr class="codeline" data-linenumber="2509"><td class="num" id="LN2509">2509</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2510"><td class="num" id="LN2510">2510</td><td class="line"> <span class='keyword'>if</span> (result)</td></tr>
+<tr class="codeline" data-linenumber="2511"><td class="num" id="LN2511">2511</td><td class="line"> <span class='keyword'>return</span> result;</td></tr>
+<tr class="codeline" data-linenumber="2512"><td class="num" id="LN2512">2512</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2513"><td class="num" id="LN2513">2513</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2514"><td class="num" id="LN2514">2514</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2515"><td class="num" id="LN2515">2515</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2516"><td class="num" id="LN2516">2516</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2517"><td class="num" id="LN2517">2517</td><td class="line"><span class='keyword'>static</span> FileBrowserNode *</td></tr>
+<tr class="codeline" data-linenumber="2518"><td class="num" id="LN2518">2518</td><td class="line">model_find_node (PlumaFileBrowserStore * model,</td></tr>
+<tr class="codeline" data-linenumber="2519"><td class="num" id="LN2519">2519</td><td class="line"> FileBrowserNode * node,</td></tr>
+<tr class="codeline" data-linenumber="2520"><td class="num" id="LN2520">2520</td><td class="line"> GFile * file)</td></tr>
+<tr class="codeline" data-linenumber="2521"><td class="num" id="LN2521">2521</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2522"><td class="num" id="LN2522">2522</td><td class="line"> <span class='keyword'>if</span> (node == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="2523"><td class="num" id="LN2523">2523</td><td class="line"> node = model-&gt;priv-&gt;root;</td></tr>
+<tr class="codeline" data-linenumber="2524"><td class="num" id="LN2524">2524</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2525"><td class="num" id="LN2525">2525</td><td class="line"> <span class='keyword'>if</span> (node-&gt;file &amp;&amp; g_file_equal (node-&gt;file, file))</td></tr>
+<tr class="codeline" data-linenumber="2526"><td class="num" id="LN2526">2526</td><td class="line"> <span class='keyword'>return</span> node;</td></tr>
+<tr class="codeline" data-linenumber="2527"><td class="num" id="LN2527">2527</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2528"><td class="num" id="LN2528">2528</td><td class="line"> <span class='keyword'>if</span> (<span class='macro'>NODE_IS_DIR (node)<span class='macro_popup'>(((node)-&gt;flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_DIRECTORY<br>))</span></span> &amp;&amp; g_file_has_prefix (file, node-&gt;file))</td></tr>
+<tr class="codeline" data-linenumber="2529"><td class="num" id="LN2529">2529</td><td class="line"> <span class='keyword'>return</span> model_find_node_children (model, node, file);</td></tr>
+<tr class="codeline" data-linenumber="2530"><td class="num" id="LN2530">2530</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2531"><td class="num" id="LN2531">2531</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2532"><td class="num" id="LN2532">2532</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2533"><td class="num" id="LN2533">2533</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2534"><td class="num" id="LN2534">2534</td><td class="line"><span class='keyword'>static</span> GQuark</td></tr>
+<tr class="codeline" data-linenumber="2535"><td class="num" id="LN2535">2535</td><td class="line">pluma_file_browser_store_error_quark (<span class='keyword'>void</span>)</td></tr>
+<tr class="codeline" data-linenumber="2536"><td class="num" id="LN2536">2536</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2537"><td class="num" id="LN2537">2537</td><td class="line"> <span class='keyword'>static</span> GQuark quark = 0;</td></tr>
+<tr class="codeline" data-linenumber="2538"><td class="num" id="LN2538">2538</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2539"><td class="num" id="LN2539">2539</td><td class="line"> <span class='keyword'>if</span> (<span class='macro'>G_UNLIKELY (quark == 0)<span class='macro_popup'>(__builtin_expect (__extension__ ({ int _g_boolean_var_308; if<br> (quark == 0) _g_boolean_var_308 = 1; else _g_boolean_var_308<br> = 0; _g_boolean_var_308; }), 0))</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="2540"><td class="num" id="LN2540">2540</td><td class="line"> quark = g_quark_from_string (<span class='string_literal'>"pluma_file_browser_store_error"</span>);</td></tr>
+<tr class="codeline" data-linenumber="2541"><td class="num" id="LN2541">2541</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2542"><td class="num" id="LN2542">2542</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2543"><td class="num" id="LN2543">2543</td><td class="line"> <span class='keyword'>return</span> quark;</td></tr>
+<tr class="codeline" data-linenumber="2544"><td class="num" id="LN2544">2544</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2545"><td class="num" id="LN2545">2545</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2546"><td class="num" id="LN2546">2546</td><td class="line"><span class='keyword'>static</span> GFile *</td></tr>
+<tr class="codeline" data-linenumber="2547"><td class="num" id="LN2547">2547</td><td class="line">unique_new_name (GFile * directory, gchar <span class='keyword'>const</span> * name)</td></tr>
+<tr class="codeline" data-linenumber="2548"><td class="num" id="LN2548">2548</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2549"><td class="num" id="LN2549">2549</td><td class="line"> GFile * newuri = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2550"><td class="num" id="LN2550">2550</td><td class="line"> guint num = 0;</td></tr>
+<tr class="codeline" data-linenumber="2551"><td class="num" id="LN2551">2551</td><td class="line"> gchar * newname;</td></tr>
+<tr class="codeline" data-linenumber="2552"><td class="num" id="LN2552">2552</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2553"><td class="num" id="LN2553">2553</td><td class="line"> <span class='keyword'>while</span> (newuri == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> || g_file_query_exists (newuri, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)) {</td></tr>
+<tr class="codeline" data-linenumber="2554"><td class="num" id="LN2554">2554</td><td class="line"> <span class='keyword'>if</span> (newuri != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="2555"><td class="num" id="LN2555">2555</td><td class="line"> g_object_unref (newuri);</td></tr>
+<tr class="codeline" data-linenumber="2556"><td class="num" id="LN2556">2556</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2557"><td class="num" id="LN2557">2557</td><td class="line"> <span class='keyword'>if</span> (num == 0)</td></tr>
+<tr class="codeline" data-linenumber="2558"><td class="num" id="LN2558">2558</td><td class="line"> newname = <span class='macro'>g_strdup (name)<span class='macro_popup'>g_strdup_inline (name)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2559"><td class="num" id="LN2559">2559</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="2560"><td class="num" id="LN2560">2560</td><td class="line"> newname = g_strdup_printf (<span class='string_literal'>"%s(%d)"</span>, name, num);</td></tr>
+<tr class="codeline" data-linenumber="2561"><td class="num" id="LN2561">2561</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2562"><td class="num" id="LN2562">2562</td><td class="line"> newuri = g_file_get_child (directory, newname);</td></tr>
+<tr class="codeline" data-linenumber="2563"><td class="num" id="LN2563">2563</td><td class="line"> g_free (newname);</td></tr>
+<tr class="codeline" data-linenumber="2564"><td class="num" id="LN2564">2564</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2565"><td class="num" id="LN2565">2565</td><td class="line"> ++num;</td></tr>
+<tr class="codeline" data-linenumber="2566"><td class="num" id="LN2566">2566</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2567"><td class="num" id="LN2567">2567</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2568"><td class="num" id="LN2568">2568</td><td class="line"> <span class='keyword'>return</span> newuri;</td></tr>
+<tr class="codeline" data-linenumber="2569"><td class="num" id="LN2569">2569</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2570"><td class="num" id="LN2570">2570</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2571"><td class="num" id="LN2571">2571</td><td class="line"><span class='keyword'>static</span> PlumaFileBrowserStoreResult</td></tr>
+<tr class="codeline" data-linenumber="2572"><td class="num" id="LN2572">2572</td><td class="line">model_root_mounted (PlumaFileBrowserStore * model, gchar <span class='keyword'>const</span> * virtual_root)</td></tr>
+<tr class="codeline" data-linenumber="2573"><td class="num" id="LN2573">2573</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2574"><td class="num" id="LN2574">2574</td><td class="line"> model_check_dummy (model, model-&gt;priv-&gt;root);</td></tr>
+<tr class="codeline" data-linenumber="2575"><td class="num" id="LN2575">2575</td><td class="line"> g_object_notify (<span class='macro'>G_OBJECT (model)<span class='macro_popup'>((((GObject*) (void *) ((model)))))</span></span>, <span class='string_literal'>"root"</span>);</td></tr>
+<tr class="codeline" data-linenumber="2576"><td class="num" id="LN2576">2576</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2577"><td class="num" id="LN2577">2577</td><td class="line"> <span class='keyword'>if</span> (virtual_root != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="2578"><td class="num" id="LN2578">2578</td><td class="line"> <span class='keyword'>return</span></td></tr>
+<tr class="codeline" data-linenumber="2579"><td class="num" id="LN2579">2579</td><td class="line"> pluma_file_browser_store_set_virtual_root_from_string</td></tr>
+<tr class="codeline" data-linenumber="2580"><td class="num" id="LN2580">2580</td><td class="line"> (model, virtual_root);</td></tr>
+<tr class="codeline" data-linenumber="2581"><td class="num" id="LN2581">2581</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="2582"><td class="num" id="LN2582">2582</td><td class="line"> set_virtual_root_from_node (model,</td></tr>
+<tr class="codeline" data-linenumber="2583"><td class="num" id="LN2583">2583</td><td class="line"> model-&gt;priv-&gt;root);</td></tr>
+<tr class="codeline" data-linenumber="2584"><td class="num" id="LN2584">2584</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2585"><td class="num" id="LN2585">2585</td><td class="line"> <span class='keyword'>return</span> PLUMA_FILE_BROWSER_STORE_RESULT_OK;</td></tr>
+<tr class="codeline" data-linenumber="2586"><td class="num" id="LN2586">2586</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2587"><td class="num" id="LN2587">2587</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2588"><td class="num" id="LN2588">2588</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2589"><td class="num" id="LN2589">2589</td><td class="line">handle_root_error (PlumaFileBrowserStore * model, GError *error)</td></tr>
+<tr class="codeline" data-linenumber="2590"><td class="num" id="LN2590">2590</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2591"><td class="num" id="LN2591">2591</td><td class="line"> FileBrowserNode * root;</td></tr>
+<tr class="codeline" data-linenumber="2592"><td class="num" id="LN2592">2592</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2593"><td class="num" id="LN2593">2593</td><td class="line"> g_signal_emit (model,</td></tr>
+<tr class="codeline" data-linenumber="2594"><td class="num" id="LN2594">2594</td><td class="line"> model_signals[ERROR],</td></tr>
+<tr class="codeline" data-linenumber="2595"><td class="num" id="LN2595">2595</td><td class="line"> 0,</td></tr>
+<tr class="codeline" data-linenumber="2596"><td class="num" id="LN2596">2596</td><td class="line"> PLUMA_FILE_BROWSER_ERROR_SET_ROOT,</td></tr>
+<tr class="codeline" data-linenumber="2597"><td class="num" id="LN2597">2597</td><td class="line"> error-&gt;message);</td></tr>
+<tr class="codeline" data-linenumber="2598"><td class="num" id="LN2598">2598</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2599"><td class="num" id="LN2599">2599</td><td class="line"> <span class='comment'>/* Set the virtual root to the root */</span></td></tr>
+<tr class="codeline" data-linenumber="2600"><td class="num" id="LN2600">2600</td><td class="line"> root = model-&gt;priv-&gt;root;</td></tr>
+<tr class="codeline" data-linenumber="2601"><td class="num" id="LN2601">2601</td><td class="line"> model-&gt;priv-&gt;virtual_root = root;</td></tr>
+<tr class="codeline" data-linenumber="2602"><td class="num" id="LN2602">2602</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2603"><td class="num" id="LN2603">2603</td><td class="line"> <span class='comment'>/* Set the root to be loaded */</span></td></tr>
+<tr class="codeline" data-linenumber="2604"><td class="num" id="LN2604">2604</td><td class="line"> root-&gt;flags |= PLUMA_FILE_BROWSER_STORE_FLAG_LOADED;</td></tr>
+<tr class="codeline" data-linenumber="2605"><td class="num" id="LN2605">2605</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2606"><td class="num" id="LN2606">2606</td><td class="line"> <span class='comment'>/* Check the dummy */</span></td></tr>
+<tr class="codeline" data-linenumber="2607"><td class="num" id="LN2607">2607</td><td class="line"> model_check_dummy (model, root);</td></tr>
+<tr class="codeline" data-linenumber="2608"><td class="num" id="LN2608">2608</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2609"><td class="num" id="LN2609">2609</td><td class="line"> g_object_notify (<span class='macro'>G_OBJECT (model)<span class='macro_popup'>((((GObject*) (void *) ((model)))))</span></span>, <span class='string_literal'>"root"</span>);</td></tr>
+<tr class="codeline" data-linenumber="2610"><td class="num" id="LN2610">2610</td><td class="line"> g_object_notify (<span class='macro'>G_OBJECT (model)<span class='macro_popup'>((((GObject*) (void *) ((model)))))</span></span>, <span class='string_literal'>"virtual-root"</span>);</td></tr>
+<tr class="codeline" data-linenumber="2611"><td class="num" id="LN2611">2611</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2612"><td class="num" id="LN2612">2612</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2613"><td class="num" id="LN2613">2613</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2614"><td class="num" id="LN2614">2614</td><td class="line">mount_cb (GFile * file,</td></tr>
+<tr class="codeline" data-linenumber="2615"><td class="num" id="LN2615">2615</td><td class="line"> GAsyncResult * res,</td></tr>
+<tr class="codeline" data-linenumber="2616"><td class="num" id="LN2616">2616</td><td class="line"> MountInfo * mount_info)</td></tr>
+<tr class="codeline" data-linenumber="2617"><td class="num" id="LN2617">2617</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2618"><td class="num" id="LN2618">2618</td><td class="line"> gboolean mounted;</td></tr>
+<tr class="codeline" data-linenumber="2619"><td class="num" id="LN2619">2619</td><td class="line"> GError * error = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2620"><td class="num" id="LN2620">2620</td><td class="line"> PlumaFileBrowserStore * model = mount_info-&gt;model;</td></tr>
+<tr class="codeline" data-linenumber="2621"><td class="num" id="LN2621">2621</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2622"><td class="num" id="LN2622">2622</td><td class="line"> mounted = g_file_mount_enclosing_volume_finish (file, res, &amp;error);</td></tr>
+<tr class="codeline" data-linenumber="2623"><td class="num" id="LN2623">2623</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2624"><td class="num" id="LN2624">2624</td><td class="line"> <span class='keyword'>if</span> (mount_info-&gt;model)</td></tr>
+<tr class="codeline" data-linenumber="2625"><td class="num" id="LN2625">2625</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="2626"><td class="num" id="LN2626">2626</td><td class="line"> model-&gt;priv-&gt;mount_info = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2627"><td class="num" id="LN2627">2627</td><td class="line"> model_end_loading (model, model-&gt;priv-&gt;root);</td></tr>
+<tr class="codeline" data-linenumber="2628"><td class="num" id="LN2628">2628</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2629"><td class="num" id="LN2629">2629</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2630"><td class="num" id="LN2630">2630</td><td class="line"> <span class='keyword'>if</span> (!mount_info-&gt;model || g_cancellable_is_cancelled (mount_info-&gt;cancellable))</td></tr>
+<tr class="codeline" data-linenumber="2631"><td class="num" id="LN2631">2631</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="2632"><td class="num" id="LN2632">2632</td><td class="line"> <span class='comment'>// Reset because it might be reused?</span></td></tr>
+<tr class="codeline" data-linenumber="2633"><td class="num" id="LN2633">2633</td><td class="line"> g_cancellable_reset (mount_info-&gt;cancellable);</td></tr>
+<tr class="codeline" data-linenumber="2634"><td class="num" id="LN2634">2634</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2635"><td class="num" id="LN2635">2635</td><td class="line"> <span class='keyword'>else</span> <span class='keyword'>if</span> (mounted)</td></tr>
+<tr class="codeline" data-linenumber="2636"><td class="num" id="LN2636">2636</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="2637"><td class="num" id="LN2637">2637</td><td class="line"> model_root_mounted (model, mount_info-&gt;virtual_root);</td></tr>
+<tr class="codeline" data-linenumber="2638"><td class="num" id="LN2638">2638</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2639"><td class="num" id="LN2639">2639</td><td class="line"> <span class='keyword'>else</span> <span class='keyword'>if</span> (error-&gt;code != G_IO_ERROR_CANCELLED)</td></tr>
+<tr class="codeline" data-linenumber="2640"><td class="num" id="LN2640">2640</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="2641"><td class="num" id="LN2641">2641</td><td class="line"> handle_root_error (model, error);</td></tr>
+<tr class="codeline" data-linenumber="2642"><td class="num" id="LN2642">2642</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2643"><td class="num" id="LN2643">2643</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2644"><td class="num" id="LN2644">2644</td><td class="line"> <span class='keyword'>if</span> (error)</td></tr>
+<tr class="codeline" data-linenumber="2645"><td class="num" id="LN2645">2645</td><td class="line"> g_error_free (error);</td></tr>
+<tr class="codeline" data-linenumber="2646"><td class="num" id="LN2646">2646</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2647"><td class="num" id="LN2647">2647</td><td class="line"> g_object_unref (mount_info-&gt;operation);</td></tr>
+<tr class="codeline" data-linenumber="2648"><td class="num" id="LN2648">2648</td><td class="line"> g_object_unref (mount_info-&gt;cancellable);</td></tr>
+<tr class="codeline" data-linenumber="2649"><td class="num" id="LN2649">2649</td><td class="line"> g_free (mount_info-&gt;virtual_root);</td></tr>
+<tr class="codeline" data-linenumber="2650"><td class="num" id="LN2650">2650</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2651"><td class="num" id="LN2651">2651</td><td class="line"> g_free (mount_info);</td></tr>
+<tr class="codeline" data-linenumber="2652"><td class="num" id="LN2652">2652</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2653"><td class="num" id="LN2653">2653</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2654"><td class="num" id="LN2654">2654</td><td class="line"><span class='keyword'>static</span> PlumaFileBrowserStoreResult</td></tr>
+<tr class="codeline" data-linenumber="2655"><td class="num" id="LN2655">2655</td><td class="line">model_mount_root (PlumaFileBrowserStore * model, gchar <span class='keyword'>const</span> * virtual_root)</td></tr>
+<tr class="codeline" data-linenumber="2656"><td class="num" id="LN2656">2656</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2657"><td class="num" id="LN2657">2657</td><td class="line"> GFileInfo * info;</td></tr>
+<tr class="codeline" data-linenumber="2658"><td class="num" id="LN2658">2658</td><td class="line"> GError * error = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2659"><td class="num" id="LN2659">2659</td><td class="line"> MountInfo * mount_info;</td></tr>
+<tr class="codeline" data-linenumber="2660"><td class="num" id="LN2660">2660</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2661"><td class="num" id="LN2661">2661</td><td class="line"> info = g_file_query_info (model-&gt;priv-&gt;root-&gt;file,</td></tr>
+<tr class="codeline" data-linenumber="2662"><td class="num" id="LN2662">2662</td><td class="line"> <span class='macro'>G_FILE_ATTRIBUTE_STANDARD_TYPE<span class='macro_popup'>"standard::type"</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="2663"><td class="num" id="LN2663">2663</td><td class="line"> G_FILE_QUERY_INFO_NONE,</td></tr>
+<tr class="codeline" data-linenumber="2664"><td class="num" id="LN2664">2664</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="2665"><td class="num" id="LN2665">2665</td><td class="line"> &amp;error);</td></tr>
+<tr class="codeline" data-linenumber="2666"><td class="num" id="LN2666">2666</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2667"><td class="num" id="LN2667">2667</td><td class="line"> <span class='keyword'>if</span> (!info) {</td></tr>
+<tr class="codeline" data-linenumber="2668"><td class="num" id="LN2668">2668</td><td class="line"> <span class='keyword'>if</span> (error-&gt;code == G_IO_ERROR_NOT_MOUNTED) {</td></tr>
+<tr class="codeline" data-linenumber="2669"><td class="num" id="LN2669">2669</td><td class="line"> <span class='comment'>/* Try to mount it */</span></td></tr>
+<tr class="codeline" data-linenumber="2670"><td class="num" id="LN2670">2670</td><td class="line"> <span class='macro'>FILE_BROWSER_NODE_DIR (model-&gt;priv-&gt;root)<span class='macro_popup'>((FileBrowserNodeDir *)(model-&gt;priv-&gt;root))</span></span>-&gt;cancellable = g_cancellable_new ();</td></tr>
+<tr class="codeline" data-linenumber="2671"><td class="num" id="LN2671">2671</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2672"><td class="num" id="LN2672">2672</td><td class="line"> mount_info = <span class='macro'>g_new(MountInfo, 1)<span class='macro_popup'>(MountInfo *) (__extension__ ({ gsize __n = (gsize) (1); gsize<br> __s = sizeof (MountInfo); gpointer __p; if (__s == 1) __p = g_malloc<br> (__n); else if (__builtin_constant_p (__n) &amp;&amp; (__s ==<br> 0 || __n &lt;= (9223372036854775807L *2UL+1UL) / __s)) __p =<br> g_malloc (__n * __s); else __p = g_malloc_n (__n, __s); __p;<br> }))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2673"><td class="num" id="LN2673">2673</td><td class="line"> mount_info-&gt;model = model;</td></tr>
+<tr class="codeline" data-linenumber="2674"><td class="num" id="LN2674">2674</td><td class="line"> mount_info-&gt;virtual_root = <span class='macro'>g_strdup (virtual_root)<span class='macro_popup'>g_strdup_inline (virtual_root)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2675"><td class="num" id="LN2675">2675</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2676"><td class="num" id="LN2676">2676</td><td class="line"> <span class='comment'>/* FIXME: we should be setting the correct window */</span></td></tr>
+<tr class="codeline" data-linenumber="2677"><td class="num" id="LN2677">2677</td><td class="line"> mount_info-&gt;operation = gtk_mount_operation_new (<span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2678"><td class="num" id="LN2678">2678</td><td class="line"> mount_info-&gt;cancellable = <span class='macro'>g_object_ref (FILE_BROWSER_NODE_DIR (model-&gt;priv-&gt;root)-&gt;cancellable)<span class='macro_popup'>((__typeof__ (((FileBrowserNodeDir *)(model-&gt;priv-&gt;root<br>))-&gt;cancellable)) (g_object_ref) (((FileBrowserNodeDir *)(<br>model-&gt;priv-&gt;root))-&gt;cancellable))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2679"><td class="num" id="LN2679">2679</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2680"><td class="num" id="LN2680">2680</td><td class="line"> model_begin_loading (model, model-&gt;priv-&gt;root);</td></tr>
+<tr class="codeline" data-linenumber="2681"><td class="num" id="LN2681">2681</td><td class="line"> g_file_mount_enclosing_volume (model-&gt;priv-&gt;root-&gt;file,</td></tr>
+<tr class="codeline" data-linenumber="2682"><td class="num" id="LN2682">2682</td><td class="line"> G_MOUNT_MOUNT_NONE,</td></tr>
+<tr class="codeline" data-linenumber="2683"><td class="num" id="LN2683">2683</td><td class="line"> mount_info-&gt;operation,</td></tr>
+<tr class="codeline" data-linenumber="2684"><td class="num" id="LN2684">2684</td><td class="line"> mount_info-&gt;cancellable,</td></tr>
+<tr class="codeline" data-linenumber="2685"><td class="num" id="LN2685">2685</td><td class="line"> (GAsyncReadyCallback)mount_cb,</td></tr>
+<tr class="codeline" data-linenumber="2686"><td class="num" id="LN2686">2686</td><td class="line"> mount_info);</td></tr>
+<tr class="codeline" data-linenumber="2687"><td class="num" id="LN2687">2687</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2688"><td class="num" id="LN2688">2688</td><td class="line"> model-&gt;priv-&gt;mount_info = mount_info;</td></tr>
+<tr class="codeline" data-linenumber="2689"><td class="num" id="LN2689">2689</td><td class="line"> <span class='keyword'>return</span> PLUMA_FILE_BROWSER_STORE_RESULT_MOUNTING;</td></tr>
+<tr class="codeline" data-linenumber="2690"><td class="num" id="LN2690">2690</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2691"><td class="num" id="LN2691">2691</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="2692"><td class="num" id="LN2692">2692</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="2693"><td class="num" id="LN2693">2693</td><td class="line"> handle_root_error (model, error);</td></tr>
+<tr class="codeline" data-linenumber="2694"><td class="num" id="LN2694">2694</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2695"><td class="num" id="LN2695">2695</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2696"><td class="num" id="LN2696">2696</td><td class="line"> g_error_free (error);</td></tr>
+<tr class="codeline" data-linenumber="2697"><td class="num" id="LN2697">2697</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="2698"><td class="num" id="LN2698">2698</td><td class="line"> g_object_unref (info);</td></tr>
+<tr class="codeline" data-linenumber="2699"><td class="num" id="LN2699">2699</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2700"><td class="num" id="LN2700">2700</td><td class="line"> <span class='keyword'>return</span> model_root_mounted (model, virtual_root);</td></tr>
+<tr class="codeline" data-linenumber="2701"><td class="num" id="LN2701">2701</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2702"><td class="num" id="LN2702">2702</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2703"><td class="num" id="LN2703">2703</td><td class="line"> <span class='keyword'>return</span> PLUMA_FILE_BROWSER_STORE_RESULT_OK;</td></tr>
+<tr class="codeline" data-linenumber="2704"><td class="num" id="LN2704">2704</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2705"><td class="num" id="LN2705">2705</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2706"><td class="num" id="LN2706">2706</td><td class="line"><span class='comment'>/* Public */</span></td></tr>
+<tr class="codeline" data-linenumber="2707"><td class="num" id="LN2707">2707</td><td class="line">PlumaFileBrowserStore *</td></tr>
+<tr class="codeline" data-linenumber="2708"><td class="num" id="LN2708">2708</td><td class="line">pluma_file_browser_store_new (gchar <span class='keyword'>const</span> *root)</td></tr>
+<tr class="codeline" data-linenumber="2709"><td class="num" id="LN2709">2709</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2710"><td class="num" id="LN2710">2710</td><td class="line"> PlumaFileBrowserStore *obj =</td></tr>
+<tr class="codeline" data-linenumber="2711"><td class="num" id="LN2711">2711</td><td class="line"> <span class='macro'>PLUMA_FILE_BROWSER_STORE (g_object_new<span class='macro_popup'>((((PlumaFileBrowserStore*) (void *) ((g_object_new ((pluma_file_browser_store_get_type<br> ()), ((void*)0)))))))</span></span></td></tr>
+<tr class="codeline" data-linenumber="2712"><td class="num" id="LN2712">2712</td><td class="line"> <span class='macro'>(PLUMA_TYPE_FILE_BROWSER_STORE,<span class='macro_popup'>((((PlumaFileBrowserStore*) (void *) ((g_object_new ((pluma_file_browser_store_get_type<br> ()), ((void*)0)))))))</span></span></td></tr>
+<tr class="codeline" data-linenumber="2713"><td class="num" id="LN2713">2713</td><td class="line"> <span class='macro'>NULL))<span class='macro_popup'>((((PlumaFileBrowserStore*) (void *) ((g_object_new ((pluma_file_browser_store_get_type<br> ()), ((void*)0)))))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2714"><td class="num" id="LN2714">2714</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2715"><td class="num" id="LN2715">2715</td><td class="line"> pluma_file_browser_store_set_root (obj, root);</td></tr>
+<tr class="codeline" data-linenumber="2716"><td class="num" id="LN2716">2716</td><td class="line"> <span class='keyword'>return</span> obj;</td></tr>
+<tr class="codeline" data-linenumber="2717"><td class="num" id="LN2717">2717</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2718"><td class="num" id="LN2718">2718</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2719"><td class="num" id="LN2719">2719</td><td class="line"><span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2720"><td class="num" id="LN2720">2720</td><td class="line">pluma_file_browser_store_set_value (PlumaFileBrowserStore * tree_model,</td></tr>
+<tr class="codeline" data-linenumber="2721"><td class="num" id="LN2721">2721</td><td class="line"> GtkTreeIter * iter, gint column,</td></tr>
+<tr class="codeline" data-linenumber="2722"><td class="num" id="LN2722">2722</td><td class="line"> GValue * value)</td></tr>
+<tr class="codeline" data-linenumber="2723"><td class="num" id="LN2723">2723</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2724"><td class="num" id="LN2724">2724</td><td class="line"> gpointer data;</td></tr>
+<tr class="codeline" data-linenumber="2725"><td class="num" id="LN2725">2725</td><td class="line"> FileBrowserNode *node;</td></tr>
+<tr class="codeline" data-linenumber="2726"><td class="num" id="LN2726">2726</td><td class="line"> GtkTreePath *path;</td></tr>
+<tr class="codeline" data-linenumber="2727"><td class="num" id="LN2727">2727</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2728"><td class="num" id="LN2728">2728</td><td class="line"> <span class='macro'>g_return_if_fail (PLUMA_IS_FILE_BROWSER_STORE (tree_model))<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_309<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((tree_model)); GType __t = ((pluma_file_browser_store_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_309 = 1; else _g_boolean_var_309 =<br> 0; _g_boolean_var_309; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "PLUMA_IS_FILE_BROWSER_STORE (tree_model)"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2729"><td class="num" id="LN2729">2729</td><td class="line"> <span class='macro'>g_return_if_fail (column ==<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_310<br>; if (column == PLUMA_FILE_BROWSER_STORE_COLUMN_EMBLEM) _g_boolean_var_310<br> = 1; else _g_boolean_var_310 = 0; _g_boolean_var_310; }), 1)<br>)) { } else { g_return_if_fail_warning (((gchar*) 0), ((const<br> char*) (__func__)), "column == PLUMA_FILE_BROWSER_STORE_COLUMN_EMBLEM"<br>); return; } } while (0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="2730"><td class="num" id="LN2730">2730</td><td class="line"> <span class='macro'>PLUMA_FILE_BROWSER_STORE_COLUMN_EMBLEM)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_310<br>; if (column == PLUMA_FILE_BROWSER_STORE_COLUMN_EMBLEM) _g_boolean_var_310<br> = 1; else _g_boolean_var_310 = 0; _g_boolean_var_310; }), 1)<br>)) { } else { g_return_if_fail_warning (((gchar*) 0), ((const<br> char*) (__func__)), "column == PLUMA_FILE_BROWSER_STORE_COLUMN_EMBLEM"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2731"><td class="num" id="LN2731">2731</td><td class="line"> <span class='macro'>g_return_if_fail (G_VALUE_HOLDS_OBJECT (value))<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_311<br>; if ((((__extension__ ({ const GValue *__val = (const GValue<br>*) ((value)); GType __t = (((GType) ((20) &lt;&lt; (2)))); gboolean<br> __r; if (!__val) __r = (0); else if (__val-&gt;g_type == __t<br>) __r = (!(0)); else __r = g_type_check_value_holds (__val, __t<br>); __r; }))))) _g_boolean_var_311 = 1; else _g_boolean_var_311<br> = 0; _g_boolean_var_311; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "G_VALUE_HOLDS_OBJECT (value)"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2732"><td class="num" id="LN2732">2732</td><td class="line"> <span class='macro'>g_return_if_fail (iter != NULL)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_312<br>; if (iter != ((void*)0)) _g_boolean_var_312 = 1; else _g_boolean_var_312<br> = 0; _g_boolean_var_312; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "iter != NULL"); return<br>; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2733"><td class="num" id="LN2733">2733</td><td class="line"> <span class='macro'>g_return_if_fail (iter-&gt;user_data != NULL)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_313<br>; if (iter-&gt;user_data != ((void*)0)) _g_boolean_var_313 = 1<br>; else _g_boolean_var_313 = 0; _g_boolean_var_313; }), 1))) {<br> } else { g_return_if_fail_warning (((gchar*) 0), ((const char<br>*) (__func__)), "iter-&gt;user_data != NULL"); return; } } while<br> (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2734"><td class="num" id="LN2734">2734</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2735"><td class="num" id="LN2735">2735</td><td class="line"> data = g_value_get_object (value);</td></tr>
+<tr class="codeline" data-linenumber="2736"><td class="num" id="LN2736">2736</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2737"><td class="num" id="LN2737">2737</td><td class="line"> <span class='keyword'>if</span> (data)</td></tr>
+<tr class="codeline" data-linenumber="2738"><td class="num" id="LN2738">2738</td><td class="line"> <span class='macro'>g_return_if_fail (GDK_IS_PIXBUF (data))<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_314<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((data)); GType __t = ((gdk_pixbuf_get_type ())); gboolean<br> __r; if (!__inst) __r = (0); else if (__inst-&gt;g_class &amp;&amp;<br> __inst-&gt;g_class-&gt;g_type == __t) __r = (!(0)); else __r<br> = g_type_check_instance_is_a (__inst, __t); __r; }))))) _g_boolean_var_314<br> = 1; else _g_boolean_var_314 = 0; _g_boolean_var_314; }), 1)<br>)) { } else { g_return_if_fail_warning (((gchar*) 0), ((const<br> char*) (__func__)), "GDK_IS_PIXBUF (data)"); return; } } while<br> (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2739"><td class="num" id="LN2739">2739</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2740"><td class="num" id="LN2740">2740</td><td class="line"> node = (FileBrowserNode *) (iter-&gt;user_data);</td></tr>
+<tr class="codeline" data-linenumber="2741"><td class="num" id="LN2741">2741</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2742"><td class="num" id="LN2742">2742</td><td class="line"> <span class='keyword'>if</span> (node-&gt;emblem)</td></tr>
+<tr class="codeline" data-linenumber="2743"><td class="num" id="LN2743">2743</td><td class="line"> g_object_unref (node-&gt;emblem);</td></tr>
+<tr class="codeline" data-linenumber="2744"><td class="num" id="LN2744">2744</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2745"><td class="num" id="LN2745">2745</td><td class="line"> <span class='keyword'>if</span> (data)</td></tr>
+<tr class="codeline" data-linenumber="2746"><td class="num" id="LN2746">2746</td><td class="line"> node-&gt;emblem = <span class='macro'>g_object_ref (GDK_PIXBUF (data))<span class='macro_popup'>((__typeof__ (((((GdkPixbuf*) (void *) ((data))))))) (g_object_ref<br>) (((((GdkPixbuf*) (void *) ((data)))))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2747"><td class="num" id="LN2747">2747</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="2748"><td class="num" id="LN2748">2748</td><td class="line"> node-&gt;emblem = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2749"><td class="num" id="LN2749">2749</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2750"><td class="num" id="LN2750">2750</td><td class="line"> model_recomposite_icon (tree_model, iter);</td></tr>
+<tr class="codeline" data-linenumber="2751"><td class="num" id="LN2751">2751</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2752"><td class="num" id="LN2752">2752</td><td class="line"> <span class='keyword'>if</span> (model_node_visibility (tree_model, node)) {</td></tr>
+<tr class="codeline" data-linenumber="2753"><td class="num" id="LN2753">2753</td><td class="line"> path = pluma_file_browser_store_get_path (<span class='macro'>GTK_TREE_MODEL (tree_model)<span class='macro_popup'>((((GtkTreeModel*) (void *) ((tree_model)))))</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="2754"><td class="num" id="LN2754">2754</td><td class="line"> iter);</td></tr>
+<tr class="codeline" data-linenumber="2755"><td class="num" id="LN2755">2755</td><td class="line"> row_changed (tree_model, &amp;path, iter);</td></tr>
+<tr class="codeline" data-linenumber="2756"><td class="num" id="LN2756">2756</td><td class="line"> gtk_tree_path_free (path);</td></tr>
+<tr class="codeline" data-linenumber="2757"><td class="num" id="LN2757">2757</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2758"><td class="num" id="LN2758">2758</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2759"><td class="num" id="LN2759">2759</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2760"><td class="num" id="LN2760">2760</td><td class="line">PlumaFileBrowserStoreResult</td></tr>
+<tr class="codeline" data-linenumber="2761"><td class="num" id="LN2761">2761</td><td class="line">pluma_file_browser_store_set_virtual_root (PlumaFileBrowserStore * model,</td></tr>
+<tr class="codeline" data-linenumber="2762"><td class="num" id="LN2762">2762</td><td class="line"> GtkTreeIter * iter)</td></tr>
+<tr class="codeline" data-linenumber="2763"><td class="num" id="LN2763">2763</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2764"><td class="num" id="LN2764">2764</td><td class="line"> <span class='macro'>g_return_val_if_fail (PLUMA_IS_FILE_BROWSER_STORE (model),<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_315<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((model)); GType __t = ((pluma_file_browser_store_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_315 = 1; else _g_boolean_var_315 =<br> 0; _g_boolean_var_315; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "PLUMA_IS_FILE_BROWSER_STORE (model)"<br>); return (PLUMA_FILE_BROWSER_STORE_RESULT_NO_CHANGE); } } while<br> (0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="2765"><td class="num" id="LN2765">2765</td><td class="line"> <span class='macro'>PLUMA_FILE_BROWSER_STORE_RESULT_NO_CHANGE)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_315<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((model)); GType __t = ((pluma_file_browser_store_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_315 = 1; else _g_boolean_var_315 =<br> 0; _g_boolean_var_315; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "PLUMA_IS_FILE_BROWSER_STORE (model)"<br>); return (PLUMA_FILE_BROWSER_STORE_RESULT_NO_CHANGE); } } while<br> (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2766"><td class="num" id="LN2766">2766</td><td class="line"> <span class='macro'>g_return_val_if_fail (iter != NULL,<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_316<br>; if (iter != ((void*)0)) _g_boolean_var_316 = 1; else _g_boolean_var_316<br> = 0; _g_boolean_var_316; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "iter != NULL"); return<br> (PLUMA_FILE_BROWSER_STORE_RESULT_NO_CHANGE); } } while (0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="2767"><td class="num" id="LN2767">2767</td><td class="line"> <span class='macro'>PLUMA_FILE_BROWSER_STORE_RESULT_NO_CHANGE)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_316<br>; if (iter != ((void*)0)) _g_boolean_var_316 = 1; else _g_boolean_var_316<br> = 0; _g_boolean_var_316; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "iter != NULL"); return<br> (PLUMA_FILE_BROWSER_STORE_RESULT_NO_CHANGE); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2768"><td class="num" id="LN2768">2768</td><td class="line"> <span class='macro'>g_return_val_if_fail (iter-&gt;user_data != NULL,<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_317<br>; if (iter-&gt;user_data != ((void*)0)) _g_boolean_var_317 = 1<br>; else _g_boolean_var_317 = 0; _g_boolean_var_317; }), 1))) {<br> } else { g_return_if_fail_warning (((gchar*) 0), ((const char<br>*) (__func__)), "iter-&gt;user_data != NULL"); return (PLUMA_FILE_BROWSER_STORE_RESULT_NO_CHANGE<br>); } } while (0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="2769"><td class="num" id="LN2769">2769</td><td class="line"> <span class='macro'>PLUMA_FILE_BROWSER_STORE_RESULT_NO_CHANGE)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_317<br>; if (iter-&gt;user_data != ((void*)0)) _g_boolean_var_317 = 1<br>; else _g_boolean_var_317 = 0; _g_boolean_var_317; }), 1))) {<br> } else { g_return_if_fail_warning (((gchar*) 0), ((const char<br>*) (__func__)), "iter-&gt;user_data != NULL"); return (PLUMA_FILE_BROWSER_STORE_RESULT_NO_CHANGE<br>); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2770"><td class="num" id="LN2770">2770</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2771"><td class="num" id="LN2771">2771</td><td class="line"> model_clear (model, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2772"><td class="num" id="LN2772">2772</td><td class="line"> set_virtual_root_from_node (model,</td></tr>
+<tr class="codeline" data-linenumber="2773"><td class="num" id="LN2773">2773</td><td class="line"> (FileBrowserNode *) (iter-&gt;user_data));</td></tr>
+<tr class="codeline" data-linenumber="2774"><td class="num" id="LN2774">2774</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2775"><td class="num" id="LN2775">2775</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2776"><td class="num" id="LN2776">2776</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2777"><td class="num" id="LN2777">2777</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2778"><td class="num" id="LN2778">2778</td><td class="line">PlumaFileBrowserStoreResult</td></tr>
+<tr class="codeline" data-linenumber="2779"><td class="num" id="LN2779">2779</td><td class="line">pluma_file_browser_store_set_virtual_root_from_string</td></tr>
+<tr class="codeline" data-linenumber="2780"><td class="num" id="LN2780">2780</td><td class="line"> (PlumaFileBrowserStore * model, gchar <span class='keyword'>const</span> *root) {</td></tr>
+<tr class="codeline" data-linenumber="2781"><td class="num" id="LN2781">2781</td><td class="line"> GFile *file;</td></tr>
+<tr class="codeline" data-linenumber="2782"><td class="num" id="LN2782">2782</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2783"><td class="num" id="LN2783">2783</td><td class="line"> <span class='macro'>g_return_val_if_fail (PLUMA_IS_FILE_BROWSER_STORE (model),<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_318<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((model)); GType __t = ((pluma_file_browser_store_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_318 = 1; else _g_boolean_var_318 =<br> 0; _g_boolean_var_318; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "PLUMA_IS_FILE_BROWSER_STORE (model)"<br>); return (PLUMA_FILE_BROWSER_STORE_RESULT_NO_CHANGE); } } while<br> (0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="2784"><td class="num" id="LN2784">2784</td><td class="line"> <span class='macro'>PLUMA_FILE_BROWSER_STORE_RESULT_NO_CHANGE)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_318<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((model)); GType __t = ((pluma_file_browser_store_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_318 = 1; else _g_boolean_var_318 =<br> 0; _g_boolean_var_318; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "PLUMA_IS_FILE_BROWSER_STORE (model)"<br>); return (PLUMA_FILE_BROWSER_STORE_RESULT_NO_CHANGE); } } while<br> (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2785"><td class="num" id="LN2785">2785</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2786"><td class="num" id="LN2786">2786</td><td class="line"> file = g_file_new_for_uri (root);</td></tr>
+<tr class="codeline" data-linenumber="2787"><td class="num" id="LN2787">2787</td><td class="line"> <span class='keyword'>if</span> (file == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="2788"><td class="num" id="LN2788">2788</td><td class="line"> g_warning (<span class='string_literal'>"Invalid uri (%s)"</span>, root);</td></tr>
+<tr class="codeline" data-linenumber="2789"><td class="num" id="LN2789">2789</td><td class="line"> <span class='keyword'>return</span> PLUMA_FILE_BROWSER_STORE_RESULT_NO_CHANGE;</td></tr>
+<tr class="codeline" data-linenumber="2790"><td class="num" id="LN2790">2790</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2791"><td class="num" id="LN2791">2791</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2792"><td class="num" id="LN2792">2792</td><td class="line"> <span class='comment'>/* Check if uri is already the virtual root */</span></td></tr>
+<tr class="codeline" data-linenumber="2793"><td class="num" id="LN2793">2793</td><td class="line"> <span class='keyword'>if</span> (model-&gt;priv-&gt;virtual_root &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="2794"><td class="num" id="LN2794">2794</td><td class="line"> g_file_equal (model-&gt;priv-&gt;virtual_root-&gt;file, file)) {</td></tr>
+<tr class="codeline" data-linenumber="2795"><td class="num" id="LN2795">2795</td><td class="line"> g_object_unref (file);</td></tr>
+<tr class="codeline" data-linenumber="2796"><td class="num" id="LN2796">2796</td><td class="line"> <span class='keyword'>return</span> PLUMA_FILE_BROWSER_STORE_RESULT_NO_CHANGE;</td></tr>
+<tr class="codeline" data-linenumber="2797"><td class="num" id="LN2797">2797</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2798"><td class="num" id="LN2798">2798</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2799"><td class="num" id="LN2799">2799</td><td class="line"> <span class='comment'>/* Check if uri is the root itself */</span></td></tr>
+<tr class="codeline" data-linenumber="2800"><td class="num" id="LN2800">2800</td><td class="line"> <span class='keyword'>if</span> (g_file_equal (model-&gt;priv-&gt;root-&gt;file, file)) {</td></tr>
+<tr class="codeline" data-linenumber="2801"><td class="num" id="LN2801">2801</td><td class="line"> g_object_unref (file);</td></tr>
+<tr class="codeline" data-linenumber="2802"><td class="num" id="LN2802">2802</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2803"><td class="num" id="LN2803">2803</td><td class="line"> <span class='comment'>/* Always clear the model before altering the nodes */</span></td></tr>
+<tr class="codeline" data-linenumber="2804"><td class="num" id="LN2804">2804</td><td class="line"> model_clear (model, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2805"><td class="num" id="LN2805">2805</td><td class="line"> set_virtual_root_from_node (model, model-&gt;priv-&gt;root);</td></tr>
+<tr class="codeline" data-linenumber="2806"><td class="num" id="LN2806">2806</td><td class="line"> <span class='keyword'>return</span> PLUMA_FILE_BROWSER_STORE_RESULT_OK;</td></tr>
+<tr class="codeline" data-linenumber="2807"><td class="num" id="LN2807">2807</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2808"><td class="num" id="LN2808">2808</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2809"><td class="num" id="LN2809">2809</td><td class="line"> <span class='keyword'>if</span> (!g_file_has_prefix (file, model-&gt;priv-&gt;root-&gt;file)) {</td></tr>
+<tr class="codeline" data-linenumber="2810"><td class="num" id="LN2810">2810</td><td class="line"> gchar *str, *str1;</td></tr>
+<tr class="codeline" data-linenumber="2811"><td class="num" id="LN2811">2811</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2812"><td class="num" id="LN2812">2812</td><td class="line"> str = g_file_get_parse_name (model-&gt;priv-&gt;root-&gt;file);</td></tr>
+<tr class="codeline" data-linenumber="2813"><td class="num" id="LN2813">2813</td><td class="line"> str1 = g_file_get_parse_name (file);</td></tr>
+<tr class="codeline" data-linenumber="2814"><td class="num" id="LN2814">2814</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2815"><td class="num" id="LN2815">2815</td><td class="line"> g_warning</td></tr>
+<tr class="codeline" data-linenumber="2816"><td class="num" id="LN2816">2816</td><td class="line"> (<span class='string_literal'>"Virtual root (%s) is not below actual root (%s)"</span>,</td></tr>
+<tr class="codeline" data-linenumber="2817"><td class="num" id="LN2817">2817</td><td class="line"> str1, str);</td></tr>
+<tr class="codeline" data-linenumber="2818"><td class="num" id="LN2818">2818</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2819"><td class="num" id="LN2819">2819</td><td class="line"> g_free (str);</td></tr>
+<tr class="codeline" data-linenumber="2820"><td class="num" id="LN2820">2820</td><td class="line"> g_free (str1);</td></tr>
+<tr class="codeline" data-linenumber="2821"><td class="num" id="LN2821">2821</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2822"><td class="num" id="LN2822">2822</td><td class="line"> g_object_unref (file);</td></tr>
+<tr class="codeline" data-linenumber="2823"><td class="num" id="LN2823">2823</td><td class="line"> <span class='keyword'>return</span> PLUMA_FILE_BROWSER_STORE_RESULT_ERROR;</td></tr>
+<tr class="codeline" data-linenumber="2824"><td class="num" id="LN2824">2824</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2825"><td class="num" id="LN2825">2825</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2826"><td class="num" id="LN2826">2826</td><td class="line"> set_virtual_root_from_file (model, file);</td></tr>
+<tr class="codeline" data-linenumber="2827"><td class="num" id="LN2827">2827</td><td class="line"> g_object_unref (file);</td></tr>
+<tr class="codeline" data-linenumber="2828"><td class="num" id="LN2828">2828</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2829"><td class="num" id="LN2829">2829</td><td class="line"> <span class='keyword'>return</span> PLUMA_FILE_BROWSER_STORE_RESULT_OK;</td></tr>
+<tr class="codeline" data-linenumber="2830"><td class="num" id="LN2830">2830</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2831"><td class="num" id="LN2831">2831</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2832"><td class="num" id="LN2832">2832</td><td class="line">PlumaFileBrowserStoreResult</td></tr>
+<tr class="codeline" data-linenumber="2833"><td class="num" id="LN2833">2833</td><td class="line">pluma_file_browser_store_set_virtual_root_top (PlumaFileBrowserStore *</td></tr>
+<tr class="codeline" data-linenumber="2834"><td class="num" id="LN2834">2834</td><td class="line"> model)</td></tr>
+<tr class="codeline" data-linenumber="2835"><td class="num" id="LN2835">2835</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2836"><td class="num" id="LN2836">2836</td><td class="line"> <span class='macro'>g_return_val_if_fail (PLUMA_IS_FILE_BROWSER_STORE (model),<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_319<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((model)); GType __t = ((pluma_file_browser_store_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_319 = 1; else _g_boolean_var_319 =<br> 0; _g_boolean_var_319; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "PLUMA_IS_FILE_BROWSER_STORE (model)"<br>); return (PLUMA_FILE_BROWSER_STORE_RESULT_NO_CHANGE); } } while<br> (0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="2837"><td class="num" id="LN2837">2837</td><td class="line"> <span class='macro'>PLUMA_FILE_BROWSER_STORE_RESULT_NO_CHANGE)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_319<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((model)); GType __t = ((pluma_file_browser_store_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_319 = 1; else _g_boolean_var_319 =<br> 0; _g_boolean_var_319; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "PLUMA_IS_FILE_BROWSER_STORE (model)"<br>); return (PLUMA_FILE_BROWSER_STORE_RESULT_NO_CHANGE); } } while<br> (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2838"><td class="num" id="LN2838">2838</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2839"><td class="num" id="LN2839">2839</td><td class="line"> <span class='keyword'>if</span> (model-&gt;priv-&gt;virtual_root == model-&gt;priv-&gt;root)</td></tr>
+<tr class="codeline" data-linenumber="2840"><td class="num" id="LN2840">2840</td><td class="line"> <span class='keyword'>return</span> PLUMA_FILE_BROWSER_STORE_RESULT_NO_CHANGE;</td></tr>
+<tr class="codeline" data-linenumber="2841"><td class="num" id="LN2841">2841</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2842"><td class="num" id="LN2842">2842</td><td class="line"> model_clear (model, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2843"><td class="num" id="LN2843">2843</td><td class="line"> set_virtual_root_from_node (model, model-&gt;priv-&gt;root);</td></tr>
+<tr class="codeline" data-linenumber="2844"><td class="num" id="LN2844">2844</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2845"><td class="num" id="LN2845">2845</td><td class="line"> <span class='keyword'>return</span> PLUMA_FILE_BROWSER_STORE_RESULT_OK;</td></tr>
+<tr class="codeline" data-linenumber="2846"><td class="num" id="LN2846">2846</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2847"><td class="num" id="LN2847">2847</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2848"><td class="num" id="LN2848">2848</td><td class="line">PlumaFileBrowserStoreResult</td></tr>
+<tr class="codeline" data-linenumber="2849"><td class="num" id="LN2849">2849</td><td class="line">pluma_file_browser_store_set_virtual_root_up (PlumaFileBrowserStore *</td></tr>
+<tr class="codeline" data-linenumber="2850"><td class="num" id="LN2850">2850</td><td class="line"> model)</td></tr>
+<tr class="codeline" data-linenumber="2851"><td class="num" id="LN2851">2851</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2852"><td class="num" id="LN2852">2852</td><td class="line"> <span class='macro'>g_return_val_if_fail (PLUMA_IS_FILE_BROWSER_STORE (model),<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_320<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((model)); GType __t = ((pluma_file_browser_store_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_320 = 1; else _g_boolean_var_320 =<br> 0; _g_boolean_var_320; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "PLUMA_IS_FILE_BROWSER_STORE (model)"<br>); return (PLUMA_FILE_BROWSER_STORE_RESULT_NO_CHANGE); } } while<br> (0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="2853"><td class="num" id="LN2853">2853</td><td class="line"> <span class='macro'>PLUMA_FILE_BROWSER_STORE_RESULT_NO_CHANGE)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_320<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((model)); GType __t = ((pluma_file_browser_store_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_320 = 1; else _g_boolean_var_320 =<br> 0; _g_boolean_var_320; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "PLUMA_IS_FILE_BROWSER_STORE (model)"<br>); return (PLUMA_FILE_BROWSER_STORE_RESULT_NO_CHANGE); } } while<br> (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2854"><td class="num" id="LN2854">2854</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2855"><td class="num" id="LN2855">2855</td><td class="line"> <span class='keyword'>if</span> (model-&gt;priv-&gt;virtual_root == model-&gt;priv-&gt;root)</td></tr>
+<tr class="codeline" data-linenumber="2856"><td class="num" id="LN2856">2856</td><td class="line"> <span class='keyword'>return</span> PLUMA_FILE_BROWSER_STORE_RESULT_NO_CHANGE;</td></tr>
+<tr class="codeline" data-linenumber="2857"><td class="num" id="LN2857">2857</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2858"><td class="num" id="LN2858">2858</td><td class="line"> model_clear (model, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2859"><td class="num" id="LN2859">2859</td><td class="line"> set_virtual_root_from_node (model,</td></tr>
+<tr class="codeline" data-linenumber="2860"><td class="num" id="LN2860">2860</td><td class="line"> model-&gt;priv-&gt;virtual_root-&gt;parent);</td></tr>
+<tr class="codeline" data-linenumber="2861"><td class="num" id="LN2861">2861</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2862"><td class="num" id="LN2862">2862</td><td class="line"> <span class='keyword'>return</span> PLUMA_FILE_BROWSER_STORE_RESULT_OK;</td></tr>
+<tr class="codeline" data-linenumber="2863"><td class="num" id="LN2863">2863</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2864"><td class="num" id="LN2864">2864</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2865"><td class="num" id="LN2865">2865</td><td class="line">gboolean</td></tr>
+<tr class="codeline" data-linenumber="2866"><td class="num" id="LN2866">2866</td><td class="line">pluma_file_browser_store_get_iter_virtual_root (PlumaFileBrowserStore *</td></tr>
+<tr class="codeline" data-linenumber="2867"><td class="num" id="LN2867">2867</td><td class="line"> model, GtkTreeIter * iter)</td></tr>
+<tr class="codeline" data-linenumber="2868"><td class="num" id="LN2868">2868</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2869"><td class="num" id="LN2869">2869</td><td class="line"> <span class='macro'>g_return_val_if_fail (PLUMA_IS_FILE_BROWSER_STORE (model), FALSE)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_321<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((model)); GType __t = ((pluma_file_browser_store_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_321 = 1; else _g_boolean_var_321 =<br> 0; _g_boolean_var_321; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "PLUMA_IS_FILE_BROWSER_STORE (model)"<br>); return ((0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2870"><td class="num" id="LN2870">2870</td><td class="line"> <span class='macro'>g_return_val_if_fail (iter != NULL, FALSE)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_322<br>; if (iter != ((void*)0)) _g_boolean_var_322 = 1; else _g_boolean_var_322<br> = 0; _g_boolean_var_322; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "iter != NULL"); return<br> ((0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2871"><td class="num" id="LN2871">2871</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2872"><td class="num" id="LN2872">2872</td><td class="line"> <span class='keyword'>if</span> (model-&gt;priv-&gt;virtual_root == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="2873"><td class="num" id="LN2873">2873</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2874"><td class="num" id="LN2874">2874</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2875"><td class="num" id="LN2875">2875</td><td class="line"> iter-&gt;user_data = model-&gt;priv-&gt;virtual_root;</td></tr>
+<tr class="codeline" data-linenumber="2876"><td class="num" id="LN2876">2876</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2877"><td class="num" id="LN2877">2877</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2878"><td class="num" id="LN2878">2878</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2879"><td class="num" id="LN2879">2879</td><td class="line">gboolean</td></tr>
+<tr class="codeline" data-linenumber="2880"><td class="num" id="LN2880">2880</td><td class="line">pluma_file_browser_store_get_iter_root (PlumaFileBrowserStore * model,</td></tr>
+<tr class="codeline" data-linenumber="2881"><td class="num" id="LN2881">2881</td><td class="line"> GtkTreeIter * iter)</td></tr>
+<tr class="codeline" data-linenumber="2882"><td class="num" id="LN2882">2882</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2883"><td class="num" id="LN2883">2883</td><td class="line"> <span class='macro'>g_return_val_if_fail (PLUMA_IS_FILE_BROWSER_STORE (model), FALSE)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_323<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((model)); GType __t = ((pluma_file_browser_store_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_323 = 1; else _g_boolean_var_323 =<br> 0; _g_boolean_var_323; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "PLUMA_IS_FILE_BROWSER_STORE (model)"<br>); return ((0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2884"><td class="num" id="LN2884">2884</td><td class="line"> <span class='macro'>g_return_val_if_fail (iter != NULL, FALSE)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_324<br>; if (iter != ((void*)0)) _g_boolean_var_324 = 1; else _g_boolean_var_324<br> = 0; _g_boolean_var_324; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "iter != NULL"); return<br> ((0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2885"><td class="num" id="LN2885">2885</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2886"><td class="num" id="LN2886">2886</td><td class="line"> <span class='keyword'>if</span> (model-&gt;priv-&gt;root == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="2887"><td class="num" id="LN2887">2887</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2888"><td class="num" id="LN2888">2888</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2889"><td class="num" id="LN2889">2889</td><td class="line"> iter-&gt;user_data = model-&gt;priv-&gt;root;</td></tr>
+<tr class="codeline" data-linenumber="2890"><td class="num" id="LN2890">2890</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2891"><td class="num" id="LN2891">2891</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2892"><td class="num" id="LN2892">2892</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2893"><td class="num" id="LN2893">2893</td><td class="line">gboolean</td></tr>
+<tr class="codeline" data-linenumber="2894"><td class="num" id="LN2894">2894</td><td class="line">pluma_file_browser_store_iter_equal (PlumaFileBrowserStore * model,</td></tr>
+<tr class="codeline" data-linenumber="2895"><td class="num" id="LN2895">2895</td><td class="line"> GtkTreeIter * iter1,</td></tr>
+<tr class="codeline" data-linenumber="2896"><td class="num" id="LN2896">2896</td><td class="line"> GtkTreeIter * iter2)</td></tr>
+<tr class="codeline" data-linenumber="2897"><td class="num" id="LN2897">2897</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2898"><td class="num" id="LN2898">2898</td><td class="line"> <span class='macro'>g_return_val_if_fail (PLUMA_IS_FILE_BROWSER_STORE (model), FALSE)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_325<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((model)); GType __t = ((pluma_file_browser_store_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_325 = 1; else _g_boolean_var_325 =<br> 0; _g_boolean_var_325; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "PLUMA_IS_FILE_BROWSER_STORE (model)"<br>); return ((0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2899"><td class="num" id="LN2899">2899</td><td class="line"> <span class='macro'>g_return_val_if_fail (iter1 != NULL, FALSE)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_326<br>; if (iter1 != ((void*)0)) _g_boolean_var_326 = 1; else _g_boolean_var_326<br> = 0; _g_boolean_var_326; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "iter1 != NULL");<br> return ((0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2900"><td class="num" id="LN2900">2900</td><td class="line"> <span class='macro'>g_return_val_if_fail (iter2 != NULL, FALSE)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_327<br>; if (iter2 != ((void*)0)) _g_boolean_var_327 = 1; else _g_boolean_var_327<br> = 0; _g_boolean_var_327; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "iter2 != NULL");<br> return ((0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2901"><td class="num" id="LN2901">2901</td><td class="line"> <span class='macro'>g_return_val_if_fail (iter1-&gt;user_data != NULL, FALSE)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_328<br>; if (iter1-&gt;user_data != ((void*)0)) _g_boolean_var_328 =<br> 1; else _g_boolean_var_328 = 0; _g_boolean_var_328; }), 1)))<br> { } else { g_return_if_fail_warning (((gchar*) 0), ((const char<br>*) (__func__)), "iter1-&gt;user_data != NULL"); return ((0));<br> } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2902"><td class="num" id="LN2902">2902</td><td class="line"> <span class='macro'>g_return_val_if_fail (iter2-&gt;user_data != NULL, FALSE)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_329<br>; if (iter2-&gt;user_data != ((void*)0)) _g_boolean_var_329 =<br> 1; else _g_boolean_var_329 = 0; _g_boolean_var_329; }), 1)))<br> { } else { g_return_if_fail_warning (((gchar*) 0), ((const char<br>*) (__func__)), "iter2-&gt;user_data != NULL"); return ((0));<br> } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2903"><td class="num" id="LN2903">2903</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2904"><td class="num" id="LN2904">2904</td><td class="line"> <span class='keyword'>return</span> (iter1-&gt;user_data == iter2-&gt;user_data);</td></tr>
+<tr class="codeline" data-linenumber="2905"><td class="num" id="LN2905">2905</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2906"><td class="num" id="LN2906">2906</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2907"><td class="num" id="LN2907">2907</td><td class="line"><span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="2908"><td class="num" id="LN2908">2908</td><td class="line">pluma_file_browser_store_cancel_mount_operation (PlumaFileBrowserStore *store)</td></tr>
+<tr class="codeline" data-linenumber="2909"><td class="num" id="LN2909">2909</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2910"><td class="num" id="LN2910">2910</td><td class="line"> <span class='macro'>g_return_if_fail (PLUMA_IS_FILE_BROWSER_STORE (store))<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_330<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((store)); GType __t = ((pluma_file_browser_store_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_330 = 1; else _g_boolean_var_330 =<br> 0; _g_boolean_var_330; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "PLUMA_IS_FILE_BROWSER_STORE (store)"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2911"><td class="num" id="LN2911">2911</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2912"><td class="num" id="LN2912">2912</td><td class="line"> cancel_mount_operation (store);</td></tr>
+<tr class="codeline" data-linenumber="2913"><td class="num" id="LN2913">2913</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2914"><td class="num" id="LN2914">2914</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2915"><td class="num" id="LN2915">2915</td><td class="line">PlumaFileBrowserStoreResult</td></tr>
+<tr class="codeline" data-linenumber="2916"><td class="num" id="LN2916">2916</td><td class="line">pluma_file_browser_store_set_root_and_virtual_root (PlumaFileBrowserStore *</td></tr>
+<tr class="codeline" data-linenumber="2917"><td class="num" id="LN2917">2917</td><td class="line"> model,</td></tr>
+<tr class="codeline" data-linenumber="2918"><td class="num" id="LN2918">2918</td><td class="line"> gchar <span class='keyword'>const</span> *root,</td></tr>
+<tr class="codeline" data-linenumber="2919"><td class="num" id="LN2919">2919</td><td class="line"> gchar <span class='keyword'>const</span> *virtual_root)</td></tr>
+<tr class="codeline" data-linenumber="2920"><td class="num" id="LN2920">2920</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2921"><td class="num" id="LN2921">2921</td><td class="line"> GFile * file = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2922"><td class="num" id="LN2922">2922</td><td class="line"> GFile * vfile = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2923"><td class="num" id="LN2923">2923</td><td class="line"> FileBrowserNode * node;</td></tr>
+<tr class="codeline" data-linenumber="2924"><td class="num" id="LN2924">2924</td><td class="line"> gboolean equal = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2925"><td class="num" id="LN2925">2925</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2926"><td class="num" id="LN2926">2926</td><td class="line"> <span class='macro'>g_return_val_if_fail (PLUMA_IS_FILE_BROWSER_STORE (model),<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_331<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((model)); GType __t = ((pluma_file_browser_store_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_331 = 1; else _g_boolean_var_331 =<br> 0; _g_boolean_var_331; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "PLUMA_IS_FILE_BROWSER_STORE (model)"<br>); return (PLUMA_FILE_BROWSER_STORE_RESULT_NO_CHANGE); } } while<br> (0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="2927"><td class="num" id="LN2927">2927</td><td class="line"> <span class='macro'>PLUMA_FILE_BROWSER_STORE_RESULT_NO_CHANGE)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_331<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((model)); GType __t = ((pluma_file_browser_store_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_331 = 1; else _g_boolean_var_331 =<br> 0; _g_boolean_var_331; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "PLUMA_IS_FILE_BROWSER_STORE (model)"<br>); return (PLUMA_FILE_BROWSER_STORE_RESULT_NO_CHANGE); } } while<br> (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2928"><td class="num" id="LN2928">2928</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2929"><td class="num" id="LN2929">2929</td><td class="line"> <span class='keyword'>if</span> (root == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> &amp;&amp; model-&gt;priv-&gt;root == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="2930"><td class="num" id="LN2930">2930</td><td class="line"> <span class='keyword'>return</span> PLUMA_FILE_BROWSER_STORE_RESULT_NO_CHANGE;</td></tr>
+<tr class="codeline" data-linenumber="2931"><td class="num" id="LN2931">2931</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2932"><td class="num" id="LN2932">2932</td><td class="line"> <span class='keyword'>if</span> (root != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="2933"><td class="num" id="LN2933">2933</td><td class="line"> file = g_file_new_for_uri (root);</td></tr>
+<tr class="codeline" data-linenumber="2934"><td class="num" id="LN2934">2934</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2935"><td class="num" id="LN2935">2935</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2936"><td class="num" id="LN2936">2936</td><td class="line"> <span class='keyword'>if</span> (root != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> &amp;&amp; model-&gt;priv-&gt;root != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="2937"><td class="num" id="LN2937">2937</td><td class="line"> equal = g_file_equal (file, model-&gt;priv-&gt;root-&gt;file);</td></tr>
+<tr class="codeline" data-linenumber="2938"><td class="num" id="LN2938">2938</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2939"><td class="num" id="LN2939">2939</td><td class="line"> <span class='keyword'>if</span> (equal &amp;&amp; virtual_root == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="2940"><td class="num" id="LN2940">2940</td><td class="line"> g_object_unref (file);</td></tr>
+<tr class="codeline" data-linenumber="2941"><td class="num" id="LN2941">2941</td><td class="line"> <span class='keyword'>return</span> PLUMA_FILE_BROWSER_STORE_RESULT_NO_CHANGE;</td></tr>
+<tr class="codeline" data-linenumber="2942"><td class="num" id="LN2942">2942</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2943"><td class="num" id="LN2943">2943</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2944"><td class="num" id="LN2944">2944</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2945"><td class="num" id="LN2945">2945</td><td class="line"> <span class='keyword'>if</span> (virtual_root) {</td></tr>
+<tr class="codeline" data-linenumber="2946"><td class="num" id="LN2946">2946</td><td class="line"> vfile = g_file_new_for_uri (virtual_root);</td></tr>
+<tr class="codeline" data-linenumber="2947"><td class="num" id="LN2947">2947</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2948"><td class="num" id="LN2948">2948</td><td class="line"> <span class='keyword'>if</span> (equal &amp;&amp; g_file_equal (vfile, model-&gt;priv-&gt;virtual_root-&gt;file)) {</td></tr>
+<tr class="codeline" data-linenumber="2949"><td class="num" id="LN2949">2949</td><td class="line"> <span class='keyword'>if</span> (file)</td></tr>
+<tr class="codeline" data-linenumber="2950"><td class="num" id="LN2950">2950</td><td class="line"> g_object_unref (file);</td></tr>
+<tr class="codeline" data-linenumber="2951"><td class="num" id="LN2951">2951</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2952"><td class="num" id="LN2952">2952</td><td class="line"> g_object_unref (vfile);</td></tr>
+<tr class="codeline" data-linenumber="2953"><td class="num" id="LN2953">2953</td><td class="line"> <span class='keyword'>return</span> PLUMA_FILE_BROWSER_STORE_RESULT_NO_CHANGE;</td></tr>
+<tr class="codeline" data-linenumber="2954"><td class="num" id="LN2954">2954</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2955"><td class="num" id="LN2955">2955</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2956"><td class="num" id="LN2956">2956</td><td class="line"> g_object_unref (vfile);</td></tr>
+<tr class="codeline" data-linenumber="2957"><td class="num" id="LN2957">2957</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2958"><td class="num" id="LN2958">2958</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2959"><td class="num" id="LN2959">2959</td><td class="line"> <span class='comment'>/* make sure to cancel any previous mount operations */</span></td></tr>
+<tr class="codeline" data-linenumber="2960"><td class="num" id="LN2960">2960</td><td class="line"> cancel_mount_operation (model);</td></tr>
+<tr class="codeline" data-linenumber="2961"><td class="num" id="LN2961">2961</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2962"><td class="num" id="LN2962">2962</td><td class="line"> <span class='comment'>/* Always clear the model before altering the nodes */</span></td></tr>
+<tr class="codeline" data-linenumber="2963"><td class="num" id="LN2963">2963</td><td class="line"> model_clear (model, <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2964"><td class="num" id="LN2964">2964</td><td class="line"> file_browser_node_free (model, model-&gt;priv-&gt;root);</td></tr>
+<tr class="codeline" data-linenumber="2965"><td class="num" id="LN2965">2965</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2966"><td class="num" id="LN2966">2966</td><td class="line"> model-&gt;priv-&gt;root = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2967"><td class="num" id="LN2967">2967</td><td class="line"> model-&gt;priv-&gt;virtual_root = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2968"><td class="num" id="LN2968">2968</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2969"><td class="num" id="LN2969">2969</td><td class="line"> <span class='keyword'>if</span> (file != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="2970"><td class="num" id="LN2970">2970</td><td class="line"> <span class='comment'>/* Create the root node */</span></td></tr>
+<tr class="codeline" data-linenumber="2971"><td class="num" id="LN2971">2971</td><td class="line"> node = file_browser_node_dir_new (model, file, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2972"><td class="num" id="LN2972">2972</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2973"><td class="num" id="LN2973">2973</td><td class="line"> g_object_unref (file);</td></tr>
+<tr class="codeline" data-linenumber="2974"><td class="num" id="LN2974">2974</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2975"><td class="num" id="LN2975">2975</td><td class="line"> model-&gt;priv-&gt;root = node;</td></tr>
+<tr class="codeline" data-linenumber="2976"><td class="num" id="LN2976">2976</td><td class="line"> <span class='keyword'>return</span> model_mount_root (model, virtual_root);</td></tr>
+<tr class="codeline" data-linenumber="2977"><td class="num" id="LN2977">2977</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="2978"><td class="num" id="LN2978">2978</td><td class="line"> g_object_notify (<span class='macro'>G_OBJECT (model)<span class='macro_popup'>((((GObject*) (void *) ((model)))))</span></span>, <span class='string_literal'>"root"</span>);</td></tr>
+<tr class="codeline" data-linenumber="2979"><td class="num" id="LN2979">2979</td><td class="line"> g_object_notify (<span class='macro'>G_OBJECT (model)<span class='macro_popup'>((((GObject*) (void *) ((model)))))</span></span>, <span class='string_literal'>"virtual-root"</span>);</td></tr>
+<tr class="codeline" data-linenumber="2980"><td class="num" id="LN2980">2980</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="2981"><td class="num" id="LN2981">2981</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2982"><td class="num" id="LN2982">2982</td><td class="line"> <span class='keyword'>return</span> PLUMA_FILE_BROWSER_STORE_RESULT_OK;</td></tr>
+<tr class="codeline" data-linenumber="2983"><td class="num" id="LN2983">2983</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2984"><td class="num" id="LN2984">2984</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2985"><td class="num" id="LN2985">2985</td><td class="line">PlumaFileBrowserStoreResult</td></tr>
+<tr class="codeline" data-linenumber="2986"><td class="num" id="LN2986">2986</td><td class="line">pluma_file_browser_store_set_root (PlumaFileBrowserStore * model,</td></tr>
+<tr class="codeline" data-linenumber="2987"><td class="num" id="LN2987">2987</td><td class="line"> gchar <span class='keyword'>const</span> *root)</td></tr>
+<tr class="codeline" data-linenumber="2988"><td class="num" id="LN2988">2988</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2989"><td class="num" id="LN2989">2989</td><td class="line"> <span class='macro'>g_return_val_if_fail (PLUMA_IS_FILE_BROWSER_STORE (model),<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_332<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((model)); GType __t = ((pluma_file_browser_store_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_332 = 1; else _g_boolean_var_332 =<br> 0; _g_boolean_var_332; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "PLUMA_IS_FILE_BROWSER_STORE (model)"<br>); return (PLUMA_FILE_BROWSER_STORE_RESULT_NO_CHANGE); } } while<br> (0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="2990"><td class="num" id="LN2990">2990</td><td class="line"> <span class='macro'>PLUMA_FILE_BROWSER_STORE_RESULT_NO_CHANGE)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_332<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((model)); GType __t = ((pluma_file_browser_store_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_332 = 1; else _g_boolean_var_332 =<br> 0; _g_boolean_var_332; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "PLUMA_IS_FILE_BROWSER_STORE (model)"<br>); return (PLUMA_FILE_BROWSER_STORE_RESULT_NO_CHANGE); } } while<br> (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="2991"><td class="num" id="LN2991">2991</td><td class="line"> <span class='keyword'>return</span> pluma_file_browser_store_set_root_and_virtual_root (model,</td></tr>
+<tr class="codeline" data-linenumber="2992"><td class="num" id="LN2992">2992</td><td class="line"> root,</td></tr>
+<tr class="codeline" data-linenumber="2993"><td class="num" id="LN2993">2993</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="2994"><td class="num" id="LN2994">2994</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="2995"><td class="num" id="LN2995">2995</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="2996"><td class="num" id="LN2996">2996</td><td class="line">gchar *</td></tr>
+<tr class="codeline" data-linenumber="2997"><td class="num" id="LN2997">2997</td><td class="line">pluma_file_browser_store_get_root (PlumaFileBrowserStore * model)</td></tr>
+<tr class="codeline" data-linenumber="2998"><td class="num" id="LN2998">2998</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="2999"><td class="num" id="LN2999">2999</td><td class="line"> <span class='macro'>g_return_val_if_fail (PLUMA_IS_FILE_BROWSER_STORE (model), NULL)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_333<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((model)); GType __t = ((pluma_file_browser_store_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_333 = 1; else _g_boolean_var_333 =<br> 0; _g_boolean_var_333; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "PLUMA_IS_FILE_BROWSER_STORE (model)"<br>); return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3000"><td class="num" id="LN3000">3000</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3001"><td class="num" id="LN3001">3001</td><td class="line"> <span class='keyword'>if</span> (model-&gt;priv-&gt;root == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> || model-&gt;priv-&gt;root-&gt;file == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="3002"><td class="num" id="LN3002">3002</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3003"><td class="num" id="LN3003">3003</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="3004"><td class="num" id="LN3004">3004</td><td class="line"> <span class='keyword'>return</span> g_file_get_uri (model-&gt;priv-&gt;root-&gt;file);</td></tr>
+<tr class="codeline" data-linenumber="3005"><td class="num" id="LN3005">3005</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3006"><td class="num" id="LN3006">3006</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3007"><td class="num" id="LN3007">3007</td><td class="line">gchar *</td></tr>
+<tr class="codeline" data-linenumber="3008"><td class="num" id="LN3008">3008</td><td class="line">pluma_file_browser_store_get_virtual_root (PlumaFileBrowserStore * model)</td></tr>
+<tr class="codeline" data-linenumber="3009"><td class="num" id="LN3009">3009</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3010"><td class="num" id="LN3010">3010</td><td class="line"> <span class='macro'>g_return_val_if_fail (PLUMA_IS_FILE_BROWSER_STORE (model), NULL)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_334<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((model)); GType __t = ((pluma_file_browser_store_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_334 = 1; else _g_boolean_var_334 =<br> 0; _g_boolean_var_334; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "PLUMA_IS_FILE_BROWSER_STORE (model)"<br>); return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3011"><td class="num" id="LN3011">3011</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3012"><td class="num" id="LN3012">3012</td><td class="line"> <span class='keyword'>if</span> (model-&gt;priv-&gt;virtual_root == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> || model-&gt;priv-&gt;virtual_root-&gt;file == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="3013"><td class="num" id="LN3013">3013</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3014"><td class="num" id="LN3014">3014</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="3015"><td class="num" id="LN3015">3015</td><td class="line"> <span class='keyword'>return</span> g_file_get_uri (model-&gt;priv-&gt;virtual_root-&gt;file);</td></tr>
+<tr class="codeline" data-linenumber="3016"><td class="num" id="LN3016">3016</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3017"><td class="num" id="LN3017">3017</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3018"><td class="num" id="LN3018">3018</td><td class="line"><span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="3019"><td class="num" id="LN3019">3019</td><td class="line">_pluma_file_browser_store_iter_expanded (PlumaFileBrowserStore * model,</td></tr>
+<tr class="codeline" data-linenumber="3020"><td class="num" id="LN3020">3020</td><td class="line"> GtkTreeIter * iter)</td></tr>
+<tr class="codeline" data-linenumber="3021"><td class="num" id="LN3021">3021</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3022"><td class="num" id="LN3022">3022</td><td class="line"> FileBrowserNode *node;</td></tr>
+<tr class="codeline" data-linenumber="3023"><td class="num" id="LN3023">3023</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3024"><td class="num" id="LN3024">3024</td><td class="line"> <span class='macro'>g_return_if_fail (PLUMA_IS_FILE_BROWSER_STORE (model))<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_335<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((model)); GType __t = ((pluma_file_browser_store_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_335 = 1; else _g_boolean_var_335 =<br> 0; _g_boolean_var_335; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "PLUMA_IS_FILE_BROWSER_STORE (model)"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3025"><td class="num" id="LN3025">3025</td><td class="line"> <span class='macro'>g_return_if_fail (iter != NULL)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_336<br>; if (iter != ((void*)0)) _g_boolean_var_336 = 1; else _g_boolean_var_336<br> = 0; _g_boolean_var_336; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "iter != NULL"); return<br>; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3026"><td class="num" id="LN3026">3026</td><td class="line"> <span class='macro'>g_return_if_fail (iter-&gt;user_data != NULL)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_337<br>; if (iter-&gt;user_data != ((void*)0)) _g_boolean_var_337 = 1<br>; else _g_boolean_var_337 = 0; _g_boolean_var_337; }), 1))) {<br> } else { g_return_if_fail_warning (((gchar*) 0), ((const char<br>*) (__func__)), "iter-&gt;user_data != NULL"); return; } } while<br> (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3027"><td class="num" id="LN3027">3027</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3028"><td class="num" id="LN3028">3028</td><td class="line"> node = (FileBrowserNode *) (iter-&gt;user_data);</td></tr>
+<tr class="codeline" data-linenumber="3029"><td class="num" id="LN3029">3029</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3030"><td class="num" id="LN3030">3030</td><td class="line"> <span class='keyword'>if</span> (<span class='macro'>NODE_IS_DIR (node)<span class='macro_popup'>(((node)-&gt;flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_DIRECTORY<br>))</span></span> &amp;&amp; !<span class='macro'>NODE_LOADED (node)<span class='macro_popup'>(((node)-&gt;flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_LOADED<br>))</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3031"><td class="num" id="LN3031">3031</td><td class="line"> <span class='comment'>/* Load it now */</span></td></tr>
+<tr class="codeline" data-linenumber="3032"><td class="num" id="LN3032">3032</td><td class="line"> model_load_directory (model, node);</td></tr>
+<tr class="codeline" data-linenumber="3033"><td class="num" id="LN3033">3033</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3034"><td class="num" id="LN3034">3034</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3035"><td class="num" id="LN3035">3035</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3036"><td class="num" id="LN3036">3036</td><td class="line"><span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="3037"><td class="num" id="LN3037">3037</td><td class="line">_pluma_file_browser_store_iter_collapsed (PlumaFileBrowserStore * model,</td></tr>
+<tr class="codeline" data-linenumber="3038"><td class="num" id="LN3038">3038</td><td class="line"> GtkTreeIter * iter)</td></tr>
+<tr class="codeline" data-linenumber="3039"><td class="num" id="LN3039">3039</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3040"><td class="num" id="LN3040">3040</td><td class="line"> FileBrowserNode *node;</td></tr>
+<tr class="codeline" data-linenumber="3041"><td class="num" id="LN3041">3041</td><td class="line"> GSList *item;</td></tr>
+<tr class="codeline" data-linenumber="3042"><td class="num" id="LN3042">3042</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3043"><td class="num" id="LN3043">3043</td><td class="line"> <span class='macro'>g_return_if_fail (PLUMA_IS_FILE_BROWSER_STORE (model))<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_338<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((model)); GType __t = ((pluma_file_browser_store_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_338 = 1; else _g_boolean_var_338 =<br> 0; _g_boolean_var_338; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "PLUMA_IS_FILE_BROWSER_STORE (model)"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3044"><td class="num" id="LN3044">3044</td><td class="line"> <span class='macro'>g_return_if_fail (iter != NULL)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_339<br>; if (iter != ((void*)0)) _g_boolean_var_339 = 1; else _g_boolean_var_339<br> = 0; _g_boolean_var_339; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "iter != NULL"); return<br>; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3045"><td class="num" id="LN3045">3045</td><td class="line"> <span class='macro'>g_return_if_fail (iter-&gt;user_data != NULL)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_340<br>; if (iter-&gt;user_data != ((void*)0)) _g_boolean_var_340 = 1<br>; else _g_boolean_var_340 = 0; _g_boolean_var_340; }), 1))) {<br> } else { g_return_if_fail_warning (((gchar*) 0), ((const char<br>*) (__func__)), "iter-&gt;user_data != NULL"); return; } } while<br> (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3046"><td class="num" id="LN3046">3046</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3047"><td class="num" id="LN3047">3047</td><td class="line"> node = (FileBrowserNode *) (iter-&gt;user_data);</td></tr>
+<tr class="codeline" data-linenumber="3048"><td class="num" id="LN3048">3048</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3049"><td class="num" id="LN3049">3049</td><td class="line"> <span class='keyword'>if</span> (<span class='macro'>NODE_IS_DIR (node)<span class='macro_popup'>(((node)-&gt;flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_DIRECTORY<br>))</span></span> &amp;&amp; <span class='macro'>NODE_LOADED (node)<span class='macro_popup'>(((node)-&gt;flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_LOADED<br>))</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3050"><td class="num" id="LN3050">3050</td><td class="line"> <span class='comment'>/* Unload children of the children, keeping 1 depth in cache */</span></td></tr>
+<tr class="codeline" data-linenumber="3051"><td class="num" id="LN3051">3051</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3052"><td class="num" id="LN3052">3052</td><td class="line"> <span class='keyword'>for</span> (item = <span class='macro'>FILE_BROWSER_NODE_DIR (node)<span class='macro_popup'>((FileBrowserNodeDir *)(node))</span></span>-&gt;children; item;</td></tr>
+<tr class="codeline" data-linenumber="3053"><td class="num" id="LN3053">3053</td><td class="line"> item = item-&gt;next) {</td></tr>
+<tr class="codeline" data-linenumber="3054"><td class="num" id="LN3054">3054</td><td class="line"> node = (FileBrowserNode *) (item-&gt;data);</td></tr>
+<tr class="codeline" data-linenumber="3055"><td class="num" id="LN3055">3055</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3056"><td class="num" id="LN3056">3056</td><td class="line"> <span class='keyword'>if</span> (<span class='macro'>NODE_IS_DIR (node)<span class='macro_popup'>(((node)-&gt;flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_DIRECTORY<br>))</span></span> &amp;&amp; <span class='macro'>NODE_LOADED (node)<span class='macro_popup'>(((node)-&gt;flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_LOADED<br>))</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3057"><td class="num" id="LN3057">3057</td><td class="line"> file_browser_node_unload (model, node,</td></tr>
+<tr class="codeline" data-linenumber="3058"><td class="num" id="LN3058">3058</td><td class="line"> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3059"><td class="num" id="LN3059">3059</td><td class="line"> model_check_dummy (model, node);</td></tr>
+<tr class="codeline" data-linenumber="3060"><td class="num" id="LN3060">3060</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3061"><td class="num" id="LN3061">3061</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3062"><td class="num" id="LN3062">3062</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3063"><td class="num" id="LN3063">3063</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3064"><td class="num" id="LN3064">3064</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3065"><td class="num" id="LN3065">3065</td><td class="line">PlumaFileBrowserStoreFilterMode</td></tr>
+<tr class="codeline" data-linenumber="3066"><td class="num" id="LN3066">3066</td><td class="line">pluma_file_browser_store_get_filter_mode (PlumaFileBrowserStore * model)</td></tr>
+<tr class="codeline" data-linenumber="3067"><td class="num" id="LN3067">3067</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3068"><td class="num" id="LN3068">3068</td><td class="line"> <span class='keyword'>return</span> model-&gt;priv-&gt;filter_mode;</td></tr>
+<tr class="codeline" data-linenumber="3069"><td class="num" id="LN3069">3069</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3070"><td class="num" id="LN3070">3070</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3071"><td class="num" id="LN3071">3071</td><td class="line"><span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="3072"><td class="num" id="LN3072">3072</td><td class="line">pluma_file_browser_store_set_filter_mode (PlumaFileBrowserStore * model,</td></tr>
+<tr class="codeline" data-linenumber="3073"><td class="num" id="LN3073">3073</td><td class="line"> PlumaFileBrowserStoreFilterMode</td></tr>
+<tr class="codeline" data-linenumber="3074"><td class="num" id="LN3074">3074</td><td class="line"> mode)</td></tr>
+<tr class="codeline" data-linenumber="3075"><td class="num" id="LN3075">3075</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3076"><td class="num" id="LN3076">3076</td><td class="line"> <span class='macro'>g_return_if_fail (PLUMA_IS_FILE_BROWSER_STORE (model))<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_341<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((model)); GType __t = ((pluma_file_browser_store_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_341 = 1; else _g_boolean_var_341 =<br> 0; _g_boolean_var_341; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "PLUMA_IS_FILE_BROWSER_STORE (model)"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3077"><td class="num" id="LN3077">3077</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3078"><td class="num" id="LN3078">3078</td><td class="line"> <span class='keyword'>if</span> (model-&gt;priv-&gt;filter_mode == mode)</td></tr>
+<tr class="codeline" data-linenumber="3079"><td class="num" id="LN3079">3079</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="3080"><td class="num" id="LN3080">3080</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3081"><td class="num" id="LN3081">3081</td><td class="line"> model-&gt;priv-&gt;filter_mode = mode;</td></tr>
+<tr class="codeline" data-linenumber="3082"><td class="num" id="LN3082">3082</td><td class="line"> model_refilter (model);</td></tr>
+<tr class="codeline" data-linenumber="3083"><td class="num" id="LN3083">3083</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3084"><td class="num" id="LN3084">3084</td><td class="line"> g_object_notify (<span class='macro'>G_OBJECT (model)<span class='macro_popup'>((((GObject*) (void *) ((model)))))</span></span>, <span class='string_literal'>"filter-mode"</span>);</td></tr>
+<tr class="codeline" data-linenumber="3085"><td class="num" id="LN3085">3085</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3086"><td class="num" id="LN3086">3086</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3087"><td class="num" id="LN3087">3087</td><td class="line"><span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="3088"><td class="num" id="LN3088">3088</td><td class="line">pluma_file_browser_store_set_filter_func (PlumaFileBrowserStore * model,</td></tr>
+<tr class="codeline" data-linenumber="3089"><td class="num" id="LN3089">3089</td><td class="line"> PlumaFileBrowserStoreFilterFunc</td></tr>
+<tr class="codeline" data-linenumber="3090"><td class="num" id="LN3090">3090</td><td class="line"> func, gpointer user_data)</td></tr>
+<tr class="codeline" data-linenumber="3091"><td class="num" id="LN3091">3091</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3092"><td class="num" id="LN3092">3092</td><td class="line"> <span class='macro'>g_return_if_fail (PLUMA_IS_FILE_BROWSER_STORE (model))<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_342<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((model)); GType __t = ((pluma_file_browser_store_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_342 = 1; else _g_boolean_var_342 =<br> 0; _g_boolean_var_342; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "PLUMA_IS_FILE_BROWSER_STORE (model)"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3093"><td class="num" id="LN3093">3093</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3094"><td class="num" id="LN3094">3094</td><td class="line"> model-&gt;priv-&gt;filter_func = func;</td></tr>
+<tr class="codeline" data-linenumber="3095"><td class="num" id="LN3095">3095</td><td class="line"> model-&gt;priv-&gt;filter_user_data = user_data;</td></tr>
+<tr class="codeline" data-linenumber="3096"><td class="num" id="LN3096">3096</td><td class="line"> model_refilter (model);</td></tr>
+<tr class="codeline" data-linenumber="3097"><td class="num" id="LN3097">3097</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3098"><td class="num" id="LN3098">3098</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3099"><td class="num" id="LN3099">3099</td><td class="line"><span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="3100"><td class="num" id="LN3100">3100</td><td class="line">pluma_file_browser_store_refilter (PlumaFileBrowserStore * model)</td></tr>
+<tr class="codeline" data-linenumber="3101"><td class="num" id="LN3101">3101</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3102"><td class="num" id="LN3102">3102</td><td class="line"> model_refilter (model);</td></tr>
+<tr class="codeline" data-linenumber="3103"><td class="num" id="LN3103">3103</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3104"><td class="num" id="LN3104">3104</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3105"><td class="num" id="LN3105">3105</td><td class="line">PlumaFileBrowserStoreFilterMode</td></tr>
+<tr class="codeline" data-linenumber="3106"><td class="num" id="LN3106">3106</td><td class="line">pluma_file_browser_store_filter_mode_get_default (<span class='keyword'>void</span>)</td></tr>
+<tr class="codeline" data-linenumber="3107"><td class="num" id="LN3107">3107</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3108"><td class="num" id="LN3108">3108</td><td class="line"> <span class='keyword'>return</span> PLUMA_FILE_BROWSER_STORE_FILTER_MODE_HIDE_HIDDEN;</td></tr>
+<tr class="codeline" data-linenumber="3109"><td class="num" id="LN3109">3109</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3110"><td class="num" id="LN3110">3110</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3111"><td class="num" id="LN3111">3111</td><td class="line"><span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="3112"><td class="num" id="LN3112">3112</td><td class="line">pluma_file_browser_store_refresh (PlumaFileBrowserStore * model)</td></tr>
+<tr class="codeline" data-linenumber="3113"><td class="num" id="LN3113">3113</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3114"><td class="num" id="LN3114">3114</td><td class="line"> <span class='macro'>g_return_if_fail (PLUMA_IS_FILE_BROWSER_STORE (model))<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_343<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((model)); GType __t = ((pluma_file_browser_store_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_343 = 1; else _g_boolean_var_343 =<br> 0; _g_boolean_var_343; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "PLUMA_IS_FILE_BROWSER_STORE (model)"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3115"><td class="num" id="LN3115">3115</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3116"><td class="num" id="LN3116">3116</td><td class="line"> <span class='keyword'>if</span> (model-&gt;priv-&gt;root == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> || model-&gt;priv-&gt;virtual_root == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="3117"><td class="num" id="LN3117">3117</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="3118"><td class="num" id="LN3118">3118</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3119"><td class="num" id="LN3119">3119</td><td class="line"> <span class='comment'>/* Clear the model */</span></td></tr>
+<tr class="codeline" data-linenumber="3120"><td class="num" id="LN3120">3120</td><td class="line"> g_signal_emit (model, model_signals[BEGIN_REFRESH], 0);</td></tr>
+<tr class="codeline" data-linenumber="3121"><td class="num" id="LN3121">3121</td><td class="line"> file_browser_node_unload (model, model-&gt;priv-&gt;virtual_root, <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3122"><td class="num" id="LN3122">3122</td><td class="line"> model_load_directory (model, model-&gt;priv-&gt;virtual_root);</td></tr>
+<tr class="codeline" data-linenumber="3123"><td class="num" id="LN3123">3123</td><td class="line"> g_signal_emit (model, model_signals[END_REFRESH], 0);</td></tr>
+<tr class="codeline" data-linenumber="3124"><td class="num" id="LN3124">3124</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3125"><td class="num" id="LN3125">3125</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3126"><td class="num" id="LN3126">3126</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="3127"><td class="num" id="LN3127">3127</td><td class="line">reparent_node (FileBrowserNode * node, gboolean reparent)</td></tr>
+<tr class="codeline" data-linenumber="3128"><td class="num" id="LN3128">3128</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3129"><td class="num" id="LN3129">3129</td><td class="line"> FileBrowserNodeDir * dir;</td></tr>
+<tr class="codeline" data-linenumber="3130"><td class="num" id="LN3130">3130</td><td class="line"> GSList * child;</td></tr>
+<tr class="codeline" data-linenumber="3131"><td class="num" id="LN3131">3131</td><td class="line"> GFile * parent;</td></tr>
+<tr class="codeline" data-linenumber="3132"><td class="num" id="LN3132">3132</td><td class="line"> gchar * base;</td></tr>
+<tr class="codeline" data-linenumber="3133"><td class="num" id="LN3133">3133</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3134"><td class="num" id="LN3134">3134</td><td class="line"> <span class='keyword'>if</span> (!node-&gt;file) {</td></tr>
+<tr class="codeline" data-linenumber="3135"><td class="num" id="LN3135">3135</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="3136"><td class="num" id="LN3136">3136</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3137"><td class="num" id="LN3137">3137</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3138"><td class="num" id="LN3138">3138</td><td class="line"> <span class='keyword'>if</span> (reparent) {</td></tr>
+<tr class="codeline" data-linenumber="3139"><td class="num" id="LN3139">3139</td><td class="line"> parent = node-&gt;parent-&gt;file;</td></tr>
+<tr class="codeline" data-linenumber="3140"><td class="num" id="LN3140">3140</td><td class="line"> base = g_file_get_basename (node-&gt;file);</td></tr>
+<tr class="codeline" data-linenumber="3141"><td class="num" id="LN3141">3141</td><td class="line"> g_object_unref (node-&gt;file);</td></tr>
+<tr class="codeline" data-linenumber="3142"><td class="num" id="LN3142">3142</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3143"><td class="num" id="LN3143">3143</td><td class="line"> node-&gt;file = g_file_get_child (parent, base);</td></tr>
+<tr class="codeline" data-linenumber="3144"><td class="num" id="LN3144">3144</td><td class="line"> g_free (base);</td></tr>
+<tr class="codeline" data-linenumber="3145"><td class="num" id="LN3145">3145</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3146"><td class="num" id="LN3146">3146</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3147"><td class="num" id="LN3147">3147</td><td class="line"> <span class='keyword'>if</span> (<span class='macro'>NODE_IS_DIR (node)<span class='macro_popup'>(((node)-&gt;flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_DIRECTORY<br>))</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3148"><td class="num" id="LN3148">3148</td><td class="line"> dir = <span class='macro'>FILE_BROWSER_NODE_DIR (node)<span class='macro_popup'>((FileBrowserNodeDir *)(node))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3149"><td class="num" id="LN3149">3149</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3150"><td class="num" id="LN3150">3150</td><td class="line"> <span class='keyword'>for</span> (child = dir-&gt;children; child; child = child-&gt;next) {</td></tr>
+<tr class="codeline" data-linenumber="3151"><td class="num" id="LN3151">3151</td><td class="line"> reparent_node ((FileBrowserNode *)child-&gt;data, <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3152"><td class="num" id="LN3152">3152</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3153"><td class="num" id="LN3153">3153</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3154"><td class="num" id="LN3154">3154</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3155"><td class="num" id="LN3155">3155</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3156"><td class="num" id="LN3156">3156</td><td class="line">gboolean</td></tr>
+<tr class="codeline" data-linenumber="3157"><td class="num" id="LN3157">3157</td><td class="line">pluma_file_browser_store_rename (PlumaFileBrowserStore * model,</td></tr>
+<tr class="codeline" data-linenumber="3158"><td class="num" id="LN3158">3158</td><td class="line"> GtkTreeIter * iter,</td></tr>
+<tr class="codeline" data-linenumber="3159"><td class="num" id="LN3159">3159</td><td class="line"> <span class='keyword'>const</span> gchar * new_name,</td></tr>
+<tr class="codeline" data-linenumber="3160"><td class="num" id="LN3160">3160</td><td class="line"> GError ** error)</td></tr>
+<tr class="codeline" data-linenumber="3161"><td class="num" id="LN3161">3161</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3162"><td class="num" id="LN3162">3162</td><td class="line"> FileBrowserNode *node;</td></tr>
+<tr class="codeline" data-linenumber="3163"><td class="num" id="LN3163">3163</td><td class="line"> GFile * file;</td></tr>
+<tr class="codeline" data-linenumber="3164"><td class="num" id="LN3164">3164</td><td class="line"> GFile * parent;</td></tr>
+<tr class="codeline" data-linenumber="3165"><td class="num" id="LN3165">3165</td><td class="line"> GFile * previous;</td></tr>
+<tr class="codeline" data-linenumber="3166"><td class="num" id="LN3166">3166</td><td class="line"> GError * err = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3167"><td class="num" id="LN3167">3167</td><td class="line"> gchar * olduri;</td></tr>
+<tr class="codeline" data-linenumber="3168"><td class="num" id="LN3168">3168</td><td class="line"> gchar * newuri;</td></tr>
+<tr class="codeline" data-linenumber="3169"><td class="num" id="LN3169">3169</td><td class="line"> GtkTreePath *path;</td></tr>
+<tr class="codeline" data-linenumber="3170"><td class="num" id="LN3170">3170</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3171"><td class="num" id="LN3171">3171</td><td class="line"> <span class='macro'>g_return_val_if_fail (PLUMA_IS_FILE_BROWSER_STORE (model), FALSE)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_344<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((model)); GType __t = ((pluma_file_browser_store_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_344 = 1; else _g_boolean_var_344 =<br> 0; _g_boolean_var_344; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "PLUMA_IS_FILE_BROWSER_STORE (model)"<br>); return ((0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3172"><td class="num" id="LN3172">3172</td><td class="line"> <span class='macro'>g_return_val_if_fail (iter != NULL, FALSE)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_345<br>; if (iter != ((void*)0)) _g_boolean_var_345 = 1; else _g_boolean_var_345<br> = 0; _g_boolean_var_345; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "iter != NULL"); return<br> ((0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3173"><td class="num" id="LN3173">3173</td><td class="line"> <span class='macro'>g_return_val_if_fail (iter-&gt;user_data != NULL, FALSE)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_346<br>; if (iter-&gt;user_data != ((void*)0)) _g_boolean_var_346 = 1<br>; else _g_boolean_var_346 = 0; _g_boolean_var_346; }), 1))) {<br> } else { g_return_if_fail_warning (((gchar*) 0), ((const char<br>*) (__func__)), "iter-&gt;user_data != NULL"); return ((0)); }<br> } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3174"><td class="num" id="LN3174">3174</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3175"><td class="num" id="LN3175">3175</td><td class="line"> node = (FileBrowserNode *) (iter-&gt;user_data);</td></tr>
+<tr class="codeline" data-linenumber="3176"><td class="num" id="LN3176">3176</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3177"><td class="num" id="LN3177">3177</td><td class="line"> parent = g_file_get_parent (node-&gt;file);</td></tr>
+<tr class="codeline" data-linenumber="3178"><td class="num" id="LN3178">3178</td><td class="line"> <span class='macro'>g_return_val_if_fail (parent != NULL, FALSE)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_347<br>; if (parent != ((void*)0)) _g_boolean_var_347 = 1; else _g_boolean_var_347<br> = 0; _g_boolean_var_347; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "parent != NULL")<br>; return ((0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3179"><td class="num" id="LN3179">3179</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3180"><td class="num" id="LN3180">3180</td><td class="line"> file = g_file_get_child (parent, new_name);</td></tr>
+<tr class="codeline" data-linenumber="3181"><td class="num" id="LN3181">3181</td><td class="line"> g_object_unref (parent);</td></tr>
+<tr class="codeline" data-linenumber="3182"><td class="num" id="LN3182">3182</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3183"><td class="num" id="LN3183">3183</td><td class="line"> <span class='keyword'>if</span> (g_file_equal (node-&gt;file, file)) {</td></tr>
+<tr class="codeline" data-linenumber="3184"><td class="num" id="LN3184">3184</td><td class="line"> g_object_unref (file);</td></tr>
+<tr class="codeline" data-linenumber="3185"><td class="num" id="LN3185">3185</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3186"><td class="num" id="LN3186">3186</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3187"><td class="num" id="LN3187">3187</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3188"><td class="num" id="LN3188">3188</td><td class="line"> <span class='keyword'>if</span> (g_file_move (node-&gt;file, file, G_FILE_COPY_NONE, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, &amp;err)) {</td></tr>
+<tr class="codeline" data-linenumber="3189"><td class="num" id="LN3189">3189</td><td class="line"> previous = node-&gt;file;</td></tr>
+<tr class="codeline" data-linenumber="3190"><td class="num" id="LN3190">3190</td><td class="line"> node-&gt;file = file;</td></tr>
+<tr class="codeline" data-linenumber="3191"><td class="num" id="LN3191">3191</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3192"><td class="num" id="LN3192">3192</td><td class="line"> <span class='comment'>/* This makes sure the actual info for the node is requeried */</span></td></tr>
+<tr class="codeline" data-linenumber="3193"><td class="num" id="LN3193">3193</td><td class="line"> file_browser_node_set_name (node);</td></tr>
+<tr class="codeline" data-linenumber="3194"><td class="num" id="LN3194">3194</td><td class="line"> file_browser_node_set_from_info (model, node, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3195"><td class="num" id="LN3195">3195</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3196"><td class="num" id="LN3196">3196</td><td class="line"> reparent_node (node, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3197"><td class="num" id="LN3197">3197</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3198"><td class="num" id="LN3198">3198</td><td class="line"> <span class='keyword'>if</span> (model_node_visibility (model, node)) {</td></tr>
+<tr class="codeline" data-linenumber="3199"><td class="num" id="LN3199">3199</td><td class="line"> path = pluma_file_browser_store_get_path_real (model, node);</td></tr>
+<tr class="codeline" data-linenumber="3200"><td class="num" id="LN3200">3200</td><td class="line"> row_changed (model, &amp;path, iter);</td></tr>
+<tr class="codeline" data-linenumber="3201"><td class="num" id="LN3201">3201</td><td class="line"> gtk_tree_path_free (path);</td></tr>
+<tr class="codeline" data-linenumber="3202"><td class="num" id="LN3202">3202</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3203"><td class="num" id="LN3203">3203</td><td class="line"> <span class='comment'>/* Reorder this item */</span></td></tr>
+<tr class="codeline" data-linenumber="3204"><td class="num" id="LN3204">3204</td><td class="line"> model_resort_node (model, node);</td></tr>
+<tr class="codeline" data-linenumber="3205"><td class="num" id="LN3205">3205</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="3206"><td class="num" id="LN3206">3206</td><td class="line"> g_object_unref (previous);</td></tr>
+<tr class="codeline" data-linenumber="3207"><td class="num" id="LN3207">3207</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3208"><td class="num" id="LN3208">3208</td><td class="line"> <span class='keyword'>if</span> (error != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="3209"><td class="num" id="LN3209">3209</td><td class="line"> *error = g_error_new_literal (pluma_file_browser_store_error_quark (),</td></tr>
+<tr class="codeline" data-linenumber="3210"><td class="num" id="LN3210">3210</td><td class="line"> PLUMA_FILE_BROWSER_ERROR_RENAME,</td></tr>
+<tr class="codeline" data-linenumber="3211"><td class="num" id="LN3211">3211</td><td class="line"> <span class='macro'>_(<span class='string_literal'>"The renamed file is currently filtered out. You need to adjust your filter settings to make the file visible"</span>)<span class='macro_popup'>((char *) g_dgettext ("pluma", "The renamed file is currently filtered out. You need to adjust your filter settings to make the file visible"<br>))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3212"><td class="num" id="LN3212">3212</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3213"><td class="num" id="LN3213">3213</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3214"><td class="num" id="LN3214">3214</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3215"><td class="num" id="LN3215">3215</td><td class="line"> olduri = g_file_get_uri (previous);</td></tr>
+<tr class="codeline" data-linenumber="3216"><td class="num" id="LN3216">3216</td><td class="line"> newuri = g_file_get_uri (node-&gt;file);</td></tr>
+<tr class="codeline" data-linenumber="3217"><td class="num" id="LN3217">3217</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3218"><td class="num" id="LN3218">3218</td><td class="line"> g_signal_emit (model, model_signals[RENAME], 0, olduri, newuri);</td></tr>
+<tr class="codeline" data-linenumber="3219"><td class="num" id="LN3219">3219</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3220"><td class="num" id="LN3220">3220</td><td class="line"> g_object_unref (previous);</td></tr>
+<tr class="codeline" data-linenumber="3221"><td class="num" id="LN3221">3221</td><td class="line"> g_free (olduri);</td></tr>
+<tr class="codeline" data-linenumber="3222"><td class="num" id="LN3222">3222</td><td class="line"> g_free (newuri);</td></tr>
+<tr class="codeline" data-linenumber="3223"><td class="num" id="LN3223">3223</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3224"><td class="num" id="LN3224">3224</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3225"><td class="num" id="LN3225">3225</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="3226"><td class="num" id="LN3226">3226</td><td class="line"> g_object_unref (file);</td></tr>
+<tr class="codeline" data-linenumber="3227"><td class="num" id="LN3227">3227</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3228"><td class="num" id="LN3228">3228</td><td class="line"> <span class='keyword'>if</span> (err) {</td></tr>
+<tr class="codeline" data-linenumber="3229"><td class="num" id="LN3229">3229</td><td class="line"> <span class='keyword'>if</span> (error != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="3230"><td class="num" id="LN3230">3230</td><td class="line"> *error =</td></tr>
+<tr class="codeline" data-linenumber="3231"><td class="num" id="LN3231">3231</td><td class="line"> g_error_new_literal</td></tr>
+<tr class="codeline" data-linenumber="3232"><td class="num" id="LN3232">3232</td><td class="line"> (pluma_file_browser_store_error_quark (),</td></tr>
+<tr class="codeline" data-linenumber="3233"><td class="num" id="LN3233">3233</td><td class="line"> PLUMA_FILE_BROWSER_ERROR_RENAME,</td></tr>
+<tr class="codeline" data-linenumber="3234"><td class="num" id="LN3234">3234</td><td class="line"> err-&gt;message);</td></tr>
+<tr class="codeline" data-linenumber="3235"><td class="num" id="LN3235">3235</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3236"><td class="num" id="LN3236">3236</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3237"><td class="num" id="LN3237">3237</td><td class="line"> g_error_free (err);</td></tr>
+<tr class="codeline" data-linenumber="3238"><td class="num" id="LN3238">3238</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3239"><td class="num" id="LN3239">3239</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3240"><td class="num" id="LN3240">3240</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3241"><td class="num" id="LN3241">3241</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3242"><td class="num" id="LN3242">3242</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3243"><td class="num" id="LN3243">3243</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3244"><td class="num" id="LN3244">3244</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="3245"><td class="num" id="LN3245">3245</td><td class="line">async_data_free (AsyncData * data)</td></tr>
+<tr class="codeline" data-linenumber="3246"><td class="num" id="LN3246">3246</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3247"><td class="num" id="LN3247">3247</td><td class="line"> g_object_unref (data-&gt;cancellable);</td></tr>
+<tr class="codeline" data-linenumber="3248"><td class="num" id="LN3248">3248</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3249"><td class="num" id="LN3249">3249</td><td class="line"> g_list_free_full (data-&gt;files, g_object_unref);</td></tr>
+<tr class="codeline" data-linenumber="3250"><td class="num" id="LN3250">3250</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3251"><td class="num" id="LN3251">3251</td><td class="line"> <span class='keyword'>if</span> (!data-&gt;removed)</td></tr>
+<tr class="codeline" data-linenumber="3252"><td class="num" id="LN3252">3252</td><td class="line"> data-&gt;model-&gt;priv-&gt;async_handles = g_slist_remove (data-&gt;model-&gt;priv-&gt;async_handles, data);</td></tr>
+<tr class="codeline" data-linenumber="3253"><td class="num" id="LN3253">3253</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3254"><td class="num" id="LN3254">3254</td><td class="line"> g_free (data);</td></tr>
+<tr class="codeline" data-linenumber="3255"><td class="num" id="LN3255">3255</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3256"><td class="num" id="LN3256">3256</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3257"><td class="num" id="LN3257">3257</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="3258"><td class="num" id="LN3258">3258</td><td class="line">emit_no_trash (AsyncData * data)</td></tr>
+<tr class="codeline" data-linenumber="3259"><td class="num" id="LN3259">3259</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3260"><td class="num" id="LN3260">3260</td><td class="line"> <span class='comment'>/* Emit the no trash error */</span></td></tr>
+<tr class="codeline" data-linenumber="3261"><td class="num" id="LN3261">3261</td><td class="line"> gboolean ret;</td></tr>
+<tr class="codeline" data-linenumber="3262"><td class="num" id="LN3262">3262</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3263"><td class="num" id="LN3263">3263</td><td class="line"> g_signal_emit (data-&gt;model, model_signals[NO_TRASH], 0, data-&gt;files, &amp;ret);</td></tr>
+<tr class="codeline" data-linenumber="3264"><td class="num" id="LN3264">3264</td><td class="line"> <span class='keyword'>return</span> ret;</td></tr>
+<tr class="codeline" data-linenumber="3265"><td class="num" id="LN3265">3265</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3266"><td class="num" id="LN3266">3266</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3267"><td class="num" id="LN3267">3267</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="3268"><td class="num" id="LN3268">3268</td><td class="line">delete_file_finished (GFile *file,</td></tr>
+<tr class="codeline" data-linenumber="3269"><td class="num" id="LN3269">3269</td><td class="line"> GAsyncResult *res,</td></tr>
+<tr class="codeline" data-linenumber="3270"><td class="num" id="LN3270">3270</td><td class="line"> AsyncData *data)</td></tr>
+<tr class="codeline" data-linenumber="3271"><td class="num" id="LN3271">3271</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3272"><td class="num" id="LN3272">3272</td><td class="line"> GError * error = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3273"><td class="num" id="LN3273">3273</td><td class="line"> gboolean ok;</td></tr>
+<tr class="codeline" data-linenumber="3274"><td class="num" id="LN3274">3274</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3275"><td class="num" id="LN3275">3275</td><td class="line"> <span class='keyword'>if</span> (data-&gt;trash)</td></tr>
+<tr class="codeline" data-linenumber="3276"><td class="num" id="LN3276">3276</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="3277"><td class="num" id="LN3277">3277</td><td class="line"> ok = g_file_trash_finish (file, res, &amp;error);</td></tr>
+<tr class="codeline" data-linenumber="3278"><td class="num" id="LN3278">3278</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3279"><td class="num" id="LN3279">3279</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="3280"><td class="num" id="LN3280">3280</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="3281"><td class="num" id="LN3281">3281</td><td class="line"> ok = g_file_delete_finish (file, res, &amp;error);</td></tr>
+<tr class="codeline" data-linenumber="3282"><td class="num" id="LN3282">3282</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3283"><td class="num" id="LN3283">3283</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3284"><td class="num" id="LN3284">3284</td><td class="line"> <span class='keyword'>if</span> (ok)</td></tr>
+<tr class="codeline" data-linenumber="3285"><td class="num" id="LN3285">3285</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="3286"><td class="num" id="LN3286">3286</td><td class="line"> <span class='comment'>/* Remove the file from the model */</span></td></tr>
+<tr class="codeline" data-linenumber="3287"><td class="num" id="LN3287">3287</td><td class="line"> FileBrowserNode *node = model_find_node (data-&gt;model, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, file);</td></tr>
+<tr class="codeline" data-linenumber="3288"><td class="num" id="LN3288">3288</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3289"><td class="num" id="LN3289">3289</td><td class="line"> <span class='keyword'>if</span> (node != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="3290"><td class="num" id="LN3290">3290</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="3291"><td class="num" id="LN3291">3291</td><td class="line"> model_remove_node (data-&gt;model, node, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3292"><td class="num" id="LN3292">3292</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3293"><td class="num" id="LN3293">3293</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3294"><td class="num" id="LN3294">3294</td><td class="line"> <span class='comment'>/* Process the next file */</span></td></tr>
+<tr class="codeline" data-linenumber="3295"><td class="num" id="LN3295">3295</td><td class="line"> data-&gt;iter = data-&gt;iter-&gt;next;</td></tr>
+<tr class="codeline" data-linenumber="3296"><td class="num" id="LN3296">3296</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3297"><td class="num" id="LN3297">3297</td><td class="line"> <span class='keyword'>else</span> <span class='keyword'>if</span> (!ok &amp;&amp; error != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="3298"><td class="num" id="LN3298">3298</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="3299"><td class="num" id="LN3299">3299</td><td class="line"> gint code = error-&gt;code;</td></tr>
+<tr class="codeline" data-linenumber="3300"><td class="num" id="LN3300">3300</td><td class="line"> g_error_free (error);</td></tr>
+<tr class="codeline" data-linenumber="3301"><td class="num" id="LN3301">3301</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3302"><td class="num" id="LN3302">3302</td><td class="line"> <span class='keyword'>if</span> (data-&gt;trash &amp;&amp; code == G_IO_ERROR_NOT_SUPPORTED) {</td></tr>
+<tr class="codeline" data-linenumber="3303"><td class="num" id="LN3303">3303</td><td class="line"> <span class='comment'>/* Trash is not supported on this system. Ask the user</span></td></tr>
+<tr class="codeline" data-linenumber="3304"><td class="num" id="LN3304">3304</td><td class="line"> <span class='comment'>* if he wants to delete completely the files instead.</span></td></tr>
+<tr class="codeline" data-linenumber="3305"><td class="num" id="LN3305">3305</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="3306"><td class="num" id="LN3306">3306</td><td class="line"> <span class='keyword'>if</span> (emit_no_trash (data))</td></tr>
+<tr class="codeline" data-linenumber="3307"><td class="num" id="LN3307">3307</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="3308"><td class="num" id="LN3308">3308</td><td class="line"> <span class='comment'>/* Changes this into a delete job */</span></td></tr>
+<tr class="codeline" data-linenumber="3309"><td class="num" id="LN3309">3309</td><td class="line"> data-&gt;trash = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3310"><td class="num" id="LN3310">3310</td><td class="line"> data-&gt;iter = data-&gt;files;</td></tr>
+<tr class="codeline" data-linenumber="3311"><td class="num" id="LN3311">3311</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3312"><td class="num" id="LN3312">3312</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="3313"><td class="num" id="LN3313">3313</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="3314"><td class="num" id="LN3314">3314</td><td class="line"> <span class='comment'>/* End the job */</span></td></tr>
+<tr class="codeline" data-linenumber="3315"><td class="num" id="LN3315">3315</td><td class="line"> async_data_free (data);</td></tr>
+<tr class="codeline" data-linenumber="3316"><td class="num" id="LN3316">3316</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="3317"><td class="num" id="LN3317">3317</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3318"><td class="num" id="LN3318">3318</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3319"><td class="num" id="LN3319">3319</td><td class="line"> <span class='keyword'>else</span> <span class='keyword'>if</span> (code == G_IO_ERROR_CANCELLED)</td></tr>
+<tr class="codeline" data-linenumber="3320"><td class="num" id="LN3320">3320</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="3321"><td class="num" id="LN3321">3321</td><td class="line"> <span class='comment'>/* Job has been cancelled, end the job */</span></td></tr>
+<tr class="codeline" data-linenumber="3322"><td class="num" id="LN3322">3322</td><td class="line"> async_data_free (data);</td></tr>
+<tr class="codeline" data-linenumber="3323"><td class="num" id="LN3323">3323</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="3324"><td class="num" id="LN3324">3324</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3325"><td class="num" id="LN3325">3325</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3326"><td class="num" id="LN3326">3326</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3327"><td class="num" id="LN3327">3327</td><td class="line"> <span class='comment'>/* Continue the job */</span></td></tr>
+<tr class="codeline" data-linenumber="3328"><td class="num" id="LN3328">3328</td><td class="line"> delete_files (data);</td></tr>
+<tr class="codeline" data-linenumber="3329"><td class="num" id="LN3329">3329</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3330"><td class="num" id="LN3330">3330</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3331"><td class="num" id="LN3331">3331</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="3332"><td class="num" id="LN3332">3332</td><td class="line">delete_files (AsyncData *data)</td></tr>
+<tr class="codeline" data-linenumber="3333"><td class="num" id="LN3333">3333</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3334"><td class="num" id="LN3334">3334</td><td class="line"> GFile *file;</td></tr>
+<tr class="codeline" data-linenumber="3335"><td class="num" id="LN3335">3335</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3336"><td class="num" id="LN3336">3336</td><td class="line"> <span class='comment'>/* Check if our job is done */</span></td></tr>
+<tr class="codeline" data-linenumber="3337"><td class="num" id="LN3337">3337</td><td class="line"> <span class='keyword'>if</span> (data-&gt;iter == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="3338"><td class="num" id="LN3338">3338</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="3339"><td class="num" id="LN3339">3339</td><td class="line"> async_data_free (data);</td></tr>
+<tr class="codeline" data-linenumber="3340"><td class="num" id="LN3340">3340</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="3341"><td class="num" id="LN3341">3341</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3342"><td class="num" id="LN3342">3342</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3343"><td class="num" id="LN3343">3343</td><td class="line"> file = <span class='macro'>G_FILE (data-&gt;iter-&gt;data)<span class='macro_popup'>((((GFile*) (void *) ((data-&gt;iter-&gt;data)))))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3344"><td class="num" id="LN3344">3344</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3345"><td class="num" id="LN3345">3345</td><td class="line"> <span class='keyword'>if</span> (data-&gt;trash)</td></tr>
+<tr class="codeline" data-linenumber="3346"><td class="num" id="LN3346">3346</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="3347"><td class="num" id="LN3347">3347</td><td class="line"> g_file_trash_async (file,</td></tr>
+<tr class="codeline" data-linenumber="3348"><td class="num" id="LN3348">3348</td><td class="line"> <span class='macro'>G_PRIORITY_DEFAULT<span class='macro_popup'>0</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="3349"><td class="num" id="LN3349">3349</td><td class="line"> data-&gt;cancellable,</td></tr>
+<tr class="codeline" data-linenumber="3350"><td class="num" id="LN3350">3350</td><td class="line"> (GAsyncReadyCallback)delete_file_finished,</td></tr>
+<tr class="codeline" data-linenumber="3351"><td class="num" id="LN3351">3351</td><td class="line"> data);</td></tr>
+<tr class="codeline" data-linenumber="3352"><td class="num" id="LN3352">3352</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3353"><td class="num" id="LN3353">3353</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="3354"><td class="num" id="LN3354">3354</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="3355"><td class="num" id="LN3355">3355</td><td class="line"> g_file_delete_async (file,</td></tr>
+<tr class="codeline" data-linenumber="3356"><td class="num" id="LN3356">3356</td><td class="line"> <span class='macro'>G_PRIORITY_DEFAULT<span class='macro_popup'>0</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="3357"><td class="num" id="LN3357">3357</td><td class="line"> data-&gt;cancellable,</td></tr>
+<tr class="codeline" data-linenumber="3358"><td class="num" id="LN3358">3358</td><td class="line"> (GAsyncReadyCallback)delete_file_finished,</td></tr>
+<tr class="codeline" data-linenumber="3359"><td class="num" id="LN3359">3359</td><td class="line"> data);</td></tr>
+<tr class="codeline" data-linenumber="3360"><td class="num" id="LN3360">3360</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3361"><td class="num" id="LN3361">3361</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3362"><td class="num" id="LN3362">3362</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3363"><td class="num" id="LN3363">3363</td><td class="line">PlumaFileBrowserStoreResult</td></tr>
+<tr class="codeline" data-linenumber="3364"><td class="num" id="LN3364">3364</td><td class="line">pluma_file_browser_store_delete_all (PlumaFileBrowserStore *model,</td></tr>
+<tr class="codeline" data-linenumber="3365"><td class="num" id="LN3365">3365</td><td class="line"> GList *rows, gboolean trash)</td></tr>
+<tr class="codeline" data-linenumber="3366"><td class="num" id="LN3366">3366</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3367"><td class="num" id="LN3367">3367</td><td class="line"> FileBrowserNode * node;</td></tr>
+<tr class="codeline" data-linenumber="3368"><td class="num" id="LN3368">3368</td><td class="line"> AsyncData * data;</td></tr>
+<tr class="codeline" data-linenumber="3369"><td class="num" id="LN3369">3369</td><td class="line"> GList * files = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3370"><td class="num" id="LN3370">3370</td><td class="line"> GList * row;</td></tr>
+<tr class="codeline" data-linenumber="3371"><td class="num" id="LN3371">3371</td><td class="line"> GtkTreeIter iter;</td></tr>
+<tr class="codeline" data-linenumber="3372"><td class="num" id="LN3372">3372</td><td class="line"> GtkTreePath * prev = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3373"><td class="num" id="LN3373">3373</td><td class="line"> GtkTreePath * path;</td></tr>
+<tr class="codeline" data-linenumber="3374"><td class="num" id="LN3374">3374</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3375"><td class="num" id="LN3375">3375</td><td class="line"> <span class='macro'>g_return_val_if_fail (PLUMA_IS_FILE_BROWSER_STORE (model), PLUMA_FILE_BROWSER_STORE_RESULT_NO_CHANGE)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_348<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((model)); GType __t = ((pluma_file_browser_store_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_348 = 1; else _g_boolean_var_348 =<br> 0; _g_boolean_var_348; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "PLUMA_IS_FILE_BROWSER_STORE (model)"<br>); return (PLUMA_FILE_BROWSER_STORE_RESULT_NO_CHANGE); } } while<br> (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3376"><td class="num" id="LN3376">3376</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3377"><td class="num" id="LN3377">3377</td><td class="line"> <span class='keyword'>if</span> (rows == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="3378"><td class="num" id="LN3378">3378</td><td class="line"> <span class='keyword'>return</span> PLUMA_FILE_BROWSER_STORE_RESULT_NO_CHANGE;</td></tr>
+<tr class="codeline" data-linenumber="3379"><td class="num" id="LN3379">3379</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3380"><td class="num" id="LN3380">3380</td><td class="line"> <span class='comment'>/* First we sort the paths so that we can later on remove any</span></td></tr>
+<tr class="codeline" data-linenumber="3381"><td class="num" id="LN3381">3381</td><td class="line"> <span class='comment'>files/directories that are actually subfiles/directories of</span></td></tr>
+<tr class="codeline" data-linenumber="3382"><td class="num" id="LN3382">3382</td><td class="line"> <span class='comment'>a directory that's also deleted */</span></td></tr>
+<tr class="codeline" data-linenumber="3383"><td class="num" id="LN3383">3383</td><td class="line"> rows = g_list_sort (g_list_copy (rows), (GCompareFunc)gtk_tree_path_compare);</td></tr>
+<tr class="codeline" data-linenumber="3384"><td class="num" id="LN3384">3384</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3385"><td class="num" id="LN3385">3385</td><td class="line"> <span class='keyword'>for</span> (row = rows; row; row = row-&gt;next) {</td></tr>
+<tr class="codeline" data-linenumber="3386"><td class="num" id="LN3386">3386</td><td class="line"> path = (GtkTreePath *)(row-&gt;data);</td></tr>
+<tr class="codeline" data-linenumber="3387"><td class="num" id="LN3387">3387</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3388"><td class="num" id="LN3388">3388</td><td class="line"> <span class='keyword'>if</span> (!gtk_tree_model_get_iter (<span class='macro'>GTK_TREE_MODEL (model)<span class='macro_popup'>((((GtkTreeModel*) (void *) ((model)))))</span></span>, &amp;iter, path))</td></tr>
+<tr class="codeline" data-linenumber="3389"><td class="num" id="LN3389">3389</td><td class="line"> <span class='keyword'>continue</span>;</td></tr>
+<tr class="codeline" data-linenumber="3390"><td class="num" id="LN3390">3390</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3391"><td class="num" id="LN3391">3391</td><td class="line"> <span class='comment'>/* Skip if the current path is actually a descendant of the</span></td></tr>
+<tr class="codeline" data-linenumber="3392"><td class="num" id="LN3392">3392</td><td class="line"> <span class='comment'>previous path */</span></td></tr>
+<tr class="codeline" data-linenumber="3393"><td class="num" id="LN3393">3393</td><td class="line"> <span class='keyword'>if</span> (prev != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> &amp;&amp; gtk_tree_path_is_descendant (path, prev))</td></tr>
+<tr class="codeline" data-linenumber="3394"><td class="num" id="LN3394">3394</td><td class="line"> <span class='keyword'>continue</span>;</td></tr>
+<tr class="codeline" data-linenumber="3395"><td class="num" id="LN3395">3395</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3396"><td class="num" id="LN3396">3396</td><td class="line"> prev = path;</td></tr>
+<tr class="codeline" data-linenumber="3397"><td class="num" id="LN3397">3397</td><td class="line"> node = (FileBrowserNode *)(iter.user_data);</td></tr>
+<tr class="codeline" data-linenumber="3398"><td class="num" id="LN3398">3398</td><td class="line"> files = g_list_prepend (files, <span class='macro'>g_object_ref (node-&gt;file)<span class='macro_popup'>((__typeof__ (node-&gt;file)) (g_object_ref) (node-&gt;file))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3399"><td class="num" id="LN3399">3399</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3400"><td class="num" id="LN3400">3400</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3401"><td class="num" id="LN3401">3401</td><td class="line"> data = <span class='macro'>g_new (AsyncData, 1)<span class='macro_popup'>(AsyncData *) (__extension__ ({ gsize __n = (gsize) (1); gsize<br> __s = sizeof (AsyncData); gpointer __p; if (__s == 1) __p = g_malloc<br> (__n); else if (__builtin_constant_p (__n) &amp;&amp; (__s ==<br> 0 || __n &lt;= (9223372036854775807L *2UL+1UL) / __s)) __p =<br> g_malloc (__n * __s); else __p = g_malloc_n (__n, __s); __p;<br> }))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3402"><td class="num" id="LN3402">3402</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3403"><td class="num" id="LN3403">3403</td><td class="line"> data-&gt;model = model;</td></tr>
+<tr class="codeline" data-linenumber="3404"><td class="num" id="LN3404">3404</td><td class="line"> data-&gt;cancellable = g_cancellable_new ();</td></tr>
+<tr class="codeline" data-linenumber="3405"><td class="num" id="LN3405">3405</td><td class="line"> data-&gt;files = files;</td></tr>
+<tr class="codeline" data-linenumber="3406"><td class="num" id="LN3406">3406</td><td class="line"> data-&gt;trash = trash;</td></tr>
+<tr class="codeline" data-linenumber="3407"><td class="num" id="LN3407">3407</td><td class="line"> data-&gt;iter = files;</td></tr>
+<tr class="codeline" data-linenumber="3408"><td class="num" id="LN3408">3408</td><td class="line"> data-&gt;removed = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3409"><td class="num" id="LN3409">3409</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3410"><td class="num" id="LN3410">3410</td><td class="line"> model-&gt;priv-&gt;async_handles =</td></tr>
+<tr class="codeline" data-linenumber="3411"><td class="num" id="LN3411">3411</td><td class="line"> g_slist_prepend (model-&gt;priv-&gt;async_handles, data);</td></tr>
+<tr class="codeline" data-linenumber="3412"><td class="num" id="LN3412">3412</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3413"><td class="num" id="LN3413">3413</td><td class="line"> delete_files (data);</td></tr>
+<tr class="codeline" data-linenumber="3414"><td class="num" id="LN3414">3414</td><td class="line"> g_list_free (rows);</td></tr>
+<tr class="codeline" data-linenumber="3415"><td class="num" id="LN3415">3415</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3416"><td class="num" id="LN3416">3416</td><td class="line"> <span class='keyword'>return</span> PLUMA_FILE_BROWSER_STORE_RESULT_OK;</td></tr>
+<tr class="codeline" data-linenumber="3417"><td class="num" id="LN3417">3417</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3418"><td class="num" id="LN3418">3418</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3419"><td class="num" id="LN3419">3419</td><td class="line">PlumaFileBrowserStoreResult</td></tr>
+<tr class="codeline" data-linenumber="3420"><td class="num" id="LN3420">3420</td><td class="line">pluma_file_browser_store_delete (PlumaFileBrowserStore * model,</td></tr>
+<tr class="codeline" data-linenumber="3421"><td class="num" id="LN3421">3421</td><td class="line"> GtkTreeIter * iter, gboolean trash)</td></tr>
+<tr class="codeline" data-linenumber="3422"><td class="num" id="LN3422">3422</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3423"><td class="num" id="LN3423">3423</td><td class="line"> FileBrowserNode *node;</td></tr>
+<tr class="codeline" data-linenumber="3424"><td class="num" id="LN3424">3424</td><td class="line"> GList *rows = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3425"><td class="num" id="LN3425">3425</td><td class="line"> PlumaFileBrowserStoreResult result;</td></tr>
+<tr class="codeline" data-linenumber="3426"><td class="num" id="LN3426">3426</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3427"><td class="num" id="LN3427">3427</td><td class="line"> <span class='macro'>g_return_val_if_fail (PLUMA_IS_FILE_BROWSER_STORE (model), PLUMA_FILE_BROWSER_STORE_RESULT_NO_CHANGE)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_349<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((model)); GType __t = ((pluma_file_browser_store_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_349 = 1; else _g_boolean_var_349 =<br> 0; _g_boolean_var_349; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "PLUMA_IS_FILE_BROWSER_STORE (model)"<br>); return (PLUMA_FILE_BROWSER_STORE_RESULT_NO_CHANGE); } } while<br> (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3428"><td class="num" id="LN3428">3428</td><td class="line"> <span class='macro'>g_return_val_if_fail (iter != NULL, PLUMA_FILE_BROWSER_STORE_RESULT_NO_CHANGE)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_350<br>; if (iter != ((void*)0)) _g_boolean_var_350 = 1; else _g_boolean_var_350<br> = 0; _g_boolean_var_350; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "iter != NULL"); return<br> (PLUMA_FILE_BROWSER_STORE_RESULT_NO_CHANGE); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3429"><td class="num" id="LN3429">3429</td><td class="line"> <span class='macro'>g_return_val_if_fail (iter-&gt;user_data != NULL, PLUMA_FILE_BROWSER_STORE_RESULT_NO_CHANGE)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_351<br>; if (iter-&gt;user_data != ((void*)0)) _g_boolean_var_351 = 1<br>; else _g_boolean_var_351 = 0; _g_boolean_var_351; }), 1))) {<br> } else { g_return_if_fail_warning (((gchar*) 0), ((const char<br>*) (__func__)), "iter-&gt;user_data != NULL"); return (PLUMA_FILE_BROWSER_STORE_RESULT_NO_CHANGE<br>); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3430"><td class="num" id="LN3430">3430</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3431"><td class="num" id="LN3431">3431</td><td class="line"> node = (FileBrowserNode *) (iter-&gt;user_data);</td></tr>
+<tr class="codeline" data-linenumber="3432"><td class="num" id="LN3432">3432</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3433"><td class="num" id="LN3433">3433</td><td class="line"> <span class='keyword'>if</span> (<span class='macro'>NODE_IS_DUMMY (node)<span class='macro_popup'>(((node)-&gt;flags &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_DUMMY<br>))</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="3434"><td class="num" id="LN3434">3434</td><td class="line"> <span class='keyword'>return</span> PLUMA_FILE_BROWSER_STORE_RESULT_NO_CHANGE;</td></tr>
+<tr class="codeline" data-linenumber="3435"><td class="num" id="LN3435">3435</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3436"><td class="num" id="LN3436">3436</td><td class="line"> rows = g_list_append(<span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, pluma_file_browser_store_get_path_real (model, node));</td></tr>
+<tr class="codeline" data-linenumber="3437"><td class="num" id="LN3437">3437</td><td class="line"> result = pluma_file_browser_store_delete_all (model, rows, trash);</td></tr>
+<tr class="codeline" data-linenumber="3438"><td class="num" id="LN3438">3438</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3439"><td class="num" id="LN3439">3439</td><td class="line"> g_list_free_full (rows, (GDestroyNotify) gtk_tree_path_free);</td></tr>
+<tr class="codeline" data-linenumber="3440"><td class="num" id="LN3440">3440</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3441"><td class="num" id="LN3441">3441</td><td class="line"> <span class='keyword'>return</span> result;</td></tr>
+<tr class="codeline" data-linenumber="3442"><td class="num" id="LN3442">3442</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3443"><td class="num" id="LN3443">3443</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3444"><td class="num" id="LN3444">3444</td><td class="line">gboolean</td></tr>
+<tr class="codeline" data-linenumber="3445"><td class="num" id="LN3445">3445</td><td class="line">pluma_file_browser_store_new_file (PlumaFileBrowserStore * model,</td></tr>
+<tr class="codeline" data-linenumber="3446"><td class="num" id="LN3446">3446</td><td class="line"> GtkTreeIter * parent,</td></tr>
+<tr class="codeline" data-linenumber="3447"><td class="num" id="LN3447">3447</td><td class="line"> GtkTreeIter * iter)</td></tr>
+<tr class="codeline" data-linenumber="3448"><td class="num" id="LN3448">3448</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3449"><td class="num" id="LN3449">3449</td><td class="line"> GFile * file;</td></tr>
+<tr class="codeline" data-linenumber="3450"><td class="num" id="LN3450">3450</td><td class="line"> GFileOutputStream * stream;</td></tr>
+<tr class="codeline" data-linenumber="3451"><td class="num" id="LN3451">3451</td><td class="line"> FileBrowserNodeDir *parent_node;</td></tr>
+<tr class="codeline" data-linenumber="3452"><td class="num" id="LN3452">3452</td><td class="line"> gboolean result = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3453"><td class="num" id="LN3453">3453</td><td class="line"> FileBrowserNode *node;</td></tr>
+<tr class="codeline" data-linenumber="3454"><td class="num" id="LN3454">3454</td><td class="line"> GError * error = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3455"><td class="num" id="LN3455">3455</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3456"><td class="num" id="LN3456">3456</td><td class="line"> <span class='macro'>g_return_val_if_fail (PLUMA_IS_FILE_BROWSER_STORE (model), FALSE)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_352<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((model)); GType __t = ((pluma_file_browser_store_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_352 = 1; else _g_boolean_var_352 =<br> 0; _g_boolean_var_352; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "PLUMA_IS_FILE_BROWSER_STORE (model)"<br>); return ((0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3457"><td class="num" id="LN3457">3457</td><td class="line"> <span class='macro'>g_return_val_if_fail (parent != NULL, FALSE)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_353<br>; if (parent != ((void*)0)) _g_boolean_var_353 = 1; else _g_boolean_var_353<br> = 0; _g_boolean_var_353; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "parent != NULL")<br>; return ((0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3458"><td class="num" id="LN3458">3458</td><td class="line"> <span class='macro'>g_return_val_if_fail (parent-&gt;user_data != NULL, FALSE)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_354<br>; if (parent-&gt;user_data != ((void*)0)) _g_boolean_var_354 =<br> 1; else _g_boolean_var_354 = 0; _g_boolean_var_354; }), 1)))<br> { } else { g_return_if_fail_warning (((gchar*) 0), ((const char<br>*) (__func__)), "parent-&gt;user_data != NULL"); return ((0))<br>; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3459"><td class="num" id="LN3459">3459</td><td class="line"> <span class='macro'>g_return_val_if_fail (NODE_IS_DIR<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_355<br>; if (((((FileBrowserNode *) (parent-&gt;user_data))-&gt;flags<br> &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_DIRECTORY))) _g_boolean_var_355<br> = 1; else _g_boolean_var_355 = 0; _g_boolean_var_355; }), 1)<br>)) { } else { g_return_if_fail_warning (((gchar*) 0), ((const<br> char*) (__func__)), "NODE_IS_DIR ((FileBrowserNode *) (parent-&gt;user_data))"<br>); return ((0)); } } while (0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="3460"><td class="num" id="LN3460">3460</td><td class="line"> <span class='macro'>((FileBrowserNode *) (parent-&gt;user_data)),<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_355<br>; if (((((FileBrowserNode *) (parent-&gt;user_data))-&gt;flags<br> &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_DIRECTORY))) _g_boolean_var_355<br> = 1; else _g_boolean_var_355 = 0; _g_boolean_var_355; }), 1)<br>)) { } else { g_return_if_fail_warning (((gchar*) 0), ((const<br> char*) (__func__)), "NODE_IS_DIR ((FileBrowserNode *) (parent-&gt;user_data))"<br>); return ((0)); } } while (0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="3461"><td class="num" id="LN3461">3461</td><td class="line"> <span class='macro'>FALSE)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_355<br>; if (((((FileBrowserNode *) (parent-&gt;user_data))-&gt;flags<br> &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_DIRECTORY))) _g_boolean_var_355<br> = 1; else _g_boolean_var_355 = 0; _g_boolean_var_355; }), 1)<br>)) { } else { g_return_if_fail_warning (((gchar*) 0), ((const<br> char*) (__func__)), "NODE_IS_DIR ((FileBrowserNode *) (parent-&gt;user_data))"<br>); return ((0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3462"><td class="num" id="LN3462">3462</td><td class="line"> <span class='macro'>g_return_val_if_fail (iter != NULL, FALSE)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_356<br>; if (iter != ((void*)0)) _g_boolean_var_356 = 1; else _g_boolean_var_356<br> = 0; _g_boolean_var_356; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "iter != NULL"); return<br> ((0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3463"><td class="num" id="LN3463">3463</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3464"><td class="num" id="LN3464">3464</td><td class="line"> parent_node = <span class='macro'>FILE_BROWSER_NODE_DIR (parent-&gt;user_data)<span class='macro_popup'>((FileBrowserNodeDir *)(parent-&gt;user_data))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3465"><td class="num" id="LN3465">3465</td><td class="line"> <span class='comment'>/* Translators: This is the default name of new files created by the file browser pane. */</span></td></tr>
+<tr class="codeline" data-linenumber="3466"><td class="num" id="LN3466">3466</td><td class="line"> file = unique_new_name (((FileBrowserNode *) parent_node)-&gt;file, <span class='macro'>_(<span class='string_literal'>"file"</span>)<span class='macro_popup'>((char *) g_dgettext ("pluma", "file"))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3467"><td class="num" id="LN3467">3467</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3468"><td class="num" id="LN3468">3468</td><td class="line"> stream = g_file_create (file, G_FILE_CREATE_NONE, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, &amp;error);</td></tr>
+<tr class="codeline" data-linenumber="3469"><td class="num" id="LN3469">3469</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3470"><td class="num" id="LN3470">3470</td><td class="line"> <span class='keyword'>if</span> (!stream)</td></tr>
+<tr class="codeline" data-linenumber="3471"><td class="num" id="LN3471">3471</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="3472"><td class="num" id="LN3472">3472</td><td class="line"> g_signal_emit (model, model_signals[ERROR], 0,</td></tr>
+<tr class="codeline" data-linenumber="3473"><td class="num" id="LN3473">3473</td><td class="line"> PLUMA_FILE_BROWSER_ERROR_NEW_FILE,</td></tr>
+<tr class="codeline" data-linenumber="3474"><td class="num" id="LN3474">3474</td><td class="line"> error-&gt;message);</td></tr>
+<tr class="codeline" data-linenumber="3475"><td class="num" id="LN3475">3475</td><td class="line"> g_error_free (error);</td></tr>
+<tr class="codeline" data-linenumber="3476"><td class="num" id="LN3476">3476</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="3477"><td class="num" id="LN3477">3477</td><td class="line"> g_object_unref (stream);</td></tr>
+<tr class="codeline" data-linenumber="3478"><td class="num" id="LN3478">3478</td><td class="line"> node = model_add_node_from_file (model,</td></tr>
+<tr class="codeline" data-linenumber="3479"><td class="num" id="LN3479">3479</td><td class="line"> (FileBrowserNode *)parent_node,</td></tr>
+<tr class="codeline" data-linenumber="3480"><td class="num" id="LN3480">3480</td><td class="line"> file,</td></tr>
+<tr class="codeline" data-linenumber="3481"><td class="num" id="LN3481">3481</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3482"><td class="num" id="LN3482">3482</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3483"><td class="num" id="LN3483">3483</td><td class="line"> <span class='keyword'>if</span> (model_node_visibility (model, node)) {</td></tr>
+<tr class="codeline" data-linenumber="3484"><td class="num" id="LN3484">3484</td><td class="line"> iter-&gt;user_data = node;</td></tr>
+<tr class="codeline" data-linenumber="3485"><td class="num" id="LN3485">3485</td><td class="line"> result = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3486"><td class="num" id="LN3486">3486</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="3487"><td class="num" id="LN3487">3487</td><td class="line"> g_signal_emit (model, model_signals[ERROR], 0,</td></tr>
+<tr class="codeline" data-linenumber="3488"><td class="num" id="LN3488">3488</td><td class="line"> PLUMA_FILE_BROWSER_ERROR_NEW_FILE,</td></tr>
+<tr class="codeline" data-linenumber="3489"><td class="num" id="LN3489">3489</td><td class="line"> <span class='macro'>_<span class='macro_popup'>((char *) g_dgettext ("pluma", "The new file is currently filtered out. You need to adjust your filter settings to make the file visible"<br>))</span></span></td></tr>
+<tr class="codeline" data-linenumber="3490"><td class="num" id="LN3490">3490</td><td class="line"> <span class='macro'>(<span class='string_literal'>"The new file is currently filtered out. You need to adjust your filter settings to make the file visible"</span>)<span class='macro_popup'>((char *) g_dgettext ("pluma", "The new file is currently filtered out. You need to adjust your filter settings to make the file visible"<br>))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3491"><td class="num" id="LN3491">3491</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3492"><td class="num" id="LN3492">3492</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3493"><td class="num" id="LN3493">3493</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3494"><td class="num" id="LN3494">3494</td><td class="line"> g_object_unref (file);</td></tr>
+<tr class="codeline" data-linenumber="3495"><td class="num" id="LN3495">3495</td><td class="line"> <span class='keyword'>return</span> result;</td></tr>
+<tr class="codeline" data-linenumber="3496"><td class="num" id="LN3496">3496</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3497"><td class="num" id="LN3497">3497</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3498"><td class="num" id="LN3498">3498</td><td class="line">gboolean</td></tr>
+<tr class="codeline" data-linenumber="3499"><td class="num" id="LN3499">3499</td><td class="line">pluma_file_browser_store_new_directory (PlumaFileBrowserStore * model,</td></tr>
+<tr class="codeline" data-linenumber="3500"><td class="num" id="LN3500">3500</td><td class="line"> GtkTreeIter * parent,</td></tr>
+<tr class="codeline" data-linenumber="3501"><td class="num" id="LN3501">3501</td><td class="line"> GtkTreeIter * iter)</td></tr>
+<tr class="codeline" data-linenumber="3502"><td class="num" id="LN3502">3502</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3503"><td class="num" id="LN3503">3503</td><td class="line"> GFile * file;</td></tr>
+<tr class="codeline" data-linenumber="3504"><td class="num" id="LN3504">3504</td><td class="line"> FileBrowserNodeDir *parent_node;</td></tr>
+<tr class="codeline" data-linenumber="3505"><td class="num" id="LN3505">3505</td><td class="line"> GError * error = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3506"><td class="num" id="LN3506">3506</td><td class="line"> FileBrowserNode *node;</td></tr>
+<tr class="codeline" data-linenumber="3507"><td class="num" id="LN3507">3507</td><td class="line"> gboolean result = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3508"><td class="num" id="LN3508">3508</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3509"><td class="num" id="LN3509">3509</td><td class="line"> <span class='macro'>g_return_val_if_fail (PLUMA_IS_FILE_BROWSER_STORE (model), FALSE)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_357<br>; if ((((__extension__ ({ GTypeInstance *__inst = (GTypeInstance<br>*) ((model)); GType __t = ((pluma_file_browser_store_get_type<br> ())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))) _g_boolean_var_357 = 1; else _g_boolean_var_357 =<br> 0; _g_boolean_var_357; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "PLUMA_IS_FILE_BROWSER_STORE (model)"<br>); return ((0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3510"><td class="num" id="LN3510">3510</td><td class="line"> <span class='macro'>g_return_val_if_fail (parent != NULL, FALSE)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_358<br>; if (parent != ((void*)0)) _g_boolean_var_358 = 1; else _g_boolean_var_358<br> = 0; _g_boolean_var_358; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "parent != NULL")<br>; return ((0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3511"><td class="num" id="LN3511">3511</td><td class="line"> <span class='macro'>g_return_val_if_fail (parent-&gt;user_data != NULL, FALSE)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_359<br>; if (parent-&gt;user_data != ((void*)0)) _g_boolean_var_359 =<br> 1; else _g_boolean_var_359 = 0; _g_boolean_var_359; }), 1)))<br> { } else { g_return_if_fail_warning (((gchar*) 0), ((const char<br>*) (__func__)), "parent-&gt;user_data != NULL"); return ((0))<br>; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3512"><td class="num" id="LN3512">3512</td><td class="line"> <span class='macro'>g_return_val_if_fail (NODE_IS_DIR<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_360<br>; if (((((FileBrowserNode *) (parent-&gt;user_data))-&gt;flags<br> &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_DIRECTORY))) _g_boolean_var_360<br> = 1; else _g_boolean_var_360 = 0; _g_boolean_var_360; }), 1)<br>)) { } else { g_return_if_fail_warning (((gchar*) 0), ((const<br> char*) (__func__)), "NODE_IS_DIR ((FileBrowserNode *) (parent-&gt;user_data))"<br>); return ((0)); } } while (0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="3513"><td class="num" id="LN3513">3513</td><td class="line"> <span class='macro'>((FileBrowserNode *) (parent-&gt;user_data)),<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_360<br>; if (((((FileBrowserNode *) (parent-&gt;user_data))-&gt;flags<br> &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_DIRECTORY))) _g_boolean_var_360<br> = 1; else _g_boolean_var_360 = 0; _g_boolean_var_360; }), 1)<br>)) { } else { g_return_if_fail_warning (((gchar*) 0), ((const<br> char*) (__func__)), "NODE_IS_DIR ((FileBrowserNode *) (parent-&gt;user_data))"<br>); return ((0)); } } while (0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="3514"><td class="num" id="LN3514">3514</td><td class="line"> <span class='macro'>FALSE)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_360<br>; if (((((FileBrowserNode *) (parent-&gt;user_data))-&gt;flags<br> &amp; PLUMA_FILE_BROWSER_STORE_FLAG_IS_DIRECTORY))) _g_boolean_var_360<br> = 1; else _g_boolean_var_360 = 0; _g_boolean_var_360; }), 1)<br>)) { } else { g_return_if_fail_warning (((gchar*) 0), ((const<br> char*) (__func__)), "NODE_IS_DIR ((FileBrowserNode *) (parent-&gt;user_data))"<br>); return ((0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3515"><td class="num" id="LN3515">3515</td><td class="line"> <span class='macro'>g_return_val_if_fail (iter != NULL, FALSE)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_361<br>; if (iter != ((void*)0)) _g_boolean_var_361 = 1; else _g_boolean_var_361<br> = 0; _g_boolean_var_361; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "iter != NULL"); return<br> ((0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3516"><td class="num" id="LN3516">3516</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3517"><td class="num" id="LN3517">3517</td><td class="line"> parent_node = <span class='macro'>FILE_BROWSER_NODE_DIR (parent-&gt;user_data)<span class='macro_popup'>((FileBrowserNodeDir *)(parent-&gt;user_data))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3518"><td class="num" id="LN3518">3518</td><td class="line"> <span class='comment'>/* Translators: This is the default name of new directories created by the file browser pane. */</span></td></tr>
+<tr class="codeline" data-linenumber="3519"><td class="num" id="LN3519">3519</td><td class="line"> file = unique_new_name (((FileBrowserNode *) parent_node)-&gt;file, <span class='macro'>_(<span class='string_literal'>"directory"</span>)<span class='macro_popup'>((char *) g_dgettext ("pluma", "directory"))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3520"><td class="num" id="LN3520">3520</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3521"><td class="num" id="LN3521">3521</td><td class="line"> <span class='keyword'>if</span> (!g_file_make_directory (file, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, &amp;error)) {</td></tr>
+<tr class="codeline" data-linenumber="3522"><td class="num" id="LN3522">3522</td><td class="line"> g_signal_emit (model, model_signals[ERROR], 0,</td></tr>
+<tr class="codeline" data-linenumber="3523"><td class="num" id="LN3523">3523</td><td class="line"> PLUMA_FILE_BROWSER_ERROR_NEW_DIRECTORY,</td></tr>
+<tr class="codeline" data-linenumber="3524"><td class="num" id="LN3524">3524</td><td class="line"> error-&gt;message);</td></tr>
+<tr class="codeline" data-linenumber="3525"><td class="num" id="LN3525">3525</td><td class="line"> g_error_free (error);</td></tr>
+<tr class="codeline" data-linenumber="3526"><td class="num" id="LN3526">3526</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="3527"><td class="num" id="LN3527">3527</td><td class="line"> node = model_add_node_from_file (model,</td></tr>
+<tr class="codeline" data-linenumber="3528"><td class="num" id="LN3528">3528</td><td class="line"> (FileBrowserNode *)parent_node,</td></tr>
+<tr class="codeline" data-linenumber="3529"><td class="num" id="LN3529">3529</td><td class="line"> file,</td></tr>
+<tr class="codeline" data-linenumber="3530"><td class="num" id="LN3530">3530</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3531"><td class="num" id="LN3531">3531</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3532"><td class="num" id="LN3532">3532</td><td class="line"> <span class='keyword'>if</span> (model_node_visibility (model, node)) {</td></tr>
+<tr class="codeline" data-linenumber="3533"><td class="num" id="LN3533">3533</td><td class="line"> iter-&gt;user_data = node;</td></tr>
+<tr class="codeline" data-linenumber="3534"><td class="num" id="LN3534">3534</td><td class="line"> result = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="3535"><td class="num" id="LN3535">3535</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="3536"><td class="num" id="LN3536">3536</td><td class="line"> g_signal_emit (model, model_signals[ERROR], 0,</td></tr>
+<tr class="codeline" data-linenumber="3537"><td class="num" id="LN3537">3537</td><td class="line"> PLUMA_FILE_BROWSER_ERROR_NEW_FILE,</td></tr>
+<tr class="codeline" data-linenumber="3538"><td class="num" id="LN3538">3538</td><td class="line"> <span class='macro'>_<span class='macro_popup'>((char *) g_dgettext ("pluma", "The new directory is currently filtered out. You need to adjust your filter settings to make the directory visible"<br>))</span></span></td></tr>
+<tr class="codeline" data-linenumber="3539"><td class="num" id="LN3539">3539</td><td class="line"> <span class='macro'>(<span class='string_literal'>"The new directory is currently filtered out. You need to adjust your filter settings to make the directory visible"</span>)<span class='macro_popup'>((char *) g_dgettext ("pluma", "The new directory is currently filtered out. You need to adjust your filter settings to make the directory visible"<br>))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="3540"><td class="num" id="LN3540">3540</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3541"><td class="num" id="LN3541">3541</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="3542"><td class="num" id="LN3542">3542</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3543"><td class="num" id="LN3543">3543</td><td class="line"> g_object_unref (file);</td></tr>
+<tr class="codeline" data-linenumber="3544"><td class="num" id="LN3544">3544</td><td class="line"> <span class='keyword'>return</span> result;</td></tr>
+<tr class="codeline" data-linenumber="3545"><td class="num" id="LN3545">3545</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3546"><td class="num" id="LN3546">3546</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3547"><td class="num" id="LN3547">3547</td><td class="line"><span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="3548"><td class="num" id="LN3548">3548</td><td class="line">_pluma_file_browser_store_register_type (GTypeModule *type_module)</td></tr>
+<tr class="codeline" data-linenumber="3549"><td class="num" id="LN3549">3549</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="3550"><td class="num" id="LN3550">3550</td><td class="line"> pluma_file_browser_store_register_type (type_module);</td></tr>
+<tr class="codeline" data-linenumber="3551"><td class="num" id="LN3551">3551</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="3552"><td class="num" id="LN3552">3552</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="3553"><td class="num" id="LN3553">3553</td><td class="line"><span class='comment'>// ex:ts=8:noet:</span></td></tr>
+</table></body></html>
diff --git a/2023-05-28-030536-6612-1@f643dde74cbd_master/report-a608c3.html b/2023-05-28-030536-6612-1@f643dde74cbd_master/report-a608c3.html
new file mode 100644
index 00000000..c8402714
--- /dev/null
+++ b/2023-05-28-030536-6612-1@f643dde74cbd_master/report-a608c3.html
@@ -0,0 +1,1327 @@
+<!doctype html>
+<html>
+<head>
+<title>plumatextregion.c</title>
+
+<style type="text/css">
+body { color:#000000; background-color:#ffffff }
+body { font-family:Helvetica, sans-serif; font-size:10pt }
+h1 { font-size:14pt }
+.FileName { margin-top: 5px; margin-bottom: 5px; display: inline; }
+.FileNav { margin-left: 5px; margin-right: 5px; display: inline; }
+.FileNav a { text-decoration:none; font-size: larger; }
+.divider { margin-top: 30px; margin-bottom: 30px; height: 15px; }
+.divider { background-color: gray; }
+.code { border-collapse:collapse; width:100%; }
+.code { font-family: "Monospace", monospace; font-size:10pt }
+.code { line-height: 1.2em }
+.comment { color: green; font-style: oblique }
+.keyword { color: blue }
+.string_literal { color: red }
+.directive { color: darkmagenta }
+
+/* Macros and variables could have pop-up notes hidden by default.
+ - Macro pop-up: expansion of the macro
+ - Variable pop-up: value (table) of the variable */
+.macro_popup, .variable_popup { display: none; }
+
+/* Pop-up appears on mouse-hover event. */
+.macro:hover .macro_popup, .variable:hover .variable_popup {
+ display: block;
+ padding: 2px;
+ -webkit-border-radius:5px;
+ -webkit-box-shadow:1px 1px 7px #000;
+ border-radius:5px;
+ box-shadow:1px 1px 7px #000;
+ position: absolute;
+ top: -1em;
+ left:10em;
+ z-index: 1
+}
+
+.macro_popup {
+ border: 2px solid red;
+ background-color:#FFF0F0;
+ font-weight: normal;
+}
+
+.variable_popup {
+ border: 2px solid blue;
+ background-color:#F0F0FF;
+ font-weight: bold;
+ font-family: Helvetica, sans-serif;
+ font-size: 9pt;
+}
+
+/* Pop-up notes needs a relative position as a base where they pops up. */
+.macro, .variable {
+ background-color: PaleGoldenRod;
+ position: relative;
+}
+.macro { color: DarkMagenta; }
+
+#tooltiphint {
+ position: fixed;
+ width: 50em;
+ margin-left: -25em;
+ left: 50%;
+ padding: 10px;
+ border: 1px solid #b0b0b0;
+ border-radius: 2px;
+ box-shadow: 1px 1px 7px black;
+ background-color: #c0c0c0;
+ z-index: 2;
+}
+
+.num { width:2.5em; padding-right:2ex; background-color:#eeeeee }
+.num { text-align:right; font-size:8pt }
+.num { color:#444444 }
+.line { padding-left: 1ex; border-left: 3px solid #ccc }
+.line { white-space: pre }
+.msg { -webkit-box-shadow:1px 1px 7px #000 }
+.msg { box-shadow:1px 1px 7px #000 }
+.msg { -webkit-border-radius:5px }
+.msg { border-radius:5px }
+.msg { font-family:Helvetica, sans-serif; font-size:8pt }
+.msg { float:left }
+.msg { position:relative }
+.msg { padding:0.25em 1ex 0.25em 1ex }
+.msg { margin-top:10px; margin-bottom:10px }
+.msg { font-weight:bold }
+.msg { max-width:60em; word-wrap: break-word; white-space: pre-wrap }
+.msgT { padding:0x; spacing:0x }
+.msgEvent { background-color:#fff8b4; color:#000000 }
+.msgControl { background-color:#bbbbbb; color:#000000 }
+.msgNote { background-color:#ddeeff; color:#000000 }
+.mrange { background-color:#dfddf3 }
+.mrange { border-bottom:1px solid #6F9DBE }
+.PathIndex { font-weight: bold; padding:0px 5px; margin-right:5px; }
+.PathIndex { -webkit-border-radius:8px }
+.PathIndex { border-radius:8px }
+.PathIndexEvent { background-color:#bfba87 }
+.PathIndexControl { background-color:#8c8c8c }
+.PathIndexPopUp { background-color: #879abc; }
+.PathNav a { text-decoration:none; font-size: larger }
+.CodeInsertionHint { font-weight: bold; background-color: #10dd10 }
+.CodeRemovalHint { background-color:#de1010 }
+.CodeRemovalHint { border-bottom:1px solid #6F9DBE }
+.msg.selected{ background-color:orange !important; }
+
+table.simpletable {
+ padding: 5px;
+ font-size:12pt;
+ margin:20px;
+ border-collapse: collapse; border-spacing: 0px;
+}
+td.rowname {
+ text-align: right;
+ vertical-align: top;
+ font-weight: bold;
+ color:#444444;
+ padding-right:2ex;
+}
+
+/* Hidden text. */
+input.spoilerhider + label {
+ cursor: pointer;
+ text-decoration: underline;
+ display: block;
+}
+input.spoilerhider {
+ display: none;
+}
+input.spoilerhider ~ .spoiler {
+ overflow: hidden;
+ margin: 10px auto 0;
+ height: 0;
+ opacity: 0;
+}
+input.spoilerhider:checked + label + .spoiler{
+ height: auto;
+ opacity: 1;
+}
+</style>
+</head>
+<body>
+<!-- BUGDESC Value stored to 'l' is never read -->
+
+<!-- BUGTYPE Dead assignment -->
+
+<!-- BUGCATEGORY Unused code -->
+
+<!-- BUGFILE /rootdir/pluma/plumatextregion.c -->
+
+<!-- FILENAME plumatextregion.c -->
+
+<!-- FUNCTIONNAME pluma_text_region_add -->
+
+<!-- ISSUEHASHCONTENTOFLINEINCONTEXT a608c31e863d5f5a3e6aac4e11ff0d74 -->
+
+<!-- BUGLINE 265 -->
+
+<!-- BUGCOLUMN 4 -->
+
+<!-- BUGPATHLENGTH 1 -->
+
+<!-- BUGMETAEND -->
+<!-- REPORTHEADER -->
+<h3>Bug Summary</h3>
+<table class="simpletable">
+<tr><td class="rowname">File:</td><td>pluma/plumatextregion.c</td></tr>
+<tr><td class="rowname">Warning:</td><td><a href="#EndPath">line 265, column 4</a><br />Value stored to 'l' is never read</td></tr>
+
+</table>
+<!-- REPORTSUMMARYEXTRA -->
+<h3>Annotated Source Code</h3>
+<p>Press <a href="#" onclick="toggleHelp(); return false;">'?'</a>
+ to see keyboard shortcuts</p>
+<input type="checkbox" class="spoilerhider" id="showinvocation" />
+<label for="showinvocation" >Show analyzer invocation</label>
+<div class="spoiler">clang -cc1 -cc1 -triple x86_64-redhat-linux-gnu -analyze -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name plumatextregion.c -analyzer-checker=core -analyzer-checker=apiModeling -analyzer-checker=unix -analyzer-checker=deadcode -analyzer-checker=security.insecureAPI.UncheckedReturn -analyzer-checker=security.insecureAPI.getpw -analyzer-checker=security.insecureAPI.gets -analyzer-checker=security.insecureAPI.mktemp -analyzer-checker=security.insecureAPI.mkstemp -analyzer-checker=security.insecureAPI.vfork -analyzer-checker=nullability.NullPassedToNonnull -analyzer-checker=nullability.NullReturnedFromNonnull -analyzer-output plist -w -setup-static-analyzer -mrelocation-model pic -pic-level 2 -fhalf-no-semantic-interposition -mframe-pointer=none -fmath-errno -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=2 -target-cpu x86-64 -tune-cpu generic -debugger-tuning=gdb -fcoverage-compilation-dir=/rootdir/pluma -resource-dir /usr/lib64/clang/16 -D HAVE_CONFIG_H -I . -I .. -I .. -I . -I ./mate-submodules/libegg -I /usr/include/libxml2 -I /usr/include/glib-2.0 -I /usr/lib64/glib-2.0/include -I /usr/include/sysprof-4 -I /usr/include/libmount -I /usr/include/blkid -I /usr/include/gtk-3.0 -I /usr/include/pango-1.0 -I /usr/include/harfbuzz -I /usr/include/freetype2 -I /usr/include/libpng16 -I /usr/include/fribidi -I /usr/include/cairo -I /usr/include/pixman-1 -I /usr/include/gdk-pixbuf-2.0 -I /usr/include/gio-unix-2.0 -I /usr/include/cloudproviders -I /usr/include/atk-1.0 -I /usr/include/at-spi2-atk/2.0 -I /usr/include/at-spi-2.0 -I /usr/include/dbus-1.0 -I /usr/lib64/dbus-1.0/include -I /usr/include/gtksourceview-4 -I /usr/include/libpeas-1.0 -I /usr/include/gobject-introspection-1.0 -I /usr/include/gobject-introspection-1.0 -I /usr/include/glib-2.0 -I /usr/lib64/glib-2.0/include -I /usr/include/sysprof-4 -D DATADIR="/usr/local/share" -D PLUMA_DATADIR="/usr/local/share/pluma" -D PLUMA_LOCALEDIR="/usr/local/share/locale/" -D LIBDIR="/usr/local/lib" -D PLUMA_LIBDIR="/usr/local/lib/pluma" -D PIC -internal-isystem /usr/lib64/clang/16/include -internal-isystem /usr/local/include -internal-isystem /usr/bin/../lib/gcc/x86_64-redhat-linux/13/../../../../x86_64-redhat-linux/include -internal-externc-isystem /include -internal-externc-isystem /usr/include -O2 -Wno-unused-parameter -fdebug-compilation-dir=/rootdir/pluma -ferror-limit 19 -fgnuc-version=4.2.1 -vectorize-loops -vectorize-slp -analyzer-checker deadcode.DeadStores -analyzer-checker alpha.deadcode.UnreachableCode -analyzer-checker alpha.core.CastSize -analyzer-checker alpha.core.CastToStruct -analyzer-checker alpha.core.IdenticalExpr -analyzer-checker alpha.core.SizeofPtr -analyzer-checker alpha.security.ArrayBoundV2 -analyzer-checker alpha.security.MallocOverflow -analyzer-checker alpha.security.ReturnPtrRange -analyzer-checker alpha.unix.SimpleStream -analyzer-checker alpha.unix.cstring.BufferOverlap -analyzer-checker alpha.unix.cstring.NotNullTerminated -analyzer-checker alpha.unix.cstring.OutOfBounds -analyzer-checker alpha.core.FixedAddr -analyzer-checker security.insecureAPI.strcpy -analyzer-output=html -faddrsig -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o /rootdir/html-report/2023-05-28-030536-6612-1 -x c plumatextregion.c
+</div>
+<div id='tooltiphint' hidden="true">
+ <p>Keyboard shortcuts: </p>
+ <ul>
+ <li>Use 'j/k' keys for keyboard navigation</li>
+ <li>Use 'Shift+S' to show/hide relevant lines</li>
+ <li>Use '?' to toggle this window</li>
+ </ul>
+ <a href="#" onclick="toggleHelp(); return false;">Close</a>
+</div>
+<script type='text/javascript'>
+var relevant_lines = {"1": {"265": 1}};
+
+var filterCounterexample = function (hide) {
+ var tables = document.getElementsByClassName("code");
+ for (var t=0; t<tables.length; t++) {
+ var table = tables[t];
+ var file_id = table.getAttribute("data-fileid");
+ var lines_in_fid = relevant_lines[file_id];
+ if (!lines_in_fid) {
+ lines_in_fid = {};
+ }
+ var lines = table.getElementsByClassName("codeline");
+ for (var i=0; i<lines.length; i++) {
+ var el = lines[i];
+ var lineNo = el.getAttribute("data-linenumber");
+ if (!lines_in_fid[lineNo]) {
+ if (hide) {
+ el.setAttribute("hidden", "");
+ } else {
+ el.removeAttribute("hidden");
+ }
+ }
+ }
+ }
+}
+
+window.addEventListener("keydown", function (event) {
+ if (event.defaultPrevented) {
+ return;
+ }
+ // SHIFT + S
+ if (event.shiftKey && event.keyCode == 83) {
+ var checked = document.getElementsByName("showCounterexample")[0].checked;
+ filterCounterexample(!checked);
+ document.getElementsByName("showCounterexample")[0].click();
+ } else {
+ return;
+ }
+ event.preventDefault();
+}, true);
+
+document.addEventListener("DOMContentLoaded", function() {
+ document.querySelector('input[name="showCounterexample"]').onchange=
+ function (event) {
+ filterCounterexample(this.checked);
+ };
+});
+</script>
+
+<form>
+ <input type="checkbox" name="showCounterexample" id="showCounterexample" />
+ <label for="showCounterexample">
+ Show only relevant lines
+ </label>
+ <input type="checkbox" name="showArrows"
+ id="showArrows" style="margin-left: 10px" />
+ <label for="showArrows">
+ Show control flow arrows
+ </label>
+</form>
+
+<script type='text/javascript'>
+// Return range of numbers from a range [lower, upper).
+function range(lower, upper) {
+ var array = [];
+ for (var i = lower; i <= upper; ++i) {
+ array.push(i);
+ }
+ return array;
+}
+
+var getRelatedArrowIndices = function(pathId) {
+ // HTML numeration of events is a bit different than it is in the path.
+ // Everything is rotated one step to the right, so the last element
+ // (error diagnostic) has index 0.
+ if (pathId == 0) {
+ // arrowIndices has at least 2 elements
+ pathId = arrowIndices.length - 1;
+ }
+
+ return range(arrowIndices[pathId], arrowIndices[pathId - 1]);
+}
+
+var highlightArrowsForSelectedEvent = function() {
+ const selectedNum = findNum();
+ const arrowIndicesToHighlight = getRelatedArrowIndices(selectedNum);
+ arrowIndicesToHighlight.forEach((index) => {
+ var arrow = document.querySelector("#arrow" + index);
+ if(arrow) {
+ classListAdd(arrow, "selected")
+ }
+ });
+}
+
+var getAbsoluteBoundingRect = function(element) {
+ const relative = element.getBoundingClientRect();
+ return {
+ left: relative.left + window.pageXOffset,
+ right: relative.right + window.pageXOffset,
+ top: relative.top + window.pageYOffset,
+ bottom: relative.bottom + window.pageYOffset,
+ height: relative.height,
+ width: relative.width
+ };
+}
+
+var drawArrow = function(index) {
+ // This function is based on the great answer from SO:
+ // https://stackoverflow.com/a/39575674/11582326
+ var start = document.querySelector("#start" + index);
+ var end = document.querySelector("#end" + index);
+ var arrow = document.querySelector("#arrow" + index);
+
+ var startRect = getAbsoluteBoundingRect(start);
+ var endRect = getAbsoluteBoundingRect(end);
+
+ // It is an arrow from a token to itself, no need to visualize it.
+ if (startRect.top == endRect.top &&
+ startRect.left == endRect.left)
+ return;
+
+ // Each arrow is a very simple Bézier curve, with two nodes and
+ // two handles. So, we need to calculate four points in the window:
+ // * start node
+ var posStart = { x: 0, y: 0 };
+ // * end node
+ var posEnd = { x: 0, y: 0 };
+ // * handle for the start node
+ var startHandle = { x: 0, y: 0 };
+ // * handle for the end node
+ var endHandle = { x: 0, y: 0 };
+ // One can visualize it as follows:
+ //
+ // start handle
+ // /
+ // X"""_.-""""X
+ // .' \
+ // / start node
+ // |
+ // |
+ // | end node
+ // \ /
+ // `->X
+ // X-'
+ // \
+ // end handle
+ //
+ // NOTE: (0, 0) is the top left corner of the window.
+
+ // We have 3 similar, but still different scenarios to cover:
+ //
+ // 1. Two tokens on different lines.
+ // -xxx
+ // /
+ // \
+ // -> xxx
+ // In this situation, we draw arrow on the left curving to the left.
+ // 2. Two tokens on the same line, and the destination is on the right.
+ // ____
+ // / \
+ // / V
+ // xxx xxx
+ // In this situation, we draw arrow above curving upwards.
+ // 3. Two tokens on the same line, and the destination is on the left.
+ // xxx xxx
+ // ^ /
+ // \____/
+ // In this situation, we draw arrow below curving downwards.
+ const onDifferentLines = startRect.top <= endRect.top - 5 ||
+ startRect.top >= endRect.top + 5;
+ const leftToRight = startRect.left < endRect.left;
+
+ // NOTE: various magic constants are chosen empirically for
+ // better positioning and look
+ if (onDifferentLines) {
+ // Case #1
+ const topToBottom = startRect.top < endRect.top;
+ posStart.x = startRect.left - 1;
+ // We don't want to start it at the top left corner of the token,
+ // it doesn't feel like this is where the arrow comes from.
+ // For this reason, we start it in the middle of the left side
+ // of the token.
+ posStart.y = startRect.top + startRect.height / 2;
+
+ // End node has arrow head and we give it a bit more space.
+ posEnd.x = endRect.left - 4;
+ posEnd.y = endRect.top;
+
+ // Utility object with x and y offsets for handles.
+ var curvature = {
+ // We want bottom-to-top arrow to curve a bit more, so it doesn't
+ // overlap much with top-to-bottom curves (much more frequent).
+ x: topToBottom ? 15 : 25,
+ y: Math.min((posEnd.y - posStart.y) / 3, 10)
+ }
+
+ // When destination is on the different line, we can make a
+ // curvier arrow because we have space for it.
+ // So, instead of using
+ //
+ // startHandle.x = posStart.x - curvature.x
+ // endHandle.x = posEnd.x - curvature.x
+ //
+ // We use the leftmost of these two values for both handles.
+ startHandle.x = Math.min(posStart.x, posEnd.x) - curvature.x;
+ endHandle.x = startHandle.x;
+
+ // Curving downwards from the start node...
+ startHandle.y = posStart.y + curvature.y;
+ // ... and upwards from the end node.
+ endHandle.y = posEnd.y - curvature.y;
+
+ } else if (leftToRight) {
+ // Case #2
+ // Starting from the top right corner...
+ posStart.x = startRect.right - 1;
+ posStart.y = startRect.top;
+
+ // ...and ending at the top left corner of the end token.
+ posEnd.x = endRect.left + 1;
+ posEnd.y = endRect.top - 1;
+
+ // Utility object with x and y offsets for handles.
+ var curvature = {
+ x: Math.min((posEnd.x - posStart.x) / 3, 15),
+ y: 5
+ }
+
+ // Curving to the right...
+ startHandle.x = posStart.x + curvature.x;
+ // ... and upwards from the start node.
+ startHandle.y = posStart.y - curvature.y;
+
+ // And to the left...
+ endHandle.x = posEnd.x - curvature.x;
+ // ... and upwards from the end node.
+ endHandle.y = posEnd.y - curvature.y;
+
+ } else {
+ // Case #3
+ // Starting from the bottom right corner...
+ posStart.x = startRect.right;
+ posStart.y = startRect.bottom;
+
+ // ...and ending also at the bottom right corner, but of the end token.
+ posEnd.x = endRect.right - 1;
+ posEnd.y = endRect.bottom + 1;
+
+ // Utility object with x and y offsets for handles.
+ var curvature = {
+ x: Math.min((posStart.x - posEnd.x) / 3, 15),
+ y: 5
+ }
+
+ // Curving to the left...
+ startHandle.x = posStart.x - curvature.x;
+ // ... and downwards from the start node.
+ startHandle.y = posStart.y + curvature.y;
+
+ // And to the right...
+ endHandle.x = posEnd.x + curvature.x;
+ // ... and downwards from the end node.
+ endHandle.y = posEnd.y + curvature.y;
+ }
+
+ // Put it all together into a path.
+ // More information on the format:
+ // https://developer.mozilla.org/en-US/docs/Web/SVG/Tutorial/Paths
+ var pathStr = "M" + posStart.x + "," + posStart.y + " " +
+ "C" + startHandle.x + "," + startHandle.y + " " +
+ endHandle.x + "," + endHandle.y + " " +
+ posEnd.x + "," + posEnd.y;
+
+ arrow.setAttribute("d", pathStr);
+};
+
+var drawArrows = function() {
+ const numOfArrows = document.querySelectorAll("path[id^=arrow]").length;
+ for (var i = 0; i < numOfArrows; ++i) {
+ drawArrow(i);
+ }
+}
+
+var toggleArrows = function(event) {
+ const arrows = document.querySelector("#arrows");
+ if (event.target.checked) {
+ arrows.setAttribute("visibility", "visible");
+ } else {
+ arrows.setAttribute("visibility", "hidden");
+ }
+}
+
+window.addEventListener("resize", drawArrows);
+document.addEventListener("DOMContentLoaded", function() {
+ // Whenever we show invocation, locations change, i.e. we
+ // need to redraw arrows.
+ document
+ .querySelector('input[id="showinvocation"]')
+ .addEventListener("click", drawArrows);
+ // Hiding irrelevant lines also should cause arrow rerender.
+ document
+ .querySelector('input[name="showCounterexample"]')
+ .addEventListener("change", drawArrows);
+ document
+ .querySelector('input[name="showArrows"]')
+ .addEventListener("change", toggleArrows);
+ drawArrows();
+ // Default highlighting for the last event.
+ highlightArrowsForSelectedEvent();
+});
+</script>
+
+<script type='text/javascript'>
+var digitMatcher = new RegExp("[0-9]+");
+
+var querySelectorAllArray = function(selector) {
+ return Array.prototype.slice.call(
+ document.querySelectorAll(selector));
+}
+
+document.addEventListener("DOMContentLoaded", function() {
+ querySelectorAllArray(".PathNav > a").forEach(
+ function(currentValue, currentIndex) {
+ var hrefValue = currentValue.getAttribute("href");
+ currentValue.onclick = function() {
+ scrollTo(document.querySelector(hrefValue));
+ return false;
+ };
+ });
+});
+
+var findNum = function() {
+ var s = document.querySelector(".msg.selected");
+ if (!s || s.id == "EndPath") {
+ return 0;
+ }
+ var out = parseInt(digitMatcher.exec(s.id)[0]);
+ return out;
+};
+
+var classListAdd = function(el, theClass) {
+ if(!el.className.baseVal)
+ el.className += " " + theClass;
+ else
+ el.className.baseVal += " " + theClass;
+};
+
+var classListRemove = function(el, theClass) {
+ var className = (!el.className.baseVal) ?
+ el.className : el.className.baseVal;
+ className = className.replace(" " + theClass, "");
+ if(!el.className.baseVal)
+ el.className = className;
+ else
+ el.className.baseVal = className;
+};
+
+var scrollTo = function(el) {
+ querySelectorAllArray(".selected").forEach(function(s) {
+ classListRemove(s, "selected");
+ });
+ classListAdd(el, "selected");
+ window.scrollBy(0, el.getBoundingClientRect().top -
+ (window.innerHeight / 2));
+ highlightArrowsForSelectedEvent();
+};
+
+var move = function(num, up, numItems) {
+ if (num == 1 && up || num == numItems - 1 && !up) {
+ return 0;
+ } else if (num == 0 && up) {
+ return numItems - 1;
+ } else if (num == 0 && !up) {
+ return 1 % numItems;
+ }
+ return up ? num - 1 : num + 1;
+}
+
+var numToId = function(num) {
+ if (num == 0) {
+ return document.getElementById("EndPath")
+ }
+ return document.getElementById("Path" + num);
+};
+
+var navigateTo = function(up) {
+ var numItems = document.querySelectorAll(
+ ".line > .msgEvent, .line > .msgControl").length;
+ var currentSelected = findNum();
+ var newSelected = move(currentSelected, up, numItems);
+ var newEl = numToId(newSelected, numItems);
+
+ // Scroll element into center.
+ scrollTo(newEl);
+};
+
+window.addEventListener("keydown", function (event) {
+ if (event.defaultPrevented) {
+ return;
+ }
+ // key 'j'
+ if (event.keyCode == 74) {
+ navigateTo(/*up=*/false);
+ // key 'k'
+ } else if (event.keyCode == 75) {
+ navigateTo(/*up=*/true);
+ } else {
+ return;
+ }
+ event.preventDefault();
+}, true);
+</script>
+
+<script type='text/javascript'>
+
+var toggleHelp = function() {
+ var hint = document.querySelector("#tooltiphint");
+ var attributeName = "hidden";
+ if (hint.hasAttribute(attributeName)) {
+ hint.removeAttribute(attributeName);
+ } else {
+ hint.setAttribute("hidden", "true");
+ }
+};
+window.addEventListener("keydown", function (event) {
+ if (event.defaultPrevented) {
+ return;
+ }
+ if (event.key == "?") {
+ toggleHelp();
+ } else {
+ return;
+ }
+ event.preventDefault();
+});
+</script>
+
+<style type="text/css">
+ svg {
+ position:absolute;
+ top:0;
+ left:0;
+ height:100%;
+ width:100%;
+ pointer-events: none;
+ overflow: visible
+ }
+ .arrow {
+ stroke-opacity: 0.2;
+ stroke-width: 1;
+ marker-end: url(#arrowhead);
+ }
+
+ .arrow.selected {
+ stroke-opacity: 0.6;
+ stroke-width: 2;
+ marker-end: url(#arrowheadSelected);
+ }
+
+ .arrowhead {
+ orient: auto;
+ stroke: none;
+ opacity: 0.6;
+ fill: blue;
+ }
+</style>
+<svg xmlns="http://www.w3.org/2000/svg">
+ <defs>
+ <marker id="arrowheadSelected" class="arrowhead" opacity="0.6"
+ viewBox="0 0 10 10" refX="3" refY="5"
+ markerWidth="4" markerHeight="4">
+ <path d="M 0 0 L 10 5 L 0 10 z" />
+ </marker>
+ <marker id="arrowhead" class="arrowhead" opacity="0.2"
+ viewBox="0 0 10 10" refX="3" refY="5"
+ markerWidth="4" markerHeight="4">
+ <path d="M 0 0 L 10 5 L 0 10 z" />
+ </marker>
+ </defs>
+ <g id="arrows" fill="none" stroke="blue" visibility="hidden">
+
+ </g>
+</svg>
+<script type='text/javascript'>
+const arrowIndices = [ 0,0 ]
+</script>
+<table class="code" data-fileid="1">
+<tr class="codeline" data-linenumber="1"><td class="num" id="LN1">1</td><td class="line"><span class='comment'>/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*-</span></td></tr>
+<tr class="codeline" data-linenumber="2"><td class="num" id="LN2">2</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="3"><td class="num" id="LN3">3</td><td class="line"> <span class='comment'>* plumatextregion.h - GtkTextMark based region utility functions</span></td></tr>
+<tr class="codeline" data-linenumber="4"><td class="num" id="LN4">4</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="5"><td class="num" id="LN5">5</td><td class="line"> <span class='comment'>* This file is part of the GtkSourceView widget</span></td></tr>
+<tr class="codeline" data-linenumber="6"><td class="num" id="LN6">6</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="7"><td class="num" id="LN7">7</td><td class="line"> <span class='comment'>* Copyright (C) 2002 Gustavo Giráldez &lt;[email protected]&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="8"><td class="num" id="LN8">8</td><td class="line"> <span class='comment'>* Copyright (C) 2012-2021 MATE Developers</span></td></tr>
+<tr class="codeline" data-linenumber="9"><td class="num" id="LN9">9</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="10"><td class="num" id="LN10">10</td><td class="line"> <span class='comment'>* This program is free software; you can redistribute it and/or modify</span></td></tr>
+<tr class="codeline" data-linenumber="11"><td class="num" id="LN11">11</td><td class="line"> <span class='comment'>* it under the terms of the GNU General Public License as published by</span></td></tr>
+<tr class="codeline" data-linenumber="12"><td class="num" id="LN12">12</td><td class="line"> <span class='comment'>* the Free Software Foundation; either version 2 of the License, or</span></td></tr>
+<tr class="codeline" data-linenumber="13"><td class="num" id="LN13">13</td><td class="line"> <span class='comment'>* (at your option) any later version.</span></td></tr>
+<tr class="codeline" data-linenumber="14"><td class="num" id="LN14">14</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="15"><td class="num" id="LN15">15</td><td class="line"> <span class='comment'>* This program is distributed in the hope that it will be useful,</span></td></tr>
+<tr class="codeline" data-linenumber="16"><td class="num" id="LN16">16</td><td class="line"> <span class='comment'>* but WITHOUT ANY WARRANTY; without even the implied warranty of</span></td></tr>
+<tr class="codeline" data-linenumber="17"><td class="num" id="LN17">17</td><td class="line"> <span class='comment'>* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></td></tr>
+<tr class="codeline" data-linenumber="18"><td class="num" id="LN18">18</td><td class="line"> <span class='comment'>* GNU General Public License for more details.</span></td></tr>
+<tr class="codeline" data-linenumber="19"><td class="num" id="LN19">19</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="20"><td class="num" id="LN20">20</td><td class="line"> <span class='comment'>* You should have received a copy of the GNU General Public License</span></td></tr>
+<tr class="codeline" data-linenumber="21"><td class="num" id="LN21">21</td><td class="line"> <span class='comment'>* along with this program; if not, write to the Free Software</span></td></tr>
+<tr class="codeline" data-linenumber="22"><td class="num" id="LN22">22</td><td class="line"> <span class='comment'>* Foundation, Inc., 51 Franklin St, Fifth Floor,</span></td></tr>
+<tr class="codeline" data-linenumber="23"><td class="num" id="LN23">23</td><td class="line"> <span class='comment'>* Boston, MA 02110-1301, USA.</span></td></tr>
+<tr class="codeline" data-linenumber="24"><td class="num" id="LN24">24</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="25"><td class="num" id="LN25">25</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="26"><td class="num" id="LN26">26</td><td class="line"><span class='directive'>#ifdef <span class='macro'>HAVE_CONFIG_H<span class='macro_popup'>1</span></span></span></td></tr>
+<tr class="codeline" data-linenumber="27"><td class="num" id="LN27">27</td><td class="line"><span class='directive'>#include &lt;config.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="28"><td class="num" id="LN28">28</td><td class="line"><span class='directive'>#endif</span></td></tr>
+<tr class="codeline" data-linenumber="29"><td class="num" id="LN29">29</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="30"><td class="num" id="LN30">30</td><td class="line"><span class='directive'>#include &lt;glib.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="31"><td class="num" id="LN31">31</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="32"><td class="num" id="LN32">32</td><td class="line"><span class='directive'>#include "plumatextregion.h"</span></td></tr>
+<tr class="codeline" data-linenumber="33"><td class="num" id="LN33">33</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="34"><td class="num" id="LN34">34</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="35"><td class="num" id="LN35">35</td><td class="line"><span class='directive'>#undef ENABLE_DEBUG</span></td></tr>
+<tr class="codeline" data-linenumber="36"><td class="num" id="LN36">36</td><td class="line"><span class='comment'>/*</span></td></tr>
+<tr class="codeline" data-linenumber="37"><td class="num" id="LN37">37</td><td class="line"><span class='comment'>#define ENABLE_DEBUG</span></td></tr>
+<tr class="codeline" data-linenumber="38"><td class="num" id="LN38">38</td><td class="line"><span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="39"><td class="num" id="LN39">39</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="40"><td class="num" id="LN40">40</td><td class="line"><span class='directive'>#ifdef ENABLE_DEBUG</span></td></tr>
+<tr class="codeline" data-linenumber="41"><td class="num" id="LN41">41</td><td class="line"><span class='directive'>#define DEBUG(x) (x)</span></td></tr>
+<tr class="codeline" data-linenumber="42"><td class="num" id="LN42">42</td><td class="line"><span class='directive'>#else</span></td></tr>
+<tr class="codeline" data-linenumber="43"><td class="num" id="LN43">43</td><td class="line"><span class='directive'>#define DEBUG(x)</span></td></tr>
+<tr class="codeline" data-linenumber="44"><td class="num" id="LN44">44</td><td class="line"><span class='directive'>#endif</span></td></tr>
+<tr class="codeline" data-linenumber="45"><td class="num" id="LN45">45</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="46"><td class="num" id="LN46">46</td><td class="line"><span class='keyword'>typedef</span> <span class='keyword'>struct</span> _Subregion {</td></tr>
+<tr class="codeline" data-linenumber="47"><td class="num" id="LN47">47</td><td class="line"> GtkTextMark *start;</td></tr>
+<tr class="codeline" data-linenumber="48"><td class="num" id="LN48">48</td><td class="line"> GtkTextMark *end;</td></tr>
+<tr class="codeline" data-linenumber="49"><td class="num" id="LN49">49</td><td class="line">} Subregion;</td></tr>
+<tr class="codeline" data-linenumber="50"><td class="num" id="LN50">50</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="51"><td class="num" id="LN51">51</td><td class="line"><span class='keyword'>struct</span> _PlumaTextRegion {</td></tr>
+<tr class="codeline" data-linenumber="52"><td class="num" id="LN52">52</td><td class="line"> GtkTextBuffer *buffer;</td></tr>
+<tr class="codeline" data-linenumber="53"><td class="num" id="LN53">53</td><td class="line"> GList *subregions;</td></tr>
+<tr class="codeline" data-linenumber="54"><td class="num" id="LN54">54</td><td class="line"> guint32 time_stamp;</td></tr>
+<tr class="codeline" data-linenumber="55"><td class="num" id="LN55">55</td><td class="line">};</td></tr>
+<tr class="codeline" data-linenumber="56"><td class="num" id="LN56">56</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="57"><td class="num" id="LN57">57</td><td class="line"><span class='keyword'>typedef</span> <span class='keyword'>struct</span> _PlumaTextRegionIteratorReal PlumaTextRegionIteratorReal;</td></tr>
+<tr class="codeline" data-linenumber="58"><td class="num" id="LN58">58</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="59"><td class="num" id="LN59">59</td><td class="line"><span class='keyword'>struct</span> _PlumaTextRegionIteratorReal {</td></tr>
+<tr class="codeline" data-linenumber="60"><td class="num" id="LN60">60</td><td class="line"> PlumaTextRegion *region;</td></tr>
+<tr class="codeline" data-linenumber="61"><td class="num" id="LN61">61</td><td class="line"> guint32 region_time_stamp;</td></tr>
+<tr class="codeline" data-linenumber="62"><td class="num" id="LN62">62</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="63"><td class="num" id="LN63">63</td><td class="line"> GList *subregions;</td></tr>
+<tr class="codeline" data-linenumber="64"><td class="num" id="LN64">64</td><td class="line">};</td></tr>
+<tr class="codeline" data-linenumber="65"><td class="num" id="LN65">65</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="66"><td class="num" id="LN66">66</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="67"><td class="num" id="LN67">67</td><td class="line"><span class='comment'>/* ----------------------------------------------------------------------</span></td></tr>
+<tr class="codeline" data-linenumber="68"><td class="num" id="LN68">68</td><td class="line"> <span class='comment'>Private interface</span></td></tr>
+<tr class="codeline" data-linenumber="69"><td class="num" id="LN69">69</td><td class="line"> <span class='comment'>---------------------------------------------------------------------- */</span></td></tr>
+<tr class="codeline" data-linenumber="70"><td class="num" id="LN70">70</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="71"><td class="num" id="LN71">71</td><td class="line"><span class='comment'>/* Find and return a subregion node which contains the given text</span></td></tr>
+<tr class="codeline" data-linenumber="72"><td class="num" id="LN72">72</td><td class="line"> <span class='comment'>iter. If left_side is TRUE, return the subregion which contains</span></td></tr>
+<tr class="codeline" data-linenumber="73"><td class="num" id="LN73">73</td><td class="line"> <span class='comment'>the text iter or which is the leftmost; else return the rightmost</span></td></tr>
+<tr class="codeline" data-linenumber="74"><td class="num" id="LN74">74</td><td class="line"> <span class='comment'>subregion */</span></td></tr>
+<tr class="codeline" data-linenumber="75"><td class="num" id="LN75">75</td><td class="line"><span class='keyword'>static</span> GList *</td></tr>
+<tr class="codeline" data-linenumber="76"><td class="num" id="LN76">76</td><td class="line">find_nearest_subregion (PlumaTextRegion *region,</td></tr>
+<tr class="codeline" data-linenumber="77"><td class="num" id="LN77">77</td><td class="line"> <span class='keyword'>const</span> GtkTextIter *iter,</td></tr>
+<tr class="codeline" data-linenumber="78"><td class="num" id="LN78">78</td><td class="line"> GList *begin,</td></tr>
+<tr class="codeline" data-linenumber="79"><td class="num" id="LN79">79</td><td class="line"> gboolean leftmost,</td></tr>
+<tr class="codeline" data-linenumber="80"><td class="num" id="LN80">80</td><td class="line"> gboolean include_edges)</td></tr>
+<tr class="codeline" data-linenumber="81"><td class="num" id="LN81">81</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="82"><td class="num" id="LN82">82</td><td class="line"> GList *l, *retval;</td></tr>
+<tr class="codeline" data-linenumber="83"><td class="num" id="LN83">83</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="84"><td class="num" id="LN84">84</td><td class="line"> <span class='macro'>g_return_val_if_fail (region != NULL &amp;&amp; iter != NULL, NULL)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_31<br>; if (region != ((void*)0) &amp;&amp; iter != ((void*)0)) _g_boolean_var_31<br> = 1; else _g_boolean_var_31 = 0; _g_boolean_var_31; }), 1)))<br> { } else { g_return_if_fail_warning (((gchar*) 0), ((const char<br>*) (__func__)), "region != NULL &amp;&amp; iter != NULL"); return<br> (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="85"><td class="num" id="LN85">85</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="86"><td class="num" id="LN86">86</td><td class="line"> <span class='keyword'>if</span> (!begin)</td></tr>
+<tr class="codeline" data-linenumber="87"><td class="num" id="LN87">87</td><td class="line"> begin = region-&gt;subregions;</td></tr>
+<tr class="codeline" data-linenumber="88"><td class="num" id="LN88">88</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="89"><td class="num" id="LN89">89</td><td class="line"> <span class='keyword'>if</span> (begin)</td></tr>
+<tr class="codeline" data-linenumber="90"><td class="num" id="LN90">90</td><td class="line"> retval = begin-&gt;prev;</td></tr>
+<tr class="codeline" data-linenumber="91"><td class="num" id="LN91">91</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="92"><td class="num" id="LN92">92</td><td class="line"> retval = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="93"><td class="num" id="LN93">93</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="94"><td class="num" id="LN94">94</td><td class="line"> <span class='keyword'>for</span> (l = begin; l; l = l-&gt;next) {</td></tr>
+<tr class="codeline" data-linenumber="95"><td class="num" id="LN95">95</td><td class="line"> GtkTextIter sr_iter;</td></tr>
+<tr class="codeline" data-linenumber="96"><td class="num" id="LN96">96</td><td class="line"> Subregion *sr = l-&gt;data;</td></tr>
+<tr class="codeline" data-linenumber="97"><td class="num" id="LN97">97</td><td class="line"> gint cmp;</td></tr>
+<tr class="codeline" data-linenumber="98"><td class="num" id="LN98">98</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="99"><td class="num" id="LN99">99</td><td class="line"> <span class='keyword'>if</span> (!leftmost) {</td></tr>
+<tr class="codeline" data-linenumber="100"><td class="num" id="LN100">100</td><td class="line"> gtk_text_buffer_get_iter_at_mark (region-&gt;buffer, &amp;sr_iter, sr-&gt;end);</td></tr>
+<tr class="codeline" data-linenumber="101"><td class="num" id="LN101">101</td><td class="line"> cmp = gtk_text_iter_compare (iter, &amp;sr_iter);</td></tr>
+<tr class="codeline" data-linenumber="102"><td class="num" id="LN102">102</td><td class="line"> <span class='keyword'>if</span> (cmp &lt; 0 || (cmp == 0 &amp;&amp; include_edges)) {</td></tr>
+<tr class="codeline" data-linenumber="103"><td class="num" id="LN103">103</td><td class="line"> retval = l;</td></tr>
+<tr class="codeline" data-linenumber="104"><td class="num" id="LN104">104</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="105"><td class="num" id="LN105">105</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="106"><td class="num" id="LN106">106</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="107"><td class="num" id="LN107">107</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="108"><td class="num" id="LN108">108</td><td class="line"> gtk_text_buffer_get_iter_at_mark (region-&gt;buffer, &amp;sr_iter, sr-&gt;start);</td></tr>
+<tr class="codeline" data-linenumber="109"><td class="num" id="LN109">109</td><td class="line"> cmp = gtk_text_iter_compare (iter, &amp;sr_iter);</td></tr>
+<tr class="codeline" data-linenumber="110"><td class="num" id="LN110">110</td><td class="line"> <span class='keyword'>if</span> (cmp &gt; 0 || (cmp == 0 &amp;&amp; include_edges))</td></tr>
+<tr class="codeline" data-linenumber="111"><td class="num" id="LN111">111</td><td class="line"> retval = l;</td></tr>
+<tr class="codeline" data-linenumber="112"><td class="num" id="LN112">112</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="113"><td class="num" id="LN113">113</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="114"><td class="num" id="LN114">114</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="115"><td class="num" id="LN115">115</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="116"><td class="num" id="LN116">116</td><td class="line"> <span class='keyword'>return</span> retval;</td></tr>
+<tr class="codeline" data-linenumber="117"><td class="num" id="LN117">117</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="118"><td class="num" id="LN118">118</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="119"><td class="num" id="LN119">119</td><td class="line"><span class='comment'>/* ----------------------------------------------------------------------</span></td></tr>
+<tr class="codeline" data-linenumber="120"><td class="num" id="LN120">120</td><td class="line"> <span class='comment'>Public interface</span></td></tr>
+<tr class="codeline" data-linenumber="121"><td class="num" id="LN121">121</td><td class="line"> <span class='comment'>---------------------------------------------------------------------- */</span></td></tr>
+<tr class="codeline" data-linenumber="122"><td class="num" id="LN122">122</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="123"><td class="num" id="LN123">123</td><td class="line">PlumaTextRegion *</td></tr>
+<tr class="codeline" data-linenumber="124"><td class="num" id="LN124">124</td><td class="line">pluma_text_region_new (GtkTextBuffer *buffer)</td></tr>
+<tr class="codeline" data-linenumber="125"><td class="num" id="LN125">125</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="126"><td class="num" id="LN126">126</td><td class="line"> PlumaTextRegion *region;</td></tr>
+<tr class="codeline" data-linenumber="127"><td class="num" id="LN127">127</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="128"><td class="num" id="LN128">128</td><td class="line"> <span class='macro'>g_return_val_if_fail (buffer != NULL, NULL)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_32<br>; if (buffer != ((void*)0)) _g_boolean_var_32 = 1; else _g_boolean_var_32<br> = 0; _g_boolean_var_32; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "buffer != NULL")<br>; return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="129"><td class="num" id="LN129">129</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="130"><td class="num" id="LN130">130</td><td class="line"> region = <span class='macro'>g_new (PlumaTextRegion, 1)<span class='macro_popup'>(PlumaTextRegion *) (__extension__ ({ gsize __n = (gsize) (1)<br>; gsize __s = sizeof (PlumaTextRegion); gpointer __p; if (__s<br> == 1) __p = g_malloc (__n); else if (__builtin_constant_p (__n<br>) &amp;&amp; (__s == 0 || __n &lt;= (9223372036854775807L *2UL<br>+1UL) / __s)) __p = g_malloc (__n * __s); else __p = g_malloc_n<br> (__n, __s); __p; }))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="131"><td class="num" id="LN131">131</td><td class="line"> region-&gt;buffer = buffer;</td></tr>
+<tr class="codeline" data-linenumber="132"><td class="num" id="LN132">132</td><td class="line"> region-&gt;subregions = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="133"><td class="num" id="LN133">133</td><td class="line"> region-&gt;time_stamp = 0;</td></tr>
+<tr class="codeline" data-linenumber="134"><td class="num" id="LN134">134</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="135"><td class="num" id="LN135">135</td><td class="line"> <span class='keyword'>return</span> region;</td></tr>
+<tr class="codeline" data-linenumber="136"><td class="num" id="LN136">136</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="137"><td class="num" id="LN137">137</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="138"><td class="num" id="LN138">138</td><td class="line"><span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="139"><td class="num" id="LN139">139</td><td class="line">pluma_text_region_destroy (PlumaTextRegion *region, gboolean delete_marks)</td></tr>
+<tr class="codeline" data-linenumber="140"><td class="num" id="LN140">140</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="141"><td class="num" id="LN141">141</td><td class="line"> <span class='macro'>g_return_if_fail (region != NULL)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_33<br>; if (region != ((void*)0)) _g_boolean_var_33 = 1; else _g_boolean_var_33<br> = 0; _g_boolean_var_33; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "region != NULL")<br>; return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="142"><td class="num" id="LN142">142</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="143"><td class="num" id="LN143">143</td><td class="line"> <span class='keyword'>while</span> (region-&gt;subregions) {</td></tr>
+<tr class="codeline" data-linenumber="144"><td class="num" id="LN144">144</td><td class="line"> Subregion *sr = region-&gt;subregions-&gt;data;</td></tr>
+<tr class="codeline" data-linenumber="145"><td class="num" id="LN145">145</td><td class="line"> <span class='keyword'>if</span> (delete_marks) {</td></tr>
+<tr class="codeline" data-linenumber="146"><td class="num" id="LN146">146</td><td class="line"> gtk_text_buffer_delete_mark (region-&gt;buffer, sr-&gt;start);</td></tr>
+<tr class="codeline" data-linenumber="147"><td class="num" id="LN147">147</td><td class="line"> gtk_text_buffer_delete_mark (region-&gt;buffer, sr-&gt;end);</td></tr>
+<tr class="codeline" data-linenumber="148"><td class="num" id="LN148">148</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="149"><td class="num" id="LN149">149</td><td class="line"> g_free (sr);</td></tr>
+<tr class="codeline" data-linenumber="150"><td class="num" id="LN150">150</td><td class="line"> region-&gt;subregions = g_list_delete_link (region-&gt;subregions,</td></tr>
+<tr class="codeline" data-linenumber="151"><td class="num" id="LN151">151</td><td class="line"> region-&gt;subregions);</td></tr>
+<tr class="codeline" data-linenumber="152"><td class="num" id="LN152">152</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="153"><td class="num" id="LN153">153</td><td class="line"> region-&gt;buffer = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="154"><td class="num" id="LN154">154</td><td class="line"> region-&gt;time_stamp = 0;</td></tr>
+<tr class="codeline" data-linenumber="155"><td class="num" id="LN155">155</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="156"><td class="num" id="LN156">156</td><td class="line"> g_free (region);</td></tr>
+<tr class="codeline" data-linenumber="157"><td class="num" id="LN157">157</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="158"><td class="num" id="LN158">158</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="159"><td class="num" id="LN159">159</td><td class="line">GtkTextBuffer *</td></tr>
+<tr class="codeline" data-linenumber="160"><td class="num" id="LN160">160</td><td class="line">pluma_text_region_get_buffer (PlumaTextRegion *region)</td></tr>
+<tr class="codeline" data-linenumber="161"><td class="num" id="LN161">161</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="162"><td class="num" id="LN162">162</td><td class="line"> <span class='macro'>g_return_val_if_fail (region != NULL, NULL)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_34<br>; if (region != ((void*)0)) _g_boolean_var_34 = 1; else _g_boolean_var_34<br> = 0; _g_boolean_var_34; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "region != NULL")<br>; return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="163"><td class="num" id="LN163">163</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="164"><td class="num" id="LN164">164</td><td class="line"> <span class='keyword'>return</span> region-&gt;buffer;</td></tr>
+<tr class="codeline" data-linenumber="165"><td class="num" id="LN165">165</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="166"><td class="num" id="LN166">166</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="167"><td class="num" id="LN167">167</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="168"><td class="num" id="LN168">168</td><td class="line">pluma_text_region_clear_zero_length_subregions (PlumaTextRegion *region)</td></tr>
+<tr class="codeline" data-linenumber="169"><td class="num" id="LN169">169</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="170"><td class="num" id="LN170">170</td><td class="line"> GtkTextIter start, end;</td></tr>
+<tr class="codeline" data-linenumber="171"><td class="num" id="LN171">171</td><td class="line"> GList *node;</td></tr>
+<tr class="codeline" data-linenumber="172"><td class="num" id="LN172">172</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="173"><td class="num" id="LN173">173</td><td class="line"> <span class='macro'>g_return_if_fail (region != NULL)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_35<br>; if (region != ((void*)0)) _g_boolean_var_35 = 1; else _g_boolean_var_35<br> = 0; _g_boolean_var_35; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "region != NULL")<br>; return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="174"><td class="num" id="LN174">174</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="175"><td class="num" id="LN175">175</td><td class="line"> <span class='keyword'>for</span> (node = region-&gt;subregions; node; ) {</td></tr>
+<tr class="codeline" data-linenumber="176"><td class="num" id="LN176">176</td><td class="line"> Subregion *sr = node-&gt;data;</td></tr>
+<tr class="codeline" data-linenumber="177"><td class="num" id="LN177">177</td><td class="line"> gtk_text_buffer_get_iter_at_mark (region-&gt;buffer, &amp;start, sr-&gt;start);</td></tr>
+<tr class="codeline" data-linenumber="178"><td class="num" id="LN178">178</td><td class="line"> gtk_text_buffer_get_iter_at_mark (region-&gt;buffer, &amp;end, sr-&gt;end);</td></tr>
+<tr class="codeline" data-linenumber="179"><td class="num" id="LN179">179</td><td class="line"> <span class='keyword'>if</span> (gtk_text_iter_equal (&amp;start, &amp;end)) {</td></tr>
+<tr class="codeline" data-linenumber="180"><td class="num" id="LN180">180</td><td class="line"> gtk_text_buffer_delete_mark (region-&gt;buffer, sr-&gt;start);</td></tr>
+<tr class="codeline" data-linenumber="181"><td class="num" id="LN181">181</td><td class="line"> gtk_text_buffer_delete_mark (region-&gt;buffer, sr-&gt;end);</td></tr>
+<tr class="codeline" data-linenumber="182"><td class="num" id="LN182">182</td><td class="line"> g_free (sr);</td></tr>
+<tr class="codeline" data-linenumber="183"><td class="num" id="LN183">183</td><td class="line"> <span class='keyword'>if</span> (node == region-&gt;subregions)</td></tr>
+<tr class="codeline" data-linenumber="184"><td class="num" id="LN184">184</td><td class="line"> region-&gt;subregions = node = g_list_delete_link (node, node);</td></tr>
+<tr class="codeline" data-linenumber="185"><td class="num" id="LN185">185</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="186"><td class="num" id="LN186">186</td><td class="line"> node = g_list_delete_link (node, node);</td></tr>
+<tr class="codeline" data-linenumber="187"><td class="num" id="LN187">187</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="188"><td class="num" id="LN188">188</td><td class="line"> ++region-&gt;time_stamp;</td></tr>
+<tr class="codeline" data-linenumber="189"><td class="num" id="LN189">189</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="190"><td class="num" id="LN190">190</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="191"><td class="num" id="LN191">191</td><td class="line"> node = node-&gt;next;</td></tr>
+<tr class="codeline" data-linenumber="192"><td class="num" id="LN192">192</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="193"><td class="num" id="LN193">193</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="194"><td class="num" id="LN194">194</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="195"><td class="num" id="LN195">195</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="196"><td class="num" id="LN196">196</td><td class="line"><span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="197"><td class="num" id="LN197">197</td><td class="line">pluma_text_region_add (PlumaTextRegion *region,</td></tr>
+<tr class="codeline" data-linenumber="198"><td class="num" id="LN198">198</td><td class="line"> <span class='keyword'>const</span> GtkTextIter *_start,</td></tr>
+<tr class="codeline" data-linenumber="199"><td class="num" id="LN199">199</td><td class="line"> <span class='keyword'>const</span> GtkTextIter *_end)</td></tr>
+<tr class="codeline" data-linenumber="200"><td class="num" id="LN200">200</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="201"><td class="num" id="LN201">201</td><td class="line"> GList *start_node, *end_node;</td></tr>
+<tr class="codeline" data-linenumber="202"><td class="num" id="LN202">202</td><td class="line"> GtkTextIter start, end;</td></tr>
+<tr class="codeline" data-linenumber="203"><td class="num" id="LN203">203</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="204"><td class="num" id="LN204">204</td><td class="line"> <span class='macro'>g_return_if_fail (region != NULL &amp;&amp; _start != NULL &amp;&amp; _end != NULL)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_36<br>; if (region != ((void*)0) &amp;&amp; _start != ((void*)0) &amp;&amp;<br> _end != ((void*)0)) _g_boolean_var_36 = 1; else _g_boolean_var_36<br> = 0; _g_boolean_var_36; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "region != NULL &amp;&amp; _start != NULL &amp;&amp; _end != NULL"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="205"><td class="num" id="LN205">205</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="206"><td class="num" id="LN206">206</td><td class="line"> start = *_start;</td></tr>
+<tr class="codeline" data-linenumber="207"><td class="num" id="LN207">207</td><td class="line"> end = *_end;</td></tr>
+<tr class="codeline" data-linenumber="208"><td class="num" id="LN208">208</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="209"><td class="num" id="LN209">209</td><td class="line"> DEBUG (g_print (<span class='string_literal'>"---\n"</span>));</td></tr>
+<tr class="codeline" data-linenumber="210"><td class="num" id="LN210">210</td><td class="line"> DEBUG (pluma_text_region_debug_print (region));</td></tr>
+<tr class="codeline" data-linenumber="211"><td class="num" id="LN211">211</td><td class="line"> DEBUG (g_message (<span class='string_literal'>"region_add (%d, %d)"</span>,</td></tr>
+<tr class="codeline" data-linenumber="212"><td class="num" id="LN212">212</td><td class="line"> gtk_text_iter_get_offset (&amp;start),</td></tr>
+<tr class="codeline" data-linenumber="213"><td class="num" id="LN213">213</td><td class="line"> gtk_text_iter_get_offset (&amp;end)));</td></tr>
+<tr class="codeline" data-linenumber="214"><td class="num" id="LN214">214</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="215"><td class="num" id="LN215">215</td><td class="line"> gtk_text_iter_order (&amp;start, &amp;end);</td></tr>
+<tr class="codeline" data-linenumber="216"><td class="num" id="LN216">216</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="217"><td class="num" id="LN217">217</td><td class="line"> <span class='comment'>/* don't add zero-length regions */</span></td></tr>
+<tr class="codeline" data-linenumber="218"><td class="num" id="LN218">218</td><td class="line"> <span class='keyword'>if</span> (gtk_text_iter_equal (&amp;start, &amp;end))</td></tr>
+<tr class="codeline" data-linenumber="219"><td class="num" id="LN219">219</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="220"><td class="num" id="LN220">220</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="221"><td class="num" id="LN221">221</td><td class="line"> <span class='comment'>/* find bounding subregions */</span></td></tr>
+<tr class="codeline" data-linenumber="222"><td class="num" id="LN222">222</td><td class="line"> start_node = find_nearest_subregion (region, &amp;start, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>, <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="223"><td class="num" id="LN223">223</td><td class="line"> end_node = find_nearest_subregion (region, &amp;end, start_node, <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>, <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="224"><td class="num" id="LN224">224</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="225"><td class="num" id="LN225">225</td><td class="line"> <span class='keyword'>if</span> (start_node == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> || end_node == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> || end_node == start_node-&gt;prev) {</td></tr>
+<tr class="codeline" data-linenumber="226"><td class="num" id="LN226">226</td><td class="line"> <span class='comment'>/* create the new subregion */</span></td></tr>
+<tr class="codeline" data-linenumber="227"><td class="num" id="LN227">227</td><td class="line"> Subregion *sr = <span class='macro'>g_new0 (Subregion, 1)<span class='macro_popup'>(Subregion *) (__extension__ ({ gsize __n = (gsize) (1); gsize<br> __s = sizeof (Subregion); gpointer __p; if (__s == 1) __p = g_malloc0<br> (__n); else if (__builtin_constant_p (__n) &amp;&amp; (__s ==<br> 0 || __n &lt;= (9223372036854775807L *2UL+1UL) / __s)) __p =<br> g_malloc0 (__n * __s); else __p = g_malloc0_n (__n, __s); __p<br>; }))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="228"><td class="num" id="LN228">228</td><td class="line"> sr-&gt;start = gtk_text_buffer_create_mark (region-&gt;buffer, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, &amp;start, <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="229"><td class="num" id="LN229">229</td><td class="line"> sr-&gt;end = gtk_text_buffer_create_mark (region-&gt;buffer, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, &amp;end, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="230"><td class="num" id="LN230">230</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="231"><td class="num" id="LN231">231</td><td class="line"> <span class='keyword'>if</span> (start_node == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="232"><td class="num" id="LN232">232</td><td class="line"> <span class='comment'>/* append the new region */</span></td></tr>
+<tr class="codeline" data-linenumber="233"><td class="num" id="LN233">233</td><td class="line"> region-&gt;subregions = g_list_append (region-&gt;subregions, sr);</td></tr>
+<tr class="codeline" data-linenumber="234"><td class="num" id="LN234">234</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="235"><td class="num" id="LN235">235</td><td class="line"> } <span class='keyword'>else</span> <span class='keyword'>if</span> (end_node == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="236"><td class="num" id="LN236">236</td><td class="line"> <span class='comment'>/* prepend the new region */</span></td></tr>
+<tr class="codeline" data-linenumber="237"><td class="num" id="LN237">237</td><td class="line"> region-&gt;subregions = g_list_prepend (region-&gt;subregions, sr);</td></tr>
+<tr class="codeline" data-linenumber="238"><td class="num" id="LN238">238</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="239"><td class="num" id="LN239">239</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="240"><td class="num" id="LN240">240</td><td class="line"> <span class='comment'>/* we are in the middle of two subregions */</span></td></tr>
+<tr class="codeline" data-linenumber="241"><td class="num" id="LN241">241</td><td class="line"> region-&gt;subregions = g_list_insert_before (region-&gt;subregions,</td></tr>
+<tr class="codeline" data-linenumber="242"><td class="num" id="LN242">242</td><td class="line"> start_node, sr);</td></tr>
+<tr class="codeline" data-linenumber="243"><td class="num" id="LN243">243</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="244"><td class="num" id="LN244">244</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="245"><td class="num" id="LN245">245</td><td class="line"> <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="246"><td class="num" id="LN246">246</td><td class="line"> GtkTextIter iter;</td></tr>
+<tr class="codeline" data-linenumber="247"><td class="num" id="LN247">247</td><td class="line"> Subregion *sr = start_node-&gt;data;</td></tr>
+<tr class="codeline" data-linenumber="248"><td class="num" id="LN248">248</td><td class="line"> <span class='keyword'>if</span> (start_node != end_node) {</td></tr>
+<tr class="codeline" data-linenumber="249"><td class="num" id="LN249">249</td><td class="line"> <span class='comment'>/* we need to merge some subregions */</span></td></tr>
+<tr class="codeline" data-linenumber="250"><td class="num" id="LN250">250</td><td class="line"> GList *l = start_node-&gt;next;</td></tr>
+<tr class="codeline" data-linenumber="251"><td class="num" id="LN251">251</td><td class="line"> Subregion *q;</td></tr>
+<tr class="codeline" data-linenumber="252"><td class="num" id="LN252">252</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="253"><td class="num" id="LN253">253</td><td class="line"> gtk_text_buffer_delete_mark (region-&gt;buffer, sr-&gt;end);</td></tr>
+<tr class="codeline" data-linenumber="254"><td class="num" id="LN254">254</td><td class="line"> <span class='keyword'>while</span> (l != end_node) {</td></tr>
+<tr class="codeline" data-linenumber="255"><td class="num" id="LN255">255</td><td class="line"> q = l-&gt;data;</td></tr>
+<tr class="codeline" data-linenumber="256"><td class="num" id="LN256">256</td><td class="line"> gtk_text_buffer_delete_mark (region-&gt;buffer, q-&gt;start);</td></tr>
+<tr class="codeline" data-linenumber="257"><td class="num" id="LN257">257</td><td class="line"> gtk_text_buffer_delete_mark (region-&gt;buffer, q-&gt;end);</td></tr>
+<tr class="codeline" data-linenumber="258"><td class="num" id="LN258">258</td><td class="line"> g_free (q);</td></tr>
+<tr class="codeline" data-linenumber="259"><td class="num" id="LN259">259</td><td class="line"> l = g_list_delete_link (l, l);</td></tr>
+<tr class="codeline" data-linenumber="260"><td class="num" id="LN260">260</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="261"><td class="num" id="LN261">261</td><td class="line"> q = l-&gt;data;</td></tr>
+<tr class="codeline" data-linenumber="262"><td class="num" id="LN262">262</td><td class="line"> gtk_text_buffer_delete_mark (region-&gt;buffer, q-&gt;start);</td></tr>
+<tr class="codeline" data-linenumber="263"><td class="num" id="LN263">263</td><td class="line"> sr-&gt;end = q-&gt;end;</td></tr>
+<tr class="codeline" data-linenumber="264"><td class="num" id="LN264">264</td><td class="line"> g_free (q);</td></tr>
+<tr class="codeline" data-linenumber="265"><td class="num" id="LN265">265</td><td class="line"> l = <span class="mrange">g_list_delete_link (l, l)</span>;</td></tr>
+<tr><td class="num"></td><td class="line"><div id="EndPath" class="msg msgEvent" style="margin-left:25ex">Value stored to 'l' is never read</div></td></tr>
+<tr class="codeline" data-linenumber="266"><td class="num" id="LN266">266</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="267"><td class="num" id="LN267">267</td><td class="line"> <span class='comment'>/* now move marks if that action expands the region */</span></td></tr>
+<tr class="codeline" data-linenumber="268"><td class="num" id="LN268">268</td><td class="line"> gtk_text_buffer_get_iter_at_mark (region-&gt;buffer, &amp;iter, sr-&gt;start);</td></tr>
+<tr class="codeline" data-linenumber="269"><td class="num" id="LN269">269</td><td class="line"> <span class='keyword'>if</span> (gtk_text_iter_compare (&amp;iter, &amp;start) &gt; 0)</td></tr>
+<tr class="codeline" data-linenumber="270"><td class="num" id="LN270">270</td><td class="line"> gtk_text_buffer_move_mark (region-&gt;buffer, sr-&gt;start, &amp;start);</td></tr>
+<tr class="codeline" data-linenumber="271"><td class="num" id="LN271">271</td><td class="line"> gtk_text_buffer_get_iter_at_mark (region-&gt;buffer, &amp;iter, sr-&gt;end);</td></tr>
+<tr class="codeline" data-linenumber="272"><td class="num" id="LN272">272</td><td class="line"> <span class='keyword'>if</span> (gtk_text_iter_compare (&amp;iter, &amp;end) &lt; 0)</td></tr>
+<tr class="codeline" data-linenumber="273"><td class="num" id="LN273">273</td><td class="line"> gtk_text_buffer_move_mark (region-&gt;buffer, sr-&gt;end, &amp;end);</td></tr>
+<tr class="codeline" data-linenumber="274"><td class="num" id="LN274">274</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="275"><td class="num" id="LN275">275</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="276"><td class="num" id="LN276">276</td><td class="line"> ++region-&gt;time_stamp;</td></tr>
+<tr class="codeline" data-linenumber="277"><td class="num" id="LN277">277</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="278"><td class="num" id="LN278">278</td><td class="line"> DEBUG (pluma_text_region_debug_print (region));</td></tr>
+<tr class="codeline" data-linenumber="279"><td class="num" id="LN279">279</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="280"><td class="num" id="LN280">280</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="281"><td class="num" id="LN281">281</td><td class="line"><span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="282"><td class="num" id="LN282">282</td><td class="line">pluma_text_region_subtract (PlumaTextRegion *region,</td></tr>
+<tr class="codeline" data-linenumber="283"><td class="num" id="LN283">283</td><td class="line"> <span class='keyword'>const</span> GtkTextIter *_start,</td></tr>
+<tr class="codeline" data-linenumber="284"><td class="num" id="LN284">284</td><td class="line"> <span class='keyword'>const</span> GtkTextIter *_end)</td></tr>
+<tr class="codeline" data-linenumber="285"><td class="num" id="LN285">285</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="286"><td class="num" id="LN286">286</td><td class="line"> GList *start_node, *end_node, *node;</td></tr>
+<tr class="codeline" data-linenumber="287"><td class="num" id="LN287">287</td><td class="line"> GtkTextIter sr_start_iter, sr_end_iter;</td></tr>
+<tr class="codeline" data-linenumber="288"><td class="num" id="LN288">288</td><td class="line"> gboolean done;</td></tr>
+<tr class="codeline" data-linenumber="289"><td class="num" id="LN289">289</td><td class="line"> gboolean start_is_outside, end_is_outside;</td></tr>
+<tr class="codeline" data-linenumber="290"><td class="num" id="LN290">290</td><td class="line"> Subregion *sr;</td></tr>
+<tr class="codeline" data-linenumber="291"><td class="num" id="LN291">291</td><td class="line"> GtkTextIter start, end;</td></tr>
+<tr class="codeline" data-linenumber="292"><td class="num" id="LN292">292</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="293"><td class="num" id="LN293">293</td><td class="line"> <span class='macro'>g_return_if_fail (region != NULL &amp;&amp; _start != NULL &amp;&amp; _end != NULL)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_37<br>; if (region != ((void*)0) &amp;&amp; _start != ((void*)0) &amp;&amp;<br> _end != ((void*)0)) _g_boolean_var_37 = 1; else _g_boolean_var_37<br> = 0; _g_boolean_var_37; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "region != NULL &amp;&amp; _start != NULL &amp;&amp; _end != NULL"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="294"><td class="num" id="LN294">294</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="295"><td class="num" id="LN295">295</td><td class="line"> start = *_start;</td></tr>
+<tr class="codeline" data-linenumber="296"><td class="num" id="LN296">296</td><td class="line"> end = *_end;</td></tr>
+<tr class="codeline" data-linenumber="297"><td class="num" id="LN297">297</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="298"><td class="num" id="LN298">298</td><td class="line"> DEBUG (g_print (<span class='string_literal'>"---\n"</span>));</td></tr>
+<tr class="codeline" data-linenumber="299"><td class="num" id="LN299">299</td><td class="line"> DEBUG (pluma_text_region_debug_print (region));</td></tr>
+<tr class="codeline" data-linenumber="300"><td class="num" id="LN300">300</td><td class="line"> DEBUG (g_message (<span class='string_literal'>"region_substract (%d, %d)"</span>,</td></tr>
+<tr class="codeline" data-linenumber="301"><td class="num" id="LN301">301</td><td class="line"> gtk_text_iter_get_offset (&amp;start),</td></tr>
+<tr class="codeline" data-linenumber="302"><td class="num" id="LN302">302</td><td class="line"> gtk_text_iter_get_offset (&amp;end)));</td></tr>
+<tr class="codeline" data-linenumber="303"><td class="num" id="LN303">303</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="304"><td class="num" id="LN304">304</td><td class="line"> gtk_text_iter_order (&amp;start, &amp;end);</td></tr>
+<tr class="codeline" data-linenumber="305"><td class="num" id="LN305">305</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="306"><td class="num" id="LN306">306</td><td class="line"> <span class='comment'>/* find bounding subregions */</span></td></tr>
+<tr class="codeline" data-linenumber="307"><td class="num" id="LN307">307</td><td class="line"> start_node = find_nearest_subregion (region, &amp;start, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="308"><td class="num" id="LN308">308</td><td class="line"> end_node = find_nearest_subregion (region, &amp;end, start_node, <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="309"><td class="num" id="LN309">309</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="310"><td class="num" id="LN310">310</td><td class="line"> <span class='comment'>/* easy case first */</span></td></tr>
+<tr class="codeline" data-linenumber="311"><td class="num" id="LN311">311</td><td class="line"> <span class='keyword'>if</span> (start_node == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> || end_node == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> || end_node == start_node-&gt;prev)</td></tr>
+<tr class="codeline" data-linenumber="312"><td class="num" id="LN312">312</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="313"><td class="num" id="LN313">313</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="314"><td class="num" id="LN314">314</td><td class="line"> <span class='comment'>/* deal with the start point */</span></td></tr>
+<tr class="codeline" data-linenumber="315"><td class="num" id="LN315">315</td><td class="line"> start_is_outside = end_is_outside = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="316"><td class="num" id="LN316">316</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="317"><td class="num" id="LN317">317</td><td class="line"> sr = start_node-&gt;data;</td></tr>
+<tr class="codeline" data-linenumber="318"><td class="num" id="LN318">318</td><td class="line"> gtk_text_buffer_get_iter_at_mark (region-&gt;buffer, &amp;sr_start_iter, sr-&gt;start);</td></tr>
+<tr class="codeline" data-linenumber="319"><td class="num" id="LN319">319</td><td class="line"> gtk_text_buffer_get_iter_at_mark (region-&gt;buffer, &amp;sr_end_iter, sr-&gt;end);</td></tr>
+<tr class="codeline" data-linenumber="320"><td class="num" id="LN320">320</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="321"><td class="num" id="LN321">321</td><td class="line"> <span class='keyword'>if</span> (gtk_text_iter_in_range (&amp;start, &amp;sr_start_iter, &amp;sr_end_iter) &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="322"><td class="num" id="LN322">322</td><td class="line"> !gtk_text_iter_equal (&amp;start, &amp;sr_start_iter)) {</td></tr>
+<tr class="codeline" data-linenumber="323"><td class="num" id="LN323">323</td><td class="line"> <span class='comment'>/* the starting point is inside the first subregion */</span></td></tr>
+<tr class="codeline" data-linenumber="324"><td class="num" id="LN324">324</td><td class="line"> <span class='keyword'>if</span> (gtk_text_iter_in_range (&amp;end, &amp;sr_start_iter, &amp;sr_end_iter) &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="325"><td class="num" id="LN325">325</td><td class="line"> !gtk_text_iter_equal (&amp;end, &amp;sr_end_iter)) {</td></tr>
+<tr class="codeline" data-linenumber="326"><td class="num" id="LN326">326</td><td class="line"> <span class='comment'>/* the ending point is also inside the first</span></td></tr>
+<tr class="codeline" data-linenumber="327"><td class="num" id="LN327">327</td><td class="line"> <span class='comment'>subregion: we need to split */</span></td></tr>
+<tr class="codeline" data-linenumber="328"><td class="num" id="LN328">328</td><td class="line"> Subregion *new_sr = <span class='macro'>g_new0 (Subregion, 1)<span class='macro_popup'>(Subregion *) (__extension__ ({ gsize __n = (gsize) (1); gsize<br> __s = sizeof (Subregion); gpointer __p; if (__s == 1) __p = g_malloc0<br> (__n); else if (__builtin_constant_p (__n) &amp;&amp; (__s ==<br> 0 || __n &lt;= (9223372036854775807L *2UL+1UL) / __s)) __p =<br> g_malloc0 (__n * __s); else __p = g_malloc0_n (__n, __s); __p<br>; }))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="329"><td class="num" id="LN329">329</td><td class="line"> new_sr-&gt;end = sr-&gt;end;</td></tr>
+<tr class="codeline" data-linenumber="330"><td class="num" id="LN330">330</td><td class="line"> new_sr-&gt;start = gtk_text_buffer_create_mark (region-&gt;buffer,</td></tr>
+<tr class="codeline" data-linenumber="331"><td class="num" id="LN331">331</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, &amp;end, <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="332"><td class="num" id="LN332">332</td><td class="line"> start_node = g_list_insert_before (start_node, start_node-&gt;next, new_sr);</td></tr>
+<tr class="codeline" data-linenumber="333"><td class="num" id="LN333">333</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="334"><td class="num" id="LN334">334</td><td class="line"> sr-&gt;end = gtk_text_buffer_create_mark (region-&gt;buffer,</td></tr>
+<tr class="codeline" data-linenumber="335"><td class="num" id="LN335">335</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, &amp;start, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="336"><td class="num" id="LN336">336</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="337"><td class="num" id="LN337">337</td><td class="line"> <span class='comment'>/* no further processing needed */</span></td></tr>
+<tr class="codeline" data-linenumber="338"><td class="num" id="LN338">338</td><td class="line"> DEBUG (g_message (<span class='string_literal'>"subregion splitted"</span>));</td></tr>
+<tr class="codeline" data-linenumber="339"><td class="num" id="LN339">339</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="340"><td class="num" id="LN340">340</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="341"><td class="num" id="LN341">341</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="342"><td class="num" id="LN342">342</td><td class="line"> <span class='comment'>/* the ending point is outside, so just move</span></td></tr>
+<tr class="codeline" data-linenumber="343"><td class="num" id="LN343">343</td><td class="line"> <span class='comment'>the end of the subregion to the starting point */</span></td></tr>
+<tr class="codeline" data-linenumber="344"><td class="num" id="LN344">344</td><td class="line"> gtk_text_buffer_move_mark (region-&gt;buffer, sr-&gt;end, &amp;start);</td></tr>
+<tr class="codeline" data-linenumber="345"><td class="num" id="LN345">345</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="346"><td class="num" id="LN346">346</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="347"><td class="num" id="LN347">347</td><td class="line"> <span class='comment'>/* the starting point is outside (and so to the left)</span></td></tr>
+<tr class="codeline" data-linenumber="348"><td class="num" id="LN348">348</td><td class="line"> <span class='comment'>of the first subregion */</span></td></tr>
+<tr class="codeline" data-linenumber="349"><td class="num" id="LN349">349</td><td class="line"> DEBUG (g_message (<span class='string_literal'>"start is outside"</span>));</td></tr>
+<tr class="codeline" data-linenumber="350"><td class="num" id="LN350">350</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="351"><td class="num" id="LN351">351</td><td class="line"> start_is_outside = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="352"><td class="num" id="LN352">352</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="353"><td class="num" id="LN353">353</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="354"><td class="num" id="LN354">354</td><td class="line"> <span class='comment'>/* deal with the end point */</span></td></tr>
+<tr class="codeline" data-linenumber="355"><td class="num" id="LN355">355</td><td class="line"> <span class='keyword'>if</span> (start_node != end_node) {</td></tr>
+<tr class="codeline" data-linenumber="356"><td class="num" id="LN356">356</td><td class="line"> sr = end_node-&gt;data;</td></tr>
+<tr class="codeline" data-linenumber="357"><td class="num" id="LN357">357</td><td class="line"> gtk_text_buffer_get_iter_at_mark (region-&gt;buffer, &amp;sr_start_iter, sr-&gt;start);</td></tr>
+<tr class="codeline" data-linenumber="358"><td class="num" id="LN358">358</td><td class="line"> gtk_text_buffer_get_iter_at_mark (region-&gt;buffer, &amp;sr_end_iter, sr-&gt;end);</td></tr>
+<tr class="codeline" data-linenumber="359"><td class="num" id="LN359">359</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="360"><td class="num" id="LN360">360</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="361"><td class="num" id="LN361">361</td><td class="line"> <span class='keyword'>if</span> (gtk_text_iter_in_range (&amp;end, &amp;sr_start_iter, &amp;sr_end_iter) &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="362"><td class="num" id="LN362">362</td><td class="line"> !gtk_text_iter_equal (&amp;end, &amp;sr_end_iter)) {</td></tr>
+<tr class="codeline" data-linenumber="363"><td class="num" id="LN363">363</td><td class="line"> <span class='comment'>/* ending point is inside, move the start mark */</span></td></tr>
+<tr class="codeline" data-linenumber="364"><td class="num" id="LN364">364</td><td class="line"> gtk_text_buffer_move_mark (region-&gt;buffer, sr-&gt;start, &amp;end);</td></tr>
+<tr class="codeline" data-linenumber="365"><td class="num" id="LN365">365</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="366"><td class="num" id="LN366">366</td><td class="line"> end_is_outside = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="367"><td class="num" id="LN367">367</td><td class="line"> DEBUG (g_message (<span class='string_literal'>"end is outside"</span>));</td></tr>
+<tr class="codeline" data-linenumber="368"><td class="num" id="LN368">368</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="369"><td class="num" id="LN369">369</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="370"><td class="num" id="LN370">370</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="371"><td class="num" id="LN371">371</td><td class="line"> <span class='comment'>/* finally remove any intermediate subregions */</span></td></tr>
+<tr class="codeline" data-linenumber="372"><td class="num" id="LN372">372</td><td class="line"> done = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="373"><td class="num" id="LN373">373</td><td class="line"> node = start_node;</td></tr>
+<tr class="codeline" data-linenumber="374"><td class="num" id="LN374">374</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="375"><td class="num" id="LN375">375</td><td class="line"> <span class='keyword'>while</span> (!done) {</td></tr>
+<tr class="codeline" data-linenumber="376"><td class="num" id="LN376">376</td><td class="line"> <span class='keyword'>if</span> (node == end_node)</td></tr>
+<tr class="codeline" data-linenumber="377"><td class="num" id="LN377">377</td><td class="line"> <span class='comment'>/* we are done, exit in the next iteration */</span></td></tr>
+<tr class="codeline" data-linenumber="378"><td class="num" id="LN378">378</td><td class="line"> done = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="379"><td class="num" id="LN379">379</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="380"><td class="num" id="LN380">380</td><td class="line"> <span class='keyword'>if</span> ((node == start_node &amp;&amp; !start_is_outside) ||</td></tr>
+<tr class="codeline" data-linenumber="381"><td class="num" id="LN381">381</td><td class="line"> (node == end_node &amp;&amp; !end_is_outside)) {</td></tr>
+<tr class="codeline" data-linenumber="382"><td class="num" id="LN382">382</td><td class="line"> <span class='comment'>/* skip starting or ending node */</span></td></tr>
+<tr class="codeline" data-linenumber="383"><td class="num" id="LN383">383</td><td class="line"> node = node-&gt;next;</td></tr>
+<tr class="codeline" data-linenumber="384"><td class="num" id="LN384">384</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="385"><td class="num" id="LN385">385</td><td class="line"> GList *l = node-&gt;next;</td></tr>
+<tr class="codeline" data-linenumber="386"><td class="num" id="LN386">386</td><td class="line"> sr = node-&gt;data;</td></tr>
+<tr class="codeline" data-linenumber="387"><td class="num" id="LN387">387</td><td class="line"> gtk_text_buffer_delete_mark (region-&gt;buffer, sr-&gt;start);</td></tr>
+<tr class="codeline" data-linenumber="388"><td class="num" id="LN388">388</td><td class="line"> gtk_text_buffer_delete_mark (region-&gt;buffer, sr-&gt;end);</td></tr>
+<tr class="codeline" data-linenumber="389"><td class="num" id="LN389">389</td><td class="line"> g_free (sr);</td></tr>
+<tr class="codeline" data-linenumber="390"><td class="num" id="LN390">390</td><td class="line"> region-&gt;subregions = g_list_delete_link (region-&gt;subregions,</td></tr>
+<tr class="codeline" data-linenumber="391"><td class="num" id="LN391">391</td><td class="line"> node);</td></tr>
+<tr class="codeline" data-linenumber="392"><td class="num" id="LN392">392</td><td class="line"> node = l;</td></tr>
+<tr class="codeline" data-linenumber="393"><td class="num" id="LN393">393</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="394"><td class="num" id="LN394">394</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="395"><td class="num" id="LN395">395</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="396"><td class="num" id="LN396">396</td><td class="line"> ++region-&gt;time_stamp;</td></tr>
+<tr class="codeline" data-linenumber="397"><td class="num" id="LN397">397</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="398"><td class="num" id="LN398">398</td><td class="line"> DEBUG (pluma_text_region_debug_print (region));</td></tr>
+<tr class="codeline" data-linenumber="399"><td class="num" id="LN399">399</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="400"><td class="num" id="LN400">400</td><td class="line"> <span class='comment'>/* now get rid of empty subregions */</span></td></tr>
+<tr class="codeline" data-linenumber="401"><td class="num" id="LN401">401</td><td class="line"> pluma_text_region_clear_zero_length_subregions (region);</td></tr>
+<tr class="codeline" data-linenumber="402"><td class="num" id="LN402">402</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="403"><td class="num" id="LN403">403</td><td class="line"> DEBUG (pluma_text_region_debug_print (region));</td></tr>
+<tr class="codeline" data-linenumber="404"><td class="num" id="LN404">404</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="405"><td class="num" id="LN405">405</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="406"><td class="num" id="LN406">406</td><td class="line">gint</td></tr>
+<tr class="codeline" data-linenumber="407"><td class="num" id="LN407">407</td><td class="line">pluma_text_region_subregions (PlumaTextRegion *region)</td></tr>
+<tr class="codeline" data-linenumber="408"><td class="num" id="LN408">408</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="409"><td class="num" id="LN409">409</td><td class="line"> <span class='macro'>g_return_val_if_fail (region != NULL, 0)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_38<br>; if (region != ((void*)0)) _g_boolean_var_38 = 1; else _g_boolean_var_38<br> = 0; _g_boolean_var_38; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "region != NULL")<br>; return (0); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="410"><td class="num" id="LN410">410</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="411"><td class="num" id="LN411">411</td><td class="line"> <span class='keyword'>return</span> g_list_length (region-&gt;subregions);</td></tr>
+<tr class="codeline" data-linenumber="412"><td class="num" id="LN412">412</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="413"><td class="num" id="LN413">413</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="414"><td class="num" id="LN414">414</td><td class="line">gboolean</td></tr>
+<tr class="codeline" data-linenumber="415"><td class="num" id="LN415">415</td><td class="line">pluma_text_region_nth_subregion (PlumaTextRegion *region,</td></tr>
+<tr class="codeline" data-linenumber="416"><td class="num" id="LN416">416</td><td class="line"> guint subregion,</td></tr>
+<tr class="codeline" data-linenumber="417"><td class="num" id="LN417">417</td><td class="line"> GtkTextIter *start,</td></tr>
+<tr class="codeline" data-linenumber="418"><td class="num" id="LN418">418</td><td class="line"> GtkTextIter *end)</td></tr>
+<tr class="codeline" data-linenumber="419"><td class="num" id="LN419">419</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="420"><td class="num" id="LN420">420</td><td class="line"> Subregion *sr;</td></tr>
+<tr class="codeline" data-linenumber="421"><td class="num" id="LN421">421</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="422"><td class="num" id="LN422">422</td><td class="line"> <span class='macro'>g_return_val_if_fail (region != NULL, FALSE)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_39<br>; if (region != ((void*)0)) _g_boolean_var_39 = 1; else _g_boolean_var_39<br> = 0; _g_boolean_var_39; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "region != NULL")<br>; return ((0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="423"><td class="num" id="LN423">423</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="424"><td class="num" id="LN424">424</td><td class="line"> sr = g_list_nth_data (region-&gt;subregions, subregion);</td></tr>
+<tr class="codeline" data-linenumber="425"><td class="num" id="LN425">425</td><td class="line"> <span class='keyword'>if</span> (sr == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="426"><td class="num" id="LN426">426</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="427"><td class="num" id="LN427">427</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="428"><td class="num" id="LN428">428</td><td class="line"> <span class='keyword'>if</span> (start)</td></tr>
+<tr class="codeline" data-linenumber="429"><td class="num" id="LN429">429</td><td class="line"> gtk_text_buffer_get_iter_at_mark (region-&gt;buffer, start, sr-&gt;start);</td></tr>
+<tr class="codeline" data-linenumber="430"><td class="num" id="LN430">430</td><td class="line"> <span class='keyword'>if</span> (end)</td></tr>
+<tr class="codeline" data-linenumber="431"><td class="num" id="LN431">431</td><td class="line"> gtk_text_buffer_get_iter_at_mark (region-&gt;buffer, end, sr-&gt;end);</td></tr>
+<tr class="codeline" data-linenumber="432"><td class="num" id="LN432">432</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="433"><td class="num" id="LN433">433</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="434"><td class="num" id="LN434">434</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="435"><td class="num" id="LN435">435</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="436"><td class="num" id="LN436">436</td><td class="line">PlumaTextRegion *</td></tr>
+<tr class="codeline" data-linenumber="437"><td class="num" id="LN437">437</td><td class="line">pluma_text_region_intersect (PlumaTextRegion *region,</td></tr>
+<tr class="codeline" data-linenumber="438"><td class="num" id="LN438">438</td><td class="line"> <span class='keyword'>const</span> GtkTextIter *_start,</td></tr>
+<tr class="codeline" data-linenumber="439"><td class="num" id="LN439">439</td><td class="line"> <span class='keyword'>const</span> GtkTextIter *_end)</td></tr>
+<tr class="codeline" data-linenumber="440"><td class="num" id="LN440">440</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="441"><td class="num" id="LN441">441</td><td class="line"> GList *start_node, *end_node, *node;</td></tr>
+<tr class="codeline" data-linenumber="442"><td class="num" id="LN442">442</td><td class="line"> GtkTextIter sr_start_iter, sr_end_iter;</td></tr>
+<tr class="codeline" data-linenumber="443"><td class="num" id="LN443">443</td><td class="line"> Subregion *sr, *new_sr;</td></tr>
+<tr class="codeline" data-linenumber="444"><td class="num" id="LN444">444</td><td class="line"> gboolean done;</td></tr>
+<tr class="codeline" data-linenumber="445"><td class="num" id="LN445">445</td><td class="line"> PlumaTextRegion *new_region;</td></tr>
+<tr class="codeline" data-linenumber="446"><td class="num" id="LN446">446</td><td class="line"> GtkTextIter start, end;</td></tr>
+<tr class="codeline" data-linenumber="447"><td class="num" id="LN447">447</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="448"><td class="num" id="LN448">448</td><td class="line"> <span class='macro'>g_return_val_if_fail (region != NULL &amp;&amp; _start != NULL &amp;&amp; _end != NULL, NULL)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_40<br>; if (region != ((void*)0) &amp;&amp; _start != ((void*)0) &amp;&amp;<br> _end != ((void*)0)) _g_boolean_var_40 = 1; else _g_boolean_var_40<br> = 0; _g_boolean_var_40; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "region != NULL &amp;&amp; _start != NULL &amp;&amp; _end != NULL"<br>); return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="449"><td class="num" id="LN449">449</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="450"><td class="num" id="LN450">450</td><td class="line"> start = *_start;</td></tr>
+<tr class="codeline" data-linenumber="451"><td class="num" id="LN451">451</td><td class="line"> end = *_end;</td></tr>
+<tr class="codeline" data-linenumber="452"><td class="num" id="LN452">452</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="453"><td class="num" id="LN453">453</td><td class="line"> gtk_text_iter_order (&amp;start, &amp;end);</td></tr>
+<tr class="codeline" data-linenumber="454"><td class="num" id="LN454">454</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="455"><td class="num" id="LN455">455</td><td class="line"> <span class='comment'>/* find bounding subregions */</span></td></tr>
+<tr class="codeline" data-linenumber="456"><td class="num" id="LN456">456</td><td class="line"> start_node = find_nearest_subregion (region, &amp;start, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="457"><td class="num" id="LN457">457</td><td class="line"> end_node = find_nearest_subregion (region, &amp;end, start_node, <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="458"><td class="num" id="LN458">458</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="459"><td class="num" id="LN459">459</td><td class="line"> <span class='comment'>/* easy case first */</span></td></tr>
+<tr class="codeline" data-linenumber="460"><td class="num" id="LN460">460</td><td class="line"> <span class='keyword'>if</span> (start_node == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> || end_node == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> || end_node == start_node-&gt;prev)</td></tr>
+<tr class="codeline" data-linenumber="461"><td class="num" id="LN461">461</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="462"><td class="num" id="LN462">462</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="463"><td class="num" id="LN463">463</td><td class="line"> new_region = pluma_text_region_new (region-&gt;buffer);</td></tr>
+<tr class="codeline" data-linenumber="464"><td class="num" id="LN464">464</td><td class="line"> done = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="465"><td class="num" id="LN465">465</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="466"><td class="num" id="LN466">466</td><td class="line"> sr = start_node-&gt;data;</td></tr>
+<tr class="codeline" data-linenumber="467"><td class="num" id="LN467">467</td><td class="line"> gtk_text_buffer_get_iter_at_mark (region-&gt;buffer, &amp;sr_start_iter, sr-&gt;start);</td></tr>
+<tr class="codeline" data-linenumber="468"><td class="num" id="LN468">468</td><td class="line"> gtk_text_buffer_get_iter_at_mark (region-&gt;buffer, &amp;sr_end_iter, sr-&gt;end);</td></tr>
+<tr class="codeline" data-linenumber="469"><td class="num" id="LN469">469</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="470"><td class="num" id="LN470">470</td><td class="line"> <span class='comment'>/* starting node */</span></td></tr>
+<tr class="codeline" data-linenumber="471"><td class="num" id="LN471">471</td><td class="line"> <span class='keyword'>if</span> (gtk_text_iter_in_range (&amp;start, &amp;sr_start_iter, &amp;sr_end_iter)) {</td></tr>
+<tr class="codeline" data-linenumber="472"><td class="num" id="LN472">472</td><td class="line"> new_sr = <span class='macro'>g_new0 (Subregion, 1)<span class='macro_popup'>(Subregion *) (__extension__ ({ gsize __n = (gsize) (1); gsize<br> __s = sizeof (Subregion); gpointer __p; if (__s == 1) __p = g_malloc0<br> (__n); else if (__builtin_constant_p (__n) &amp;&amp; (__s ==<br> 0 || __n &lt;= (9223372036854775807L *2UL+1UL) / __s)) __p =<br> g_malloc0 (__n * __s); else __p = g_malloc0_n (__n, __s); __p<br>; }))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="473"><td class="num" id="LN473">473</td><td class="line"> new_region-&gt;subregions = g_list_prepend (new_region-&gt;subregions, new_sr);</td></tr>
+<tr class="codeline" data-linenumber="474"><td class="num" id="LN474">474</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="475"><td class="num" id="LN475">475</td><td class="line"> new_sr-&gt;start = gtk_text_buffer_create_mark (new_region-&gt;buffer, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="476"><td class="num" id="LN476">476</td><td class="line"> &amp;start, <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="477"><td class="num" id="LN477">477</td><td class="line"> <span class='keyword'>if</span> (start_node == end_node) {</td></tr>
+<tr class="codeline" data-linenumber="478"><td class="num" id="LN478">478</td><td class="line"> <span class='comment'>/* things will finish shortly */</span></td></tr>
+<tr class="codeline" data-linenumber="479"><td class="num" id="LN479">479</td><td class="line"> done = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="480"><td class="num" id="LN480">480</td><td class="line"> <span class='keyword'>if</span> (gtk_text_iter_in_range (&amp;end, &amp;sr_start_iter, &amp;sr_end_iter))</td></tr>
+<tr class="codeline" data-linenumber="481"><td class="num" id="LN481">481</td><td class="line"> new_sr-&gt;end = gtk_text_buffer_create_mark (new_region-&gt;buffer,</td></tr>
+<tr class="codeline" data-linenumber="482"><td class="num" id="LN482">482</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, &amp;end, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="483"><td class="num" id="LN483">483</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="484"><td class="num" id="LN484">484</td><td class="line"> new_sr-&gt;end = gtk_text_buffer_create_mark (new_region-&gt;buffer,</td></tr>
+<tr class="codeline" data-linenumber="485"><td class="num" id="LN485">485</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, &amp;sr_end_iter,</td></tr>
+<tr class="codeline" data-linenumber="486"><td class="num" id="LN486">486</td><td class="line"> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="487"><td class="num" id="LN487">487</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="488"><td class="num" id="LN488">488</td><td class="line"> new_sr-&gt;end = gtk_text_buffer_create_mark (new_region-&gt;buffer, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="489"><td class="num" id="LN489">489</td><td class="line"> &amp;sr_end_iter, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="490"><td class="num" id="LN490">490</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="491"><td class="num" id="LN491">491</td><td class="line"> node = start_node-&gt;next;</td></tr>
+<tr class="codeline" data-linenumber="492"><td class="num" id="LN492">492</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="493"><td class="num" id="LN493">493</td><td class="line"> <span class='comment'>/* start should be the same as the subregion, so copy it in the loop */</span></td></tr>
+<tr class="codeline" data-linenumber="494"><td class="num" id="LN494">494</td><td class="line"> node = start_node;</td></tr>
+<tr class="codeline" data-linenumber="495"><td class="num" id="LN495">495</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="496"><td class="num" id="LN496">496</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="497"><td class="num" id="LN497">497</td><td class="line"> <span class='keyword'>if</span> (!done) {</td></tr>
+<tr class="codeline" data-linenumber="498"><td class="num" id="LN498">498</td><td class="line"> <span class='keyword'>while</span> (node != end_node) {</td></tr>
+<tr class="codeline" data-linenumber="499"><td class="num" id="LN499">499</td><td class="line"> <span class='comment'>/* copy intermediate subregions verbatim */</span></td></tr>
+<tr class="codeline" data-linenumber="500"><td class="num" id="LN500">500</td><td class="line"> sr = node-&gt;data;</td></tr>
+<tr class="codeline" data-linenumber="501"><td class="num" id="LN501">501</td><td class="line"> gtk_text_buffer_get_iter_at_mark (region-&gt;buffer, &amp;sr_start_iter,</td></tr>
+<tr class="codeline" data-linenumber="502"><td class="num" id="LN502">502</td><td class="line"> sr-&gt;start);</td></tr>
+<tr class="codeline" data-linenumber="503"><td class="num" id="LN503">503</td><td class="line"> gtk_text_buffer_get_iter_at_mark (region-&gt;buffer, &amp;sr_end_iter, sr-&gt;end);</td></tr>
+<tr class="codeline" data-linenumber="504"><td class="num" id="LN504">504</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="505"><td class="num" id="LN505">505</td><td class="line"> new_sr = <span class='macro'>g_new0 (Subregion, 1)<span class='macro_popup'>(Subregion *) (__extension__ ({ gsize __n = (gsize) (1); gsize<br> __s = sizeof (Subregion); gpointer __p; if (__s == 1) __p = g_malloc0<br> (__n); else if (__builtin_constant_p (__n) &amp;&amp; (__s ==<br> 0 || __n &lt;= (9223372036854775807L *2UL+1UL) / __s)) __p =<br> g_malloc0 (__n * __s); else __p = g_malloc0_n (__n, __s); __p<br>; }))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="506"><td class="num" id="LN506">506</td><td class="line"> new_region-&gt;subregions = g_list_prepend (new_region-&gt;subregions, new_sr);</td></tr>
+<tr class="codeline" data-linenumber="507"><td class="num" id="LN507">507</td><td class="line"> new_sr-&gt;start = gtk_text_buffer_create_mark (new_region-&gt;buffer, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="508"><td class="num" id="LN508">508</td><td class="line"> &amp;sr_start_iter, <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="509"><td class="num" id="LN509">509</td><td class="line"> new_sr-&gt;end = gtk_text_buffer_create_mark (new_region-&gt;buffer, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="510"><td class="num" id="LN510">510</td><td class="line"> &amp;sr_end_iter, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="511"><td class="num" id="LN511">511</td><td class="line"> <span class='comment'>/* next node */</span></td></tr>
+<tr class="codeline" data-linenumber="512"><td class="num" id="LN512">512</td><td class="line"> node = node-&gt;next;</td></tr>
+<tr class="codeline" data-linenumber="513"><td class="num" id="LN513">513</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="514"><td class="num" id="LN514">514</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="515"><td class="num" id="LN515">515</td><td class="line"> <span class='comment'>/* ending node */</span></td></tr>
+<tr class="codeline" data-linenumber="516"><td class="num" id="LN516">516</td><td class="line"> sr = node-&gt;data;</td></tr>
+<tr class="codeline" data-linenumber="517"><td class="num" id="LN517">517</td><td class="line"> gtk_text_buffer_get_iter_at_mark (region-&gt;buffer, &amp;sr_start_iter, sr-&gt;start);</td></tr>
+<tr class="codeline" data-linenumber="518"><td class="num" id="LN518">518</td><td class="line"> gtk_text_buffer_get_iter_at_mark (region-&gt;buffer, &amp;sr_end_iter, sr-&gt;end);</td></tr>
+<tr class="codeline" data-linenumber="519"><td class="num" id="LN519">519</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="520"><td class="num" id="LN520">520</td><td class="line"> new_sr = <span class='macro'>g_new0 (Subregion, 1)<span class='macro_popup'>(Subregion *) (__extension__ ({ gsize __n = (gsize) (1); gsize<br> __s = sizeof (Subregion); gpointer __p; if (__s == 1) __p = g_malloc0<br> (__n); else if (__builtin_constant_p (__n) &amp;&amp; (__s ==<br> 0 || __n &lt;= (9223372036854775807L *2UL+1UL) / __s)) __p =<br> g_malloc0 (__n * __s); else __p = g_malloc0_n (__n, __s); __p<br>; }))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="521"><td class="num" id="LN521">521</td><td class="line"> new_region-&gt;subregions = g_list_prepend (new_region-&gt;subregions, new_sr);</td></tr>
+<tr class="codeline" data-linenumber="522"><td class="num" id="LN522">522</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="523"><td class="num" id="LN523">523</td><td class="line"> new_sr-&gt;start = gtk_text_buffer_create_mark (new_region-&gt;buffer, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="524"><td class="num" id="LN524">524</td><td class="line"> &amp;sr_start_iter, <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="525"><td class="num" id="LN525">525</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="526"><td class="num" id="LN526">526</td><td class="line"> <span class='keyword'>if</span> (gtk_text_iter_in_range (&amp;end, &amp;sr_start_iter, &amp;sr_end_iter))</td></tr>
+<tr class="codeline" data-linenumber="527"><td class="num" id="LN527">527</td><td class="line"> new_sr-&gt;end = gtk_text_buffer_create_mark (new_region-&gt;buffer, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="528"><td class="num" id="LN528">528</td><td class="line"> &amp;end, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="529"><td class="num" id="LN529">529</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="530"><td class="num" id="LN530">530</td><td class="line"> new_sr-&gt;end = gtk_text_buffer_create_mark (new_region-&gt;buffer, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="531"><td class="num" id="LN531">531</td><td class="line"> &amp;sr_end_iter, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="532"><td class="num" id="LN532">532</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="533"><td class="num" id="LN533">533</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="534"><td class="num" id="LN534">534</td><td class="line"> new_region-&gt;subregions = g_list_reverse (new_region-&gt;subregions);</td></tr>
+<tr class="codeline" data-linenumber="535"><td class="num" id="LN535">535</td><td class="line"> <span class='keyword'>return</span> new_region;</td></tr>
+<tr class="codeline" data-linenumber="536"><td class="num" id="LN536">536</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="537"><td class="num" id="LN537">537</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="538"><td class="num" id="LN538">538</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="539"><td class="num" id="LN539">539</td><td class="line">check_iterator (PlumaTextRegionIteratorReal *real)</td></tr>
+<tr class="codeline" data-linenumber="540"><td class="num" id="LN540">540</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="541"><td class="num" id="LN541">541</td><td class="line"> <span class='keyword'>if</span> ((real-&gt;region == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) ||</td></tr>
+<tr class="codeline" data-linenumber="542"><td class="num" id="LN542">542</td><td class="line"> (real-&gt;region_time_stamp != real-&gt;region-&gt;time_stamp))</td></tr>
+<tr class="codeline" data-linenumber="543"><td class="num" id="LN543">543</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="544"><td class="num" id="LN544">544</td><td class="line"> g_warning(<span class='string_literal'>"Invalid iterator: either the iterator "</span></td></tr>
+<tr class="codeline" data-linenumber="545"><td class="num" id="LN545">545</td><td class="line"> <span class='string_literal'>"is uninitialized, or the region "</span></td></tr>
+<tr class="codeline" data-linenumber="546"><td class="num" id="LN546">546</td><td class="line"> <span class='string_literal'>"has been modified since the iterator "</span></td></tr>
+<tr class="codeline" data-linenumber="547"><td class="num" id="LN547">547</td><td class="line"> <span class='string_literal'>"was created."</span>);</td></tr>
+<tr class="codeline" data-linenumber="548"><td class="num" id="LN548">548</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="549"><td class="num" id="LN549">549</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="550"><td class="num" id="LN550">550</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="551"><td class="num" id="LN551">551</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="552"><td class="num" id="LN552">552</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="553"><td class="num" id="LN553">553</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="554"><td class="num" id="LN554">554</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="555"><td class="num" id="LN555">555</td><td class="line"><span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="556"><td class="num" id="LN556">556</td><td class="line">pluma_text_region_get_iterator (PlumaTextRegion *region,</td></tr>
+<tr class="codeline" data-linenumber="557"><td class="num" id="LN557">557</td><td class="line"> PlumaTextRegionIterator *iter,</td></tr>
+<tr class="codeline" data-linenumber="558"><td class="num" id="LN558">558</td><td class="line"> guint start)</td></tr>
+<tr class="codeline" data-linenumber="559"><td class="num" id="LN559">559</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="560"><td class="num" id="LN560">560</td><td class="line"> PlumaTextRegionIteratorReal *real;</td></tr>
+<tr class="codeline" data-linenumber="561"><td class="num" id="LN561">561</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="562"><td class="num" id="LN562">562</td><td class="line"> <span class='macro'>g_return_if_fail (region != NULL)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_41<br>; if (region != ((void*)0)) _g_boolean_var_41 = 1; else _g_boolean_var_41<br> = 0; _g_boolean_var_41; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "region != NULL")<br>; return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="563"><td class="num" id="LN563">563</td><td class="line"> <span class='macro'>g_return_if_fail (iter != NULL)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_42<br>; if (iter != ((void*)0)) _g_boolean_var_42 = 1; else _g_boolean_var_42<br> = 0; _g_boolean_var_42; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "iter != NULL"); return<br>; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="564"><td class="num" id="LN564">564</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="565"><td class="num" id="LN565">565</td><td class="line"> real = (PlumaTextRegionIteratorReal *)iter;</td></tr>
+<tr class="codeline" data-linenumber="566"><td class="num" id="LN566">566</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="567"><td class="num" id="LN567">567</td><td class="line"> <span class='comment'>/* region-&gt;subregions may be NULL, -&gt; end iter */</span></td></tr>
+<tr class="codeline" data-linenumber="568"><td class="num" id="LN568">568</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="569"><td class="num" id="LN569">569</td><td class="line"> real-&gt;region = region;</td></tr>
+<tr class="codeline" data-linenumber="570"><td class="num" id="LN570">570</td><td class="line"> real-&gt;subregions = g_list_nth (region-&gt;subregions, start);</td></tr>
+<tr class="codeline" data-linenumber="571"><td class="num" id="LN571">571</td><td class="line"> real-&gt;region_time_stamp = region-&gt;time_stamp;</td></tr>
+<tr class="codeline" data-linenumber="572"><td class="num" id="LN572">572</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="573"><td class="num" id="LN573">573</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="574"><td class="num" id="LN574">574</td><td class="line">gboolean</td></tr>
+<tr class="codeline" data-linenumber="575"><td class="num" id="LN575">575</td><td class="line">pluma_text_region_iterator_is_end (PlumaTextRegionIterator *iter)</td></tr>
+<tr class="codeline" data-linenumber="576"><td class="num" id="LN576">576</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="577"><td class="num" id="LN577">577</td><td class="line"> PlumaTextRegionIteratorReal *real;</td></tr>
+<tr class="codeline" data-linenumber="578"><td class="num" id="LN578">578</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="579"><td class="num" id="LN579">579</td><td class="line"> <span class='macro'>g_return_val_if_fail (iter != NULL, FALSE)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_43<br>; if (iter != ((void*)0)) _g_boolean_var_43 = 1; else _g_boolean_var_43<br> = 0; _g_boolean_var_43; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "iter != NULL"); return<br> ((0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="580"><td class="num" id="LN580">580</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="581"><td class="num" id="LN581">581</td><td class="line"> real = (PlumaTextRegionIteratorReal *)iter;</td></tr>
+<tr class="codeline" data-linenumber="582"><td class="num" id="LN582">582</td><td class="line"> <span class='macro'>g_return_val_if_fail (check_iterator (real), FALSE)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_44<br>; if (check_iterator (real)) _g_boolean_var_44 = 1; else _g_boolean_var_44<br> = 0; _g_boolean_var_44; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "check_iterator (real)"<br>); return ((0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="583"><td class="num" id="LN583">583</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="584"><td class="num" id="LN584">584</td><td class="line"> <span class='keyword'>return</span> (real-&gt;subregions == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="585"><td class="num" id="LN585">585</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="586"><td class="num" id="LN586">586</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="587"><td class="num" id="LN587">587</td><td class="line">gboolean</td></tr>
+<tr class="codeline" data-linenumber="588"><td class="num" id="LN588">588</td><td class="line">pluma_text_region_iterator_next (PlumaTextRegionIterator *iter)</td></tr>
+<tr class="codeline" data-linenumber="589"><td class="num" id="LN589">589</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="590"><td class="num" id="LN590">590</td><td class="line"> PlumaTextRegionIteratorReal *real;</td></tr>
+<tr class="codeline" data-linenumber="591"><td class="num" id="LN591">591</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="592"><td class="num" id="LN592">592</td><td class="line"> <span class='macro'>g_return_val_if_fail (iter != NULL, FALSE)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_45<br>; if (iter != ((void*)0)) _g_boolean_var_45 = 1; else _g_boolean_var_45<br> = 0; _g_boolean_var_45; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "iter != NULL"); return<br> ((0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="593"><td class="num" id="LN593">593</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="594"><td class="num" id="LN594">594</td><td class="line"> real = (PlumaTextRegionIteratorReal *)iter;</td></tr>
+<tr class="codeline" data-linenumber="595"><td class="num" id="LN595">595</td><td class="line"> <span class='macro'>g_return_val_if_fail (check_iterator (real), FALSE)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_46<br>; if (check_iterator (real)) _g_boolean_var_46 = 1; else _g_boolean_var_46<br> = 0; _g_boolean_var_46; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "check_iterator (real)"<br>); return ((0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="596"><td class="num" id="LN596">596</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="597"><td class="num" id="LN597">597</td><td class="line"> <span class='keyword'>if</span> (real-&gt;subregions != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="598"><td class="num" id="LN598">598</td><td class="line"> real-&gt;subregions = <span class='macro'>g_list_next (real-&gt;subregions)<span class='macro_popup'>((real-&gt;subregions) ? (((GList *)(real-&gt;subregions))-&gt;<br>next) : ((void*)0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="599"><td class="num" id="LN599">599</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="600"><td class="num" id="LN600">600</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="601"><td class="num" id="LN601">601</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="602"><td class="num" id="LN602">602</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="603"><td class="num" id="LN603">603</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="604"><td class="num" id="LN604">604</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="605"><td class="num" id="LN605">605</td><td class="line"><span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="606"><td class="num" id="LN606">606</td><td class="line">pluma_text_region_iterator_get_subregion (PlumaTextRegionIterator *iter,</td></tr>
+<tr class="codeline" data-linenumber="607"><td class="num" id="LN607">607</td><td class="line"> GtkTextIter *start,</td></tr>
+<tr class="codeline" data-linenumber="608"><td class="num" id="LN608">608</td><td class="line"> GtkTextIter *end)</td></tr>
+<tr class="codeline" data-linenumber="609"><td class="num" id="LN609">609</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="610"><td class="num" id="LN610">610</td><td class="line"> PlumaTextRegionIteratorReal *real;</td></tr>
+<tr class="codeline" data-linenumber="611"><td class="num" id="LN611">611</td><td class="line"> Subregion *sr;</td></tr>
+<tr class="codeline" data-linenumber="612"><td class="num" id="LN612">612</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="613"><td class="num" id="LN613">613</td><td class="line"> <span class='macro'>g_return_if_fail (iter != NULL)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_47<br>; if (iter != ((void*)0)) _g_boolean_var_47 = 1; else _g_boolean_var_47<br> = 0; _g_boolean_var_47; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "iter != NULL"); return<br>; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="614"><td class="num" id="LN614">614</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="615"><td class="num" id="LN615">615</td><td class="line"> real = (PlumaTextRegionIteratorReal *)iter;</td></tr>
+<tr class="codeline" data-linenumber="616"><td class="num" id="LN616">616</td><td class="line"> <span class='macro'>g_return_if_fail (check_iterator (real))<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_48<br>; if (check_iterator (real)) _g_boolean_var_48 = 1; else _g_boolean_var_48<br> = 0; _g_boolean_var_48; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "check_iterator (real)"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="617"><td class="num" id="LN617">617</td><td class="line"> <span class='macro'>g_return_if_fail (real-&gt;subregions != NULL)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_49<br>; if (real-&gt;subregions != ((void*)0)) _g_boolean_var_49 = 1<br>; else _g_boolean_var_49 = 0; _g_boolean_var_49; }), 1))) { }<br> else { g_return_if_fail_warning (((gchar*) 0), ((const char*<br>) (__func__)), "real-&gt;subregions != NULL"); return; } } while<br> (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="618"><td class="num" id="LN618">618</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="619"><td class="num" id="LN619">619</td><td class="line"> sr = (Subregion*)real-&gt;subregions-&gt;data;</td></tr>
+<tr class="codeline" data-linenumber="620"><td class="num" id="LN620">620</td><td class="line"> <span class='macro'>g_return_if_fail (sr != NULL)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_50<br>; if (sr != ((void*)0)) _g_boolean_var_50 = 1; else _g_boolean_var_50<br> = 0; _g_boolean_var_50; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "sr != NULL"); return<br>; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="621"><td class="num" id="LN621">621</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="622"><td class="num" id="LN622">622</td><td class="line"> <span class='keyword'>if</span> (start)</td></tr>
+<tr class="codeline" data-linenumber="623"><td class="num" id="LN623">623</td><td class="line"> gtk_text_buffer_get_iter_at_mark (real-&gt;region-&gt;buffer, start, sr-&gt;start);</td></tr>
+<tr class="codeline" data-linenumber="624"><td class="num" id="LN624">624</td><td class="line"> <span class='keyword'>if</span> (end)</td></tr>
+<tr class="codeline" data-linenumber="625"><td class="num" id="LN625">625</td><td class="line"> gtk_text_buffer_get_iter_at_mark (real-&gt;region-&gt;buffer, end, sr-&gt;end);</td></tr>
+<tr class="codeline" data-linenumber="626"><td class="num" id="LN626">626</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="627"><td class="num" id="LN627">627</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="628"><td class="num" id="LN628">628</td><td class="line"><span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="629"><td class="num" id="LN629">629</td><td class="line">pluma_text_region_debug_print (PlumaTextRegion *region)</td></tr>
+<tr class="codeline" data-linenumber="630"><td class="num" id="LN630">630</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="631"><td class="num" id="LN631">631</td><td class="line"> GList *l;</td></tr>
+<tr class="codeline" data-linenumber="632"><td class="num" id="LN632">632</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="633"><td class="num" id="LN633">633</td><td class="line"> <span class='macro'>g_return_if_fail (region != NULL)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_51<br>; if (region != ((void*)0)) _g_boolean_var_51 = 1; else _g_boolean_var_51<br> = 0; _g_boolean_var_51; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "region != NULL")<br>; return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="634"><td class="num" id="LN634">634</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="635"><td class="num" id="LN635">635</td><td class="line"> g_print (<span class='string_literal'>"Subregions: "</span>);</td></tr>
+<tr class="codeline" data-linenumber="636"><td class="num" id="LN636">636</td><td class="line"> l = region-&gt;subregions;</td></tr>
+<tr class="codeline" data-linenumber="637"><td class="num" id="LN637">637</td><td class="line"> <span class='keyword'>while</span> (l) {</td></tr>
+<tr class="codeline" data-linenumber="638"><td class="num" id="LN638">638</td><td class="line"> Subregion *sr = l-&gt;data;</td></tr>
+<tr class="codeline" data-linenumber="639"><td class="num" id="LN639">639</td><td class="line"> GtkTextIter iter1, iter2;</td></tr>
+<tr class="codeline" data-linenumber="640"><td class="num" id="LN640">640</td><td class="line"> gtk_text_buffer_get_iter_at_mark (region-&gt;buffer, &amp;iter1, sr-&gt;start);</td></tr>
+<tr class="codeline" data-linenumber="641"><td class="num" id="LN641">641</td><td class="line"> gtk_text_buffer_get_iter_at_mark (region-&gt;buffer, &amp;iter2, sr-&gt;end);</td></tr>
+<tr class="codeline" data-linenumber="642"><td class="num" id="LN642">642</td><td class="line"> g_print (<span class='string_literal'>"%d-%d "</span>, gtk_text_iter_get_offset (&amp;iter1),</td></tr>
+<tr class="codeline" data-linenumber="643"><td class="num" id="LN643">643</td><td class="line"> gtk_text_iter_get_offset (&amp;iter2));</td></tr>
+<tr class="codeline" data-linenumber="644"><td class="num" id="LN644">644</td><td class="line"> l = l-&gt;next;</td></tr>
+<tr class="codeline" data-linenumber="645"><td class="num" id="LN645">645</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="646"><td class="num" id="LN646">646</td><td class="line"> g_print (<span class='string_literal'>"\n"</span>);</td></tr>
+<tr class="codeline" data-linenumber="647"><td class="num" id="LN647">647</td><td class="line">}</td></tr>
+</table></body></html>
diff --git a/2023-05-28-030536-6612-1@f643dde74cbd_master/report-b8f564.html b/2023-05-28-030536-6612-1@f643dde74cbd_master/report-b8f564.html
new file mode 100644
index 00000000..8853d8b3
--- /dev/null
+++ b/2023-05-28-030536-6612-1@f643dde74cbd_master/report-b8f564.html
@@ -0,0 +1,2089 @@
+<!doctype html>
+<html>
+<head>
+<title>eggsmclient-xsmp.c</title>
+
+<style type="text/css">
+body { color:#000000; background-color:#ffffff }
+body { font-family:Helvetica, sans-serif; font-size:10pt }
+h1 { font-size:14pt }
+.FileName { margin-top: 5px; margin-bottom: 5px; display: inline; }
+.FileNav { margin-left: 5px; margin-right: 5px; display: inline; }
+.FileNav a { text-decoration:none; font-size: larger; }
+.divider { margin-top: 30px; margin-bottom: 30px; height: 15px; }
+.divider { background-color: gray; }
+.code { border-collapse:collapse; width:100%; }
+.code { font-family: "Monospace", monospace; font-size:10pt }
+.code { line-height: 1.2em }
+.comment { color: green; font-style: oblique }
+.keyword { color: blue }
+.string_literal { color: red }
+.directive { color: darkmagenta }
+
+/* Macros and variables could have pop-up notes hidden by default.
+ - Macro pop-up: expansion of the macro
+ - Variable pop-up: value (table) of the variable */
+.macro_popup, .variable_popup { display: none; }
+
+/* Pop-up appears on mouse-hover event. */
+.macro:hover .macro_popup, .variable:hover .variable_popup {
+ display: block;
+ padding: 2px;
+ -webkit-border-radius:5px;
+ -webkit-box-shadow:1px 1px 7px #000;
+ border-radius:5px;
+ box-shadow:1px 1px 7px #000;
+ position: absolute;
+ top: -1em;
+ left:10em;
+ z-index: 1
+}
+
+.macro_popup {
+ border: 2px solid red;
+ background-color:#FFF0F0;
+ font-weight: normal;
+}
+
+.variable_popup {
+ border: 2px solid blue;
+ background-color:#F0F0FF;
+ font-weight: bold;
+ font-family: Helvetica, sans-serif;
+ font-size: 9pt;
+}
+
+/* Pop-up notes needs a relative position as a base where they pops up. */
+.macro, .variable {
+ background-color: PaleGoldenRod;
+ position: relative;
+}
+.macro { color: DarkMagenta; }
+
+#tooltiphint {
+ position: fixed;
+ width: 50em;
+ margin-left: -25em;
+ left: 50%;
+ padding: 10px;
+ border: 1px solid #b0b0b0;
+ border-radius: 2px;
+ box-shadow: 1px 1px 7px black;
+ background-color: #c0c0c0;
+ z-index: 2;
+}
+
+.num { width:2.5em; padding-right:2ex; background-color:#eeeeee }
+.num { text-align:right; font-size:8pt }
+.num { color:#444444 }
+.line { padding-left: 1ex; border-left: 3px solid #ccc }
+.line { white-space: pre }
+.msg { -webkit-box-shadow:1px 1px 7px #000 }
+.msg { box-shadow:1px 1px 7px #000 }
+.msg { -webkit-border-radius:5px }
+.msg { border-radius:5px }
+.msg { font-family:Helvetica, sans-serif; font-size:8pt }
+.msg { float:left }
+.msg { position:relative }
+.msg { padding:0.25em 1ex 0.25em 1ex }
+.msg { margin-top:10px; margin-bottom:10px }
+.msg { font-weight:bold }
+.msg { max-width:60em; word-wrap: break-word; white-space: pre-wrap }
+.msgT { padding:0x; spacing:0x }
+.msgEvent { background-color:#fff8b4; color:#000000 }
+.msgControl { background-color:#bbbbbb; color:#000000 }
+.msgNote { background-color:#ddeeff; color:#000000 }
+.mrange { background-color:#dfddf3 }
+.mrange { border-bottom:1px solid #6F9DBE }
+.PathIndex { font-weight: bold; padding:0px 5px; margin-right:5px; }
+.PathIndex { -webkit-border-radius:8px }
+.PathIndex { border-radius:8px }
+.PathIndexEvent { background-color:#bfba87 }
+.PathIndexControl { background-color:#8c8c8c }
+.PathIndexPopUp { background-color: #879abc; }
+.PathNav a { text-decoration:none; font-size: larger }
+.CodeInsertionHint { font-weight: bold; background-color: #10dd10 }
+.CodeRemovalHint { background-color:#de1010 }
+.CodeRemovalHint { border-bottom:1px solid #6F9DBE }
+.msg.selected{ background-color:orange !important; }
+
+table.simpletable {
+ padding: 5px;
+ font-size:12pt;
+ margin:20px;
+ border-collapse: collapse; border-spacing: 0px;
+}
+td.rowname {
+ text-align: right;
+ vertical-align: top;
+ font-weight: bold;
+ color:#444444;
+ padding-right:2ex;
+}
+
+/* Hidden text. */
+input.spoilerhider + label {
+ cursor: pointer;
+ text-decoration: underline;
+ display: block;
+}
+input.spoilerhider {
+ display: none;
+}
+input.spoilerhider ~ .spoiler {
+ overflow: hidden;
+ margin: 10px auto 0;
+ height: 0;
+ opacity: 0;
+}
+input.spoilerhider:checked + label + .spoiler{
+ height: auto;
+ opacity: 1;
+}
+</style>
+</head>
+<body>
+<!-- BUGDESC Casting a non-structure type to a structure type and accessing a field can lead to memory access errors or data corruption -->
+
+<!-- BUGTYPE Cast from non-struct type to struct type -->
+
+<!-- BUGCATEGORY Logic error -->
+
+<!-- BUGFILE /rootdir/pluma/mate-submodules/libegg/eggsmclient-xsmp.c -->
+
+<!-- FILENAME eggsmclient-xsmp.c -->
+
+<!-- FUNCTIONNAME array_prop -->
+
+<!-- ISSUEHASHCONTENTOFLINEINCONTEXT b8f564960b65bf4fae4d59c6aee36738 -->
+
+<!-- BUGLINE 1199 -->
+
+<!-- BUGCOLUMN 18 -->
+
+<!-- BUGPATHLENGTH 1 -->
+
+<!-- BUGMETAEND -->
+<!-- REPORTHEADER -->
+<h3>Bug Summary</h3>
+<table class="simpletable">
+<tr><td class="rowname">File:</td><td>pluma/mate-submodules/libegg/eggsmclient-xsmp.c</td></tr>
+<tr><td class="rowname">Warning:</td><td><a href="#EndPath">line 1199, column 18</a><br />Casting a non-structure type to a structure type and accessing a field can lead to memory access errors or data corruption</td></tr>
+
+</table>
+<!-- REPORTSUMMARYEXTRA -->
+<h3>Annotated Source Code</h3>
+<p>Press <a href="#" onclick="toggleHelp(); return false;">'?'</a>
+ to see keyboard shortcuts</p>
+<input type="checkbox" class="spoilerhider" id="showinvocation" />
+<label for="showinvocation" >Show analyzer invocation</label>
+<div class="spoiler">clang -cc1 -cc1 -triple x86_64-redhat-linux-gnu -analyze -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name eggsmclient-xsmp.c -analyzer-checker=core -analyzer-checker=apiModeling -analyzer-checker=unix -analyzer-checker=deadcode -analyzer-checker=security.insecureAPI.UncheckedReturn -analyzer-checker=security.insecureAPI.getpw -analyzer-checker=security.insecureAPI.gets -analyzer-checker=security.insecureAPI.mktemp -analyzer-checker=security.insecureAPI.mkstemp -analyzer-checker=security.insecureAPI.vfork -analyzer-checker=nullability.NullPassedToNonnull -analyzer-checker=nullability.NullReturnedFromNonnull -analyzer-output plist -w -setup-static-analyzer -mrelocation-model pic -pic-level 2 -fhalf-no-semantic-interposition -mframe-pointer=none -fmath-errno -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=2 -target-cpu x86-64 -tune-cpu generic -debugger-tuning=gdb -fcoverage-compilation-dir=/rootdir/pluma/mate-submodules/libegg -resource-dir /usr/lib64/clang/16 -D HAVE_CONFIG_H -I . -I ../../.. -I /usr/include/gtk-3.0 -I /usr/include/pango-1.0 -I /usr/include/glib-2.0 -I /usr/lib64/glib-2.0/include -I /usr/include/sysprof-4 -I /usr/include/harfbuzz -I /usr/include/freetype2 -I /usr/include/libpng16 -I /usr/include/libmount -I /usr/include/blkid -I /usr/include/fribidi -I /usr/include/libxml2 -I /usr/include/cairo -I /usr/include/pixman-1 -I /usr/include/gdk-pixbuf-2.0 -I /usr/include/gio-unix-2.0 -I /usr/include/cloudproviders -I /usr/include/atk-1.0 -I /usr/include/at-spi2-atk/2.0 -I /usr/include/at-spi-2.0 -I /usr/include/dbus-1.0 -I /usr/lib64/dbus-1.0/include -D EGG_SM_CLIENT_BACKEND_XSMP -D G_LOG_DOMAIN="EggSMClient" -I /usr/include/gtk-3.0 -I /usr/include/pango-1.0 -I /usr/include/glib-2.0 -I /usr/lib64/glib-2.0/include -I /usr/include/sysprof-4 -I /usr/include/harfbuzz -I /usr/include/freetype2 -I /usr/include/libpng16 -I /usr/include/libmount -I /usr/include/blkid -I /usr/include/fribidi -I /usr/include/libxml2 -I /usr/include/cairo -I /usr/include/pixman-1 -I /usr/include/gdk-pixbuf-2.0 -I /usr/include/gio-unix-2.0 -I /usr/include/cloudproviders -I /usr/include/atk-1.0 -I /usr/include/at-spi2-atk/2.0 -I /usr/include/at-spi-2.0 -I /usr/include/dbus-1.0 -I /usr/lib64/dbus-1.0/include -D PIC -internal-isystem /usr/lib64/clang/16/include -internal-isystem /usr/local/include -internal-isystem /usr/bin/../lib/gcc/x86_64-redhat-linux/13/../../../../x86_64-redhat-linux/include -internal-externc-isystem /include -internal-externc-isystem /usr/include -O2 -Wno-unused-parameter -fdebug-compilation-dir=/rootdir/pluma/mate-submodules/libegg -ferror-limit 19 -fgnuc-version=4.2.1 -vectorize-loops -vectorize-slp -analyzer-checker deadcode.DeadStores -analyzer-checker alpha.deadcode.UnreachableCode -analyzer-checker alpha.core.CastSize -analyzer-checker alpha.core.CastToStruct -analyzer-checker alpha.core.IdenticalExpr -analyzer-checker alpha.core.SizeofPtr -analyzer-checker alpha.security.ArrayBoundV2 -analyzer-checker alpha.security.MallocOverflow -analyzer-checker alpha.security.ReturnPtrRange -analyzer-checker alpha.unix.SimpleStream -analyzer-checker alpha.unix.cstring.BufferOverlap -analyzer-checker alpha.unix.cstring.NotNullTerminated -analyzer-checker alpha.unix.cstring.OutOfBounds -analyzer-checker alpha.core.FixedAddr -analyzer-checker security.insecureAPI.strcpy -analyzer-output=html -faddrsig -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o /rootdir/html-report/2023-05-28-030536-6612-1 -x c eggsmclient-xsmp.c
+</div>
+<div id='tooltiphint' hidden="true">
+ <p>Keyboard shortcuts: </p>
+ <ul>
+ <li>Use 'j/k' keys for keyboard navigation</li>
+ <li>Use 'Shift+S' to show/hide relevant lines</li>
+ <li>Use '?' to toggle this window</li>
+ </ul>
+ <a href="#" onclick="toggleHelp(); return false;">Close</a>
+</div>
+<script type='text/javascript'>
+var relevant_lines = {"1": {"1199": 1}};
+
+var filterCounterexample = function (hide) {
+ var tables = document.getElementsByClassName("code");
+ for (var t=0; t<tables.length; t++) {
+ var table = tables[t];
+ var file_id = table.getAttribute("data-fileid");
+ var lines_in_fid = relevant_lines[file_id];
+ if (!lines_in_fid) {
+ lines_in_fid = {};
+ }
+ var lines = table.getElementsByClassName("codeline");
+ for (var i=0; i<lines.length; i++) {
+ var el = lines[i];
+ var lineNo = el.getAttribute("data-linenumber");
+ if (!lines_in_fid[lineNo]) {
+ if (hide) {
+ el.setAttribute("hidden", "");
+ } else {
+ el.removeAttribute("hidden");
+ }
+ }
+ }
+ }
+}
+
+window.addEventListener("keydown", function (event) {
+ if (event.defaultPrevented) {
+ return;
+ }
+ // SHIFT + S
+ if (event.shiftKey && event.keyCode == 83) {
+ var checked = document.getElementsByName("showCounterexample")[0].checked;
+ filterCounterexample(!checked);
+ document.getElementsByName("showCounterexample")[0].click();
+ } else {
+ return;
+ }
+ event.preventDefault();
+}, true);
+
+document.addEventListener("DOMContentLoaded", function() {
+ document.querySelector('input[name="showCounterexample"]').onchange=
+ function (event) {
+ filterCounterexample(this.checked);
+ };
+});
+</script>
+
+<form>
+ <input type="checkbox" name="showCounterexample" id="showCounterexample" />
+ <label for="showCounterexample">
+ Show only relevant lines
+ </label>
+ <input type="checkbox" name="showArrows"
+ id="showArrows" style="margin-left: 10px" />
+ <label for="showArrows">
+ Show control flow arrows
+ </label>
+</form>
+
+<script type='text/javascript'>
+// Return range of numbers from a range [lower, upper).
+function range(lower, upper) {
+ var array = [];
+ for (var i = lower; i <= upper; ++i) {
+ array.push(i);
+ }
+ return array;
+}
+
+var getRelatedArrowIndices = function(pathId) {
+ // HTML numeration of events is a bit different than it is in the path.
+ // Everything is rotated one step to the right, so the last element
+ // (error diagnostic) has index 0.
+ if (pathId == 0) {
+ // arrowIndices has at least 2 elements
+ pathId = arrowIndices.length - 1;
+ }
+
+ return range(arrowIndices[pathId], arrowIndices[pathId - 1]);
+}
+
+var highlightArrowsForSelectedEvent = function() {
+ const selectedNum = findNum();
+ const arrowIndicesToHighlight = getRelatedArrowIndices(selectedNum);
+ arrowIndicesToHighlight.forEach((index) => {
+ var arrow = document.querySelector("#arrow" + index);
+ if(arrow) {
+ classListAdd(arrow, "selected")
+ }
+ });
+}
+
+var getAbsoluteBoundingRect = function(element) {
+ const relative = element.getBoundingClientRect();
+ return {
+ left: relative.left + window.pageXOffset,
+ right: relative.right + window.pageXOffset,
+ top: relative.top + window.pageYOffset,
+ bottom: relative.bottom + window.pageYOffset,
+ height: relative.height,
+ width: relative.width
+ };
+}
+
+var drawArrow = function(index) {
+ // This function is based on the great answer from SO:
+ // https://stackoverflow.com/a/39575674/11582326
+ var start = document.querySelector("#start" + index);
+ var end = document.querySelector("#end" + index);
+ var arrow = document.querySelector("#arrow" + index);
+
+ var startRect = getAbsoluteBoundingRect(start);
+ var endRect = getAbsoluteBoundingRect(end);
+
+ // It is an arrow from a token to itself, no need to visualize it.
+ if (startRect.top == endRect.top &&
+ startRect.left == endRect.left)
+ return;
+
+ // Each arrow is a very simple Bézier curve, with two nodes and
+ // two handles. So, we need to calculate four points in the window:
+ // * start node
+ var posStart = { x: 0, y: 0 };
+ // * end node
+ var posEnd = { x: 0, y: 0 };
+ // * handle for the start node
+ var startHandle = { x: 0, y: 0 };
+ // * handle for the end node
+ var endHandle = { x: 0, y: 0 };
+ // One can visualize it as follows:
+ //
+ // start handle
+ // /
+ // X"""_.-""""X
+ // .' \
+ // / start node
+ // |
+ // |
+ // | end node
+ // \ /
+ // `->X
+ // X-'
+ // \
+ // end handle
+ //
+ // NOTE: (0, 0) is the top left corner of the window.
+
+ // We have 3 similar, but still different scenarios to cover:
+ //
+ // 1. Two tokens on different lines.
+ // -xxx
+ // /
+ // \
+ // -> xxx
+ // In this situation, we draw arrow on the left curving to the left.
+ // 2. Two tokens on the same line, and the destination is on the right.
+ // ____
+ // / \
+ // / V
+ // xxx xxx
+ // In this situation, we draw arrow above curving upwards.
+ // 3. Two tokens on the same line, and the destination is on the left.
+ // xxx xxx
+ // ^ /
+ // \____/
+ // In this situation, we draw arrow below curving downwards.
+ const onDifferentLines = startRect.top <= endRect.top - 5 ||
+ startRect.top >= endRect.top + 5;
+ const leftToRight = startRect.left < endRect.left;
+
+ // NOTE: various magic constants are chosen empirically for
+ // better positioning and look
+ if (onDifferentLines) {
+ // Case #1
+ const topToBottom = startRect.top < endRect.top;
+ posStart.x = startRect.left - 1;
+ // We don't want to start it at the top left corner of the token,
+ // it doesn't feel like this is where the arrow comes from.
+ // For this reason, we start it in the middle of the left side
+ // of the token.
+ posStart.y = startRect.top + startRect.height / 2;
+
+ // End node has arrow head and we give it a bit more space.
+ posEnd.x = endRect.left - 4;
+ posEnd.y = endRect.top;
+
+ // Utility object with x and y offsets for handles.
+ var curvature = {
+ // We want bottom-to-top arrow to curve a bit more, so it doesn't
+ // overlap much with top-to-bottom curves (much more frequent).
+ x: topToBottom ? 15 : 25,
+ y: Math.min((posEnd.y - posStart.y) / 3, 10)
+ }
+
+ // When destination is on the different line, we can make a
+ // curvier arrow because we have space for it.
+ // So, instead of using
+ //
+ // startHandle.x = posStart.x - curvature.x
+ // endHandle.x = posEnd.x - curvature.x
+ //
+ // We use the leftmost of these two values for both handles.
+ startHandle.x = Math.min(posStart.x, posEnd.x) - curvature.x;
+ endHandle.x = startHandle.x;
+
+ // Curving downwards from the start node...
+ startHandle.y = posStart.y + curvature.y;
+ // ... and upwards from the end node.
+ endHandle.y = posEnd.y - curvature.y;
+
+ } else if (leftToRight) {
+ // Case #2
+ // Starting from the top right corner...
+ posStart.x = startRect.right - 1;
+ posStart.y = startRect.top;
+
+ // ...and ending at the top left corner of the end token.
+ posEnd.x = endRect.left + 1;
+ posEnd.y = endRect.top - 1;
+
+ // Utility object with x and y offsets for handles.
+ var curvature = {
+ x: Math.min((posEnd.x - posStart.x) / 3, 15),
+ y: 5
+ }
+
+ // Curving to the right...
+ startHandle.x = posStart.x + curvature.x;
+ // ... and upwards from the start node.
+ startHandle.y = posStart.y - curvature.y;
+
+ // And to the left...
+ endHandle.x = posEnd.x - curvature.x;
+ // ... and upwards from the end node.
+ endHandle.y = posEnd.y - curvature.y;
+
+ } else {
+ // Case #3
+ // Starting from the bottom right corner...
+ posStart.x = startRect.right;
+ posStart.y = startRect.bottom;
+
+ // ...and ending also at the bottom right corner, but of the end token.
+ posEnd.x = endRect.right - 1;
+ posEnd.y = endRect.bottom + 1;
+
+ // Utility object with x and y offsets for handles.
+ var curvature = {
+ x: Math.min((posStart.x - posEnd.x) / 3, 15),
+ y: 5
+ }
+
+ // Curving to the left...
+ startHandle.x = posStart.x - curvature.x;
+ // ... and downwards from the start node.
+ startHandle.y = posStart.y + curvature.y;
+
+ // And to the right...
+ endHandle.x = posEnd.x + curvature.x;
+ // ... and downwards from the end node.
+ endHandle.y = posEnd.y + curvature.y;
+ }
+
+ // Put it all together into a path.
+ // More information on the format:
+ // https://developer.mozilla.org/en-US/docs/Web/SVG/Tutorial/Paths
+ var pathStr = "M" + posStart.x + "," + posStart.y + " " +
+ "C" + startHandle.x + "," + startHandle.y + " " +
+ endHandle.x + "," + endHandle.y + " " +
+ posEnd.x + "," + posEnd.y;
+
+ arrow.setAttribute("d", pathStr);
+};
+
+var drawArrows = function() {
+ const numOfArrows = document.querySelectorAll("path[id^=arrow]").length;
+ for (var i = 0; i < numOfArrows; ++i) {
+ drawArrow(i);
+ }
+}
+
+var toggleArrows = function(event) {
+ const arrows = document.querySelector("#arrows");
+ if (event.target.checked) {
+ arrows.setAttribute("visibility", "visible");
+ } else {
+ arrows.setAttribute("visibility", "hidden");
+ }
+}
+
+window.addEventListener("resize", drawArrows);
+document.addEventListener("DOMContentLoaded", function() {
+ // Whenever we show invocation, locations change, i.e. we
+ // need to redraw arrows.
+ document
+ .querySelector('input[id="showinvocation"]')
+ .addEventListener("click", drawArrows);
+ // Hiding irrelevant lines also should cause arrow rerender.
+ document
+ .querySelector('input[name="showCounterexample"]')
+ .addEventListener("change", drawArrows);
+ document
+ .querySelector('input[name="showArrows"]')
+ .addEventListener("change", toggleArrows);
+ drawArrows();
+ // Default highlighting for the last event.
+ highlightArrowsForSelectedEvent();
+});
+</script>
+
+<script type='text/javascript'>
+var digitMatcher = new RegExp("[0-9]+");
+
+var querySelectorAllArray = function(selector) {
+ return Array.prototype.slice.call(
+ document.querySelectorAll(selector));
+}
+
+document.addEventListener("DOMContentLoaded", function() {
+ querySelectorAllArray(".PathNav > a").forEach(
+ function(currentValue, currentIndex) {
+ var hrefValue = currentValue.getAttribute("href");
+ currentValue.onclick = function() {
+ scrollTo(document.querySelector(hrefValue));
+ return false;
+ };
+ });
+});
+
+var findNum = function() {
+ var s = document.querySelector(".msg.selected");
+ if (!s || s.id == "EndPath") {
+ return 0;
+ }
+ var out = parseInt(digitMatcher.exec(s.id)[0]);
+ return out;
+};
+
+var classListAdd = function(el, theClass) {
+ if(!el.className.baseVal)
+ el.className += " " + theClass;
+ else
+ el.className.baseVal += " " + theClass;
+};
+
+var classListRemove = function(el, theClass) {
+ var className = (!el.className.baseVal) ?
+ el.className : el.className.baseVal;
+ className = className.replace(" " + theClass, "");
+ if(!el.className.baseVal)
+ el.className = className;
+ else
+ el.className.baseVal = className;
+};
+
+var scrollTo = function(el) {
+ querySelectorAllArray(".selected").forEach(function(s) {
+ classListRemove(s, "selected");
+ });
+ classListAdd(el, "selected");
+ window.scrollBy(0, el.getBoundingClientRect().top -
+ (window.innerHeight / 2));
+ highlightArrowsForSelectedEvent();
+};
+
+var move = function(num, up, numItems) {
+ if (num == 1 && up || num == numItems - 1 && !up) {
+ return 0;
+ } else if (num == 0 && up) {
+ return numItems - 1;
+ } else if (num == 0 && !up) {
+ return 1 % numItems;
+ }
+ return up ? num - 1 : num + 1;
+}
+
+var numToId = function(num) {
+ if (num == 0) {
+ return document.getElementById("EndPath")
+ }
+ return document.getElementById("Path" + num);
+};
+
+var navigateTo = function(up) {
+ var numItems = document.querySelectorAll(
+ ".line > .msgEvent, .line > .msgControl").length;
+ var currentSelected = findNum();
+ var newSelected = move(currentSelected, up, numItems);
+ var newEl = numToId(newSelected, numItems);
+
+ // Scroll element into center.
+ scrollTo(newEl);
+};
+
+window.addEventListener("keydown", function (event) {
+ if (event.defaultPrevented) {
+ return;
+ }
+ // key 'j'
+ if (event.keyCode == 74) {
+ navigateTo(/*up=*/false);
+ // key 'k'
+ } else if (event.keyCode == 75) {
+ navigateTo(/*up=*/true);
+ } else {
+ return;
+ }
+ event.preventDefault();
+}, true);
+</script>
+
+<script type='text/javascript'>
+
+var toggleHelp = function() {
+ var hint = document.querySelector("#tooltiphint");
+ var attributeName = "hidden";
+ if (hint.hasAttribute(attributeName)) {
+ hint.removeAttribute(attributeName);
+ } else {
+ hint.setAttribute("hidden", "true");
+ }
+};
+window.addEventListener("keydown", function (event) {
+ if (event.defaultPrevented) {
+ return;
+ }
+ if (event.key == "?") {
+ toggleHelp();
+ } else {
+ return;
+ }
+ event.preventDefault();
+});
+</script>
+
+<style type="text/css">
+ svg {
+ position:absolute;
+ top:0;
+ left:0;
+ height:100%;
+ width:100%;
+ pointer-events: none;
+ overflow: visible
+ }
+ .arrow {
+ stroke-opacity: 0.2;
+ stroke-width: 1;
+ marker-end: url(#arrowhead);
+ }
+
+ .arrow.selected {
+ stroke-opacity: 0.6;
+ stroke-width: 2;
+ marker-end: url(#arrowheadSelected);
+ }
+
+ .arrowhead {
+ orient: auto;
+ stroke: none;
+ opacity: 0.6;
+ fill: blue;
+ }
+</style>
+<svg xmlns="http://www.w3.org/2000/svg">
+ <defs>
+ <marker id="arrowheadSelected" class="arrowhead" opacity="0.6"
+ viewBox="0 0 10 10" refX="3" refY="5"
+ markerWidth="4" markerHeight="4">
+ <path d="M 0 0 L 10 5 L 0 10 z" />
+ </marker>
+ <marker id="arrowhead" class="arrowhead" opacity="0.2"
+ viewBox="0 0 10 10" refX="3" refY="5"
+ markerWidth="4" markerHeight="4">
+ <path d="M 0 0 L 10 5 L 0 10 z" />
+ </marker>
+ </defs>
+ <g id="arrows" fill="none" stroke="blue" visibility="hidden">
+
+ </g>
+</svg>
+<script type='text/javascript'>
+const arrowIndices = [ 0,0 ]
+</script>
+<table class="code" data-fileid="1">
+<tr class="codeline" data-linenumber="1"><td class="num" id="LN1">1</td><td class="line"><span class='comment'>/*</span></td></tr>
+<tr class="codeline" data-linenumber="2"><td class="num" id="LN2">2</td><td class="line"> <span class='comment'>* Copyright (C) 2007 Novell, Inc.</span></td></tr>
+<tr class="codeline" data-linenumber="3"><td class="num" id="LN3">3</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="4"><td class="num" id="LN4">4</td><td class="line"> <span class='comment'>* Inspired by various other pieces of code including GsmClient (C)</span></td></tr>
+<tr class="codeline" data-linenumber="5"><td class="num" id="LN5">5</td><td class="line"> <span class='comment'>* 2001 Havoc Pennington, MateClient (C) 1998 Carsten Schaar, and twm</span></td></tr>
+<tr class="codeline" data-linenumber="6"><td class="num" id="LN6">6</td><td class="line"> <span class='comment'>* session code (C) 1998 The Open Group.</span></td></tr>
+<tr class="codeline" data-linenumber="7"><td class="num" id="LN7">7</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="8"><td class="num" id="LN8">8</td><td class="line"> <span class='comment'>* This library is free software; you can redistribute it and/or</span></td></tr>
+<tr class="codeline" data-linenumber="9"><td class="num" id="LN9">9</td><td class="line"> <span class='comment'>* modify it under the terms of the GNU Library General Public</span></td></tr>
+<tr class="codeline" data-linenumber="10"><td class="num" id="LN10">10</td><td class="line"> <span class='comment'>* License as published by the Free Software Foundation; either</span></td></tr>
+<tr class="codeline" data-linenumber="11"><td class="num" id="LN11">11</td><td class="line"> <span class='comment'>* version 2 of the License, or (at your option) any later version.</span></td></tr>
+<tr class="codeline" data-linenumber="12"><td class="num" id="LN12">12</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="13"><td class="num" id="LN13">13</td><td class="line"> <span class='comment'>* This library is distributed in the hope that it will be useful,</span></td></tr>
+<tr class="codeline" data-linenumber="14"><td class="num" id="LN14">14</td><td class="line"> <span class='comment'>* but WITHOUT ANY WARRANTY; without even the implied warranty of</span></td></tr>
+<tr class="codeline" data-linenumber="15"><td class="num" id="LN15">15</td><td class="line"> <span class='comment'>* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</span></td></tr>
+<tr class="codeline" data-linenumber="16"><td class="num" id="LN16">16</td><td class="line"> <span class='comment'>* Library General Public License for more details.</span></td></tr>
+<tr class="codeline" data-linenumber="17"><td class="num" id="LN17">17</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="18"><td class="num" id="LN18">18</td><td class="line"> <span class='comment'>* You should have received a copy of the GNU Library General Public</span></td></tr>
+<tr class="codeline" data-linenumber="19"><td class="num" id="LN19">19</td><td class="line"> <span class='comment'>* License along with this library; if not, write to the</span></td></tr>
+<tr class="codeline" data-linenumber="20"><td class="num" id="LN20">20</td><td class="line"> <span class='comment'>* Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,</span></td></tr>
+<tr class="codeline" data-linenumber="21"><td class="num" id="LN21">21</td><td class="line"> <span class='comment'>* Boston, MA 02110-1301, USA.</span></td></tr>
+<tr class="codeline" data-linenumber="22"><td class="num" id="LN22">22</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="23"><td class="num" id="LN23">23</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="24"><td class="num" id="LN24">24</td><td class="line"><span class='directive'>#include "config.h"</span></td></tr>
+<tr class="codeline" data-linenumber="25"><td class="num" id="LN25">25</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="26"><td class="num" id="LN26">26</td><td class="line"><span class='directive'>#include "eggsmclient.h"</span></td></tr>
+<tr class="codeline" data-linenumber="27"><td class="num" id="LN27">27</td><td class="line"><span class='directive'>#include "eggsmclient-private.h"</span></td></tr>
+<tr class="codeline" data-linenumber="28"><td class="num" id="LN28">28</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="29"><td class="num" id="LN29">29</td><td class="line"><span class='directive'>#include "eggdesktopfile.h"</span></td></tr>
+<tr class="codeline" data-linenumber="30"><td class="num" id="LN30">30</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="31"><td class="num" id="LN31">31</td><td class="line"><span class='directive'>#include &lt;<span class='macro'>errno<span class='macro_popup'>(*__errno_location ())</span></span>.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="32"><td class="num" id="LN32">32</td><td class="line"><span class='directive'>#include &lt;fcntl.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="33"><td class="num" id="LN33">33</td><td class="line"><span class='directive'>#include &lt;stdlib.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="34"><td class="num" id="LN34">34</td><td class="line"><span class='directive'>#include &lt;string.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="35"><td class="num" id="LN35">35</td><td class="line"><span class='directive'>#include &lt;unistd.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="36"><td class="num" id="LN36">36</td><td class="line"><span class='directive'>#include &lt;X11/SM/SMlib.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="37"><td class="num" id="LN37">37</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="38"><td class="num" id="LN38">38</td><td class="line"><span class='directive'>#include &lt;gtk/gtk.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="39"><td class="num" id="LN39">39</td><td class="line"><span class='directive'>#include &lt;gdk/gdk.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="40"><td class="num" id="LN40">40</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="41"><td class="num" id="LN41">41</td><td class="line"><span class='directive'>#if defined(GDK_WINDOWING_X11) || defined(HAVE_X11)</span></td></tr>
+<tr class="codeline" data-linenumber="42"><td class="num" id="LN42">42</td><td class="line"><span class='directive'>#include &lt;gdk/gdkx.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="43"><td class="num" id="LN43">43</td><td class="line"><span class='directive'>#endif</span></td></tr>
+<tr class="codeline" data-linenumber="44"><td class="num" id="LN44">44</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="45"><td class="num" id="LN45">45</td><td class="line"><span class='directive'>#define <span class='macro'>EGG_TYPE_SM_CLIENT_XSMP<span class='macro_popup'>(egg_sm_client_xsmp_get_type ())</span></span> (egg_sm_client_xsmp_get_type ())</span></td></tr>
+<tr class="codeline" data-linenumber="46"><td class="num" id="LN46">46</td><td class="line"><span class='directive'>#define <span class='macro'>EGG_SM_CLIENT_XSMP(obj)<span class='macro_popup'>((((EggSMClientXSMP*) (void *) ((obj)))))</span></span> (<span class='macro'>G_TYPE_CHECK_INSTANCE_CAST ((obj), EGG_TYPE_SM_CLIENT_XSMP, EggSMClientXSMP)<span class='macro_popup'>(((EggSMClientXSMP*) (void *) ((obj))))</span></span>)</span></td></tr>
+<tr class="codeline" data-linenumber="47"><td class="num" id="LN47">47</td><td class="line"><span class='directive'>#define <span class='macro'>EGG_SM_CLIENT_XSMP_CLASS(klass)<span class='macro_popup'>((((EggSMClientXSMPClass*) (void *) ((klass)))))</span></span> (<span class='macro'>G_TYPE_CHECK_CLASS_CAST ((klass), EGG_TYPE_SM_CLIENT_XSMP, EggSMClientXSMPClass)<span class='macro_popup'>(((EggSMClientXSMPClass*) (void *) ((klass))))</span></span>)</span></td></tr>
+<tr class="codeline" data-linenumber="48"><td class="num" id="LN48">48</td><td class="line"><span class='directive'>#define <span class='macro'>EGG_IS_SM_CLIENT_XSMP(obj)<span class='macro_popup'>(((__extension__ ({ GTypeInstance *__inst = (GTypeInstance*) (<br>(obj)); GType __t = ((egg_sm_client_xsmp_get_type ())); gboolean<br> __r; if (!__inst) __r = (0); else if (__inst-&gt;g_class &amp;&amp;<br> __inst-&gt;g_class-&gt;g_type == __t) __r = (!(0)); else __r<br> = g_type_check_instance_is_a (__inst, __t); __r; }))))</span></span> (<span class='macro'>G_TYPE_CHECK_INSTANCE_TYPE ((obj), EGG_TYPE_SM_CLIENT_XSMP)<span class='macro_popup'>((__extension__ ({ GTypeInstance *__inst = (GTypeInstance*) (<br>(obj)); GType __t = ((egg_sm_client_xsmp_get_type ())); gboolean<br> __r; if (!__inst) __r = (0); else if (__inst-&gt;g_class &amp;&amp;<br> __inst-&gt;g_class-&gt;g_type == __t) __r = (!(0)); else __r<br> = g_type_check_instance_is_a (__inst, __t); __r; })))</span></span>)</span></td></tr>
+<tr class="codeline" data-linenumber="49"><td class="num" id="LN49">49</td><td class="line"><span class='directive'>#define <span class='macro'>EGG_IS_SM_CLIENT_XSMP_CLASS(klass)<span class='macro_popup'>(((__extension__ ({ GTypeClass *__class = (GTypeClass*) ((klass<br>)); GType __t = ((egg_sm_client_xsmp_get_type ())); gboolean __r<br>; if (!__class) __r = (0); else if (__class-&gt;g_type == __t<br>) __r = (!(0)); else __r = g_type_check_class_is_a (__class, __t<br>); __r; }))))</span></span> (<span class='macro'>G_TYPE_CHECK_CLASS_TYPE ((klass), EGG_TYPE_SM_CLIENT_XSMP)<span class='macro_popup'>((__extension__ ({ GTypeClass *__class = (GTypeClass*) ((klass<br>)); GType __t = ((egg_sm_client_xsmp_get_type ())); gboolean __r<br>; if (!__class) __r = (0); else if (__class-&gt;g_type == __t<br>) __r = (!(0)); else __r = g_type_check_class_is_a (__class, __t<br>); __r; })))</span></span>)</span></td></tr>
+<tr class="codeline" data-linenumber="50"><td class="num" id="LN50">50</td><td class="line"><span class='directive'>#define <span class='macro'>EGG_SM_CLIENT_XSMP_GET_CLASS(obj)<span class='macro_popup'>((((EggSMClientXSMPClass*) (((GTypeInstance*) ((obj)))-&gt;g_class<br>))))</span></span> (<span class='macro'>G_TYPE_INSTANCE_GET_CLASS ((obj), EGG_TYPE_SM_CLIENT_XSMP, EggSMClientXSMPClass)<span class='macro_popup'>(((EggSMClientXSMPClass*) (((GTypeInstance*) ((obj)))-&gt;g_class<br>)))</span></span>)</span></td></tr>
+<tr class="codeline" data-linenumber="51"><td class="num" id="LN51">51</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="52"><td class="num" id="LN52">52</td><td class="line"><span class='keyword'>typedef</span> <span class='keyword'>struct</span> _EggSMClientXSMP EggSMClientXSMP;</td></tr>
+<tr class="codeline" data-linenumber="53"><td class="num" id="LN53">53</td><td class="line"><span class='keyword'>typedef</span> <span class='keyword'>struct</span> _EggSMClientXSMPClass EggSMClientXSMPClass;</td></tr>
+<tr class="codeline" data-linenumber="54"><td class="num" id="LN54">54</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="55"><td class="num" id="LN55">55</td><td class="line"><span class='comment'>/* These mostly correspond to the similarly-named states in section</span></td></tr>
+<tr class="codeline" data-linenumber="56"><td class="num" id="LN56">56</td><td class="line"> <span class='comment'>* 9.1 of the XSMP spec. Some of the states there aren't represented</span></td></tr>
+<tr class="codeline" data-linenumber="57"><td class="num" id="LN57">57</td><td class="line"> <span class='comment'>* here, because we don't need them. SHUTDOWN_CANCELLED is slightly</span></td></tr>
+<tr class="codeline" data-linenumber="58"><td class="num" id="LN58">58</td><td class="line"> <span class='comment'>* different from the spec; we use it when the client is IDLE after a</span></td></tr>
+<tr class="codeline" data-linenumber="59"><td class="num" id="LN59">59</td><td class="line"> <span class='comment'>* ShutdownCancelled message, but the application is still interacting</span></td></tr>
+<tr class="codeline" data-linenumber="60"><td class="num" id="LN60">60</td><td class="line"> <span class='comment'>* and doesn't know the shutdown has been cancelled yet.</span></td></tr>
+<tr class="codeline" data-linenumber="61"><td class="num" id="LN61">61</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="62"><td class="num" id="LN62">62</td><td class="line"><span class='keyword'>typedef</span> <span class='keyword'>enum</span></td></tr>
+<tr class="codeline" data-linenumber="63"><td class="num" id="LN63">63</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="64"><td class="num" id="LN64">64</td><td class="line"> XSMP_STATE_IDLE,</td></tr>
+<tr class="codeline" data-linenumber="65"><td class="num" id="LN65">65</td><td class="line"> XSMP_STATE_SAVE_YOURSELF,</td></tr>
+<tr class="codeline" data-linenumber="66"><td class="num" id="LN66">66</td><td class="line"> XSMP_STATE_INTERACT_REQUEST,</td></tr>
+<tr class="codeline" data-linenumber="67"><td class="num" id="LN67">67</td><td class="line"> XSMP_STATE_INTERACT,</td></tr>
+<tr class="codeline" data-linenumber="68"><td class="num" id="LN68">68</td><td class="line"> XSMP_STATE_SAVE_YOURSELF_DONE,</td></tr>
+<tr class="codeline" data-linenumber="69"><td class="num" id="LN69">69</td><td class="line"> XSMP_STATE_SHUTDOWN_CANCELLED,</td></tr>
+<tr class="codeline" data-linenumber="70"><td class="num" id="LN70">70</td><td class="line"> XSMP_STATE_CONNECTION_CLOSED</td></tr>
+<tr class="codeline" data-linenumber="71"><td class="num" id="LN71">71</td><td class="line">} EggSMClientXSMPState;</td></tr>
+<tr class="codeline" data-linenumber="72"><td class="num" id="LN72">72</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="73"><td class="num" id="LN73">73</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>const</span> <span class='keyword'>char</span> *state_names[] =</td></tr>
+<tr class="codeline" data-linenumber="74"><td class="num" id="LN74">74</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="75"><td class="num" id="LN75">75</td><td class="line"> <span class='string_literal'>"idle"</span>,</td></tr>
+<tr class="codeline" data-linenumber="76"><td class="num" id="LN76">76</td><td class="line"> <span class='string_literal'>"save-yourself"</span>,</td></tr>
+<tr class="codeline" data-linenumber="77"><td class="num" id="LN77">77</td><td class="line"> <span class='string_literal'>"interact-request"</span>,</td></tr>
+<tr class="codeline" data-linenumber="78"><td class="num" id="LN78">78</td><td class="line"> <span class='string_literal'>"interact"</span>,</td></tr>
+<tr class="codeline" data-linenumber="79"><td class="num" id="LN79">79</td><td class="line"> <span class='string_literal'>"save-yourself-done"</span>,</td></tr>
+<tr class="codeline" data-linenumber="80"><td class="num" id="LN80">80</td><td class="line"> <span class='string_literal'>"shutdown-cancelled"</span>,</td></tr>
+<tr class="codeline" data-linenumber="81"><td class="num" id="LN81">81</td><td class="line"> <span class='string_literal'>"connection-closed"</span></td></tr>
+<tr class="codeline" data-linenumber="82"><td class="num" id="LN82">82</td><td class="line">};</td></tr>
+<tr class="codeline" data-linenumber="83"><td class="num" id="LN83">83</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="84"><td class="num" id="LN84">84</td><td class="line"><span class='directive'>#define <span class='macro'>EGG_SM_CLIENT_XSMP_STATE(xsmp)<span class='macro_popup'>(state_names[(xsmp)-&gt;state])</span></span> (state_names[(xsmp)-&gt;state])</span></td></tr>
+<tr class="codeline" data-linenumber="85"><td class="num" id="LN85">85</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="86"><td class="num" id="LN86">86</td><td class="line"><span class='keyword'>struct</span> _EggSMClientXSMP</td></tr>
+<tr class="codeline" data-linenumber="87"><td class="num" id="LN87">87</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="88"><td class="num" id="LN88">88</td><td class="line"> EggSMClient parent;</td></tr>
+<tr class="codeline" data-linenumber="89"><td class="num" id="LN89">89</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="90"><td class="num" id="LN90">90</td><td class="line"> SmcConn connection;</td></tr>
+<tr class="codeline" data-linenumber="91"><td class="num" id="LN91">91</td><td class="line"> <span class='keyword'>char</span> *client_id;</td></tr>
+<tr class="codeline" data-linenumber="92"><td class="num" id="LN92">92</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="93"><td class="num" id="LN93">93</td><td class="line"> EggSMClientXSMPState state;</td></tr>
+<tr class="codeline" data-linenumber="94"><td class="num" id="LN94">94</td><td class="line"> <span class='keyword'>char</span> **restart_command;</td></tr>
+<tr class="codeline" data-linenumber="95"><td class="num" id="LN95">95</td><td class="line"> gboolean set_restart_command;</td></tr>
+<tr class="codeline" data-linenumber="96"><td class="num" id="LN96">96</td><td class="line"> <span class='keyword'>int</span> restart_style;</td></tr>
+<tr class="codeline" data-linenumber="97"><td class="num" id="LN97">97</td><td class="line"> <span class='keyword'>char</span> **discard_command;</td></tr>
+<tr class="codeline" data-linenumber="98"><td class="num" id="LN98">98</td><td class="line"> gboolean set_discard_command;</td></tr>
+<tr class="codeline" data-linenumber="99"><td class="num" id="LN99">99</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="100"><td class="num" id="LN100">100</td><td class="line"> guint idle;</td></tr>
+<tr class="codeline" data-linenumber="101"><td class="num" id="LN101">101</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="102"><td class="num" id="LN102">102</td><td class="line"> <span class='comment'>/* Current SaveYourself state */</span></td></tr>
+<tr class="codeline" data-linenumber="103"><td class="num" id="LN103">103</td><td class="line"> guint expecting_initial_save_yourself : 1;</td></tr>
+<tr class="codeline" data-linenumber="104"><td class="num" id="LN104">104</td><td class="line"> guint need_save_state : 1;</td></tr>
+<tr class="codeline" data-linenumber="105"><td class="num" id="LN105">105</td><td class="line"> guint need_quit_requested : 1;</td></tr>
+<tr class="codeline" data-linenumber="106"><td class="num" id="LN106">106</td><td class="line"> guint interact_errors : 1;</td></tr>
+<tr class="codeline" data-linenumber="107"><td class="num" id="LN107">107</td><td class="line"> guint shutting_down : 1;</td></tr>
+<tr class="codeline" data-linenumber="108"><td class="num" id="LN108">108</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="109"><td class="num" id="LN109">109</td><td class="line"> <span class='comment'>/* Todo list */</span></td></tr>
+<tr class="codeline" data-linenumber="110"><td class="num" id="LN110">110</td><td class="line"> guint waiting_to_set_initial_properties : 1;</td></tr>
+<tr class="codeline" data-linenumber="111"><td class="num" id="LN111">111</td><td class="line"> guint waiting_to_emit_quit : 1;</td></tr>
+<tr class="codeline" data-linenumber="112"><td class="num" id="LN112">112</td><td class="line"> guint waiting_to_emit_quit_cancelled : 1;</td></tr>
+<tr class="codeline" data-linenumber="113"><td class="num" id="LN113">113</td><td class="line"> guint waiting_to_save_myself : 1;</td></tr>
+<tr class="codeline" data-linenumber="114"><td class="num" id="LN114">114</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="115"><td class="num" id="LN115">115</td><td class="line">};</td></tr>
+<tr class="codeline" data-linenumber="116"><td class="num" id="LN116">116</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="117"><td class="num" id="LN117">117</td><td class="line"><span class='keyword'>struct</span> _EggSMClientXSMPClass</td></tr>
+<tr class="codeline" data-linenumber="118"><td class="num" id="LN118">118</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="119"><td class="num" id="LN119">119</td><td class="line"> EggSMClientClass parent_class;</td></tr>
+<tr class="codeline" data-linenumber="120"><td class="num" id="LN120">120</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="121"><td class="num" id="LN121">121</td><td class="line">};</td></tr>
+<tr class="codeline" data-linenumber="122"><td class="num" id="LN122">122</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="123"><td class="num" id="LN123">123</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span> sm_client_xsmp_startup (EggSMClient *client,</td></tr>
+<tr class="codeline" data-linenumber="124"><td class="num" id="LN124">124</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *client_id);</td></tr>
+<tr class="codeline" data-linenumber="125"><td class="num" id="LN125">125</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span> sm_client_xsmp_set_restart_command (EggSMClient *client,</td></tr>
+<tr class="codeline" data-linenumber="126"><td class="num" id="LN126">126</td><td class="line"> <span class='keyword'>int</span> argc,</td></tr>
+<tr class="codeline" data-linenumber="127"><td class="num" id="LN127">127</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> **argv);</td></tr>
+<tr class="codeline" data-linenumber="128"><td class="num" id="LN128">128</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span> sm_client_xsmp_set_discard_command (EggSMClient *client,</td></tr>
+<tr class="codeline" data-linenumber="129"><td class="num" id="LN129">129</td><td class="line"> <span class='keyword'>int</span> argc,</td></tr>
+<tr class="codeline" data-linenumber="130"><td class="num" id="LN130">130</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> **argv);</td></tr>
+<tr class="codeline" data-linenumber="131"><td class="num" id="LN131">131</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span> sm_client_xsmp_will_quit (EggSMClient *client,</td></tr>
+<tr class="codeline" data-linenumber="132"><td class="num" id="LN132">132</td><td class="line"> gboolean will_quit);</td></tr>
+<tr class="codeline" data-linenumber="133"><td class="num" id="LN133">133</td><td class="line"><span class='keyword'>static</span> gboolean sm_client_xsmp_end_session (EggSMClient *client,</td></tr>
+<tr class="codeline" data-linenumber="134"><td class="num" id="LN134">134</td><td class="line"> EggSMClientEndStyle style,</td></tr>
+<tr class="codeline" data-linenumber="135"><td class="num" id="LN135">135</td><td class="line"> gboolean request_confirmation);</td></tr>
+<tr class="codeline" data-linenumber="136"><td class="num" id="LN136">136</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="137"><td class="num" id="LN137">137</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span> xsmp_save_yourself (SmcConn smc_conn,</td></tr>
+<tr class="codeline" data-linenumber="138"><td class="num" id="LN138">138</td><td class="line"> SmPointer client_data,</td></tr>
+<tr class="codeline" data-linenumber="139"><td class="num" id="LN139">139</td><td class="line"> <span class='keyword'>int</span> save_style,</td></tr>
+<tr class="codeline" data-linenumber="140"><td class="num" id="LN140">140</td><td class="line"> <span class='macro'>Bool<span class='macro_popup'>int</span></span> shutdown,</td></tr>
+<tr class="codeline" data-linenumber="141"><td class="num" id="LN141">141</td><td class="line"> <span class='keyword'>int</span> interact_style,</td></tr>
+<tr class="codeline" data-linenumber="142"><td class="num" id="LN142">142</td><td class="line"> <span class='macro'>Bool<span class='macro_popup'>int</span></span> fast);</td></tr>
+<tr class="codeline" data-linenumber="143"><td class="num" id="LN143">143</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span> xsmp_die (SmcConn smc_conn,</td></tr>
+<tr class="codeline" data-linenumber="144"><td class="num" id="LN144">144</td><td class="line"> SmPointer client_data);</td></tr>
+<tr class="codeline" data-linenumber="145"><td class="num" id="LN145">145</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span> xsmp_save_complete (SmcConn smc_conn,</td></tr>
+<tr class="codeline" data-linenumber="146"><td class="num" id="LN146">146</td><td class="line"> SmPointer client_data);</td></tr>
+<tr class="codeline" data-linenumber="147"><td class="num" id="LN147">147</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span> xsmp_shutdown_cancelled (SmcConn smc_conn,</td></tr>
+<tr class="codeline" data-linenumber="148"><td class="num" id="LN148">148</td><td class="line"> SmPointer client_data);</td></tr>
+<tr class="codeline" data-linenumber="149"><td class="num" id="LN149">149</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span> xsmp_interact (SmcConn smc_conn,</td></tr>
+<tr class="codeline" data-linenumber="150"><td class="num" id="LN150">150</td><td class="line"> SmPointer client_data);</td></tr>
+<tr class="codeline" data-linenumber="151"><td class="num" id="LN151">151</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="152"><td class="num" id="LN152">152</td><td class="line"><span class='keyword'>static</span> SmProp *array_prop (<span class='keyword'>const</span> <span class='keyword'>char</span> *name,</td></tr>
+<tr class="codeline" data-linenumber="153"><td class="num" id="LN153">153</td><td class="line"> ...);</td></tr>
+<tr class="codeline" data-linenumber="154"><td class="num" id="LN154">154</td><td class="line"><span class='keyword'>static</span> SmProp *ptrarray_prop (<span class='keyword'>const</span> <span class='keyword'>char</span> *name,</td></tr>
+<tr class="codeline" data-linenumber="155"><td class="num" id="LN155">155</td><td class="line"> GPtrArray *values);</td></tr>
+<tr class="codeline" data-linenumber="156"><td class="num" id="LN156">156</td><td class="line"><span class='keyword'>static</span> SmProp *string_prop (<span class='keyword'>const</span> <span class='keyword'>char</span> *name,</td></tr>
+<tr class="codeline" data-linenumber="157"><td class="num" id="LN157">157</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *value);</td></tr>
+<tr class="codeline" data-linenumber="158"><td class="num" id="LN158">158</td><td class="line"><span class='keyword'>static</span> SmProp *card8_prop (<span class='keyword'>const</span> <span class='keyword'>char</span> *name,</td></tr>
+<tr class="codeline" data-linenumber="159"><td class="num" id="LN159">159</td><td class="line"> <span class='keyword'>unsigned</span> <span class='keyword'>char</span> value);</td></tr>
+<tr class="codeline" data-linenumber="160"><td class="num" id="LN160">160</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="161"><td class="num" id="LN161">161</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span> set_properties (EggSMClientXSMP *xsmp, ...);</td></tr>
+<tr class="codeline" data-linenumber="162"><td class="num" id="LN162">162</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span> delete_properties (EggSMClientXSMP *xsmp, ...);</td></tr>
+<tr class="codeline" data-linenumber="163"><td class="num" id="LN163">163</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="164"><td class="num" id="LN164">164</td><td class="line"><span class='keyword'>static</span> GPtrArray *generate_command (<span class='keyword'>char</span> **restart_command,</td></tr>
+<tr class="codeline" data-linenumber="165"><td class="num" id="LN165">165</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *client_id,</td></tr>
+<tr class="codeline" data-linenumber="166"><td class="num" id="LN166">166</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *state_file);</td></tr>
+<tr class="codeline" data-linenumber="167"><td class="num" id="LN167">167</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="168"><td class="num" id="LN168">168</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span> save_state (EggSMClientXSMP *xsmp);</td></tr>
+<tr class="codeline" data-linenumber="169"><td class="num" id="LN169">169</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span> do_save_yourself (EggSMClientXSMP *xsmp);</td></tr>
+<tr class="codeline" data-linenumber="170"><td class="num" id="LN170">170</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span> update_pending_events (EggSMClientXSMP *xsmp);</td></tr>
+<tr class="codeline" data-linenumber="171"><td class="num" id="LN171">171</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="172"><td class="num" id="LN172">172</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span> ice_init (<span class='keyword'>void</span>);</td></tr>
+<tr class="codeline" data-linenumber="173"><td class="num" id="LN173">173</td><td class="line"><span class='keyword'>static</span> gboolean process_ice_messages (IceConn ice_conn);</td></tr>
+<tr class="codeline" data-linenumber="174"><td class="num" id="LN174">174</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span> smc_error_handler (SmcConn smc_conn,</td></tr>
+<tr class="codeline" data-linenumber="175"><td class="num" id="LN175">175</td><td class="line"> <span class='macro'>Bool<span class='macro_popup'>int</span></span> swap,</td></tr>
+<tr class="codeline" data-linenumber="176"><td class="num" id="LN176">176</td><td class="line"> <span class='keyword'>int</span> offending_minor_opcode,</td></tr>
+<tr class="codeline" data-linenumber="177"><td class="num" id="LN177">177</td><td class="line"> <span class='keyword'>unsigned</span> <span class='keyword'>long</span> offending_sequence,</td></tr>
+<tr class="codeline" data-linenumber="178"><td class="num" id="LN178">178</td><td class="line"> <span class='keyword'>int</span> error_class,</td></tr>
+<tr class="codeline" data-linenumber="179"><td class="num" id="LN179">179</td><td class="line"> <span class='keyword'>int</span> severity,</td></tr>
+<tr class="codeline" data-linenumber="180"><td class="num" id="LN180">180</td><td class="line"> SmPointer values);</td></tr>
+<tr class="codeline" data-linenumber="181"><td class="num" id="LN181">181</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="182"><td class="num" id="LN182">182</td><td class="line"><span class='macro'>G_DEFINE_TYPE (EggSMClientXSMP, egg_sm_client_xsmp, EGG_TYPE_SM_CLIENT)<span class='macro_popup'>static void egg_sm_client_xsmp_init (EggSMClientXSMP *self); static<br> void egg_sm_client_xsmp_class_init (EggSMClientXSMPClass *klass<br>); static GType egg_sm_client_xsmp_get_type_once (void); static<br> gpointer egg_sm_client_xsmp_parent_class = ((void*)0); static<br> gint EggSMClientXSMP_private_offset; static void egg_sm_client_xsmp_class_intern_init<br> (gpointer klass) { egg_sm_client_xsmp_parent_class = g_type_class_peek_parent<br> (klass); if (EggSMClientXSMP_private_offset != 0) g_type_class_adjust_private_offset<br> (klass, &amp;EggSMClientXSMP_private_offset); egg_sm_client_xsmp_class_init<br> ((EggSMClientXSMPClass*) klass); } __attribute__ ((__unused__<br>)) static inline gpointer egg_sm_client_xsmp_get_instance_private<br> (EggSMClientXSMP *self) { return (((gpointer) ((guint8*) (self<br>) + (glong) (EggSMClientXSMP_private_offset)))); } GType egg_sm_client_xsmp_get_type<br> (void) { static gsize static_g_define_type_id = 0; if ((__extension__<br> ({ _Static_assert (sizeof *(&amp;static_g_define_type_id) ==<br> sizeof (gpointer), "Expression evaluates to false"); (void) (<br>0 ? (gpointer) *(&amp;static_g_define_type_id) : ((void*)0));<br> (!(__extension__ ({ _Static_assert (sizeof *(&amp;static_g_define_type_id<br>) == sizeof (gpointer), "Expression evaluates to false"); __typeof__<br> (*(&amp;static_g_define_type_id)) gapg_temp_newval; __typeof__<br> ((&amp;static_g_define_type_id)) gapg_temp_atomic = (&amp;static_g_define_type_id<br>); __atomic_load (gapg_temp_atomic, &amp;gapg_temp_newval, 5)<br>; gapg_temp_newval; })) &amp;&amp; g_once_init_enter (&amp;static_g_define_type_id<br>)); }))) { GType g_define_type_id = egg_sm_client_xsmp_get_type_once<br> (); (__extension__ ({ _Static_assert (sizeof *(&amp;static_g_define_type_id<br>) == sizeof (gpointer), "Expression evaluates to false"); 0 ?<br> (void) (*(&amp;static_g_define_type_id) = (g_define_type_id)<br>) : (void) 0; g_once_init_leave ((&amp;static_g_define_type_id<br>), (gsize) (g_define_type_id)); })); } return static_g_define_type_id<br>; } __attribute__ ((__noinline__)) static GType egg_sm_client_xsmp_get_type_once<br> (void) { GType g_define_type_id = g_type_register_static_simple<br> ((egg_sm_client_get_type ()), g_intern_static_string ("EggSMClientXSMP"<br>), sizeof (EggSMClientXSMPClass), (GClassInitFunc)(void (*)(void<br>)) egg_sm_client_xsmp_class_intern_init, sizeof (EggSMClientXSMP<br>), (GInstanceInitFunc)(void (*)(void)) egg_sm_client_xsmp_init<br>, (GTypeFlags) 0); { {{};} } return g_define_type_id; }</span></span></td></tr>
+<tr class="codeline" data-linenumber="183"><td class="num" id="LN183">183</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="184"><td class="num" id="LN184">184</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="185"><td class="num" id="LN185">185</td><td class="line">egg_sm_client_xsmp_init (EggSMClientXSMP *xsmp)</td></tr>
+<tr class="codeline" data-linenumber="186"><td class="num" id="LN186">186</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="187"><td class="num" id="LN187">187</td><td class="line"> xsmp-&gt;state = XSMP_STATE_CONNECTION_CLOSED;</td></tr>
+<tr class="codeline" data-linenumber="188"><td class="num" id="LN188">188</td><td class="line"> xsmp-&gt;connection = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="189"><td class="num" id="LN189">189</td><td class="line"> xsmp-&gt;restart_style = <span class='macro'>SmRestartIfRunning<span class='macro_popup'>0</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="190"><td class="num" id="LN190">190</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="191"><td class="num" id="LN191">191</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="192"><td class="num" id="LN192">192</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="193"><td class="num" id="LN193">193</td><td class="line">egg_sm_client_xsmp_class_init (EggSMClientXSMPClass *klass)</td></tr>
+<tr class="codeline" data-linenumber="194"><td class="num" id="LN194">194</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="195"><td class="num" id="LN195">195</td><td class="line"> EggSMClientClass *sm_client_class = EGG_SM_CLIENT_CLASS (klass);</td></tr>
+<tr class="codeline" data-linenumber="196"><td class="num" id="LN196">196</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="197"><td class="num" id="LN197">197</td><td class="line"> sm_client_class-&gt;startup = sm_client_xsmp_startup;</td></tr>
+<tr class="codeline" data-linenumber="198"><td class="num" id="LN198">198</td><td class="line"> sm_client_class-&gt;set_restart_command = sm_client_xsmp_set_restart_command;</td></tr>
+<tr class="codeline" data-linenumber="199"><td class="num" id="LN199">199</td><td class="line"> sm_client_class-&gt;set_discard_command = sm_client_xsmp_set_discard_command;</td></tr>
+<tr class="codeline" data-linenumber="200"><td class="num" id="LN200">200</td><td class="line"> sm_client_class-&gt;will_quit = sm_client_xsmp_will_quit;</td></tr>
+<tr class="codeline" data-linenumber="201"><td class="num" id="LN201">201</td><td class="line"> sm_client_class-&gt;end_session = sm_client_xsmp_end_session;</td></tr>
+<tr class="codeline" data-linenumber="202"><td class="num" id="LN202">202</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="203"><td class="num" id="LN203">203</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="204"><td class="num" id="LN204">204</td><td class="line">EggSMClient *</td></tr>
+<tr class="codeline" data-linenumber="205"><td class="num" id="LN205">205</td><td class="line">egg_sm_client_xsmp_new (<span class='keyword'>void</span>)</td></tr>
+<tr class="codeline" data-linenumber="206"><td class="num" id="LN206">206</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="207"><td class="num" id="LN207">207</td><td class="line"> <span class='keyword'>if</span> (!g_getenv (<span class='string_literal'>"SESSION_MANAGER"</span>))</td></tr>
+<tr class="codeline" data-linenumber="208"><td class="num" id="LN208">208</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="209"><td class="num" id="LN209">209</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="210"><td class="num" id="LN210">210</td><td class="line"> <span class='keyword'>return</span> g_object_new (<span class='macro'>EGG_TYPE_SM_CLIENT_XSMP<span class='macro_popup'>(egg_sm_client_xsmp_get_type ())</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="211"><td class="num" id="LN211">211</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="212"><td class="num" id="LN212">212</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="213"><td class="num" id="LN213">213</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="214"><td class="num" id="LN214">214</td><td class="line">sm_client_xsmp_set_initial_properties (gpointer user_data)</td></tr>
+<tr class="codeline" data-linenumber="215"><td class="num" id="LN215">215</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="216"><td class="num" id="LN216">216</td><td class="line"> EggSMClientXSMP *xsmp = user_data;</td></tr>
+<tr class="codeline" data-linenumber="217"><td class="num" id="LN217">217</td><td class="line"> EggDesktopFile *desktop_file;</td></tr>
+<tr class="codeline" data-linenumber="218"><td class="num" id="LN218">218</td><td class="line"> GPtrArray *clone, *restart;</td></tr>
+<tr class="codeline" data-linenumber="219"><td class="num" id="LN219">219</td><td class="line"> <span class='keyword'>char</span> pid_str[64];</td></tr>
+<tr class="codeline" data-linenumber="220"><td class="num" id="LN220">220</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="221"><td class="num" id="LN221">221</td><td class="line"> <span class='keyword'>if</span> (xsmp-&gt;idle)</td></tr>
+<tr class="codeline" data-linenumber="222"><td class="num" id="LN222">222</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="223"><td class="num" id="LN223">223</td><td class="line"> g_source_remove (xsmp-&gt;idle);</td></tr>
+<tr class="codeline" data-linenumber="224"><td class="num" id="LN224">224</td><td class="line"> xsmp-&gt;idle = 0;</td></tr>
+<tr class="codeline" data-linenumber="225"><td class="num" id="LN225">225</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="226"><td class="num" id="LN226">226</td><td class="line"> xsmp-&gt;waiting_to_set_initial_properties = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="227"><td class="num" id="LN227">227</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="228"><td class="num" id="LN228">228</td><td class="line"> <span class='keyword'>if</span> (egg_sm_client_get_mode () == EGG_SM_CLIENT_MODE_NO_RESTART)</td></tr>
+<tr class="codeline" data-linenumber="229"><td class="num" id="LN229">229</td><td class="line"> xsmp-&gt;restart_style = <span class='macro'>SmRestartNever<span class='macro_popup'>3</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="230"><td class="num" id="LN230">230</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="231"><td class="num" id="LN231">231</td><td class="line"> <span class='comment'>/* Parse info out of desktop file */</span></td></tr>
+<tr class="codeline" data-linenumber="232"><td class="num" id="LN232">232</td><td class="line"> desktop_file = egg_get_desktop_file ();</td></tr>
+<tr class="codeline" data-linenumber="233"><td class="num" id="LN233">233</td><td class="line"> <span class='keyword'>if</span> (desktop_file)</td></tr>
+<tr class="codeline" data-linenumber="234"><td class="num" id="LN234">234</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="235"><td class="num" id="LN235">235</td><td class="line"> GError *err = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="236"><td class="num" id="LN236">236</td><td class="line"> <span class='keyword'>char</span> **argv;</td></tr>
+<tr class="codeline" data-linenumber="237"><td class="num" id="LN237">237</td><td class="line"> <span class='keyword'>int</span> argc;</td></tr>
+<tr class="codeline" data-linenumber="238"><td class="num" id="LN238">238</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="239"><td class="num" id="LN239">239</td><td class="line"> <span class='keyword'>if</span> (xsmp-&gt;restart_style == <span class='macro'>SmRestartIfRunning<span class='macro_popup'>0</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="240"><td class="num" id="LN240">240</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="241"><td class="num" id="LN241">241</td><td class="line"> <span class='keyword'>if</span> (egg_desktop_file_get_boolean (desktop_file,</td></tr>
+<tr class="codeline" data-linenumber="242"><td class="num" id="LN242">242</td><td class="line"> <span class='string_literal'>"X-MATE-AutoRestart"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>))</td></tr>
+<tr class="codeline" data-linenumber="243"><td class="num" id="LN243">243</td><td class="line"> xsmp-&gt;restart_style = <span class='macro'>SmRestartImmediately<span class='macro_popup'>2</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="244"><td class="num" id="LN244">244</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="245"><td class="num" id="LN245">245</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="246"><td class="num" id="LN246">246</td><td class="line"> <span class='keyword'>if</span> (!xsmp-&gt;set_restart_command)</td></tr>
+<tr class="codeline" data-linenumber="247"><td class="num" id="LN247">247</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="248"><td class="num" id="LN248">248</td><td class="line"> <span class='keyword'>char</span> *cmdline;</td></tr>
+<tr class="codeline" data-linenumber="249"><td class="num" id="LN249">249</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="250"><td class="num" id="LN250">250</td><td class="line"> cmdline = egg_desktop_file_parse_exec (desktop_file, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, &amp;err);</td></tr>
+<tr class="codeline" data-linenumber="251"><td class="num" id="LN251">251</td><td class="line"> <span class='keyword'>if</span> (cmdline &amp;&amp; g_shell_parse_argv (cmdline, &amp;argc, &amp;argv, &amp;err))</td></tr>
+<tr class="codeline" data-linenumber="252"><td class="num" id="LN252">252</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="253"><td class="num" id="LN253">253</td><td class="line"> egg_sm_client_set_restart_command (EGG_SM_CLIENT (xsmp),</td></tr>
+<tr class="codeline" data-linenumber="254"><td class="num" id="LN254">254</td><td class="line"> argc, (<span class='keyword'>const</span> <span class='keyword'>char</span> **)argv);</td></tr>
+<tr class="codeline" data-linenumber="255"><td class="num" id="LN255">255</td><td class="line"> g_strfreev (argv);</td></tr>
+<tr class="codeline" data-linenumber="256"><td class="num" id="LN256">256</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="257"><td class="num" id="LN257">257</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="258"><td class="num" id="LN258">258</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="259"><td class="num" id="LN259">259</td><td class="line"> g_warning (<span class='string_literal'>"Could not parse Exec line in desktop file: %s"</span>,</td></tr>
+<tr class="codeline" data-linenumber="260"><td class="num" id="LN260">260</td><td class="line"> err-&gt;message);</td></tr>
+<tr class="codeline" data-linenumber="261"><td class="num" id="LN261">261</td><td class="line"> g_error_free (err);</td></tr>
+<tr class="codeline" data-linenumber="262"><td class="num" id="LN262">262</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="263"><td class="num" id="LN263">263</td><td class="line"> g_free (cmdline);</td></tr>
+<tr class="codeline" data-linenumber="264"><td class="num" id="LN264">264</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="265"><td class="num" id="LN265">265</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="266"><td class="num" id="LN266">266</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="267"><td class="num" id="LN267">267</td><td class="line"> <span class='keyword'>if</span> (!xsmp-&gt;set_restart_command)</td></tr>
+<tr class="codeline" data-linenumber="268"><td class="num" id="LN268">268</td><td class="line"> xsmp-&gt;restart_command = g_strsplit (g_get_prgname (), <span class='string_literal'>" "</span>, -1);</td></tr>
+<tr class="codeline" data-linenumber="269"><td class="num" id="LN269">269</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="270"><td class="num" id="LN270">270</td><td class="line"> clone = generate_command (xsmp-&gt;restart_command, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="271"><td class="num" id="LN271">271</td><td class="line"> restart = generate_command (xsmp-&gt;restart_command, xsmp-&gt;client_id, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="272"><td class="num" id="LN272">272</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="273"><td class="num" id="LN273">273</td><td class="line"> g_debug (<span class='string_literal'>"Setting initial properties"</span>);</td></tr>
+<tr class="codeline" data-linenumber="274"><td class="num" id="LN274">274</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="275"><td class="num" id="LN275">275</td><td class="line"> <span class='comment'>/* Program, CloneCommand, RestartCommand, and UserID are required.</span></td></tr>
+<tr class="codeline" data-linenumber="276"><td class="num" id="LN276">276</td><td class="line"> <span class='comment'>* ProcessID isn't required, but the SM may be able to do something</span></td></tr>
+<tr class="codeline" data-linenumber="277"><td class="num" id="LN277">277</td><td class="line"> <span class='comment'>* useful with it.</span></td></tr>
+<tr class="codeline" data-linenumber="278"><td class="num" id="LN278">278</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="279"><td class="num" id="LN279">279</td><td class="line"> g_snprintf (pid_str, <span class='keyword'>sizeof</span> (pid_str), <span class='string_literal'>"%lu"</span>, (gulong) getpid ());</td></tr>
+<tr class="codeline" data-linenumber="280"><td class="num" id="LN280">280</td><td class="line"> set_properties (xsmp,</td></tr>
+<tr class="codeline" data-linenumber="281"><td class="num" id="LN281">281</td><td class="line"> string_prop (<span class='macro'>SmProgram<span class='macro_popup'>"Program"</span></span>, g_get_prgname ()),</td></tr>
+<tr class="codeline" data-linenumber="282"><td class="num" id="LN282">282</td><td class="line"> ptrarray_prop (<span class='macro'>SmCloneCommand<span class='macro_popup'>"CloneCommand"</span></span>, clone),</td></tr>
+<tr class="codeline" data-linenumber="283"><td class="num" id="LN283">283</td><td class="line"> ptrarray_prop (<span class='macro'>SmRestartCommand<span class='macro_popup'>"RestartCommand"</span></span>, restart),</td></tr>
+<tr class="codeline" data-linenumber="284"><td class="num" id="LN284">284</td><td class="line"> string_prop (<span class='macro'>SmUserID<span class='macro_popup'>"UserID"</span></span>, g_get_user_name ()),</td></tr>
+<tr class="codeline" data-linenumber="285"><td class="num" id="LN285">285</td><td class="line"> string_prop (<span class='macro'>SmProcessID<span class='macro_popup'>"ProcessID"</span></span>, pid_str),</td></tr>
+<tr class="codeline" data-linenumber="286"><td class="num" id="LN286">286</td><td class="line"> card8_prop (<span class='macro'>SmRestartStyleHint<span class='macro_popup'>"RestartStyleHint"</span></span>, xsmp-&gt;restart_style),</td></tr>
+<tr class="codeline" data-linenumber="287"><td class="num" id="LN287">287</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="288"><td class="num" id="LN288">288</td><td class="line"> g_ptr_array_free (clone, <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="289"><td class="num" id="LN289">289</td><td class="line"> g_ptr_array_free (restart, <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="290"><td class="num" id="LN290">290</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="291"><td class="num" id="LN291">291</td><td class="line"> <span class='keyword'>if</span> (desktop_file)</td></tr>
+<tr class="codeline" data-linenumber="292"><td class="num" id="LN292">292</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="293"><td class="num" id="LN293">293</td><td class="line"> set_properties (xsmp,</td></tr>
+<tr class="codeline" data-linenumber="294"><td class="num" id="LN294">294</td><td class="line"> string_prop (<span class='string_literal'>"_GSM_DesktopFile"</span>, egg_desktop_file_get_source (desktop_file)),</td></tr>
+<tr class="codeline" data-linenumber="295"><td class="num" id="LN295">295</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="296"><td class="num" id="LN296">296</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="297"><td class="num" id="LN297">297</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="298"><td class="num" id="LN298">298</td><td class="line"> update_pending_events (xsmp);</td></tr>
+<tr class="codeline" data-linenumber="299"><td class="num" id="LN299">299</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="300"><td class="num" id="LN300">300</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="301"><td class="num" id="LN301">301</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="302"><td class="num" id="LN302">302</td><td class="line"><span class='comment'>/* This gets called from two different places: xsmp_die() (when the</span></td></tr>
+<tr class="codeline" data-linenumber="303"><td class="num" id="LN303">303</td><td class="line"> <span class='comment'>* server asks us to disconnect) and process_ice_messages() (when the</span></td></tr>
+<tr class="codeline" data-linenumber="304"><td class="num" id="LN304">304</td><td class="line"> <span class='comment'>* server disconnects unexpectedly).</span></td></tr>
+<tr class="codeline" data-linenumber="305"><td class="num" id="LN305">305</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="306"><td class="num" id="LN306">306</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="307"><td class="num" id="LN307">307</td><td class="line">sm_client_xsmp_disconnect (EggSMClientXSMP *xsmp)</td></tr>
+<tr class="codeline" data-linenumber="308"><td class="num" id="LN308">308</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="309"><td class="num" id="LN309">309</td><td class="line"> SmcConn connection;</td></tr>
+<tr class="codeline" data-linenumber="310"><td class="num" id="LN310">310</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="311"><td class="num" id="LN311">311</td><td class="line"> <span class='keyword'>if</span> (!xsmp-&gt;connection)</td></tr>
+<tr class="codeline" data-linenumber="312"><td class="num" id="LN312">312</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="313"><td class="num" id="LN313">313</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="314"><td class="num" id="LN314">314</td><td class="line"> g_debug (<span class='string_literal'>"Disconnecting"</span>);</td></tr>
+<tr class="codeline" data-linenumber="315"><td class="num" id="LN315">315</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="316"><td class="num" id="LN316">316</td><td class="line"> connection = xsmp-&gt;connection;</td></tr>
+<tr class="codeline" data-linenumber="317"><td class="num" id="LN317">317</td><td class="line"> xsmp-&gt;connection = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="318"><td class="num" id="LN318">318</td><td class="line"> SmcCloseConnection (connection, 0, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="319"><td class="num" id="LN319">319</td><td class="line"> xsmp-&gt;state = XSMP_STATE_CONNECTION_CLOSED;</td></tr>
+<tr class="codeline" data-linenumber="320"><td class="num" id="LN320">320</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="321"><td class="num" id="LN321">321</td><td class="line"> xsmp-&gt;waiting_to_save_myself = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="322"><td class="num" id="LN322">322</td><td class="line"> update_pending_events (xsmp);</td></tr>
+<tr class="codeline" data-linenumber="323"><td class="num" id="LN323">323</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="324"><td class="num" id="LN324">324</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="325"><td class="num" id="LN325">325</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="326"><td class="num" id="LN326">326</td><td class="line">sm_client_xsmp_startup (EggSMClient *client,</td></tr>
+<tr class="codeline" data-linenumber="327"><td class="num" id="LN327">327</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *client_id)</td></tr>
+<tr class="codeline" data-linenumber="328"><td class="num" id="LN328">328</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="329"><td class="num" id="LN329">329</td><td class="line"> EggSMClientXSMP *xsmp = (EggSMClientXSMP *)client;</td></tr>
+<tr class="codeline" data-linenumber="330"><td class="num" id="LN330">330</td><td class="line"> SmcCallbacks callbacks;</td></tr>
+<tr class="codeline" data-linenumber="331"><td class="num" id="LN331">331</td><td class="line"> <span class='keyword'>char</span> *ret_client_id;</td></tr>
+<tr class="codeline" data-linenumber="332"><td class="num" id="LN332">332</td><td class="line"> <span class='keyword'>char</span> error_string_ret[256];</td></tr>
+<tr class="codeline" data-linenumber="333"><td class="num" id="LN333">333</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="334"><td class="num" id="LN334">334</td><td class="line"> xsmp-&gt;client_id = <span class='macro'>g_strdup (client_id)<span class='macro_popup'>g_strdup_inline (client_id)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="335"><td class="num" id="LN335">335</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="336"><td class="num" id="LN336">336</td><td class="line"> ice_init ();</td></tr>
+<tr class="codeline" data-linenumber="337"><td class="num" id="LN337">337</td><td class="line"> SmcSetErrorHandler (smc_error_handler);</td></tr>
+<tr class="codeline" data-linenumber="338"><td class="num" id="LN338">338</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="339"><td class="num" id="LN339">339</td><td class="line"> callbacks.save_yourself.callback = xsmp_save_yourself;</td></tr>
+<tr class="codeline" data-linenumber="340"><td class="num" id="LN340">340</td><td class="line"> callbacks.die.callback = xsmp_die;</td></tr>
+<tr class="codeline" data-linenumber="341"><td class="num" id="LN341">341</td><td class="line"> callbacks.save_complete.callback = xsmp_save_complete;</td></tr>
+<tr class="codeline" data-linenumber="342"><td class="num" id="LN342">342</td><td class="line"> callbacks.shutdown_cancelled.callback = xsmp_shutdown_cancelled;</td></tr>
+<tr class="codeline" data-linenumber="343"><td class="num" id="LN343">343</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="344"><td class="num" id="LN344">344</td><td class="line"> callbacks.save_yourself.client_data = xsmp;</td></tr>
+<tr class="codeline" data-linenumber="345"><td class="num" id="LN345">345</td><td class="line"> callbacks.die.client_data = xsmp;</td></tr>
+<tr class="codeline" data-linenumber="346"><td class="num" id="LN346">346</td><td class="line"> callbacks.save_complete.client_data = xsmp;</td></tr>
+<tr class="codeline" data-linenumber="347"><td class="num" id="LN347">347</td><td class="line"> callbacks.shutdown_cancelled.client_data = xsmp;</td></tr>
+<tr class="codeline" data-linenumber="348"><td class="num" id="LN348">348</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="349"><td class="num" id="LN349">349</td><td class="line"> client_id = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="350"><td class="num" id="LN350">350</td><td class="line"> error_string_ret[0] = '\0';</td></tr>
+<tr class="codeline" data-linenumber="351"><td class="num" id="LN351">351</td><td class="line"> xsmp-&gt;connection =</td></tr>
+<tr class="codeline" data-linenumber="352"><td class="num" id="LN352">352</td><td class="line"> SmcOpenConnection (<span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, xsmp, <span class='macro'>SmProtoMajor<span class='macro_popup'>1</span></span>, <span class='macro'>SmProtoMinor<span class='macro_popup'>0</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="353"><td class="num" id="LN353">353</td><td class="line"> <span class='macro'>SmcSaveYourselfProcMask<span class='macro_popup'>(1L &lt;&lt; 0)</span></span> | <span class='macro'>SmcDieProcMask<span class='macro_popup'>(1L &lt;&lt; 1)</span></span> |</td></tr>
+<tr class="codeline" data-linenumber="354"><td class="num" id="LN354">354</td><td class="line"> <span class='macro'>SmcSaveCompleteProcMask<span class='macro_popup'>(1L &lt;&lt; 2)</span></span> |</td></tr>
+<tr class="codeline" data-linenumber="355"><td class="num" id="LN355">355</td><td class="line"> <span class='macro'>SmcShutdownCancelledProcMask<span class='macro_popup'>(1L &lt;&lt; 3)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="356"><td class="num" id="LN356">356</td><td class="line"> &amp;callbacks,</td></tr>
+<tr class="codeline" data-linenumber="357"><td class="num" id="LN357">357</td><td class="line"> xsmp-&gt;client_id, &amp;ret_client_id,</td></tr>
+<tr class="codeline" data-linenumber="358"><td class="num" id="LN358">358</td><td class="line"> <span class='keyword'>sizeof</span> (error_string_ret), error_string_ret);</td></tr>
+<tr class="codeline" data-linenumber="359"><td class="num" id="LN359">359</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="360"><td class="num" id="LN360">360</td><td class="line"> <span class='keyword'>if</span> (!xsmp-&gt;connection)</td></tr>
+<tr class="codeline" data-linenumber="361"><td class="num" id="LN361">361</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="362"><td class="num" id="LN362">362</td><td class="line"> g_warning (<span class='string_literal'>"Failed to connect to the session manager: %s\n"</span>,</td></tr>
+<tr class="codeline" data-linenumber="363"><td class="num" id="LN363">363</td><td class="line"> error_string_ret[0] ?</td></tr>
+<tr class="codeline" data-linenumber="364"><td class="num" id="LN364">364</td><td class="line"> error_string_ret : <span class='string_literal'>"no error message given"</span>);</td></tr>
+<tr class="codeline" data-linenumber="365"><td class="num" id="LN365">365</td><td class="line"> xsmp-&gt;state = XSMP_STATE_CONNECTION_CLOSED;</td></tr>
+<tr class="codeline" data-linenumber="366"><td class="num" id="LN366">366</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="367"><td class="num" id="LN367">367</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="368"><td class="num" id="LN368">368</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="369"><td class="num" id="LN369">369</td><td class="line"> <span class='comment'>/* We expect a pointless initial SaveYourself if either (a) we</span></td></tr>
+<tr class="codeline" data-linenumber="370"><td class="num" id="LN370">370</td><td class="line"> <span class='comment'>* didn't have an initial client ID, or (b) we DID have an initial</span></td></tr>
+<tr class="codeline" data-linenumber="371"><td class="num" id="LN371">371</td><td class="line"> <span class='comment'>* client ID, but the server rejected it and gave us a new one.</span></td></tr>
+<tr class="codeline" data-linenumber="372"><td class="num" id="LN372">372</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="373"><td class="num" id="LN373">373</td><td class="line"> <span class='keyword'>if</span> (!xsmp-&gt;client_id ||</td></tr>
+<tr class="codeline" data-linenumber="374"><td class="num" id="LN374">374</td><td class="line"> (ret_client_id &amp;&amp; strcmp (xsmp-&gt;client_id, ret_client_id) != 0))</td></tr>
+<tr class="codeline" data-linenumber="375"><td class="num" id="LN375">375</td><td class="line"> xsmp-&gt;expecting_initial_save_yourself = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="376"><td class="num" id="LN376">376</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="377"><td class="num" id="LN377">377</td><td class="line"> <span class='keyword'>if</span> (ret_client_id)</td></tr>
+<tr class="codeline" data-linenumber="378"><td class="num" id="LN378">378</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="379"><td class="num" id="LN379">379</td><td class="line"> g_free (xsmp-&gt;client_id);</td></tr>
+<tr class="codeline" data-linenumber="380"><td class="num" id="LN380">380</td><td class="line"> xsmp-&gt;client_id = <span class='macro'>g_strdup (ret_client_id)<span class='macro_popup'>g_strdup_inline (ret_client_id)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="381"><td class="num" id="LN381">381</td><td class="line"> free (ret_client_id);</td></tr>
+<tr class="codeline" data-linenumber="382"><td class="num" id="LN382">382</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="383"><td class="num" id="LN383">383</td><td class="line"><span class='directive'>#if defined(GDK_WINDOWING_X11) || defined(HAVE_X11)</span></td></tr>
+<tr class="codeline" data-linenumber="384"><td class="num" id="LN384">384</td><td class="line"> <span class='keyword'>if</span> (<span class='macro'>GDK_IS_X11_DISPLAY (gdk_display_get_default ())<span class='macro_popup'>(((__extension__ ({ GTypeInstance *__inst = (GTypeInstance*) (<br>(gdk_display_get_default ())); GType __t = ((gdk_x11_display_get_type<br>())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="385"><td class="num" id="LN385">385</td><td class="line"> gdk_x11_set_sm_client_id (xsmp-&gt;client_id);</td></tr>
+<tr class="codeline" data-linenumber="386"><td class="num" id="LN386">386</td><td class="line"><span class='directive'>#endif</span></td></tr>
+<tr class="codeline" data-linenumber="387"><td class="num" id="LN387">387</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="388"><td class="num" id="LN388">388</td><td class="line"> g_debug (<span class='string_literal'>"Got client ID \"%s\""</span>, xsmp-&gt;client_id);</td></tr>
+<tr class="codeline" data-linenumber="389"><td class="num" id="LN389">389</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="390"><td class="num" id="LN390">390</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="391"><td class="num" id="LN391">391</td><td class="line"> xsmp-&gt;state = XSMP_STATE_IDLE;</td></tr>
+<tr class="codeline" data-linenumber="392"><td class="num" id="LN392">392</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="393"><td class="num" id="LN393">393</td><td class="line"> <span class='comment'>/* Do not set the initial properties until we reach the main loop,</span></td></tr>
+<tr class="codeline" data-linenumber="394"><td class="num" id="LN394">394</td><td class="line"> <span class='comment'>* so that the application has a chance to call</span></td></tr>
+<tr class="codeline" data-linenumber="395"><td class="num" id="LN395">395</td><td class="line"> <span class='comment'>* egg_set_desktop_file(). (This may also help the session manager</span></td></tr>
+<tr class="codeline" data-linenumber="396"><td class="num" id="LN396">396</td><td class="line"> <span class='comment'>* have a better idea of when the application is fully up and</span></td></tr>
+<tr class="codeline" data-linenumber="397"><td class="num" id="LN397">397</td><td class="line"> <span class='comment'>* running.)</span></td></tr>
+<tr class="codeline" data-linenumber="398"><td class="num" id="LN398">398</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="399"><td class="num" id="LN399">399</td><td class="line"> xsmp-&gt;waiting_to_set_initial_properties = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="400"><td class="num" id="LN400">400</td><td class="line"> xsmp-&gt;idle = g_idle_add (sm_client_xsmp_set_initial_properties, client);</td></tr>
+<tr class="codeline" data-linenumber="401"><td class="num" id="LN401">401</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="402"><td class="num" id="LN402">402</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="403"><td class="num" id="LN403">403</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="404"><td class="num" id="LN404">404</td><td class="line">sm_client_xsmp_set_restart_command (EggSMClient *client,</td></tr>
+<tr class="codeline" data-linenumber="405"><td class="num" id="LN405">405</td><td class="line"> <span class='keyword'>int</span> argc,</td></tr>
+<tr class="codeline" data-linenumber="406"><td class="num" id="LN406">406</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> **argv)</td></tr>
+<tr class="codeline" data-linenumber="407"><td class="num" id="LN407">407</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="408"><td class="num" id="LN408">408</td><td class="line"> EggSMClientXSMP *xsmp = (EggSMClientXSMP *)client;</td></tr>
+<tr class="codeline" data-linenumber="409"><td class="num" id="LN409">409</td><td class="line"> <span class='keyword'>int</span> i;</td></tr>
+<tr class="codeline" data-linenumber="410"><td class="num" id="LN410">410</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="411"><td class="num" id="LN411">411</td><td class="line"> g_strfreev (xsmp-&gt;restart_command);</td></tr>
+<tr class="codeline" data-linenumber="412"><td class="num" id="LN412">412</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="413"><td class="num" id="LN413">413</td><td class="line"> xsmp-&gt;restart_command = <span class='macro'>g_new (<span class='keyword'>char</span> *, argc + 1)<span class='macro_popup'>(char * *) (__extension__ ({ gsize __n = (gsize) (argc + 1); gsize<br> __s = sizeof (char *); gpointer __p; if (__s == 1) __p = g_malloc<br> (__n); else if (__builtin_constant_p (__n) &amp;&amp; (__s ==<br> 0 || __n &lt;= (9223372036854775807L *2UL+1UL) / __s)) __p =<br> g_malloc (__n * __s); else __p = g_malloc_n (__n, __s); __p;<br> }))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="414"><td class="num" id="LN414">414</td><td class="line"> <span class='keyword'>for</span> (i = 0; i &lt; argc; i++)</td></tr>
+<tr class="codeline" data-linenumber="415"><td class="num" id="LN415">415</td><td class="line"> xsmp-&gt;restart_command[i] = <span class='macro'>g_strdup (argv[i])<span class='macro_popup'>g_strdup_inline (argv[i])</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="416"><td class="num" id="LN416">416</td><td class="line"> xsmp-&gt;restart_command[i] = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="417"><td class="num" id="LN417">417</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="418"><td class="num" id="LN418">418</td><td class="line"> xsmp-&gt;set_restart_command = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="419"><td class="num" id="LN419">419</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="420"><td class="num" id="LN420">420</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="421"><td class="num" id="LN421">421</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="422"><td class="num" id="LN422">422</td><td class="line">sm_client_xsmp_set_discard_command (EggSMClient *client,</td></tr>
+<tr class="codeline" data-linenumber="423"><td class="num" id="LN423">423</td><td class="line"> <span class='keyword'>int</span> argc,</td></tr>
+<tr class="codeline" data-linenumber="424"><td class="num" id="LN424">424</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> **argv)</td></tr>
+<tr class="codeline" data-linenumber="425"><td class="num" id="LN425">425</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="426"><td class="num" id="LN426">426</td><td class="line"> EggSMClientXSMP *xsmp = (EggSMClientXSMP *)client;</td></tr>
+<tr class="codeline" data-linenumber="427"><td class="num" id="LN427">427</td><td class="line"> <span class='keyword'>int</span> i;</td></tr>
+<tr class="codeline" data-linenumber="428"><td class="num" id="LN428">428</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="429"><td class="num" id="LN429">429</td><td class="line"> g_strfreev (xsmp-&gt;discard_command);</td></tr>
+<tr class="codeline" data-linenumber="430"><td class="num" id="LN430">430</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="431"><td class="num" id="LN431">431</td><td class="line"> xsmp-&gt;discard_command = <span class='macro'>g_new (<span class='keyword'>char</span> *, argc + 1)<span class='macro_popup'>(char * *) (__extension__ ({ gsize __n = (gsize) (argc + 1); gsize<br> __s = sizeof (char *); gpointer __p; if (__s == 1) __p = g_malloc<br> (__n); else if (__builtin_constant_p (__n) &amp;&amp; (__s ==<br> 0 || __n &lt;= (9223372036854775807L *2UL+1UL) / __s)) __p =<br> g_malloc (__n * __s); else __p = g_malloc_n (__n, __s); __p;<br> }))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="432"><td class="num" id="LN432">432</td><td class="line"> <span class='keyword'>for</span> (i = 0; i &lt; argc; i++)</td></tr>
+<tr class="codeline" data-linenumber="433"><td class="num" id="LN433">433</td><td class="line"> xsmp-&gt;discard_command[i] = <span class='macro'>g_strdup (argv[i])<span class='macro_popup'>g_strdup_inline (argv[i])</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="434"><td class="num" id="LN434">434</td><td class="line"> xsmp-&gt;discard_command[i] = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="435"><td class="num" id="LN435">435</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="436"><td class="num" id="LN436">436</td><td class="line"> xsmp-&gt;set_discard_command = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="437"><td class="num" id="LN437">437</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="438"><td class="num" id="LN438">438</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="439"><td class="num" id="LN439">439</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="440"><td class="num" id="LN440">440</td><td class="line">sm_client_xsmp_will_quit (EggSMClient *client,</td></tr>
+<tr class="codeline" data-linenumber="441"><td class="num" id="LN441">441</td><td class="line"> gboolean will_quit)</td></tr>
+<tr class="codeline" data-linenumber="442"><td class="num" id="LN442">442</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="443"><td class="num" id="LN443">443</td><td class="line"> EggSMClientXSMP *xsmp = (EggSMClientXSMP *)client;</td></tr>
+<tr class="codeline" data-linenumber="444"><td class="num" id="LN444">444</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="445"><td class="num" id="LN445">445</td><td class="line"> <span class='keyword'>if</span> (xsmp-&gt;state == XSMP_STATE_CONNECTION_CLOSED)</td></tr>
+<tr class="codeline" data-linenumber="446"><td class="num" id="LN446">446</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="447"><td class="num" id="LN447">447</td><td class="line"> <span class='comment'>/* The session manager has already exited! Schedule a quit</span></td></tr>
+<tr class="codeline" data-linenumber="448"><td class="num" id="LN448">448</td><td class="line"> <span class='comment'>* signal.</span></td></tr>
+<tr class="codeline" data-linenumber="449"><td class="num" id="LN449">449</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="450"><td class="num" id="LN450">450</td><td class="line"> xsmp-&gt;waiting_to_emit_quit = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="451"><td class="num" id="LN451">451</td><td class="line"> update_pending_events (xsmp);</td></tr>
+<tr class="codeline" data-linenumber="452"><td class="num" id="LN452">452</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="453"><td class="num" id="LN453">453</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="454"><td class="num" id="LN454">454</td><td class="line"> <span class='keyword'>else</span> <span class='keyword'>if</span> (xsmp-&gt;state == XSMP_STATE_SHUTDOWN_CANCELLED)</td></tr>
+<tr class="codeline" data-linenumber="455"><td class="num" id="LN455">455</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="456"><td class="num" id="LN456">456</td><td class="line"> <span class='comment'>/* We received a ShutdownCancelled message while the application</span></td></tr>
+<tr class="codeline" data-linenumber="457"><td class="num" id="LN457">457</td><td class="line"> <span class='comment'>* was interacting; Schedule a quit_cancelled signal.</span></td></tr>
+<tr class="codeline" data-linenumber="458"><td class="num" id="LN458">458</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="459"><td class="num" id="LN459">459</td><td class="line"> xsmp-&gt;waiting_to_emit_quit_cancelled = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="460"><td class="num" id="LN460">460</td><td class="line"> update_pending_events (xsmp);</td></tr>
+<tr class="codeline" data-linenumber="461"><td class="num" id="LN461">461</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="462"><td class="num" id="LN462">462</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="463"><td class="num" id="LN463">463</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="464"><td class="num" id="LN464">464</td><td class="line"> <span class='macro'>g_return_if_fail (xsmp-&gt;state == XSMP_STATE_INTERACT)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_11<br>; if (xsmp-&gt;state == XSMP_STATE_INTERACT) _g_boolean_var_11<br> = 1; else _g_boolean_var_11 = 0; _g_boolean_var_11; }), 1)))<br> { } else { g_return_if_fail_warning ("EggSMClient", ((const char<br>*) (__func__)), "xsmp-&gt;state == XSMP_STATE_INTERACT"); return<br>; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="465"><td class="num" id="LN465">465</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="466"><td class="num" id="LN466">466</td><td class="line"> g_debug (<span class='string_literal'>"Sending InteractDone(%s)"</span>, will_quit ? <span class='string_literal'>"False"</span> : <span class='string_literal'>"True"</span>);</td></tr>
+<tr class="codeline" data-linenumber="467"><td class="num" id="LN467">467</td><td class="line"> SmcInteractDone (xsmp-&gt;connection, !will_quit);</td></tr>
+<tr class="codeline" data-linenumber="468"><td class="num" id="LN468">468</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="469"><td class="num" id="LN469">469</td><td class="line"> <span class='keyword'>if</span> (will_quit &amp;&amp; xsmp-&gt;need_save_state)</td></tr>
+<tr class="codeline" data-linenumber="470"><td class="num" id="LN470">470</td><td class="line"> save_state (xsmp);</td></tr>
+<tr class="codeline" data-linenumber="471"><td class="num" id="LN471">471</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="472"><td class="num" id="LN472">472</td><td class="line"> g_debug (<span class='string_literal'>"Sending SaveYourselfDone(%s)"</span>, will_quit ? <span class='string_literal'>"True"</span> : <span class='string_literal'>"False"</span>);</td></tr>
+<tr class="codeline" data-linenumber="473"><td class="num" id="LN473">473</td><td class="line"> SmcSaveYourselfDone (xsmp-&gt;connection, will_quit);</td></tr>
+<tr class="codeline" data-linenumber="474"><td class="num" id="LN474">474</td><td class="line"> xsmp-&gt;state = XSMP_STATE_SAVE_YOURSELF_DONE;</td></tr>
+<tr class="codeline" data-linenumber="475"><td class="num" id="LN475">475</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="476"><td class="num" id="LN476">476</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="477"><td class="num" id="LN477">477</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="478"><td class="num" id="LN478">478</td><td class="line">sm_client_xsmp_end_session (EggSMClient *client,</td></tr>
+<tr class="codeline" data-linenumber="479"><td class="num" id="LN479">479</td><td class="line"> EggSMClientEndStyle style,</td></tr>
+<tr class="codeline" data-linenumber="480"><td class="num" id="LN480">480</td><td class="line"> gboolean request_confirmation)</td></tr>
+<tr class="codeline" data-linenumber="481"><td class="num" id="LN481">481</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="482"><td class="num" id="LN482">482</td><td class="line"> EggSMClientXSMP *xsmp = (EggSMClientXSMP *)client;</td></tr>
+<tr class="codeline" data-linenumber="483"><td class="num" id="LN483">483</td><td class="line"> <span class='keyword'>int</span> save_type;</td></tr>
+<tr class="codeline" data-linenumber="484"><td class="num" id="LN484">484</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="485"><td class="num" id="LN485">485</td><td class="line"> <span class='comment'>/* To end the session via XSMP, we have to send a</span></td></tr>
+<tr class="codeline" data-linenumber="486"><td class="num" id="LN486">486</td><td class="line"> <span class='comment'>* SaveYourselfRequest. We aren't allowed to do that if anything</span></td></tr>
+<tr class="codeline" data-linenumber="487"><td class="num" id="LN487">487</td><td class="line"> <span class='comment'>* else is going on, but we don't want to expose this fact to the</span></td></tr>
+<tr class="codeline" data-linenumber="488"><td class="num" id="LN488">488</td><td class="line"> <span class='comment'>* application. So we do our best to patch things up here...</span></td></tr>
+<tr class="codeline" data-linenumber="489"><td class="num" id="LN489">489</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="490"><td class="num" id="LN490">490</td><td class="line"> <span class='comment'>* In the worst case, this method might block for some length of</span></td></tr>
+<tr class="codeline" data-linenumber="491"><td class="num" id="LN491">491</td><td class="line"> <span class='comment'>* time in process_ice_messages, but the only time that code path is</span></td></tr>
+<tr class="codeline" data-linenumber="492"><td class="num" id="LN492">492</td><td class="line"> <span class='comment'>* honestly likely to get hit is if the application tries to end the</span></td></tr>
+<tr class="codeline" data-linenumber="493"><td class="num" id="LN493">493</td><td class="line"> <span class='comment'>* session as the very first thing it does, in which case it</span></td></tr>
+<tr class="codeline" data-linenumber="494"><td class="num" id="LN494">494</td><td class="line"> <span class='comment'>* probably won't actually block anyway. It's not worth gunking up</span></td></tr>
+<tr class="codeline" data-linenumber="495"><td class="num" id="LN495">495</td><td class="line"> <span class='comment'>* the API to try to deal nicely with the other 0.01% of cases where</span></td></tr>
+<tr class="codeline" data-linenumber="496"><td class="num" id="LN496">496</td><td class="line"> <span class='comment'>* this happens.</span></td></tr>
+<tr class="codeline" data-linenumber="497"><td class="num" id="LN497">497</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="498"><td class="num" id="LN498">498</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="499"><td class="num" id="LN499">499</td><td class="line"> <span class='keyword'>while</span> (xsmp-&gt;state != XSMP_STATE_IDLE ||</td></tr>
+<tr class="codeline" data-linenumber="500"><td class="num" id="LN500">500</td><td class="line"> xsmp-&gt;expecting_initial_save_yourself)</td></tr>
+<tr class="codeline" data-linenumber="501"><td class="num" id="LN501">501</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="502"><td class="num" id="LN502">502</td><td class="line"> <span class='comment'>/* If we're already shutting down, we don't need to do anything. */</span></td></tr>
+<tr class="codeline" data-linenumber="503"><td class="num" id="LN503">503</td><td class="line"> <span class='keyword'>if</span> (xsmp-&gt;shutting_down)</td></tr>
+<tr class="codeline" data-linenumber="504"><td class="num" id="LN504">504</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="505"><td class="num" id="LN505">505</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="506"><td class="num" id="LN506">506</td><td class="line"> <span class='keyword'>switch</span> (xsmp-&gt;state)</td></tr>
+<tr class="codeline" data-linenumber="507"><td class="num" id="LN507">507</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="508"><td class="num" id="LN508">508</td><td class="line"> <span class='keyword'>case</span> XSMP_STATE_CONNECTION_CLOSED:</td></tr>
+<tr class="codeline" data-linenumber="509"><td class="num" id="LN509">509</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="510"><td class="num" id="LN510">510</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="511"><td class="num" id="LN511">511</td><td class="line"> <span class='keyword'>case</span> XSMP_STATE_SAVE_YOURSELF:</td></tr>
+<tr class="codeline" data-linenumber="512"><td class="num" id="LN512">512</td><td class="line"> <span class='comment'>/* Trying to log out from the save_state callback? Whatever.</span></td></tr>
+<tr class="codeline" data-linenumber="513"><td class="num" id="LN513">513</td><td class="line"> <span class='comment'>* Abort the save_state.</span></td></tr>
+<tr class="codeline" data-linenumber="514"><td class="num" id="LN514">514</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="515"><td class="num" id="LN515">515</td><td class="line"> SmcSaveYourselfDone (xsmp-&gt;connection, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="516"><td class="num" id="LN516">516</td><td class="line"> xsmp-&gt;state = XSMP_STATE_SAVE_YOURSELF_DONE;</td></tr>
+<tr class="codeline" data-linenumber="517"><td class="num" id="LN517">517</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="518"><td class="num" id="LN518">518</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="519"><td class="num" id="LN519">519</td><td class="line"> <span class='keyword'>case</span> XSMP_STATE_INTERACT_REQUEST:</td></tr>
+<tr class="codeline" data-linenumber="520"><td class="num" id="LN520">520</td><td class="line"> <span class='keyword'>case</span> XSMP_STATE_INTERACT:</td></tr>
+<tr class="codeline" data-linenumber="521"><td class="num" id="LN521">521</td><td class="line"> <span class='keyword'>case</span> XSMP_STATE_SHUTDOWN_CANCELLED:</td></tr>
+<tr class="codeline" data-linenumber="522"><td class="num" id="LN522">522</td><td class="line"> <span class='comment'>/* Already in a shutdown-related state, just ignore</span></td></tr>
+<tr class="codeline" data-linenumber="523"><td class="num" id="LN523">523</td><td class="line"> <span class='comment'>* the new shutdown request...</span></td></tr>
+<tr class="codeline" data-linenumber="524"><td class="num" id="LN524">524</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="525"><td class="num" id="LN525">525</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="526"><td class="num" id="LN526">526</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="527"><td class="num" id="LN527">527</td><td class="line"> <span class='keyword'>case</span> XSMP_STATE_IDLE:</td></tr>
+<tr class="codeline" data-linenumber="528"><td class="num" id="LN528">528</td><td class="line"> <span class='keyword'>if</span> (xsmp-&gt;waiting_to_set_initial_properties)</td></tr>
+<tr class="codeline" data-linenumber="529"><td class="num" id="LN529">529</td><td class="line"> sm_client_xsmp_set_initial_properties (xsmp);</td></tr>
+<tr class="codeline" data-linenumber="530"><td class="num" id="LN530">530</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="531"><td class="num" id="LN531">531</td><td class="line"> <span class='keyword'>if</span> (!xsmp-&gt;expecting_initial_save_yourself)</td></tr>
+<tr class="codeline" data-linenumber="532"><td class="num" id="LN532">532</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="533"><td class="num" id="LN533">533</td><td class="line"> <span class='comment'>/* else fall through */</span></td></tr>
+<tr class="codeline" data-linenumber="534"><td class="num" id="LN534">534</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="535"><td class="num" id="LN535">535</td><td class="line"> <span class='keyword'>case</span> XSMP_STATE_SAVE_YOURSELF_DONE:</td></tr>
+<tr class="codeline" data-linenumber="536"><td class="num" id="LN536">536</td><td class="line"> <span class='comment'>/* We need to wait for some response from the server.*/</span></td></tr>
+<tr class="codeline" data-linenumber="537"><td class="num" id="LN537">537</td><td class="line"> process_ice_messages (SmcGetIceConnection (xsmp-&gt;connection));</td></tr>
+<tr class="codeline" data-linenumber="538"><td class="num" id="LN538">538</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="539"><td class="num" id="LN539">539</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="540"><td class="num" id="LN540">540</td><td class="line"> <span class='keyword'>default</span>:</td></tr>
+<tr class="codeline" data-linenumber="541"><td class="num" id="LN541">541</td><td class="line"> <span class='comment'>/* Hm... shouldn't happen */</span></td></tr>
+<tr class="codeline" data-linenumber="542"><td class="num" id="LN542">542</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="543"><td class="num" id="LN543">543</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="544"><td class="num" id="LN544">544</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="545"><td class="num" id="LN545">545</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="546"><td class="num" id="LN546">546</td><td class="line"> <span class='comment'>/* xfce4-session will do the wrong thing if we pass SmSaveGlobal and</span></td></tr>
+<tr class="codeline" data-linenumber="547"><td class="num" id="LN547">547</td><td class="line"> <span class='comment'>* the user chooses to save the session. But mate-session will do</span></td></tr>
+<tr class="codeline" data-linenumber="548"><td class="num" id="LN548">548</td><td class="line"> <span class='comment'>* the wrong thing if we pass SmSaveBoth and the user chooses NOT to</span></td></tr>
+<tr class="codeline" data-linenumber="549"><td class="num" id="LN549">549</td><td class="line"> <span class='comment'>* save the session... Sigh.</span></td></tr>
+<tr class="codeline" data-linenumber="550"><td class="num" id="LN550">550</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="551"><td class="num" id="LN551">551</td><td class="line"> <span class='keyword'>if</span> (!strcmp (SmcVendor (xsmp-&gt;connection), <span class='string_literal'>"xfce4-session"</span>))</td></tr>
+<tr class="codeline" data-linenumber="552"><td class="num" id="LN552">552</td><td class="line"> save_type = <span class='macro'>SmSaveBoth<span class='macro_popup'>2</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="553"><td class="num" id="LN553">553</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="554"><td class="num" id="LN554">554</td><td class="line"> save_type = <span class='macro'>SmSaveGlobal<span class='macro_popup'>0</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="555"><td class="num" id="LN555">555</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="556"><td class="num" id="LN556">556</td><td class="line"> g_debug (<span class='string_literal'>"Sending SaveYourselfRequest(SmSaveGlobal, Shutdown, SmInteractStyleAny, %sFast)"</span>, request_confirmation ? <span class='string_literal'>"!"</span> : <span class='string_literal'>""</span>);</td></tr>
+<tr class="codeline" data-linenumber="557"><td class="num" id="LN557">557</td><td class="line"> SmcRequestSaveYourself (xsmp-&gt;connection,</td></tr>
+<tr class="codeline" data-linenumber="558"><td class="num" id="LN558">558</td><td class="line"> save_type,</td></tr>
+<tr class="codeline" data-linenumber="559"><td class="num" id="LN559">559</td><td class="line"> <span class='macro'>True<span class='macro_popup'>1</span></span>, <span class='comment'>/* shutdown */</span></td></tr>
+<tr class="codeline" data-linenumber="560"><td class="num" id="LN560">560</td><td class="line"> <span class='macro'>SmInteractStyleAny<span class='macro_popup'>2</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="561"><td class="num" id="LN561">561</td><td class="line"> !request_confirmation, <span class='comment'>/* fast */</span></td></tr>
+<tr class="codeline" data-linenumber="562"><td class="num" id="LN562">562</td><td class="line"> <span class='macro'>True<span class='macro_popup'>1</span></span> <span class='comment'>/* global */</span>);</td></tr>
+<tr class="codeline" data-linenumber="563"><td class="num" id="LN563">563</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="564"><td class="num" id="LN564">564</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="565"><td class="num" id="LN565">565</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="566"><td class="num" id="LN566">566</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="567"><td class="num" id="LN567">567</td><td class="line">idle_do_pending_events (gpointer data)</td></tr>
+<tr class="codeline" data-linenumber="568"><td class="num" id="LN568">568</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="569"><td class="num" id="LN569">569</td><td class="line"> EggSMClientXSMP *xsmp = data;</td></tr>
+<tr class="codeline" data-linenumber="570"><td class="num" id="LN570">570</td><td class="line"> EggSMClient *client = data;</td></tr>
+<tr class="codeline" data-linenumber="571"><td class="num" id="LN571">571</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="572"><td class="num" id="LN572">572</td><td class="line"> xsmp-&gt;idle = 0;</td></tr>
+<tr class="codeline" data-linenumber="573"><td class="num" id="LN573">573</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="574"><td class="num" id="LN574">574</td><td class="line"> <span class='keyword'>if</span> (xsmp-&gt;waiting_to_emit_quit)</td></tr>
+<tr class="codeline" data-linenumber="575"><td class="num" id="LN575">575</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="576"><td class="num" id="LN576">576</td><td class="line"> xsmp-&gt;waiting_to_emit_quit = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="577"><td class="num" id="LN577">577</td><td class="line"> egg_sm_client_quit (client);</td></tr>
+<tr class="codeline" data-linenumber="578"><td class="num" id="LN578">578</td><td class="line"> <span class='keyword'>goto</span> out;</td></tr>
+<tr class="codeline" data-linenumber="579"><td class="num" id="LN579">579</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="580"><td class="num" id="LN580">580</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="581"><td class="num" id="LN581">581</td><td class="line"> <span class='keyword'>if</span> (xsmp-&gt;waiting_to_emit_quit_cancelled)</td></tr>
+<tr class="codeline" data-linenumber="582"><td class="num" id="LN582">582</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="583"><td class="num" id="LN583">583</td><td class="line"> xsmp-&gt;waiting_to_emit_quit_cancelled = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="584"><td class="num" id="LN584">584</td><td class="line"> egg_sm_client_quit_cancelled (client);</td></tr>
+<tr class="codeline" data-linenumber="585"><td class="num" id="LN585">585</td><td class="line"> xsmp-&gt;state = XSMP_STATE_IDLE;</td></tr>
+<tr class="codeline" data-linenumber="586"><td class="num" id="LN586">586</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="587"><td class="num" id="LN587">587</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="588"><td class="num" id="LN588">588</td><td class="line"> <span class='keyword'>if</span> (xsmp-&gt;waiting_to_save_myself)</td></tr>
+<tr class="codeline" data-linenumber="589"><td class="num" id="LN589">589</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="590"><td class="num" id="LN590">590</td><td class="line"> xsmp-&gt;waiting_to_save_myself = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="591"><td class="num" id="LN591">591</td><td class="line"> do_save_yourself (xsmp);</td></tr>
+<tr class="codeline" data-linenumber="592"><td class="num" id="LN592">592</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="593"><td class="num" id="LN593">593</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="594"><td class="num" id="LN594">594</td><td class="line">out:</td></tr>
+<tr class="codeline" data-linenumber="595"><td class="num" id="LN595">595</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="596"><td class="num" id="LN596">596</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="597"><td class="num" id="LN597">597</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="598"><td class="num" id="LN598">598</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="599"><td class="num" id="LN599">599</td><td class="line">update_pending_events (EggSMClientXSMP *xsmp)</td></tr>
+<tr class="codeline" data-linenumber="600"><td class="num" id="LN600">600</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="601"><td class="num" id="LN601">601</td><td class="line"> gboolean want_idle =</td></tr>
+<tr class="codeline" data-linenumber="602"><td class="num" id="LN602">602</td><td class="line"> xsmp-&gt;waiting_to_emit_quit ||</td></tr>
+<tr class="codeline" data-linenumber="603"><td class="num" id="LN603">603</td><td class="line"> xsmp-&gt;waiting_to_emit_quit_cancelled ||</td></tr>
+<tr class="codeline" data-linenumber="604"><td class="num" id="LN604">604</td><td class="line"> xsmp-&gt;waiting_to_save_myself;</td></tr>
+<tr class="codeline" data-linenumber="605"><td class="num" id="LN605">605</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="606"><td class="num" id="LN606">606</td><td class="line"> <span class='keyword'>if</span> (want_idle)</td></tr>
+<tr class="codeline" data-linenumber="607"><td class="num" id="LN607">607</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="608"><td class="num" id="LN608">608</td><td class="line"> <span class='keyword'>if</span> (xsmp-&gt;idle == 0)</td></tr>
+<tr class="codeline" data-linenumber="609"><td class="num" id="LN609">609</td><td class="line"> xsmp-&gt;idle = g_idle_add (idle_do_pending_events, xsmp);</td></tr>
+<tr class="codeline" data-linenumber="610"><td class="num" id="LN610">610</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="611"><td class="num" id="LN611">611</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="612"><td class="num" id="LN612">612</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="613"><td class="num" id="LN613">613</td><td class="line"> <span class='keyword'>if</span> (xsmp-&gt;idle != 0)</td></tr>
+<tr class="codeline" data-linenumber="614"><td class="num" id="LN614">614</td><td class="line"> g_source_remove (xsmp-&gt;idle);</td></tr>
+<tr class="codeline" data-linenumber="615"><td class="num" id="LN615">615</td><td class="line"> xsmp-&gt;idle = 0;</td></tr>
+<tr class="codeline" data-linenumber="616"><td class="num" id="LN616">616</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="617"><td class="num" id="LN617">617</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="618"><td class="num" id="LN618">618</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="619"><td class="num" id="LN619">619</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="620"><td class="num" id="LN620">620</td><td class="line">fix_broken_state (EggSMClientXSMP *xsmp, <span class='keyword'>const</span> <span class='keyword'>char</span> *message,</td></tr>
+<tr class="codeline" data-linenumber="621"><td class="num" id="LN621">621</td><td class="line"> gboolean send_interact_done,</td></tr>
+<tr class="codeline" data-linenumber="622"><td class="num" id="LN622">622</td><td class="line"> gboolean send_save_yourself_done)</td></tr>
+<tr class="codeline" data-linenumber="623"><td class="num" id="LN623">623</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="624"><td class="num" id="LN624">624</td><td class="line"> g_warning (<span class='string_literal'>"Received XSMP %s message in state %s: client or server error"</span>,</td></tr>
+<tr class="codeline" data-linenumber="625"><td class="num" id="LN625">625</td><td class="line"> message, <span class='macro'>EGG_SM_CLIENT_XSMP_STATE (xsmp)<span class='macro_popup'>(state_names[(xsmp)-&gt;state])</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="626"><td class="num" id="LN626">626</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="627"><td class="num" id="LN627">627</td><td class="line"> <span class='comment'>/* Forget any pending SaveYourself plans we had */</span></td></tr>
+<tr class="codeline" data-linenumber="628"><td class="num" id="LN628">628</td><td class="line"> xsmp-&gt;waiting_to_save_myself = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="629"><td class="num" id="LN629">629</td><td class="line"> update_pending_events (xsmp);</td></tr>
+<tr class="codeline" data-linenumber="630"><td class="num" id="LN630">630</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="631"><td class="num" id="LN631">631</td><td class="line"> <span class='keyword'>if</span> (send_interact_done)</td></tr>
+<tr class="codeline" data-linenumber="632"><td class="num" id="LN632">632</td><td class="line"> SmcInteractDone (xsmp-&gt;connection, <span class='macro'>False<span class='macro_popup'>0</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="633"><td class="num" id="LN633">633</td><td class="line"> <span class='keyword'>if</span> (send_save_yourself_done)</td></tr>
+<tr class="codeline" data-linenumber="634"><td class="num" id="LN634">634</td><td class="line"> SmcSaveYourselfDone (xsmp-&gt;connection, <span class='macro'>True<span class='macro_popup'>1</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="635"><td class="num" id="LN635">635</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="636"><td class="num" id="LN636">636</td><td class="line"> xsmp-&gt;state = send_save_yourself_done ? XSMP_STATE_SAVE_YOURSELF_DONE : XSMP_STATE_IDLE;</td></tr>
+<tr class="codeline" data-linenumber="637"><td class="num" id="LN637">637</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="638"><td class="num" id="LN638">638</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="639"><td class="num" id="LN639">639</td><td class="line"><span class='comment'>/* SM callbacks */</span></td></tr>
+<tr class="codeline" data-linenumber="640"><td class="num" id="LN640">640</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="641"><td class="num" id="LN641">641</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="642"><td class="num" id="LN642">642</td><td class="line">xsmp_save_yourself (SmcConn smc_conn,</td></tr>
+<tr class="codeline" data-linenumber="643"><td class="num" id="LN643">643</td><td class="line"> SmPointer client_data,</td></tr>
+<tr class="codeline" data-linenumber="644"><td class="num" id="LN644">644</td><td class="line"> <span class='keyword'>int</span> save_type,</td></tr>
+<tr class="codeline" data-linenumber="645"><td class="num" id="LN645">645</td><td class="line"> <span class='macro'>Bool<span class='macro_popup'>int</span></span> shutdown,</td></tr>
+<tr class="codeline" data-linenumber="646"><td class="num" id="LN646">646</td><td class="line"> <span class='keyword'>int</span> interact_style,</td></tr>
+<tr class="codeline" data-linenumber="647"><td class="num" id="LN647">647</td><td class="line"> <span class='macro'>Bool<span class='macro_popup'>int</span></span> fast)</td></tr>
+<tr class="codeline" data-linenumber="648"><td class="num" id="LN648">648</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="649"><td class="num" id="LN649">649</td><td class="line"> EggSMClientXSMP *xsmp = client_data;</td></tr>
+<tr class="codeline" data-linenumber="650"><td class="num" id="LN650">650</td><td class="line"> gboolean wants_quit_requested;</td></tr>
+<tr class="codeline" data-linenumber="651"><td class="num" id="LN651">651</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="652"><td class="num" id="LN652">652</td><td class="line"> g_debug (<span class='string_literal'>"Received SaveYourself(%s, %s, %s, %s) in state %s"</span>,</td></tr>
+<tr class="codeline" data-linenumber="653"><td class="num" id="LN653">653</td><td class="line"> save_type == <span class='macro'>SmSaveLocal<span class='macro_popup'>1</span></span> ? <span class='string_literal'>"SmSaveLocal"</span> :</td></tr>
+<tr class="codeline" data-linenumber="654"><td class="num" id="LN654">654</td><td class="line"> save_type == <span class='macro'>SmSaveGlobal<span class='macro_popup'>0</span></span> ? <span class='string_literal'>"SmSaveGlobal"</span> : <span class='string_literal'>"SmSaveBoth"</span>,</td></tr>
+<tr class="codeline" data-linenumber="655"><td class="num" id="LN655">655</td><td class="line"> shutdown ? <span class='string_literal'>"Shutdown"</span> : <span class='string_literal'>"!Shutdown"</span>,</td></tr>
+<tr class="codeline" data-linenumber="656"><td class="num" id="LN656">656</td><td class="line"> interact_style == <span class='macro'>SmInteractStyleAny<span class='macro_popup'>2</span></span> ? <span class='string_literal'>"SmInteractStyleAny"</span> :</td></tr>
+<tr class="codeline" data-linenumber="657"><td class="num" id="LN657">657</td><td class="line"> interact_style == <span class='macro'>SmInteractStyleErrors<span class='macro_popup'>1</span></span> ? <span class='string_literal'>"SmInteractStyleErrors"</span> :</td></tr>
+<tr class="codeline" data-linenumber="658"><td class="num" id="LN658">658</td><td class="line"> <span class='string_literal'>"SmInteractStyleNone"</span>, fast ? <span class='string_literal'>"Fast"</span> : <span class='string_literal'>"!Fast"</span>,</td></tr>
+<tr class="codeline" data-linenumber="659"><td class="num" id="LN659">659</td><td class="line"> <span class='macro'>EGG_SM_CLIENT_XSMP_STATE (xsmp)<span class='macro_popup'>(state_names[(xsmp)-&gt;state])</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="660"><td class="num" id="LN660">660</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="661"><td class="num" id="LN661">661</td><td class="line"> <span class='keyword'>if</span> (xsmp-&gt;state != XSMP_STATE_IDLE &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="662"><td class="num" id="LN662">662</td><td class="line"> xsmp-&gt;state != XSMP_STATE_SHUTDOWN_CANCELLED)</td></tr>
+<tr class="codeline" data-linenumber="663"><td class="num" id="LN663">663</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="664"><td class="num" id="LN664">664</td><td class="line"> fix_broken_state (xsmp, <span class='string_literal'>"SaveYourself"</span>, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>, <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="665"><td class="num" id="LN665">665</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="666"><td class="num" id="LN666">666</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="667"><td class="num" id="LN667">667</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="668"><td class="num" id="LN668">668</td><td class="line"> <span class='keyword'>if</span> (xsmp-&gt;waiting_to_set_initial_properties)</td></tr>
+<tr class="codeline" data-linenumber="669"><td class="num" id="LN669">669</td><td class="line"> sm_client_xsmp_set_initial_properties (xsmp);</td></tr>
+<tr class="codeline" data-linenumber="670"><td class="num" id="LN670">670</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="671"><td class="num" id="LN671">671</td><td class="line"> <span class='comment'>/* If this is the initial SaveYourself, ignore it; we've already set</span></td></tr>
+<tr class="codeline" data-linenumber="672"><td class="num" id="LN672">672</td><td class="line"> <span class='comment'>* properties and there's no reason to actually save state too.</span></td></tr>
+<tr class="codeline" data-linenumber="673"><td class="num" id="LN673">673</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="674"><td class="num" id="LN674">674</td><td class="line"> <span class='keyword'>if</span> (xsmp-&gt;expecting_initial_save_yourself)</td></tr>
+<tr class="codeline" data-linenumber="675"><td class="num" id="LN675">675</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="676"><td class="num" id="LN676">676</td><td class="line"> xsmp-&gt;expecting_initial_save_yourself = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="677"><td class="num" id="LN677">677</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="678"><td class="num" id="LN678">678</td><td class="line"> <span class='keyword'>if</span> (save_type == <span class='macro'>SmSaveLocal<span class='macro_popup'>1</span></span> &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="679"><td class="num" id="LN679">679</td><td class="line"> interact_style == <span class='macro'>SmInteractStyleNone<span class='macro_popup'>0</span></span> &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="680"><td class="num" id="LN680">680</td><td class="line"> !shutdown &amp;&amp; !fast)</td></tr>
+<tr class="codeline" data-linenumber="681"><td class="num" id="LN681">681</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="682"><td class="num" id="LN682">682</td><td class="line"> g_debug (<span class='string_literal'>"Sending SaveYourselfDone(True) for initial SaveYourself"</span>);</td></tr>
+<tr class="codeline" data-linenumber="683"><td class="num" id="LN683">683</td><td class="line"> SmcSaveYourselfDone (xsmp-&gt;connection, <span class='macro'>True<span class='macro_popup'>1</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="684"><td class="num" id="LN684">684</td><td class="line"> <span class='comment'>/* As explained in the comment at the end of</span></td></tr>
+<tr class="codeline" data-linenumber="685"><td class="num" id="LN685">685</td><td class="line"> <span class='comment'>* do_save_yourself(), SAVE_YOURSELF_DONE is the correct</span></td></tr>
+<tr class="codeline" data-linenumber="686"><td class="num" id="LN686">686</td><td class="line"> <span class='comment'>* state here, not IDLE.</span></td></tr>
+<tr class="codeline" data-linenumber="687"><td class="num" id="LN687">687</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="688"><td class="num" id="LN688">688</td><td class="line"> xsmp-&gt;state = XSMP_STATE_SAVE_YOURSELF_DONE;</td></tr>
+<tr class="codeline" data-linenumber="689"><td class="num" id="LN689">689</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="690"><td class="num" id="LN690">690</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="691"><td class="num" id="LN691">691</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="692"><td class="num" id="LN692">692</td><td class="line"> g_warning (<span class='string_literal'>"First SaveYourself was not the expected one!"</span>);</td></tr>
+<tr class="codeline" data-linenumber="693"><td class="num" id="LN693">693</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="694"><td class="num" id="LN694">694</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="695"><td class="num" id="LN695">695</td><td class="line"> <span class='comment'>/* Even ignoring the "fast" flag completely, there are still 18</span></td></tr>
+<tr class="codeline" data-linenumber="696"><td class="num" id="LN696">696</td><td class="line"> <span class='comment'>* different combinations of save_type, shutdown and interact_style.</span></td></tr>
+<tr class="codeline" data-linenumber="697"><td class="num" id="LN697">697</td><td class="line"> <span class='comment'>* We interpret them as follows:</span></td></tr>
+<tr class="codeline" data-linenumber="698"><td class="num" id="LN698">698</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="699"><td class="num" id="LN699">699</td><td class="line"> <span class='comment'>* Type Shutdown Interact Interpretation</span></td></tr>
+<tr class="codeline" data-linenumber="700"><td class="num" id="LN700">700</td><td class="line"> <span class='comment'>* G F A/E/N do nothing (1)</span></td></tr>
+<tr class="codeline" data-linenumber="701"><td class="num" id="LN701">701</td><td class="line"> <span class='comment'>* G T N do nothing (1)*</span></td></tr>
+<tr class="codeline" data-linenumber="702"><td class="num" id="LN702">702</td><td class="line"> <span class='comment'>* G T A/E quit_requested (2)</span></td></tr>
+<tr class="codeline" data-linenumber="703"><td class="num" id="LN703">703</td><td class="line"> <span class='comment'>* L/B F A/E/N save_state (3)</span></td></tr>
+<tr class="codeline" data-linenumber="704"><td class="num" id="LN704">704</td><td class="line"> <span class='comment'>* L/B T N save_state (3)*</span></td></tr>
+<tr class="codeline" data-linenumber="705"><td class="num" id="LN705">705</td><td class="line"> <span class='comment'>* L/B T A/E quit_requested, then save_state (4)</span></td></tr>
+<tr class="codeline" data-linenumber="706"><td class="num" id="LN706">706</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="707"><td class="num" id="LN707">707</td><td class="line"> <span class='comment'>* 1. Do nothing, because the SM asked us to do something</span></td></tr>
+<tr class="codeline" data-linenumber="708"><td class="num" id="LN708">708</td><td class="line"> <span class='comment'>* uninteresting (save open files, but then don't quit</span></td></tr>
+<tr class="codeline" data-linenumber="709"><td class="num" id="LN709">709</td><td class="line"> <span class='comment'>* afterward) or rude (save open files without asking the user</span></td></tr>
+<tr class="codeline" data-linenumber="710"><td class="num" id="LN710">710</td><td class="line"> <span class='comment'>* for confirmation).</span></td></tr>
+<tr class="codeline" data-linenumber="711"><td class="num" id="LN711">711</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="712"><td class="num" id="LN712">712</td><td class="line"> <span class='comment'>* 2. Request interaction and then emit ::quit_requested. This</span></td></tr>
+<tr class="codeline" data-linenumber="713"><td class="num" id="LN713">713</td><td class="line"> <span class='comment'>* perhaps isn't quite correct for the SmInteractStyleErrors</span></td></tr>
+<tr class="codeline" data-linenumber="714"><td class="num" id="LN714">714</td><td class="line"> <span class='comment'>* case, but we don't care.</span></td></tr>
+<tr class="codeline" data-linenumber="715"><td class="num" id="LN715">715</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="716"><td class="num" id="LN716">716</td><td class="line"> <span class='comment'>* 3. Emit ::save_state. The SmSaveBoth SaveYourselfs in these</span></td></tr>
+<tr class="codeline" data-linenumber="717"><td class="num" id="LN717">717</td><td class="line"> <span class='comment'>* rows essentially get demoted to SmSaveLocal, because their</span></td></tr>
+<tr class="codeline" data-linenumber="718"><td class="num" id="LN718">718</td><td class="line"> <span class='comment'>* Global halves correspond to "do nothing".</span></td></tr>
+<tr class="codeline" data-linenumber="719"><td class="num" id="LN719">719</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="720"><td class="num" id="LN720">720</td><td class="line"> <span class='comment'>* 4. Request interaction, emit ::quit_requested, and then emit</span></td></tr>
+<tr class="codeline" data-linenumber="721"><td class="num" id="LN721">721</td><td class="line"> <span class='comment'>* ::save_state after interacting. This is the SmSaveBoth</span></td></tr>
+<tr class="codeline" data-linenumber="722"><td class="num" id="LN722">722</td><td class="line"> <span class='comment'>* equivalent of #2, but we also promote SmSaveLocal shutdown</span></td></tr>
+<tr class="codeline" data-linenumber="723"><td class="num" id="LN723">723</td><td class="line"> <span class='comment'>* SaveYourselfs to SmSaveBoth here, because we want to give</span></td></tr>
+<tr class="codeline" data-linenumber="724"><td class="num" id="LN724">724</td><td class="line"> <span class='comment'>* the user a chance to save open files before quitting.</span></td></tr>
+<tr class="codeline" data-linenumber="725"><td class="num" id="LN725">725</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="726"><td class="num" id="LN726">726</td><td class="line"> <span class='comment'>* (* It would be nice if we could do something useful when the</span></td></tr>
+<tr class="codeline" data-linenumber="727"><td class="num" id="LN727">727</td><td class="line"> <span class='comment'>* session manager sends a SaveYourself with shutdown True and</span></td></tr>
+<tr class="codeline" data-linenumber="728"><td class="num" id="LN728">728</td><td class="line"> <span class='comment'>* SmInteractStyleNone. But we can't, so we just pretend it didn't</span></td></tr>
+<tr class="codeline" data-linenumber="729"><td class="num" id="LN729">729</td><td class="line"> <span class='comment'>* even tell us it was shutting down. The docs for ::quit mention</span></td></tr>
+<tr class="codeline" data-linenumber="730"><td class="num" id="LN730">730</td><td class="line"> <span class='comment'>* that it might not always be preceded by ::quit_requested.)</span></td></tr>
+<tr class="codeline" data-linenumber="731"><td class="num" id="LN731">731</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="732"><td class="num" id="LN732">732</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="733"><td class="num" id="LN733">733</td><td class="line"> <span class='comment'>/* As an optimization, we don't actually request interaction and</span></td></tr>
+<tr class="codeline" data-linenumber="734"><td class="num" id="LN734">734</td><td class="line"> <span class='comment'>* emit ::quit_requested if the application isn't listening to the</span></td></tr>
+<tr class="codeline" data-linenumber="735"><td class="num" id="LN735">735</td><td class="line"> <span class='comment'>* signal.</span></td></tr>
+<tr class="codeline" data-linenumber="736"><td class="num" id="LN736">736</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="737"><td class="num" id="LN737">737</td><td class="line"> wants_quit_requested = g_signal_has_handler_pending (xsmp, g_signal_lookup (<span class='string_literal'>"quit_requested"</span>, <span class='macro'>EGG_TYPE_SM_CLIENT<span class='macro_popup'>(egg_sm_client_get_type ())</span></span>), 0, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="738"><td class="num" id="LN738">738</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="739"><td class="num" id="LN739">739</td><td class="line"> xsmp-&gt;need_save_state = (save_type != <span class='macro'>SmSaveGlobal<span class='macro_popup'>0</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="740"><td class="num" id="LN740">740</td><td class="line"> xsmp-&gt;need_quit_requested = (shutdown &amp;&amp; wants_quit_requested &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="741"><td class="num" id="LN741">741</td><td class="line"> interact_style != <span class='macro'>SmInteractStyleNone<span class='macro_popup'>0</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="742"><td class="num" id="LN742">742</td><td class="line"> xsmp-&gt;interact_errors = (interact_style == <span class='macro'>SmInteractStyleErrors<span class='macro_popup'>1</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="743"><td class="num" id="LN743">743</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="744"><td class="num" id="LN744">744</td><td class="line"> xsmp-&gt;shutting_down = shutdown;</td></tr>
+<tr class="codeline" data-linenumber="745"><td class="num" id="LN745">745</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="746"><td class="num" id="LN746">746</td><td class="line"> do_save_yourself (xsmp);</td></tr>
+<tr class="codeline" data-linenumber="747"><td class="num" id="LN747">747</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="748"><td class="num" id="LN748">748</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="749"><td class="num" id="LN749">749</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="750"><td class="num" id="LN750">750</td><td class="line">do_save_yourself (EggSMClientXSMP *xsmp)</td></tr>
+<tr class="codeline" data-linenumber="751"><td class="num" id="LN751">751</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="752"><td class="num" id="LN752">752</td><td class="line"> <span class='keyword'>if</span> (xsmp-&gt;state == XSMP_STATE_SHUTDOWN_CANCELLED)</td></tr>
+<tr class="codeline" data-linenumber="753"><td class="num" id="LN753">753</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="754"><td class="num" id="LN754">754</td><td class="line"> <span class='comment'>/* The SM cancelled a previous SaveYourself, but we haven't yet</span></td></tr>
+<tr class="codeline" data-linenumber="755"><td class="num" id="LN755">755</td><td class="line"> <span class='comment'>* had a chance to tell the application, so we can't start</span></td></tr>
+<tr class="codeline" data-linenumber="756"><td class="num" id="LN756">756</td><td class="line"> <span class='comment'>* processing this SaveYourself yet.</span></td></tr>
+<tr class="codeline" data-linenumber="757"><td class="num" id="LN757">757</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="758"><td class="num" id="LN758">758</td><td class="line"> xsmp-&gt;waiting_to_save_myself = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="759"><td class="num" id="LN759">759</td><td class="line"> update_pending_events (xsmp);</td></tr>
+<tr class="codeline" data-linenumber="760"><td class="num" id="LN760">760</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="761"><td class="num" id="LN761">761</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="762"><td class="num" id="LN762">762</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="763"><td class="num" id="LN763">763</td><td class="line"> <span class='keyword'>if</span> (xsmp-&gt;need_quit_requested)</td></tr>
+<tr class="codeline" data-linenumber="764"><td class="num" id="LN764">764</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="765"><td class="num" id="LN765">765</td><td class="line"> xsmp-&gt;state = XSMP_STATE_INTERACT_REQUEST;</td></tr>
+<tr class="codeline" data-linenumber="766"><td class="num" id="LN766">766</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="767"><td class="num" id="LN767">767</td><td class="line"> g_debug (<span class='string_literal'>"Sending InteractRequest(%s)"</span>,</td></tr>
+<tr class="codeline" data-linenumber="768"><td class="num" id="LN768">768</td><td class="line"> xsmp-&gt;interact_errors ? <span class='string_literal'>"Error"</span> : <span class='string_literal'>"Normal"</span>);</td></tr>
+<tr class="codeline" data-linenumber="769"><td class="num" id="LN769">769</td><td class="line"> SmcInteractRequest (xsmp-&gt;connection,</td></tr>
+<tr class="codeline" data-linenumber="770"><td class="num" id="LN770">770</td><td class="line"> xsmp-&gt;interact_errors ? <span class='macro'>SmDialogError<span class='macro_popup'>0</span></span> : <span class='macro'>SmDialogNormal<span class='macro_popup'>1</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="771"><td class="num" id="LN771">771</td><td class="line"> xsmp_interact,</td></tr>
+<tr class="codeline" data-linenumber="772"><td class="num" id="LN772">772</td><td class="line"> xsmp);</td></tr>
+<tr class="codeline" data-linenumber="773"><td class="num" id="LN773">773</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="774"><td class="num" id="LN774">774</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="775"><td class="num" id="LN775">775</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="776"><td class="num" id="LN776">776</td><td class="line"> <span class='keyword'>if</span> (xsmp-&gt;need_save_state)</td></tr>
+<tr class="codeline" data-linenumber="777"><td class="num" id="LN777">777</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="778"><td class="num" id="LN778">778</td><td class="line"> save_state (xsmp);</td></tr>
+<tr class="codeline" data-linenumber="779"><td class="num" id="LN779">779</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="780"><td class="num" id="LN780">780</td><td class="line"> <span class='comment'>/* Though unlikely, the client could have been disconnected</span></td></tr>
+<tr class="codeline" data-linenumber="781"><td class="num" id="LN781">781</td><td class="line"> <span class='comment'>* while the application was saving its state.</span></td></tr>
+<tr class="codeline" data-linenumber="782"><td class="num" id="LN782">782</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="783"><td class="num" id="LN783">783</td><td class="line"> <span class='keyword'>if</span> (!xsmp-&gt;connection)</td></tr>
+<tr class="codeline" data-linenumber="784"><td class="num" id="LN784">784</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="785"><td class="num" id="LN785">785</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="786"><td class="num" id="LN786">786</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="787"><td class="num" id="LN787">787</td><td class="line"> g_debug (<span class='string_literal'>"Sending SaveYourselfDone(True)"</span>);</td></tr>
+<tr class="codeline" data-linenumber="788"><td class="num" id="LN788">788</td><td class="line"> SmcSaveYourselfDone (xsmp-&gt;connection, <span class='macro'>True<span class='macro_popup'>1</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="789"><td class="num" id="LN789">789</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="790"><td class="num" id="LN790">790</td><td class="line"> <span class='comment'>/* The client state diagram in the XSMP spec says that after a</span></td></tr>
+<tr class="codeline" data-linenumber="791"><td class="num" id="LN791">791</td><td class="line"> <span class='comment'>* non-shutdown SaveYourself, we go directly back to "idle". But</span></td></tr>
+<tr class="codeline" data-linenumber="792"><td class="num" id="LN792">792</td><td class="line"> <span class='comment'>* everything else in both the XSMP spec and the libSM docs</span></td></tr>
+<tr class="codeline" data-linenumber="793"><td class="num" id="LN793">793</td><td class="line"> <span class='comment'>* disagrees.</span></td></tr>
+<tr class="codeline" data-linenumber="794"><td class="num" id="LN794">794</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="795"><td class="num" id="LN795">795</td><td class="line"> xsmp-&gt;state = XSMP_STATE_SAVE_YOURSELF_DONE;</td></tr>
+<tr class="codeline" data-linenumber="796"><td class="num" id="LN796">796</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="797"><td class="num" id="LN797">797</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="798"><td class="num" id="LN798">798</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="799"><td class="num" id="LN799">799</td><td class="line">save_state (EggSMClientXSMP *xsmp)</td></tr>
+<tr class="codeline" data-linenumber="800"><td class="num" id="LN800">800</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="801"><td class="num" id="LN801">801</td><td class="line"> GKeyFile *state_file;</td></tr>
+<tr class="codeline" data-linenumber="802"><td class="num" id="LN802">802</td><td class="line"> <span class='keyword'>char</span> *state_file_path, *data;</td></tr>
+<tr class="codeline" data-linenumber="803"><td class="num" id="LN803">803</td><td class="line"> EggDesktopFile *desktop_file;</td></tr>
+<tr class="codeline" data-linenumber="804"><td class="num" id="LN804">804</td><td class="line"> GPtrArray *restart, *discard;</td></tr>
+<tr class="codeline" data-linenumber="805"><td class="num" id="LN805">805</td><td class="line"> <span class='keyword'>int</span> offset, fd;</td></tr>
+<tr class="codeline" data-linenumber="806"><td class="num" id="LN806">806</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="807"><td class="num" id="LN807">807</td><td class="line"> <span class='comment'>/* We set xsmp-&gt;state before emitting save_state, but our caller is</span></td></tr>
+<tr class="codeline" data-linenumber="808"><td class="num" id="LN808">808</td><td class="line"> <span class='comment'>* responsible for setting it back afterward.</span></td></tr>
+<tr class="codeline" data-linenumber="809"><td class="num" id="LN809">809</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="810"><td class="num" id="LN810">810</td><td class="line"> xsmp-&gt;state = XSMP_STATE_SAVE_YOURSELF;</td></tr>
+<tr class="codeline" data-linenumber="811"><td class="num" id="LN811">811</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="812"><td class="num" id="LN812">812</td><td class="line"> state_file = egg_sm_client_save_state ((EggSMClient *)xsmp);</td></tr>
+<tr class="codeline" data-linenumber="813"><td class="num" id="LN813">813</td><td class="line"> <span class='keyword'>if</span> (!state_file)</td></tr>
+<tr class="codeline" data-linenumber="814"><td class="num" id="LN814">814</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="815"><td class="num" id="LN815">815</td><td class="line"> restart = generate_command (xsmp-&gt;restart_command, xsmp-&gt;client_id, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="816"><td class="num" id="LN816">816</td><td class="line"> set_properties (xsmp,</td></tr>
+<tr class="codeline" data-linenumber="817"><td class="num" id="LN817">817</td><td class="line"> ptrarray_prop (<span class='macro'>SmRestartCommand<span class='macro_popup'>"RestartCommand"</span></span>, restart),</td></tr>
+<tr class="codeline" data-linenumber="818"><td class="num" id="LN818">818</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="819"><td class="num" id="LN819">819</td><td class="line"> g_ptr_array_free (restart, <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="820"><td class="num" id="LN820">820</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="821"><td class="num" id="LN821">821</td><td class="line"> <span class='keyword'>if</span> (xsmp-&gt;set_discard_command)</td></tr>
+<tr class="codeline" data-linenumber="822"><td class="num" id="LN822">822</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="823"><td class="num" id="LN823">823</td><td class="line"> discard = generate_command (xsmp-&gt;discard_command, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="824"><td class="num" id="LN824">824</td><td class="line"> set_properties (xsmp,</td></tr>
+<tr class="codeline" data-linenumber="825"><td class="num" id="LN825">825</td><td class="line"> ptrarray_prop (<span class='macro'>SmDiscardCommand<span class='macro_popup'>"DiscardCommand"</span></span>, discard),</td></tr>
+<tr class="codeline" data-linenumber="826"><td class="num" id="LN826">826</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="827"><td class="num" id="LN827">827</td><td class="line"> g_ptr_array_free (discard, <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="828"><td class="num" id="LN828">828</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="829"><td class="num" id="LN829">829</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="830"><td class="num" id="LN830">830</td><td class="line"> delete_properties (xsmp, <span class='macro'>SmDiscardCommand<span class='macro_popup'>"DiscardCommand"</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="831"><td class="num" id="LN831">831</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="832"><td class="num" id="LN832">832</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="833"><td class="num" id="LN833">833</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="834"><td class="num" id="LN834">834</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="835"><td class="num" id="LN835">835</td><td class="line"> desktop_file = egg_get_desktop_file ();</td></tr>
+<tr class="codeline" data-linenumber="836"><td class="num" id="LN836">836</td><td class="line"> <span class='keyword'>if</span> (desktop_file)</td></tr>
+<tr class="codeline" data-linenumber="837"><td class="num" id="LN837">837</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="838"><td class="num" id="LN838">838</td><td class="line"> GKeyFile *merged_file;</td></tr>
+<tr class="codeline" data-linenumber="839"><td class="num" id="LN839">839</td><td class="line"> <span class='keyword'>char</span> *desktop_file_path;</td></tr>
+<tr class="codeline" data-linenumber="840"><td class="num" id="LN840">840</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="841"><td class="num" id="LN841">841</td><td class="line"> merged_file = g_key_file_new ();</td></tr>
+<tr class="codeline" data-linenumber="842"><td class="num" id="LN842">842</td><td class="line"> desktop_file_path =</td></tr>
+<tr class="codeline" data-linenumber="843"><td class="num" id="LN843">843</td><td class="line"> g_filename_from_uri (egg_desktop_file_get_source (desktop_file),</td></tr>
+<tr class="codeline" data-linenumber="844"><td class="num" id="LN844">844</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="845"><td class="num" id="LN845">845</td><td class="line"> <span class='keyword'>if</span> (desktop_file_path &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="846"><td class="num" id="LN846">846</td><td class="line"> g_key_file_load_from_file (merged_file, desktop_file_path,</td></tr>
+<tr class="codeline" data-linenumber="847"><td class="num" id="LN847">847</td><td class="line"> G_KEY_FILE_KEEP_COMMENTS |</td></tr>
+<tr class="codeline" data-linenumber="848"><td class="num" id="LN848">848</td><td class="line"> G_KEY_FILE_KEEP_TRANSLATIONS, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>))</td></tr>
+<tr class="codeline" data-linenumber="849"><td class="num" id="LN849">849</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="850"><td class="num" id="LN850">850</td><td class="line"> guint g, k, i;</td></tr>
+<tr class="codeline" data-linenumber="851"><td class="num" id="LN851">851</td><td class="line"> <span class='keyword'>char</span> **groups, **keys, *value, *exec;</td></tr>
+<tr class="codeline" data-linenumber="852"><td class="num" id="LN852">852</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="853"><td class="num" id="LN853">853</td><td class="line"> groups = g_key_file_get_groups (state_file, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="854"><td class="num" id="LN854">854</td><td class="line"> <span class='keyword'>for</span> (g = 0; groups[g]; g++)</td></tr>
+<tr class="codeline" data-linenumber="855"><td class="num" id="LN855">855</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="856"><td class="num" id="LN856">856</td><td class="line"> keys = g_key_file_get_keys (state_file, groups[g], <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="857"><td class="num" id="LN857">857</td><td class="line"> <span class='keyword'>for</span> (k = 0; keys[k]; k++)</td></tr>
+<tr class="codeline" data-linenumber="858"><td class="num" id="LN858">858</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="859"><td class="num" id="LN859">859</td><td class="line"> value = g_key_file_get_value (state_file, groups[g],</td></tr>
+<tr class="codeline" data-linenumber="860"><td class="num" id="LN860">860</td><td class="line"> keys[k], <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="861"><td class="num" id="LN861">861</td><td class="line"> <span class='keyword'>if</span> (value)</td></tr>
+<tr class="codeline" data-linenumber="862"><td class="num" id="LN862">862</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="863"><td class="num" id="LN863">863</td><td class="line"> g_key_file_set_value (merged_file, groups[g],</td></tr>
+<tr class="codeline" data-linenumber="864"><td class="num" id="LN864">864</td><td class="line"> keys[k], value);</td></tr>
+<tr class="codeline" data-linenumber="865"><td class="num" id="LN865">865</td><td class="line"> g_free (value);</td></tr>
+<tr class="codeline" data-linenumber="866"><td class="num" id="LN866">866</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="867"><td class="num" id="LN867">867</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="868"><td class="num" id="LN868">868</td><td class="line"> g_strfreev (keys);</td></tr>
+<tr class="codeline" data-linenumber="869"><td class="num" id="LN869">869</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="870"><td class="num" id="LN870">870</td><td class="line"> g_strfreev (groups);</td></tr>
+<tr class="codeline" data-linenumber="871"><td class="num" id="LN871">871</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="872"><td class="num" id="LN872">872</td><td class="line"> g_key_file_free (state_file);</td></tr>
+<tr class="codeline" data-linenumber="873"><td class="num" id="LN873">873</td><td class="line"> state_file = merged_file;</td></tr>
+<tr class="codeline" data-linenumber="874"><td class="num" id="LN874">874</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="875"><td class="num" id="LN875">875</td><td class="line"> <span class='comment'>/* Update Exec key using "--sm-client-state-file %k" */</span></td></tr>
+<tr class="codeline" data-linenumber="876"><td class="num" id="LN876">876</td><td class="line"> restart = generate_command (xsmp-&gt;restart_command,</td></tr>
+<tr class="codeline" data-linenumber="877"><td class="num" id="LN877">877</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='string_literal'>"%k"</span>);</td></tr>
+<tr class="codeline" data-linenumber="878"><td class="num" id="LN878">878</td><td class="line"> <span class='keyword'>for</span> (i = 0; i &lt; restart-&gt;len; i++)</td></tr>
+<tr class="codeline" data-linenumber="879"><td class="num" id="LN879">879</td><td class="line"> restart-&gt;pdata[i] = g_shell_quote (restart-&gt;pdata[i]);</td></tr>
+<tr class="codeline" data-linenumber="880"><td class="num" id="LN880">880</td><td class="line"> g_ptr_array_add (restart, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="881"><td class="num" id="LN881">881</td><td class="line"> exec = g_strjoinv (<span class='string_literal'>" "</span>, (<span class='keyword'>char</span> **)restart-&gt;pdata);</td></tr>
+<tr class="codeline" data-linenumber="882"><td class="num" id="LN882">882</td><td class="line"> g_strfreev ((<span class='keyword'>char</span> **)restart-&gt;pdata);</td></tr>
+<tr class="codeline" data-linenumber="883"><td class="num" id="LN883">883</td><td class="line"> g_ptr_array_free (restart, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="884"><td class="num" id="LN884">884</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="885"><td class="num" id="LN885">885</td><td class="line"> g_key_file_set_string (state_file, <span class='macro'>EGG_DESKTOP_FILE_GROUP<span class='macro_popup'>"Desktop Entry"</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="886"><td class="num" id="LN886">886</td><td class="line"> <span class='macro'>EGG_DESKTOP_FILE_KEY_EXEC<span class='macro_popup'>"Exec"</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="887"><td class="num" id="LN887">887</td><td class="line"> exec);</td></tr>
+<tr class="codeline" data-linenumber="888"><td class="num" id="LN888">888</td><td class="line"> g_free (exec);</td></tr>
+<tr class="codeline" data-linenumber="889"><td class="num" id="LN889">889</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="890"><td class="num" id="LN890">890</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="891"><td class="num" id="LN891">891</td><td class="line"> desktop_file = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="892"><td class="num" id="LN892">892</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="893"><td class="num" id="LN893">893</td><td class="line"> g_free (desktop_file_path);</td></tr>
+<tr class="codeline" data-linenumber="894"><td class="num" id="LN894">894</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="895"><td class="num" id="LN895">895</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="896"><td class="num" id="LN896">896</td><td class="line"> <span class='comment'>/* Now write state_file to disk. (We can't use mktemp(), because</span></td></tr>
+<tr class="codeline" data-linenumber="897"><td class="num" id="LN897">897</td><td class="line"> <span class='comment'>* that requires the filename to end with "XXXXXX", and we want</span></td></tr>
+<tr class="codeline" data-linenumber="898"><td class="num" id="LN898">898</td><td class="line"> <span class='comment'>* it to end with ".desktop".)</span></td></tr>
+<tr class="codeline" data-linenumber="899"><td class="num" id="LN899">899</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="900"><td class="num" id="LN900">900</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="901"><td class="num" id="LN901">901</td><td class="line"> data = g_key_file_to_data (state_file, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="902"><td class="num" id="LN902">902</td><td class="line"> g_key_file_free (state_file);</td></tr>
+<tr class="codeline" data-linenumber="903"><td class="num" id="LN903">903</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="904"><td class="num" id="LN904">904</td><td class="line"> offset = 0;</td></tr>
+<tr class="codeline" data-linenumber="905"><td class="num" id="LN905">905</td><td class="line"> <span class='keyword'>while</span> (1)</td></tr>
+<tr class="codeline" data-linenumber="906"><td class="num" id="LN906">906</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="907"><td class="num" id="LN907">907</td><td class="line"> state_file_path = g_strdup_printf (<span class='string_literal'>"%s%csession-state%c%s-%ld.%s"</span>,</td></tr>
+<tr class="codeline" data-linenumber="908"><td class="num" id="LN908">908</td><td class="line"> g_get_user_config_dir (),</td></tr>
+<tr class="codeline" data-linenumber="909"><td class="num" id="LN909">909</td><td class="line"> <span class='macro'>G_DIR_SEPARATOR<span class='macro_popup'>'/'</span></span>, <span class='macro'>G_DIR_SEPARATOR<span class='macro_popup'>'/'</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="910"><td class="num" id="LN910">910</td><td class="line"> g_get_prgname (),</td></tr>
+<tr class="codeline" data-linenumber="911"><td class="num" id="LN911">911</td><td class="line"> (<span class='keyword'>long</span>)time (<span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) + offset,</td></tr>
+<tr class="codeline" data-linenumber="912"><td class="num" id="LN912">912</td><td class="line"> desktop_file ? <span class='string_literal'>"desktop"</span> : <span class='string_literal'>"state"</span>);</td></tr>
+<tr class="codeline" data-linenumber="913"><td class="num" id="LN913">913</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="914"><td class="num" id="LN914">914</td><td class="line"> fd = open (state_file_path, <span class='macro'>O_WRONLY<span class='macro_popup'>01</span></span> | <span class='macro'>O_CREAT<span class='macro_popup'>0100</span></span> | <span class='macro'>O_EXCL<span class='macro_popup'>0200</span></span>, 0644);</td></tr>
+<tr class="codeline" data-linenumber="915"><td class="num" id="LN915">915</td><td class="line"> <span class='keyword'>if</span> (fd == -1)</td></tr>
+<tr class="codeline" data-linenumber="916"><td class="num" id="LN916">916</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="917"><td class="num" id="LN917">917</td><td class="line"> <span class='keyword'>if</span> (<span class='macro'>errno<span class='macro_popup'>(*__errno_location ())</span></span> == <span class='macro'>EEXIST<span class='macro_popup'>17</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="918"><td class="num" id="LN918">918</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="919"><td class="num" id="LN919">919</td><td class="line"> offset++;</td></tr>
+<tr class="codeline" data-linenumber="920"><td class="num" id="LN920">920</td><td class="line"> g_free (state_file_path);</td></tr>
+<tr class="codeline" data-linenumber="921"><td class="num" id="LN921">921</td><td class="line"> <span class='keyword'>continue</span>;</td></tr>
+<tr class="codeline" data-linenumber="922"><td class="num" id="LN922">922</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="923"><td class="num" id="LN923">923</td><td class="line"> <span class='keyword'>else</span> <span class='keyword'>if</span> (<span class='macro'>errno<span class='macro_popup'>(*__errno_location ())</span></span> == <span class='macro'>ENOTDIR<span class='macro_popup'>20</span></span> || <span class='macro'>errno<span class='macro_popup'>(*__errno_location ())</span></span> == <span class='macro'>ENOENT<span class='macro_popup'>2</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="924"><td class="num" id="LN924">924</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="925"><td class="num" id="LN925">925</td><td class="line"> <span class='keyword'>char</span> *sep = strrchr (state_file_path, <span class='macro'>G_DIR_SEPARATOR<span class='macro_popup'>'/'</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="926"><td class="num" id="LN926">926</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="927"><td class="num" id="LN927">927</td><td class="line"> *sep = '\0';</td></tr>
+<tr class="codeline" data-linenumber="928"><td class="num" id="LN928">928</td><td class="line"> <span class='keyword'>if</span> (g_mkdir_with_parents (state_file_path, 0755) != 0)</td></tr>
+<tr class="codeline" data-linenumber="929"><td class="num" id="LN929">929</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="930"><td class="num" id="LN930">930</td><td class="line"> g_warning (<span class='string_literal'>"Could not create directory '%s'"</span>,</td></tr>
+<tr class="codeline" data-linenumber="931"><td class="num" id="LN931">931</td><td class="line"> state_file_path);</td></tr>
+<tr class="codeline" data-linenumber="932"><td class="num" id="LN932">932</td><td class="line"> g_free (state_file_path);</td></tr>
+<tr class="codeline" data-linenumber="933"><td class="num" id="LN933">933</td><td class="line"> state_file_path = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="934"><td class="num" id="LN934">934</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="935"><td class="num" id="LN935">935</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="936"><td class="num" id="LN936">936</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="937"><td class="num" id="LN937">937</td><td class="line"> <span class='keyword'>continue</span>;</td></tr>
+<tr class="codeline" data-linenumber="938"><td class="num" id="LN938">938</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="939"><td class="num" id="LN939">939</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="940"><td class="num" id="LN940">940</td><td class="line"> g_warning (<span class='string_literal'>"Could not create file '%s': %s"</span>,</td></tr>
+<tr class="codeline" data-linenumber="941"><td class="num" id="LN941">941</td><td class="line"> state_file_path, g_strerror (<span class='macro'>errno<span class='macro_popup'>(*__errno_location ())</span></span>));</td></tr>
+<tr class="codeline" data-linenumber="942"><td class="num" id="LN942">942</td><td class="line"> g_free (state_file_path);</td></tr>
+<tr class="codeline" data-linenumber="943"><td class="num" id="LN943">943</td><td class="line"> state_file_path = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="944"><td class="num" id="LN944">944</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="945"><td class="num" id="LN945">945</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="946"><td class="num" id="LN946">946</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="947"><td class="num" id="LN947">947</td><td class="line"> close (fd);</td></tr>
+<tr class="codeline" data-linenumber="948"><td class="num" id="LN948">948</td><td class="line"> g_file_set_contents (state_file_path, data, -1, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="949"><td class="num" id="LN949">949</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="950"><td class="num" id="LN950">950</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="951"><td class="num" id="LN951">951</td><td class="line"> g_free (data);</td></tr>
+<tr class="codeline" data-linenumber="952"><td class="num" id="LN952">952</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="953"><td class="num" id="LN953">953</td><td class="line"> restart = generate_command (xsmp-&gt;restart_command, xsmp-&gt;client_id,</td></tr>
+<tr class="codeline" data-linenumber="954"><td class="num" id="LN954">954</td><td class="line"> state_file_path);</td></tr>
+<tr class="codeline" data-linenumber="955"><td class="num" id="LN955">955</td><td class="line"> set_properties (xsmp,</td></tr>
+<tr class="codeline" data-linenumber="956"><td class="num" id="LN956">956</td><td class="line"> ptrarray_prop (<span class='macro'>SmRestartCommand<span class='macro_popup'>"RestartCommand"</span></span>, restart),</td></tr>
+<tr class="codeline" data-linenumber="957"><td class="num" id="LN957">957</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="958"><td class="num" id="LN958">958</td><td class="line"> g_ptr_array_free (restart, <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="959"><td class="num" id="LN959">959</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="960"><td class="num" id="LN960">960</td><td class="line"> <span class='keyword'>if</span> (state_file_path)</td></tr>
+<tr class="codeline" data-linenumber="961"><td class="num" id="LN961">961</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="962"><td class="num" id="LN962">962</td><td class="line"> set_properties (xsmp,</td></tr>
+<tr class="codeline" data-linenumber="963"><td class="num" id="LN963">963</td><td class="line"> array_prop (<span class='macro'>SmDiscardCommand<span class='macro_popup'>"DiscardCommand"</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="964"><td class="num" id="LN964">964</td><td class="line"> <span class='string_literal'>"/bin/rm"</span>, <span class='string_literal'>"-rf"</span>, state_file_path,</td></tr>
+<tr class="codeline" data-linenumber="965"><td class="num" id="LN965">965</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>),</td></tr>
+<tr class="codeline" data-linenumber="966"><td class="num" id="LN966">966</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="967"><td class="num" id="LN967">967</td><td class="line"> g_free (state_file_path);</td></tr>
+<tr class="codeline" data-linenumber="968"><td class="num" id="LN968">968</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="969"><td class="num" id="LN969">969</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="970"><td class="num" id="LN970">970</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="971"><td class="num" id="LN971">971</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="972"><td class="num" id="LN972">972</td><td class="line">xsmp_interact (SmcConn smc_conn,</td></tr>
+<tr class="codeline" data-linenumber="973"><td class="num" id="LN973">973</td><td class="line"> SmPointer client_data)</td></tr>
+<tr class="codeline" data-linenumber="974"><td class="num" id="LN974">974</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="975"><td class="num" id="LN975">975</td><td class="line"> EggSMClientXSMP *xsmp = client_data;</td></tr>
+<tr class="codeline" data-linenumber="976"><td class="num" id="LN976">976</td><td class="line"> EggSMClient *client = client_data;</td></tr>
+<tr class="codeline" data-linenumber="977"><td class="num" id="LN977">977</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="978"><td class="num" id="LN978">978</td><td class="line"> g_debug (<span class='string_literal'>"Received Interact message in state %s"</span>,</td></tr>
+<tr class="codeline" data-linenumber="979"><td class="num" id="LN979">979</td><td class="line"> <span class='macro'>EGG_SM_CLIENT_XSMP_STATE (xsmp)<span class='macro_popup'>(state_names[(xsmp)-&gt;state])</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="980"><td class="num" id="LN980">980</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="981"><td class="num" id="LN981">981</td><td class="line"> <span class='keyword'>if</span> (xsmp-&gt;state != XSMP_STATE_INTERACT_REQUEST)</td></tr>
+<tr class="codeline" data-linenumber="982"><td class="num" id="LN982">982</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="983"><td class="num" id="LN983">983</td><td class="line"> fix_broken_state (xsmp, <span class='string_literal'>"Interact"</span>, <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>, <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="984"><td class="num" id="LN984">984</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="985"><td class="num" id="LN985">985</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="986"><td class="num" id="LN986">986</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="987"><td class="num" id="LN987">987</td><td class="line"> xsmp-&gt;state = XSMP_STATE_INTERACT;</td></tr>
+<tr class="codeline" data-linenumber="988"><td class="num" id="LN988">988</td><td class="line"> egg_sm_client_quit_requested (client);</td></tr>
+<tr class="codeline" data-linenumber="989"><td class="num" id="LN989">989</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="990"><td class="num" id="LN990">990</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="991"><td class="num" id="LN991">991</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="992"><td class="num" id="LN992">992</td><td class="line">xsmp_die (SmcConn smc_conn,</td></tr>
+<tr class="codeline" data-linenumber="993"><td class="num" id="LN993">993</td><td class="line"> SmPointer client_data)</td></tr>
+<tr class="codeline" data-linenumber="994"><td class="num" id="LN994">994</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="995"><td class="num" id="LN995">995</td><td class="line"> EggSMClientXSMP *xsmp = client_data;</td></tr>
+<tr class="codeline" data-linenumber="996"><td class="num" id="LN996">996</td><td class="line"> EggSMClient *client = client_data;</td></tr>
+<tr class="codeline" data-linenumber="997"><td class="num" id="LN997">997</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="998"><td class="num" id="LN998">998</td><td class="line"> g_debug (<span class='string_literal'>"Received Die message in state %s"</span>,</td></tr>
+<tr class="codeline" data-linenumber="999"><td class="num" id="LN999">999</td><td class="line"> <span class='macro'>EGG_SM_CLIENT_XSMP_STATE (xsmp)<span class='macro_popup'>(state_names[(xsmp)-&gt;state])</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1000"><td class="num" id="LN1000">1000</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1001"><td class="num" id="LN1001">1001</td><td class="line"> sm_client_xsmp_disconnect (xsmp);</td></tr>
+<tr class="codeline" data-linenumber="1002"><td class="num" id="LN1002">1002</td><td class="line"> egg_sm_client_quit (client);</td></tr>
+<tr class="codeline" data-linenumber="1003"><td class="num" id="LN1003">1003</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1004"><td class="num" id="LN1004">1004</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1005"><td class="num" id="LN1005">1005</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1006"><td class="num" id="LN1006">1006</td><td class="line">xsmp_save_complete (SmcConn smc_conn,</td></tr>
+<tr class="codeline" data-linenumber="1007"><td class="num" id="LN1007">1007</td><td class="line"> SmPointer client_data)</td></tr>
+<tr class="codeline" data-linenumber="1008"><td class="num" id="LN1008">1008</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1009"><td class="num" id="LN1009">1009</td><td class="line"> EggSMClientXSMP *xsmp = client_data;</td></tr>
+<tr class="codeline" data-linenumber="1010"><td class="num" id="LN1010">1010</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1011"><td class="num" id="LN1011">1011</td><td class="line"> g_debug (<span class='string_literal'>"Received SaveComplete message in state %s"</span>,</td></tr>
+<tr class="codeline" data-linenumber="1012"><td class="num" id="LN1012">1012</td><td class="line"> <span class='macro'>EGG_SM_CLIENT_XSMP_STATE (xsmp)<span class='macro_popup'>(state_names[(xsmp)-&gt;state])</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1013"><td class="num" id="LN1013">1013</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1014"><td class="num" id="LN1014">1014</td><td class="line"> <span class='keyword'>if</span> (xsmp-&gt;state == XSMP_STATE_SAVE_YOURSELF_DONE)</td></tr>
+<tr class="codeline" data-linenumber="1015"><td class="num" id="LN1015">1015</td><td class="line"> xsmp-&gt;state = XSMP_STATE_IDLE;</td></tr>
+<tr class="codeline" data-linenumber="1016"><td class="num" id="LN1016">1016</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="1017"><td class="num" id="LN1017">1017</td><td class="line"> fix_broken_state (xsmp, <span class='string_literal'>"SaveComplete"</span>, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1018"><td class="num" id="LN1018">1018</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1019"><td class="num" id="LN1019">1019</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1020"><td class="num" id="LN1020">1020</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1021"><td class="num" id="LN1021">1021</td><td class="line">xsmp_shutdown_cancelled (SmcConn smc_conn,</td></tr>
+<tr class="codeline" data-linenumber="1022"><td class="num" id="LN1022">1022</td><td class="line"> SmPointer client_data)</td></tr>
+<tr class="codeline" data-linenumber="1023"><td class="num" id="LN1023">1023</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1024"><td class="num" id="LN1024">1024</td><td class="line"> EggSMClientXSMP *xsmp = client_data;</td></tr>
+<tr class="codeline" data-linenumber="1025"><td class="num" id="LN1025">1025</td><td class="line"> EggSMClient *client = client_data;</td></tr>
+<tr class="codeline" data-linenumber="1026"><td class="num" id="LN1026">1026</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1027"><td class="num" id="LN1027">1027</td><td class="line"> g_debug (<span class='string_literal'>"Received ShutdownCancelled message in state %s"</span>,</td></tr>
+<tr class="codeline" data-linenumber="1028"><td class="num" id="LN1028">1028</td><td class="line"> <span class='macro'>EGG_SM_CLIENT_XSMP_STATE (xsmp)<span class='macro_popup'>(state_names[(xsmp)-&gt;state])</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1029"><td class="num" id="LN1029">1029</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1030"><td class="num" id="LN1030">1030</td><td class="line"> xsmp-&gt;shutting_down = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1031"><td class="num" id="LN1031">1031</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1032"><td class="num" id="LN1032">1032</td><td class="line"> <span class='keyword'>if</span> (xsmp-&gt;state == XSMP_STATE_SAVE_YOURSELF_DONE)</td></tr>
+<tr class="codeline" data-linenumber="1033"><td class="num" id="LN1033">1033</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="1034"><td class="num" id="LN1034">1034</td><td class="line"> <span class='comment'>/* We've finished interacting and now the SM has agreed to</span></td></tr>
+<tr class="codeline" data-linenumber="1035"><td class="num" id="LN1035">1035</td><td class="line"> <span class='comment'>* cancel the shutdown.</span></td></tr>
+<tr class="codeline" data-linenumber="1036"><td class="num" id="LN1036">1036</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="1037"><td class="num" id="LN1037">1037</td><td class="line"> xsmp-&gt;state = XSMP_STATE_IDLE;</td></tr>
+<tr class="codeline" data-linenumber="1038"><td class="num" id="LN1038">1038</td><td class="line"> egg_sm_client_quit_cancelled (client);</td></tr>
+<tr class="codeline" data-linenumber="1039"><td class="num" id="LN1039">1039</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1040"><td class="num" id="LN1040">1040</td><td class="line"> <span class='keyword'>else</span> <span class='keyword'>if</span> (xsmp-&gt;state == XSMP_STATE_SHUTDOWN_CANCELLED)</td></tr>
+<tr class="codeline" data-linenumber="1041"><td class="num" id="LN1041">1041</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="1042"><td class="num" id="LN1042">1042</td><td class="line"> <span class='comment'>/* Hm... ok, so we got a shutdown SaveYourself, which got</span></td></tr>
+<tr class="codeline" data-linenumber="1043"><td class="num" id="LN1043">1043</td><td class="line"> <span class='comment'>* cancelled, but the application was still interacting, so we</span></td></tr>
+<tr class="codeline" data-linenumber="1044"><td class="num" id="LN1044">1044</td><td class="line"> <span class='comment'>* didn't tell it yet, and then *another* SaveYourself arrived,</span></td></tr>
+<tr class="codeline" data-linenumber="1045"><td class="num" id="LN1045">1045</td><td class="line"> <span class='comment'>* which we must still be waiting to tell the app about, except</span></td></tr>
+<tr class="codeline" data-linenumber="1046"><td class="num" id="LN1046">1046</td><td class="line"> <span class='comment'>* that now that SaveYourself has been cancelled too! Dizzy yet?</span></td></tr>
+<tr class="codeline" data-linenumber="1047"><td class="num" id="LN1047">1047</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="1048"><td class="num" id="LN1048">1048</td><td class="line"> xsmp-&gt;waiting_to_save_myself = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1049"><td class="num" id="LN1049">1049</td><td class="line"> update_pending_events (xsmp);</td></tr>
+<tr class="codeline" data-linenumber="1050"><td class="num" id="LN1050">1050</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1051"><td class="num" id="LN1051">1051</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="1052"><td class="num" id="LN1052">1052</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="1053"><td class="num" id="LN1053">1053</td><td class="line"> g_debug (<span class='string_literal'>"Sending SaveYourselfDone(False)"</span>);</td></tr>
+<tr class="codeline" data-linenumber="1054"><td class="num" id="LN1054">1054</td><td class="line"> SmcSaveYourselfDone (xsmp-&gt;connection, <span class='macro'>False<span class='macro_popup'>0</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1055"><td class="num" id="LN1055">1055</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1056"><td class="num" id="LN1056">1056</td><td class="line"> <span class='keyword'>if</span> (xsmp-&gt;state == XSMP_STATE_INTERACT)</td></tr>
+<tr class="codeline" data-linenumber="1057"><td class="num" id="LN1057">1057</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="1058"><td class="num" id="LN1058">1058</td><td class="line"> <span class='comment'>/* The application is currently interacting, so we can't</span></td></tr>
+<tr class="codeline" data-linenumber="1059"><td class="num" id="LN1059">1059</td><td class="line"> <span class='comment'>* tell it about the cancellation yet; we will wait until</span></td></tr>
+<tr class="codeline" data-linenumber="1060"><td class="num" id="LN1060">1060</td><td class="line"> <span class='comment'>* after it calls egg_sm_client_will_quit().</span></td></tr>
+<tr class="codeline" data-linenumber="1061"><td class="num" id="LN1061">1061</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="1062"><td class="num" id="LN1062">1062</td><td class="line"> xsmp-&gt;state = XSMP_STATE_SHUTDOWN_CANCELLED;</td></tr>
+<tr class="codeline" data-linenumber="1063"><td class="num" id="LN1063">1063</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1064"><td class="num" id="LN1064">1064</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="1065"><td class="num" id="LN1065">1065</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="1066"><td class="num" id="LN1066">1066</td><td class="line"> <span class='comment'>/* The shutdown was cancelled before the application got a</span></td></tr>
+<tr class="codeline" data-linenumber="1067"><td class="num" id="LN1067">1067</td><td class="line"> <span class='comment'>* chance to interact.</span></td></tr>
+<tr class="codeline" data-linenumber="1068"><td class="num" id="LN1068">1068</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="1069"><td class="num" id="LN1069">1069</td><td class="line"> xsmp-&gt;state = XSMP_STATE_IDLE;</td></tr>
+<tr class="codeline" data-linenumber="1070"><td class="num" id="LN1070">1070</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1071"><td class="num" id="LN1071">1071</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1072"><td class="num" id="LN1072">1072</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1073"><td class="num" id="LN1073">1073</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1074"><td class="num" id="LN1074">1074</td><td class="line"><span class='comment'>/* Utilities */</span></td></tr>
+<tr class="codeline" data-linenumber="1075"><td class="num" id="LN1075">1075</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1076"><td class="num" id="LN1076">1076</td><td class="line"><span class='comment'>/* Create a restart/clone/Exec command based on @restart_command.</span></td></tr>
+<tr class="codeline" data-linenumber="1077"><td class="num" id="LN1077">1077</td><td class="line"> <span class='comment'>* If @client_id is non-%NULL, add "--sm-client-id @client_id".</span></td></tr>
+<tr class="codeline" data-linenumber="1078"><td class="num" id="LN1078">1078</td><td class="line"> <span class='comment'>* If @state_file is non-%NULL, add "--sm-client-state-file @state_file".</span></td></tr>
+<tr class="codeline" data-linenumber="1079"><td class="num" id="LN1079">1079</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="1080"><td class="num" id="LN1080">1080</td><td class="line"> <span class='comment'>* None of the input strings are g_strdup()ed; the caller must keep</span></td></tr>
+<tr class="codeline" data-linenumber="1081"><td class="num" id="LN1081">1081</td><td class="line"> <span class='comment'>* them around until it is done with the returned GPtrArray, and must</span></td></tr>
+<tr class="codeline" data-linenumber="1082"><td class="num" id="LN1082">1082</td><td class="line"> <span class='comment'>* then free the array, but not its contents.</span></td></tr>
+<tr class="codeline" data-linenumber="1083"><td class="num" id="LN1083">1083</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="1084"><td class="num" id="LN1084">1084</td><td class="line"><span class='keyword'>static</span> GPtrArray *</td></tr>
+<tr class="codeline" data-linenumber="1085"><td class="num" id="LN1085">1085</td><td class="line">generate_command (<span class='keyword'>char</span> **restart_command, <span class='keyword'>const</span> <span class='keyword'>char</span> *client_id,</td></tr>
+<tr class="codeline" data-linenumber="1086"><td class="num" id="LN1086">1086</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *state_file)</td></tr>
+<tr class="codeline" data-linenumber="1087"><td class="num" id="LN1087">1087</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1088"><td class="num" id="LN1088">1088</td><td class="line"> GPtrArray *cmd;</td></tr>
+<tr class="codeline" data-linenumber="1089"><td class="num" id="LN1089">1089</td><td class="line"> <span class='keyword'>int</span> i;</td></tr>
+<tr class="codeline" data-linenumber="1090"><td class="num" id="LN1090">1090</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1091"><td class="num" id="LN1091">1091</td><td class="line"> cmd = g_ptr_array_new ();</td></tr>
+<tr class="codeline" data-linenumber="1092"><td class="num" id="LN1092">1092</td><td class="line"> g_ptr_array_add (cmd, restart_command[0]);</td></tr>
+<tr class="codeline" data-linenumber="1093"><td class="num" id="LN1093">1093</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1094"><td class="num" id="LN1094">1094</td><td class="line"> <span class='keyword'>if</span> (client_id)</td></tr>
+<tr class="codeline" data-linenumber="1095"><td class="num" id="LN1095">1095</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="1096"><td class="num" id="LN1096">1096</td><td class="line"> g_ptr_array_add (cmd, (<span class='keyword'>char</span> *)<span class='string_literal'>"--sm-client-id"</span>);</td></tr>
+<tr class="codeline" data-linenumber="1097"><td class="num" id="LN1097">1097</td><td class="line"> g_ptr_array_add (cmd, (<span class='keyword'>char</span> *)client_id);</td></tr>
+<tr class="codeline" data-linenumber="1098"><td class="num" id="LN1098">1098</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1099"><td class="num" id="LN1099">1099</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1100"><td class="num" id="LN1100">1100</td><td class="line"> <span class='keyword'>if</span> (state_file)</td></tr>
+<tr class="codeline" data-linenumber="1101"><td class="num" id="LN1101">1101</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="1102"><td class="num" id="LN1102">1102</td><td class="line"> g_ptr_array_add (cmd, (<span class='keyword'>char</span> *)<span class='string_literal'>"--sm-client-state-file"</span>);</td></tr>
+<tr class="codeline" data-linenumber="1103"><td class="num" id="LN1103">1103</td><td class="line"> g_ptr_array_add (cmd, (<span class='keyword'>char</span> *)state_file);</td></tr>
+<tr class="codeline" data-linenumber="1104"><td class="num" id="LN1104">1104</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1105"><td class="num" id="LN1105">1105</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1106"><td class="num" id="LN1106">1106</td><td class="line"> <span class='keyword'>for</span> (i = 1; restart_command[i]; i++)</td></tr>
+<tr class="codeline" data-linenumber="1107"><td class="num" id="LN1107">1107</td><td class="line"> g_ptr_array_add (cmd, restart_command[i]);</td></tr>
+<tr class="codeline" data-linenumber="1108"><td class="num" id="LN1108">1108</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1109"><td class="num" id="LN1109">1109</td><td class="line"> <span class='keyword'>return</span> cmd;</td></tr>
+<tr class="codeline" data-linenumber="1110"><td class="num" id="LN1110">1110</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1111"><td class="num" id="LN1111">1111</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1112"><td class="num" id="LN1112">1112</td><td class="line"><span class='comment'>/* Takes a NULL-terminated list of SmProp * values, created by</span></td></tr>
+<tr class="codeline" data-linenumber="1113"><td class="num" id="LN1113">1113</td><td class="line"> <span class='comment'>* array_prop, ptrarray_prop, string_prop, card8_prop, sets them, and</span></td></tr>
+<tr class="codeline" data-linenumber="1114"><td class="num" id="LN1114">1114</td><td class="line"> <span class='comment'>* frees them.</span></td></tr>
+<tr class="codeline" data-linenumber="1115"><td class="num" id="LN1115">1115</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="1116"><td class="num" id="LN1116">1116</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1117"><td class="num" id="LN1117">1117</td><td class="line">set_properties (EggSMClientXSMP *xsmp, ...)</td></tr>
+<tr class="codeline" data-linenumber="1118"><td class="num" id="LN1118">1118</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1119"><td class="num" id="LN1119">1119</td><td class="line"> GPtrArray *props;</td></tr>
+<tr class="codeline" data-linenumber="1120"><td class="num" id="LN1120">1120</td><td class="line"> SmProp *prop;</td></tr>
+<tr class="codeline" data-linenumber="1121"><td class="num" id="LN1121">1121</td><td class="line"> va_list ap;</td></tr>
+<tr class="codeline" data-linenumber="1122"><td class="num" id="LN1122">1122</td><td class="line"> guint i;</td></tr>
+<tr class="codeline" data-linenumber="1123"><td class="num" id="LN1123">1123</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1124"><td class="num" id="LN1124">1124</td><td class="line"> props = g_ptr_array_new ();</td></tr>
+<tr class="codeline" data-linenumber="1125"><td class="num" id="LN1125">1125</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1126"><td class="num" id="LN1126">1126</td><td class="line"> <span class='macro'>va_start (ap, xsmp)<span class='macro_popup'>__builtin_va_start(ap, xsmp)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1127"><td class="num" id="LN1127">1127</td><td class="line"> <span class='keyword'>while</span> ((prop = <span class='macro'>va_arg (ap, SmProp *)<span class='macro_popup'>__builtin_va_arg(ap, SmProp *)</span></span>))</td></tr>
+<tr class="codeline" data-linenumber="1128"><td class="num" id="LN1128">1128</td><td class="line"> g_ptr_array_add (props, prop);</td></tr>
+<tr class="codeline" data-linenumber="1129"><td class="num" id="LN1129">1129</td><td class="line"> <span class='macro'>va_end (ap)<span class='macro_popup'>__builtin_va_end(ap)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1130"><td class="num" id="LN1130">1130</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1131"><td class="num" id="LN1131">1131</td><td class="line"> <span class='keyword'>if</span> (xsmp-&gt;connection)</td></tr>
+<tr class="codeline" data-linenumber="1132"><td class="num" id="LN1132">1132</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="1133"><td class="num" id="LN1133">1133</td><td class="line"> SmcSetProperties (xsmp-&gt;connection, props-&gt;len,</td></tr>
+<tr class="codeline" data-linenumber="1134"><td class="num" id="LN1134">1134</td><td class="line"> (SmProp **)props-&gt;pdata);</td></tr>
+<tr class="codeline" data-linenumber="1135"><td class="num" id="LN1135">1135</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1136"><td class="num" id="LN1136">1136</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1137"><td class="num" id="LN1137">1137</td><td class="line"> <span class='keyword'>for</span> (i = 0; i &lt; props-&gt;len; i++)</td></tr>
+<tr class="codeline" data-linenumber="1138"><td class="num" id="LN1138">1138</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="1139"><td class="num" id="LN1139">1139</td><td class="line"> prop = props-&gt;pdata[i];</td></tr>
+<tr class="codeline" data-linenumber="1140"><td class="num" id="LN1140">1140</td><td class="line"> g_free (prop-&gt;vals);</td></tr>
+<tr class="codeline" data-linenumber="1141"><td class="num" id="LN1141">1141</td><td class="line"> g_free (prop);</td></tr>
+<tr class="codeline" data-linenumber="1142"><td class="num" id="LN1142">1142</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1143"><td class="num" id="LN1143">1143</td><td class="line"> g_ptr_array_free (props, <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1144"><td class="num" id="LN1144">1144</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1145"><td class="num" id="LN1145">1145</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1146"><td class="num" id="LN1146">1146</td><td class="line"><span class='comment'>/* Takes a NULL-terminated list of property names and deletes them. */</span></td></tr>
+<tr class="codeline" data-linenumber="1147"><td class="num" id="LN1147">1147</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1148"><td class="num" id="LN1148">1148</td><td class="line">delete_properties (EggSMClientXSMP *xsmp, ...)</td></tr>
+<tr class="codeline" data-linenumber="1149"><td class="num" id="LN1149">1149</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1150"><td class="num" id="LN1150">1150</td><td class="line"> GPtrArray *props;</td></tr>
+<tr class="codeline" data-linenumber="1151"><td class="num" id="LN1151">1151</td><td class="line"> <span class='keyword'>char</span> *prop;</td></tr>
+<tr class="codeline" data-linenumber="1152"><td class="num" id="LN1152">1152</td><td class="line"> va_list ap;</td></tr>
+<tr class="codeline" data-linenumber="1153"><td class="num" id="LN1153">1153</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1154"><td class="num" id="LN1154">1154</td><td class="line"> <span class='keyword'>if</span> (!xsmp-&gt;connection)</td></tr>
+<tr class="codeline" data-linenumber="1155"><td class="num" id="LN1155">1155</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="1156"><td class="num" id="LN1156">1156</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1157"><td class="num" id="LN1157">1157</td><td class="line"> props = g_ptr_array_new ();</td></tr>
+<tr class="codeline" data-linenumber="1158"><td class="num" id="LN1158">1158</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1159"><td class="num" id="LN1159">1159</td><td class="line"> <span class='macro'>va_start (ap, xsmp)<span class='macro_popup'>__builtin_va_start(ap, xsmp)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1160"><td class="num" id="LN1160">1160</td><td class="line"> <span class='keyword'>while</span> ((prop = <span class='macro'>va_arg (ap, <span class='keyword'>char</span> *)<span class='macro_popup'>__builtin_va_arg(ap, char *)</span></span>))</td></tr>
+<tr class="codeline" data-linenumber="1161"><td class="num" id="LN1161">1161</td><td class="line"> g_ptr_array_add (props, prop);</td></tr>
+<tr class="codeline" data-linenumber="1162"><td class="num" id="LN1162">1162</td><td class="line"> <span class='macro'>va_end (ap)<span class='macro_popup'>__builtin_va_end(ap)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1163"><td class="num" id="LN1163">1163</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1164"><td class="num" id="LN1164">1164</td><td class="line"> SmcDeleteProperties (xsmp-&gt;connection, props-&gt;len,</td></tr>
+<tr class="codeline" data-linenumber="1165"><td class="num" id="LN1165">1165</td><td class="line"> (<span class='keyword'>char</span> **)props-&gt;pdata);</td></tr>
+<tr class="codeline" data-linenumber="1166"><td class="num" id="LN1166">1166</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1167"><td class="num" id="LN1167">1167</td><td class="line"> g_ptr_array_free (props, <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1168"><td class="num" id="LN1168">1168</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1169"><td class="num" id="LN1169">1169</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1170"><td class="num" id="LN1170">1170</td><td class="line"><span class='comment'>/* Takes an array of strings and creates a LISTofARRAY8 property. The</span></td></tr>
+<tr class="codeline" data-linenumber="1171"><td class="num" id="LN1171">1171</td><td class="line"> <span class='comment'>* strings are neither dupped nor freed; they need to remain valid</span></td></tr>
+<tr class="codeline" data-linenumber="1172"><td class="num" id="LN1172">1172</td><td class="line"> <span class='comment'>* until you're done with the SmProp.</span></td></tr>
+<tr class="codeline" data-linenumber="1173"><td class="num" id="LN1173">1173</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="1174"><td class="num" id="LN1174">1174</td><td class="line"><span class='keyword'>static</span> SmProp *</td></tr>
+<tr class="codeline" data-linenumber="1175"><td class="num" id="LN1175">1175</td><td class="line">array_prop (<span class='keyword'>const</span> <span class='keyword'>char</span> *name, ...)</td></tr>
+<tr class="codeline" data-linenumber="1176"><td class="num" id="LN1176">1176</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1177"><td class="num" id="LN1177">1177</td><td class="line"> SmProp *prop;</td></tr>
+<tr class="codeline" data-linenumber="1178"><td class="num" id="LN1178">1178</td><td class="line"> SmPropValue pv;</td></tr>
+<tr class="codeline" data-linenumber="1179"><td class="num" id="LN1179">1179</td><td class="line"> GArray *vals;</td></tr>
+<tr class="codeline" data-linenumber="1180"><td class="num" id="LN1180">1180</td><td class="line"> <span class='keyword'>char</span> *value;</td></tr>
+<tr class="codeline" data-linenumber="1181"><td class="num" id="LN1181">1181</td><td class="line"> va_list ap;</td></tr>
+<tr class="codeline" data-linenumber="1182"><td class="num" id="LN1182">1182</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1183"><td class="num" id="LN1183">1183</td><td class="line"> prop = <span class='macro'>g_new (SmProp, 1)<span class='macro_popup'>(SmProp *) (__extension__ ({ gsize __n = (gsize) (1); gsize __s<br> = sizeof (SmProp); gpointer __p; if (__s == 1) __p = g_malloc<br> (__n); else if (__builtin_constant_p (__n) &amp;&amp; (__s ==<br> 0 || __n &lt;= (9223372036854775807L *2UL+1UL) / __s)) __p =<br> g_malloc (__n * __s); else __p = g_malloc_n (__n, __s); __p;<br> }))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1184"><td class="num" id="LN1184">1184</td><td class="line"> prop-&gt;name = (<span class='keyword'>char</span> *)name;</td></tr>
+<tr class="codeline" data-linenumber="1185"><td class="num" id="LN1185">1185</td><td class="line"> prop-&gt;type = (<span class='keyword'>char</span> *)<span class='macro'>SmLISTofARRAY8<span class='macro_popup'>"LISTofARRAY8"</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1186"><td class="num" id="LN1186">1186</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1187"><td class="num" id="LN1187">1187</td><td class="line"> vals = g_array_new (<span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>, <span class='keyword'>sizeof</span> (SmPropValue));</td></tr>
+<tr class="codeline" data-linenumber="1188"><td class="num" id="LN1188">1188</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1189"><td class="num" id="LN1189">1189</td><td class="line"> <span class='macro'>va_start (ap, name)<span class='macro_popup'>__builtin_va_start(ap, name)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1190"><td class="num" id="LN1190">1190</td><td class="line"> <span class='keyword'>while</span> ((value = <span class='macro'>va_arg (ap, <span class='keyword'>char</span> *)<span class='macro_popup'>__builtin_va_arg(ap, char *)</span></span>))</td></tr>
+<tr class="codeline" data-linenumber="1191"><td class="num" id="LN1191">1191</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="1192"><td class="num" id="LN1192">1192</td><td class="line"> pv.length = strlen (value);</td></tr>
+<tr class="codeline" data-linenumber="1193"><td class="num" id="LN1193">1193</td><td class="line"> pv.value = value;</td></tr>
+<tr class="codeline" data-linenumber="1194"><td class="num" id="LN1194">1194</td><td class="line"> <span class='macro'>g_array_append_val (vals, pv)<span class='macro_popup'>g_array_append_vals (vals, &amp;(pv), 1)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1195"><td class="num" id="LN1195">1195</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1196"><td class="num" id="LN1196">1196</td><td class="line"> <span class='macro'>va_end (ap)<span class='macro_popup'>__builtin_va_end(ap)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1197"><td class="num" id="LN1197">1197</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1198"><td class="num" id="LN1198">1198</td><td class="line"> prop-&gt;num_vals = vals-&gt;len;</td></tr>
+<tr class="codeline" data-linenumber="1199"><td class="num" id="LN1199">1199</td><td class="line"> prop-&gt;vals = <span class="mrange"><span class="mrange">(SmPropValue *)vals-&gt;data</span></span>;</td></tr>
+<tr><td class="num"></td><td class="line"><div id="EndPath" class="msg msgEvent" style="margin-left:18ex; max-width:31em">Casting a non-structure type to a structure type and accessing a field can lead to memory access errors or data corruption</div></td></tr>
+<tr class="codeline" data-linenumber="1200"><td class="num" id="LN1200">1200</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1201"><td class="num" id="LN1201">1201</td><td class="line"> g_array_free (vals, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1202"><td class="num" id="LN1202">1202</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1203"><td class="num" id="LN1203">1203</td><td class="line"> <span class='keyword'>return</span> prop;</td></tr>
+<tr class="codeline" data-linenumber="1204"><td class="num" id="LN1204">1204</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1205"><td class="num" id="LN1205">1205</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1206"><td class="num" id="LN1206">1206</td><td class="line"><span class='comment'>/* Takes a GPtrArray of strings and creates a LISTofARRAY8 property.</span></td></tr>
+<tr class="codeline" data-linenumber="1207"><td class="num" id="LN1207">1207</td><td class="line"> <span class='comment'>* The array contents are neither dupped nor freed; they need to</span></td></tr>
+<tr class="codeline" data-linenumber="1208"><td class="num" id="LN1208">1208</td><td class="line"> <span class='comment'>* remain valid until you're done with the SmProp.</span></td></tr>
+<tr class="codeline" data-linenumber="1209"><td class="num" id="LN1209">1209</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="1210"><td class="num" id="LN1210">1210</td><td class="line"><span class='keyword'>static</span> SmProp *</td></tr>
+<tr class="codeline" data-linenumber="1211"><td class="num" id="LN1211">1211</td><td class="line">ptrarray_prop (<span class='keyword'>const</span> <span class='keyword'>char</span> *name, GPtrArray *values)</td></tr>
+<tr class="codeline" data-linenumber="1212"><td class="num" id="LN1212">1212</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1213"><td class="num" id="LN1213">1213</td><td class="line"> SmProp *prop;</td></tr>
+<tr class="codeline" data-linenumber="1214"><td class="num" id="LN1214">1214</td><td class="line"> SmPropValue pv;</td></tr>
+<tr class="codeline" data-linenumber="1215"><td class="num" id="LN1215">1215</td><td class="line"> GArray *vals;</td></tr>
+<tr class="codeline" data-linenumber="1216"><td class="num" id="LN1216">1216</td><td class="line"> guint i;</td></tr>
+<tr class="codeline" data-linenumber="1217"><td class="num" id="LN1217">1217</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1218"><td class="num" id="LN1218">1218</td><td class="line"> prop = <span class='macro'>g_new (SmProp, 1)<span class='macro_popup'>(SmProp *) (__extension__ ({ gsize __n = (gsize) (1); gsize __s<br> = sizeof (SmProp); gpointer __p; if (__s == 1) __p = g_malloc<br> (__n); else if (__builtin_constant_p (__n) &amp;&amp; (__s ==<br> 0 || __n &lt;= (9223372036854775807L *2UL+1UL) / __s)) __p =<br> g_malloc (__n * __s); else __p = g_malloc_n (__n, __s); __p;<br> }))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1219"><td class="num" id="LN1219">1219</td><td class="line"> prop-&gt;name = (<span class='keyword'>char</span> *)name;</td></tr>
+<tr class="codeline" data-linenumber="1220"><td class="num" id="LN1220">1220</td><td class="line"> prop-&gt;type = (<span class='keyword'>char</span> *)<span class='macro'>SmLISTofARRAY8<span class='macro_popup'>"LISTofARRAY8"</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1221"><td class="num" id="LN1221">1221</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1222"><td class="num" id="LN1222">1222</td><td class="line"> vals = g_array_new (<span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>, <span class='keyword'>sizeof</span> (SmPropValue));</td></tr>
+<tr class="codeline" data-linenumber="1223"><td class="num" id="LN1223">1223</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1224"><td class="num" id="LN1224">1224</td><td class="line"> <span class='keyword'>for</span> (i = 0; i &lt; values-&gt;len; i++)</td></tr>
+<tr class="codeline" data-linenumber="1225"><td class="num" id="LN1225">1225</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="1226"><td class="num" id="LN1226">1226</td><td class="line"> pv.length = strlen (values-&gt;pdata[i]);</td></tr>
+<tr class="codeline" data-linenumber="1227"><td class="num" id="LN1227">1227</td><td class="line"> pv.value = values-&gt;pdata[i];</td></tr>
+<tr class="codeline" data-linenumber="1228"><td class="num" id="LN1228">1228</td><td class="line"> <span class='macro'>g_array_append_val (vals, pv)<span class='macro_popup'>g_array_append_vals (vals, &amp;(pv), 1)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1229"><td class="num" id="LN1229">1229</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1230"><td class="num" id="LN1230">1230</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1231"><td class="num" id="LN1231">1231</td><td class="line"> prop-&gt;num_vals = vals-&gt;len;</td></tr>
+<tr class="codeline" data-linenumber="1232"><td class="num" id="LN1232">1232</td><td class="line"> prop-&gt;vals = (SmPropValue *)vals-&gt;data;</td></tr>
+<tr class="codeline" data-linenumber="1233"><td class="num" id="LN1233">1233</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1234"><td class="num" id="LN1234">1234</td><td class="line"> g_array_free (vals, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1235"><td class="num" id="LN1235">1235</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1236"><td class="num" id="LN1236">1236</td><td class="line"> <span class='keyword'>return</span> prop;</td></tr>
+<tr class="codeline" data-linenumber="1237"><td class="num" id="LN1237">1237</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1238"><td class="num" id="LN1238">1238</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1239"><td class="num" id="LN1239">1239</td><td class="line"><span class='comment'>/* Takes a string and creates an ARRAY8 property. The string is</span></td></tr>
+<tr class="codeline" data-linenumber="1240"><td class="num" id="LN1240">1240</td><td class="line"> <span class='comment'>* neither dupped nor freed; it needs to remain valid until you're</span></td></tr>
+<tr class="codeline" data-linenumber="1241"><td class="num" id="LN1241">1241</td><td class="line"> <span class='comment'>* done with the SmProp.</span></td></tr>
+<tr class="codeline" data-linenumber="1242"><td class="num" id="LN1242">1242</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="1243"><td class="num" id="LN1243">1243</td><td class="line"><span class='keyword'>static</span> SmProp *</td></tr>
+<tr class="codeline" data-linenumber="1244"><td class="num" id="LN1244">1244</td><td class="line">string_prop (<span class='keyword'>const</span> <span class='keyword'>char</span> *name, <span class='keyword'>const</span> <span class='keyword'>char</span> *value)</td></tr>
+<tr class="codeline" data-linenumber="1245"><td class="num" id="LN1245">1245</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1246"><td class="num" id="LN1246">1246</td><td class="line"> SmProp *prop;</td></tr>
+<tr class="codeline" data-linenumber="1247"><td class="num" id="LN1247">1247</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1248"><td class="num" id="LN1248">1248</td><td class="line"> prop = <span class='macro'>g_new (SmProp, 1)<span class='macro_popup'>(SmProp *) (__extension__ ({ gsize __n = (gsize) (1); gsize __s<br> = sizeof (SmProp); gpointer __p; if (__s == 1) __p = g_malloc<br> (__n); else if (__builtin_constant_p (__n) &amp;&amp; (__s ==<br> 0 || __n &lt;= (9223372036854775807L *2UL+1UL) / __s)) __p =<br> g_malloc (__n * __s); else __p = g_malloc_n (__n, __s); __p;<br> }))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1249"><td class="num" id="LN1249">1249</td><td class="line"> prop-&gt;name = (<span class='keyword'>char</span> *)name;</td></tr>
+<tr class="codeline" data-linenumber="1250"><td class="num" id="LN1250">1250</td><td class="line"> prop-&gt;type = (<span class='keyword'>char</span> *)<span class='macro'>SmARRAY8<span class='macro_popup'>"ARRAY8"</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1251"><td class="num" id="LN1251">1251</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1252"><td class="num" id="LN1252">1252</td><td class="line"> prop-&gt;num_vals = 1;</td></tr>
+<tr class="codeline" data-linenumber="1253"><td class="num" id="LN1253">1253</td><td class="line"> prop-&gt;vals = <span class='macro'>g_new (SmPropValue, 1)<span class='macro_popup'>(SmPropValue *) (__extension__ ({ gsize __n = (gsize) (1); gsize<br> __s = sizeof (SmPropValue); gpointer __p; if (__s == 1) __p =<br> g_malloc (__n); else if (__builtin_constant_p (__n) &amp;&amp;<br> (__s == 0 || __n &lt;= (9223372036854775807L *2UL+1UL) / __s<br>)) __p = g_malloc (__n * __s); else __p = g_malloc_n (__n, __s<br>); __p; }))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1254"><td class="num" id="LN1254">1254</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1255"><td class="num" id="LN1255">1255</td><td class="line"> prop-&gt;vals[0].length = strlen (value);</td></tr>
+<tr class="codeline" data-linenumber="1256"><td class="num" id="LN1256">1256</td><td class="line"> prop-&gt;vals[0].value = (<span class='keyword'>char</span> *)value;</td></tr>
+<tr class="codeline" data-linenumber="1257"><td class="num" id="LN1257">1257</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1258"><td class="num" id="LN1258">1258</td><td class="line"> <span class='keyword'>return</span> prop;</td></tr>
+<tr class="codeline" data-linenumber="1259"><td class="num" id="LN1259">1259</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1260"><td class="num" id="LN1260">1260</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1261"><td class="num" id="LN1261">1261</td><td class="line"><span class='comment'>/* Takes a char and creates a CARD8 property. */</span></td></tr>
+<tr class="codeline" data-linenumber="1262"><td class="num" id="LN1262">1262</td><td class="line"><span class='keyword'>static</span> SmProp *</td></tr>
+<tr class="codeline" data-linenumber="1263"><td class="num" id="LN1263">1263</td><td class="line">card8_prop (<span class='keyword'>const</span> <span class='keyword'>char</span> *name, <span class='keyword'>unsigned</span> <span class='keyword'>char</span> value)</td></tr>
+<tr class="codeline" data-linenumber="1264"><td class="num" id="LN1264">1264</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1265"><td class="num" id="LN1265">1265</td><td class="line"> SmProp *prop;</td></tr>
+<tr class="codeline" data-linenumber="1266"><td class="num" id="LN1266">1266</td><td class="line"> <span class='keyword'>char</span> *card8val;</td></tr>
+<tr class="codeline" data-linenumber="1267"><td class="num" id="LN1267">1267</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1268"><td class="num" id="LN1268">1268</td><td class="line"> <span class='comment'>/* To avoid having to allocate and free prop-&gt;vals[0], we cheat and</span></td></tr>
+<tr class="codeline" data-linenumber="1269"><td class="num" id="LN1269">1269</td><td class="line"> <span class='comment'>* make vals a 2-element-long array and then use the second element</span></td></tr>
+<tr class="codeline" data-linenumber="1270"><td class="num" id="LN1270">1270</td><td class="line"> <span class='comment'>* to store value.</span></td></tr>
+<tr class="codeline" data-linenumber="1271"><td class="num" id="LN1271">1271</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="1272"><td class="num" id="LN1272">1272</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1273"><td class="num" id="LN1273">1273</td><td class="line"> prop = <span class='macro'>g_new (SmProp, 1)<span class='macro_popup'>(SmProp *) (__extension__ ({ gsize __n = (gsize) (1); gsize __s<br> = sizeof (SmProp); gpointer __p; if (__s == 1) __p = g_malloc<br> (__n); else if (__builtin_constant_p (__n) &amp;&amp; (__s ==<br> 0 || __n &lt;= (9223372036854775807L *2UL+1UL) / __s)) __p =<br> g_malloc (__n * __s); else __p = g_malloc_n (__n, __s); __p;<br> }))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1274"><td class="num" id="LN1274">1274</td><td class="line"> prop-&gt;name = (<span class='keyword'>char</span> *)name;</td></tr>
+<tr class="codeline" data-linenumber="1275"><td class="num" id="LN1275">1275</td><td class="line"> prop-&gt;type = (<span class='keyword'>char</span> *)<span class='macro'>SmCARD8<span class='macro_popup'>"CARD8"</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1276"><td class="num" id="LN1276">1276</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1277"><td class="num" id="LN1277">1277</td><td class="line"> prop-&gt;num_vals = 1;</td></tr>
+<tr class="codeline" data-linenumber="1278"><td class="num" id="LN1278">1278</td><td class="line"> prop-&gt;vals = <span class='macro'>g_new (SmPropValue, 2)<span class='macro_popup'>(SmPropValue *) (__extension__ ({ gsize __n = (gsize) (2); gsize<br> __s = sizeof (SmPropValue); gpointer __p; if (__s == 1) __p =<br> g_malloc (__n); else if (__builtin_constant_p (__n) &amp;&amp;<br> (__s == 0 || __n &lt;= (9223372036854775807L *2UL+1UL) / __s<br>)) __p = g_malloc (__n * __s); else __p = g_malloc_n (__n, __s<br>); __p; }))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1279"><td class="num" id="LN1279">1279</td><td class="line"> card8val = (<span class='keyword'>char</span> *)(&amp;prop-&gt;vals[1]);</td></tr>
+<tr class="codeline" data-linenumber="1280"><td class="num" id="LN1280">1280</td><td class="line"> card8val[0] = value;</td></tr>
+<tr class="codeline" data-linenumber="1281"><td class="num" id="LN1281">1281</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1282"><td class="num" id="LN1282">1282</td><td class="line"> prop-&gt;vals[0].length = 1;</td></tr>
+<tr class="codeline" data-linenumber="1283"><td class="num" id="LN1283">1283</td><td class="line"> prop-&gt;vals[0].value = card8val;</td></tr>
+<tr class="codeline" data-linenumber="1284"><td class="num" id="LN1284">1284</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1285"><td class="num" id="LN1285">1285</td><td class="line"> <span class='keyword'>return</span> prop;</td></tr>
+<tr class="codeline" data-linenumber="1286"><td class="num" id="LN1286">1286</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1287"><td class="num" id="LN1287">1287</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1288"><td class="num" id="LN1288">1288</td><td class="line"><span class='comment'>/* ICE code. This makes no effort to play nice with anyone else trying</span></td></tr>
+<tr class="codeline" data-linenumber="1289"><td class="num" id="LN1289">1289</td><td class="line"> <span class='comment'>* to use libICE. Fortunately, no one uses libICE for anything other</span></td></tr>
+<tr class="codeline" data-linenumber="1290"><td class="num" id="LN1290">1290</td><td class="line"> <span class='comment'>* than SM. (DCOP uses ICE, but it has its own private copy of</span></td></tr>
+<tr class="codeline" data-linenumber="1291"><td class="num" id="LN1291">1291</td><td class="line"> <span class='comment'>* libICE.)</span></td></tr>
+<tr class="codeline" data-linenumber="1292"><td class="num" id="LN1292">1292</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="1293"><td class="num" id="LN1293">1293</td><td class="line"> <span class='comment'>* When this moves to gtk, it will need to be cleverer, to avoid</span></td></tr>
+<tr class="codeline" data-linenumber="1294"><td class="num" id="LN1294">1294</td><td class="line"> <span class='comment'>* tripping over old apps that use MateClient or that use libSM</span></td></tr>
+<tr class="codeline" data-linenumber="1295"><td class="num" id="LN1295">1295</td><td class="line"> <span class='comment'>* directly.</span></td></tr>
+<tr class="codeline" data-linenumber="1296"><td class="num" id="LN1296">1296</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="1297"><td class="num" id="LN1297">1297</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1298"><td class="num" id="LN1298">1298</td><td class="line"><span class='directive'>#include &lt;X11/ICE/ICElib.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="1299"><td class="num" id="LN1299">1299</td><td class="line"><span class='directive'>#include &lt;fcntl.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="1300"><td class="num" id="LN1300">1300</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1301"><td class="num" id="LN1301">1301</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span> ice_error_handler (IceConn ice_conn,</td></tr>
+<tr class="codeline" data-linenumber="1302"><td class="num" id="LN1302">1302</td><td class="line"> <span class='macro'>Bool<span class='macro_popup'>int</span></span> swap,</td></tr>
+<tr class="codeline" data-linenumber="1303"><td class="num" id="LN1303">1303</td><td class="line"> <span class='keyword'>int</span> offending_minor_opcode,</td></tr>
+<tr class="codeline" data-linenumber="1304"><td class="num" id="LN1304">1304</td><td class="line"> <span class='keyword'>unsigned</span> <span class='keyword'>long</span> offending_sequence,</td></tr>
+<tr class="codeline" data-linenumber="1305"><td class="num" id="LN1305">1305</td><td class="line"> <span class='keyword'>int</span> error_class,</td></tr>
+<tr class="codeline" data-linenumber="1306"><td class="num" id="LN1306">1306</td><td class="line"> <span class='keyword'>int</span> severity,</td></tr>
+<tr class="codeline" data-linenumber="1307"><td class="num" id="LN1307">1307</td><td class="line"> IcePointer values);</td></tr>
+<tr class="codeline" data-linenumber="1308"><td class="num" id="LN1308">1308</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span> ice_io_error_handler (IceConn ice_conn);</td></tr>
+<tr class="codeline" data-linenumber="1309"><td class="num" id="LN1309">1309</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span> ice_connection_watch (IceConn ice_conn,</td></tr>
+<tr class="codeline" data-linenumber="1310"><td class="num" id="LN1310">1310</td><td class="line"> IcePointer client_data,</td></tr>
+<tr class="codeline" data-linenumber="1311"><td class="num" id="LN1311">1311</td><td class="line"> <span class='macro'>Bool<span class='macro_popup'>int</span></span> opening,</td></tr>
+<tr class="codeline" data-linenumber="1312"><td class="num" id="LN1312">1312</td><td class="line"> IcePointer *watch_data);</td></tr>
+<tr class="codeline" data-linenumber="1313"><td class="num" id="LN1313">1313</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1314"><td class="num" id="LN1314">1314</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1315"><td class="num" id="LN1315">1315</td><td class="line">ice_init (<span class='keyword'>void</span>)</td></tr>
+<tr class="codeline" data-linenumber="1316"><td class="num" id="LN1316">1316</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1317"><td class="num" id="LN1317">1317</td><td class="line"> IceSetIOErrorHandler (ice_io_error_handler);</td></tr>
+<tr class="codeline" data-linenumber="1318"><td class="num" id="LN1318">1318</td><td class="line"> IceSetErrorHandler (ice_error_handler);</td></tr>
+<tr class="codeline" data-linenumber="1319"><td class="num" id="LN1319">1319</td><td class="line"> IceAddConnectionWatch (ice_connection_watch, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1320"><td class="num" id="LN1320">1320</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1321"><td class="num" id="LN1321">1321</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1322"><td class="num" id="LN1322">1322</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="1323"><td class="num" id="LN1323">1323</td><td class="line">process_ice_messages (IceConn ice_conn)</td></tr>
+<tr class="codeline" data-linenumber="1324"><td class="num" id="LN1324">1324</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1325"><td class="num" id="LN1325">1325</td><td class="line"> IceProcessMessagesStatus status;</td></tr>
+<tr class="codeline" data-linenumber="1326"><td class="num" id="LN1326">1326</td><td class="line"> status = IceProcessMessages (ice_conn, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1327"><td class="num" id="LN1327">1327</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1328"><td class="num" id="LN1328">1328</td><td class="line"> <span class='keyword'>switch</span> (status)</td></tr>
+<tr class="codeline" data-linenumber="1329"><td class="num" id="LN1329">1329</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="1330"><td class="num" id="LN1330">1330</td><td class="line"> <span class='keyword'>case</span> IceProcessMessagesSuccess:</td></tr>
+<tr class="codeline" data-linenumber="1331"><td class="num" id="LN1331">1331</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1332"><td class="num" id="LN1332">1332</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1333"><td class="num" id="LN1333">1333</td><td class="line"> <span class='keyword'>case</span> IceProcessMessagesIOError:</td></tr>
+<tr class="codeline" data-linenumber="1334"><td class="num" id="LN1334">1334</td><td class="line"> sm_client_xsmp_disconnect (IceGetConnectionContext (ice_conn));</td></tr>
+<tr class="codeline" data-linenumber="1335"><td class="num" id="LN1335">1335</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1336"><td class="num" id="LN1336">1336</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1337"><td class="num" id="LN1337">1337</td><td class="line"> <span class='keyword'>case</span> IceProcessMessagesConnectionClosed:</td></tr>
+<tr class="codeline" data-linenumber="1338"><td class="num" id="LN1338">1338</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1339"><td class="num" id="LN1339">1339</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1340"><td class="num" id="LN1340">1340</td><td class="line"> <span class='keyword'>default</span>:</td></tr>
+<tr class="codeline" data-linenumber="1341"><td class="num" id="LN1341">1341</td><td class="line"> <span class='macro'>g_assert_not_reached ()<span class='macro_popup'>do { g_assertion_message_expr ("EggSMClient", "eggsmclient-xsmp.c"<br>, 1341, ((const char*) (__func__)), ((void*)0)); } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1342"><td class="num" id="LN1342">1342</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1343"><td class="num" id="LN1343">1343</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1344"><td class="num" id="LN1344">1344</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1345"><td class="num" id="LN1345">1345</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="1346"><td class="num" id="LN1346">1346</td><td class="line">ice_iochannel_watch (GIOChannel *channel,</td></tr>
+<tr class="codeline" data-linenumber="1347"><td class="num" id="LN1347">1347</td><td class="line"> GIOCondition condition,</td></tr>
+<tr class="codeline" data-linenumber="1348"><td class="num" id="LN1348">1348</td><td class="line"> gpointer client_data)</td></tr>
+<tr class="codeline" data-linenumber="1349"><td class="num" id="LN1349">1349</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1350"><td class="num" id="LN1350">1350</td><td class="line"> <span class='keyword'>return</span> process_ice_messages (client_data);</td></tr>
+<tr class="codeline" data-linenumber="1351"><td class="num" id="LN1351">1351</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1352"><td class="num" id="LN1352">1352</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1353"><td class="num" id="LN1353">1353</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1354"><td class="num" id="LN1354">1354</td><td class="line">ice_connection_watch (IceConn ice_conn,</td></tr>
+<tr class="codeline" data-linenumber="1355"><td class="num" id="LN1355">1355</td><td class="line"> IcePointer client_data,</td></tr>
+<tr class="codeline" data-linenumber="1356"><td class="num" id="LN1356">1356</td><td class="line"> <span class='macro'>Bool<span class='macro_popup'>int</span></span> opening,</td></tr>
+<tr class="codeline" data-linenumber="1357"><td class="num" id="LN1357">1357</td><td class="line"> IcePointer *watch_data)</td></tr>
+<tr class="codeline" data-linenumber="1358"><td class="num" id="LN1358">1358</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1359"><td class="num" id="LN1359">1359</td><td class="line"> guint watch_id;</td></tr>
+<tr class="codeline" data-linenumber="1360"><td class="num" id="LN1360">1360</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1361"><td class="num" id="LN1361">1361</td><td class="line"> <span class='keyword'>if</span> (opening)</td></tr>
+<tr class="codeline" data-linenumber="1362"><td class="num" id="LN1362">1362</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="1363"><td class="num" id="LN1363">1363</td><td class="line"> GIOChannel *channel;</td></tr>
+<tr class="codeline" data-linenumber="1364"><td class="num" id="LN1364">1364</td><td class="line"> <span class='keyword'>int</span> fd = IceConnectionNumber (ice_conn);</td></tr>
+<tr class="codeline" data-linenumber="1365"><td class="num" id="LN1365">1365</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1366"><td class="num" id="LN1366">1366</td><td class="line"> fcntl (fd, <span class='macro'>F_SETFD<span class='macro_popup'>2</span></span>, fcntl (fd, <span class='macro'>F_GETFD<span class='macro_popup'>1</span></span>, 0) | <span class='macro'>FD_CLOEXEC<span class='macro_popup'>1</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1367"><td class="num" id="LN1367">1367</td><td class="line"> channel = g_io_channel_unix_new (fd);</td></tr>
+<tr class="codeline" data-linenumber="1368"><td class="num" id="LN1368">1368</td><td class="line"> watch_id = g_io_add_watch (channel, G_IO_IN | G_IO_ERR,</td></tr>
+<tr class="codeline" data-linenumber="1369"><td class="num" id="LN1369">1369</td><td class="line"> ice_iochannel_watch, ice_conn);</td></tr>
+<tr class="codeline" data-linenumber="1370"><td class="num" id="LN1370">1370</td><td class="line"> g_io_channel_unref (channel);</td></tr>
+<tr class="codeline" data-linenumber="1371"><td class="num" id="LN1371">1371</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1372"><td class="num" id="LN1372">1372</td><td class="line"> *watch_data = <span class='macro'>GUINT_TO_POINTER (watch_id)<span class='macro_popup'>((gpointer) (gulong) (watch_id))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1373"><td class="num" id="LN1373">1373</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1374"><td class="num" id="LN1374">1374</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="1375"><td class="num" id="LN1375">1375</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="1376"><td class="num" id="LN1376">1376</td><td class="line"> watch_id = <span class='macro'>GPOINTER_TO_UINT (*watch_data)<span class='macro_popup'>((guint) (gulong) (*watch_data))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1377"><td class="num" id="LN1377">1377</td><td class="line"> g_source_remove (watch_id);</td></tr>
+<tr class="codeline" data-linenumber="1378"><td class="num" id="LN1378">1378</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1379"><td class="num" id="LN1379">1379</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1380"><td class="num" id="LN1380">1380</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1381"><td class="num" id="LN1381">1381</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1382"><td class="num" id="LN1382">1382</td><td class="line">ice_error_handler (IceConn ice_conn,</td></tr>
+<tr class="codeline" data-linenumber="1383"><td class="num" id="LN1383">1383</td><td class="line"> <span class='macro'>Bool<span class='macro_popup'>int</span></span> swap,</td></tr>
+<tr class="codeline" data-linenumber="1384"><td class="num" id="LN1384">1384</td><td class="line"> <span class='keyword'>int</span> offending_minor_opcode,</td></tr>
+<tr class="codeline" data-linenumber="1385"><td class="num" id="LN1385">1385</td><td class="line"> <span class='keyword'>unsigned</span> <span class='keyword'>long</span> offending_sequence,</td></tr>
+<tr class="codeline" data-linenumber="1386"><td class="num" id="LN1386">1386</td><td class="line"> <span class='keyword'>int</span> error_class,</td></tr>
+<tr class="codeline" data-linenumber="1387"><td class="num" id="LN1387">1387</td><td class="line"> <span class='keyword'>int</span> severity,</td></tr>
+<tr class="codeline" data-linenumber="1388"><td class="num" id="LN1388">1388</td><td class="line"> IcePointer values)</td></tr>
+<tr class="codeline" data-linenumber="1389"><td class="num" id="LN1389">1389</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1390"><td class="num" id="LN1390">1390</td><td class="line"> <span class='comment'>/* Do nothing */</span></td></tr>
+<tr class="codeline" data-linenumber="1391"><td class="num" id="LN1391">1391</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1392"><td class="num" id="LN1392">1392</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1393"><td class="num" id="LN1393">1393</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1394"><td class="num" id="LN1394">1394</td><td class="line">ice_io_error_handler (IceConn ice_conn)</td></tr>
+<tr class="codeline" data-linenumber="1395"><td class="num" id="LN1395">1395</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1396"><td class="num" id="LN1396">1396</td><td class="line"> <span class='comment'>/* Do nothing */</span></td></tr>
+<tr class="codeline" data-linenumber="1397"><td class="num" id="LN1397">1397</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1398"><td class="num" id="LN1398">1398</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1399"><td class="num" id="LN1399">1399</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1400"><td class="num" id="LN1400">1400</td><td class="line">smc_error_handler (SmcConn smc_conn,</td></tr>
+<tr class="codeline" data-linenumber="1401"><td class="num" id="LN1401">1401</td><td class="line"> <span class='macro'>Bool<span class='macro_popup'>int</span></span> swap,</td></tr>
+<tr class="codeline" data-linenumber="1402"><td class="num" id="LN1402">1402</td><td class="line"> <span class='keyword'>int</span> offending_minor_opcode,</td></tr>
+<tr class="codeline" data-linenumber="1403"><td class="num" id="LN1403">1403</td><td class="line"> <span class='keyword'>unsigned</span> <span class='keyword'>long</span> offending_sequence,</td></tr>
+<tr class="codeline" data-linenumber="1404"><td class="num" id="LN1404">1404</td><td class="line"> <span class='keyword'>int</span> error_class,</td></tr>
+<tr class="codeline" data-linenumber="1405"><td class="num" id="LN1405">1405</td><td class="line"> <span class='keyword'>int</span> severity,</td></tr>
+<tr class="codeline" data-linenumber="1406"><td class="num" id="LN1406">1406</td><td class="line"> SmPointer values)</td></tr>
+<tr class="codeline" data-linenumber="1407"><td class="num" id="LN1407">1407</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1408"><td class="num" id="LN1408">1408</td><td class="line"> <span class='comment'>/* Do nothing */</span></td></tr>
+<tr class="codeline" data-linenumber="1409"><td class="num" id="LN1409">1409</td><td class="line">}</td></tr>
+</table></body></html>
diff --git a/2023-05-28-030536-6612-1@f643dde74cbd_master/report-cf3974.html b/2023-05-28-030536-6612-1@f643dde74cbd_master/report-cf3974.html
new file mode 100644
index 00000000..78436bbf
--- /dev/null
+++ b/2023-05-28-030536-6612-1@f643dde74cbd_master/report-cf3974.html
@@ -0,0 +1,2089 @@
+<!doctype html>
+<html>
+<head>
+<title>eggsmclient-xsmp.c</title>
+
+<style type="text/css">
+body { color:#000000; background-color:#ffffff }
+body { font-family:Helvetica, sans-serif; font-size:10pt }
+h1 { font-size:14pt }
+.FileName { margin-top: 5px; margin-bottom: 5px; display: inline; }
+.FileNav { margin-left: 5px; margin-right: 5px; display: inline; }
+.FileNav a { text-decoration:none; font-size: larger; }
+.divider { margin-top: 30px; margin-bottom: 30px; height: 15px; }
+.divider { background-color: gray; }
+.code { border-collapse:collapse; width:100%; }
+.code { font-family: "Monospace", monospace; font-size:10pt }
+.code { line-height: 1.2em }
+.comment { color: green; font-style: oblique }
+.keyword { color: blue }
+.string_literal { color: red }
+.directive { color: darkmagenta }
+
+/* Macros and variables could have pop-up notes hidden by default.
+ - Macro pop-up: expansion of the macro
+ - Variable pop-up: value (table) of the variable */
+.macro_popup, .variable_popup { display: none; }
+
+/* Pop-up appears on mouse-hover event. */
+.macro:hover .macro_popup, .variable:hover .variable_popup {
+ display: block;
+ padding: 2px;
+ -webkit-border-radius:5px;
+ -webkit-box-shadow:1px 1px 7px #000;
+ border-radius:5px;
+ box-shadow:1px 1px 7px #000;
+ position: absolute;
+ top: -1em;
+ left:10em;
+ z-index: 1
+}
+
+.macro_popup {
+ border: 2px solid red;
+ background-color:#FFF0F0;
+ font-weight: normal;
+}
+
+.variable_popup {
+ border: 2px solid blue;
+ background-color:#F0F0FF;
+ font-weight: bold;
+ font-family: Helvetica, sans-serif;
+ font-size: 9pt;
+}
+
+/* Pop-up notes needs a relative position as a base where they pops up. */
+.macro, .variable {
+ background-color: PaleGoldenRod;
+ position: relative;
+}
+.macro { color: DarkMagenta; }
+
+#tooltiphint {
+ position: fixed;
+ width: 50em;
+ margin-left: -25em;
+ left: 50%;
+ padding: 10px;
+ border: 1px solid #b0b0b0;
+ border-radius: 2px;
+ box-shadow: 1px 1px 7px black;
+ background-color: #c0c0c0;
+ z-index: 2;
+}
+
+.num { width:2.5em; padding-right:2ex; background-color:#eeeeee }
+.num { text-align:right; font-size:8pt }
+.num { color:#444444 }
+.line { padding-left: 1ex; border-left: 3px solid #ccc }
+.line { white-space: pre }
+.msg { -webkit-box-shadow:1px 1px 7px #000 }
+.msg { box-shadow:1px 1px 7px #000 }
+.msg { -webkit-border-radius:5px }
+.msg { border-radius:5px }
+.msg { font-family:Helvetica, sans-serif; font-size:8pt }
+.msg { float:left }
+.msg { position:relative }
+.msg { padding:0.25em 1ex 0.25em 1ex }
+.msg { margin-top:10px; margin-bottom:10px }
+.msg { font-weight:bold }
+.msg { max-width:60em; word-wrap: break-word; white-space: pre-wrap }
+.msgT { padding:0x; spacing:0x }
+.msgEvent { background-color:#fff8b4; color:#000000 }
+.msgControl { background-color:#bbbbbb; color:#000000 }
+.msgNote { background-color:#ddeeff; color:#000000 }
+.mrange { background-color:#dfddf3 }
+.mrange { border-bottom:1px solid #6F9DBE }
+.PathIndex { font-weight: bold; padding:0px 5px; margin-right:5px; }
+.PathIndex { -webkit-border-radius:8px }
+.PathIndex { border-radius:8px }
+.PathIndexEvent { background-color:#bfba87 }
+.PathIndexControl { background-color:#8c8c8c }
+.PathIndexPopUp { background-color: #879abc; }
+.PathNav a { text-decoration:none; font-size: larger }
+.CodeInsertionHint { font-weight: bold; background-color: #10dd10 }
+.CodeRemovalHint { background-color:#de1010 }
+.CodeRemovalHint { border-bottom:1px solid #6F9DBE }
+.msg.selected{ background-color:orange !important; }
+
+table.simpletable {
+ padding: 5px;
+ font-size:12pt;
+ margin:20px;
+ border-collapse: collapse; border-spacing: 0px;
+}
+td.rowname {
+ text-align: right;
+ vertical-align: top;
+ font-weight: bold;
+ color:#444444;
+ padding-right:2ex;
+}
+
+/* Hidden text. */
+input.spoilerhider + label {
+ cursor: pointer;
+ text-decoration: underline;
+ display: block;
+}
+input.spoilerhider {
+ display: none;
+}
+input.spoilerhider ~ .spoiler {
+ overflow: hidden;
+ margin: 10px auto 0;
+ height: 0;
+ opacity: 0;
+}
+input.spoilerhider:checked + label + .spoiler{
+ height: auto;
+ opacity: 1;
+}
+</style>
+</head>
+<body>
+<!-- BUGDESC Casting a non-structure type to a structure type and accessing a field can lead to memory access errors or data corruption -->
+
+<!-- BUGTYPE Cast from non-struct type to struct type -->
+
+<!-- BUGCATEGORY Logic error -->
+
+<!-- BUGFILE /rootdir/pluma/mate-submodules/libegg/eggsmclient-xsmp.c -->
+
+<!-- FILENAME eggsmclient-xsmp.c -->
+
+<!-- FUNCTIONNAME ptrarray_prop -->
+
+<!-- ISSUEHASHCONTENTOFLINEINCONTEXT cf3974848df4dca833dffd0d8abcacb0 -->
+
+<!-- BUGLINE 1232 -->
+
+<!-- BUGCOLUMN 18 -->
+
+<!-- BUGPATHLENGTH 1 -->
+
+<!-- BUGMETAEND -->
+<!-- REPORTHEADER -->
+<h3>Bug Summary</h3>
+<table class="simpletable">
+<tr><td class="rowname">File:</td><td>pluma/mate-submodules/libegg/eggsmclient-xsmp.c</td></tr>
+<tr><td class="rowname">Warning:</td><td><a href="#EndPath">line 1232, column 18</a><br />Casting a non-structure type to a structure type and accessing a field can lead to memory access errors or data corruption</td></tr>
+
+</table>
+<!-- REPORTSUMMARYEXTRA -->
+<h3>Annotated Source Code</h3>
+<p>Press <a href="#" onclick="toggleHelp(); return false;">'?'</a>
+ to see keyboard shortcuts</p>
+<input type="checkbox" class="spoilerhider" id="showinvocation" />
+<label for="showinvocation" >Show analyzer invocation</label>
+<div class="spoiler">clang -cc1 -cc1 -triple x86_64-redhat-linux-gnu -analyze -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name eggsmclient-xsmp.c -analyzer-checker=core -analyzer-checker=apiModeling -analyzer-checker=unix -analyzer-checker=deadcode -analyzer-checker=security.insecureAPI.UncheckedReturn -analyzer-checker=security.insecureAPI.getpw -analyzer-checker=security.insecureAPI.gets -analyzer-checker=security.insecureAPI.mktemp -analyzer-checker=security.insecureAPI.mkstemp -analyzer-checker=security.insecureAPI.vfork -analyzer-checker=nullability.NullPassedToNonnull -analyzer-checker=nullability.NullReturnedFromNonnull -analyzer-output plist -w -setup-static-analyzer -mrelocation-model pic -pic-level 2 -fhalf-no-semantic-interposition -mframe-pointer=none -fmath-errno -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=2 -target-cpu x86-64 -tune-cpu generic -debugger-tuning=gdb -fcoverage-compilation-dir=/rootdir/pluma/mate-submodules/libegg -resource-dir /usr/lib64/clang/16 -D HAVE_CONFIG_H -I . -I ../../.. -I /usr/include/gtk-3.0 -I /usr/include/pango-1.0 -I /usr/include/glib-2.0 -I /usr/lib64/glib-2.0/include -I /usr/include/sysprof-4 -I /usr/include/harfbuzz -I /usr/include/freetype2 -I /usr/include/libpng16 -I /usr/include/libmount -I /usr/include/blkid -I /usr/include/fribidi -I /usr/include/libxml2 -I /usr/include/cairo -I /usr/include/pixman-1 -I /usr/include/gdk-pixbuf-2.0 -I /usr/include/gio-unix-2.0 -I /usr/include/cloudproviders -I /usr/include/atk-1.0 -I /usr/include/at-spi2-atk/2.0 -I /usr/include/at-spi-2.0 -I /usr/include/dbus-1.0 -I /usr/lib64/dbus-1.0/include -D EGG_SM_CLIENT_BACKEND_XSMP -D G_LOG_DOMAIN="EggSMClient" -I /usr/include/gtk-3.0 -I /usr/include/pango-1.0 -I /usr/include/glib-2.0 -I /usr/lib64/glib-2.0/include -I /usr/include/sysprof-4 -I /usr/include/harfbuzz -I /usr/include/freetype2 -I /usr/include/libpng16 -I /usr/include/libmount -I /usr/include/blkid -I /usr/include/fribidi -I /usr/include/libxml2 -I /usr/include/cairo -I /usr/include/pixman-1 -I /usr/include/gdk-pixbuf-2.0 -I /usr/include/gio-unix-2.0 -I /usr/include/cloudproviders -I /usr/include/atk-1.0 -I /usr/include/at-spi2-atk/2.0 -I /usr/include/at-spi-2.0 -I /usr/include/dbus-1.0 -I /usr/lib64/dbus-1.0/include -D PIC -internal-isystem /usr/lib64/clang/16/include -internal-isystem /usr/local/include -internal-isystem /usr/bin/../lib/gcc/x86_64-redhat-linux/13/../../../../x86_64-redhat-linux/include -internal-externc-isystem /include -internal-externc-isystem /usr/include -O2 -Wno-unused-parameter -fdebug-compilation-dir=/rootdir/pluma/mate-submodules/libegg -ferror-limit 19 -fgnuc-version=4.2.1 -vectorize-loops -vectorize-slp -analyzer-checker deadcode.DeadStores -analyzer-checker alpha.deadcode.UnreachableCode -analyzer-checker alpha.core.CastSize -analyzer-checker alpha.core.CastToStruct -analyzer-checker alpha.core.IdenticalExpr -analyzer-checker alpha.core.SizeofPtr -analyzer-checker alpha.security.ArrayBoundV2 -analyzer-checker alpha.security.MallocOverflow -analyzer-checker alpha.security.ReturnPtrRange -analyzer-checker alpha.unix.SimpleStream -analyzer-checker alpha.unix.cstring.BufferOverlap -analyzer-checker alpha.unix.cstring.NotNullTerminated -analyzer-checker alpha.unix.cstring.OutOfBounds -analyzer-checker alpha.core.FixedAddr -analyzer-checker security.insecureAPI.strcpy -analyzer-output=html -faddrsig -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o /rootdir/html-report/2023-05-28-030536-6612-1 -x c eggsmclient-xsmp.c
+</div>
+<div id='tooltiphint' hidden="true">
+ <p>Keyboard shortcuts: </p>
+ <ul>
+ <li>Use 'j/k' keys for keyboard navigation</li>
+ <li>Use 'Shift+S' to show/hide relevant lines</li>
+ <li>Use '?' to toggle this window</li>
+ </ul>
+ <a href="#" onclick="toggleHelp(); return false;">Close</a>
+</div>
+<script type='text/javascript'>
+var relevant_lines = {"1": {"1232": 1}};
+
+var filterCounterexample = function (hide) {
+ var tables = document.getElementsByClassName("code");
+ for (var t=0; t<tables.length; t++) {
+ var table = tables[t];
+ var file_id = table.getAttribute("data-fileid");
+ var lines_in_fid = relevant_lines[file_id];
+ if (!lines_in_fid) {
+ lines_in_fid = {};
+ }
+ var lines = table.getElementsByClassName("codeline");
+ for (var i=0; i<lines.length; i++) {
+ var el = lines[i];
+ var lineNo = el.getAttribute("data-linenumber");
+ if (!lines_in_fid[lineNo]) {
+ if (hide) {
+ el.setAttribute("hidden", "");
+ } else {
+ el.removeAttribute("hidden");
+ }
+ }
+ }
+ }
+}
+
+window.addEventListener("keydown", function (event) {
+ if (event.defaultPrevented) {
+ return;
+ }
+ // SHIFT + S
+ if (event.shiftKey && event.keyCode == 83) {
+ var checked = document.getElementsByName("showCounterexample")[0].checked;
+ filterCounterexample(!checked);
+ document.getElementsByName("showCounterexample")[0].click();
+ } else {
+ return;
+ }
+ event.preventDefault();
+}, true);
+
+document.addEventListener("DOMContentLoaded", function() {
+ document.querySelector('input[name="showCounterexample"]').onchange=
+ function (event) {
+ filterCounterexample(this.checked);
+ };
+});
+</script>
+
+<form>
+ <input type="checkbox" name="showCounterexample" id="showCounterexample" />
+ <label for="showCounterexample">
+ Show only relevant lines
+ </label>
+ <input type="checkbox" name="showArrows"
+ id="showArrows" style="margin-left: 10px" />
+ <label for="showArrows">
+ Show control flow arrows
+ </label>
+</form>
+
+<script type='text/javascript'>
+// Return range of numbers from a range [lower, upper).
+function range(lower, upper) {
+ var array = [];
+ for (var i = lower; i <= upper; ++i) {
+ array.push(i);
+ }
+ return array;
+}
+
+var getRelatedArrowIndices = function(pathId) {
+ // HTML numeration of events is a bit different than it is in the path.
+ // Everything is rotated one step to the right, so the last element
+ // (error diagnostic) has index 0.
+ if (pathId == 0) {
+ // arrowIndices has at least 2 elements
+ pathId = arrowIndices.length - 1;
+ }
+
+ return range(arrowIndices[pathId], arrowIndices[pathId - 1]);
+}
+
+var highlightArrowsForSelectedEvent = function() {
+ const selectedNum = findNum();
+ const arrowIndicesToHighlight = getRelatedArrowIndices(selectedNum);
+ arrowIndicesToHighlight.forEach((index) => {
+ var arrow = document.querySelector("#arrow" + index);
+ if(arrow) {
+ classListAdd(arrow, "selected")
+ }
+ });
+}
+
+var getAbsoluteBoundingRect = function(element) {
+ const relative = element.getBoundingClientRect();
+ return {
+ left: relative.left + window.pageXOffset,
+ right: relative.right + window.pageXOffset,
+ top: relative.top + window.pageYOffset,
+ bottom: relative.bottom + window.pageYOffset,
+ height: relative.height,
+ width: relative.width
+ };
+}
+
+var drawArrow = function(index) {
+ // This function is based on the great answer from SO:
+ // https://stackoverflow.com/a/39575674/11582326
+ var start = document.querySelector("#start" + index);
+ var end = document.querySelector("#end" + index);
+ var arrow = document.querySelector("#arrow" + index);
+
+ var startRect = getAbsoluteBoundingRect(start);
+ var endRect = getAbsoluteBoundingRect(end);
+
+ // It is an arrow from a token to itself, no need to visualize it.
+ if (startRect.top == endRect.top &&
+ startRect.left == endRect.left)
+ return;
+
+ // Each arrow is a very simple Bézier curve, with two nodes and
+ // two handles. So, we need to calculate four points in the window:
+ // * start node
+ var posStart = { x: 0, y: 0 };
+ // * end node
+ var posEnd = { x: 0, y: 0 };
+ // * handle for the start node
+ var startHandle = { x: 0, y: 0 };
+ // * handle for the end node
+ var endHandle = { x: 0, y: 0 };
+ // One can visualize it as follows:
+ //
+ // start handle
+ // /
+ // X"""_.-""""X
+ // .' \
+ // / start node
+ // |
+ // |
+ // | end node
+ // \ /
+ // `->X
+ // X-'
+ // \
+ // end handle
+ //
+ // NOTE: (0, 0) is the top left corner of the window.
+
+ // We have 3 similar, but still different scenarios to cover:
+ //
+ // 1. Two tokens on different lines.
+ // -xxx
+ // /
+ // \
+ // -> xxx
+ // In this situation, we draw arrow on the left curving to the left.
+ // 2. Two tokens on the same line, and the destination is on the right.
+ // ____
+ // / \
+ // / V
+ // xxx xxx
+ // In this situation, we draw arrow above curving upwards.
+ // 3. Two tokens on the same line, and the destination is on the left.
+ // xxx xxx
+ // ^ /
+ // \____/
+ // In this situation, we draw arrow below curving downwards.
+ const onDifferentLines = startRect.top <= endRect.top - 5 ||
+ startRect.top >= endRect.top + 5;
+ const leftToRight = startRect.left < endRect.left;
+
+ // NOTE: various magic constants are chosen empirically for
+ // better positioning and look
+ if (onDifferentLines) {
+ // Case #1
+ const topToBottom = startRect.top < endRect.top;
+ posStart.x = startRect.left - 1;
+ // We don't want to start it at the top left corner of the token,
+ // it doesn't feel like this is where the arrow comes from.
+ // For this reason, we start it in the middle of the left side
+ // of the token.
+ posStart.y = startRect.top + startRect.height / 2;
+
+ // End node has arrow head and we give it a bit more space.
+ posEnd.x = endRect.left - 4;
+ posEnd.y = endRect.top;
+
+ // Utility object with x and y offsets for handles.
+ var curvature = {
+ // We want bottom-to-top arrow to curve a bit more, so it doesn't
+ // overlap much with top-to-bottom curves (much more frequent).
+ x: topToBottom ? 15 : 25,
+ y: Math.min((posEnd.y - posStart.y) / 3, 10)
+ }
+
+ // When destination is on the different line, we can make a
+ // curvier arrow because we have space for it.
+ // So, instead of using
+ //
+ // startHandle.x = posStart.x - curvature.x
+ // endHandle.x = posEnd.x - curvature.x
+ //
+ // We use the leftmost of these two values for both handles.
+ startHandle.x = Math.min(posStart.x, posEnd.x) - curvature.x;
+ endHandle.x = startHandle.x;
+
+ // Curving downwards from the start node...
+ startHandle.y = posStart.y + curvature.y;
+ // ... and upwards from the end node.
+ endHandle.y = posEnd.y - curvature.y;
+
+ } else if (leftToRight) {
+ // Case #2
+ // Starting from the top right corner...
+ posStart.x = startRect.right - 1;
+ posStart.y = startRect.top;
+
+ // ...and ending at the top left corner of the end token.
+ posEnd.x = endRect.left + 1;
+ posEnd.y = endRect.top - 1;
+
+ // Utility object with x and y offsets for handles.
+ var curvature = {
+ x: Math.min((posEnd.x - posStart.x) / 3, 15),
+ y: 5
+ }
+
+ // Curving to the right...
+ startHandle.x = posStart.x + curvature.x;
+ // ... and upwards from the start node.
+ startHandle.y = posStart.y - curvature.y;
+
+ // And to the left...
+ endHandle.x = posEnd.x - curvature.x;
+ // ... and upwards from the end node.
+ endHandle.y = posEnd.y - curvature.y;
+
+ } else {
+ // Case #3
+ // Starting from the bottom right corner...
+ posStart.x = startRect.right;
+ posStart.y = startRect.bottom;
+
+ // ...and ending also at the bottom right corner, but of the end token.
+ posEnd.x = endRect.right - 1;
+ posEnd.y = endRect.bottom + 1;
+
+ // Utility object with x and y offsets for handles.
+ var curvature = {
+ x: Math.min((posStart.x - posEnd.x) / 3, 15),
+ y: 5
+ }
+
+ // Curving to the left...
+ startHandle.x = posStart.x - curvature.x;
+ // ... and downwards from the start node.
+ startHandle.y = posStart.y + curvature.y;
+
+ // And to the right...
+ endHandle.x = posEnd.x + curvature.x;
+ // ... and downwards from the end node.
+ endHandle.y = posEnd.y + curvature.y;
+ }
+
+ // Put it all together into a path.
+ // More information on the format:
+ // https://developer.mozilla.org/en-US/docs/Web/SVG/Tutorial/Paths
+ var pathStr = "M" + posStart.x + "," + posStart.y + " " +
+ "C" + startHandle.x + "," + startHandle.y + " " +
+ endHandle.x + "," + endHandle.y + " " +
+ posEnd.x + "," + posEnd.y;
+
+ arrow.setAttribute("d", pathStr);
+};
+
+var drawArrows = function() {
+ const numOfArrows = document.querySelectorAll("path[id^=arrow]").length;
+ for (var i = 0; i < numOfArrows; ++i) {
+ drawArrow(i);
+ }
+}
+
+var toggleArrows = function(event) {
+ const arrows = document.querySelector("#arrows");
+ if (event.target.checked) {
+ arrows.setAttribute("visibility", "visible");
+ } else {
+ arrows.setAttribute("visibility", "hidden");
+ }
+}
+
+window.addEventListener("resize", drawArrows);
+document.addEventListener("DOMContentLoaded", function() {
+ // Whenever we show invocation, locations change, i.e. we
+ // need to redraw arrows.
+ document
+ .querySelector('input[id="showinvocation"]')
+ .addEventListener("click", drawArrows);
+ // Hiding irrelevant lines also should cause arrow rerender.
+ document
+ .querySelector('input[name="showCounterexample"]')
+ .addEventListener("change", drawArrows);
+ document
+ .querySelector('input[name="showArrows"]')
+ .addEventListener("change", toggleArrows);
+ drawArrows();
+ // Default highlighting for the last event.
+ highlightArrowsForSelectedEvent();
+});
+</script>
+
+<script type='text/javascript'>
+var digitMatcher = new RegExp("[0-9]+");
+
+var querySelectorAllArray = function(selector) {
+ return Array.prototype.slice.call(
+ document.querySelectorAll(selector));
+}
+
+document.addEventListener("DOMContentLoaded", function() {
+ querySelectorAllArray(".PathNav > a").forEach(
+ function(currentValue, currentIndex) {
+ var hrefValue = currentValue.getAttribute("href");
+ currentValue.onclick = function() {
+ scrollTo(document.querySelector(hrefValue));
+ return false;
+ };
+ });
+});
+
+var findNum = function() {
+ var s = document.querySelector(".msg.selected");
+ if (!s || s.id == "EndPath") {
+ return 0;
+ }
+ var out = parseInt(digitMatcher.exec(s.id)[0]);
+ return out;
+};
+
+var classListAdd = function(el, theClass) {
+ if(!el.className.baseVal)
+ el.className += " " + theClass;
+ else
+ el.className.baseVal += " " + theClass;
+};
+
+var classListRemove = function(el, theClass) {
+ var className = (!el.className.baseVal) ?
+ el.className : el.className.baseVal;
+ className = className.replace(" " + theClass, "");
+ if(!el.className.baseVal)
+ el.className = className;
+ else
+ el.className.baseVal = className;
+};
+
+var scrollTo = function(el) {
+ querySelectorAllArray(".selected").forEach(function(s) {
+ classListRemove(s, "selected");
+ });
+ classListAdd(el, "selected");
+ window.scrollBy(0, el.getBoundingClientRect().top -
+ (window.innerHeight / 2));
+ highlightArrowsForSelectedEvent();
+};
+
+var move = function(num, up, numItems) {
+ if (num == 1 && up || num == numItems - 1 && !up) {
+ return 0;
+ } else if (num == 0 && up) {
+ return numItems - 1;
+ } else if (num == 0 && !up) {
+ return 1 % numItems;
+ }
+ return up ? num - 1 : num + 1;
+}
+
+var numToId = function(num) {
+ if (num == 0) {
+ return document.getElementById("EndPath")
+ }
+ return document.getElementById("Path" + num);
+};
+
+var navigateTo = function(up) {
+ var numItems = document.querySelectorAll(
+ ".line > .msgEvent, .line > .msgControl").length;
+ var currentSelected = findNum();
+ var newSelected = move(currentSelected, up, numItems);
+ var newEl = numToId(newSelected, numItems);
+
+ // Scroll element into center.
+ scrollTo(newEl);
+};
+
+window.addEventListener("keydown", function (event) {
+ if (event.defaultPrevented) {
+ return;
+ }
+ // key 'j'
+ if (event.keyCode == 74) {
+ navigateTo(/*up=*/false);
+ // key 'k'
+ } else if (event.keyCode == 75) {
+ navigateTo(/*up=*/true);
+ } else {
+ return;
+ }
+ event.preventDefault();
+}, true);
+</script>
+
+<script type='text/javascript'>
+
+var toggleHelp = function() {
+ var hint = document.querySelector("#tooltiphint");
+ var attributeName = "hidden";
+ if (hint.hasAttribute(attributeName)) {
+ hint.removeAttribute(attributeName);
+ } else {
+ hint.setAttribute("hidden", "true");
+ }
+};
+window.addEventListener("keydown", function (event) {
+ if (event.defaultPrevented) {
+ return;
+ }
+ if (event.key == "?") {
+ toggleHelp();
+ } else {
+ return;
+ }
+ event.preventDefault();
+});
+</script>
+
+<style type="text/css">
+ svg {
+ position:absolute;
+ top:0;
+ left:0;
+ height:100%;
+ width:100%;
+ pointer-events: none;
+ overflow: visible
+ }
+ .arrow {
+ stroke-opacity: 0.2;
+ stroke-width: 1;
+ marker-end: url(#arrowhead);
+ }
+
+ .arrow.selected {
+ stroke-opacity: 0.6;
+ stroke-width: 2;
+ marker-end: url(#arrowheadSelected);
+ }
+
+ .arrowhead {
+ orient: auto;
+ stroke: none;
+ opacity: 0.6;
+ fill: blue;
+ }
+</style>
+<svg xmlns="http://www.w3.org/2000/svg">
+ <defs>
+ <marker id="arrowheadSelected" class="arrowhead" opacity="0.6"
+ viewBox="0 0 10 10" refX="3" refY="5"
+ markerWidth="4" markerHeight="4">
+ <path d="M 0 0 L 10 5 L 0 10 z" />
+ </marker>
+ <marker id="arrowhead" class="arrowhead" opacity="0.2"
+ viewBox="0 0 10 10" refX="3" refY="5"
+ markerWidth="4" markerHeight="4">
+ <path d="M 0 0 L 10 5 L 0 10 z" />
+ </marker>
+ </defs>
+ <g id="arrows" fill="none" stroke="blue" visibility="hidden">
+
+ </g>
+</svg>
+<script type='text/javascript'>
+const arrowIndices = [ 0,0 ]
+</script>
+<table class="code" data-fileid="1">
+<tr class="codeline" data-linenumber="1"><td class="num" id="LN1">1</td><td class="line"><span class='comment'>/*</span></td></tr>
+<tr class="codeline" data-linenumber="2"><td class="num" id="LN2">2</td><td class="line"> <span class='comment'>* Copyright (C) 2007 Novell, Inc.</span></td></tr>
+<tr class="codeline" data-linenumber="3"><td class="num" id="LN3">3</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="4"><td class="num" id="LN4">4</td><td class="line"> <span class='comment'>* Inspired by various other pieces of code including GsmClient (C)</span></td></tr>
+<tr class="codeline" data-linenumber="5"><td class="num" id="LN5">5</td><td class="line"> <span class='comment'>* 2001 Havoc Pennington, MateClient (C) 1998 Carsten Schaar, and twm</span></td></tr>
+<tr class="codeline" data-linenumber="6"><td class="num" id="LN6">6</td><td class="line"> <span class='comment'>* session code (C) 1998 The Open Group.</span></td></tr>
+<tr class="codeline" data-linenumber="7"><td class="num" id="LN7">7</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="8"><td class="num" id="LN8">8</td><td class="line"> <span class='comment'>* This library is free software; you can redistribute it and/or</span></td></tr>
+<tr class="codeline" data-linenumber="9"><td class="num" id="LN9">9</td><td class="line"> <span class='comment'>* modify it under the terms of the GNU Library General Public</span></td></tr>
+<tr class="codeline" data-linenumber="10"><td class="num" id="LN10">10</td><td class="line"> <span class='comment'>* License as published by the Free Software Foundation; either</span></td></tr>
+<tr class="codeline" data-linenumber="11"><td class="num" id="LN11">11</td><td class="line"> <span class='comment'>* version 2 of the License, or (at your option) any later version.</span></td></tr>
+<tr class="codeline" data-linenumber="12"><td class="num" id="LN12">12</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="13"><td class="num" id="LN13">13</td><td class="line"> <span class='comment'>* This library is distributed in the hope that it will be useful,</span></td></tr>
+<tr class="codeline" data-linenumber="14"><td class="num" id="LN14">14</td><td class="line"> <span class='comment'>* but WITHOUT ANY WARRANTY; without even the implied warranty of</span></td></tr>
+<tr class="codeline" data-linenumber="15"><td class="num" id="LN15">15</td><td class="line"> <span class='comment'>* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</span></td></tr>
+<tr class="codeline" data-linenumber="16"><td class="num" id="LN16">16</td><td class="line"> <span class='comment'>* Library General Public License for more details.</span></td></tr>
+<tr class="codeline" data-linenumber="17"><td class="num" id="LN17">17</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="18"><td class="num" id="LN18">18</td><td class="line"> <span class='comment'>* You should have received a copy of the GNU Library General Public</span></td></tr>
+<tr class="codeline" data-linenumber="19"><td class="num" id="LN19">19</td><td class="line"> <span class='comment'>* License along with this library; if not, write to the</span></td></tr>
+<tr class="codeline" data-linenumber="20"><td class="num" id="LN20">20</td><td class="line"> <span class='comment'>* Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,</span></td></tr>
+<tr class="codeline" data-linenumber="21"><td class="num" id="LN21">21</td><td class="line"> <span class='comment'>* Boston, MA 02110-1301, USA.</span></td></tr>
+<tr class="codeline" data-linenumber="22"><td class="num" id="LN22">22</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="23"><td class="num" id="LN23">23</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="24"><td class="num" id="LN24">24</td><td class="line"><span class='directive'>#include "config.h"</span></td></tr>
+<tr class="codeline" data-linenumber="25"><td class="num" id="LN25">25</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="26"><td class="num" id="LN26">26</td><td class="line"><span class='directive'>#include "eggsmclient.h"</span></td></tr>
+<tr class="codeline" data-linenumber="27"><td class="num" id="LN27">27</td><td class="line"><span class='directive'>#include "eggsmclient-private.h"</span></td></tr>
+<tr class="codeline" data-linenumber="28"><td class="num" id="LN28">28</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="29"><td class="num" id="LN29">29</td><td class="line"><span class='directive'>#include "eggdesktopfile.h"</span></td></tr>
+<tr class="codeline" data-linenumber="30"><td class="num" id="LN30">30</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="31"><td class="num" id="LN31">31</td><td class="line"><span class='directive'>#include &lt;<span class='macro'>errno<span class='macro_popup'>(*__errno_location ())</span></span>.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="32"><td class="num" id="LN32">32</td><td class="line"><span class='directive'>#include &lt;fcntl.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="33"><td class="num" id="LN33">33</td><td class="line"><span class='directive'>#include &lt;stdlib.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="34"><td class="num" id="LN34">34</td><td class="line"><span class='directive'>#include &lt;string.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="35"><td class="num" id="LN35">35</td><td class="line"><span class='directive'>#include &lt;unistd.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="36"><td class="num" id="LN36">36</td><td class="line"><span class='directive'>#include &lt;X11/SM/SMlib.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="37"><td class="num" id="LN37">37</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="38"><td class="num" id="LN38">38</td><td class="line"><span class='directive'>#include &lt;gtk/gtk.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="39"><td class="num" id="LN39">39</td><td class="line"><span class='directive'>#include &lt;gdk/gdk.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="40"><td class="num" id="LN40">40</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="41"><td class="num" id="LN41">41</td><td class="line"><span class='directive'>#if defined(GDK_WINDOWING_X11) || defined(HAVE_X11)</span></td></tr>
+<tr class="codeline" data-linenumber="42"><td class="num" id="LN42">42</td><td class="line"><span class='directive'>#include &lt;gdk/gdkx.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="43"><td class="num" id="LN43">43</td><td class="line"><span class='directive'>#endif</span></td></tr>
+<tr class="codeline" data-linenumber="44"><td class="num" id="LN44">44</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="45"><td class="num" id="LN45">45</td><td class="line"><span class='directive'>#define <span class='macro'>EGG_TYPE_SM_CLIENT_XSMP<span class='macro_popup'>(egg_sm_client_xsmp_get_type ())</span></span> (egg_sm_client_xsmp_get_type ())</span></td></tr>
+<tr class="codeline" data-linenumber="46"><td class="num" id="LN46">46</td><td class="line"><span class='directive'>#define <span class='macro'>EGG_SM_CLIENT_XSMP(obj)<span class='macro_popup'>((((EggSMClientXSMP*) (void *) ((obj)))))</span></span> (<span class='macro'>G_TYPE_CHECK_INSTANCE_CAST ((obj), EGG_TYPE_SM_CLIENT_XSMP, EggSMClientXSMP)<span class='macro_popup'>(((EggSMClientXSMP*) (void *) ((obj))))</span></span>)</span></td></tr>
+<tr class="codeline" data-linenumber="47"><td class="num" id="LN47">47</td><td class="line"><span class='directive'>#define <span class='macro'>EGG_SM_CLIENT_XSMP_CLASS(klass)<span class='macro_popup'>((((EggSMClientXSMPClass*) (void *) ((klass)))))</span></span> (<span class='macro'>G_TYPE_CHECK_CLASS_CAST ((klass), EGG_TYPE_SM_CLIENT_XSMP, EggSMClientXSMPClass)<span class='macro_popup'>(((EggSMClientXSMPClass*) (void *) ((klass))))</span></span>)</span></td></tr>
+<tr class="codeline" data-linenumber="48"><td class="num" id="LN48">48</td><td class="line"><span class='directive'>#define <span class='macro'>EGG_IS_SM_CLIENT_XSMP(obj)<span class='macro_popup'>(((__extension__ ({ GTypeInstance *__inst = (GTypeInstance*) (<br>(obj)); GType __t = ((egg_sm_client_xsmp_get_type ())); gboolean<br> __r; if (!__inst) __r = (0); else if (__inst-&gt;g_class &amp;&amp;<br> __inst-&gt;g_class-&gt;g_type == __t) __r = (!(0)); else __r<br> = g_type_check_instance_is_a (__inst, __t); __r; }))))</span></span> (<span class='macro'>G_TYPE_CHECK_INSTANCE_TYPE ((obj), EGG_TYPE_SM_CLIENT_XSMP)<span class='macro_popup'>((__extension__ ({ GTypeInstance *__inst = (GTypeInstance*) (<br>(obj)); GType __t = ((egg_sm_client_xsmp_get_type ())); gboolean<br> __r; if (!__inst) __r = (0); else if (__inst-&gt;g_class &amp;&amp;<br> __inst-&gt;g_class-&gt;g_type == __t) __r = (!(0)); else __r<br> = g_type_check_instance_is_a (__inst, __t); __r; })))</span></span>)</span></td></tr>
+<tr class="codeline" data-linenumber="49"><td class="num" id="LN49">49</td><td class="line"><span class='directive'>#define <span class='macro'>EGG_IS_SM_CLIENT_XSMP_CLASS(klass)<span class='macro_popup'>(((__extension__ ({ GTypeClass *__class = (GTypeClass*) ((klass<br>)); GType __t = ((egg_sm_client_xsmp_get_type ())); gboolean __r<br>; if (!__class) __r = (0); else if (__class-&gt;g_type == __t<br>) __r = (!(0)); else __r = g_type_check_class_is_a (__class, __t<br>); __r; }))))</span></span> (<span class='macro'>G_TYPE_CHECK_CLASS_TYPE ((klass), EGG_TYPE_SM_CLIENT_XSMP)<span class='macro_popup'>((__extension__ ({ GTypeClass *__class = (GTypeClass*) ((klass<br>)); GType __t = ((egg_sm_client_xsmp_get_type ())); gboolean __r<br>; if (!__class) __r = (0); else if (__class-&gt;g_type == __t<br>) __r = (!(0)); else __r = g_type_check_class_is_a (__class, __t<br>); __r; })))</span></span>)</span></td></tr>
+<tr class="codeline" data-linenumber="50"><td class="num" id="LN50">50</td><td class="line"><span class='directive'>#define <span class='macro'>EGG_SM_CLIENT_XSMP_GET_CLASS(obj)<span class='macro_popup'>((((EggSMClientXSMPClass*) (((GTypeInstance*) ((obj)))-&gt;g_class<br>))))</span></span> (<span class='macro'>G_TYPE_INSTANCE_GET_CLASS ((obj), EGG_TYPE_SM_CLIENT_XSMP, EggSMClientXSMPClass)<span class='macro_popup'>(((EggSMClientXSMPClass*) (((GTypeInstance*) ((obj)))-&gt;g_class<br>)))</span></span>)</span></td></tr>
+<tr class="codeline" data-linenumber="51"><td class="num" id="LN51">51</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="52"><td class="num" id="LN52">52</td><td class="line"><span class='keyword'>typedef</span> <span class='keyword'>struct</span> _EggSMClientXSMP EggSMClientXSMP;</td></tr>
+<tr class="codeline" data-linenumber="53"><td class="num" id="LN53">53</td><td class="line"><span class='keyword'>typedef</span> <span class='keyword'>struct</span> _EggSMClientXSMPClass EggSMClientXSMPClass;</td></tr>
+<tr class="codeline" data-linenumber="54"><td class="num" id="LN54">54</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="55"><td class="num" id="LN55">55</td><td class="line"><span class='comment'>/* These mostly correspond to the similarly-named states in section</span></td></tr>
+<tr class="codeline" data-linenumber="56"><td class="num" id="LN56">56</td><td class="line"> <span class='comment'>* 9.1 of the XSMP spec. Some of the states there aren't represented</span></td></tr>
+<tr class="codeline" data-linenumber="57"><td class="num" id="LN57">57</td><td class="line"> <span class='comment'>* here, because we don't need them. SHUTDOWN_CANCELLED is slightly</span></td></tr>
+<tr class="codeline" data-linenumber="58"><td class="num" id="LN58">58</td><td class="line"> <span class='comment'>* different from the spec; we use it when the client is IDLE after a</span></td></tr>
+<tr class="codeline" data-linenumber="59"><td class="num" id="LN59">59</td><td class="line"> <span class='comment'>* ShutdownCancelled message, but the application is still interacting</span></td></tr>
+<tr class="codeline" data-linenumber="60"><td class="num" id="LN60">60</td><td class="line"> <span class='comment'>* and doesn't know the shutdown has been cancelled yet.</span></td></tr>
+<tr class="codeline" data-linenumber="61"><td class="num" id="LN61">61</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="62"><td class="num" id="LN62">62</td><td class="line"><span class='keyword'>typedef</span> <span class='keyword'>enum</span></td></tr>
+<tr class="codeline" data-linenumber="63"><td class="num" id="LN63">63</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="64"><td class="num" id="LN64">64</td><td class="line"> XSMP_STATE_IDLE,</td></tr>
+<tr class="codeline" data-linenumber="65"><td class="num" id="LN65">65</td><td class="line"> XSMP_STATE_SAVE_YOURSELF,</td></tr>
+<tr class="codeline" data-linenumber="66"><td class="num" id="LN66">66</td><td class="line"> XSMP_STATE_INTERACT_REQUEST,</td></tr>
+<tr class="codeline" data-linenumber="67"><td class="num" id="LN67">67</td><td class="line"> XSMP_STATE_INTERACT,</td></tr>
+<tr class="codeline" data-linenumber="68"><td class="num" id="LN68">68</td><td class="line"> XSMP_STATE_SAVE_YOURSELF_DONE,</td></tr>
+<tr class="codeline" data-linenumber="69"><td class="num" id="LN69">69</td><td class="line"> XSMP_STATE_SHUTDOWN_CANCELLED,</td></tr>
+<tr class="codeline" data-linenumber="70"><td class="num" id="LN70">70</td><td class="line"> XSMP_STATE_CONNECTION_CLOSED</td></tr>
+<tr class="codeline" data-linenumber="71"><td class="num" id="LN71">71</td><td class="line">} EggSMClientXSMPState;</td></tr>
+<tr class="codeline" data-linenumber="72"><td class="num" id="LN72">72</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="73"><td class="num" id="LN73">73</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>const</span> <span class='keyword'>char</span> *state_names[] =</td></tr>
+<tr class="codeline" data-linenumber="74"><td class="num" id="LN74">74</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="75"><td class="num" id="LN75">75</td><td class="line"> <span class='string_literal'>"idle"</span>,</td></tr>
+<tr class="codeline" data-linenumber="76"><td class="num" id="LN76">76</td><td class="line"> <span class='string_literal'>"save-yourself"</span>,</td></tr>
+<tr class="codeline" data-linenumber="77"><td class="num" id="LN77">77</td><td class="line"> <span class='string_literal'>"interact-request"</span>,</td></tr>
+<tr class="codeline" data-linenumber="78"><td class="num" id="LN78">78</td><td class="line"> <span class='string_literal'>"interact"</span>,</td></tr>
+<tr class="codeline" data-linenumber="79"><td class="num" id="LN79">79</td><td class="line"> <span class='string_literal'>"save-yourself-done"</span>,</td></tr>
+<tr class="codeline" data-linenumber="80"><td class="num" id="LN80">80</td><td class="line"> <span class='string_literal'>"shutdown-cancelled"</span>,</td></tr>
+<tr class="codeline" data-linenumber="81"><td class="num" id="LN81">81</td><td class="line"> <span class='string_literal'>"connection-closed"</span></td></tr>
+<tr class="codeline" data-linenumber="82"><td class="num" id="LN82">82</td><td class="line">};</td></tr>
+<tr class="codeline" data-linenumber="83"><td class="num" id="LN83">83</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="84"><td class="num" id="LN84">84</td><td class="line"><span class='directive'>#define <span class='macro'>EGG_SM_CLIENT_XSMP_STATE(xsmp)<span class='macro_popup'>(state_names[(xsmp)-&gt;state])</span></span> (state_names[(xsmp)-&gt;state])</span></td></tr>
+<tr class="codeline" data-linenumber="85"><td class="num" id="LN85">85</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="86"><td class="num" id="LN86">86</td><td class="line"><span class='keyword'>struct</span> _EggSMClientXSMP</td></tr>
+<tr class="codeline" data-linenumber="87"><td class="num" id="LN87">87</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="88"><td class="num" id="LN88">88</td><td class="line"> EggSMClient parent;</td></tr>
+<tr class="codeline" data-linenumber="89"><td class="num" id="LN89">89</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="90"><td class="num" id="LN90">90</td><td class="line"> SmcConn connection;</td></tr>
+<tr class="codeline" data-linenumber="91"><td class="num" id="LN91">91</td><td class="line"> <span class='keyword'>char</span> *client_id;</td></tr>
+<tr class="codeline" data-linenumber="92"><td class="num" id="LN92">92</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="93"><td class="num" id="LN93">93</td><td class="line"> EggSMClientXSMPState state;</td></tr>
+<tr class="codeline" data-linenumber="94"><td class="num" id="LN94">94</td><td class="line"> <span class='keyword'>char</span> **restart_command;</td></tr>
+<tr class="codeline" data-linenumber="95"><td class="num" id="LN95">95</td><td class="line"> gboolean set_restart_command;</td></tr>
+<tr class="codeline" data-linenumber="96"><td class="num" id="LN96">96</td><td class="line"> <span class='keyword'>int</span> restart_style;</td></tr>
+<tr class="codeline" data-linenumber="97"><td class="num" id="LN97">97</td><td class="line"> <span class='keyword'>char</span> **discard_command;</td></tr>
+<tr class="codeline" data-linenumber="98"><td class="num" id="LN98">98</td><td class="line"> gboolean set_discard_command;</td></tr>
+<tr class="codeline" data-linenumber="99"><td class="num" id="LN99">99</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="100"><td class="num" id="LN100">100</td><td class="line"> guint idle;</td></tr>
+<tr class="codeline" data-linenumber="101"><td class="num" id="LN101">101</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="102"><td class="num" id="LN102">102</td><td class="line"> <span class='comment'>/* Current SaveYourself state */</span></td></tr>
+<tr class="codeline" data-linenumber="103"><td class="num" id="LN103">103</td><td class="line"> guint expecting_initial_save_yourself : 1;</td></tr>
+<tr class="codeline" data-linenumber="104"><td class="num" id="LN104">104</td><td class="line"> guint need_save_state : 1;</td></tr>
+<tr class="codeline" data-linenumber="105"><td class="num" id="LN105">105</td><td class="line"> guint need_quit_requested : 1;</td></tr>
+<tr class="codeline" data-linenumber="106"><td class="num" id="LN106">106</td><td class="line"> guint interact_errors : 1;</td></tr>
+<tr class="codeline" data-linenumber="107"><td class="num" id="LN107">107</td><td class="line"> guint shutting_down : 1;</td></tr>
+<tr class="codeline" data-linenumber="108"><td class="num" id="LN108">108</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="109"><td class="num" id="LN109">109</td><td class="line"> <span class='comment'>/* Todo list */</span></td></tr>
+<tr class="codeline" data-linenumber="110"><td class="num" id="LN110">110</td><td class="line"> guint waiting_to_set_initial_properties : 1;</td></tr>
+<tr class="codeline" data-linenumber="111"><td class="num" id="LN111">111</td><td class="line"> guint waiting_to_emit_quit : 1;</td></tr>
+<tr class="codeline" data-linenumber="112"><td class="num" id="LN112">112</td><td class="line"> guint waiting_to_emit_quit_cancelled : 1;</td></tr>
+<tr class="codeline" data-linenumber="113"><td class="num" id="LN113">113</td><td class="line"> guint waiting_to_save_myself : 1;</td></tr>
+<tr class="codeline" data-linenumber="114"><td class="num" id="LN114">114</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="115"><td class="num" id="LN115">115</td><td class="line">};</td></tr>
+<tr class="codeline" data-linenumber="116"><td class="num" id="LN116">116</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="117"><td class="num" id="LN117">117</td><td class="line"><span class='keyword'>struct</span> _EggSMClientXSMPClass</td></tr>
+<tr class="codeline" data-linenumber="118"><td class="num" id="LN118">118</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="119"><td class="num" id="LN119">119</td><td class="line"> EggSMClientClass parent_class;</td></tr>
+<tr class="codeline" data-linenumber="120"><td class="num" id="LN120">120</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="121"><td class="num" id="LN121">121</td><td class="line">};</td></tr>
+<tr class="codeline" data-linenumber="122"><td class="num" id="LN122">122</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="123"><td class="num" id="LN123">123</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span> sm_client_xsmp_startup (EggSMClient *client,</td></tr>
+<tr class="codeline" data-linenumber="124"><td class="num" id="LN124">124</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *client_id);</td></tr>
+<tr class="codeline" data-linenumber="125"><td class="num" id="LN125">125</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span> sm_client_xsmp_set_restart_command (EggSMClient *client,</td></tr>
+<tr class="codeline" data-linenumber="126"><td class="num" id="LN126">126</td><td class="line"> <span class='keyword'>int</span> argc,</td></tr>
+<tr class="codeline" data-linenumber="127"><td class="num" id="LN127">127</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> **argv);</td></tr>
+<tr class="codeline" data-linenumber="128"><td class="num" id="LN128">128</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span> sm_client_xsmp_set_discard_command (EggSMClient *client,</td></tr>
+<tr class="codeline" data-linenumber="129"><td class="num" id="LN129">129</td><td class="line"> <span class='keyword'>int</span> argc,</td></tr>
+<tr class="codeline" data-linenumber="130"><td class="num" id="LN130">130</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> **argv);</td></tr>
+<tr class="codeline" data-linenumber="131"><td class="num" id="LN131">131</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span> sm_client_xsmp_will_quit (EggSMClient *client,</td></tr>
+<tr class="codeline" data-linenumber="132"><td class="num" id="LN132">132</td><td class="line"> gboolean will_quit);</td></tr>
+<tr class="codeline" data-linenumber="133"><td class="num" id="LN133">133</td><td class="line"><span class='keyword'>static</span> gboolean sm_client_xsmp_end_session (EggSMClient *client,</td></tr>
+<tr class="codeline" data-linenumber="134"><td class="num" id="LN134">134</td><td class="line"> EggSMClientEndStyle style,</td></tr>
+<tr class="codeline" data-linenumber="135"><td class="num" id="LN135">135</td><td class="line"> gboolean request_confirmation);</td></tr>
+<tr class="codeline" data-linenumber="136"><td class="num" id="LN136">136</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="137"><td class="num" id="LN137">137</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span> xsmp_save_yourself (SmcConn smc_conn,</td></tr>
+<tr class="codeline" data-linenumber="138"><td class="num" id="LN138">138</td><td class="line"> SmPointer client_data,</td></tr>
+<tr class="codeline" data-linenumber="139"><td class="num" id="LN139">139</td><td class="line"> <span class='keyword'>int</span> save_style,</td></tr>
+<tr class="codeline" data-linenumber="140"><td class="num" id="LN140">140</td><td class="line"> <span class='macro'>Bool<span class='macro_popup'>int</span></span> shutdown,</td></tr>
+<tr class="codeline" data-linenumber="141"><td class="num" id="LN141">141</td><td class="line"> <span class='keyword'>int</span> interact_style,</td></tr>
+<tr class="codeline" data-linenumber="142"><td class="num" id="LN142">142</td><td class="line"> <span class='macro'>Bool<span class='macro_popup'>int</span></span> fast);</td></tr>
+<tr class="codeline" data-linenumber="143"><td class="num" id="LN143">143</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span> xsmp_die (SmcConn smc_conn,</td></tr>
+<tr class="codeline" data-linenumber="144"><td class="num" id="LN144">144</td><td class="line"> SmPointer client_data);</td></tr>
+<tr class="codeline" data-linenumber="145"><td class="num" id="LN145">145</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span> xsmp_save_complete (SmcConn smc_conn,</td></tr>
+<tr class="codeline" data-linenumber="146"><td class="num" id="LN146">146</td><td class="line"> SmPointer client_data);</td></tr>
+<tr class="codeline" data-linenumber="147"><td class="num" id="LN147">147</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span> xsmp_shutdown_cancelled (SmcConn smc_conn,</td></tr>
+<tr class="codeline" data-linenumber="148"><td class="num" id="LN148">148</td><td class="line"> SmPointer client_data);</td></tr>
+<tr class="codeline" data-linenumber="149"><td class="num" id="LN149">149</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span> xsmp_interact (SmcConn smc_conn,</td></tr>
+<tr class="codeline" data-linenumber="150"><td class="num" id="LN150">150</td><td class="line"> SmPointer client_data);</td></tr>
+<tr class="codeline" data-linenumber="151"><td class="num" id="LN151">151</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="152"><td class="num" id="LN152">152</td><td class="line"><span class='keyword'>static</span> SmProp *array_prop (<span class='keyword'>const</span> <span class='keyword'>char</span> *name,</td></tr>
+<tr class="codeline" data-linenumber="153"><td class="num" id="LN153">153</td><td class="line"> ...);</td></tr>
+<tr class="codeline" data-linenumber="154"><td class="num" id="LN154">154</td><td class="line"><span class='keyword'>static</span> SmProp *ptrarray_prop (<span class='keyword'>const</span> <span class='keyword'>char</span> *name,</td></tr>
+<tr class="codeline" data-linenumber="155"><td class="num" id="LN155">155</td><td class="line"> GPtrArray *values);</td></tr>
+<tr class="codeline" data-linenumber="156"><td class="num" id="LN156">156</td><td class="line"><span class='keyword'>static</span> SmProp *string_prop (<span class='keyword'>const</span> <span class='keyword'>char</span> *name,</td></tr>
+<tr class="codeline" data-linenumber="157"><td class="num" id="LN157">157</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *value);</td></tr>
+<tr class="codeline" data-linenumber="158"><td class="num" id="LN158">158</td><td class="line"><span class='keyword'>static</span> SmProp *card8_prop (<span class='keyword'>const</span> <span class='keyword'>char</span> *name,</td></tr>
+<tr class="codeline" data-linenumber="159"><td class="num" id="LN159">159</td><td class="line"> <span class='keyword'>unsigned</span> <span class='keyword'>char</span> value);</td></tr>
+<tr class="codeline" data-linenumber="160"><td class="num" id="LN160">160</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="161"><td class="num" id="LN161">161</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span> set_properties (EggSMClientXSMP *xsmp, ...);</td></tr>
+<tr class="codeline" data-linenumber="162"><td class="num" id="LN162">162</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span> delete_properties (EggSMClientXSMP *xsmp, ...);</td></tr>
+<tr class="codeline" data-linenumber="163"><td class="num" id="LN163">163</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="164"><td class="num" id="LN164">164</td><td class="line"><span class='keyword'>static</span> GPtrArray *generate_command (<span class='keyword'>char</span> **restart_command,</td></tr>
+<tr class="codeline" data-linenumber="165"><td class="num" id="LN165">165</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *client_id,</td></tr>
+<tr class="codeline" data-linenumber="166"><td class="num" id="LN166">166</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *state_file);</td></tr>
+<tr class="codeline" data-linenumber="167"><td class="num" id="LN167">167</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="168"><td class="num" id="LN168">168</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span> save_state (EggSMClientXSMP *xsmp);</td></tr>
+<tr class="codeline" data-linenumber="169"><td class="num" id="LN169">169</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span> do_save_yourself (EggSMClientXSMP *xsmp);</td></tr>
+<tr class="codeline" data-linenumber="170"><td class="num" id="LN170">170</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span> update_pending_events (EggSMClientXSMP *xsmp);</td></tr>
+<tr class="codeline" data-linenumber="171"><td class="num" id="LN171">171</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="172"><td class="num" id="LN172">172</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span> ice_init (<span class='keyword'>void</span>);</td></tr>
+<tr class="codeline" data-linenumber="173"><td class="num" id="LN173">173</td><td class="line"><span class='keyword'>static</span> gboolean process_ice_messages (IceConn ice_conn);</td></tr>
+<tr class="codeline" data-linenumber="174"><td class="num" id="LN174">174</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span> smc_error_handler (SmcConn smc_conn,</td></tr>
+<tr class="codeline" data-linenumber="175"><td class="num" id="LN175">175</td><td class="line"> <span class='macro'>Bool<span class='macro_popup'>int</span></span> swap,</td></tr>
+<tr class="codeline" data-linenumber="176"><td class="num" id="LN176">176</td><td class="line"> <span class='keyword'>int</span> offending_minor_opcode,</td></tr>
+<tr class="codeline" data-linenumber="177"><td class="num" id="LN177">177</td><td class="line"> <span class='keyword'>unsigned</span> <span class='keyword'>long</span> offending_sequence,</td></tr>
+<tr class="codeline" data-linenumber="178"><td class="num" id="LN178">178</td><td class="line"> <span class='keyword'>int</span> error_class,</td></tr>
+<tr class="codeline" data-linenumber="179"><td class="num" id="LN179">179</td><td class="line"> <span class='keyword'>int</span> severity,</td></tr>
+<tr class="codeline" data-linenumber="180"><td class="num" id="LN180">180</td><td class="line"> SmPointer values);</td></tr>
+<tr class="codeline" data-linenumber="181"><td class="num" id="LN181">181</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="182"><td class="num" id="LN182">182</td><td class="line"><span class='macro'>G_DEFINE_TYPE (EggSMClientXSMP, egg_sm_client_xsmp, EGG_TYPE_SM_CLIENT)<span class='macro_popup'>static void egg_sm_client_xsmp_init (EggSMClientXSMP *self); static<br> void egg_sm_client_xsmp_class_init (EggSMClientXSMPClass *klass<br>); static GType egg_sm_client_xsmp_get_type_once (void); static<br> gpointer egg_sm_client_xsmp_parent_class = ((void*)0); static<br> gint EggSMClientXSMP_private_offset; static void egg_sm_client_xsmp_class_intern_init<br> (gpointer klass) { egg_sm_client_xsmp_parent_class = g_type_class_peek_parent<br> (klass); if (EggSMClientXSMP_private_offset != 0) g_type_class_adjust_private_offset<br> (klass, &amp;EggSMClientXSMP_private_offset); egg_sm_client_xsmp_class_init<br> ((EggSMClientXSMPClass*) klass); } __attribute__ ((__unused__<br>)) static inline gpointer egg_sm_client_xsmp_get_instance_private<br> (EggSMClientXSMP *self) { return (((gpointer) ((guint8*) (self<br>) + (glong) (EggSMClientXSMP_private_offset)))); } GType egg_sm_client_xsmp_get_type<br> (void) { static gsize static_g_define_type_id = 0; if ((__extension__<br> ({ _Static_assert (sizeof *(&amp;static_g_define_type_id) ==<br> sizeof (gpointer), "Expression evaluates to false"); (void) (<br>0 ? (gpointer) *(&amp;static_g_define_type_id) : ((void*)0));<br> (!(__extension__ ({ _Static_assert (sizeof *(&amp;static_g_define_type_id<br>) == sizeof (gpointer), "Expression evaluates to false"); __typeof__<br> (*(&amp;static_g_define_type_id)) gapg_temp_newval; __typeof__<br> ((&amp;static_g_define_type_id)) gapg_temp_atomic = (&amp;static_g_define_type_id<br>); __atomic_load (gapg_temp_atomic, &amp;gapg_temp_newval, 5)<br>; gapg_temp_newval; })) &amp;&amp; g_once_init_enter (&amp;static_g_define_type_id<br>)); }))) { GType g_define_type_id = egg_sm_client_xsmp_get_type_once<br> (); (__extension__ ({ _Static_assert (sizeof *(&amp;static_g_define_type_id<br>) == sizeof (gpointer), "Expression evaluates to false"); 0 ?<br> (void) (*(&amp;static_g_define_type_id) = (g_define_type_id)<br>) : (void) 0; g_once_init_leave ((&amp;static_g_define_type_id<br>), (gsize) (g_define_type_id)); })); } return static_g_define_type_id<br>; } __attribute__ ((__noinline__)) static GType egg_sm_client_xsmp_get_type_once<br> (void) { GType g_define_type_id = g_type_register_static_simple<br> ((egg_sm_client_get_type ()), g_intern_static_string ("EggSMClientXSMP"<br>), sizeof (EggSMClientXSMPClass), (GClassInitFunc)(void (*)(void<br>)) egg_sm_client_xsmp_class_intern_init, sizeof (EggSMClientXSMP<br>), (GInstanceInitFunc)(void (*)(void)) egg_sm_client_xsmp_init<br>, (GTypeFlags) 0); { {{};} } return g_define_type_id; }</span></span></td></tr>
+<tr class="codeline" data-linenumber="183"><td class="num" id="LN183">183</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="184"><td class="num" id="LN184">184</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="185"><td class="num" id="LN185">185</td><td class="line">egg_sm_client_xsmp_init (EggSMClientXSMP *xsmp)</td></tr>
+<tr class="codeline" data-linenumber="186"><td class="num" id="LN186">186</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="187"><td class="num" id="LN187">187</td><td class="line"> xsmp-&gt;state = XSMP_STATE_CONNECTION_CLOSED;</td></tr>
+<tr class="codeline" data-linenumber="188"><td class="num" id="LN188">188</td><td class="line"> xsmp-&gt;connection = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="189"><td class="num" id="LN189">189</td><td class="line"> xsmp-&gt;restart_style = <span class='macro'>SmRestartIfRunning<span class='macro_popup'>0</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="190"><td class="num" id="LN190">190</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="191"><td class="num" id="LN191">191</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="192"><td class="num" id="LN192">192</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="193"><td class="num" id="LN193">193</td><td class="line">egg_sm_client_xsmp_class_init (EggSMClientXSMPClass *klass)</td></tr>
+<tr class="codeline" data-linenumber="194"><td class="num" id="LN194">194</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="195"><td class="num" id="LN195">195</td><td class="line"> EggSMClientClass *sm_client_class = EGG_SM_CLIENT_CLASS (klass);</td></tr>
+<tr class="codeline" data-linenumber="196"><td class="num" id="LN196">196</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="197"><td class="num" id="LN197">197</td><td class="line"> sm_client_class-&gt;startup = sm_client_xsmp_startup;</td></tr>
+<tr class="codeline" data-linenumber="198"><td class="num" id="LN198">198</td><td class="line"> sm_client_class-&gt;set_restart_command = sm_client_xsmp_set_restart_command;</td></tr>
+<tr class="codeline" data-linenumber="199"><td class="num" id="LN199">199</td><td class="line"> sm_client_class-&gt;set_discard_command = sm_client_xsmp_set_discard_command;</td></tr>
+<tr class="codeline" data-linenumber="200"><td class="num" id="LN200">200</td><td class="line"> sm_client_class-&gt;will_quit = sm_client_xsmp_will_quit;</td></tr>
+<tr class="codeline" data-linenumber="201"><td class="num" id="LN201">201</td><td class="line"> sm_client_class-&gt;end_session = sm_client_xsmp_end_session;</td></tr>
+<tr class="codeline" data-linenumber="202"><td class="num" id="LN202">202</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="203"><td class="num" id="LN203">203</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="204"><td class="num" id="LN204">204</td><td class="line">EggSMClient *</td></tr>
+<tr class="codeline" data-linenumber="205"><td class="num" id="LN205">205</td><td class="line">egg_sm_client_xsmp_new (<span class='keyword'>void</span>)</td></tr>
+<tr class="codeline" data-linenumber="206"><td class="num" id="LN206">206</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="207"><td class="num" id="LN207">207</td><td class="line"> <span class='keyword'>if</span> (!g_getenv (<span class='string_literal'>"SESSION_MANAGER"</span>))</td></tr>
+<tr class="codeline" data-linenumber="208"><td class="num" id="LN208">208</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="209"><td class="num" id="LN209">209</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="210"><td class="num" id="LN210">210</td><td class="line"> <span class='keyword'>return</span> g_object_new (<span class='macro'>EGG_TYPE_SM_CLIENT_XSMP<span class='macro_popup'>(egg_sm_client_xsmp_get_type ())</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="211"><td class="num" id="LN211">211</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="212"><td class="num" id="LN212">212</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="213"><td class="num" id="LN213">213</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="214"><td class="num" id="LN214">214</td><td class="line">sm_client_xsmp_set_initial_properties (gpointer user_data)</td></tr>
+<tr class="codeline" data-linenumber="215"><td class="num" id="LN215">215</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="216"><td class="num" id="LN216">216</td><td class="line"> EggSMClientXSMP *xsmp = user_data;</td></tr>
+<tr class="codeline" data-linenumber="217"><td class="num" id="LN217">217</td><td class="line"> EggDesktopFile *desktop_file;</td></tr>
+<tr class="codeline" data-linenumber="218"><td class="num" id="LN218">218</td><td class="line"> GPtrArray *clone, *restart;</td></tr>
+<tr class="codeline" data-linenumber="219"><td class="num" id="LN219">219</td><td class="line"> <span class='keyword'>char</span> pid_str[64];</td></tr>
+<tr class="codeline" data-linenumber="220"><td class="num" id="LN220">220</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="221"><td class="num" id="LN221">221</td><td class="line"> <span class='keyword'>if</span> (xsmp-&gt;idle)</td></tr>
+<tr class="codeline" data-linenumber="222"><td class="num" id="LN222">222</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="223"><td class="num" id="LN223">223</td><td class="line"> g_source_remove (xsmp-&gt;idle);</td></tr>
+<tr class="codeline" data-linenumber="224"><td class="num" id="LN224">224</td><td class="line"> xsmp-&gt;idle = 0;</td></tr>
+<tr class="codeline" data-linenumber="225"><td class="num" id="LN225">225</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="226"><td class="num" id="LN226">226</td><td class="line"> xsmp-&gt;waiting_to_set_initial_properties = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="227"><td class="num" id="LN227">227</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="228"><td class="num" id="LN228">228</td><td class="line"> <span class='keyword'>if</span> (egg_sm_client_get_mode () == EGG_SM_CLIENT_MODE_NO_RESTART)</td></tr>
+<tr class="codeline" data-linenumber="229"><td class="num" id="LN229">229</td><td class="line"> xsmp-&gt;restart_style = <span class='macro'>SmRestartNever<span class='macro_popup'>3</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="230"><td class="num" id="LN230">230</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="231"><td class="num" id="LN231">231</td><td class="line"> <span class='comment'>/* Parse info out of desktop file */</span></td></tr>
+<tr class="codeline" data-linenumber="232"><td class="num" id="LN232">232</td><td class="line"> desktop_file = egg_get_desktop_file ();</td></tr>
+<tr class="codeline" data-linenumber="233"><td class="num" id="LN233">233</td><td class="line"> <span class='keyword'>if</span> (desktop_file)</td></tr>
+<tr class="codeline" data-linenumber="234"><td class="num" id="LN234">234</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="235"><td class="num" id="LN235">235</td><td class="line"> GError *err = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="236"><td class="num" id="LN236">236</td><td class="line"> <span class='keyword'>char</span> **argv;</td></tr>
+<tr class="codeline" data-linenumber="237"><td class="num" id="LN237">237</td><td class="line"> <span class='keyword'>int</span> argc;</td></tr>
+<tr class="codeline" data-linenumber="238"><td class="num" id="LN238">238</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="239"><td class="num" id="LN239">239</td><td class="line"> <span class='keyword'>if</span> (xsmp-&gt;restart_style == <span class='macro'>SmRestartIfRunning<span class='macro_popup'>0</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="240"><td class="num" id="LN240">240</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="241"><td class="num" id="LN241">241</td><td class="line"> <span class='keyword'>if</span> (egg_desktop_file_get_boolean (desktop_file,</td></tr>
+<tr class="codeline" data-linenumber="242"><td class="num" id="LN242">242</td><td class="line"> <span class='string_literal'>"X-MATE-AutoRestart"</span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>))</td></tr>
+<tr class="codeline" data-linenumber="243"><td class="num" id="LN243">243</td><td class="line"> xsmp-&gt;restart_style = <span class='macro'>SmRestartImmediately<span class='macro_popup'>2</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="244"><td class="num" id="LN244">244</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="245"><td class="num" id="LN245">245</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="246"><td class="num" id="LN246">246</td><td class="line"> <span class='keyword'>if</span> (!xsmp-&gt;set_restart_command)</td></tr>
+<tr class="codeline" data-linenumber="247"><td class="num" id="LN247">247</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="248"><td class="num" id="LN248">248</td><td class="line"> <span class='keyword'>char</span> *cmdline;</td></tr>
+<tr class="codeline" data-linenumber="249"><td class="num" id="LN249">249</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="250"><td class="num" id="LN250">250</td><td class="line"> cmdline = egg_desktop_file_parse_exec (desktop_file, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, &amp;err);</td></tr>
+<tr class="codeline" data-linenumber="251"><td class="num" id="LN251">251</td><td class="line"> <span class='keyword'>if</span> (cmdline &amp;&amp; g_shell_parse_argv (cmdline, &amp;argc, &amp;argv, &amp;err))</td></tr>
+<tr class="codeline" data-linenumber="252"><td class="num" id="LN252">252</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="253"><td class="num" id="LN253">253</td><td class="line"> egg_sm_client_set_restart_command (EGG_SM_CLIENT (xsmp),</td></tr>
+<tr class="codeline" data-linenumber="254"><td class="num" id="LN254">254</td><td class="line"> argc, (<span class='keyword'>const</span> <span class='keyword'>char</span> **)argv);</td></tr>
+<tr class="codeline" data-linenumber="255"><td class="num" id="LN255">255</td><td class="line"> g_strfreev (argv);</td></tr>
+<tr class="codeline" data-linenumber="256"><td class="num" id="LN256">256</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="257"><td class="num" id="LN257">257</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="258"><td class="num" id="LN258">258</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="259"><td class="num" id="LN259">259</td><td class="line"> g_warning (<span class='string_literal'>"Could not parse Exec line in desktop file: %s"</span>,</td></tr>
+<tr class="codeline" data-linenumber="260"><td class="num" id="LN260">260</td><td class="line"> err-&gt;message);</td></tr>
+<tr class="codeline" data-linenumber="261"><td class="num" id="LN261">261</td><td class="line"> g_error_free (err);</td></tr>
+<tr class="codeline" data-linenumber="262"><td class="num" id="LN262">262</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="263"><td class="num" id="LN263">263</td><td class="line"> g_free (cmdline);</td></tr>
+<tr class="codeline" data-linenumber="264"><td class="num" id="LN264">264</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="265"><td class="num" id="LN265">265</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="266"><td class="num" id="LN266">266</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="267"><td class="num" id="LN267">267</td><td class="line"> <span class='keyword'>if</span> (!xsmp-&gt;set_restart_command)</td></tr>
+<tr class="codeline" data-linenumber="268"><td class="num" id="LN268">268</td><td class="line"> xsmp-&gt;restart_command = g_strsplit (g_get_prgname (), <span class='string_literal'>" "</span>, -1);</td></tr>
+<tr class="codeline" data-linenumber="269"><td class="num" id="LN269">269</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="270"><td class="num" id="LN270">270</td><td class="line"> clone = generate_command (xsmp-&gt;restart_command, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="271"><td class="num" id="LN271">271</td><td class="line"> restart = generate_command (xsmp-&gt;restart_command, xsmp-&gt;client_id, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="272"><td class="num" id="LN272">272</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="273"><td class="num" id="LN273">273</td><td class="line"> g_debug (<span class='string_literal'>"Setting initial properties"</span>);</td></tr>
+<tr class="codeline" data-linenumber="274"><td class="num" id="LN274">274</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="275"><td class="num" id="LN275">275</td><td class="line"> <span class='comment'>/* Program, CloneCommand, RestartCommand, and UserID are required.</span></td></tr>
+<tr class="codeline" data-linenumber="276"><td class="num" id="LN276">276</td><td class="line"> <span class='comment'>* ProcessID isn't required, but the SM may be able to do something</span></td></tr>
+<tr class="codeline" data-linenumber="277"><td class="num" id="LN277">277</td><td class="line"> <span class='comment'>* useful with it.</span></td></tr>
+<tr class="codeline" data-linenumber="278"><td class="num" id="LN278">278</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="279"><td class="num" id="LN279">279</td><td class="line"> g_snprintf (pid_str, <span class='keyword'>sizeof</span> (pid_str), <span class='string_literal'>"%lu"</span>, (gulong) getpid ());</td></tr>
+<tr class="codeline" data-linenumber="280"><td class="num" id="LN280">280</td><td class="line"> set_properties (xsmp,</td></tr>
+<tr class="codeline" data-linenumber="281"><td class="num" id="LN281">281</td><td class="line"> string_prop (<span class='macro'>SmProgram<span class='macro_popup'>"Program"</span></span>, g_get_prgname ()),</td></tr>
+<tr class="codeline" data-linenumber="282"><td class="num" id="LN282">282</td><td class="line"> ptrarray_prop (<span class='macro'>SmCloneCommand<span class='macro_popup'>"CloneCommand"</span></span>, clone),</td></tr>
+<tr class="codeline" data-linenumber="283"><td class="num" id="LN283">283</td><td class="line"> ptrarray_prop (<span class='macro'>SmRestartCommand<span class='macro_popup'>"RestartCommand"</span></span>, restart),</td></tr>
+<tr class="codeline" data-linenumber="284"><td class="num" id="LN284">284</td><td class="line"> string_prop (<span class='macro'>SmUserID<span class='macro_popup'>"UserID"</span></span>, g_get_user_name ()),</td></tr>
+<tr class="codeline" data-linenumber="285"><td class="num" id="LN285">285</td><td class="line"> string_prop (<span class='macro'>SmProcessID<span class='macro_popup'>"ProcessID"</span></span>, pid_str),</td></tr>
+<tr class="codeline" data-linenumber="286"><td class="num" id="LN286">286</td><td class="line"> card8_prop (<span class='macro'>SmRestartStyleHint<span class='macro_popup'>"RestartStyleHint"</span></span>, xsmp-&gt;restart_style),</td></tr>
+<tr class="codeline" data-linenumber="287"><td class="num" id="LN287">287</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="288"><td class="num" id="LN288">288</td><td class="line"> g_ptr_array_free (clone, <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="289"><td class="num" id="LN289">289</td><td class="line"> g_ptr_array_free (restart, <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="290"><td class="num" id="LN290">290</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="291"><td class="num" id="LN291">291</td><td class="line"> <span class='keyword'>if</span> (desktop_file)</td></tr>
+<tr class="codeline" data-linenumber="292"><td class="num" id="LN292">292</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="293"><td class="num" id="LN293">293</td><td class="line"> set_properties (xsmp,</td></tr>
+<tr class="codeline" data-linenumber="294"><td class="num" id="LN294">294</td><td class="line"> string_prop (<span class='string_literal'>"_GSM_DesktopFile"</span>, egg_desktop_file_get_source (desktop_file)),</td></tr>
+<tr class="codeline" data-linenumber="295"><td class="num" id="LN295">295</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="296"><td class="num" id="LN296">296</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="297"><td class="num" id="LN297">297</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="298"><td class="num" id="LN298">298</td><td class="line"> update_pending_events (xsmp);</td></tr>
+<tr class="codeline" data-linenumber="299"><td class="num" id="LN299">299</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="300"><td class="num" id="LN300">300</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="301"><td class="num" id="LN301">301</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="302"><td class="num" id="LN302">302</td><td class="line"><span class='comment'>/* This gets called from two different places: xsmp_die() (when the</span></td></tr>
+<tr class="codeline" data-linenumber="303"><td class="num" id="LN303">303</td><td class="line"> <span class='comment'>* server asks us to disconnect) and process_ice_messages() (when the</span></td></tr>
+<tr class="codeline" data-linenumber="304"><td class="num" id="LN304">304</td><td class="line"> <span class='comment'>* server disconnects unexpectedly).</span></td></tr>
+<tr class="codeline" data-linenumber="305"><td class="num" id="LN305">305</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="306"><td class="num" id="LN306">306</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="307"><td class="num" id="LN307">307</td><td class="line">sm_client_xsmp_disconnect (EggSMClientXSMP *xsmp)</td></tr>
+<tr class="codeline" data-linenumber="308"><td class="num" id="LN308">308</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="309"><td class="num" id="LN309">309</td><td class="line"> SmcConn connection;</td></tr>
+<tr class="codeline" data-linenumber="310"><td class="num" id="LN310">310</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="311"><td class="num" id="LN311">311</td><td class="line"> <span class='keyword'>if</span> (!xsmp-&gt;connection)</td></tr>
+<tr class="codeline" data-linenumber="312"><td class="num" id="LN312">312</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="313"><td class="num" id="LN313">313</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="314"><td class="num" id="LN314">314</td><td class="line"> g_debug (<span class='string_literal'>"Disconnecting"</span>);</td></tr>
+<tr class="codeline" data-linenumber="315"><td class="num" id="LN315">315</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="316"><td class="num" id="LN316">316</td><td class="line"> connection = xsmp-&gt;connection;</td></tr>
+<tr class="codeline" data-linenumber="317"><td class="num" id="LN317">317</td><td class="line"> xsmp-&gt;connection = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="318"><td class="num" id="LN318">318</td><td class="line"> SmcCloseConnection (connection, 0, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="319"><td class="num" id="LN319">319</td><td class="line"> xsmp-&gt;state = XSMP_STATE_CONNECTION_CLOSED;</td></tr>
+<tr class="codeline" data-linenumber="320"><td class="num" id="LN320">320</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="321"><td class="num" id="LN321">321</td><td class="line"> xsmp-&gt;waiting_to_save_myself = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="322"><td class="num" id="LN322">322</td><td class="line"> update_pending_events (xsmp);</td></tr>
+<tr class="codeline" data-linenumber="323"><td class="num" id="LN323">323</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="324"><td class="num" id="LN324">324</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="325"><td class="num" id="LN325">325</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="326"><td class="num" id="LN326">326</td><td class="line">sm_client_xsmp_startup (EggSMClient *client,</td></tr>
+<tr class="codeline" data-linenumber="327"><td class="num" id="LN327">327</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *client_id)</td></tr>
+<tr class="codeline" data-linenumber="328"><td class="num" id="LN328">328</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="329"><td class="num" id="LN329">329</td><td class="line"> EggSMClientXSMP *xsmp = (EggSMClientXSMP *)client;</td></tr>
+<tr class="codeline" data-linenumber="330"><td class="num" id="LN330">330</td><td class="line"> SmcCallbacks callbacks;</td></tr>
+<tr class="codeline" data-linenumber="331"><td class="num" id="LN331">331</td><td class="line"> <span class='keyword'>char</span> *ret_client_id;</td></tr>
+<tr class="codeline" data-linenumber="332"><td class="num" id="LN332">332</td><td class="line"> <span class='keyword'>char</span> error_string_ret[256];</td></tr>
+<tr class="codeline" data-linenumber="333"><td class="num" id="LN333">333</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="334"><td class="num" id="LN334">334</td><td class="line"> xsmp-&gt;client_id = <span class='macro'>g_strdup (client_id)<span class='macro_popup'>g_strdup_inline (client_id)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="335"><td class="num" id="LN335">335</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="336"><td class="num" id="LN336">336</td><td class="line"> ice_init ();</td></tr>
+<tr class="codeline" data-linenumber="337"><td class="num" id="LN337">337</td><td class="line"> SmcSetErrorHandler (smc_error_handler);</td></tr>
+<tr class="codeline" data-linenumber="338"><td class="num" id="LN338">338</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="339"><td class="num" id="LN339">339</td><td class="line"> callbacks.save_yourself.callback = xsmp_save_yourself;</td></tr>
+<tr class="codeline" data-linenumber="340"><td class="num" id="LN340">340</td><td class="line"> callbacks.die.callback = xsmp_die;</td></tr>
+<tr class="codeline" data-linenumber="341"><td class="num" id="LN341">341</td><td class="line"> callbacks.save_complete.callback = xsmp_save_complete;</td></tr>
+<tr class="codeline" data-linenumber="342"><td class="num" id="LN342">342</td><td class="line"> callbacks.shutdown_cancelled.callback = xsmp_shutdown_cancelled;</td></tr>
+<tr class="codeline" data-linenumber="343"><td class="num" id="LN343">343</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="344"><td class="num" id="LN344">344</td><td class="line"> callbacks.save_yourself.client_data = xsmp;</td></tr>
+<tr class="codeline" data-linenumber="345"><td class="num" id="LN345">345</td><td class="line"> callbacks.die.client_data = xsmp;</td></tr>
+<tr class="codeline" data-linenumber="346"><td class="num" id="LN346">346</td><td class="line"> callbacks.save_complete.client_data = xsmp;</td></tr>
+<tr class="codeline" data-linenumber="347"><td class="num" id="LN347">347</td><td class="line"> callbacks.shutdown_cancelled.client_data = xsmp;</td></tr>
+<tr class="codeline" data-linenumber="348"><td class="num" id="LN348">348</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="349"><td class="num" id="LN349">349</td><td class="line"> client_id = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="350"><td class="num" id="LN350">350</td><td class="line"> error_string_ret[0] = '\0';</td></tr>
+<tr class="codeline" data-linenumber="351"><td class="num" id="LN351">351</td><td class="line"> xsmp-&gt;connection =</td></tr>
+<tr class="codeline" data-linenumber="352"><td class="num" id="LN352">352</td><td class="line"> SmcOpenConnection (<span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, xsmp, <span class='macro'>SmProtoMajor<span class='macro_popup'>1</span></span>, <span class='macro'>SmProtoMinor<span class='macro_popup'>0</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="353"><td class="num" id="LN353">353</td><td class="line"> <span class='macro'>SmcSaveYourselfProcMask<span class='macro_popup'>(1L &lt;&lt; 0)</span></span> | <span class='macro'>SmcDieProcMask<span class='macro_popup'>(1L &lt;&lt; 1)</span></span> |</td></tr>
+<tr class="codeline" data-linenumber="354"><td class="num" id="LN354">354</td><td class="line"> <span class='macro'>SmcSaveCompleteProcMask<span class='macro_popup'>(1L &lt;&lt; 2)</span></span> |</td></tr>
+<tr class="codeline" data-linenumber="355"><td class="num" id="LN355">355</td><td class="line"> <span class='macro'>SmcShutdownCancelledProcMask<span class='macro_popup'>(1L &lt;&lt; 3)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="356"><td class="num" id="LN356">356</td><td class="line"> &amp;callbacks,</td></tr>
+<tr class="codeline" data-linenumber="357"><td class="num" id="LN357">357</td><td class="line"> xsmp-&gt;client_id, &amp;ret_client_id,</td></tr>
+<tr class="codeline" data-linenumber="358"><td class="num" id="LN358">358</td><td class="line"> <span class='keyword'>sizeof</span> (error_string_ret), error_string_ret);</td></tr>
+<tr class="codeline" data-linenumber="359"><td class="num" id="LN359">359</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="360"><td class="num" id="LN360">360</td><td class="line"> <span class='keyword'>if</span> (!xsmp-&gt;connection)</td></tr>
+<tr class="codeline" data-linenumber="361"><td class="num" id="LN361">361</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="362"><td class="num" id="LN362">362</td><td class="line"> g_warning (<span class='string_literal'>"Failed to connect to the session manager: %s\n"</span>,</td></tr>
+<tr class="codeline" data-linenumber="363"><td class="num" id="LN363">363</td><td class="line"> error_string_ret[0] ?</td></tr>
+<tr class="codeline" data-linenumber="364"><td class="num" id="LN364">364</td><td class="line"> error_string_ret : <span class='string_literal'>"no error message given"</span>);</td></tr>
+<tr class="codeline" data-linenumber="365"><td class="num" id="LN365">365</td><td class="line"> xsmp-&gt;state = XSMP_STATE_CONNECTION_CLOSED;</td></tr>
+<tr class="codeline" data-linenumber="366"><td class="num" id="LN366">366</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="367"><td class="num" id="LN367">367</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="368"><td class="num" id="LN368">368</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="369"><td class="num" id="LN369">369</td><td class="line"> <span class='comment'>/* We expect a pointless initial SaveYourself if either (a) we</span></td></tr>
+<tr class="codeline" data-linenumber="370"><td class="num" id="LN370">370</td><td class="line"> <span class='comment'>* didn't have an initial client ID, or (b) we DID have an initial</span></td></tr>
+<tr class="codeline" data-linenumber="371"><td class="num" id="LN371">371</td><td class="line"> <span class='comment'>* client ID, but the server rejected it and gave us a new one.</span></td></tr>
+<tr class="codeline" data-linenumber="372"><td class="num" id="LN372">372</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="373"><td class="num" id="LN373">373</td><td class="line"> <span class='keyword'>if</span> (!xsmp-&gt;client_id ||</td></tr>
+<tr class="codeline" data-linenumber="374"><td class="num" id="LN374">374</td><td class="line"> (ret_client_id &amp;&amp; strcmp (xsmp-&gt;client_id, ret_client_id) != 0))</td></tr>
+<tr class="codeline" data-linenumber="375"><td class="num" id="LN375">375</td><td class="line"> xsmp-&gt;expecting_initial_save_yourself = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="376"><td class="num" id="LN376">376</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="377"><td class="num" id="LN377">377</td><td class="line"> <span class='keyword'>if</span> (ret_client_id)</td></tr>
+<tr class="codeline" data-linenumber="378"><td class="num" id="LN378">378</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="379"><td class="num" id="LN379">379</td><td class="line"> g_free (xsmp-&gt;client_id);</td></tr>
+<tr class="codeline" data-linenumber="380"><td class="num" id="LN380">380</td><td class="line"> xsmp-&gt;client_id = <span class='macro'>g_strdup (ret_client_id)<span class='macro_popup'>g_strdup_inline (ret_client_id)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="381"><td class="num" id="LN381">381</td><td class="line"> free (ret_client_id);</td></tr>
+<tr class="codeline" data-linenumber="382"><td class="num" id="LN382">382</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="383"><td class="num" id="LN383">383</td><td class="line"><span class='directive'>#if defined(GDK_WINDOWING_X11) || defined(HAVE_X11)</span></td></tr>
+<tr class="codeline" data-linenumber="384"><td class="num" id="LN384">384</td><td class="line"> <span class='keyword'>if</span> (<span class='macro'>GDK_IS_X11_DISPLAY (gdk_display_get_default ())<span class='macro_popup'>(((__extension__ ({ GTypeInstance *__inst = (GTypeInstance*) (<br>(gdk_display_get_default ())); GType __t = ((gdk_x11_display_get_type<br>())); gboolean __r; if (!__inst) __r = (0); else if (__inst-&gt;<br>g_class &amp;&amp; __inst-&gt;g_class-&gt;g_type == __t) __r =<br> (!(0)); else __r = g_type_check_instance_is_a (__inst, __t);<br> __r; }))))</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="385"><td class="num" id="LN385">385</td><td class="line"> gdk_x11_set_sm_client_id (xsmp-&gt;client_id);</td></tr>
+<tr class="codeline" data-linenumber="386"><td class="num" id="LN386">386</td><td class="line"><span class='directive'>#endif</span></td></tr>
+<tr class="codeline" data-linenumber="387"><td class="num" id="LN387">387</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="388"><td class="num" id="LN388">388</td><td class="line"> g_debug (<span class='string_literal'>"Got client ID \"%s\""</span>, xsmp-&gt;client_id);</td></tr>
+<tr class="codeline" data-linenumber="389"><td class="num" id="LN389">389</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="390"><td class="num" id="LN390">390</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="391"><td class="num" id="LN391">391</td><td class="line"> xsmp-&gt;state = XSMP_STATE_IDLE;</td></tr>
+<tr class="codeline" data-linenumber="392"><td class="num" id="LN392">392</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="393"><td class="num" id="LN393">393</td><td class="line"> <span class='comment'>/* Do not set the initial properties until we reach the main loop,</span></td></tr>
+<tr class="codeline" data-linenumber="394"><td class="num" id="LN394">394</td><td class="line"> <span class='comment'>* so that the application has a chance to call</span></td></tr>
+<tr class="codeline" data-linenumber="395"><td class="num" id="LN395">395</td><td class="line"> <span class='comment'>* egg_set_desktop_file(). (This may also help the session manager</span></td></tr>
+<tr class="codeline" data-linenumber="396"><td class="num" id="LN396">396</td><td class="line"> <span class='comment'>* have a better idea of when the application is fully up and</span></td></tr>
+<tr class="codeline" data-linenumber="397"><td class="num" id="LN397">397</td><td class="line"> <span class='comment'>* running.)</span></td></tr>
+<tr class="codeline" data-linenumber="398"><td class="num" id="LN398">398</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="399"><td class="num" id="LN399">399</td><td class="line"> xsmp-&gt;waiting_to_set_initial_properties = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="400"><td class="num" id="LN400">400</td><td class="line"> xsmp-&gt;idle = g_idle_add (sm_client_xsmp_set_initial_properties, client);</td></tr>
+<tr class="codeline" data-linenumber="401"><td class="num" id="LN401">401</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="402"><td class="num" id="LN402">402</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="403"><td class="num" id="LN403">403</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="404"><td class="num" id="LN404">404</td><td class="line">sm_client_xsmp_set_restart_command (EggSMClient *client,</td></tr>
+<tr class="codeline" data-linenumber="405"><td class="num" id="LN405">405</td><td class="line"> <span class='keyword'>int</span> argc,</td></tr>
+<tr class="codeline" data-linenumber="406"><td class="num" id="LN406">406</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> **argv)</td></tr>
+<tr class="codeline" data-linenumber="407"><td class="num" id="LN407">407</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="408"><td class="num" id="LN408">408</td><td class="line"> EggSMClientXSMP *xsmp = (EggSMClientXSMP *)client;</td></tr>
+<tr class="codeline" data-linenumber="409"><td class="num" id="LN409">409</td><td class="line"> <span class='keyword'>int</span> i;</td></tr>
+<tr class="codeline" data-linenumber="410"><td class="num" id="LN410">410</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="411"><td class="num" id="LN411">411</td><td class="line"> g_strfreev (xsmp-&gt;restart_command);</td></tr>
+<tr class="codeline" data-linenumber="412"><td class="num" id="LN412">412</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="413"><td class="num" id="LN413">413</td><td class="line"> xsmp-&gt;restart_command = <span class='macro'>g_new (<span class='keyword'>char</span> *, argc + 1)<span class='macro_popup'>(char * *) (__extension__ ({ gsize __n = (gsize) (argc + 1); gsize<br> __s = sizeof (char *); gpointer __p; if (__s == 1) __p = g_malloc<br> (__n); else if (__builtin_constant_p (__n) &amp;&amp; (__s ==<br> 0 || __n &lt;= (9223372036854775807L *2UL+1UL) / __s)) __p =<br> g_malloc (__n * __s); else __p = g_malloc_n (__n, __s); __p;<br> }))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="414"><td class="num" id="LN414">414</td><td class="line"> <span class='keyword'>for</span> (i = 0; i &lt; argc; i++)</td></tr>
+<tr class="codeline" data-linenumber="415"><td class="num" id="LN415">415</td><td class="line"> xsmp-&gt;restart_command[i] = <span class='macro'>g_strdup (argv[i])<span class='macro_popup'>g_strdup_inline (argv[i])</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="416"><td class="num" id="LN416">416</td><td class="line"> xsmp-&gt;restart_command[i] = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="417"><td class="num" id="LN417">417</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="418"><td class="num" id="LN418">418</td><td class="line"> xsmp-&gt;set_restart_command = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="419"><td class="num" id="LN419">419</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="420"><td class="num" id="LN420">420</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="421"><td class="num" id="LN421">421</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="422"><td class="num" id="LN422">422</td><td class="line">sm_client_xsmp_set_discard_command (EggSMClient *client,</td></tr>
+<tr class="codeline" data-linenumber="423"><td class="num" id="LN423">423</td><td class="line"> <span class='keyword'>int</span> argc,</td></tr>
+<tr class="codeline" data-linenumber="424"><td class="num" id="LN424">424</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> **argv)</td></tr>
+<tr class="codeline" data-linenumber="425"><td class="num" id="LN425">425</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="426"><td class="num" id="LN426">426</td><td class="line"> EggSMClientXSMP *xsmp = (EggSMClientXSMP *)client;</td></tr>
+<tr class="codeline" data-linenumber="427"><td class="num" id="LN427">427</td><td class="line"> <span class='keyword'>int</span> i;</td></tr>
+<tr class="codeline" data-linenumber="428"><td class="num" id="LN428">428</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="429"><td class="num" id="LN429">429</td><td class="line"> g_strfreev (xsmp-&gt;discard_command);</td></tr>
+<tr class="codeline" data-linenumber="430"><td class="num" id="LN430">430</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="431"><td class="num" id="LN431">431</td><td class="line"> xsmp-&gt;discard_command = <span class='macro'>g_new (<span class='keyword'>char</span> *, argc + 1)<span class='macro_popup'>(char * *) (__extension__ ({ gsize __n = (gsize) (argc + 1); gsize<br> __s = sizeof (char *); gpointer __p; if (__s == 1) __p = g_malloc<br> (__n); else if (__builtin_constant_p (__n) &amp;&amp; (__s ==<br> 0 || __n &lt;= (9223372036854775807L *2UL+1UL) / __s)) __p =<br> g_malloc (__n * __s); else __p = g_malloc_n (__n, __s); __p;<br> }))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="432"><td class="num" id="LN432">432</td><td class="line"> <span class='keyword'>for</span> (i = 0; i &lt; argc; i++)</td></tr>
+<tr class="codeline" data-linenumber="433"><td class="num" id="LN433">433</td><td class="line"> xsmp-&gt;discard_command[i] = <span class='macro'>g_strdup (argv[i])<span class='macro_popup'>g_strdup_inline (argv[i])</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="434"><td class="num" id="LN434">434</td><td class="line"> xsmp-&gt;discard_command[i] = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="435"><td class="num" id="LN435">435</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="436"><td class="num" id="LN436">436</td><td class="line"> xsmp-&gt;set_discard_command = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="437"><td class="num" id="LN437">437</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="438"><td class="num" id="LN438">438</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="439"><td class="num" id="LN439">439</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="440"><td class="num" id="LN440">440</td><td class="line">sm_client_xsmp_will_quit (EggSMClient *client,</td></tr>
+<tr class="codeline" data-linenumber="441"><td class="num" id="LN441">441</td><td class="line"> gboolean will_quit)</td></tr>
+<tr class="codeline" data-linenumber="442"><td class="num" id="LN442">442</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="443"><td class="num" id="LN443">443</td><td class="line"> EggSMClientXSMP *xsmp = (EggSMClientXSMP *)client;</td></tr>
+<tr class="codeline" data-linenumber="444"><td class="num" id="LN444">444</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="445"><td class="num" id="LN445">445</td><td class="line"> <span class='keyword'>if</span> (xsmp-&gt;state == XSMP_STATE_CONNECTION_CLOSED)</td></tr>
+<tr class="codeline" data-linenumber="446"><td class="num" id="LN446">446</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="447"><td class="num" id="LN447">447</td><td class="line"> <span class='comment'>/* The session manager has already exited! Schedule a quit</span></td></tr>
+<tr class="codeline" data-linenumber="448"><td class="num" id="LN448">448</td><td class="line"> <span class='comment'>* signal.</span></td></tr>
+<tr class="codeline" data-linenumber="449"><td class="num" id="LN449">449</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="450"><td class="num" id="LN450">450</td><td class="line"> xsmp-&gt;waiting_to_emit_quit = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="451"><td class="num" id="LN451">451</td><td class="line"> update_pending_events (xsmp);</td></tr>
+<tr class="codeline" data-linenumber="452"><td class="num" id="LN452">452</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="453"><td class="num" id="LN453">453</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="454"><td class="num" id="LN454">454</td><td class="line"> <span class='keyword'>else</span> <span class='keyword'>if</span> (xsmp-&gt;state == XSMP_STATE_SHUTDOWN_CANCELLED)</td></tr>
+<tr class="codeline" data-linenumber="455"><td class="num" id="LN455">455</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="456"><td class="num" id="LN456">456</td><td class="line"> <span class='comment'>/* We received a ShutdownCancelled message while the application</span></td></tr>
+<tr class="codeline" data-linenumber="457"><td class="num" id="LN457">457</td><td class="line"> <span class='comment'>* was interacting; Schedule a quit_cancelled signal.</span></td></tr>
+<tr class="codeline" data-linenumber="458"><td class="num" id="LN458">458</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="459"><td class="num" id="LN459">459</td><td class="line"> xsmp-&gt;waiting_to_emit_quit_cancelled = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="460"><td class="num" id="LN460">460</td><td class="line"> update_pending_events (xsmp);</td></tr>
+<tr class="codeline" data-linenumber="461"><td class="num" id="LN461">461</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="462"><td class="num" id="LN462">462</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="463"><td class="num" id="LN463">463</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="464"><td class="num" id="LN464">464</td><td class="line"> <span class='macro'>g_return_if_fail (xsmp-&gt;state == XSMP_STATE_INTERACT)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_12<br>; if (xsmp-&gt;state == XSMP_STATE_INTERACT) _g_boolean_var_12<br> = 1; else _g_boolean_var_12 = 0; _g_boolean_var_12; }), 1)))<br> { } else { g_return_if_fail_warning ("EggSMClient", ((const char<br>*) (__func__)), "xsmp-&gt;state == XSMP_STATE_INTERACT"); return<br>; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="465"><td class="num" id="LN465">465</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="466"><td class="num" id="LN466">466</td><td class="line"> g_debug (<span class='string_literal'>"Sending InteractDone(%s)"</span>, will_quit ? <span class='string_literal'>"False"</span> : <span class='string_literal'>"True"</span>);</td></tr>
+<tr class="codeline" data-linenumber="467"><td class="num" id="LN467">467</td><td class="line"> SmcInteractDone (xsmp-&gt;connection, !will_quit);</td></tr>
+<tr class="codeline" data-linenumber="468"><td class="num" id="LN468">468</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="469"><td class="num" id="LN469">469</td><td class="line"> <span class='keyword'>if</span> (will_quit &amp;&amp; xsmp-&gt;need_save_state)</td></tr>
+<tr class="codeline" data-linenumber="470"><td class="num" id="LN470">470</td><td class="line"> save_state (xsmp);</td></tr>
+<tr class="codeline" data-linenumber="471"><td class="num" id="LN471">471</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="472"><td class="num" id="LN472">472</td><td class="line"> g_debug (<span class='string_literal'>"Sending SaveYourselfDone(%s)"</span>, will_quit ? <span class='string_literal'>"True"</span> : <span class='string_literal'>"False"</span>);</td></tr>
+<tr class="codeline" data-linenumber="473"><td class="num" id="LN473">473</td><td class="line"> SmcSaveYourselfDone (xsmp-&gt;connection, will_quit);</td></tr>
+<tr class="codeline" data-linenumber="474"><td class="num" id="LN474">474</td><td class="line"> xsmp-&gt;state = XSMP_STATE_SAVE_YOURSELF_DONE;</td></tr>
+<tr class="codeline" data-linenumber="475"><td class="num" id="LN475">475</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="476"><td class="num" id="LN476">476</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="477"><td class="num" id="LN477">477</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="478"><td class="num" id="LN478">478</td><td class="line">sm_client_xsmp_end_session (EggSMClient *client,</td></tr>
+<tr class="codeline" data-linenumber="479"><td class="num" id="LN479">479</td><td class="line"> EggSMClientEndStyle style,</td></tr>
+<tr class="codeline" data-linenumber="480"><td class="num" id="LN480">480</td><td class="line"> gboolean request_confirmation)</td></tr>
+<tr class="codeline" data-linenumber="481"><td class="num" id="LN481">481</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="482"><td class="num" id="LN482">482</td><td class="line"> EggSMClientXSMP *xsmp = (EggSMClientXSMP *)client;</td></tr>
+<tr class="codeline" data-linenumber="483"><td class="num" id="LN483">483</td><td class="line"> <span class='keyword'>int</span> save_type;</td></tr>
+<tr class="codeline" data-linenumber="484"><td class="num" id="LN484">484</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="485"><td class="num" id="LN485">485</td><td class="line"> <span class='comment'>/* To end the session via XSMP, we have to send a</span></td></tr>
+<tr class="codeline" data-linenumber="486"><td class="num" id="LN486">486</td><td class="line"> <span class='comment'>* SaveYourselfRequest. We aren't allowed to do that if anything</span></td></tr>
+<tr class="codeline" data-linenumber="487"><td class="num" id="LN487">487</td><td class="line"> <span class='comment'>* else is going on, but we don't want to expose this fact to the</span></td></tr>
+<tr class="codeline" data-linenumber="488"><td class="num" id="LN488">488</td><td class="line"> <span class='comment'>* application. So we do our best to patch things up here...</span></td></tr>
+<tr class="codeline" data-linenumber="489"><td class="num" id="LN489">489</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="490"><td class="num" id="LN490">490</td><td class="line"> <span class='comment'>* In the worst case, this method might block for some length of</span></td></tr>
+<tr class="codeline" data-linenumber="491"><td class="num" id="LN491">491</td><td class="line"> <span class='comment'>* time in process_ice_messages, but the only time that code path is</span></td></tr>
+<tr class="codeline" data-linenumber="492"><td class="num" id="LN492">492</td><td class="line"> <span class='comment'>* honestly likely to get hit is if the application tries to end the</span></td></tr>
+<tr class="codeline" data-linenumber="493"><td class="num" id="LN493">493</td><td class="line"> <span class='comment'>* session as the very first thing it does, in which case it</span></td></tr>
+<tr class="codeline" data-linenumber="494"><td class="num" id="LN494">494</td><td class="line"> <span class='comment'>* probably won't actually block anyway. It's not worth gunking up</span></td></tr>
+<tr class="codeline" data-linenumber="495"><td class="num" id="LN495">495</td><td class="line"> <span class='comment'>* the API to try to deal nicely with the other 0.01% of cases where</span></td></tr>
+<tr class="codeline" data-linenumber="496"><td class="num" id="LN496">496</td><td class="line"> <span class='comment'>* this happens.</span></td></tr>
+<tr class="codeline" data-linenumber="497"><td class="num" id="LN497">497</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="498"><td class="num" id="LN498">498</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="499"><td class="num" id="LN499">499</td><td class="line"> <span class='keyword'>while</span> (xsmp-&gt;state != XSMP_STATE_IDLE ||</td></tr>
+<tr class="codeline" data-linenumber="500"><td class="num" id="LN500">500</td><td class="line"> xsmp-&gt;expecting_initial_save_yourself)</td></tr>
+<tr class="codeline" data-linenumber="501"><td class="num" id="LN501">501</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="502"><td class="num" id="LN502">502</td><td class="line"> <span class='comment'>/* If we're already shutting down, we don't need to do anything. */</span></td></tr>
+<tr class="codeline" data-linenumber="503"><td class="num" id="LN503">503</td><td class="line"> <span class='keyword'>if</span> (xsmp-&gt;shutting_down)</td></tr>
+<tr class="codeline" data-linenumber="504"><td class="num" id="LN504">504</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="505"><td class="num" id="LN505">505</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="506"><td class="num" id="LN506">506</td><td class="line"> <span class='keyword'>switch</span> (xsmp-&gt;state)</td></tr>
+<tr class="codeline" data-linenumber="507"><td class="num" id="LN507">507</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="508"><td class="num" id="LN508">508</td><td class="line"> <span class='keyword'>case</span> XSMP_STATE_CONNECTION_CLOSED:</td></tr>
+<tr class="codeline" data-linenumber="509"><td class="num" id="LN509">509</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="510"><td class="num" id="LN510">510</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="511"><td class="num" id="LN511">511</td><td class="line"> <span class='keyword'>case</span> XSMP_STATE_SAVE_YOURSELF:</td></tr>
+<tr class="codeline" data-linenumber="512"><td class="num" id="LN512">512</td><td class="line"> <span class='comment'>/* Trying to log out from the save_state callback? Whatever.</span></td></tr>
+<tr class="codeline" data-linenumber="513"><td class="num" id="LN513">513</td><td class="line"> <span class='comment'>* Abort the save_state.</span></td></tr>
+<tr class="codeline" data-linenumber="514"><td class="num" id="LN514">514</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="515"><td class="num" id="LN515">515</td><td class="line"> SmcSaveYourselfDone (xsmp-&gt;connection, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="516"><td class="num" id="LN516">516</td><td class="line"> xsmp-&gt;state = XSMP_STATE_SAVE_YOURSELF_DONE;</td></tr>
+<tr class="codeline" data-linenumber="517"><td class="num" id="LN517">517</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="518"><td class="num" id="LN518">518</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="519"><td class="num" id="LN519">519</td><td class="line"> <span class='keyword'>case</span> XSMP_STATE_INTERACT_REQUEST:</td></tr>
+<tr class="codeline" data-linenumber="520"><td class="num" id="LN520">520</td><td class="line"> <span class='keyword'>case</span> XSMP_STATE_INTERACT:</td></tr>
+<tr class="codeline" data-linenumber="521"><td class="num" id="LN521">521</td><td class="line"> <span class='keyword'>case</span> XSMP_STATE_SHUTDOWN_CANCELLED:</td></tr>
+<tr class="codeline" data-linenumber="522"><td class="num" id="LN522">522</td><td class="line"> <span class='comment'>/* Already in a shutdown-related state, just ignore</span></td></tr>
+<tr class="codeline" data-linenumber="523"><td class="num" id="LN523">523</td><td class="line"> <span class='comment'>* the new shutdown request...</span></td></tr>
+<tr class="codeline" data-linenumber="524"><td class="num" id="LN524">524</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="525"><td class="num" id="LN525">525</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="526"><td class="num" id="LN526">526</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="527"><td class="num" id="LN527">527</td><td class="line"> <span class='keyword'>case</span> XSMP_STATE_IDLE:</td></tr>
+<tr class="codeline" data-linenumber="528"><td class="num" id="LN528">528</td><td class="line"> <span class='keyword'>if</span> (xsmp-&gt;waiting_to_set_initial_properties)</td></tr>
+<tr class="codeline" data-linenumber="529"><td class="num" id="LN529">529</td><td class="line"> sm_client_xsmp_set_initial_properties (xsmp);</td></tr>
+<tr class="codeline" data-linenumber="530"><td class="num" id="LN530">530</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="531"><td class="num" id="LN531">531</td><td class="line"> <span class='keyword'>if</span> (!xsmp-&gt;expecting_initial_save_yourself)</td></tr>
+<tr class="codeline" data-linenumber="532"><td class="num" id="LN532">532</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="533"><td class="num" id="LN533">533</td><td class="line"> <span class='comment'>/* else fall through */</span></td></tr>
+<tr class="codeline" data-linenumber="534"><td class="num" id="LN534">534</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="535"><td class="num" id="LN535">535</td><td class="line"> <span class='keyword'>case</span> XSMP_STATE_SAVE_YOURSELF_DONE:</td></tr>
+<tr class="codeline" data-linenumber="536"><td class="num" id="LN536">536</td><td class="line"> <span class='comment'>/* We need to wait for some response from the server.*/</span></td></tr>
+<tr class="codeline" data-linenumber="537"><td class="num" id="LN537">537</td><td class="line"> process_ice_messages (SmcGetIceConnection (xsmp-&gt;connection));</td></tr>
+<tr class="codeline" data-linenumber="538"><td class="num" id="LN538">538</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="539"><td class="num" id="LN539">539</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="540"><td class="num" id="LN540">540</td><td class="line"> <span class='keyword'>default</span>:</td></tr>
+<tr class="codeline" data-linenumber="541"><td class="num" id="LN541">541</td><td class="line"> <span class='comment'>/* Hm... shouldn't happen */</span></td></tr>
+<tr class="codeline" data-linenumber="542"><td class="num" id="LN542">542</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="543"><td class="num" id="LN543">543</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="544"><td class="num" id="LN544">544</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="545"><td class="num" id="LN545">545</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="546"><td class="num" id="LN546">546</td><td class="line"> <span class='comment'>/* xfce4-session will do the wrong thing if we pass SmSaveGlobal and</span></td></tr>
+<tr class="codeline" data-linenumber="547"><td class="num" id="LN547">547</td><td class="line"> <span class='comment'>* the user chooses to save the session. But mate-session will do</span></td></tr>
+<tr class="codeline" data-linenumber="548"><td class="num" id="LN548">548</td><td class="line"> <span class='comment'>* the wrong thing if we pass SmSaveBoth and the user chooses NOT to</span></td></tr>
+<tr class="codeline" data-linenumber="549"><td class="num" id="LN549">549</td><td class="line"> <span class='comment'>* save the session... Sigh.</span></td></tr>
+<tr class="codeline" data-linenumber="550"><td class="num" id="LN550">550</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="551"><td class="num" id="LN551">551</td><td class="line"> <span class='keyword'>if</span> (!strcmp (SmcVendor (xsmp-&gt;connection), <span class='string_literal'>"xfce4-session"</span>))</td></tr>
+<tr class="codeline" data-linenumber="552"><td class="num" id="LN552">552</td><td class="line"> save_type = <span class='macro'>SmSaveBoth<span class='macro_popup'>2</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="553"><td class="num" id="LN553">553</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="554"><td class="num" id="LN554">554</td><td class="line"> save_type = <span class='macro'>SmSaveGlobal<span class='macro_popup'>0</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="555"><td class="num" id="LN555">555</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="556"><td class="num" id="LN556">556</td><td class="line"> g_debug (<span class='string_literal'>"Sending SaveYourselfRequest(SmSaveGlobal, Shutdown, SmInteractStyleAny, %sFast)"</span>, request_confirmation ? <span class='string_literal'>"!"</span> : <span class='string_literal'>""</span>);</td></tr>
+<tr class="codeline" data-linenumber="557"><td class="num" id="LN557">557</td><td class="line"> SmcRequestSaveYourself (xsmp-&gt;connection,</td></tr>
+<tr class="codeline" data-linenumber="558"><td class="num" id="LN558">558</td><td class="line"> save_type,</td></tr>
+<tr class="codeline" data-linenumber="559"><td class="num" id="LN559">559</td><td class="line"> <span class='macro'>True<span class='macro_popup'>1</span></span>, <span class='comment'>/* shutdown */</span></td></tr>
+<tr class="codeline" data-linenumber="560"><td class="num" id="LN560">560</td><td class="line"> <span class='macro'>SmInteractStyleAny<span class='macro_popup'>2</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="561"><td class="num" id="LN561">561</td><td class="line"> !request_confirmation, <span class='comment'>/* fast */</span></td></tr>
+<tr class="codeline" data-linenumber="562"><td class="num" id="LN562">562</td><td class="line"> <span class='macro'>True<span class='macro_popup'>1</span></span> <span class='comment'>/* global */</span>);</td></tr>
+<tr class="codeline" data-linenumber="563"><td class="num" id="LN563">563</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="564"><td class="num" id="LN564">564</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="565"><td class="num" id="LN565">565</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="566"><td class="num" id="LN566">566</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="567"><td class="num" id="LN567">567</td><td class="line">idle_do_pending_events (gpointer data)</td></tr>
+<tr class="codeline" data-linenumber="568"><td class="num" id="LN568">568</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="569"><td class="num" id="LN569">569</td><td class="line"> EggSMClientXSMP *xsmp = data;</td></tr>
+<tr class="codeline" data-linenumber="570"><td class="num" id="LN570">570</td><td class="line"> EggSMClient *client = data;</td></tr>
+<tr class="codeline" data-linenumber="571"><td class="num" id="LN571">571</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="572"><td class="num" id="LN572">572</td><td class="line"> xsmp-&gt;idle = 0;</td></tr>
+<tr class="codeline" data-linenumber="573"><td class="num" id="LN573">573</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="574"><td class="num" id="LN574">574</td><td class="line"> <span class='keyword'>if</span> (xsmp-&gt;waiting_to_emit_quit)</td></tr>
+<tr class="codeline" data-linenumber="575"><td class="num" id="LN575">575</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="576"><td class="num" id="LN576">576</td><td class="line"> xsmp-&gt;waiting_to_emit_quit = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="577"><td class="num" id="LN577">577</td><td class="line"> egg_sm_client_quit (client);</td></tr>
+<tr class="codeline" data-linenumber="578"><td class="num" id="LN578">578</td><td class="line"> <span class='keyword'>goto</span> out;</td></tr>
+<tr class="codeline" data-linenumber="579"><td class="num" id="LN579">579</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="580"><td class="num" id="LN580">580</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="581"><td class="num" id="LN581">581</td><td class="line"> <span class='keyword'>if</span> (xsmp-&gt;waiting_to_emit_quit_cancelled)</td></tr>
+<tr class="codeline" data-linenumber="582"><td class="num" id="LN582">582</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="583"><td class="num" id="LN583">583</td><td class="line"> xsmp-&gt;waiting_to_emit_quit_cancelled = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="584"><td class="num" id="LN584">584</td><td class="line"> egg_sm_client_quit_cancelled (client);</td></tr>
+<tr class="codeline" data-linenumber="585"><td class="num" id="LN585">585</td><td class="line"> xsmp-&gt;state = XSMP_STATE_IDLE;</td></tr>
+<tr class="codeline" data-linenumber="586"><td class="num" id="LN586">586</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="587"><td class="num" id="LN587">587</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="588"><td class="num" id="LN588">588</td><td class="line"> <span class='keyword'>if</span> (xsmp-&gt;waiting_to_save_myself)</td></tr>
+<tr class="codeline" data-linenumber="589"><td class="num" id="LN589">589</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="590"><td class="num" id="LN590">590</td><td class="line"> xsmp-&gt;waiting_to_save_myself = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="591"><td class="num" id="LN591">591</td><td class="line"> do_save_yourself (xsmp);</td></tr>
+<tr class="codeline" data-linenumber="592"><td class="num" id="LN592">592</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="593"><td class="num" id="LN593">593</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="594"><td class="num" id="LN594">594</td><td class="line">out:</td></tr>
+<tr class="codeline" data-linenumber="595"><td class="num" id="LN595">595</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="596"><td class="num" id="LN596">596</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="597"><td class="num" id="LN597">597</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="598"><td class="num" id="LN598">598</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="599"><td class="num" id="LN599">599</td><td class="line">update_pending_events (EggSMClientXSMP *xsmp)</td></tr>
+<tr class="codeline" data-linenumber="600"><td class="num" id="LN600">600</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="601"><td class="num" id="LN601">601</td><td class="line"> gboolean want_idle =</td></tr>
+<tr class="codeline" data-linenumber="602"><td class="num" id="LN602">602</td><td class="line"> xsmp-&gt;waiting_to_emit_quit ||</td></tr>
+<tr class="codeline" data-linenumber="603"><td class="num" id="LN603">603</td><td class="line"> xsmp-&gt;waiting_to_emit_quit_cancelled ||</td></tr>
+<tr class="codeline" data-linenumber="604"><td class="num" id="LN604">604</td><td class="line"> xsmp-&gt;waiting_to_save_myself;</td></tr>
+<tr class="codeline" data-linenumber="605"><td class="num" id="LN605">605</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="606"><td class="num" id="LN606">606</td><td class="line"> <span class='keyword'>if</span> (want_idle)</td></tr>
+<tr class="codeline" data-linenumber="607"><td class="num" id="LN607">607</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="608"><td class="num" id="LN608">608</td><td class="line"> <span class='keyword'>if</span> (xsmp-&gt;idle == 0)</td></tr>
+<tr class="codeline" data-linenumber="609"><td class="num" id="LN609">609</td><td class="line"> xsmp-&gt;idle = g_idle_add (idle_do_pending_events, xsmp);</td></tr>
+<tr class="codeline" data-linenumber="610"><td class="num" id="LN610">610</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="611"><td class="num" id="LN611">611</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="612"><td class="num" id="LN612">612</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="613"><td class="num" id="LN613">613</td><td class="line"> <span class='keyword'>if</span> (xsmp-&gt;idle != 0)</td></tr>
+<tr class="codeline" data-linenumber="614"><td class="num" id="LN614">614</td><td class="line"> g_source_remove (xsmp-&gt;idle);</td></tr>
+<tr class="codeline" data-linenumber="615"><td class="num" id="LN615">615</td><td class="line"> xsmp-&gt;idle = 0;</td></tr>
+<tr class="codeline" data-linenumber="616"><td class="num" id="LN616">616</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="617"><td class="num" id="LN617">617</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="618"><td class="num" id="LN618">618</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="619"><td class="num" id="LN619">619</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="620"><td class="num" id="LN620">620</td><td class="line">fix_broken_state (EggSMClientXSMP *xsmp, <span class='keyword'>const</span> <span class='keyword'>char</span> *message,</td></tr>
+<tr class="codeline" data-linenumber="621"><td class="num" id="LN621">621</td><td class="line"> gboolean send_interact_done,</td></tr>
+<tr class="codeline" data-linenumber="622"><td class="num" id="LN622">622</td><td class="line"> gboolean send_save_yourself_done)</td></tr>
+<tr class="codeline" data-linenumber="623"><td class="num" id="LN623">623</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="624"><td class="num" id="LN624">624</td><td class="line"> g_warning (<span class='string_literal'>"Received XSMP %s message in state %s: client or server error"</span>,</td></tr>
+<tr class="codeline" data-linenumber="625"><td class="num" id="LN625">625</td><td class="line"> message, <span class='macro'>EGG_SM_CLIENT_XSMP_STATE (xsmp)<span class='macro_popup'>(state_names[(xsmp)-&gt;state])</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="626"><td class="num" id="LN626">626</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="627"><td class="num" id="LN627">627</td><td class="line"> <span class='comment'>/* Forget any pending SaveYourself plans we had */</span></td></tr>
+<tr class="codeline" data-linenumber="628"><td class="num" id="LN628">628</td><td class="line"> xsmp-&gt;waiting_to_save_myself = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="629"><td class="num" id="LN629">629</td><td class="line"> update_pending_events (xsmp);</td></tr>
+<tr class="codeline" data-linenumber="630"><td class="num" id="LN630">630</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="631"><td class="num" id="LN631">631</td><td class="line"> <span class='keyword'>if</span> (send_interact_done)</td></tr>
+<tr class="codeline" data-linenumber="632"><td class="num" id="LN632">632</td><td class="line"> SmcInteractDone (xsmp-&gt;connection, <span class='macro'>False<span class='macro_popup'>0</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="633"><td class="num" id="LN633">633</td><td class="line"> <span class='keyword'>if</span> (send_save_yourself_done)</td></tr>
+<tr class="codeline" data-linenumber="634"><td class="num" id="LN634">634</td><td class="line"> SmcSaveYourselfDone (xsmp-&gt;connection, <span class='macro'>True<span class='macro_popup'>1</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="635"><td class="num" id="LN635">635</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="636"><td class="num" id="LN636">636</td><td class="line"> xsmp-&gt;state = send_save_yourself_done ? XSMP_STATE_SAVE_YOURSELF_DONE : XSMP_STATE_IDLE;</td></tr>
+<tr class="codeline" data-linenumber="637"><td class="num" id="LN637">637</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="638"><td class="num" id="LN638">638</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="639"><td class="num" id="LN639">639</td><td class="line"><span class='comment'>/* SM callbacks */</span></td></tr>
+<tr class="codeline" data-linenumber="640"><td class="num" id="LN640">640</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="641"><td class="num" id="LN641">641</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="642"><td class="num" id="LN642">642</td><td class="line">xsmp_save_yourself (SmcConn smc_conn,</td></tr>
+<tr class="codeline" data-linenumber="643"><td class="num" id="LN643">643</td><td class="line"> SmPointer client_data,</td></tr>
+<tr class="codeline" data-linenumber="644"><td class="num" id="LN644">644</td><td class="line"> <span class='keyword'>int</span> save_type,</td></tr>
+<tr class="codeline" data-linenumber="645"><td class="num" id="LN645">645</td><td class="line"> <span class='macro'>Bool<span class='macro_popup'>int</span></span> shutdown,</td></tr>
+<tr class="codeline" data-linenumber="646"><td class="num" id="LN646">646</td><td class="line"> <span class='keyword'>int</span> interact_style,</td></tr>
+<tr class="codeline" data-linenumber="647"><td class="num" id="LN647">647</td><td class="line"> <span class='macro'>Bool<span class='macro_popup'>int</span></span> fast)</td></tr>
+<tr class="codeline" data-linenumber="648"><td class="num" id="LN648">648</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="649"><td class="num" id="LN649">649</td><td class="line"> EggSMClientXSMP *xsmp = client_data;</td></tr>
+<tr class="codeline" data-linenumber="650"><td class="num" id="LN650">650</td><td class="line"> gboolean wants_quit_requested;</td></tr>
+<tr class="codeline" data-linenumber="651"><td class="num" id="LN651">651</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="652"><td class="num" id="LN652">652</td><td class="line"> g_debug (<span class='string_literal'>"Received SaveYourself(%s, %s, %s, %s) in state %s"</span>,</td></tr>
+<tr class="codeline" data-linenumber="653"><td class="num" id="LN653">653</td><td class="line"> save_type == <span class='macro'>SmSaveLocal<span class='macro_popup'>1</span></span> ? <span class='string_literal'>"SmSaveLocal"</span> :</td></tr>
+<tr class="codeline" data-linenumber="654"><td class="num" id="LN654">654</td><td class="line"> save_type == <span class='macro'>SmSaveGlobal<span class='macro_popup'>0</span></span> ? <span class='string_literal'>"SmSaveGlobal"</span> : <span class='string_literal'>"SmSaveBoth"</span>,</td></tr>
+<tr class="codeline" data-linenumber="655"><td class="num" id="LN655">655</td><td class="line"> shutdown ? <span class='string_literal'>"Shutdown"</span> : <span class='string_literal'>"!Shutdown"</span>,</td></tr>
+<tr class="codeline" data-linenumber="656"><td class="num" id="LN656">656</td><td class="line"> interact_style == <span class='macro'>SmInteractStyleAny<span class='macro_popup'>2</span></span> ? <span class='string_literal'>"SmInteractStyleAny"</span> :</td></tr>
+<tr class="codeline" data-linenumber="657"><td class="num" id="LN657">657</td><td class="line"> interact_style == <span class='macro'>SmInteractStyleErrors<span class='macro_popup'>1</span></span> ? <span class='string_literal'>"SmInteractStyleErrors"</span> :</td></tr>
+<tr class="codeline" data-linenumber="658"><td class="num" id="LN658">658</td><td class="line"> <span class='string_literal'>"SmInteractStyleNone"</span>, fast ? <span class='string_literal'>"Fast"</span> : <span class='string_literal'>"!Fast"</span>,</td></tr>
+<tr class="codeline" data-linenumber="659"><td class="num" id="LN659">659</td><td class="line"> <span class='macro'>EGG_SM_CLIENT_XSMP_STATE (xsmp)<span class='macro_popup'>(state_names[(xsmp)-&gt;state])</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="660"><td class="num" id="LN660">660</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="661"><td class="num" id="LN661">661</td><td class="line"> <span class='keyword'>if</span> (xsmp-&gt;state != XSMP_STATE_IDLE &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="662"><td class="num" id="LN662">662</td><td class="line"> xsmp-&gt;state != XSMP_STATE_SHUTDOWN_CANCELLED)</td></tr>
+<tr class="codeline" data-linenumber="663"><td class="num" id="LN663">663</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="664"><td class="num" id="LN664">664</td><td class="line"> fix_broken_state (xsmp, <span class='string_literal'>"SaveYourself"</span>, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>, <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="665"><td class="num" id="LN665">665</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="666"><td class="num" id="LN666">666</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="667"><td class="num" id="LN667">667</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="668"><td class="num" id="LN668">668</td><td class="line"> <span class='keyword'>if</span> (xsmp-&gt;waiting_to_set_initial_properties)</td></tr>
+<tr class="codeline" data-linenumber="669"><td class="num" id="LN669">669</td><td class="line"> sm_client_xsmp_set_initial_properties (xsmp);</td></tr>
+<tr class="codeline" data-linenumber="670"><td class="num" id="LN670">670</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="671"><td class="num" id="LN671">671</td><td class="line"> <span class='comment'>/* If this is the initial SaveYourself, ignore it; we've already set</span></td></tr>
+<tr class="codeline" data-linenumber="672"><td class="num" id="LN672">672</td><td class="line"> <span class='comment'>* properties and there's no reason to actually save state too.</span></td></tr>
+<tr class="codeline" data-linenumber="673"><td class="num" id="LN673">673</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="674"><td class="num" id="LN674">674</td><td class="line"> <span class='keyword'>if</span> (xsmp-&gt;expecting_initial_save_yourself)</td></tr>
+<tr class="codeline" data-linenumber="675"><td class="num" id="LN675">675</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="676"><td class="num" id="LN676">676</td><td class="line"> xsmp-&gt;expecting_initial_save_yourself = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="677"><td class="num" id="LN677">677</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="678"><td class="num" id="LN678">678</td><td class="line"> <span class='keyword'>if</span> (save_type == <span class='macro'>SmSaveLocal<span class='macro_popup'>1</span></span> &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="679"><td class="num" id="LN679">679</td><td class="line"> interact_style == <span class='macro'>SmInteractStyleNone<span class='macro_popup'>0</span></span> &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="680"><td class="num" id="LN680">680</td><td class="line"> !shutdown &amp;&amp; !fast)</td></tr>
+<tr class="codeline" data-linenumber="681"><td class="num" id="LN681">681</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="682"><td class="num" id="LN682">682</td><td class="line"> g_debug (<span class='string_literal'>"Sending SaveYourselfDone(True) for initial SaveYourself"</span>);</td></tr>
+<tr class="codeline" data-linenumber="683"><td class="num" id="LN683">683</td><td class="line"> SmcSaveYourselfDone (xsmp-&gt;connection, <span class='macro'>True<span class='macro_popup'>1</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="684"><td class="num" id="LN684">684</td><td class="line"> <span class='comment'>/* As explained in the comment at the end of</span></td></tr>
+<tr class="codeline" data-linenumber="685"><td class="num" id="LN685">685</td><td class="line"> <span class='comment'>* do_save_yourself(), SAVE_YOURSELF_DONE is the correct</span></td></tr>
+<tr class="codeline" data-linenumber="686"><td class="num" id="LN686">686</td><td class="line"> <span class='comment'>* state here, not IDLE.</span></td></tr>
+<tr class="codeline" data-linenumber="687"><td class="num" id="LN687">687</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="688"><td class="num" id="LN688">688</td><td class="line"> xsmp-&gt;state = XSMP_STATE_SAVE_YOURSELF_DONE;</td></tr>
+<tr class="codeline" data-linenumber="689"><td class="num" id="LN689">689</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="690"><td class="num" id="LN690">690</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="691"><td class="num" id="LN691">691</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="692"><td class="num" id="LN692">692</td><td class="line"> g_warning (<span class='string_literal'>"First SaveYourself was not the expected one!"</span>);</td></tr>
+<tr class="codeline" data-linenumber="693"><td class="num" id="LN693">693</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="694"><td class="num" id="LN694">694</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="695"><td class="num" id="LN695">695</td><td class="line"> <span class='comment'>/* Even ignoring the "fast" flag completely, there are still 18</span></td></tr>
+<tr class="codeline" data-linenumber="696"><td class="num" id="LN696">696</td><td class="line"> <span class='comment'>* different combinations of save_type, shutdown and interact_style.</span></td></tr>
+<tr class="codeline" data-linenumber="697"><td class="num" id="LN697">697</td><td class="line"> <span class='comment'>* We interpret them as follows:</span></td></tr>
+<tr class="codeline" data-linenumber="698"><td class="num" id="LN698">698</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="699"><td class="num" id="LN699">699</td><td class="line"> <span class='comment'>* Type Shutdown Interact Interpretation</span></td></tr>
+<tr class="codeline" data-linenumber="700"><td class="num" id="LN700">700</td><td class="line"> <span class='comment'>* G F A/E/N do nothing (1)</span></td></tr>
+<tr class="codeline" data-linenumber="701"><td class="num" id="LN701">701</td><td class="line"> <span class='comment'>* G T N do nothing (1)*</span></td></tr>
+<tr class="codeline" data-linenumber="702"><td class="num" id="LN702">702</td><td class="line"> <span class='comment'>* G T A/E quit_requested (2)</span></td></tr>
+<tr class="codeline" data-linenumber="703"><td class="num" id="LN703">703</td><td class="line"> <span class='comment'>* L/B F A/E/N save_state (3)</span></td></tr>
+<tr class="codeline" data-linenumber="704"><td class="num" id="LN704">704</td><td class="line"> <span class='comment'>* L/B T N save_state (3)*</span></td></tr>
+<tr class="codeline" data-linenumber="705"><td class="num" id="LN705">705</td><td class="line"> <span class='comment'>* L/B T A/E quit_requested, then save_state (4)</span></td></tr>
+<tr class="codeline" data-linenumber="706"><td class="num" id="LN706">706</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="707"><td class="num" id="LN707">707</td><td class="line"> <span class='comment'>* 1. Do nothing, because the SM asked us to do something</span></td></tr>
+<tr class="codeline" data-linenumber="708"><td class="num" id="LN708">708</td><td class="line"> <span class='comment'>* uninteresting (save open files, but then don't quit</span></td></tr>
+<tr class="codeline" data-linenumber="709"><td class="num" id="LN709">709</td><td class="line"> <span class='comment'>* afterward) or rude (save open files without asking the user</span></td></tr>
+<tr class="codeline" data-linenumber="710"><td class="num" id="LN710">710</td><td class="line"> <span class='comment'>* for confirmation).</span></td></tr>
+<tr class="codeline" data-linenumber="711"><td class="num" id="LN711">711</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="712"><td class="num" id="LN712">712</td><td class="line"> <span class='comment'>* 2. Request interaction and then emit ::quit_requested. This</span></td></tr>
+<tr class="codeline" data-linenumber="713"><td class="num" id="LN713">713</td><td class="line"> <span class='comment'>* perhaps isn't quite correct for the SmInteractStyleErrors</span></td></tr>
+<tr class="codeline" data-linenumber="714"><td class="num" id="LN714">714</td><td class="line"> <span class='comment'>* case, but we don't care.</span></td></tr>
+<tr class="codeline" data-linenumber="715"><td class="num" id="LN715">715</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="716"><td class="num" id="LN716">716</td><td class="line"> <span class='comment'>* 3. Emit ::save_state. The SmSaveBoth SaveYourselfs in these</span></td></tr>
+<tr class="codeline" data-linenumber="717"><td class="num" id="LN717">717</td><td class="line"> <span class='comment'>* rows essentially get demoted to SmSaveLocal, because their</span></td></tr>
+<tr class="codeline" data-linenumber="718"><td class="num" id="LN718">718</td><td class="line"> <span class='comment'>* Global halves correspond to "do nothing".</span></td></tr>
+<tr class="codeline" data-linenumber="719"><td class="num" id="LN719">719</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="720"><td class="num" id="LN720">720</td><td class="line"> <span class='comment'>* 4. Request interaction, emit ::quit_requested, and then emit</span></td></tr>
+<tr class="codeline" data-linenumber="721"><td class="num" id="LN721">721</td><td class="line"> <span class='comment'>* ::save_state after interacting. This is the SmSaveBoth</span></td></tr>
+<tr class="codeline" data-linenumber="722"><td class="num" id="LN722">722</td><td class="line"> <span class='comment'>* equivalent of #2, but we also promote SmSaveLocal shutdown</span></td></tr>
+<tr class="codeline" data-linenumber="723"><td class="num" id="LN723">723</td><td class="line"> <span class='comment'>* SaveYourselfs to SmSaveBoth here, because we want to give</span></td></tr>
+<tr class="codeline" data-linenumber="724"><td class="num" id="LN724">724</td><td class="line"> <span class='comment'>* the user a chance to save open files before quitting.</span></td></tr>
+<tr class="codeline" data-linenumber="725"><td class="num" id="LN725">725</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="726"><td class="num" id="LN726">726</td><td class="line"> <span class='comment'>* (* It would be nice if we could do something useful when the</span></td></tr>
+<tr class="codeline" data-linenumber="727"><td class="num" id="LN727">727</td><td class="line"> <span class='comment'>* session manager sends a SaveYourself with shutdown True and</span></td></tr>
+<tr class="codeline" data-linenumber="728"><td class="num" id="LN728">728</td><td class="line"> <span class='comment'>* SmInteractStyleNone. But we can't, so we just pretend it didn't</span></td></tr>
+<tr class="codeline" data-linenumber="729"><td class="num" id="LN729">729</td><td class="line"> <span class='comment'>* even tell us it was shutting down. The docs for ::quit mention</span></td></tr>
+<tr class="codeline" data-linenumber="730"><td class="num" id="LN730">730</td><td class="line"> <span class='comment'>* that it might not always be preceded by ::quit_requested.)</span></td></tr>
+<tr class="codeline" data-linenumber="731"><td class="num" id="LN731">731</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="732"><td class="num" id="LN732">732</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="733"><td class="num" id="LN733">733</td><td class="line"> <span class='comment'>/* As an optimization, we don't actually request interaction and</span></td></tr>
+<tr class="codeline" data-linenumber="734"><td class="num" id="LN734">734</td><td class="line"> <span class='comment'>* emit ::quit_requested if the application isn't listening to the</span></td></tr>
+<tr class="codeline" data-linenumber="735"><td class="num" id="LN735">735</td><td class="line"> <span class='comment'>* signal.</span></td></tr>
+<tr class="codeline" data-linenumber="736"><td class="num" id="LN736">736</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="737"><td class="num" id="LN737">737</td><td class="line"> wants_quit_requested = g_signal_has_handler_pending (xsmp, g_signal_lookup (<span class='string_literal'>"quit_requested"</span>, <span class='macro'>EGG_TYPE_SM_CLIENT<span class='macro_popup'>(egg_sm_client_get_type ())</span></span>), 0, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="738"><td class="num" id="LN738">738</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="739"><td class="num" id="LN739">739</td><td class="line"> xsmp-&gt;need_save_state = (save_type != <span class='macro'>SmSaveGlobal<span class='macro_popup'>0</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="740"><td class="num" id="LN740">740</td><td class="line"> xsmp-&gt;need_quit_requested = (shutdown &amp;&amp; wants_quit_requested &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="741"><td class="num" id="LN741">741</td><td class="line"> interact_style != <span class='macro'>SmInteractStyleNone<span class='macro_popup'>0</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="742"><td class="num" id="LN742">742</td><td class="line"> xsmp-&gt;interact_errors = (interact_style == <span class='macro'>SmInteractStyleErrors<span class='macro_popup'>1</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="743"><td class="num" id="LN743">743</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="744"><td class="num" id="LN744">744</td><td class="line"> xsmp-&gt;shutting_down = shutdown;</td></tr>
+<tr class="codeline" data-linenumber="745"><td class="num" id="LN745">745</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="746"><td class="num" id="LN746">746</td><td class="line"> do_save_yourself (xsmp);</td></tr>
+<tr class="codeline" data-linenumber="747"><td class="num" id="LN747">747</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="748"><td class="num" id="LN748">748</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="749"><td class="num" id="LN749">749</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="750"><td class="num" id="LN750">750</td><td class="line">do_save_yourself (EggSMClientXSMP *xsmp)</td></tr>
+<tr class="codeline" data-linenumber="751"><td class="num" id="LN751">751</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="752"><td class="num" id="LN752">752</td><td class="line"> <span class='keyword'>if</span> (xsmp-&gt;state == XSMP_STATE_SHUTDOWN_CANCELLED)</td></tr>
+<tr class="codeline" data-linenumber="753"><td class="num" id="LN753">753</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="754"><td class="num" id="LN754">754</td><td class="line"> <span class='comment'>/* The SM cancelled a previous SaveYourself, but we haven't yet</span></td></tr>
+<tr class="codeline" data-linenumber="755"><td class="num" id="LN755">755</td><td class="line"> <span class='comment'>* had a chance to tell the application, so we can't start</span></td></tr>
+<tr class="codeline" data-linenumber="756"><td class="num" id="LN756">756</td><td class="line"> <span class='comment'>* processing this SaveYourself yet.</span></td></tr>
+<tr class="codeline" data-linenumber="757"><td class="num" id="LN757">757</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="758"><td class="num" id="LN758">758</td><td class="line"> xsmp-&gt;waiting_to_save_myself = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="759"><td class="num" id="LN759">759</td><td class="line"> update_pending_events (xsmp);</td></tr>
+<tr class="codeline" data-linenumber="760"><td class="num" id="LN760">760</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="761"><td class="num" id="LN761">761</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="762"><td class="num" id="LN762">762</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="763"><td class="num" id="LN763">763</td><td class="line"> <span class='keyword'>if</span> (xsmp-&gt;need_quit_requested)</td></tr>
+<tr class="codeline" data-linenumber="764"><td class="num" id="LN764">764</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="765"><td class="num" id="LN765">765</td><td class="line"> xsmp-&gt;state = XSMP_STATE_INTERACT_REQUEST;</td></tr>
+<tr class="codeline" data-linenumber="766"><td class="num" id="LN766">766</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="767"><td class="num" id="LN767">767</td><td class="line"> g_debug (<span class='string_literal'>"Sending InteractRequest(%s)"</span>,</td></tr>
+<tr class="codeline" data-linenumber="768"><td class="num" id="LN768">768</td><td class="line"> xsmp-&gt;interact_errors ? <span class='string_literal'>"Error"</span> : <span class='string_literal'>"Normal"</span>);</td></tr>
+<tr class="codeline" data-linenumber="769"><td class="num" id="LN769">769</td><td class="line"> SmcInteractRequest (xsmp-&gt;connection,</td></tr>
+<tr class="codeline" data-linenumber="770"><td class="num" id="LN770">770</td><td class="line"> xsmp-&gt;interact_errors ? <span class='macro'>SmDialogError<span class='macro_popup'>0</span></span> : <span class='macro'>SmDialogNormal<span class='macro_popup'>1</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="771"><td class="num" id="LN771">771</td><td class="line"> xsmp_interact,</td></tr>
+<tr class="codeline" data-linenumber="772"><td class="num" id="LN772">772</td><td class="line"> xsmp);</td></tr>
+<tr class="codeline" data-linenumber="773"><td class="num" id="LN773">773</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="774"><td class="num" id="LN774">774</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="775"><td class="num" id="LN775">775</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="776"><td class="num" id="LN776">776</td><td class="line"> <span class='keyword'>if</span> (xsmp-&gt;need_save_state)</td></tr>
+<tr class="codeline" data-linenumber="777"><td class="num" id="LN777">777</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="778"><td class="num" id="LN778">778</td><td class="line"> save_state (xsmp);</td></tr>
+<tr class="codeline" data-linenumber="779"><td class="num" id="LN779">779</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="780"><td class="num" id="LN780">780</td><td class="line"> <span class='comment'>/* Though unlikely, the client could have been disconnected</span></td></tr>
+<tr class="codeline" data-linenumber="781"><td class="num" id="LN781">781</td><td class="line"> <span class='comment'>* while the application was saving its state.</span></td></tr>
+<tr class="codeline" data-linenumber="782"><td class="num" id="LN782">782</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="783"><td class="num" id="LN783">783</td><td class="line"> <span class='keyword'>if</span> (!xsmp-&gt;connection)</td></tr>
+<tr class="codeline" data-linenumber="784"><td class="num" id="LN784">784</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="785"><td class="num" id="LN785">785</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="786"><td class="num" id="LN786">786</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="787"><td class="num" id="LN787">787</td><td class="line"> g_debug (<span class='string_literal'>"Sending SaveYourselfDone(True)"</span>);</td></tr>
+<tr class="codeline" data-linenumber="788"><td class="num" id="LN788">788</td><td class="line"> SmcSaveYourselfDone (xsmp-&gt;connection, <span class='macro'>True<span class='macro_popup'>1</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="789"><td class="num" id="LN789">789</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="790"><td class="num" id="LN790">790</td><td class="line"> <span class='comment'>/* The client state diagram in the XSMP spec says that after a</span></td></tr>
+<tr class="codeline" data-linenumber="791"><td class="num" id="LN791">791</td><td class="line"> <span class='comment'>* non-shutdown SaveYourself, we go directly back to "idle". But</span></td></tr>
+<tr class="codeline" data-linenumber="792"><td class="num" id="LN792">792</td><td class="line"> <span class='comment'>* everything else in both the XSMP spec and the libSM docs</span></td></tr>
+<tr class="codeline" data-linenumber="793"><td class="num" id="LN793">793</td><td class="line"> <span class='comment'>* disagrees.</span></td></tr>
+<tr class="codeline" data-linenumber="794"><td class="num" id="LN794">794</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="795"><td class="num" id="LN795">795</td><td class="line"> xsmp-&gt;state = XSMP_STATE_SAVE_YOURSELF_DONE;</td></tr>
+<tr class="codeline" data-linenumber="796"><td class="num" id="LN796">796</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="797"><td class="num" id="LN797">797</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="798"><td class="num" id="LN798">798</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="799"><td class="num" id="LN799">799</td><td class="line">save_state (EggSMClientXSMP *xsmp)</td></tr>
+<tr class="codeline" data-linenumber="800"><td class="num" id="LN800">800</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="801"><td class="num" id="LN801">801</td><td class="line"> GKeyFile *state_file;</td></tr>
+<tr class="codeline" data-linenumber="802"><td class="num" id="LN802">802</td><td class="line"> <span class='keyword'>char</span> *state_file_path, *data;</td></tr>
+<tr class="codeline" data-linenumber="803"><td class="num" id="LN803">803</td><td class="line"> EggDesktopFile *desktop_file;</td></tr>
+<tr class="codeline" data-linenumber="804"><td class="num" id="LN804">804</td><td class="line"> GPtrArray *restart, *discard;</td></tr>
+<tr class="codeline" data-linenumber="805"><td class="num" id="LN805">805</td><td class="line"> <span class='keyword'>int</span> offset, fd;</td></tr>
+<tr class="codeline" data-linenumber="806"><td class="num" id="LN806">806</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="807"><td class="num" id="LN807">807</td><td class="line"> <span class='comment'>/* We set xsmp-&gt;state before emitting save_state, but our caller is</span></td></tr>
+<tr class="codeline" data-linenumber="808"><td class="num" id="LN808">808</td><td class="line"> <span class='comment'>* responsible for setting it back afterward.</span></td></tr>
+<tr class="codeline" data-linenumber="809"><td class="num" id="LN809">809</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="810"><td class="num" id="LN810">810</td><td class="line"> xsmp-&gt;state = XSMP_STATE_SAVE_YOURSELF;</td></tr>
+<tr class="codeline" data-linenumber="811"><td class="num" id="LN811">811</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="812"><td class="num" id="LN812">812</td><td class="line"> state_file = egg_sm_client_save_state ((EggSMClient *)xsmp);</td></tr>
+<tr class="codeline" data-linenumber="813"><td class="num" id="LN813">813</td><td class="line"> <span class='keyword'>if</span> (!state_file)</td></tr>
+<tr class="codeline" data-linenumber="814"><td class="num" id="LN814">814</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="815"><td class="num" id="LN815">815</td><td class="line"> restart = generate_command (xsmp-&gt;restart_command, xsmp-&gt;client_id, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="816"><td class="num" id="LN816">816</td><td class="line"> set_properties (xsmp,</td></tr>
+<tr class="codeline" data-linenumber="817"><td class="num" id="LN817">817</td><td class="line"> ptrarray_prop (<span class='macro'>SmRestartCommand<span class='macro_popup'>"RestartCommand"</span></span>, restart),</td></tr>
+<tr class="codeline" data-linenumber="818"><td class="num" id="LN818">818</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="819"><td class="num" id="LN819">819</td><td class="line"> g_ptr_array_free (restart, <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="820"><td class="num" id="LN820">820</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="821"><td class="num" id="LN821">821</td><td class="line"> <span class='keyword'>if</span> (xsmp-&gt;set_discard_command)</td></tr>
+<tr class="codeline" data-linenumber="822"><td class="num" id="LN822">822</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="823"><td class="num" id="LN823">823</td><td class="line"> discard = generate_command (xsmp-&gt;discard_command, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="824"><td class="num" id="LN824">824</td><td class="line"> set_properties (xsmp,</td></tr>
+<tr class="codeline" data-linenumber="825"><td class="num" id="LN825">825</td><td class="line"> ptrarray_prop (<span class='macro'>SmDiscardCommand<span class='macro_popup'>"DiscardCommand"</span></span>, discard),</td></tr>
+<tr class="codeline" data-linenumber="826"><td class="num" id="LN826">826</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="827"><td class="num" id="LN827">827</td><td class="line"> g_ptr_array_free (discard, <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="828"><td class="num" id="LN828">828</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="829"><td class="num" id="LN829">829</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="830"><td class="num" id="LN830">830</td><td class="line"> delete_properties (xsmp, <span class='macro'>SmDiscardCommand<span class='macro_popup'>"DiscardCommand"</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="831"><td class="num" id="LN831">831</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="832"><td class="num" id="LN832">832</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="833"><td class="num" id="LN833">833</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="834"><td class="num" id="LN834">834</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="835"><td class="num" id="LN835">835</td><td class="line"> desktop_file = egg_get_desktop_file ();</td></tr>
+<tr class="codeline" data-linenumber="836"><td class="num" id="LN836">836</td><td class="line"> <span class='keyword'>if</span> (desktop_file)</td></tr>
+<tr class="codeline" data-linenumber="837"><td class="num" id="LN837">837</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="838"><td class="num" id="LN838">838</td><td class="line"> GKeyFile *merged_file;</td></tr>
+<tr class="codeline" data-linenumber="839"><td class="num" id="LN839">839</td><td class="line"> <span class='keyword'>char</span> *desktop_file_path;</td></tr>
+<tr class="codeline" data-linenumber="840"><td class="num" id="LN840">840</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="841"><td class="num" id="LN841">841</td><td class="line"> merged_file = g_key_file_new ();</td></tr>
+<tr class="codeline" data-linenumber="842"><td class="num" id="LN842">842</td><td class="line"> desktop_file_path =</td></tr>
+<tr class="codeline" data-linenumber="843"><td class="num" id="LN843">843</td><td class="line"> g_filename_from_uri (egg_desktop_file_get_source (desktop_file),</td></tr>
+<tr class="codeline" data-linenumber="844"><td class="num" id="LN844">844</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="845"><td class="num" id="LN845">845</td><td class="line"> <span class='keyword'>if</span> (desktop_file_path &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="846"><td class="num" id="LN846">846</td><td class="line"> g_key_file_load_from_file (merged_file, desktop_file_path,</td></tr>
+<tr class="codeline" data-linenumber="847"><td class="num" id="LN847">847</td><td class="line"> G_KEY_FILE_KEEP_COMMENTS |</td></tr>
+<tr class="codeline" data-linenumber="848"><td class="num" id="LN848">848</td><td class="line"> G_KEY_FILE_KEEP_TRANSLATIONS, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>))</td></tr>
+<tr class="codeline" data-linenumber="849"><td class="num" id="LN849">849</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="850"><td class="num" id="LN850">850</td><td class="line"> guint g, k, i;</td></tr>
+<tr class="codeline" data-linenumber="851"><td class="num" id="LN851">851</td><td class="line"> <span class='keyword'>char</span> **groups, **keys, *value, *exec;</td></tr>
+<tr class="codeline" data-linenumber="852"><td class="num" id="LN852">852</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="853"><td class="num" id="LN853">853</td><td class="line"> groups = g_key_file_get_groups (state_file, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="854"><td class="num" id="LN854">854</td><td class="line"> <span class='keyword'>for</span> (g = 0; groups[g]; g++)</td></tr>
+<tr class="codeline" data-linenumber="855"><td class="num" id="LN855">855</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="856"><td class="num" id="LN856">856</td><td class="line"> keys = g_key_file_get_keys (state_file, groups[g], <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="857"><td class="num" id="LN857">857</td><td class="line"> <span class='keyword'>for</span> (k = 0; keys[k]; k++)</td></tr>
+<tr class="codeline" data-linenumber="858"><td class="num" id="LN858">858</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="859"><td class="num" id="LN859">859</td><td class="line"> value = g_key_file_get_value (state_file, groups[g],</td></tr>
+<tr class="codeline" data-linenumber="860"><td class="num" id="LN860">860</td><td class="line"> keys[k], <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="861"><td class="num" id="LN861">861</td><td class="line"> <span class='keyword'>if</span> (value)</td></tr>
+<tr class="codeline" data-linenumber="862"><td class="num" id="LN862">862</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="863"><td class="num" id="LN863">863</td><td class="line"> g_key_file_set_value (merged_file, groups[g],</td></tr>
+<tr class="codeline" data-linenumber="864"><td class="num" id="LN864">864</td><td class="line"> keys[k], value);</td></tr>
+<tr class="codeline" data-linenumber="865"><td class="num" id="LN865">865</td><td class="line"> g_free (value);</td></tr>
+<tr class="codeline" data-linenumber="866"><td class="num" id="LN866">866</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="867"><td class="num" id="LN867">867</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="868"><td class="num" id="LN868">868</td><td class="line"> g_strfreev (keys);</td></tr>
+<tr class="codeline" data-linenumber="869"><td class="num" id="LN869">869</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="870"><td class="num" id="LN870">870</td><td class="line"> g_strfreev (groups);</td></tr>
+<tr class="codeline" data-linenumber="871"><td class="num" id="LN871">871</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="872"><td class="num" id="LN872">872</td><td class="line"> g_key_file_free (state_file);</td></tr>
+<tr class="codeline" data-linenumber="873"><td class="num" id="LN873">873</td><td class="line"> state_file = merged_file;</td></tr>
+<tr class="codeline" data-linenumber="874"><td class="num" id="LN874">874</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="875"><td class="num" id="LN875">875</td><td class="line"> <span class='comment'>/* Update Exec key using "--sm-client-state-file %k" */</span></td></tr>
+<tr class="codeline" data-linenumber="876"><td class="num" id="LN876">876</td><td class="line"> restart = generate_command (xsmp-&gt;restart_command,</td></tr>
+<tr class="codeline" data-linenumber="877"><td class="num" id="LN877">877</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='string_literal'>"%k"</span>);</td></tr>
+<tr class="codeline" data-linenumber="878"><td class="num" id="LN878">878</td><td class="line"> <span class='keyword'>for</span> (i = 0; i &lt; restart-&gt;len; i++)</td></tr>
+<tr class="codeline" data-linenumber="879"><td class="num" id="LN879">879</td><td class="line"> restart-&gt;pdata[i] = g_shell_quote (restart-&gt;pdata[i]);</td></tr>
+<tr class="codeline" data-linenumber="880"><td class="num" id="LN880">880</td><td class="line"> g_ptr_array_add (restart, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="881"><td class="num" id="LN881">881</td><td class="line"> exec = g_strjoinv (<span class='string_literal'>" "</span>, (<span class='keyword'>char</span> **)restart-&gt;pdata);</td></tr>
+<tr class="codeline" data-linenumber="882"><td class="num" id="LN882">882</td><td class="line"> g_strfreev ((<span class='keyword'>char</span> **)restart-&gt;pdata);</td></tr>
+<tr class="codeline" data-linenumber="883"><td class="num" id="LN883">883</td><td class="line"> g_ptr_array_free (restart, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="884"><td class="num" id="LN884">884</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="885"><td class="num" id="LN885">885</td><td class="line"> g_key_file_set_string (state_file, <span class='macro'>EGG_DESKTOP_FILE_GROUP<span class='macro_popup'>"Desktop Entry"</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="886"><td class="num" id="LN886">886</td><td class="line"> <span class='macro'>EGG_DESKTOP_FILE_KEY_EXEC<span class='macro_popup'>"Exec"</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="887"><td class="num" id="LN887">887</td><td class="line"> exec);</td></tr>
+<tr class="codeline" data-linenumber="888"><td class="num" id="LN888">888</td><td class="line"> g_free (exec);</td></tr>
+<tr class="codeline" data-linenumber="889"><td class="num" id="LN889">889</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="890"><td class="num" id="LN890">890</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="891"><td class="num" id="LN891">891</td><td class="line"> desktop_file = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="892"><td class="num" id="LN892">892</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="893"><td class="num" id="LN893">893</td><td class="line"> g_free (desktop_file_path);</td></tr>
+<tr class="codeline" data-linenumber="894"><td class="num" id="LN894">894</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="895"><td class="num" id="LN895">895</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="896"><td class="num" id="LN896">896</td><td class="line"> <span class='comment'>/* Now write state_file to disk. (We can't use mktemp(), because</span></td></tr>
+<tr class="codeline" data-linenumber="897"><td class="num" id="LN897">897</td><td class="line"> <span class='comment'>* that requires the filename to end with "XXXXXX", and we want</span></td></tr>
+<tr class="codeline" data-linenumber="898"><td class="num" id="LN898">898</td><td class="line"> <span class='comment'>* it to end with ".desktop".)</span></td></tr>
+<tr class="codeline" data-linenumber="899"><td class="num" id="LN899">899</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="900"><td class="num" id="LN900">900</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="901"><td class="num" id="LN901">901</td><td class="line"> data = g_key_file_to_data (state_file, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="902"><td class="num" id="LN902">902</td><td class="line"> g_key_file_free (state_file);</td></tr>
+<tr class="codeline" data-linenumber="903"><td class="num" id="LN903">903</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="904"><td class="num" id="LN904">904</td><td class="line"> offset = 0;</td></tr>
+<tr class="codeline" data-linenumber="905"><td class="num" id="LN905">905</td><td class="line"> <span class='keyword'>while</span> (1)</td></tr>
+<tr class="codeline" data-linenumber="906"><td class="num" id="LN906">906</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="907"><td class="num" id="LN907">907</td><td class="line"> state_file_path = g_strdup_printf (<span class='string_literal'>"%s%csession-state%c%s-%ld.%s"</span>,</td></tr>
+<tr class="codeline" data-linenumber="908"><td class="num" id="LN908">908</td><td class="line"> g_get_user_config_dir (),</td></tr>
+<tr class="codeline" data-linenumber="909"><td class="num" id="LN909">909</td><td class="line"> <span class='macro'>G_DIR_SEPARATOR<span class='macro_popup'>'/'</span></span>, <span class='macro'>G_DIR_SEPARATOR<span class='macro_popup'>'/'</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="910"><td class="num" id="LN910">910</td><td class="line"> g_get_prgname (),</td></tr>
+<tr class="codeline" data-linenumber="911"><td class="num" id="LN911">911</td><td class="line"> (<span class='keyword'>long</span>)time (<span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) + offset,</td></tr>
+<tr class="codeline" data-linenumber="912"><td class="num" id="LN912">912</td><td class="line"> desktop_file ? <span class='string_literal'>"desktop"</span> : <span class='string_literal'>"state"</span>);</td></tr>
+<tr class="codeline" data-linenumber="913"><td class="num" id="LN913">913</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="914"><td class="num" id="LN914">914</td><td class="line"> fd = open (state_file_path, <span class='macro'>O_WRONLY<span class='macro_popup'>01</span></span> | <span class='macro'>O_CREAT<span class='macro_popup'>0100</span></span> | <span class='macro'>O_EXCL<span class='macro_popup'>0200</span></span>, 0644);</td></tr>
+<tr class="codeline" data-linenumber="915"><td class="num" id="LN915">915</td><td class="line"> <span class='keyword'>if</span> (fd == -1)</td></tr>
+<tr class="codeline" data-linenumber="916"><td class="num" id="LN916">916</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="917"><td class="num" id="LN917">917</td><td class="line"> <span class='keyword'>if</span> (<span class='macro'>errno<span class='macro_popup'>(*__errno_location ())</span></span> == <span class='macro'>EEXIST<span class='macro_popup'>17</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="918"><td class="num" id="LN918">918</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="919"><td class="num" id="LN919">919</td><td class="line"> offset++;</td></tr>
+<tr class="codeline" data-linenumber="920"><td class="num" id="LN920">920</td><td class="line"> g_free (state_file_path);</td></tr>
+<tr class="codeline" data-linenumber="921"><td class="num" id="LN921">921</td><td class="line"> <span class='keyword'>continue</span>;</td></tr>
+<tr class="codeline" data-linenumber="922"><td class="num" id="LN922">922</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="923"><td class="num" id="LN923">923</td><td class="line"> <span class='keyword'>else</span> <span class='keyword'>if</span> (<span class='macro'>errno<span class='macro_popup'>(*__errno_location ())</span></span> == <span class='macro'>ENOTDIR<span class='macro_popup'>20</span></span> || <span class='macro'>errno<span class='macro_popup'>(*__errno_location ())</span></span> == <span class='macro'>ENOENT<span class='macro_popup'>2</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="924"><td class="num" id="LN924">924</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="925"><td class="num" id="LN925">925</td><td class="line"> <span class='keyword'>char</span> *sep = strrchr (state_file_path, <span class='macro'>G_DIR_SEPARATOR<span class='macro_popup'>'/'</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="926"><td class="num" id="LN926">926</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="927"><td class="num" id="LN927">927</td><td class="line"> *sep = '\0';</td></tr>
+<tr class="codeline" data-linenumber="928"><td class="num" id="LN928">928</td><td class="line"> <span class='keyword'>if</span> (g_mkdir_with_parents (state_file_path, 0755) != 0)</td></tr>
+<tr class="codeline" data-linenumber="929"><td class="num" id="LN929">929</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="930"><td class="num" id="LN930">930</td><td class="line"> g_warning (<span class='string_literal'>"Could not create directory '%s'"</span>,</td></tr>
+<tr class="codeline" data-linenumber="931"><td class="num" id="LN931">931</td><td class="line"> state_file_path);</td></tr>
+<tr class="codeline" data-linenumber="932"><td class="num" id="LN932">932</td><td class="line"> g_free (state_file_path);</td></tr>
+<tr class="codeline" data-linenumber="933"><td class="num" id="LN933">933</td><td class="line"> state_file_path = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="934"><td class="num" id="LN934">934</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="935"><td class="num" id="LN935">935</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="936"><td class="num" id="LN936">936</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="937"><td class="num" id="LN937">937</td><td class="line"> <span class='keyword'>continue</span>;</td></tr>
+<tr class="codeline" data-linenumber="938"><td class="num" id="LN938">938</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="939"><td class="num" id="LN939">939</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="940"><td class="num" id="LN940">940</td><td class="line"> g_warning (<span class='string_literal'>"Could not create file '%s': %s"</span>,</td></tr>
+<tr class="codeline" data-linenumber="941"><td class="num" id="LN941">941</td><td class="line"> state_file_path, g_strerror (<span class='macro'>errno<span class='macro_popup'>(*__errno_location ())</span></span>));</td></tr>
+<tr class="codeline" data-linenumber="942"><td class="num" id="LN942">942</td><td class="line"> g_free (state_file_path);</td></tr>
+<tr class="codeline" data-linenumber="943"><td class="num" id="LN943">943</td><td class="line"> state_file_path = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="944"><td class="num" id="LN944">944</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="945"><td class="num" id="LN945">945</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="946"><td class="num" id="LN946">946</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="947"><td class="num" id="LN947">947</td><td class="line"> close (fd);</td></tr>
+<tr class="codeline" data-linenumber="948"><td class="num" id="LN948">948</td><td class="line"> g_file_set_contents (state_file_path, data, -1, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="949"><td class="num" id="LN949">949</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="950"><td class="num" id="LN950">950</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="951"><td class="num" id="LN951">951</td><td class="line"> g_free (data);</td></tr>
+<tr class="codeline" data-linenumber="952"><td class="num" id="LN952">952</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="953"><td class="num" id="LN953">953</td><td class="line"> restart = generate_command (xsmp-&gt;restart_command, xsmp-&gt;client_id,</td></tr>
+<tr class="codeline" data-linenumber="954"><td class="num" id="LN954">954</td><td class="line"> state_file_path);</td></tr>
+<tr class="codeline" data-linenumber="955"><td class="num" id="LN955">955</td><td class="line"> set_properties (xsmp,</td></tr>
+<tr class="codeline" data-linenumber="956"><td class="num" id="LN956">956</td><td class="line"> ptrarray_prop (<span class='macro'>SmRestartCommand<span class='macro_popup'>"RestartCommand"</span></span>, restart),</td></tr>
+<tr class="codeline" data-linenumber="957"><td class="num" id="LN957">957</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="958"><td class="num" id="LN958">958</td><td class="line"> g_ptr_array_free (restart, <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="959"><td class="num" id="LN959">959</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="960"><td class="num" id="LN960">960</td><td class="line"> <span class='keyword'>if</span> (state_file_path)</td></tr>
+<tr class="codeline" data-linenumber="961"><td class="num" id="LN961">961</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="962"><td class="num" id="LN962">962</td><td class="line"> set_properties (xsmp,</td></tr>
+<tr class="codeline" data-linenumber="963"><td class="num" id="LN963">963</td><td class="line"> array_prop (<span class='macro'>SmDiscardCommand<span class='macro_popup'>"DiscardCommand"</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="964"><td class="num" id="LN964">964</td><td class="line"> <span class='string_literal'>"/bin/rm"</span>, <span class='string_literal'>"-rf"</span>, state_file_path,</td></tr>
+<tr class="codeline" data-linenumber="965"><td class="num" id="LN965">965</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>),</td></tr>
+<tr class="codeline" data-linenumber="966"><td class="num" id="LN966">966</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="967"><td class="num" id="LN967">967</td><td class="line"> g_free (state_file_path);</td></tr>
+<tr class="codeline" data-linenumber="968"><td class="num" id="LN968">968</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="969"><td class="num" id="LN969">969</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="970"><td class="num" id="LN970">970</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="971"><td class="num" id="LN971">971</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="972"><td class="num" id="LN972">972</td><td class="line">xsmp_interact (SmcConn smc_conn,</td></tr>
+<tr class="codeline" data-linenumber="973"><td class="num" id="LN973">973</td><td class="line"> SmPointer client_data)</td></tr>
+<tr class="codeline" data-linenumber="974"><td class="num" id="LN974">974</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="975"><td class="num" id="LN975">975</td><td class="line"> EggSMClientXSMP *xsmp = client_data;</td></tr>
+<tr class="codeline" data-linenumber="976"><td class="num" id="LN976">976</td><td class="line"> EggSMClient *client = client_data;</td></tr>
+<tr class="codeline" data-linenumber="977"><td class="num" id="LN977">977</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="978"><td class="num" id="LN978">978</td><td class="line"> g_debug (<span class='string_literal'>"Received Interact message in state %s"</span>,</td></tr>
+<tr class="codeline" data-linenumber="979"><td class="num" id="LN979">979</td><td class="line"> <span class='macro'>EGG_SM_CLIENT_XSMP_STATE (xsmp)<span class='macro_popup'>(state_names[(xsmp)-&gt;state])</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="980"><td class="num" id="LN980">980</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="981"><td class="num" id="LN981">981</td><td class="line"> <span class='keyword'>if</span> (xsmp-&gt;state != XSMP_STATE_INTERACT_REQUEST)</td></tr>
+<tr class="codeline" data-linenumber="982"><td class="num" id="LN982">982</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="983"><td class="num" id="LN983">983</td><td class="line"> fix_broken_state (xsmp, <span class='string_literal'>"Interact"</span>, <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>, <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="984"><td class="num" id="LN984">984</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="985"><td class="num" id="LN985">985</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="986"><td class="num" id="LN986">986</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="987"><td class="num" id="LN987">987</td><td class="line"> xsmp-&gt;state = XSMP_STATE_INTERACT;</td></tr>
+<tr class="codeline" data-linenumber="988"><td class="num" id="LN988">988</td><td class="line"> egg_sm_client_quit_requested (client);</td></tr>
+<tr class="codeline" data-linenumber="989"><td class="num" id="LN989">989</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="990"><td class="num" id="LN990">990</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="991"><td class="num" id="LN991">991</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="992"><td class="num" id="LN992">992</td><td class="line">xsmp_die (SmcConn smc_conn,</td></tr>
+<tr class="codeline" data-linenumber="993"><td class="num" id="LN993">993</td><td class="line"> SmPointer client_data)</td></tr>
+<tr class="codeline" data-linenumber="994"><td class="num" id="LN994">994</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="995"><td class="num" id="LN995">995</td><td class="line"> EggSMClientXSMP *xsmp = client_data;</td></tr>
+<tr class="codeline" data-linenumber="996"><td class="num" id="LN996">996</td><td class="line"> EggSMClient *client = client_data;</td></tr>
+<tr class="codeline" data-linenumber="997"><td class="num" id="LN997">997</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="998"><td class="num" id="LN998">998</td><td class="line"> g_debug (<span class='string_literal'>"Received Die message in state %s"</span>,</td></tr>
+<tr class="codeline" data-linenumber="999"><td class="num" id="LN999">999</td><td class="line"> <span class='macro'>EGG_SM_CLIENT_XSMP_STATE (xsmp)<span class='macro_popup'>(state_names[(xsmp)-&gt;state])</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1000"><td class="num" id="LN1000">1000</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1001"><td class="num" id="LN1001">1001</td><td class="line"> sm_client_xsmp_disconnect (xsmp);</td></tr>
+<tr class="codeline" data-linenumber="1002"><td class="num" id="LN1002">1002</td><td class="line"> egg_sm_client_quit (client);</td></tr>
+<tr class="codeline" data-linenumber="1003"><td class="num" id="LN1003">1003</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1004"><td class="num" id="LN1004">1004</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1005"><td class="num" id="LN1005">1005</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1006"><td class="num" id="LN1006">1006</td><td class="line">xsmp_save_complete (SmcConn smc_conn,</td></tr>
+<tr class="codeline" data-linenumber="1007"><td class="num" id="LN1007">1007</td><td class="line"> SmPointer client_data)</td></tr>
+<tr class="codeline" data-linenumber="1008"><td class="num" id="LN1008">1008</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1009"><td class="num" id="LN1009">1009</td><td class="line"> EggSMClientXSMP *xsmp = client_data;</td></tr>
+<tr class="codeline" data-linenumber="1010"><td class="num" id="LN1010">1010</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1011"><td class="num" id="LN1011">1011</td><td class="line"> g_debug (<span class='string_literal'>"Received SaveComplete message in state %s"</span>,</td></tr>
+<tr class="codeline" data-linenumber="1012"><td class="num" id="LN1012">1012</td><td class="line"> <span class='macro'>EGG_SM_CLIENT_XSMP_STATE (xsmp)<span class='macro_popup'>(state_names[(xsmp)-&gt;state])</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1013"><td class="num" id="LN1013">1013</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1014"><td class="num" id="LN1014">1014</td><td class="line"> <span class='keyword'>if</span> (xsmp-&gt;state == XSMP_STATE_SAVE_YOURSELF_DONE)</td></tr>
+<tr class="codeline" data-linenumber="1015"><td class="num" id="LN1015">1015</td><td class="line"> xsmp-&gt;state = XSMP_STATE_IDLE;</td></tr>
+<tr class="codeline" data-linenumber="1016"><td class="num" id="LN1016">1016</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="1017"><td class="num" id="LN1017">1017</td><td class="line"> fix_broken_state (xsmp, <span class='string_literal'>"SaveComplete"</span>, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1018"><td class="num" id="LN1018">1018</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1019"><td class="num" id="LN1019">1019</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1020"><td class="num" id="LN1020">1020</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1021"><td class="num" id="LN1021">1021</td><td class="line">xsmp_shutdown_cancelled (SmcConn smc_conn,</td></tr>
+<tr class="codeline" data-linenumber="1022"><td class="num" id="LN1022">1022</td><td class="line"> SmPointer client_data)</td></tr>
+<tr class="codeline" data-linenumber="1023"><td class="num" id="LN1023">1023</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1024"><td class="num" id="LN1024">1024</td><td class="line"> EggSMClientXSMP *xsmp = client_data;</td></tr>
+<tr class="codeline" data-linenumber="1025"><td class="num" id="LN1025">1025</td><td class="line"> EggSMClient *client = client_data;</td></tr>
+<tr class="codeline" data-linenumber="1026"><td class="num" id="LN1026">1026</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1027"><td class="num" id="LN1027">1027</td><td class="line"> g_debug (<span class='string_literal'>"Received ShutdownCancelled message in state %s"</span>,</td></tr>
+<tr class="codeline" data-linenumber="1028"><td class="num" id="LN1028">1028</td><td class="line"> <span class='macro'>EGG_SM_CLIENT_XSMP_STATE (xsmp)<span class='macro_popup'>(state_names[(xsmp)-&gt;state])</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1029"><td class="num" id="LN1029">1029</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1030"><td class="num" id="LN1030">1030</td><td class="line"> xsmp-&gt;shutting_down = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1031"><td class="num" id="LN1031">1031</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1032"><td class="num" id="LN1032">1032</td><td class="line"> <span class='keyword'>if</span> (xsmp-&gt;state == XSMP_STATE_SAVE_YOURSELF_DONE)</td></tr>
+<tr class="codeline" data-linenumber="1033"><td class="num" id="LN1033">1033</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="1034"><td class="num" id="LN1034">1034</td><td class="line"> <span class='comment'>/* We've finished interacting and now the SM has agreed to</span></td></tr>
+<tr class="codeline" data-linenumber="1035"><td class="num" id="LN1035">1035</td><td class="line"> <span class='comment'>* cancel the shutdown.</span></td></tr>
+<tr class="codeline" data-linenumber="1036"><td class="num" id="LN1036">1036</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="1037"><td class="num" id="LN1037">1037</td><td class="line"> xsmp-&gt;state = XSMP_STATE_IDLE;</td></tr>
+<tr class="codeline" data-linenumber="1038"><td class="num" id="LN1038">1038</td><td class="line"> egg_sm_client_quit_cancelled (client);</td></tr>
+<tr class="codeline" data-linenumber="1039"><td class="num" id="LN1039">1039</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1040"><td class="num" id="LN1040">1040</td><td class="line"> <span class='keyword'>else</span> <span class='keyword'>if</span> (xsmp-&gt;state == XSMP_STATE_SHUTDOWN_CANCELLED)</td></tr>
+<tr class="codeline" data-linenumber="1041"><td class="num" id="LN1041">1041</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="1042"><td class="num" id="LN1042">1042</td><td class="line"> <span class='comment'>/* Hm... ok, so we got a shutdown SaveYourself, which got</span></td></tr>
+<tr class="codeline" data-linenumber="1043"><td class="num" id="LN1043">1043</td><td class="line"> <span class='comment'>* cancelled, but the application was still interacting, so we</span></td></tr>
+<tr class="codeline" data-linenumber="1044"><td class="num" id="LN1044">1044</td><td class="line"> <span class='comment'>* didn't tell it yet, and then *another* SaveYourself arrived,</span></td></tr>
+<tr class="codeline" data-linenumber="1045"><td class="num" id="LN1045">1045</td><td class="line"> <span class='comment'>* which we must still be waiting to tell the app about, except</span></td></tr>
+<tr class="codeline" data-linenumber="1046"><td class="num" id="LN1046">1046</td><td class="line"> <span class='comment'>* that now that SaveYourself has been cancelled too! Dizzy yet?</span></td></tr>
+<tr class="codeline" data-linenumber="1047"><td class="num" id="LN1047">1047</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="1048"><td class="num" id="LN1048">1048</td><td class="line"> xsmp-&gt;waiting_to_save_myself = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1049"><td class="num" id="LN1049">1049</td><td class="line"> update_pending_events (xsmp);</td></tr>
+<tr class="codeline" data-linenumber="1050"><td class="num" id="LN1050">1050</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1051"><td class="num" id="LN1051">1051</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="1052"><td class="num" id="LN1052">1052</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="1053"><td class="num" id="LN1053">1053</td><td class="line"> g_debug (<span class='string_literal'>"Sending SaveYourselfDone(False)"</span>);</td></tr>
+<tr class="codeline" data-linenumber="1054"><td class="num" id="LN1054">1054</td><td class="line"> SmcSaveYourselfDone (xsmp-&gt;connection, <span class='macro'>False<span class='macro_popup'>0</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1055"><td class="num" id="LN1055">1055</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1056"><td class="num" id="LN1056">1056</td><td class="line"> <span class='keyword'>if</span> (xsmp-&gt;state == XSMP_STATE_INTERACT)</td></tr>
+<tr class="codeline" data-linenumber="1057"><td class="num" id="LN1057">1057</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="1058"><td class="num" id="LN1058">1058</td><td class="line"> <span class='comment'>/* The application is currently interacting, so we can't</span></td></tr>
+<tr class="codeline" data-linenumber="1059"><td class="num" id="LN1059">1059</td><td class="line"> <span class='comment'>* tell it about the cancellation yet; we will wait until</span></td></tr>
+<tr class="codeline" data-linenumber="1060"><td class="num" id="LN1060">1060</td><td class="line"> <span class='comment'>* after it calls egg_sm_client_will_quit().</span></td></tr>
+<tr class="codeline" data-linenumber="1061"><td class="num" id="LN1061">1061</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="1062"><td class="num" id="LN1062">1062</td><td class="line"> xsmp-&gt;state = XSMP_STATE_SHUTDOWN_CANCELLED;</td></tr>
+<tr class="codeline" data-linenumber="1063"><td class="num" id="LN1063">1063</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1064"><td class="num" id="LN1064">1064</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="1065"><td class="num" id="LN1065">1065</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="1066"><td class="num" id="LN1066">1066</td><td class="line"> <span class='comment'>/* The shutdown was cancelled before the application got a</span></td></tr>
+<tr class="codeline" data-linenumber="1067"><td class="num" id="LN1067">1067</td><td class="line"> <span class='comment'>* chance to interact.</span></td></tr>
+<tr class="codeline" data-linenumber="1068"><td class="num" id="LN1068">1068</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="1069"><td class="num" id="LN1069">1069</td><td class="line"> xsmp-&gt;state = XSMP_STATE_IDLE;</td></tr>
+<tr class="codeline" data-linenumber="1070"><td class="num" id="LN1070">1070</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1071"><td class="num" id="LN1071">1071</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1072"><td class="num" id="LN1072">1072</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1073"><td class="num" id="LN1073">1073</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1074"><td class="num" id="LN1074">1074</td><td class="line"><span class='comment'>/* Utilities */</span></td></tr>
+<tr class="codeline" data-linenumber="1075"><td class="num" id="LN1075">1075</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1076"><td class="num" id="LN1076">1076</td><td class="line"><span class='comment'>/* Create a restart/clone/Exec command based on @restart_command.</span></td></tr>
+<tr class="codeline" data-linenumber="1077"><td class="num" id="LN1077">1077</td><td class="line"> <span class='comment'>* If @client_id is non-%NULL, add "--sm-client-id @client_id".</span></td></tr>
+<tr class="codeline" data-linenumber="1078"><td class="num" id="LN1078">1078</td><td class="line"> <span class='comment'>* If @state_file is non-%NULL, add "--sm-client-state-file @state_file".</span></td></tr>
+<tr class="codeline" data-linenumber="1079"><td class="num" id="LN1079">1079</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="1080"><td class="num" id="LN1080">1080</td><td class="line"> <span class='comment'>* None of the input strings are g_strdup()ed; the caller must keep</span></td></tr>
+<tr class="codeline" data-linenumber="1081"><td class="num" id="LN1081">1081</td><td class="line"> <span class='comment'>* them around until it is done with the returned GPtrArray, and must</span></td></tr>
+<tr class="codeline" data-linenumber="1082"><td class="num" id="LN1082">1082</td><td class="line"> <span class='comment'>* then free the array, but not its contents.</span></td></tr>
+<tr class="codeline" data-linenumber="1083"><td class="num" id="LN1083">1083</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="1084"><td class="num" id="LN1084">1084</td><td class="line"><span class='keyword'>static</span> GPtrArray *</td></tr>
+<tr class="codeline" data-linenumber="1085"><td class="num" id="LN1085">1085</td><td class="line">generate_command (<span class='keyword'>char</span> **restart_command, <span class='keyword'>const</span> <span class='keyword'>char</span> *client_id,</td></tr>
+<tr class="codeline" data-linenumber="1086"><td class="num" id="LN1086">1086</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *state_file)</td></tr>
+<tr class="codeline" data-linenumber="1087"><td class="num" id="LN1087">1087</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1088"><td class="num" id="LN1088">1088</td><td class="line"> GPtrArray *cmd;</td></tr>
+<tr class="codeline" data-linenumber="1089"><td class="num" id="LN1089">1089</td><td class="line"> <span class='keyword'>int</span> i;</td></tr>
+<tr class="codeline" data-linenumber="1090"><td class="num" id="LN1090">1090</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1091"><td class="num" id="LN1091">1091</td><td class="line"> cmd = g_ptr_array_new ();</td></tr>
+<tr class="codeline" data-linenumber="1092"><td class="num" id="LN1092">1092</td><td class="line"> g_ptr_array_add (cmd, restart_command[0]);</td></tr>
+<tr class="codeline" data-linenumber="1093"><td class="num" id="LN1093">1093</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1094"><td class="num" id="LN1094">1094</td><td class="line"> <span class='keyword'>if</span> (client_id)</td></tr>
+<tr class="codeline" data-linenumber="1095"><td class="num" id="LN1095">1095</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="1096"><td class="num" id="LN1096">1096</td><td class="line"> g_ptr_array_add (cmd, (<span class='keyword'>char</span> *)<span class='string_literal'>"--sm-client-id"</span>);</td></tr>
+<tr class="codeline" data-linenumber="1097"><td class="num" id="LN1097">1097</td><td class="line"> g_ptr_array_add (cmd, (<span class='keyword'>char</span> *)client_id);</td></tr>
+<tr class="codeline" data-linenumber="1098"><td class="num" id="LN1098">1098</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1099"><td class="num" id="LN1099">1099</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1100"><td class="num" id="LN1100">1100</td><td class="line"> <span class='keyword'>if</span> (state_file)</td></tr>
+<tr class="codeline" data-linenumber="1101"><td class="num" id="LN1101">1101</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="1102"><td class="num" id="LN1102">1102</td><td class="line"> g_ptr_array_add (cmd, (<span class='keyword'>char</span> *)<span class='string_literal'>"--sm-client-state-file"</span>);</td></tr>
+<tr class="codeline" data-linenumber="1103"><td class="num" id="LN1103">1103</td><td class="line"> g_ptr_array_add (cmd, (<span class='keyword'>char</span> *)state_file);</td></tr>
+<tr class="codeline" data-linenumber="1104"><td class="num" id="LN1104">1104</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1105"><td class="num" id="LN1105">1105</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1106"><td class="num" id="LN1106">1106</td><td class="line"> <span class='keyword'>for</span> (i = 1; restart_command[i]; i++)</td></tr>
+<tr class="codeline" data-linenumber="1107"><td class="num" id="LN1107">1107</td><td class="line"> g_ptr_array_add (cmd, restart_command[i]);</td></tr>
+<tr class="codeline" data-linenumber="1108"><td class="num" id="LN1108">1108</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1109"><td class="num" id="LN1109">1109</td><td class="line"> <span class='keyword'>return</span> cmd;</td></tr>
+<tr class="codeline" data-linenumber="1110"><td class="num" id="LN1110">1110</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1111"><td class="num" id="LN1111">1111</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1112"><td class="num" id="LN1112">1112</td><td class="line"><span class='comment'>/* Takes a NULL-terminated list of SmProp * values, created by</span></td></tr>
+<tr class="codeline" data-linenumber="1113"><td class="num" id="LN1113">1113</td><td class="line"> <span class='comment'>* array_prop, ptrarray_prop, string_prop, card8_prop, sets them, and</span></td></tr>
+<tr class="codeline" data-linenumber="1114"><td class="num" id="LN1114">1114</td><td class="line"> <span class='comment'>* frees them.</span></td></tr>
+<tr class="codeline" data-linenumber="1115"><td class="num" id="LN1115">1115</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="1116"><td class="num" id="LN1116">1116</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1117"><td class="num" id="LN1117">1117</td><td class="line">set_properties (EggSMClientXSMP *xsmp, ...)</td></tr>
+<tr class="codeline" data-linenumber="1118"><td class="num" id="LN1118">1118</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1119"><td class="num" id="LN1119">1119</td><td class="line"> GPtrArray *props;</td></tr>
+<tr class="codeline" data-linenumber="1120"><td class="num" id="LN1120">1120</td><td class="line"> SmProp *prop;</td></tr>
+<tr class="codeline" data-linenumber="1121"><td class="num" id="LN1121">1121</td><td class="line"> va_list ap;</td></tr>
+<tr class="codeline" data-linenumber="1122"><td class="num" id="LN1122">1122</td><td class="line"> guint i;</td></tr>
+<tr class="codeline" data-linenumber="1123"><td class="num" id="LN1123">1123</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1124"><td class="num" id="LN1124">1124</td><td class="line"> props = g_ptr_array_new ();</td></tr>
+<tr class="codeline" data-linenumber="1125"><td class="num" id="LN1125">1125</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1126"><td class="num" id="LN1126">1126</td><td class="line"> <span class='macro'>va_start (ap, xsmp)<span class='macro_popup'>__builtin_va_start(ap, xsmp)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1127"><td class="num" id="LN1127">1127</td><td class="line"> <span class='keyword'>while</span> ((prop = <span class='macro'>va_arg (ap, SmProp *)<span class='macro_popup'>__builtin_va_arg(ap, SmProp *)</span></span>))</td></tr>
+<tr class="codeline" data-linenumber="1128"><td class="num" id="LN1128">1128</td><td class="line"> g_ptr_array_add (props, prop);</td></tr>
+<tr class="codeline" data-linenumber="1129"><td class="num" id="LN1129">1129</td><td class="line"> <span class='macro'>va_end (ap)<span class='macro_popup'>__builtin_va_end(ap)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1130"><td class="num" id="LN1130">1130</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1131"><td class="num" id="LN1131">1131</td><td class="line"> <span class='keyword'>if</span> (xsmp-&gt;connection)</td></tr>
+<tr class="codeline" data-linenumber="1132"><td class="num" id="LN1132">1132</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="1133"><td class="num" id="LN1133">1133</td><td class="line"> SmcSetProperties (xsmp-&gt;connection, props-&gt;len,</td></tr>
+<tr class="codeline" data-linenumber="1134"><td class="num" id="LN1134">1134</td><td class="line"> (SmProp **)props-&gt;pdata);</td></tr>
+<tr class="codeline" data-linenumber="1135"><td class="num" id="LN1135">1135</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1136"><td class="num" id="LN1136">1136</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1137"><td class="num" id="LN1137">1137</td><td class="line"> <span class='keyword'>for</span> (i = 0; i &lt; props-&gt;len; i++)</td></tr>
+<tr class="codeline" data-linenumber="1138"><td class="num" id="LN1138">1138</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="1139"><td class="num" id="LN1139">1139</td><td class="line"> prop = props-&gt;pdata[i];</td></tr>
+<tr class="codeline" data-linenumber="1140"><td class="num" id="LN1140">1140</td><td class="line"> g_free (prop-&gt;vals);</td></tr>
+<tr class="codeline" data-linenumber="1141"><td class="num" id="LN1141">1141</td><td class="line"> g_free (prop);</td></tr>
+<tr class="codeline" data-linenumber="1142"><td class="num" id="LN1142">1142</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1143"><td class="num" id="LN1143">1143</td><td class="line"> g_ptr_array_free (props, <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1144"><td class="num" id="LN1144">1144</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1145"><td class="num" id="LN1145">1145</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1146"><td class="num" id="LN1146">1146</td><td class="line"><span class='comment'>/* Takes a NULL-terminated list of property names and deletes them. */</span></td></tr>
+<tr class="codeline" data-linenumber="1147"><td class="num" id="LN1147">1147</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1148"><td class="num" id="LN1148">1148</td><td class="line">delete_properties (EggSMClientXSMP *xsmp, ...)</td></tr>
+<tr class="codeline" data-linenumber="1149"><td class="num" id="LN1149">1149</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1150"><td class="num" id="LN1150">1150</td><td class="line"> GPtrArray *props;</td></tr>
+<tr class="codeline" data-linenumber="1151"><td class="num" id="LN1151">1151</td><td class="line"> <span class='keyword'>char</span> *prop;</td></tr>
+<tr class="codeline" data-linenumber="1152"><td class="num" id="LN1152">1152</td><td class="line"> va_list ap;</td></tr>
+<tr class="codeline" data-linenumber="1153"><td class="num" id="LN1153">1153</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1154"><td class="num" id="LN1154">1154</td><td class="line"> <span class='keyword'>if</span> (!xsmp-&gt;connection)</td></tr>
+<tr class="codeline" data-linenumber="1155"><td class="num" id="LN1155">1155</td><td class="line"> <span class='keyword'>return</span>;</td></tr>
+<tr class="codeline" data-linenumber="1156"><td class="num" id="LN1156">1156</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1157"><td class="num" id="LN1157">1157</td><td class="line"> props = g_ptr_array_new ();</td></tr>
+<tr class="codeline" data-linenumber="1158"><td class="num" id="LN1158">1158</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1159"><td class="num" id="LN1159">1159</td><td class="line"> <span class='macro'>va_start (ap, xsmp)<span class='macro_popup'>__builtin_va_start(ap, xsmp)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1160"><td class="num" id="LN1160">1160</td><td class="line"> <span class='keyword'>while</span> ((prop = <span class='macro'>va_arg (ap, <span class='keyword'>char</span> *)<span class='macro_popup'>__builtin_va_arg(ap, char *)</span></span>))</td></tr>
+<tr class="codeline" data-linenumber="1161"><td class="num" id="LN1161">1161</td><td class="line"> g_ptr_array_add (props, prop);</td></tr>
+<tr class="codeline" data-linenumber="1162"><td class="num" id="LN1162">1162</td><td class="line"> <span class='macro'>va_end (ap)<span class='macro_popup'>__builtin_va_end(ap)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1163"><td class="num" id="LN1163">1163</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1164"><td class="num" id="LN1164">1164</td><td class="line"> SmcDeleteProperties (xsmp-&gt;connection, props-&gt;len,</td></tr>
+<tr class="codeline" data-linenumber="1165"><td class="num" id="LN1165">1165</td><td class="line"> (<span class='keyword'>char</span> **)props-&gt;pdata);</td></tr>
+<tr class="codeline" data-linenumber="1166"><td class="num" id="LN1166">1166</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1167"><td class="num" id="LN1167">1167</td><td class="line"> g_ptr_array_free (props, <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1168"><td class="num" id="LN1168">1168</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1169"><td class="num" id="LN1169">1169</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1170"><td class="num" id="LN1170">1170</td><td class="line"><span class='comment'>/* Takes an array of strings and creates a LISTofARRAY8 property. The</span></td></tr>
+<tr class="codeline" data-linenumber="1171"><td class="num" id="LN1171">1171</td><td class="line"> <span class='comment'>* strings are neither dupped nor freed; they need to remain valid</span></td></tr>
+<tr class="codeline" data-linenumber="1172"><td class="num" id="LN1172">1172</td><td class="line"> <span class='comment'>* until you're done with the SmProp.</span></td></tr>
+<tr class="codeline" data-linenumber="1173"><td class="num" id="LN1173">1173</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="1174"><td class="num" id="LN1174">1174</td><td class="line"><span class='keyword'>static</span> SmProp *</td></tr>
+<tr class="codeline" data-linenumber="1175"><td class="num" id="LN1175">1175</td><td class="line">array_prop (<span class='keyword'>const</span> <span class='keyword'>char</span> *name, ...)</td></tr>
+<tr class="codeline" data-linenumber="1176"><td class="num" id="LN1176">1176</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1177"><td class="num" id="LN1177">1177</td><td class="line"> SmProp *prop;</td></tr>
+<tr class="codeline" data-linenumber="1178"><td class="num" id="LN1178">1178</td><td class="line"> SmPropValue pv;</td></tr>
+<tr class="codeline" data-linenumber="1179"><td class="num" id="LN1179">1179</td><td class="line"> GArray *vals;</td></tr>
+<tr class="codeline" data-linenumber="1180"><td class="num" id="LN1180">1180</td><td class="line"> <span class='keyword'>char</span> *value;</td></tr>
+<tr class="codeline" data-linenumber="1181"><td class="num" id="LN1181">1181</td><td class="line"> va_list ap;</td></tr>
+<tr class="codeline" data-linenumber="1182"><td class="num" id="LN1182">1182</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1183"><td class="num" id="LN1183">1183</td><td class="line"> prop = <span class='macro'>g_new (SmProp, 1)<span class='macro_popup'>(SmProp *) (__extension__ ({ gsize __n = (gsize) (1); gsize __s<br> = sizeof (SmProp); gpointer __p; if (__s == 1) __p = g_malloc<br> (__n); else if (__builtin_constant_p (__n) &amp;&amp; (__s ==<br> 0 || __n &lt;= (9223372036854775807L *2UL+1UL) / __s)) __p =<br> g_malloc (__n * __s); else __p = g_malloc_n (__n, __s); __p;<br> }))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1184"><td class="num" id="LN1184">1184</td><td class="line"> prop-&gt;name = (<span class='keyword'>char</span> *)name;</td></tr>
+<tr class="codeline" data-linenumber="1185"><td class="num" id="LN1185">1185</td><td class="line"> prop-&gt;type = (<span class='keyword'>char</span> *)<span class='macro'>SmLISTofARRAY8<span class='macro_popup'>"LISTofARRAY8"</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1186"><td class="num" id="LN1186">1186</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1187"><td class="num" id="LN1187">1187</td><td class="line"> vals = g_array_new (<span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>, <span class='keyword'>sizeof</span> (SmPropValue));</td></tr>
+<tr class="codeline" data-linenumber="1188"><td class="num" id="LN1188">1188</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1189"><td class="num" id="LN1189">1189</td><td class="line"> <span class='macro'>va_start (ap, name)<span class='macro_popup'>__builtin_va_start(ap, name)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1190"><td class="num" id="LN1190">1190</td><td class="line"> <span class='keyword'>while</span> ((value = <span class='macro'>va_arg (ap, <span class='keyword'>char</span> *)<span class='macro_popup'>__builtin_va_arg(ap, char *)</span></span>))</td></tr>
+<tr class="codeline" data-linenumber="1191"><td class="num" id="LN1191">1191</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="1192"><td class="num" id="LN1192">1192</td><td class="line"> pv.length = strlen (value);</td></tr>
+<tr class="codeline" data-linenumber="1193"><td class="num" id="LN1193">1193</td><td class="line"> pv.value = value;</td></tr>
+<tr class="codeline" data-linenumber="1194"><td class="num" id="LN1194">1194</td><td class="line"> <span class='macro'>g_array_append_val (vals, pv)<span class='macro_popup'>g_array_append_vals (vals, &amp;(pv), 1)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1195"><td class="num" id="LN1195">1195</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1196"><td class="num" id="LN1196">1196</td><td class="line"> <span class='macro'>va_end (ap)<span class='macro_popup'>__builtin_va_end(ap)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1197"><td class="num" id="LN1197">1197</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1198"><td class="num" id="LN1198">1198</td><td class="line"> prop-&gt;num_vals = vals-&gt;len;</td></tr>
+<tr class="codeline" data-linenumber="1199"><td class="num" id="LN1199">1199</td><td class="line"> prop-&gt;vals = (SmPropValue *)vals-&gt;data;</td></tr>
+<tr class="codeline" data-linenumber="1200"><td class="num" id="LN1200">1200</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1201"><td class="num" id="LN1201">1201</td><td class="line"> g_array_free (vals, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1202"><td class="num" id="LN1202">1202</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1203"><td class="num" id="LN1203">1203</td><td class="line"> <span class='keyword'>return</span> prop;</td></tr>
+<tr class="codeline" data-linenumber="1204"><td class="num" id="LN1204">1204</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1205"><td class="num" id="LN1205">1205</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1206"><td class="num" id="LN1206">1206</td><td class="line"><span class='comment'>/* Takes a GPtrArray of strings and creates a LISTofARRAY8 property.</span></td></tr>
+<tr class="codeline" data-linenumber="1207"><td class="num" id="LN1207">1207</td><td class="line"> <span class='comment'>* The array contents are neither dupped nor freed; they need to</span></td></tr>
+<tr class="codeline" data-linenumber="1208"><td class="num" id="LN1208">1208</td><td class="line"> <span class='comment'>* remain valid until you're done with the SmProp.</span></td></tr>
+<tr class="codeline" data-linenumber="1209"><td class="num" id="LN1209">1209</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="1210"><td class="num" id="LN1210">1210</td><td class="line"><span class='keyword'>static</span> SmProp *</td></tr>
+<tr class="codeline" data-linenumber="1211"><td class="num" id="LN1211">1211</td><td class="line">ptrarray_prop (<span class='keyword'>const</span> <span class='keyword'>char</span> *name, GPtrArray *values)</td></tr>
+<tr class="codeline" data-linenumber="1212"><td class="num" id="LN1212">1212</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1213"><td class="num" id="LN1213">1213</td><td class="line"> SmProp *prop;</td></tr>
+<tr class="codeline" data-linenumber="1214"><td class="num" id="LN1214">1214</td><td class="line"> SmPropValue pv;</td></tr>
+<tr class="codeline" data-linenumber="1215"><td class="num" id="LN1215">1215</td><td class="line"> GArray *vals;</td></tr>
+<tr class="codeline" data-linenumber="1216"><td class="num" id="LN1216">1216</td><td class="line"> guint i;</td></tr>
+<tr class="codeline" data-linenumber="1217"><td class="num" id="LN1217">1217</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1218"><td class="num" id="LN1218">1218</td><td class="line"> prop = <span class='macro'>g_new (SmProp, 1)<span class='macro_popup'>(SmProp *) (__extension__ ({ gsize __n = (gsize) (1); gsize __s<br> = sizeof (SmProp); gpointer __p; if (__s == 1) __p = g_malloc<br> (__n); else if (__builtin_constant_p (__n) &amp;&amp; (__s ==<br> 0 || __n &lt;= (9223372036854775807L *2UL+1UL) / __s)) __p =<br> g_malloc (__n * __s); else __p = g_malloc_n (__n, __s); __p;<br> }))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1219"><td class="num" id="LN1219">1219</td><td class="line"> prop-&gt;name = (<span class='keyword'>char</span> *)name;</td></tr>
+<tr class="codeline" data-linenumber="1220"><td class="num" id="LN1220">1220</td><td class="line"> prop-&gt;type = (<span class='keyword'>char</span> *)<span class='macro'>SmLISTofARRAY8<span class='macro_popup'>"LISTofARRAY8"</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1221"><td class="num" id="LN1221">1221</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1222"><td class="num" id="LN1222">1222</td><td class="line"> vals = g_array_new (<span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>, <span class='keyword'>sizeof</span> (SmPropValue));</td></tr>
+<tr class="codeline" data-linenumber="1223"><td class="num" id="LN1223">1223</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1224"><td class="num" id="LN1224">1224</td><td class="line"> <span class='keyword'>for</span> (i = 0; i &lt; values-&gt;len; i++)</td></tr>
+<tr class="codeline" data-linenumber="1225"><td class="num" id="LN1225">1225</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="1226"><td class="num" id="LN1226">1226</td><td class="line"> pv.length = strlen (values-&gt;pdata[i]);</td></tr>
+<tr class="codeline" data-linenumber="1227"><td class="num" id="LN1227">1227</td><td class="line"> pv.value = values-&gt;pdata[i];</td></tr>
+<tr class="codeline" data-linenumber="1228"><td class="num" id="LN1228">1228</td><td class="line"> <span class='macro'>g_array_append_val (vals, pv)<span class='macro_popup'>g_array_append_vals (vals, &amp;(pv), 1)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1229"><td class="num" id="LN1229">1229</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1230"><td class="num" id="LN1230">1230</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1231"><td class="num" id="LN1231">1231</td><td class="line"> prop-&gt;num_vals = vals-&gt;len;</td></tr>
+<tr class="codeline" data-linenumber="1232"><td class="num" id="LN1232">1232</td><td class="line"> prop-&gt;vals = <span class="mrange"><span class="mrange">(SmPropValue *)vals-&gt;data</span></span>;</td></tr>
+<tr><td class="num"></td><td class="line"><div id="EndPath" class="msg msgEvent" style="margin-left:18ex; max-width:31em">Casting a non-structure type to a structure type and accessing a field can lead to memory access errors or data corruption</div></td></tr>
+<tr class="codeline" data-linenumber="1233"><td class="num" id="LN1233">1233</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1234"><td class="num" id="LN1234">1234</td><td class="line"> g_array_free (vals, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1235"><td class="num" id="LN1235">1235</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1236"><td class="num" id="LN1236">1236</td><td class="line"> <span class='keyword'>return</span> prop;</td></tr>
+<tr class="codeline" data-linenumber="1237"><td class="num" id="LN1237">1237</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1238"><td class="num" id="LN1238">1238</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1239"><td class="num" id="LN1239">1239</td><td class="line"><span class='comment'>/* Takes a string and creates an ARRAY8 property. The string is</span></td></tr>
+<tr class="codeline" data-linenumber="1240"><td class="num" id="LN1240">1240</td><td class="line"> <span class='comment'>* neither dupped nor freed; it needs to remain valid until you're</span></td></tr>
+<tr class="codeline" data-linenumber="1241"><td class="num" id="LN1241">1241</td><td class="line"> <span class='comment'>* done with the SmProp.</span></td></tr>
+<tr class="codeline" data-linenumber="1242"><td class="num" id="LN1242">1242</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="1243"><td class="num" id="LN1243">1243</td><td class="line"><span class='keyword'>static</span> SmProp *</td></tr>
+<tr class="codeline" data-linenumber="1244"><td class="num" id="LN1244">1244</td><td class="line">string_prop (<span class='keyword'>const</span> <span class='keyword'>char</span> *name, <span class='keyword'>const</span> <span class='keyword'>char</span> *value)</td></tr>
+<tr class="codeline" data-linenumber="1245"><td class="num" id="LN1245">1245</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1246"><td class="num" id="LN1246">1246</td><td class="line"> SmProp *prop;</td></tr>
+<tr class="codeline" data-linenumber="1247"><td class="num" id="LN1247">1247</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1248"><td class="num" id="LN1248">1248</td><td class="line"> prop = <span class='macro'>g_new (SmProp, 1)<span class='macro_popup'>(SmProp *) (__extension__ ({ gsize __n = (gsize) (1); gsize __s<br> = sizeof (SmProp); gpointer __p; if (__s == 1) __p = g_malloc<br> (__n); else if (__builtin_constant_p (__n) &amp;&amp; (__s ==<br> 0 || __n &lt;= (9223372036854775807L *2UL+1UL) / __s)) __p =<br> g_malloc (__n * __s); else __p = g_malloc_n (__n, __s); __p;<br> }))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1249"><td class="num" id="LN1249">1249</td><td class="line"> prop-&gt;name = (<span class='keyword'>char</span> *)name;</td></tr>
+<tr class="codeline" data-linenumber="1250"><td class="num" id="LN1250">1250</td><td class="line"> prop-&gt;type = (<span class='keyword'>char</span> *)<span class='macro'>SmARRAY8<span class='macro_popup'>"ARRAY8"</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1251"><td class="num" id="LN1251">1251</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1252"><td class="num" id="LN1252">1252</td><td class="line"> prop-&gt;num_vals = 1;</td></tr>
+<tr class="codeline" data-linenumber="1253"><td class="num" id="LN1253">1253</td><td class="line"> prop-&gt;vals = <span class='macro'>g_new (SmPropValue, 1)<span class='macro_popup'>(SmPropValue *) (__extension__ ({ gsize __n = (gsize) (1); gsize<br> __s = sizeof (SmPropValue); gpointer __p; if (__s == 1) __p =<br> g_malloc (__n); else if (__builtin_constant_p (__n) &amp;&amp;<br> (__s == 0 || __n &lt;= (9223372036854775807L *2UL+1UL) / __s<br>)) __p = g_malloc (__n * __s); else __p = g_malloc_n (__n, __s<br>); __p; }))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1254"><td class="num" id="LN1254">1254</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1255"><td class="num" id="LN1255">1255</td><td class="line"> prop-&gt;vals[0].length = strlen (value);</td></tr>
+<tr class="codeline" data-linenumber="1256"><td class="num" id="LN1256">1256</td><td class="line"> prop-&gt;vals[0].value = (<span class='keyword'>char</span> *)value;</td></tr>
+<tr class="codeline" data-linenumber="1257"><td class="num" id="LN1257">1257</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1258"><td class="num" id="LN1258">1258</td><td class="line"> <span class='keyword'>return</span> prop;</td></tr>
+<tr class="codeline" data-linenumber="1259"><td class="num" id="LN1259">1259</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1260"><td class="num" id="LN1260">1260</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1261"><td class="num" id="LN1261">1261</td><td class="line"><span class='comment'>/* Takes a char and creates a CARD8 property. */</span></td></tr>
+<tr class="codeline" data-linenumber="1262"><td class="num" id="LN1262">1262</td><td class="line"><span class='keyword'>static</span> SmProp *</td></tr>
+<tr class="codeline" data-linenumber="1263"><td class="num" id="LN1263">1263</td><td class="line">card8_prop (<span class='keyword'>const</span> <span class='keyword'>char</span> *name, <span class='keyword'>unsigned</span> <span class='keyword'>char</span> value)</td></tr>
+<tr class="codeline" data-linenumber="1264"><td class="num" id="LN1264">1264</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1265"><td class="num" id="LN1265">1265</td><td class="line"> SmProp *prop;</td></tr>
+<tr class="codeline" data-linenumber="1266"><td class="num" id="LN1266">1266</td><td class="line"> <span class='keyword'>char</span> *card8val;</td></tr>
+<tr class="codeline" data-linenumber="1267"><td class="num" id="LN1267">1267</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1268"><td class="num" id="LN1268">1268</td><td class="line"> <span class='comment'>/* To avoid having to allocate and free prop-&gt;vals[0], we cheat and</span></td></tr>
+<tr class="codeline" data-linenumber="1269"><td class="num" id="LN1269">1269</td><td class="line"> <span class='comment'>* make vals a 2-element-long array and then use the second element</span></td></tr>
+<tr class="codeline" data-linenumber="1270"><td class="num" id="LN1270">1270</td><td class="line"> <span class='comment'>* to store value.</span></td></tr>
+<tr class="codeline" data-linenumber="1271"><td class="num" id="LN1271">1271</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="1272"><td class="num" id="LN1272">1272</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1273"><td class="num" id="LN1273">1273</td><td class="line"> prop = <span class='macro'>g_new (SmProp, 1)<span class='macro_popup'>(SmProp *) (__extension__ ({ gsize __n = (gsize) (1); gsize __s<br> = sizeof (SmProp); gpointer __p; if (__s == 1) __p = g_malloc<br> (__n); else if (__builtin_constant_p (__n) &amp;&amp; (__s ==<br> 0 || __n &lt;= (9223372036854775807L *2UL+1UL) / __s)) __p =<br> g_malloc (__n * __s); else __p = g_malloc_n (__n, __s); __p;<br> }))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1274"><td class="num" id="LN1274">1274</td><td class="line"> prop-&gt;name = (<span class='keyword'>char</span> *)name;</td></tr>
+<tr class="codeline" data-linenumber="1275"><td class="num" id="LN1275">1275</td><td class="line"> prop-&gt;type = (<span class='keyword'>char</span> *)<span class='macro'>SmCARD8<span class='macro_popup'>"CARD8"</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1276"><td class="num" id="LN1276">1276</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1277"><td class="num" id="LN1277">1277</td><td class="line"> prop-&gt;num_vals = 1;</td></tr>
+<tr class="codeline" data-linenumber="1278"><td class="num" id="LN1278">1278</td><td class="line"> prop-&gt;vals = <span class='macro'>g_new (SmPropValue, 2)<span class='macro_popup'>(SmPropValue *) (__extension__ ({ gsize __n = (gsize) (2); gsize<br> __s = sizeof (SmPropValue); gpointer __p; if (__s == 1) __p =<br> g_malloc (__n); else if (__builtin_constant_p (__n) &amp;&amp;<br> (__s == 0 || __n &lt;= (9223372036854775807L *2UL+1UL) / __s<br>)) __p = g_malloc (__n * __s); else __p = g_malloc_n (__n, __s<br>); __p; }))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1279"><td class="num" id="LN1279">1279</td><td class="line"> card8val = (<span class='keyword'>char</span> *)(&amp;prop-&gt;vals[1]);</td></tr>
+<tr class="codeline" data-linenumber="1280"><td class="num" id="LN1280">1280</td><td class="line"> card8val[0] = value;</td></tr>
+<tr class="codeline" data-linenumber="1281"><td class="num" id="LN1281">1281</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1282"><td class="num" id="LN1282">1282</td><td class="line"> prop-&gt;vals[0].length = 1;</td></tr>
+<tr class="codeline" data-linenumber="1283"><td class="num" id="LN1283">1283</td><td class="line"> prop-&gt;vals[0].value = card8val;</td></tr>
+<tr class="codeline" data-linenumber="1284"><td class="num" id="LN1284">1284</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1285"><td class="num" id="LN1285">1285</td><td class="line"> <span class='keyword'>return</span> prop;</td></tr>
+<tr class="codeline" data-linenumber="1286"><td class="num" id="LN1286">1286</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1287"><td class="num" id="LN1287">1287</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1288"><td class="num" id="LN1288">1288</td><td class="line"><span class='comment'>/* ICE code. This makes no effort to play nice with anyone else trying</span></td></tr>
+<tr class="codeline" data-linenumber="1289"><td class="num" id="LN1289">1289</td><td class="line"> <span class='comment'>* to use libICE. Fortunately, no one uses libICE for anything other</span></td></tr>
+<tr class="codeline" data-linenumber="1290"><td class="num" id="LN1290">1290</td><td class="line"> <span class='comment'>* than SM. (DCOP uses ICE, but it has its own private copy of</span></td></tr>
+<tr class="codeline" data-linenumber="1291"><td class="num" id="LN1291">1291</td><td class="line"> <span class='comment'>* libICE.)</span></td></tr>
+<tr class="codeline" data-linenumber="1292"><td class="num" id="LN1292">1292</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="1293"><td class="num" id="LN1293">1293</td><td class="line"> <span class='comment'>* When this moves to gtk, it will need to be cleverer, to avoid</span></td></tr>
+<tr class="codeline" data-linenumber="1294"><td class="num" id="LN1294">1294</td><td class="line"> <span class='comment'>* tripping over old apps that use MateClient or that use libSM</span></td></tr>
+<tr class="codeline" data-linenumber="1295"><td class="num" id="LN1295">1295</td><td class="line"> <span class='comment'>* directly.</span></td></tr>
+<tr class="codeline" data-linenumber="1296"><td class="num" id="LN1296">1296</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="1297"><td class="num" id="LN1297">1297</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1298"><td class="num" id="LN1298">1298</td><td class="line"><span class='directive'>#include &lt;X11/ICE/ICElib.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="1299"><td class="num" id="LN1299">1299</td><td class="line"><span class='directive'>#include &lt;fcntl.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="1300"><td class="num" id="LN1300">1300</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1301"><td class="num" id="LN1301">1301</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span> ice_error_handler (IceConn ice_conn,</td></tr>
+<tr class="codeline" data-linenumber="1302"><td class="num" id="LN1302">1302</td><td class="line"> <span class='macro'>Bool<span class='macro_popup'>int</span></span> swap,</td></tr>
+<tr class="codeline" data-linenumber="1303"><td class="num" id="LN1303">1303</td><td class="line"> <span class='keyword'>int</span> offending_minor_opcode,</td></tr>
+<tr class="codeline" data-linenumber="1304"><td class="num" id="LN1304">1304</td><td class="line"> <span class='keyword'>unsigned</span> <span class='keyword'>long</span> offending_sequence,</td></tr>
+<tr class="codeline" data-linenumber="1305"><td class="num" id="LN1305">1305</td><td class="line"> <span class='keyword'>int</span> error_class,</td></tr>
+<tr class="codeline" data-linenumber="1306"><td class="num" id="LN1306">1306</td><td class="line"> <span class='keyword'>int</span> severity,</td></tr>
+<tr class="codeline" data-linenumber="1307"><td class="num" id="LN1307">1307</td><td class="line"> IcePointer values);</td></tr>
+<tr class="codeline" data-linenumber="1308"><td class="num" id="LN1308">1308</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span> ice_io_error_handler (IceConn ice_conn);</td></tr>
+<tr class="codeline" data-linenumber="1309"><td class="num" id="LN1309">1309</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span> ice_connection_watch (IceConn ice_conn,</td></tr>
+<tr class="codeline" data-linenumber="1310"><td class="num" id="LN1310">1310</td><td class="line"> IcePointer client_data,</td></tr>
+<tr class="codeline" data-linenumber="1311"><td class="num" id="LN1311">1311</td><td class="line"> <span class='macro'>Bool<span class='macro_popup'>int</span></span> opening,</td></tr>
+<tr class="codeline" data-linenumber="1312"><td class="num" id="LN1312">1312</td><td class="line"> IcePointer *watch_data);</td></tr>
+<tr class="codeline" data-linenumber="1313"><td class="num" id="LN1313">1313</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1314"><td class="num" id="LN1314">1314</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1315"><td class="num" id="LN1315">1315</td><td class="line">ice_init (<span class='keyword'>void</span>)</td></tr>
+<tr class="codeline" data-linenumber="1316"><td class="num" id="LN1316">1316</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1317"><td class="num" id="LN1317">1317</td><td class="line"> IceSetIOErrorHandler (ice_io_error_handler);</td></tr>
+<tr class="codeline" data-linenumber="1318"><td class="num" id="LN1318">1318</td><td class="line"> IceSetErrorHandler (ice_error_handler);</td></tr>
+<tr class="codeline" data-linenumber="1319"><td class="num" id="LN1319">1319</td><td class="line"> IceAddConnectionWatch (ice_connection_watch, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1320"><td class="num" id="LN1320">1320</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1321"><td class="num" id="LN1321">1321</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1322"><td class="num" id="LN1322">1322</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="1323"><td class="num" id="LN1323">1323</td><td class="line">process_ice_messages (IceConn ice_conn)</td></tr>
+<tr class="codeline" data-linenumber="1324"><td class="num" id="LN1324">1324</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1325"><td class="num" id="LN1325">1325</td><td class="line"> IceProcessMessagesStatus status;</td></tr>
+<tr class="codeline" data-linenumber="1326"><td class="num" id="LN1326">1326</td><td class="line"> status = IceProcessMessages (ice_conn, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1327"><td class="num" id="LN1327">1327</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1328"><td class="num" id="LN1328">1328</td><td class="line"> <span class='keyword'>switch</span> (status)</td></tr>
+<tr class="codeline" data-linenumber="1329"><td class="num" id="LN1329">1329</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="1330"><td class="num" id="LN1330">1330</td><td class="line"> <span class='keyword'>case</span> IceProcessMessagesSuccess:</td></tr>
+<tr class="codeline" data-linenumber="1331"><td class="num" id="LN1331">1331</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1332"><td class="num" id="LN1332">1332</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1333"><td class="num" id="LN1333">1333</td><td class="line"> <span class='keyword'>case</span> IceProcessMessagesIOError:</td></tr>
+<tr class="codeline" data-linenumber="1334"><td class="num" id="LN1334">1334</td><td class="line"> sm_client_xsmp_disconnect (IceGetConnectionContext (ice_conn));</td></tr>
+<tr class="codeline" data-linenumber="1335"><td class="num" id="LN1335">1335</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1336"><td class="num" id="LN1336">1336</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1337"><td class="num" id="LN1337">1337</td><td class="line"> <span class='keyword'>case</span> IceProcessMessagesConnectionClosed:</td></tr>
+<tr class="codeline" data-linenumber="1338"><td class="num" id="LN1338">1338</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1339"><td class="num" id="LN1339">1339</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1340"><td class="num" id="LN1340">1340</td><td class="line"> <span class='keyword'>default</span>:</td></tr>
+<tr class="codeline" data-linenumber="1341"><td class="num" id="LN1341">1341</td><td class="line"> <span class='macro'>g_assert_not_reached ()<span class='macro_popup'>do { g_assertion_message_expr ("EggSMClient", "eggsmclient-xsmp.c"<br>, 1341, ((const char*) (__func__)), ((void*)0)); } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1342"><td class="num" id="LN1342">1342</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1343"><td class="num" id="LN1343">1343</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1344"><td class="num" id="LN1344">1344</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1345"><td class="num" id="LN1345">1345</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="1346"><td class="num" id="LN1346">1346</td><td class="line">ice_iochannel_watch (GIOChannel *channel,</td></tr>
+<tr class="codeline" data-linenumber="1347"><td class="num" id="LN1347">1347</td><td class="line"> GIOCondition condition,</td></tr>
+<tr class="codeline" data-linenumber="1348"><td class="num" id="LN1348">1348</td><td class="line"> gpointer client_data)</td></tr>
+<tr class="codeline" data-linenumber="1349"><td class="num" id="LN1349">1349</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1350"><td class="num" id="LN1350">1350</td><td class="line"> <span class='keyword'>return</span> process_ice_messages (client_data);</td></tr>
+<tr class="codeline" data-linenumber="1351"><td class="num" id="LN1351">1351</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1352"><td class="num" id="LN1352">1352</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1353"><td class="num" id="LN1353">1353</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1354"><td class="num" id="LN1354">1354</td><td class="line">ice_connection_watch (IceConn ice_conn,</td></tr>
+<tr class="codeline" data-linenumber="1355"><td class="num" id="LN1355">1355</td><td class="line"> IcePointer client_data,</td></tr>
+<tr class="codeline" data-linenumber="1356"><td class="num" id="LN1356">1356</td><td class="line"> <span class='macro'>Bool<span class='macro_popup'>int</span></span> opening,</td></tr>
+<tr class="codeline" data-linenumber="1357"><td class="num" id="LN1357">1357</td><td class="line"> IcePointer *watch_data)</td></tr>
+<tr class="codeline" data-linenumber="1358"><td class="num" id="LN1358">1358</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1359"><td class="num" id="LN1359">1359</td><td class="line"> guint watch_id;</td></tr>
+<tr class="codeline" data-linenumber="1360"><td class="num" id="LN1360">1360</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1361"><td class="num" id="LN1361">1361</td><td class="line"> <span class='keyword'>if</span> (opening)</td></tr>
+<tr class="codeline" data-linenumber="1362"><td class="num" id="LN1362">1362</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="1363"><td class="num" id="LN1363">1363</td><td class="line"> GIOChannel *channel;</td></tr>
+<tr class="codeline" data-linenumber="1364"><td class="num" id="LN1364">1364</td><td class="line"> <span class='keyword'>int</span> fd = IceConnectionNumber (ice_conn);</td></tr>
+<tr class="codeline" data-linenumber="1365"><td class="num" id="LN1365">1365</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1366"><td class="num" id="LN1366">1366</td><td class="line"> fcntl (fd, <span class='macro'>F_SETFD<span class='macro_popup'>2</span></span>, fcntl (fd, <span class='macro'>F_GETFD<span class='macro_popup'>1</span></span>, 0) | <span class='macro'>FD_CLOEXEC<span class='macro_popup'>1</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="1367"><td class="num" id="LN1367">1367</td><td class="line"> channel = g_io_channel_unix_new (fd);</td></tr>
+<tr class="codeline" data-linenumber="1368"><td class="num" id="LN1368">1368</td><td class="line"> watch_id = g_io_add_watch (channel, G_IO_IN | G_IO_ERR,</td></tr>
+<tr class="codeline" data-linenumber="1369"><td class="num" id="LN1369">1369</td><td class="line"> ice_iochannel_watch, ice_conn);</td></tr>
+<tr class="codeline" data-linenumber="1370"><td class="num" id="LN1370">1370</td><td class="line"> g_io_channel_unref (channel);</td></tr>
+<tr class="codeline" data-linenumber="1371"><td class="num" id="LN1371">1371</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1372"><td class="num" id="LN1372">1372</td><td class="line"> *watch_data = <span class='macro'>GUINT_TO_POINTER (watch_id)<span class='macro_popup'>((gpointer) (gulong) (watch_id))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1373"><td class="num" id="LN1373">1373</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1374"><td class="num" id="LN1374">1374</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="1375"><td class="num" id="LN1375">1375</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="1376"><td class="num" id="LN1376">1376</td><td class="line"> watch_id = <span class='macro'>GPOINTER_TO_UINT (*watch_data)<span class='macro_popup'>((guint) (gulong) (*watch_data))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="1377"><td class="num" id="LN1377">1377</td><td class="line"> g_source_remove (watch_id);</td></tr>
+<tr class="codeline" data-linenumber="1378"><td class="num" id="LN1378">1378</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="1379"><td class="num" id="LN1379">1379</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1380"><td class="num" id="LN1380">1380</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1381"><td class="num" id="LN1381">1381</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1382"><td class="num" id="LN1382">1382</td><td class="line">ice_error_handler (IceConn ice_conn,</td></tr>
+<tr class="codeline" data-linenumber="1383"><td class="num" id="LN1383">1383</td><td class="line"> <span class='macro'>Bool<span class='macro_popup'>int</span></span> swap,</td></tr>
+<tr class="codeline" data-linenumber="1384"><td class="num" id="LN1384">1384</td><td class="line"> <span class='keyword'>int</span> offending_minor_opcode,</td></tr>
+<tr class="codeline" data-linenumber="1385"><td class="num" id="LN1385">1385</td><td class="line"> <span class='keyword'>unsigned</span> <span class='keyword'>long</span> offending_sequence,</td></tr>
+<tr class="codeline" data-linenumber="1386"><td class="num" id="LN1386">1386</td><td class="line"> <span class='keyword'>int</span> error_class,</td></tr>
+<tr class="codeline" data-linenumber="1387"><td class="num" id="LN1387">1387</td><td class="line"> <span class='keyword'>int</span> severity,</td></tr>
+<tr class="codeline" data-linenumber="1388"><td class="num" id="LN1388">1388</td><td class="line"> IcePointer values)</td></tr>
+<tr class="codeline" data-linenumber="1389"><td class="num" id="LN1389">1389</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1390"><td class="num" id="LN1390">1390</td><td class="line"> <span class='comment'>/* Do nothing */</span></td></tr>
+<tr class="codeline" data-linenumber="1391"><td class="num" id="LN1391">1391</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1392"><td class="num" id="LN1392">1392</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1393"><td class="num" id="LN1393">1393</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1394"><td class="num" id="LN1394">1394</td><td class="line">ice_io_error_handler (IceConn ice_conn)</td></tr>
+<tr class="codeline" data-linenumber="1395"><td class="num" id="LN1395">1395</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1396"><td class="num" id="LN1396">1396</td><td class="line"> <span class='comment'>/* Do nothing */</span></td></tr>
+<tr class="codeline" data-linenumber="1397"><td class="num" id="LN1397">1397</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="1398"><td class="num" id="LN1398">1398</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="1399"><td class="num" id="LN1399">1399</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="1400"><td class="num" id="LN1400">1400</td><td class="line">smc_error_handler (SmcConn smc_conn,</td></tr>
+<tr class="codeline" data-linenumber="1401"><td class="num" id="LN1401">1401</td><td class="line"> <span class='macro'>Bool<span class='macro_popup'>int</span></span> swap,</td></tr>
+<tr class="codeline" data-linenumber="1402"><td class="num" id="LN1402">1402</td><td class="line"> <span class='keyword'>int</span> offending_minor_opcode,</td></tr>
+<tr class="codeline" data-linenumber="1403"><td class="num" id="LN1403">1403</td><td class="line"> <span class='keyword'>unsigned</span> <span class='keyword'>long</span> offending_sequence,</td></tr>
+<tr class="codeline" data-linenumber="1404"><td class="num" id="LN1404">1404</td><td class="line"> <span class='keyword'>int</span> error_class,</td></tr>
+<tr class="codeline" data-linenumber="1405"><td class="num" id="LN1405">1405</td><td class="line"> <span class='keyword'>int</span> severity,</td></tr>
+<tr class="codeline" data-linenumber="1406"><td class="num" id="LN1406">1406</td><td class="line"> SmPointer values)</td></tr>
+<tr class="codeline" data-linenumber="1407"><td class="num" id="LN1407">1407</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="1408"><td class="num" id="LN1408">1408</td><td class="line"> <span class='comment'>/* Do nothing */</span></td></tr>
+<tr class="codeline" data-linenumber="1409"><td class="num" id="LN1409">1409</td><td class="line">}</td></tr>
+</table></body></html>
diff --git a/2023-05-28-030536-6612-1@f643dde74cbd_master/report-efdf48.html b/2023-05-28-030536-6612-1@f643dde74cbd_master/report-efdf48.html
new file mode 100644
index 00000000..55d25fb0
--- /dev/null
+++ b/2023-05-28-030536-6612-1@f643dde74cbd_master/report-efdf48.html
@@ -0,0 +1,1150 @@
+<!doctype html>
+<html>
+<head>
+<title>bacon-message-connection.c</title>
+
+<style type="text/css">
+body { color:#000000; background-color:#ffffff }
+body { font-family:Helvetica, sans-serif; font-size:10pt }
+h1 { font-size:14pt }
+.FileName { margin-top: 5px; margin-bottom: 5px; display: inline; }
+.FileNav { margin-left: 5px; margin-right: 5px; display: inline; }
+.FileNav a { text-decoration:none; font-size: larger; }
+.divider { margin-top: 30px; margin-bottom: 30px; height: 15px; }
+.divider { background-color: gray; }
+.code { border-collapse:collapse; width:100%; }
+.code { font-family: "Monospace", monospace; font-size:10pt }
+.code { line-height: 1.2em }
+.comment { color: green; font-style: oblique }
+.keyword { color: blue }
+.string_literal { color: red }
+.directive { color: darkmagenta }
+
+/* Macros and variables could have pop-up notes hidden by default.
+ - Macro pop-up: expansion of the macro
+ - Variable pop-up: value (table) of the variable */
+.macro_popup, .variable_popup { display: none; }
+
+/* Pop-up appears on mouse-hover event. */
+.macro:hover .macro_popup, .variable:hover .variable_popup {
+ display: block;
+ padding: 2px;
+ -webkit-border-radius:5px;
+ -webkit-box-shadow:1px 1px 7px #000;
+ border-radius:5px;
+ box-shadow:1px 1px 7px #000;
+ position: absolute;
+ top: -1em;
+ left:10em;
+ z-index: 1
+}
+
+.macro_popup {
+ border: 2px solid red;
+ background-color:#FFF0F0;
+ font-weight: normal;
+}
+
+.variable_popup {
+ border: 2px solid blue;
+ background-color:#F0F0FF;
+ font-weight: bold;
+ font-family: Helvetica, sans-serif;
+ font-size: 9pt;
+}
+
+/* Pop-up notes needs a relative position as a base where they pops up. */
+.macro, .variable {
+ background-color: PaleGoldenRod;
+ position: relative;
+}
+.macro { color: DarkMagenta; }
+
+#tooltiphint {
+ position: fixed;
+ width: 50em;
+ margin-left: -25em;
+ left: 50%;
+ padding: 10px;
+ border: 1px solid #b0b0b0;
+ border-radius: 2px;
+ box-shadow: 1px 1px 7px black;
+ background-color: #c0c0c0;
+ z-index: 2;
+}
+
+.num { width:2.5em; padding-right:2ex; background-color:#eeeeee }
+.num { text-align:right; font-size:8pt }
+.num { color:#444444 }
+.line { padding-left: 1ex; border-left: 3px solid #ccc }
+.line { white-space: pre }
+.msg { -webkit-box-shadow:1px 1px 7px #000 }
+.msg { box-shadow:1px 1px 7px #000 }
+.msg { -webkit-border-radius:5px }
+.msg { border-radius:5px }
+.msg { font-family:Helvetica, sans-serif; font-size:8pt }
+.msg { float:left }
+.msg { position:relative }
+.msg { padding:0.25em 1ex 0.25em 1ex }
+.msg { margin-top:10px; margin-bottom:10px }
+.msg { font-weight:bold }
+.msg { max-width:60em; word-wrap: break-word; white-space: pre-wrap }
+.msgT { padding:0x; spacing:0x }
+.msgEvent { background-color:#fff8b4; color:#000000 }
+.msgControl { background-color:#bbbbbb; color:#000000 }
+.msgNote { background-color:#ddeeff; color:#000000 }
+.mrange { background-color:#dfddf3 }
+.mrange { border-bottom:1px solid #6F9DBE }
+.PathIndex { font-weight: bold; padding:0px 5px; margin-right:5px; }
+.PathIndex { -webkit-border-radius:8px }
+.PathIndex { border-radius:8px }
+.PathIndexEvent { background-color:#bfba87 }
+.PathIndexControl { background-color:#8c8c8c }
+.PathIndexPopUp { background-color: #879abc; }
+.PathNav a { text-decoration:none; font-size: larger }
+.CodeInsertionHint { font-weight: bold; background-color: #10dd10 }
+.CodeRemovalHint { background-color:#de1010 }
+.CodeRemovalHint { border-bottom:1px solid #6F9DBE }
+.msg.selected{ background-color:orange !important; }
+
+table.simpletable {
+ padding: 5px;
+ font-size:12pt;
+ margin:20px;
+ border-collapse: collapse; border-spacing: 0px;
+}
+td.rowname {
+ text-align: right;
+ vertical-align: top;
+ font-weight: bold;
+ color:#444444;
+ padding-right:2ex;
+}
+
+/* Hidden text. */
+input.spoilerhider + label {
+ cursor: pointer;
+ text-decoration: underline;
+ display: block;
+}
+input.spoilerhider {
+ display: none;
+}
+input.spoilerhider ~ .spoiler {
+ overflow: hidden;
+ margin: 10px auto 0;
+ height: 0;
+ opacity: 0;
+}
+input.spoilerhider:checked + label + .spoiler{
+ height: auto;
+ opacity: 1;
+}
+</style>
+</head>
+<body>
+<!-- BUGDESC Out of bound memory access (access exceeds upper limit of memory block) -->
+
+<!-- BUGTYPE Out-of-bound access -->
+
+<!-- BUGCATEGORY Logic error -->
+
+<!-- BUGFILE /rootdir/pluma/bacon-message-connection.c -->
+
+<!-- FILENAME bacon-message-connection.c -->
+
+<!-- FUNCTIONNAME server_cb -->
+
+<!-- ISSUEHASHCONTENTOFLINEINCONTEXT efdf4898d592cdcbc2c9de87b7082b66 -->
+
+<!-- BUGLINE 169 -->
+
+<!-- BUGCOLUMN 30 -->
+
+<!-- BUGPATHLENGTH 26 -->
+
+<!-- BUGMETAEND -->
+<!-- REPORTHEADER -->
+<h3>Bug Summary</h3>
+<table class="simpletable">
+<tr><td class="rowname">File:</td><td>pluma/bacon-message-connection.c</td></tr>
+<tr><td class="rowname">Warning:</td><td><a href="#EndPath">line 169, column 30</a><br />Out of bound memory access (access exceeds upper limit of memory block)</td></tr>
+
+</table>
+<!-- REPORTSUMMARYEXTRA -->
+<h3>Annotated Source Code</h3>
+<p>Press <a href="#" onclick="toggleHelp(); return false;">'?'</a>
+ to see keyboard shortcuts</p>
+<input type="checkbox" class="spoilerhider" id="showinvocation" />
+<label for="showinvocation" >Show analyzer invocation</label>
+<div class="spoiler">clang -cc1 -cc1 -triple x86_64-redhat-linux-gnu -analyze -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name bacon-message-connection.c -analyzer-checker=core -analyzer-checker=apiModeling -analyzer-checker=unix -analyzer-checker=deadcode -analyzer-checker=security.insecureAPI.UncheckedReturn -analyzer-checker=security.insecureAPI.getpw -analyzer-checker=security.insecureAPI.gets -analyzer-checker=security.insecureAPI.mktemp -analyzer-checker=security.insecureAPI.mkstemp -analyzer-checker=security.insecureAPI.vfork -analyzer-checker=nullability.NullPassedToNonnull -analyzer-checker=nullability.NullReturnedFromNonnull -analyzer-output plist -w -setup-static-analyzer -mrelocation-model pic -pic-level 2 -fhalf-no-semantic-interposition -mframe-pointer=none -fmath-errno -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=2 -target-cpu x86-64 -tune-cpu generic -debugger-tuning=gdb -fcoverage-compilation-dir=/rootdir/pluma -resource-dir /usr/lib64/clang/16 -D HAVE_CONFIG_H -I . -I .. -I .. -I . -I ./mate-submodules/libegg -I /usr/include/libxml2 -I /usr/include/glib-2.0 -I /usr/lib64/glib-2.0/include -I /usr/include/sysprof-4 -I /usr/include/libmount -I /usr/include/blkid -I /usr/include/gtk-3.0 -I /usr/include/pango-1.0 -I /usr/include/harfbuzz -I /usr/include/freetype2 -I /usr/include/libpng16 -I /usr/include/fribidi -I /usr/include/cairo -I /usr/include/pixman-1 -I /usr/include/gdk-pixbuf-2.0 -I /usr/include/gio-unix-2.0 -I /usr/include/cloudproviders -I /usr/include/atk-1.0 -I /usr/include/at-spi2-atk/2.0 -I /usr/include/at-spi-2.0 -I /usr/include/dbus-1.0 -I /usr/lib64/dbus-1.0/include -I /usr/include/gtksourceview-4 -I /usr/include/libpeas-1.0 -I /usr/include/gobject-introspection-1.0 -I /usr/include/gobject-introspection-1.0 -I /usr/include/glib-2.0 -I /usr/lib64/glib-2.0/include -I /usr/include/sysprof-4 -D DATADIR="/usr/local/share" -D PLUMA_DATADIR="/usr/local/share/pluma" -D PLUMA_LOCALEDIR="/usr/local/share/locale/" -D LIBDIR="/usr/local/lib" -D PLUMA_LIBDIR="/usr/local/lib/pluma" -D PIC -internal-isystem /usr/lib64/clang/16/include -internal-isystem /usr/local/include -internal-isystem /usr/bin/../lib/gcc/x86_64-redhat-linux/13/../../../../x86_64-redhat-linux/include -internal-externc-isystem /include -internal-externc-isystem /usr/include -O2 -Wno-unused-parameter -fdebug-compilation-dir=/rootdir/pluma -ferror-limit 19 -fgnuc-version=4.2.1 -vectorize-loops -vectorize-slp -analyzer-checker deadcode.DeadStores -analyzer-checker alpha.deadcode.UnreachableCode -analyzer-checker alpha.core.CastSize -analyzer-checker alpha.core.CastToStruct -analyzer-checker alpha.core.IdenticalExpr -analyzer-checker alpha.core.SizeofPtr -analyzer-checker alpha.security.ArrayBoundV2 -analyzer-checker alpha.security.MallocOverflow -analyzer-checker alpha.security.ReturnPtrRange -analyzer-checker alpha.unix.SimpleStream -analyzer-checker alpha.unix.cstring.BufferOverlap -analyzer-checker alpha.unix.cstring.NotNullTerminated -analyzer-checker alpha.unix.cstring.OutOfBounds -analyzer-checker alpha.core.FixedAddr -analyzer-checker security.insecureAPI.strcpy -analyzer-output=html -faddrsig -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o /rootdir/html-report/2023-05-28-030536-6612-1 -x c bacon-message-connection.c
+</div>
+<div id='tooltiphint' hidden="true">
+ <p>Keyboard shortcuts: </p>
+ <ul>
+ <li>Use 'j/k' keys for keyboard navigation</li>
+ <li>Use 'Shift+S' to show/hide relevant lines</li>
+ <li>Use '?' to toggle this window</li>
+ </ul>
+ <a href="#" onclick="toggleHelp(); return false;">Close</a>
+</div>
+<script type='text/javascript'>
+var relevant_lines = {"1": {"130": 1, "131": 1, "132": 1, "133": 1, "134": 1, "135": 1, "136": 1, "138": 1, "139": 1, "143": 1, "144": 1, "145": 1, "146": 1, "148": 1, "149": 1, "150": 1, "151": 1, "152": 1, "153": 1, "164": 1, "166": 1, "167": 1, "169": 1, "171": 1, "174": 1, "175": 1, "177": 1}};
+
+var filterCounterexample = function (hide) {
+ var tables = document.getElementsByClassName("code");
+ for (var t=0; t<tables.length; t++) {
+ var table = tables[t];
+ var file_id = table.getAttribute("data-fileid");
+ var lines_in_fid = relevant_lines[file_id];
+ if (!lines_in_fid) {
+ lines_in_fid = {};
+ }
+ var lines = table.getElementsByClassName("codeline");
+ for (var i=0; i<lines.length; i++) {
+ var el = lines[i];
+ var lineNo = el.getAttribute("data-linenumber");
+ if (!lines_in_fid[lineNo]) {
+ if (hide) {
+ el.setAttribute("hidden", "");
+ } else {
+ el.removeAttribute("hidden");
+ }
+ }
+ }
+ }
+}
+
+window.addEventListener("keydown", function (event) {
+ if (event.defaultPrevented) {
+ return;
+ }
+ // SHIFT + S
+ if (event.shiftKey && event.keyCode == 83) {
+ var checked = document.getElementsByName("showCounterexample")[0].checked;
+ filterCounterexample(!checked);
+ document.getElementsByName("showCounterexample")[0].click();
+ } else {
+ return;
+ }
+ event.preventDefault();
+}, true);
+
+document.addEventListener("DOMContentLoaded", function() {
+ document.querySelector('input[name="showCounterexample"]').onchange=
+ function (event) {
+ filterCounterexample(this.checked);
+ };
+});
+</script>
+
+<form>
+ <input type="checkbox" name="showCounterexample" id="showCounterexample" />
+ <label for="showCounterexample">
+ Show only relevant lines
+ </label>
+ <input type="checkbox" name="showArrows"
+ id="showArrows" style="margin-left: 10px" />
+ <label for="showArrows">
+ Show control flow arrows
+ </label>
+</form>
+
+<script type='text/javascript'>
+// Return range of numbers from a range [lower, upper).
+function range(lower, upper) {
+ var array = [];
+ for (var i = lower; i <= upper; ++i) {
+ array.push(i);
+ }
+ return array;
+}
+
+var getRelatedArrowIndices = function(pathId) {
+ // HTML numeration of events is a bit different than it is in the path.
+ // Everything is rotated one step to the right, so the last element
+ // (error diagnostic) has index 0.
+ if (pathId == 0) {
+ // arrowIndices has at least 2 elements
+ pathId = arrowIndices.length - 1;
+ }
+
+ return range(arrowIndices[pathId], arrowIndices[pathId - 1]);
+}
+
+var highlightArrowsForSelectedEvent = function() {
+ const selectedNum = findNum();
+ const arrowIndicesToHighlight = getRelatedArrowIndices(selectedNum);
+ arrowIndicesToHighlight.forEach((index) => {
+ var arrow = document.querySelector("#arrow" + index);
+ if(arrow) {
+ classListAdd(arrow, "selected")
+ }
+ });
+}
+
+var getAbsoluteBoundingRect = function(element) {
+ const relative = element.getBoundingClientRect();
+ return {
+ left: relative.left + window.pageXOffset,
+ right: relative.right + window.pageXOffset,
+ top: relative.top + window.pageYOffset,
+ bottom: relative.bottom + window.pageYOffset,
+ height: relative.height,
+ width: relative.width
+ };
+}
+
+var drawArrow = function(index) {
+ // This function is based on the great answer from SO:
+ // https://stackoverflow.com/a/39575674/11582326
+ var start = document.querySelector("#start" + index);
+ var end = document.querySelector("#end" + index);
+ var arrow = document.querySelector("#arrow" + index);
+
+ var startRect = getAbsoluteBoundingRect(start);
+ var endRect = getAbsoluteBoundingRect(end);
+
+ // It is an arrow from a token to itself, no need to visualize it.
+ if (startRect.top == endRect.top &&
+ startRect.left == endRect.left)
+ return;
+
+ // Each arrow is a very simple Bézier curve, with two nodes and
+ // two handles. So, we need to calculate four points in the window:
+ // * start node
+ var posStart = { x: 0, y: 0 };
+ // * end node
+ var posEnd = { x: 0, y: 0 };
+ // * handle for the start node
+ var startHandle = { x: 0, y: 0 };
+ // * handle for the end node
+ var endHandle = { x: 0, y: 0 };
+ // One can visualize it as follows:
+ //
+ // start handle
+ // /
+ // X"""_.-""""X
+ // .' \
+ // / start node
+ // |
+ // |
+ // | end node
+ // \ /
+ // `->X
+ // X-'
+ // \
+ // end handle
+ //
+ // NOTE: (0, 0) is the top left corner of the window.
+
+ // We have 3 similar, but still different scenarios to cover:
+ //
+ // 1. Two tokens on different lines.
+ // -xxx
+ // /
+ // \
+ // -> xxx
+ // In this situation, we draw arrow on the left curving to the left.
+ // 2. Two tokens on the same line, and the destination is on the right.
+ // ____
+ // / \
+ // / V
+ // xxx xxx
+ // In this situation, we draw arrow above curving upwards.
+ // 3. Two tokens on the same line, and the destination is on the left.
+ // xxx xxx
+ // ^ /
+ // \____/
+ // In this situation, we draw arrow below curving downwards.
+ const onDifferentLines = startRect.top <= endRect.top - 5 ||
+ startRect.top >= endRect.top + 5;
+ const leftToRight = startRect.left < endRect.left;
+
+ // NOTE: various magic constants are chosen empirically for
+ // better positioning and look
+ if (onDifferentLines) {
+ // Case #1
+ const topToBottom = startRect.top < endRect.top;
+ posStart.x = startRect.left - 1;
+ // We don't want to start it at the top left corner of the token,
+ // it doesn't feel like this is where the arrow comes from.
+ // For this reason, we start it in the middle of the left side
+ // of the token.
+ posStart.y = startRect.top + startRect.height / 2;
+
+ // End node has arrow head and we give it a bit more space.
+ posEnd.x = endRect.left - 4;
+ posEnd.y = endRect.top;
+
+ // Utility object with x and y offsets for handles.
+ var curvature = {
+ // We want bottom-to-top arrow to curve a bit more, so it doesn't
+ // overlap much with top-to-bottom curves (much more frequent).
+ x: topToBottom ? 15 : 25,
+ y: Math.min((posEnd.y - posStart.y) / 3, 10)
+ }
+
+ // When destination is on the different line, we can make a
+ // curvier arrow because we have space for it.
+ // So, instead of using
+ //
+ // startHandle.x = posStart.x - curvature.x
+ // endHandle.x = posEnd.x - curvature.x
+ //
+ // We use the leftmost of these two values for both handles.
+ startHandle.x = Math.min(posStart.x, posEnd.x) - curvature.x;
+ endHandle.x = startHandle.x;
+
+ // Curving downwards from the start node...
+ startHandle.y = posStart.y + curvature.y;
+ // ... and upwards from the end node.
+ endHandle.y = posEnd.y - curvature.y;
+
+ } else if (leftToRight) {
+ // Case #2
+ // Starting from the top right corner...
+ posStart.x = startRect.right - 1;
+ posStart.y = startRect.top;
+
+ // ...and ending at the top left corner of the end token.
+ posEnd.x = endRect.left + 1;
+ posEnd.y = endRect.top - 1;
+
+ // Utility object with x and y offsets for handles.
+ var curvature = {
+ x: Math.min((posEnd.x - posStart.x) / 3, 15),
+ y: 5
+ }
+
+ // Curving to the right...
+ startHandle.x = posStart.x + curvature.x;
+ // ... and upwards from the start node.
+ startHandle.y = posStart.y - curvature.y;
+
+ // And to the left...
+ endHandle.x = posEnd.x - curvature.x;
+ // ... and upwards from the end node.
+ endHandle.y = posEnd.y - curvature.y;
+
+ } else {
+ // Case #3
+ // Starting from the bottom right corner...
+ posStart.x = startRect.right;
+ posStart.y = startRect.bottom;
+
+ // ...and ending also at the bottom right corner, but of the end token.
+ posEnd.x = endRect.right - 1;
+ posEnd.y = endRect.bottom + 1;
+
+ // Utility object with x and y offsets for handles.
+ var curvature = {
+ x: Math.min((posStart.x - posEnd.x) / 3, 15),
+ y: 5
+ }
+
+ // Curving to the left...
+ startHandle.x = posStart.x - curvature.x;
+ // ... and downwards from the start node.
+ startHandle.y = posStart.y + curvature.y;
+
+ // And to the right...
+ endHandle.x = posEnd.x + curvature.x;
+ // ... and downwards from the end node.
+ endHandle.y = posEnd.y + curvature.y;
+ }
+
+ // Put it all together into a path.
+ // More information on the format:
+ // https://developer.mozilla.org/en-US/docs/Web/SVG/Tutorial/Paths
+ var pathStr = "M" + posStart.x + "," + posStart.y + " " +
+ "C" + startHandle.x + "," + startHandle.y + " " +
+ endHandle.x + "," + endHandle.y + " " +
+ posEnd.x + "," + posEnd.y;
+
+ arrow.setAttribute("d", pathStr);
+};
+
+var drawArrows = function() {
+ const numOfArrows = document.querySelectorAll("path[id^=arrow]").length;
+ for (var i = 0; i < numOfArrows; ++i) {
+ drawArrow(i);
+ }
+}
+
+var toggleArrows = function(event) {
+ const arrows = document.querySelector("#arrows");
+ if (event.target.checked) {
+ arrows.setAttribute("visibility", "visible");
+ } else {
+ arrows.setAttribute("visibility", "hidden");
+ }
+}
+
+window.addEventListener("resize", drawArrows);
+document.addEventListener("DOMContentLoaded", function() {
+ // Whenever we show invocation, locations change, i.e. we
+ // need to redraw arrows.
+ document
+ .querySelector('input[id="showinvocation"]')
+ .addEventListener("click", drawArrows);
+ // Hiding irrelevant lines also should cause arrow rerender.
+ document
+ .querySelector('input[name="showCounterexample"]')
+ .addEventListener("change", drawArrows);
+ document
+ .querySelector('input[name="showArrows"]')
+ .addEventListener("change", toggleArrows);
+ drawArrows();
+ // Default highlighting for the last event.
+ highlightArrowsForSelectedEvent();
+});
+</script>
+
+<script type='text/javascript'>
+var digitMatcher = new RegExp("[0-9]+");
+
+var querySelectorAllArray = function(selector) {
+ return Array.prototype.slice.call(
+ document.querySelectorAll(selector));
+}
+
+document.addEventListener("DOMContentLoaded", function() {
+ querySelectorAllArray(".PathNav > a").forEach(
+ function(currentValue, currentIndex) {
+ var hrefValue = currentValue.getAttribute("href");
+ currentValue.onclick = function() {
+ scrollTo(document.querySelector(hrefValue));
+ return false;
+ };
+ });
+});
+
+var findNum = function() {
+ var s = document.querySelector(".msg.selected");
+ if (!s || s.id == "EndPath") {
+ return 0;
+ }
+ var out = parseInt(digitMatcher.exec(s.id)[0]);
+ return out;
+};
+
+var classListAdd = function(el, theClass) {
+ if(!el.className.baseVal)
+ el.className += " " + theClass;
+ else
+ el.className.baseVal += " " + theClass;
+};
+
+var classListRemove = function(el, theClass) {
+ var className = (!el.className.baseVal) ?
+ el.className : el.className.baseVal;
+ className = className.replace(" " + theClass, "");
+ if(!el.className.baseVal)
+ el.className = className;
+ else
+ el.className.baseVal = className;
+};
+
+var scrollTo = function(el) {
+ querySelectorAllArray(".selected").forEach(function(s) {
+ classListRemove(s, "selected");
+ });
+ classListAdd(el, "selected");
+ window.scrollBy(0, el.getBoundingClientRect().top -
+ (window.innerHeight / 2));
+ highlightArrowsForSelectedEvent();
+};
+
+var move = function(num, up, numItems) {
+ if (num == 1 && up || num == numItems - 1 && !up) {
+ return 0;
+ } else if (num == 0 && up) {
+ return numItems - 1;
+ } else if (num == 0 && !up) {
+ return 1 % numItems;
+ }
+ return up ? num - 1 : num + 1;
+}
+
+var numToId = function(num) {
+ if (num == 0) {
+ return document.getElementById("EndPath")
+ }
+ return document.getElementById("Path" + num);
+};
+
+var navigateTo = function(up) {
+ var numItems = document.querySelectorAll(
+ ".line > .msgEvent, .line > .msgControl").length;
+ var currentSelected = findNum();
+ var newSelected = move(currentSelected, up, numItems);
+ var newEl = numToId(newSelected, numItems);
+
+ // Scroll element into center.
+ scrollTo(newEl);
+};
+
+window.addEventListener("keydown", function (event) {
+ if (event.defaultPrevented) {
+ return;
+ }
+ // key 'j'
+ if (event.keyCode == 74) {
+ navigateTo(/*up=*/false);
+ // key 'k'
+ } else if (event.keyCode == 75) {
+ navigateTo(/*up=*/true);
+ } else {
+ return;
+ }
+ event.preventDefault();
+}, true);
+</script>
+
+<script type='text/javascript'>
+
+var toggleHelp = function() {
+ var hint = document.querySelector("#tooltiphint");
+ var attributeName = "hidden";
+ if (hint.hasAttribute(attributeName)) {
+ hint.removeAttribute(attributeName);
+ } else {
+ hint.setAttribute("hidden", "true");
+ }
+};
+window.addEventListener("keydown", function (event) {
+ if (event.defaultPrevented) {
+ return;
+ }
+ if (event.key == "?") {
+ toggleHelp();
+ } else {
+ return;
+ }
+ event.preventDefault();
+});
+</script>
+
+<style type="text/css">
+ svg {
+ position:absolute;
+ top:0;
+ left:0;
+ height:100%;
+ width:100%;
+ pointer-events: none;
+ overflow: visible
+ }
+ .arrow {
+ stroke-opacity: 0.2;
+ stroke-width: 1;
+ marker-end: url(#arrowhead);
+ }
+
+ .arrow.selected {
+ stroke-opacity: 0.6;
+ stroke-width: 2;
+ marker-end: url(#arrowheadSelected);
+ }
+
+ .arrowhead {
+ orient: auto;
+ stroke: none;
+ opacity: 0.6;
+ fill: blue;
+ }
+</style>
+<svg xmlns="http://www.w3.org/2000/svg">
+ <defs>
+ <marker id="arrowheadSelected" class="arrowhead" opacity="0.6"
+ viewBox="0 0 10 10" refX="3" refY="5"
+ markerWidth="4" markerHeight="4">
+ <path d="M 0 0 L 10 5 L 0 10 z" />
+ </marker>
+ <marker id="arrowhead" class="arrowhead" opacity="0.2"
+ viewBox="0 0 10 10" refX="3" refY="5"
+ markerWidth="4" markerHeight="4">
+ <path d="M 0 0 L 10 5 L 0 10 z" />
+ </marker>
+ </defs>
+ <g id="arrows" fill="none" stroke="blue" visibility="hidden">
+ <path class="arrow" id="arrow0"/>
+ <path class="arrow" id="arrow1"/>
+ <path class="arrow" id="arrow2"/>
+ <path class="arrow" id="arrow3"/>
+ <path class="arrow" id="arrow4"/>
+ <path class="arrow" id="arrow5"/>
+ <path class="arrow" id="arrow6"/>
+ <path class="arrow" id="arrow7"/>
+ <path class="arrow" id="arrow8"/>
+ <path class="arrow" id="arrow9"/>
+ <path class="arrow" id="arrow10"/>
+ <path class="arrow" id="arrow11"/>
+ <path class="arrow" id="arrow12"/>
+ <path class="arrow" id="arrow13"/>
+ <path class="arrow" id="arrow14"/>
+ <path class="arrow" id="arrow15"/>
+ <path class="arrow" id="arrow16"/>
+ <path class="arrow" id="arrow17"/>
+ <path class="arrow" id="arrow18"/>
+ <path class="arrow" id="arrow19"/>
+ <path class="arrow" id="arrow20"/>
+ <path class="arrow" id="arrow21"/>
+ <path class="arrow" id="arrow22"/>
+ <path class="arrow" id="arrow23"/>
+ <path class="arrow" id="arrow24"/>
+ <path class="arrow" id="arrow25"/>
+ <path class="arrow" id="arrow26"/>
+ <path class="arrow" id="arrow27"/>
+ <path class="arrow" id="arrow28"/>
+ <path class="arrow" id="arrow29"/>
+ <path class="arrow" id="arrow30"/>
+ <path class="arrow" id="arrow31"/>
+ <path class="arrow" id="arrow32"/>
+ <path class="arrow" id="arrow33"/>
+ <path class="arrow" id="arrow34"/>
+ <path class="arrow" id="arrow35"/>
+ <path class="arrow" id="arrow36"/>
+ <path class="arrow" id="arrow37"/>
+ <path class="arrow" id="arrow38"/>
+ <path class="arrow" id="arrow39"/>
+ <path class="arrow" id="arrow40"/>
+ <path class="arrow" id="arrow41"/>
+ <path class="arrow" id="arrow42"/>
+ <path class="arrow" id="arrow43"/>
+ <path class="arrow" id="arrow44"/>
+ <path class="arrow" id="arrow45"/>
+ <path class="arrow" id="arrow46"/>
+ <path class="arrow" id="arrow47"/>
+ <path class="arrow" id="arrow48"/>
+ <path class="arrow" id="arrow49"/>
+ <path class="arrow" id="arrow50"/>
+ <path class="arrow" id="arrow51"/>
+ <path class="arrow" id="arrow52"/>
+
+ </g>
+</svg>
+<script type='text/javascript'>
+const arrowIndices = [ 53,51,48,47,44,39,38,35,30,29,27,26,20,20,19,17,15,9,7,5,3,0 ]
+</script>
+<table class="code" data-fileid="1">
+<tr class="codeline" data-linenumber="1"><td class="num" id="LN1">1</td><td class="line"><span class='comment'>/*</span></td></tr>
+<tr class="codeline" data-linenumber="2"><td class="num" id="LN2">2</td><td class="line"> <span class='comment'>* Copyright (C) 2003 Bastien Nocera &lt;[email protected]&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="3"><td class="num" id="LN3">3</td><td class="line"> <span class='comment'>* Copyright (C) 2012-2021 MATE Developers</span></td></tr>
+<tr class="codeline" data-linenumber="4"><td class="num" id="LN4">4</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="5"><td class="num" id="LN5">5</td><td class="line"> <span class='comment'>* This program is free software; you can redistribute it and/or modify</span></td></tr>
+<tr class="codeline" data-linenumber="6"><td class="num" id="LN6">6</td><td class="line"> <span class='comment'>* it under the terms of the GNU General Public License as published by</span></td></tr>
+<tr class="codeline" data-linenumber="7"><td class="num" id="LN7">7</td><td class="line"> <span class='comment'>* the Free Software Foundation; either version 2 of the License, or</span></td></tr>
+<tr class="codeline" data-linenumber="8"><td class="num" id="LN8">8</td><td class="line"> <span class='comment'>* (at your option) any later version.</span></td></tr>
+<tr class="codeline" data-linenumber="9"><td class="num" id="LN9">9</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="10"><td class="num" id="LN10">10</td><td class="line"> <span class='comment'>* This program is distributed in the hope that it will be useful,</span></td></tr>
+<tr class="codeline" data-linenumber="11"><td class="num" id="LN11">11</td><td class="line"> <span class='comment'>* but WITHOUT ANY WARRANTY; without even the implied warranty of</span></td></tr>
+<tr class="codeline" data-linenumber="12"><td class="num" id="LN12">12</td><td class="line"> <span class='comment'>* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></td></tr>
+<tr class="codeline" data-linenumber="13"><td class="num" id="LN13">13</td><td class="line"> <span class='comment'>* GNU General Public License for more details.</span></td></tr>
+<tr class="codeline" data-linenumber="14"><td class="num" id="LN14">14</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="15"><td class="num" id="LN15">15</td><td class="line"> <span class='comment'>* You should have received a copy of the GNU General Public License</span></td></tr>
+<tr class="codeline" data-linenumber="16"><td class="num" id="LN16">16</td><td class="line"> <span class='comment'>* along with this program; if not, write to the Free Software</span></td></tr>
+<tr class="codeline" data-linenumber="17"><td class="num" id="LN17">17</td><td class="line"> <span class='comment'>* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.</span></td></tr>
+<tr class="codeline" data-linenumber="18"><td class="num" id="LN18">18</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="19"><td class="num" id="LN19">19</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="20"><td class="num" id="LN20">20</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="21"><td class="num" id="LN21">21</td><td class="line"><span class='directive'>#include &lt;sys/types.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="22"><td class="num" id="LN22">22</td><td class="line"><span class='directive'>#include &lt;sys/stat.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="23"><td class="num" id="LN23">23</td><td class="line"><span class='directive'>#include &lt;fcntl.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="24"><td class="num" id="LN24">24</td><td class="line"><span class='directive'>#include &lt;stdio.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="25"><td class="num" id="LN25">25</td><td class="line"><span class='directive'>#include &lt;string.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="26"><td class="num" id="LN26">26</td><td class="line"><span class='directive'>#include &lt;unistd.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="27"><td class="num" id="LN27">27</td><td class="line"><span class='directive'>#include &lt;sys/types.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="28"><td class="num" id="LN28">28</td><td class="line"><span class='directive'>#include &lt;sys/socket.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="29"><td class="num" id="LN29">29</td><td class="line"><span class='directive'>#include &lt;sys/un.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="30"><td class="num" id="LN30">30</td><td class="line"><span class='directive'>#include &lt;<span class='macro'>errno<span class='macro_popup'>(*__errno_location ())</span></span>.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="31"><td class="num" id="LN31">31</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="32"><td class="num" id="LN32">32</td><td class="line"><span class='directive'>#include "bacon-message-connection.h"</span></td></tr>
+<tr class="codeline" data-linenumber="33"><td class="num" id="LN33">33</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="34"><td class="num" id="LN34">34</td><td class="line"><span class='directive'>#ifndef <span class='macro'>UNIX_PATH_MAX<span class='macro_popup'>108</span></span></span></td></tr>
+<tr class="codeline" data-linenumber="35"><td class="num" id="LN35">35</td><td class="line"><span class='directive'>#define <span class='macro'>UNIX_PATH_MAX<span class='macro_popup'>108</span></span> 108</span></td></tr>
+<tr class="codeline" data-linenumber="36"><td class="num" id="LN36">36</td><td class="line"><span class='directive'>#endif</span></td></tr>
+<tr class="codeline" data-linenumber="37"><td class="num" id="LN37">37</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="38"><td class="num" id="LN38">38</td><td class="line"><span class='keyword'>struct</span> BaconMessageConnection {</td></tr>
+<tr class="codeline" data-linenumber="39"><td class="num" id="LN39">39</td><td class="line"> <span class='comment'>/* A server accepts connections */</span></td></tr>
+<tr class="codeline" data-linenumber="40"><td class="num" id="LN40">40</td><td class="line"> gboolean is_server;</td></tr>
+<tr class="codeline" data-linenumber="41"><td class="num" id="LN41">41</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="42"><td class="num" id="LN42">42</td><td class="line"> <span class='comment'>/* The socket path itself */</span></td></tr>
+<tr class="codeline" data-linenumber="43"><td class="num" id="LN43">43</td><td class="line"> <span class='keyword'>char</span> *path;</td></tr>
+<tr class="codeline" data-linenumber="44"><td class="num" id="LN44">44</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="45"><td class="num" id="LN45">45</td><td class="line"> <span class='comment'>/* File descriptor of the socket */</span></td></tr>
+<tr class="codeline" data-linenumber="46"><td class="num" id="LN46">46</td><td class="line"> <span class='keyword'>int</span> fd;</td></tr>
+<tr class="codeline" data-linenumber="47"><td class="num" id="LN47">47</td><td class="line"> <span class='comment'>/* Channel to watch */</span></td></tr>
+<tr class="codeline" data-linenumber="48"><td class="num" id="LN48">48</td><td class="line"> GIOChannel *chan;</td></tr>
+<tr class="codeline" data-linenumber="49"><td class="num" id="LN49">49</td><td class="line"> <span class='comment'>/* Event id returned by g_io_add_watch() */</span></td></tr>
+<tr class="codeline" data-linenumber="50"><td class="num" id="LN50">50</td><td class="line"> <span class='keyword'>int</span> conn_id;</td></tr>
+<tr class="codeline" data-linenumber="51"><td class="num" id="LN51">51</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="52"><td class="num" id="LN52">52</td><td class="line"> <span class='comment'>/* Connections accepted by this connection */</span></td></tr>
+<tr class="codeline" data-linenumber="53"><td class="num" id="LN53">53</td><td class="line"> GSList *accepted_connections;</td></tr>
+<tr class="codeline" data-linenumber="54"><td class="num" id="LN54">54</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="55"><td class="num" id="LN55">55</td><td class="line"> <span class='comment'>/* callback */</span></td></tr>
+<tr class="codeline" data-linenumber="56"><td class="num" id="LN56">56</td><td class="line"> <span class='keyword'>void</span> (*func) (<span class='keyword'>const</span> <span class='keyword'>char</span> *message, gpointer user_data);</td></tr>
+<tr class="codeline" data-linenumber="57"><td class="num" id="LN57">57</td><td class="line"> gpointer data;</td></tr>
+<tr class="codeline" data-linenumber="58"><td class="num" id="LN58">58</td><td class="line">};</td></tr>
+<tr class="codeline" data-linenumber="59"><td class="num" id="LN59">59</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="60"><td class="num" id="LN60">60</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="61"><td class="num" id="LN61">61</td><td class="line">test_is_socket (<span class='keyword'>const</span> <span class='keyword'>char</span> *path)</td></tr>
+<tr class="codeline" data-linenumber="62"><td class="num" id="LN62">62</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="63"><td class="num" id="LN63">63</td><td class="line"> <span class='keyword'>struct</span> stat s;</td></tr>
+<tr class="codeline" data-linenumber="64"><td class="num" id="LN64">64</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="65"><td class="num" id="LN65">65</td><td class="line"> <span class='keyword'>if</span> (stat (path, &amp;s) == -1)</td></tr>
+<tr class="codeline" data-linenumber="66"><td class="num" id="LN66">66</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="67"><td class="num" id="LN67">67</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="68"><td class="num" id="LN68">68</td><td class="line"> <span class='keyword'>if</span> (<span class='macro'>S_ISSOCK (s.st_mode)<span class='macro_popup'>((((s.st_mode)) &amp; 0170000) == (0140000))</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="69"><td class="num" id="LN69">69</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="70"><td class="num" id="LN70">70</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="71"><td class="num" id="LN71">71</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="72"><td class="num" id="LN72">72</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="73"><td class="num" id="LN73">73</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="74"><td class="num" id="LN74">74</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="75"><td class="num" id="LN75">75</td><td class="line">is_owned_by_user_and_socket (<span class='keyword'>const</span> <span class='keyword'>char</span> *path)</td></tr>
+<tr class="codeline" data-linenumber="76"><td class="num" id="LN76">76</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="77"><td class="num" id="LN77">77</td><td class="line"> <span class='keyword'>struct</span> stat s;</td></tr>
+<tr class="codeline" data-linenumber="78"><td class="num" id="LN78">78</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="79"><td class="num" id="LN79">79</td><td class="line"> <span class='keyword'>if</span> (stat (path, &amp;s) == -1)</td></tr>
+<tr class="codeline" data-linenumber="80"><td class="num" id="LN80">80</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="81"><td class="num" id="LN81">81</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="82"><td class="num" id="LN82">82</td><td class="line"> <span class='keyword'>if</span> (s.st_uid != geteuid ())</td></tr>
+<tr class="codeline" data-linenumber="83"><td class="num" id="LN83">83</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="84"><td class="num" id="LN84">84</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="85"><td class="num" id="LN85">85</td><td class="line"> <span class='keyword'>if</span> ((s.st_mode &amp; <span class='macro'>S_IFSOCK<span class='macro_popup'>0140000</span></span>) != <span class='macro'>S_IFSOCK<span class='macro_popup'>0140000</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="86"><td class="num" id="LN86">86</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="87"><td class="num" id="LN87">87</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="88"><td class="num" id="LN88">88</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="89"><td class="num" id="LN89">89</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="90"><td class="num" id="LN90">90</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="91"><td class="num" id="LN91">91</td><td class="line"><span class='keyword'>static</span> gboolean server_cb (GIOChannel *source,</td></tr>
+<tr class="codeline" data-linenumber="92"><td class="num" id="LN92">92</td><td class="line"> GIOCondition condition, gpointer data);</td></tr>
+<tr class="codeline" data-linenumber="93"><td class="num" id="LN93">93</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="94"><td class="num" id="LN94">94</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="95"><td class="num" id="LN95">95</td><td class="line">setup_connection (BaconMessageConnection *conn)</td></tr>
+<tr class="codeline" data-linenumber="96"><td class="num" id="LN96">96</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="97"><td class="num" id="LN97">97</td><td class="line"> <span class='macro'>g_return_val_if_fail (conn-&gt;chan == NULL, FALSE)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_17<br>; if (conn-&gt;chan == ((void*)0)) _g_boolean_var_17 = 1; else<br> _g_boolean_var_17 = 0; _g_boolean_var_17; }), 1))) { } else {<br> g_return_if_fail_warning (((gchar*) 0), ((const char*) (__func__<br>)), "conn-&gt;chan == NULL"); return ((0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="98"><td class="num" id="LN98">98</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="99"><td class="num" id="LN99">99</td><td class="line"> conn-&gt;chan = g_io_channel_unix_new (conn-&gt;fd);</td></tr>
+<tr class="codeline" data-linenumber="100"><td class="num" id="LN100">100</td><td class="line"> <span class='keyword'>if</span> (!conn-&gt;chan) {</td></tr>
+<tr class="codeline" data-linenumber="101"><td class="num" id="LN101">101</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="102"><td class="num" id="LN102">102</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="103"><td class="num" id="LN103">103</td><td class="line"> g_io_channel_set_line_term (conn-&gt;chan, <span class='string_literal'>"\n"</span>, 1);</td></tr>
+<tr class="codeline" data-linenumber="104"><td class="num" id="LN104">104</td><td class="line"> conn-&gt;conn_id = g_io_add_watch (conn-&gt;chan, G_IO_IN, server_cb, conn);</td></tr>
+<tr class="codeline" data-linenumber="105"><td class="num" id="LN105">105</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="106"><td class="num" id="LN106">106</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="107"><td class="num" id="LN107">107</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="108"><td class="num" id="LN108">108</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="109"><td class="num" id="LN109">109</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="110"><td class="num" id="LN110">110</td><td class="line">accept_new_connection (BaconMessageConnection *server_conn)</td></tr>
+<tr class="codeline" data-linenumber="111"><td class="num" id="LN111">111</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="112"><td class="num" id="LN112">112</td><td class="line"> BaconMessageConnection *conn;</td></tr>
+<tr class="codeline" data-linenumber="113"><td class="num" id="LN113">113</td><td class="line"> <span class='keyword'>int</span> alen;</td></tr>
+<tr class="codeline" data-linenumber="114"><td class="num" id="LN114">114</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="115"><td class="num" id="LN115">115</td><td class="line"> <span class='macro'>g_return_if_fail (server_conn-&gt;is_server)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_18<br>; if (server_conn-&gt;is_server) _g_boolean_var_18 = 1; else _g_boolean_var_18<br> = 0; _g_boolean_var_18; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "server_conn-&gt;is_server"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="116"><td class="num" id="LN116">116</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="117"><td class="num" id="LN117">117</td><td class="line"> conn = <span class='macro'>g_new0 (BaconMessageConnection, 1)<span class='macro_popup'>(BaconMessageConnection *) (__extension__ ({ gsize __n = (gsize<br>) (1); gsize __s = sizeof (BaconMessageConnection); gpointer __p<br>; if (__s == 1) __p = g_malloc0 (__n); else if (__builtin_constant_p<br> (__n) &amp;&amp; (__s == 0 || __n &lt;= (9223372036854775807L<br> *2UL+1UL) / __s)) __p = g_malloc0 (__n * __s); else __p = g_malloc0_n<br> (__n, __s); __p; }))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="118"><td class="num" id="LN118">118</td><td class="line"> conn-&gt;is_server = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="119"><td class="num" id="LN119">119</td><td class="line"> conn-&gt;func = server_conn-&gt;func;</td></tr>
+<tr class="codeline" data-linenumber="120"><td class="num" id="LN120">120</td><td class="line"> conn-&gt;data = server_conn-&gt;data;</td></tr>
+<tr class="codeline" data-linenumber="121"><td class="num" id="LN121">121</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="122"><td class="num" id="LN122">122</td><td class="line"> conn-&gt;fd = accept (server_conn-&gt;fd, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, (guint *)&amp;alen);</td></tr>
+<tr class="codeline" data-linenumber="123"><td class="num" id="LN123">123</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="124"><td class="num" id="LN124">124</td><td class="line"> server_conn-&gt;accepted_connections =</td></tr>
+<tr class="codeline" data-linenumber="125"><td class="num" id="LN125">125</td><td class="line"> g_slist_prepend (server_conn-&gt;accepted_connections, conn);</td></tr>
+<tr class="codeline" data-linenumber="126"><td class="num" id="LN126">126</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="127"><td class="num" id="LN127">127</td><td class="line"> setup_connection (conn);</td></tr>
+<tr class="codeline" data-linenumber="128"><td class="num" id="LN128">128</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="129"><td class="num" id="LN129">129</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="130"><td class="num" id="LN130">130</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="131"><td class="num" id="LN131">131</td><td class="line">server_cb (GIOChannel *source, GIOCondition condition, gpointer data)</td></tr>
+<tr class="codeline" data-linenumber="132"><td class="num" id="LN132">132</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="133"><td class="num" id="LN133">133</td><td class="line"> <span id="start52">BaconMessageConnection</span> *conn = (BaconMessageConnection *)data;</td></tr>
+<tr class="codeline" data-linenumber="134"><td class="num" id="LN134">134</td><td class="line"> <span class='keyword'>char</span> *message, *subs, buf;</td></tr>
+<tr class="codeline" data-linenumber="135"><td class="num" id="LN135">135</td><td class="line"> <span class='keyword'>int</span> cd, rc, offset;</td></tr>
+<tr class="codeline" data-linenumber="136"><td class="num" id="LN136">136</td><td class="line"> gboolean finished;</td></tr>
+<tr class="codeline" data-linenumber="137"><td class="num" id="LN137">137</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="138"><td class="num" id="LN138">138</td><td class="line"> offset = 0;</td></tr>
+<tr class="codeline" data-linenumber="139"><td class="num" id="LN139">139</td><td class="line"> <span id="start51"><span id="end52"><span class='keyword'>if</span></span></span> (<span id="start50"><span class="mrange"><span id="end51">conn</span></span>-&gt;is_server</span> &amp;&amp; conn-&gt;fd == g_io_channel_unix_get_fd (source)) {</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path1" class="msg msgEvent" style="margin-left:13ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexEvent">1</div></td><td>Assuming field 'is_server' is 0</td><td><div class="PathNav"><a href="#Path2" title="Next event (2)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="140"><td class="num" id="LN140">140</td><td class="line"> accept_new_connection (conn);</td></tr>
+<tr class="codeline" data-linenumber="141"><td class="num" id="LN141">141</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="142"><td class="num" id="LN142">142</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="143"><td class="num" id="LN143">143</td><td class="line"> <span id="start49"><span id="end50">message</span></span> = g_malloc (1);</td></tr>
+<tr class="codeline" data-linenumber="144"><td class="num" id="LN144">144</td><td class="line"> cd = conn-&gt;fd;</td></tr>
+<tr class="codeline" data-linenumber="145"><td class="num" id="LN145">145</td><td class="line"> rc = read (cd, &amp;buf, 1);</td></tr>
+<tr class="codeline" data-linenumber="146"><td class="num" id="LN146">146</td><td class="line"> <span id="start30"><span id="end31"><span id="start39"><span id="end40"><span id="start48"><span id="end49"><span class='keyword'>while</span></span></span></span></span></span></span> (<span id="start29"><span class="mrange"><span id="end30"><span id="start36"><span id="end37"><span id="start38"><span class="mrange"><span id="end39"><span id="start45"><span id="end46"><span id="start47"><span class="mrange"><span id="end48">rc</span></span></span></span></span></span></span></span></span></span> &gt; 0</span></span></span> &amp;&amp; <span id="start28"><span class="mrange"><span id="end29"><span id="start37"><span class="mrange"><span id="end38"><span id="start46"><span class="mrange"><span id="end47">buf</span></span></span></span></span></span> != '\n')</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path2" class="msg msgEvent" style="margin-left:16ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexEvent">2</div></td><td><div class="PathNav"><a href="#Path1" title="Previous event (1)">&#x2190;</a></div></td><td>Assuming 'rc' is &gt; 0</td><td><div class="PathNav"><a href="#Path3" title="Next event (3)">&#x2192;</a></div></td></tr></table></div></td></tr></span>
+<tr><td class="num"></td><td class="line"><div id="Path3" class="msg msgEvent" style="margin-left:26ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexEvent">3</div></td><td><div class="PathNav"><a href="#Path2" title="Previous event (2)">&#x2190;</a></div></td><td>Assuming the condition is true</td><td><div class="PathNav"><a href="#Path4" title="Next event (4)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path4" class="msg msgControl" style="margin-left:9ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">4</div></td><td><div class="PathNav"><a href="#Path3" title="Previous event (3)">&#x2190;</a></div></td><td>Loop condition is true. Entering loop body</td><td><div class="PathNav"><a href="#Path5" title="Next event (5)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path5" class="msg msgEvent" style="margin-left:16ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexEvent">5</div></td><td><div class="PathNav"><a href="#Path4" title="Previous event (4)">&#x2190;</a></div></td><td>Assuming 'rc' is &gt; 0</td><td><div class="PathNav"><a href="#Path6" title="Next event (6)">&#x2192;</a></div></td></tr></table></div></td></tr></span>
+<tr><td class="num"></td><td class="line"><div id="Path6" class="msg msgEvent" style="margin-left:26ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexEvent">6</div></td><td><div class="PathNav"><a href="#Path5" title="Previous event (5)">&#x2190;</a></div></td><td>Assuming the condition is true</td><td><div class="PathNav"><a href="#Path7" title="Next event (7)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path7" class="msg msgControl" style="margin-left:9ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">7</div></td><td><div class="PathNav"><a href="#Path6" title="Previous event (6)">&#x2190;</a></div></td><td>Loop condition is true. Entering loop body</td><td><div class="PathNav"><a href="#Path8" title="Next event (8)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path8" class="msg msgEvent" style="margin-left:16ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexEvent">8</div></td><td><div class="PathNav"><a href="#Path7" title="Previous event (7)">&#x2190;</a></div></td><td>Assuming 'rc' is &gt; 0</td><td><div class="PathNav"><a href="#Path9" title="Next event (9)">&#x2192;</a></div></td></tr></table></div></td></tr></span>
+<tr><td class="num"></td><td class="line"><div id="Path9" class="msg msgEvent" style="margin-left:26ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexEvent">9</div></td><td><div class="PathNav"><a href="#Path8" title="Previous event (8)">&#x2190;</a></div></td><td>Assuming the condition is false</td><td><div class="PathNav"><a href="#Path10" title="Next event (10)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path10" class="msg msgControl" style="margin-left:9ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">10</div></td><td><div class="PathNav"><a href="#Path9" title="Previous event (9)">&#x2190;</a></div></td><td>Loop condition is false. Execution continues on line 153</td><td><div class="PathNav"><a href="#Path11" title="Next event (11)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="147"><td class="num" id="LN147">147</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="148"><td class="num" id="LN148">148</td><td class="line"> <span id="start33"><span id="end34"><span id="start35"><span id="end36"><span id="start42"><span id="end43"><span id="start44"><span id="end45">message</span></span></span></span></span></span></span></span> = g_realloc (<span id="start34"><span id="end35"><span id="start43"><span id="end44">message</span></span></span></span>, rc + offset + 1);</td></tr>
+<tr class="codeline" data-linenumber="149"><td class="num" id="LN149">149</td><td class="line"> message[offset] = buf;</td></tr>
+<tr class="codeline" data-linenumber="150"><td class="num" id="LN150">150</td><td class="line"> offset = offset + rc;</td></tr>
+<tr class="codeline" data-linenumber="151"><td class="num" id="LN151">151</td><td class="line"> <span id="start32"><span id="end33"><span id="start41"><span id="end42">rc</span></span></span></span> = read (cd, &amp;buf, 1);</td></tr>
+<tr class="codeline" data-linenumber="152"><td class="num" id="LN152">152</td><td class="line"> <span id="start31"><span id="end32"><span id="start40"><span id="end41">}</td></tr></span></span></span></span>
+<tr class="codeline" data-linenumber="153"><td class="num" id="LN153">153</td><td class="line"> <span id="start27"><span id="end28"><span class='keyword'>if</span></span></span> (<span id="start26"><span id="end27"><span class='variable'>rc<table class='variable_popup'><tbody><tr><td valign='top'><div class='PathIndex PathIndexPopUp'>10.1</div></td><td>'rc' is > 0</td></tr></tbody></table></span></span></span> &lt;= 0) {</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path11" class="msg msgControl" style="margin-left:9ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">11</div></td><td><div class="PathNav"><a href="#Path10" title="Previous event (10)">&#x2190;</a></div></td><td>Taking false branch</td><td><div class="PathNav"><a href="#Path12" title="Next event (12)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="154"><td class="num" id="LN154">154</td><td class="line"> g_io_channel_shutdown (conn-&gt;chan, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="155"><td class="num" id="LN155">155</td><td class="line"> g_io_channel_unref (conn-&gt;chan);</td></tr>
+<tr class="codeline" data-linenumber="156"><td class="num" id="LN156">156</td><td class="line"> conn-&gt;chan = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="157"><td class="num" id="LN157">157</td><td class="line"> close (conn-&gt;fd);</td></tr>
+<tr class="codeline" data-linenumber="158"><td class="num" id="LN158">158</td><td class="line"> conn-&gt;fd = -1;</td></tr>
+<tr class="codeline" data-linenumber="159"><td class="num" id="LN159">159</td><td class="line"> g_free (message);</td></tr>
+<tr class="codeline" data-linenumber="160"><td class="num" id="LN160">160</td><td class="line"> conn-&gt;conn_id = 0;</td></tr>
+<tr class="codeline" data-linenumber="161"><td class="num" id="LN161">161</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="162"><td class="num" id="LN162">162</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="163"><td class="num" id="LN163">163</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="164"><td class="num" id="LN164">164</td><td class="line"> <span id="start25"><span id="end26">message</span></span>[offset] = '\0';</td></tr>
+<tr class="codeline" data-linenumber="165"><td class="num" id="LN165">165</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="166"><td class="num" id="LN166">166</td><td class="line"> subs = message;</td></tr>
+<tr class="codeline" data-linenumber="167"><td class="num" id="LN167">167</td><td class="line"> finished = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="168"><td class="num" id="LN168">168</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="169"><td class="num" id="LN169">169</td><td class="line"> <span id="start1"><span id="end2"><span id="end3"><span id="start13"><span id="end14"><span id="end15"><span id="start24"><span id="end25"><span class='keyword'>while</span></span></span></span></span></span></span></span></span> (<span id="start0"><span id="end1"><span id="start10"><span id="end11"><span id="start12"><span id="end13"><span id="start21"><span id="end22"><span id="start23"><span id="end24"><span class='variable'>finished<table class='variable_popup'><tbody><tr><td valign='top'><div class='PathIndex PathIndexPopUp'>11.1</div></td><td>'finished' is equal to FALSE</td></tr><tr><td valign='top'><div class='PathIndex PathIndexPopUp'>16.1</div></td><td>'finished' is equal to FALSE</td></tr><tr><td valign='top'><div class='PathIndex PathIndexPopUp'>20.1</div></td><td>'finished' is equal to FALSE</td></tr></tbody></table></span></span></span></span></span></span></span></span></span></span></span> == <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span> &amp;&amp; <span class="mrange"><span id="end0"><span id="start11"><span id="end12"><span id="start22"><span id="end23">*</span></span></span></span></span>subs</span> != '\0')</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path12" class="msg msgControl" style="margin-left:9ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">12</div></td><td><div class="PathNav"><a href="#Path11" title="Previous event (11)">&#x2190;</a></div></td><td>Loop condition is true. Entering loop body</td><td><div class="PathNav"><a href="#Path13" title="Next event (13)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path16" class="msg msgControl" style="margin-left:9ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">16</div></td><td><div class="PathNav"><a href="#Path15" title="Previous event (15)">&#x2190;</a></div></td><td>Taking false branch</td><td><div class="PathNav"><a href="#Path17" title="Next event (17)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path17" class="msg msgControl" style="margin-left:9ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">17</div></td><td><div class="PathNav"><a href="#Path16" title="Previous event (16)">&#x2190;</a></div></td><td>Loop condition is true. Entering loop body</td><td><div class="PathNav"><a href="#Path18" title="Next event (18)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path20" class="msg msgControl" style="margin-left:9ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">20</div></td><td><div class="PathNav"><a href="#Path19" title="Previous event (19)">&#x2190;</a></div></td><td>Taking false branch</td><td><div class="PathNav"><a href="#EndPath" title="Next event (21)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="EndPath" class="msg msgEvent" style="margin-left:37ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexEvent">21</div></td><td><div class="PathNav"><a href="#Path20" title="Previous event (20)">&#x2190;</a></div></td><td>Out of bound memory access (access exceeds upper limit of memory block)</td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="170"><td class="num" id="LN170">170</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="171"><td class="num" id="LN171">171</td><td class="line"> <span id="start9"><span id="end10"><span id="start20"><span id="end21"><span class='keyword'>if</span></span></span></span></span> (<span id="start8"><span id="end9"><span id="start19"><span class="mrange"><span id="end20">conn</span></span></span></span>-&gt;<span id="start7"><span id="end8"><span class='variable'>func<table class='variable_popup'><tbody><tr><td valign='top'><div class='PathIndex PathIndexPopUp'>17.1</div></td><td>Field 'func' is equal to NULL</td></tr></tbody></table></span></span></span> != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span></span>)</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path13" class="msg msgEvent" style="margin-left:21ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexEvent">13</div></td><td><div class="PathNav"><a href="#Path12" title="Previous event (12)">&#x2190;</a></div></td><td>Assuming field 'func' is equal to NULL</td><td><div class="PathNav"><a href="#Path14" title="Next event (14)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path14" class="msg msgControl" style="margin-left:17ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">14</div></td><td><div class="PathNav"><a href="#Path13" title="Previous event (13)">&#x2190;</a></div></td><td>Taking false branch</td><td><div class="PathNav"><a href="#Path15" title="Next event (15)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path18" class="msg msgControl" style="margin-left:17ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexControl">18</div></td><td><div class="PathNav"><a href="#Path17" title="Previous event (17)">&#x2190;</a></div></td><td>Taking false branch</td><td><div class="PathNav"><a href="#Path19" title="Next event (19)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="172"><td class="num" id="LN172">172</td><td class="line"> (*conn-&gt;func) (subs, conn-&gt;data);</td></tr>
+<tr class="codeline" data-linenumber="173"><td class="num" id="LN173">173</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="174"><td class="num" id="LN174">174</td><td class="line"> <span id="start6"><span id="end7"><span id="start18"><span id="end19">subs</span></span></span></span> += strlen (subs) + 1;</td></tr>
+<tr class="codeline" data-linenumber="175"><td class="num" id="LN175">175</td><td class="line"> <span id="start3"><span id="start5"><span id="end6"><span id="start15"><span id="start17"><span id="end18"><span class='keyword'>if</span></span></span></span></span></span></span> (<span id="start4"><span class="mrange"><span id="end5"><span id="start16"><span class="mrange"><span id="end17">subs</span></span></span></span> - message &gt;= offset</span></span>)</td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path15" class="msg msgEvent" style="margin-left:21ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexEvent">15</div></td><td><div class="PathNav"><a href="#Path14" title="Previous event (14)">&#x2190;</a></div></td><td>Assuming the condition is false</td><td><div class="PathNav"><a href="#Path16" title="Next event (16)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr><td class="num"></td><td class="line"><div id="Path19" class="msg msgEvent" style="margin-left:21ex"><table class="msgT"><tr><td valign="top"><div class="PathIndex PathIndexEvent">19</div></td><td><div class="PathNav"><a href="#Path18" title="Previous event (18)">&#x2190;</a></div></td><td>Assuming the condition is false</td><td><div class="PathNav"><a href="#Path20" title="Next event (20)">&#x2192;</a></div></td></tr></table></div></td></tr>
+<tr class="codeline" data-linenumber="176"><td class="num" id="LN176">176</td><td class="line"> finished = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="177"><td class="num" id="LN177">177</td><td class="line"> <span id="start2"><span id="end4"><span id="start14"><span id="end16">}</td></tr></span></span></span></span>
+<tr class="codeline" data-linenumber="178"><td class="num" id="LN178">178</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="179"><td class="num" id="LN179">179</td><td class="line"> g_free (message);</td></tr>
+<tr class="codeline" data-linenumber="180"><td class="num" id="LN180">180</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="181"><td class="num" id="LN181">181</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="182"><td class="num" id="LN182">182</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="183"><td class="num" id="LN183">183</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="184"><td class="num" id="LN184">184</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="185"><td class="num" id="LN185">185</td><td class="line">find_file_with_pattern (<span class='keyword'>const</span> <span class='keyword'>char</span> *dir, <span class='keyword'>const</span> <span class='keyword'>char</span> *pattern)</td></tr>
+<tr class="codeline" data-linenumber="186"><td class="num" id="LN186">186</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="187"><td class="num" id="LN187">187</td><td class="line"> GDir *filedir;</td></tr>
+<tr class="codeline" data-linenumber="188"><td class="num" id="LN188">188</td><td class="line"> <span class='keyword'>char</span> *found_filename;</td></tr>
+<tr class="codeline" data-linenumber="189"><td class="num" id="LN189">189</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *filename;</td></tr>
+<tr class="codeline" data-linenumber="190"><td class="num" id="LN190">190</td><td class="line"> GPatternSpec *pat;</td></tr>
+<tr class="codeline" data-linenumber="191"><td class="num" id="LN191">191</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="192"><td class="num" id="LN192">192</td><td class="line"> filedir = g_dir_open (dir, 0, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="193"><td class="num" id="LN193">193</td><td class="line"> <span class='keyword'>if</span> (filedir == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="194"><td class="num" id="LN194">194</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="195"><td class="num" id="LN195">195</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="196"><td class="num" id="LN196">196</td><td class="line"> pat = g_pattern_spec_new (pattern);</td></tr>
+<tr class="codeline" data-linenumber="197"><td class="num" id="LN197">197</td><td class="line"> <span class='keyword'>if</span> (pat == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="198"><td class="num" id="LN198">198</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="199"><td class="num" id="LN199">199</td><td class="line"> g_dir_close (filedir);</td></tr>
+<tr class="codeline" data-linenumber="200"><td class="num" id="LN200">200</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="201"><td class="num" id="LN201">201</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="202"><td class="num" id="LN202">202</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="203"><td class="num" id="LN203">203</td><td class="line"> found_filename = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="204"><td class="num" id="LN204">204</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="205"><td class="num" id="LN205">205</td><td class="line"> <span class='keyword'>while</span> ((filename = g_dir_read_name (filedir)))</td></tr>
+<tr class="codeline" data-linenumber="206"><td class="num" id="LN206">206</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="207"><td class="num" id="LN207">207</td><td class="line"> <span class='keyword'>if</span> (g_pattern_match_string (pat, filename))</td></tr>
+<tr class="codeline" data-linenumber="208"><td class="num" id="LN208">208</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="209"><td class="num" id="LN209">209</td><td class="line"> <span class='keyword'>char</span> *tmp = g_build_filename (dir, filename, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="210"><td class="num" id="LN210">210</td><td class="line"> <span class='keyword'>if</span> (is_owned_by_user_and_socket (tmp))</td></tr>
+<tr class="codeline" data-linenumber="211"><td class="num" id="LN211">211</td><td class="line"> found_filename = <span class='macro'>g_strdup (filename)<span class='macro_popup'>g_strdup_inline (filename)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="212"><td class="num" id="LN212">212</td><td class="line"> g_free (tmp);</td></tr>
+<tr class="codeline" data-linenumber="213"><td class="num" id="LN213">213</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="214"><td class="num" id="LN214">214</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="215"><td class="num" id="LN215">215</td><td class="line"> <span class='keyword'>if</span> (found_filename != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="216"><td class="num" id="LN216">216</td><td class="line"> <span class='keyword'>break</span>;</td></tr>
+<tr class="codeline" data-linenumber="217"><td class="num" id="LN217">217</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="218"><td class="num" id="LN218">218</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="219"><td class="num" id="LN219">219</td><td class="line"> g_pattern_spec_free (pat);</td></tr>
+<tr class="codeline" data-linenumber="220"><td class="num" id="LN220">220</td><td class="line"> g_dir_close (filedir);</td></tr>
+<tr class="codeline" data-linenumber="221"><td class="num" id="LN221">221</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="222"><td class="num" id="LN222">222</td><td class="line"> <span class='keyword'>return</span> found_filename;</td></tr>
+<tr class="codeline" data-linenumber="223"><td class="num" id="LN223">223</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="224"><td class="num" id="LN224">224</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="225"><td class="num" id="LN225">225</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="226"><td class="num" id="LN226">226</td><td class="line">socket_filename (<span class='keyword'>const</span> <span class='keyword'>char</span> *prefix)</td></tr>
+<tr class="codeline" data-linenumber="227"><td class="num" id="LN227">227</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="228"><td class="num" id="LN228">228</td><td class="line"> <span class='keyword'>char</span> *pattern, *newfile, *path, *filename;</td></tr>
+<tr class="codeline" data-linenumber="229"><td class="num" id="LN229">229</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *tmpdir;</td></tr>
+<tr class="codeline" data-linenumber="230"><td class="num" id="LN230">230</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="231"><td class="num" id="LN231">231</td><td class="line"> pattern = g_strdup_printf (<span class='string_literal'>"%s.%s.*"</span>, prefix, g_get_user_name ());</td></tr>
+<tr class="codeline" data-linenumber="232"><td class="num" id="LN232">232</td><td class="line"> tmpdir = g_get_tmp_dir ();</td></tr>
+<tr class="codeline" data-linenumber="233"><td class="num" id="LN233">233</td><td class="line"> filename = find_file_with_pattern (tmpdir, pattern);</td></tr>
+<tr class="codeline" data-linenumber="234"><td class="num" id="LN234">234</td><td class="line"> <span class='keyword'>if</span> (filename == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="235"><td class="num" id="LN235">235</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="236"><td class="num" id="LN236">236</td><td class="line"> newfile = g_strdup_printf (<span class='string_literal'>"%s.%s.%u"</span>, prefix,</td></tr>
+<tr class="codeline" data-linenumber="237"><td class="num" id="LN237">237</td><td class="line"> g_get_user_name (), g_random_int ());</td></tr>
+<tr class="codeline" data-linenumber="238"><td class="num" id="LN238">238</td><td class="line"> path = g_build_filename (tmpdir, newfile, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="239"><td class="num" id="LN239">239</td><td class="line"> g_free (newfile);</td></tr>
+<tr class="codeline" data-linenumber="240"><td class="num" id="LN240">240</td><td class="line"> } <span class='keyword'>else</span> {</td></tr>
+<tr class="codeline" data-linenumber="241"><td class="num" id="LN241">241</td><td class="line"> path = g_build_filename (tmpdir, filename, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="242"><td class="num" id="LN242">242</td><td class="line"> g_free (filename);</td></tr>
+<tr class="codeline" data-linenumber="243"><td class="num" id="LN243">243</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="244"><td class="num" id="LN244">244</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="245"><td class="num" id="LN245">245</td><td class="line"> g_free (pattern);</td></tr>
+<tr class="codeline" data-linenumber="246"><td class="num" id="LN246">246</td><td class="line"> <span class='keyword'>return</span> path;</td></tr>
+<tr class="codeline" data-linenumber="247"><td class="num" id="LN247">247</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="248"><td class="num" id="LN248">248</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="249"><td class="num" id="LN249">249</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="250"><td class="num" id="LN250">250</td><td class="line">try_server (BaconMessageConnection *conn)</td></tr>
+<tr class="codeline" data-linenumber="251"><td class="num" id="LN251">251</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="252"><td class="num" id="LN252">252</td><td class="line"> <span class='keyword'>struct</span> sockaddr_un uaddr;</td></tr>
+<tr class="codeline" data-linenumber="253"><td class="num" id="LN253">253</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="254"><td class="num" id="LN254">254</td><td class="line"> uaddr.sun_family = <span class='macro'>AF_UNIX<span class='macro_popup'>1</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="255"><td class="num" id="LN255">255</td><td class="line"> strncpy (uaddr.sun_path, conn-&gt;path,</td></tr>
+<tr class="codeline" data-linenumber="256"><td class="num" id="LN256">256</td><td class="line"> <span class='macro'>MIN (strlen(conn-&gt;path)+1, UNIX_PATH_MAX)<span class='macro_popup'>(((strlen(conn-&gt;path)+1) &lt; (108)) ? (strlen(conn-&gt;path<br>)+1) : (108))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="257"><td class="num" id="LN257">257</td><td class="line"> conn-&gt;fd = socket (<span class='macro'>PF_UNIX<span class='macro_popup'>1</span></span>, <span class='macro'>SOCK_STREAM<span class='macro_popup'>SOCK_STREAM</span></span>, 0);</td></tr>
+<tr class="codeline" data-linenumber="258"><td class="num" id="LN258">258</td><td class="line"> <span class='keyword'>if</span> (bind (conn-&gt;fd, (<span class='keyword'>struct</span> sockaddr *) &amp;uaddr, <span class='keyword'>sizeof</span> (uaddr)) == -1)</td></tr>
+<tr class="codeline" data-linenumber="259"><td class="num" id="LN259">259</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="260"><td class="num" id="LN260">260</td><td class="line"> conn-&gt;fd = -1;</td></tr>
+<tr class="codeline" data-linenumber="261"><td class="num" id="LN261">261</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="262"><td class="num" id="LN262">262</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="263"><td class="num" id="LN263">263</td><td class="line"> listen (conn-&gt;fd, 5);</td></tr>
+<tr class="codeline" data-linenumber="264"><td class="num" id="LN264">264</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="265"><td class="num" id="LN265">265</td><td class="line"> <span class='keyword'>if</span> (!setup_connection (conn))</td></tr>
+<tr class="codeline" data-linenumber="266"><td class="num" id="LN266">266</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="267"><td class="num" id="LN267">267</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="268"><td class="num" id="LN268">268</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="269"><td class="num" id="LN269">269</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="270"><td class="num" id="LN270">270</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="271"><td class="num" id="LN271">271</td><td class="line">try_client (BaconMessageConnection *conn)</td></tr>
+<tr class="codeline" data-linenumber="272"><td class="num" id="LN272">272</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="273"><td class="num" id="LN273">273</td><td class="line"> <span class='keyword'>struct</span> sockaddr_un uaddr;</td></tr>
+<tr class="codeline" data-linenumber="274"><td class="num" id="LN274">274</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="275"><td class="num" id="LN275">275</td><td class="line"> uaddr.sun_family = <span class='macro'>AF_UNIX<span class='macro_popup'>1</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="276"><td class="num" id="LN276">276</td><td class="line"> strncpy (uaddr.sun_path, conn-&gt;path,</td></tr>
+<tr class="codeline" data-linenumber="277"><td class="num" id="LN277">277</td><td class="line"> <span class='macro'>MIN(strlen(conn-&gt;path)+1, UNIX_PATH_MAX)<span class='macro_popup'>(((strlen(conn-&gt;path)+1) &lt; (108)) ? (strlen(conn-&gt;path<br>)+1) : (108))</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="278"><td class="num" id="LN278">278</td><td class="line"> conn-&gt;fd = socket (<span class='macro'>PF_UNIX<span class='macro_popup'>1</span></span>, <span class='macro'>SOCK_STREAM<span class='macro_popup'>SOCK_STREAM</span></span>, 0);</td></tr>
+<tr class="codeline" data-linenumber="279"><td class="num" id="LN279">279</td><td class="line"> <span class='keyword'>if</span> (connect (conn-&gt;fd, (<span class='keyword'>struct</span> sockaddr *) &amp;uaddr,</td></tr>
+<tr class="codeline" data-linenumber="280"><td class="num" id="LN280">280</td><td class="line"> <span class='keyword'>sizeof</span> (uaddr)) == -1)</td></tr>
+<tr class="codeline" data-linenumber="281"><td class="num" id="LN281">281</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="282"><td class="num" id="LN282">282</td><td class="line"> conn-&gt;fd = -1;</td></tr>
+<tr class="codeline" data-linenumber="283"><td class="num" id="LN283">283</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="284"><td class="num" id="LN284">284</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="285"><td class="num" id="LN285">285</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="286"><td class="num" id="LN286">286</td><td class="line"> <span class='keyword'>return</span> setup_connection (conn);</td></tr>
+<tr class="codeline" data-linenumber="287"><td class="num" id="LN287">287</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="288"><td class="num" id="LN288">288</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="289"><td class="num" id="LN289">289</td><td class="line">BaconMessageConnection *</td></tr>
+<tr class="codeline" data-linenumber="290"><td class="num" id="LN290">290</td><td class="line">bacon_message_connection_new (<span class='keyword'>const</span> <span class='keyword'>char</span> *prefix)</td></tr>
+<tr class="codeline" data-linenumber="291"><td class="num" id="LN291">291</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="292"><td class="num" id="LN292">292</td><td class="line"> BaconMessageConnection *conn;</td></tr>
+<tr class="codeline" data-linenumber="293"><td class="num" id="LN293">293</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="294"><td class="num" id="LN294">294</td><td class="line"> <span class='macro'>g_return_val_if_fail (prefix != NULL, NULL)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_19<br>; if (prefix != ((void*)0)) _g_boolean_var_19 = 1; else _g_boolean_var_19<br> = 0; _g_boolean_var_19; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "prefix != NULL")<br>; return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="295"><td class="num" id="LN295">295</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="296"><td class="num" id="LN296">296</td><td class="line"> conn = <span class='macro'>g_new0 (BaconMessageConnection, 1)<span class='macro_popup'>(BaconMessageConnection *) (__extension__ ({ gsize __n = (gsize<br>) (1); gsize __s = sizeof (BaconMessageConnection); gpointer __p<br>; if (__s == 1) __p = g_malloc0 (__n); else if (__builtin_constant_p<br> (__n) &amp;&amp; (__s == 0 || __n &lt;= (9223372036854775807L<br> *2UL+1UL) / __s)) __p = g_malloc0 (__n * __s); else __p = g_malloc0_n<br> (__n, __s); __p; }))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="297"><td class="num" id="LN297">297</td><td class="line"> conn-&gt;path = socket_filename (prefix);</td></tr>
+<tr class="codeline" data-linenumber="298"><td class="num" id="LN298">298</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="299"><td class="num" id="LN299">299</td><td class="line"> <span class='keyword'>if</span> (test_is_socket (conn-&gt;path) == <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="300"><td class="num" id="LN300">300</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="301"><td class="num" id="LN301">301</td><td class="line"> <span class='keyword'>if</span> (!try_server (conn))</td></tr>
+<tr class="codeline" data-linenumber="302"><td class="num" id="LN302">302</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="303"><td class="num" id="LN303">303</td><td class="line"> bacon_message_connection_free (conn);</td></tr>
+<tr class="codeline" data-linenumber="304"><td class="num" id="LN304">304</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="305"><td class="num" id="LN305">305</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="306"><td class="num" id="LN306">306</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="307"><td class="num" id="LN307">307</td><td class="line"> conn-&gt;is_server = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="308"><td class="num" id="LN308">308</td><td class="line"> <span class='keyword'>return</span> conn;</td></tr>
+<tr class="codeline" data-linenumber="309"><td class="num" id="LN309">309</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="310"><td class="num" id="LN310">310</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="311"><td class="num" id="LN311">311</td><td class="line"> <span class='keyword'>if</span> (try_client (conn) == <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="312"><td class="num" id="LN312">312</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="313"><td class="num" id="LN313">313</td><td class="line"> unlink (conn-&gt;path);</td></tr>
+<tr class="codeline" data-linenumber="314"><td class="num" id="LN314">314</td><td class="line"> try_server (conn);</td></tr>
+<tr class="codeline" data-linenumber="315"><td class="num" id="LN315">315</td><td class="line"> <span class='keyword'>if</span> (conn-&gt;fd == -1)</td></tr>
+<tr class="codeline" data-linenumber="316"><td class="num" id="LN316">316</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="317"><td class="num" id="LN317">317</td><td class="line"> bacon_message_connection_free (conn);</td></tr>
+<tr class="codeline" data-linenumber="318"><td class="num" id="LN318">318</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="319"><td class="num" id="LN319">319</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="320"><td class="num" id="LN320">320</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="321"><td class="num" id="LN321">321</td><td class="line"> conn-&gt;is_server = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="322"><td class="num" id="LN322">322</td><td class="line"> <span class='keyword'>return</span> conn;</td></tr>
+<tr class="codeline" data-linenumber="323"><td class="num" id="LN323">323</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="324"><td class="num" id="LN324">324</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="325"><td class="num" id="LN325">325</td><td class="line"> conn-&gt;is_server = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="326"><td class="num" id="LN326">326</td><td class="line"> <span class='keyword'>return</span> conn;</td></tr>
+<tr class="codeline" data-linenumber="327"><td class="num" id="LN327">327</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="328"><td class="num" id="LN328">328</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="329"><td class="num" id="LN329">329</td><td class="line"><span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="330"><td class="num" id="LN330">330</td><td class="line">bacon_message_connection_free (BaconMessageConnection *conn)</td></tr>
+<tr class="codeline" data-linenumber="331"><td class="num" id="LN331">331</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="332"><td class="num" id="LN332">332</td><td class="line"> GSList *child_conn;</td></tr>
+<tr class="codeline" data-linenumber="333"><td class="num" id="LN333">333</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="334"><td class="num" id="LN334">334</td><td class="line"> <span class='macro'>g_return_if_fail (conn != NULL)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_20<br>; if (conn != ((void*)0)) _g_boolean_var_20 = 1; else _g_boolean_var_20<br> = 0; _g_boolean_var_20; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "conn != NULL"); return<br>; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="335"><td class="num" id="LN335">335</td><td class="line"> <span class='comment'>/* Only servers can accept other connections */</span></td></tr>
+<tr class="codeline" data-linenumber="336"><td class="num" id="LN336">336</td><td class="line"> <span class='macro'>g_return_if_fail (conn-&gt;is_server != FALSE ||<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_21<br>; if (conn-&gt;is_server != (0) || conn-&gt;accepted_connections<br> == ((void*)0)) _g_boolean_var_21 = 1; else _g_boolean_var_21<br> = 0; _g_boolean_var_21; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "conn-&gt;is_server != FALSE || conn-&gt;accepted_connections == NULL"<br>); return; } } while (0)</span></span></td></tr>
+<tr class="codeline" data-linenumber="337"><td class="num" id="LN337">337</td><td class="line"> <span class='macro'>conn-&gt;accepted_connections == NULL)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_21<br>; if (conn-&gt;is_server != (0) || conn-&gt;accepted_connections<br> == ((void*)0)) _g_boolean_var_21 = 1; else _g_boolean_var_21<br> = 0; _g_boolean_var_21; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "conn-&gt;is_server != FALSE || conn-&gt;accepted_connections == NULL"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="338"><td class="num" id="LN338">338</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="339"><td class="num" id="LN339">339</td><td class="line"> child_conn = conn-&gt;accepted_connections;</td></tr>
+<tr class="codeline" data-linenumber="340"><td class="num" id="LN340">340</td><td class="line"> <span class='keyword'>while</span> (child_conn != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="341"><td class="num" id="LN341">341</td><td class="line"> bacon_message_connection_free (child_conn-&gt;data);</td></tr>
+<tr class="codeline" data-linenumber="342"><td class="num" id="LN342">342</td><td class="line"> child_conn = <span class='macro'>g_slist_next (child_conn)<span class='macro_popup'>((child_conn) ? (((GSList *)(child_conn))-&gt;next) : ((void*<br>)0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="343"><td class="num" id="LN343">343</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="344"><td class="num" id="LN344">344</td><td class="line"> g_slist_free (conn-&gt;accepted_connections);</td></tr>
+<tr class="codeline" data-linenumber="345"><td class="num" id="LN345">345</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="346"><td class="num" id="LN346">346</td><td class="line"> <span class='keyword'>if</span> (conn-&gt;conn_id) {</td></tr>
+<tr class="codeline" data-linenumber="347"><td class="num" id="LN347">347</td><td class="line"> g_source_remove (conn-&gt;conn_id);</td></tr>
+<tr class="codeline" data-linenumber="348"><td class="num" id="LN348">348</td><td class="line"> conn-&gt;conn_id = 0;</td></tr>
+<tr class="codeline" data-linenumber="349"><td class="num" id="LN349">349</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="350"><td class="num" id="LN350">350</td><td class="line"> <span class='keyword'>if</span> (conn-&gt;chan) {</td></tr>
+<tr class="codeline" data-linenumber="351"><td class="num" id="LN351">351</td><td class="line"> g_io_channel_shutdown (conn-&gt;chan, <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="352"><td class="num" id="LN352">352</td><td class="line"> g_io_channel_unref (conn-&gt;chan);</td></tr>
+<tr class="codeline" data-linenumber="353"><td class="num" id="LN353">353</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="354"><td class="num" id="LN354">354</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="355"><td class="num" id="LN355">355</td><td class="line"> <span class='keyword'>if</span> (conn-&gt;is_server != <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>) {</td></tr>
+<tr class="codeline" data-linenumber="356"><td class="num" id="LN356">356</td><td class="line"> unlink (conn-&gt;path);</td></tr>
+<tr class="codeline" data-linenumber="357"><td class="num" id="LN357">357</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="358"><td class="num" id="LN358">358</td><td class="line"> <span class='keyword'>if</span> (conn-&gt;fd != -1) {</td></tr>
+<tr class="codeline" data-linenumber="359"><td class="num" id="LN359">359</td><td class="line"> close (conn-&gt;fd);</td></tr>
+<tr class="codeline" data-linenumber="360"><td class="num" id="LN360">360</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="361"><td class="num" id="LN361">361</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="362"><td class="num" id="LN362">362</td><td class="line"> g_free (conn-&gt;path);</td></tr>
+<tr class="codeline" data-linenumber="363"><td class="num" id="LN363">363</td><td class="line"> g_free (conn);</td></tr>
+<tr class="codeline" data-linenumber="364"><td class="num" id="LN364">364</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="365"><td class="num" id="LN365">365</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="366"><td class="num" id="LN366">366</td><td class="line"><span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="367"><td class="num" id="LN367">367</td><td class="line">bacon_message_connection_set_callback (BaconMessageConnection *conn,</td></tr>
+<tr class="codeline" data-linenumber="368"><td class="num" id="LN368">368</td><td class="line"> BaconMessageReceivedFunc func,</td></tr>
+<tr class="codeline" data-linenumber="369"><td class="num" id="LN369">369</td><td class="line"> gpointer user_data)</td></tr>
+<tr class="codeline" data-linenumber="370"><td class="num" id="LN370">370</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="371"><td class="num" id="LN371">371</td><td class="line"> <span class='macro'>g_return_if_fail (conn != NULL)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_22<br>; if (conn != ((void*)0)) _g_boolean_var_22 = 1; else _g_boolean_var_22<br> = 0; _g_boolean_var_22; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "conn != NULL"); return<br>; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="372"><td class="num" id="LN372">372</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="373"><td class="num" id="LN373">373</td><td class="line"> conn-&gt;func = func;</td></tr>
+<tr class="codeline" data-linenumber="374"><td class="num" id="LN374">374</td><td class="line"> conn-&gt;data = user_data;</td></tr>
+<tr class="codeline" data-linenumber="375"><td class="num" id="LN375">375</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="376"><td class="num" id="LN376">376</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="377"><td class="num" id="LN377">377</td><td class="line"><span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="378"><td class="num" id="LN378">378</td><td class="line">bacon_message_connection_send (BaconMessageConnection *conn,</td></tr>
+<tr class="codeline" data-linenumber="379"><td class="num" id="LN379">379</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *message)</td></tr>
+<tr class="codeline" data-linenumber="380"><td class="num" id="LN380">380</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="381"><td class="num" id="LN381">381</td><td class="line"> <span class='macro'>g_return_if_fail (conn != NULL)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_23<br>; if (conn != ((void*)0)) _g_boolean_var_23 = 1; else _g_boolean_var_23<br> = 0; _g_boolean_var_23; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "conn != NULL"); return<br>; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="382"><td class="num" id="LN382">382</td><td class="line"> <span class='macro'>g_return_if_fail (message != NULL)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_24<br>; if (message != ((void*)0)) _g_boolean_var_24 = 1; else _g_boolean_var_24<br> = 0; _g_boolean_var_24; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "message != NULL"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="383"><td class="num" id="LN383">383</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="384"><td class="num" id="LN384">384</td><td class="line"> g_io_channel_write_chars (conn-&gt;chan, message, strlen (message),</td></tr>
+<tr class="codeline" data-linenumber="385"><td class="num" id="LN385">385</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="386"><td class="num" id="LN386">386</td><td class="line"> g_io_channel_write_chars (conn-&gt;chan, <span class='string_literal'>"\n"</span>, 1, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="387"><td class="num" id="LN387">387</td><td class="line"> g_io_channel_flush (conn-&gt;chan, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="388"><td class="num" id="LN388">388</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="389"><td class="num" id="LN389">389</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="390"><td class="num" id="LN390">390</td><td class="line">gboolean</td></tr>
+<tr class="codeline" data-linenumber="391"><td class="num" id="LN391">391</td><td class="line">bacon_message_connection_get_is_server (BaconMessageConnection *conn)</td></tr>
+<tr class="codeline" data-linenumber="392"><td class="num" id="LN392">392</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="393"><td class="num" id="LN393">393</td><td class="line"> <span class='macro'>g_return_val_if_fail (conn != NULL, FALSE)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_25<br>; if (conn != ((void*)0)) _g_boolean_var_25 = 1; else _g_boolean_var_25<br> = 0; _g_boolean_var_25; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "conn != NULL"); return<br> ((0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="394"><td class="num" id="LN394">394</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="395"><td class="num" id="LN395">395</td><td class="line"> <span class='keyword'>return</span> conn-&gt;is_server;</td></tr>
+<tr class="codeline" data-linenumber="396"><td class="num" id="LN396">396</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="397"><td class="num" id="LN397">397</td><td class="line"> </td></tr>
+</table></body></html>
diff --git a/2023-05-28-030536-6612-1@f643dde74cbd_master/report-f2c91f.html b/2023-05-28-030536-6612-1@f643dde74cbd_master/report-f2c91f.html
new file mode 100644
index 00000000..8368890b
--- /dev/null
+++ b/2023-05-28-030536-6612-1@f643dde74cbd_master/report-f2c91f.html
@@ -0,0 +1,1120 @@
+<!doctype html>
+<html>
+<head>
+<title>pluma-spell-checker-language.c</title>
+
+<style type="text/css">
+body { color:#000000; background-color:#ffffff }
+body { font-family:Helvetica, sans-serif; font-size:10pt }
+h1 { font-size:14pt }
+.FileName { margin-top: 5px; margin-bottom: 5px; display: inline; }
+.FileNav { margin-left: 5px; margin-right: 5px; display: inline; }
+.FileNav a { text-decoration:none; font-size: larger; }
+.divider { margin-top: 30px; margin-bottom: 30px; height: 15px; }
+.divider { background-color: gray; }
+.code { border-collapse:collapse; width:100%; }
+.code { font-family: "Monospace", monospace; font-size:10pt }
+.code { line-height: 1.2em }
+.comment { color: green; font-style: oblique }
+.keyword { color: blue }
+.string_literal { color: red }
+.directive { color: darkmagenta }
+
+/* Macros and variables could have pop-up notes hidden by default.
+ - Macro pop-up: expansion of the macro
+ - Variable pop-up: value (table) of the variable */
+.macro_popup, .variable_popup { display: none; }
+
+/* Pop-up appears on mouse-hover event. */
+.macro:hover .macro_popup, .variable:hover .variable_popup {
+ display: block;
+ padding: 2px;
+ -webkit-border-radius:5px;
+ -webkit-box-shadow:1px 1px 7px #000;
+ border-radius:5px;
+ box-shadow:1px 1px 7px #000;
+ position: absolute;
+ top: -1em;
+ left:10em;
+ z-index: 1
+}
+
+.macro_popup {
+ border: 2px solid red;
+ background-color:#FFF0F0;
+ font-weight: normal;
+}
+
+.variable_popup {
+ border: 2px solid blue;
+ background-color:#F0F0FF;
+ font-weight: bold;
+ font-family: Helvetica, sans-serif;
+ font-size: 9pt;
+}
+
+/* Pop-up notes needs a relative position as a base where they pops up. */
+.macro, .variable {
+ background-color: PaleGoldenRod;
+ position: relative;
+}
+.macro { color: DarkMagenta; }
+
+#tooltiphint {
+ position: fixed;
+ width: 50em;
+ margin-left: -25em;
+ left: 50%;
+ padding: 10px;
+ border: 1px solid #b0b0b0;
+ border-radius: 2px;
+ box-shadow: 1px 1px 7px black;
+ background-color: #c0c0c0;
+ z-index: 2;
+}
+
+.num { width:2.5em; padding-right:2ex; background-color:#eeeeee }
+.num { text-align:right; font-size:8pt }
+.num { color:#444444 }
+.line { padding-left: 1ex; border-left: 3px solid #ccc }
+.line { white-space: pre }
+.msg { -webkit-box-shadow:1px 1px 7px #000 }
+.msg { box-shadow:1px 1px 7px #000 }
+.msg { -webkit-border-radius:5px }
+.msg { border-radius:5px }
+.msg { font-family:Helvetica, sans-serif; font-size:8pt }
+.msg { float:left }
+.msg { position:relative }
+.msg { padding:0.25em 1ex 0.25em 1ex }
+.msg { margin-top:10px; margin-bottom:10px }
+.msg { font-weight:bold }
+.msg { max-width:60em; word-wrap: break-word; white-space: pre-wrap }
+.msgT { padding:0x; spacing:0x }
+.msgEvent { background-color:#fff8b4; color:#000000 }
+.msgControl { background-color:#bbbbbb; color:#000000 }
+.msgNote { background-color:#ddeeff; color:#000000 }
+.mrange { background-color:#dfddf3 }
+.mrange { border-bottom:1px solid #6F9DBE }
+.PathIndex { font-weight: bold; padding:0px 5px; margin-right:5px; }
+.PathIndex { -webkit-border-radius:8px }
+.PathIndex { border-radius:8px }
+.PathIndexEvent { background-color:#bfba87 }
+.PathIndexControl { background-color:#8c8c8c }
+.PathIndexPopUp { background-color: #879abc; }
+.PathNav a { text-decoration:none; font-size: larger }
+.CodeInsertionHint { font-weight: bold; background-color: #10dd10 }
+.CodeRemovalHint { background-color:#de1010 }
+.CodeRemovalHint { border-bottom:1px solid #6F9DBE }
+.msg.selected{ background-color:orange !important; }
+
+table.simpletable {
+ padding: 5px;
+ font-size:12pt;
+ margin:20px;
+ border-collapse: collapse; border-spacing: 0px;
+}
+td.rowname {
+ text-align: right;
+ vertical-align: top;
+ font-weight: bold;
+ color:#444444;
+ padding-right:2ex;
+}
+
+/* Hidden text. */
+input.spoilerhider + label {
+ cursor: pointer;
+ text-decoration: underline;
+ display: block;
+}
+input.spoilerhider {
+ display: none;
+}
+input.spoilerhider ~ .spoiler {
+ overflow: hidden;
+ margin: 10px auto 0;
+ height: 0;
+ opacity: 0;
+}
+input.spoilerhider:checked + label + .spoiler{
+ height: auto;
+ opacity: 1;
+}
+</style>
+</head>
+<body>
+<!-- BUGDESC true and false branches are identical -->
+
+<!-- BUGTYPE Identical branches -->
+
+<!-- BUGCATEGORY Logic error -->
+
+<!-- BUGFILE /rootdir/plugins/spell/pluma-spell-checker-language.c -->
+
+<!-- FILENAME pluma-spell-checker-language.c -->
+
+<!-- FUNCTIONNAME load_iso_entries -->
+
+<!-- ISSUEHASHCONTENTOFLINEINCONTEXT f2c91fa863df3b185c5741e63f73553e -->
+
+<!-- BUGLINE 195 -->
+
+<!-- BUGCOLUMN 8 -->
+
+<!-- BUGPATHLENGTH 1 -->
+
+<!-- BUGMETAEND -->
+<!-- REPORTHEADER -->
+<h3>Bug Summary</h3>
+<table class="simpletable">
+<tr><td class="rowname">File:</td><td>plugins/spell/pluma-spell-checker-language.c</td></tr>
+<tr><td class="rowname">Warning:</td><td><a href="#EndPath">line 195, column 8</a><br />true and false branches are identical</td></tr>
+
+</table>
+<!-- REPORTSUMMARYEXTRA -->
+<h3>Annotated Source Code</h3>
+<p>Press <a href="#" onclick="toggleHelp(); return false;">'?'</a>
+ to see keyboard shortcuts</p>
+<input type="checkbox" class="spoilerhider" id="showinvocation" />
+<label for="showinvocation" >Show analyzer invocation</label>
+<div class="spoiler">clang -cc1 -cc1 -triple x86_64-redhat-linux-gnu -analyze -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name pluma-spell-checker-language.c -analyzer-checker=core -analyzer-checker=apiModeling -analyzer-checker=unix -analyzer-checker=deadcode -analyzer-checker=security.insecureAPI.UncheckedReturn -analyzer-checker=security.insecureAPI.getpw -analyzer-checker=security.insecureAPI.gets -analyzer-checker=security.insecureAPI.mktemp -analyzer-checker=security.insecureAPI.mkstemp -analyzer-checker=security.insecureAPI.vfork -analyzer-checker=nullability.NullPassedToNonnull -analyzer-checker=nullability.NullReturnedFromNonnull -analyzer-output plist -w -setup-static-analyzer -mrelocation-model pic -pic-level 2 -fhalf-no-semantic-interposition -mframe-pointer=none -fmath-errno -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=2 -target-cpu x86-64 -tune-cpu generic -debugger-tuning=gdb -fcoverage-compilation-dir=/rootdir/plugins/spell -resource-dir /usr/lib64/clang/16 -D HAVE_CONFIG_H -I . -I ../.. -I ../.. -I /usr/include/libxml2 -I /usr/include/glib-2.0 -I /usr/lib64/glib-2.0/include -I /usr/include/sysprof-4 -I /usr/include/libmount -I /usr/include/blkid -I /usr/include/gtk-3.0 -I /usr/include/pango-1.0 -I /usr/include/harfbuzz -I /usr/include/freetype2 -I /usr/include/libpng16 -I /usr/include/fribidi -I /usr/include/cairo -I /usr/include/pixman-1 -I /usr/include/gdk-pixbuf-2.0 -I /usr/include/gio-unix-2.0 -I /usr/include/cloudproviders -I /usr/include/atk-1.0 -I /usr/include/at-spi2-atk/2.0 -I /usr/include/at-spi-2.0 -I /usr/include/dbus-1.0 -I /usr/lib64/dbus-1.0/include -I /usr/include/gtksourceview-4 -I /usr/include/libpeas-1.0 -I /usr/include/gobject-introspection-1.0 -I /usr/include/enchant-2 -I /usr/include/glib-2.0 -I /usr/lib64/glib-2.0/include -I /usr/include/sysprof-4 -D PIC -internal-isystem /usr/lib64/clang/16/include -internal-isystem /usr/local/include -internal-isystem /usr/bin/../lib/gcc/x86_64-redhat-linux/13/../../../../x86_64-redhat-linux/include -internal-externc-isystem /include -internal-externc-isystem /usr/include -O2 -Wno-unused-parameter -fdebug-compilation-dir=/rootdir/plugins/spell -ferror-limit 19 -fgnuc-version=4.2.1 -vectorize-loops -vectorize-slp -analyzer-checker deadcode.DeadStores -analyzer-checker alpha.deadcode.UnreachableCode -analyzer-checker alpha.core.CastSize -analyzer-checker alpha.core.CastToStruct -analyzer-checker alpha.core.IdenticalExpr -analyzer-checker alpha.core.SizeofPtr -analyzer-checker alpha.security.ArrayBoundV2 -analyzer-checker alpha.security.MallocOverflow -analyzer-checker alpha.security.ReturnPtrRange -analyzer-checker alpha.unix.SimpleStream -analyzer-checker alpha.unix.cstring.BufferOverlap -analyzer-checker alpha.unix.cstring.NotNullTerminated -analyzer-checker alpha.unix.cstring.OutOfBounds -analyzer-checker alpha.core.FixedAddr -analyzer-checker security.insecureAPI.strcpy -analyzer-output=html -faddrsig -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o /rootdir/html-report/2023-05-28-030536-6612-1 -x c pluma-spell-checker-language.c
+</div>
+<div id='tooltiphint' hidden="true">
+ <p>Keyboard shortcuts: </p>
+ <ul>
+ <li>Use 'j/k' keys for keyboard navigation</li>
+ <li>Use 'Shift+S' to show/hide relevant lines</li>
+ <li>Use '?' to toggle this window</li>
+ </ul>
+ <a href="#" onclick="toggleHelp(); return false;">Close</a>
+</div>
+<script type='text/javascript'>
+var relevant_lines = {"1": {"195": 1}};
+
+var filterCounterexample = function (hide) {
+ var tables = document.getElementsByClassName("code");
+ for (var t=0; t<tables.length; t++) {
+ var table = tables[t];
+ var file_id = table.getAttribute("data-fileid");
+ var lines_in_fid = relevant_lines[file_id];
+ if (!lines_in_fid) {
+ lines_in_fid = {};
+ }
+ var lines = table.getElementsByClassName("codeline");
+ for (var i=0; i<lines.length; i++) {
+ var el = lines[i];
+ var lineNo = el.getAttribute("data-linenumber");
+ if (!lines_in_fid[lineNo]) {
+ if (hide) {
+ el.setAttribute("hidden", "");
+ } else {
+ el.removeAttribute("hidden");
+ }
+ }
+ }
+ }
+}
+
+window.addEventListener("keydown", function (event) {
+ if (event.defaultPrevented) {
+ return;
+ }
+ // SHIFT + S
+ if (event.shiftKey && event.keyCode == 83) {
+ var checked = document.getElementsByName("showCounterexample")[0].checked;
+ filterCounterexample(!checked);
+ document.getElementsByName("showCounterexample")[0].click();
+ } else {
+ return;
+ }
+ event.preventDefault();
+}, true);
+
+document.addEventListener("DOMContentLoaded", function() {
+ document.querySelector('input[name="showCounterexample"]').onchange=
+ function (event) {
+ filterCounterexample(this.checked);
+ };
+});
+</script>
+
+<form>
+ <input type="checkbox" name="showCounterexample" id="showCounterexample" />
+ <label for="showCounterexample">
+ Show only relevant lines
+ </label>
+ <input type="checkbox" name="showArrows"
+ id="showArrows" style="margin-left: 10px" />
+ <label for="showArrows">
+ Show control flow arrows
+ </label>
+</form>
+
+<script type='text/javascript'>
+// Return range of numbers from a range [lower, upper).
+function range(lower, upper) {
+ var array = [];
+ for (var i = lower; i <= upper; ++i) {
+ array.push(i);
+ }
+ return array;
+}
+
+var getRelatedArrowIndices = function(pathId) {
+ // HTML numeration of events is a bit different than it is in the path.
+ // Everything is rotated one step to the right, so the last element
+ // (error diagnostic) has index 0.
+ if (pathId == 0) {
+ // arrowIndices has at least 2 elements
+ pathId = arrowIndices.length - 1;
+ }
+
+ return range(arrowIndices[pathId], arrowIndices[pathId - 1]);
+}
+
+var highlightArrowsForSelectedEvent = function() {
+ const selectedNum = findNum();
+ const arrowIndicesToHighlight = getRelatedArrowIndices(selectedNum);
+ arrowIndicesToHighlight.forEach((index) => {
+ var arrow = document.querySelector("#arrow" + index);
+ if(arrow) {
+ classListAdd(arrow, "selected")
+ }
+ });
+}
+
+var getAbsoluteBoundingRect = function(element) {
+ const relative = element.getBoundingClientRect();
+ return {
+ left: relative.left + window.pageXOffset,
+ right: relative.right + window.pageXOffset,
+ top: relative.top + window.pageYOffset,
+ bottom: relative.bottom + window.pageYOffset,
+ height: relative.height,
+ width: relative.width
+ };
+}
+
+var drawArrow = function(index) {
+ // This function is based on the great answer from SO:
+ // https://stackoverflow.com/a/39575674/11582326
+ var start = document.querySelector("#start" + index);
+ var end = document.querySelector("#end" + index);
+ var arrow = document.querySelector("#arrow" + index);
+
+ var startRect = getAbsoluteBoundingRect(start);
+ var endRect = getAbsoluteBoundingRect(end);
+
+ // It is an arrow from a token to itself, no need to visualize it.
+ if (startRect.top == endRect.top &&
+ startRect.left == endRect.left)
+ return;
+
+ // Each arrow is a very simple Bézier curve, with two nodes and
+ // two handles. So, we need to calculate four points in the window:
+ // * start node
+ var posStart = { x: 0, y: 0 };
+ // * end node
+ var posEnd = { x: 0, y: 0 };
+ // * handle for the start node
+ var startHandle = { x: 0, y: 0 };
+ // * handle for the end node
+ var endHandle = { x: 0, y: 0 };
+ // One can visualize it as follows:
+ //
+ // start handle
+ // /
+ // X"""_.-""""X
+ // .' \
+ // / start node
+ // |
+ // |
+ // | end node
+ // \ /
+ // `->X
+ // X-'
+ // \
+ // end handle
+ //
+ // NOTE: (0, 0) is the top left corner of the window.
+
+ // We have 3 similar, but still different scenarios to cover:
+ //
+ // 1. Two tokens on different lines.
+ // -xxx
+ // /
+ // \
+ // -> xxx
+ // In this situation, we draw arrow on the left curving to the left.
+ // 2. Two tokens on the same line, and the destination is on the right.
+ // ____
+ // / \
+ // / V
+ // xxx xxx
+ // In this situation, we draw arrow above curving upwards.
+ // 3. Two tokens on the same line, and the destination is on the left.
+ // xxx xxx
+ // ^ /
+ // \____/
+ // In this situation, we draw arrow below curving downwards.
+ const onDifferentLines = startRect.top <= endRect.top - 5 ||
+ startRect.top >= endRect.top + 5;
+ const leftToRight = startRect.left < endRect.left;
+
+ // NOTE: various magic constants are chosen empirically for
+ // better positioning and look
+ if (onDifferentLines) {
+ // Case #1
+ const topToBottom = startRect.top < endRect.top;
+ posStart.x = startRect.left - 1;
+ // We don't want to start it at the top left corner of the token,
+ // it doesn't feel like this is where the arrow comes from.
+ // For this reason, we start it in the middle of the left side
+ // of the token.
+ posStart.y = startRect.top + startRect.height / 2;
+
+ // End node has arrow head and we give it a bit more space.
+ posEnd.x = endRect.left - 4;
+ posEnd.y = endRect.top;
+
+ // Utility object with x and y offsets for handles.
+ var curvature = {
+ // We want bottom-to-top arrow to curve a bit more, so it doesn't
+ // overlap much with top-to-bottom curves (much more frequent).
+ x: topToBottom ? 15 : 25,
+ y: Math.min((posEnd.y - posStart.y) / 3, 10)
+ }
+
+ // When destination is on the different line, we can make a
+ // curvier arrow because we have space for it.
+ // So, instead of using
+ //
+ // startHandle.x = posStart.x - curvature.x
+ // endHandle.x = posEnd.x - curvature.x
+ //
+ // We use the leftmost of these two values for both handles.
+ startHandle.x = Math.min(posStart.x, posEnd.x) - curvature.x;
+ endHandle.x = startHandle.x;
+
+ // Curving downwards from the start node...
+ startHandle.y = posStart.y + curvature.y;
+ // ... and upwards from the end node.
+ endHandle.y = posEnd.y - curvature.y;
+
+ } else if (leftToRight) {
+ // Case #2
+ // Starting from the top right corner...
+ posStart.x = startRect.right - 1;
+ posStart.y = startRect.top;
+
+ // ...and ending at the top left corner of the end token.
+ posEnd.x = endRect.left + 1;
+ posEnd.y = endRect.top - 1;
+
+ // Utility object with x and y offsets for handles.
+ var curvature = {
+ x: Math.min((posEnd.x - posStart.x) / 3, 15),
+ y: 5
+ }
+
+ // Curving to the right...
+ startHandle.x = posStart.x + curvature.x;
+ // ... and upwards from the start node.
+ startHandle.y = posStart.y - curvature.y;
+
+ // And to the left...
+ endHandle.x = posEnd.x - curvature.x;
+ // ... and upwards from the end node.
+ endHandle.y = posEnd.y - curvature.y;
+
+ } else {
+ // Case #3
+ // Starting from the bottom right corner...
+ posStart.x = startRect.right;
+ posStart.y = startRect.bottom;
+
+ // ...and ending also at the bottom right corner, but of the end token.
+ posEnd.x = endRect.right - 1;
+ posEnd.y = endRect.bottom + 1;
+
+ // Utility object with x and y offsets for handles.
+ var curvature = {
+ x: Math.min((posStart.x - posEnd.x) / 3, 15),
+ y: 5
+ }
+
+ // Curving to the left...
+ startHandle.x = posStart.x - curvature.x;
+ // ... and downwards from the start node.
+ startHandle.y = posStart.y + curvature.y;
+
+ // And to the right...
+ endHandle.x = posEnd.x + curvature.x;
+ // ... and downwards from the end node.
+ endHandle.y = posEnd.y + curvature.y;
+ }
+
+ // Put it all together into a path.
+ // More information on the format:
+ // https://developer.mozilla.org/en-US/docs/Web/SVG/Tutorial/Paths
+ var pathStr = "M" + posStart.x + "," + posStart.y + " " +
+ "C" + startHandle.x + "," + startHandle.y + " " +
+ endHandle.x + "," + endHandle.y + " " +
+ posEnd.x + "," + posEnd.y;
+
+ arrow.setAttribute("d", pathStr);
+};
+
+var drawArrows = function() {
+ const numOfArrows = document.querySelectorAll("path[id^=arrow]").length;
+ for (var i = 0; i < numOfArrows; ++i) {
+ drawArrow(i);
+ }
+}
+
+var toggleArrows = function(event) {
+ const arrows = document.querySelector("#arrows");
+ if (event.target.checked) {
+ arrows.setAttribute("visibility", "visible");
+ } else {
+ arrows.setAttribute("visibility", "hidden");
+ }
+}
+
+window.addEventListener("resize", drawArrows);
+document.addEventListener("DOMContentLoaded", function() {
+ // Whenever we show invocation, locations change, i.e. we
+ // need to redraw arrows.
+ document
+ .querySelector('input[id="showinvocation"]')
+ .addEventListener("click", drawArrows);
+ // Hiding irrelevant lines also should cause arrow rerender.
+ document
+ .querySelector('input[name="showCounterexample"]')
+ .addEventListener("change", drawArrows);
+ document
+ .querySelector('input[name="showArrows"]')
+ .addEventListener("change", toggleArrows);
+ drawArrows();
+ // Default highlighting for the last event.
+ highlightArrowsForSelectedEvent();
+});
+</script>
+
+<script type='text/javascript'>
+var digitMatcher = new RegExp("[0-9]+");
+
+var querySelectorAllArray = function(selector) {
+ return Array.prototype.slice.call(
+ document.querySelectorAll(selector));
+}
+
+document.addEventListener("DOMContentLoaded", function() {
+ querySelectorAllArray(".PathNav > a").forEach(
+ function(currentValue, currentIndex) {
+ var hrefValue = currentValue.getAttribute("href");
+ currentValue.onclick = function() {
+ scrollTo(document.querySelector(hrefValue));
+ return false;
+ };
+ });
+});
+
+var findNum = function() {
+ var s = document.querySelector(".msg.selected");
+ if (!s || s.id == "EndPath") {
+ return 0;
+ }
+ var out = parseInt(digitMatcher.exec(s.id)[0]);
+ return out;
+};
+
+var classListAdd = function(el, theClass) {
+ if(!el.className.baseVal)
+ el.className += " " + theClass;
+ else
+ el.className.baseVal += " " + theClass;
+};
+
+var classListRemove = function(el, theClass) {
+ var className = (!el.className.baseVal) ?
+ el.className : el.className.baseVal;
+ className = className.replace(" " + theClass, "");
+ if(!el.className.baseVal)
+ el.className = className;
+ else
+ el.className.baseVal = className;
+};
+
+var scrollTo = function(el) {
+ querySelectorAllArray(".selected").forEach(function(s) {
+ classListRemove(s, "selected");
+ });
+ classListAdd(el, "selected");
+ window.scrollBy(0, el.getBoundingClientRect().top -
+ (window.innerHeight / 2));
+ highlightArrowsForSelectedEvent();
+};
+
+var move = function(num, up, numItems) {
+ if (num == 1 && up || num == numItems - 1 && !up) {
+ return 0;
+ } else if (num == 0 && up) {
+ return numItems - 1;
+ } else if (num == 0 && !up) {
+ return 1 % numItems;
+ }
+ return up ? num - 1 : num + 1;
+}
+
+var numToId = function(num) {
+ if (num == 0) {
+ return document.getElementById("EndPath")
+ }
+ return document.getElementById("Path" + num);
+};
+
+var navigateTo = function(up) {
+ var numItems = document.querySelectorAll(
+ ".line > .msgEvent, .line > .msgControl").length;
+ var currentSelected = findNum();
+ var newSelected = move(currentSelected, up, numItems);
+ var newEl = numToId(newSelected, numItems);
+
+ // Scroll element into center.
+ scrollTo(newEl);
+};
+
+window.addEventListener("keydown", function (event) {
+ if (event.defaultPrevented) {
+ return;
+ }
+ // key 'j'
+ if (event.keyCode == 74) {
+ navigateTo(/*up=*/false);
+ // key 'k'
+ } else if (event.keyCode == 75) {
+ navigateTo(/*up=*/true);
+ } else {
+ return;
+ }
+ event.preventDefault();
+}, true);
+</script>
+
+<script type='text/javascript'>
+
+var toggleHelp = function() {
+ var hint = document.querySelector("#tooltiphint");
+ var attributeName = "hidden";
+ if (hint.hasAttribute(attributeName)) {
+ hint.removeAttribute(attributeName);
+ } else {
+ hint.setAttribute("hidden", "true");
+ }
+};
+window.addEventListener("keydown", function (event) {
+ if (event.defaultPrevented) {
+ return;
+ }
+ if (event.key == "?") {
+ toggleHelp();
+ } else {
+ return;
+ }
+ event.preventDefault();
+});
+</script>
+
+<style type="text/css">
+ svg {
+ position:absolute;
+ top:0;
+ left:0;
+ height:100%;
+ width:100%;
+ pointer-events: none;
+ overflow: visible
+ }
+ .arrow {
+ stroke-opacity: 0.2;
+ stroke-width: 1;
+ marker-end: url(#arrowhead);
+ }
+
+ .arrow.selected {
+ stroke-opacity: 0.6;
+ stroke-width: 2;
+ marker-end: url(#arrowheadSelected);
+ }
+
+ .arrowhead {
+ orient: auto;
+ stroke: none;
+ opacity: 0.6;
+ fill: blue;
+ }
+</style>
+<svg xmlns="http://www.w3.org/2000/svg">
+ <defs>
+ <marker id="arrowheadSelected" class="arrowhead" opacity="0.6"
+ viewBox="0 0 10 10" refX="3" refY="5"
+ markerWidth="4" markerHeight="4">
+ <path d="M 0 0 L 10 5 L 0 10 z" />
+ </marker>
+ <marker id="arrowhead" class="arrowhead" opacity="0.2"
+ viewBox="0 0 10 10" refX="3" refY="5"
+ markerWidth="4" markerHeight="4">
+ <path d="M 0 0 L 10 5 L 0 10 z" />
+ </marker>
+ </defs>
+ <g id="arrows" fill="none" stroke="blue" visibility="hidden">
+
+ </g>
+</svg>
+<script type='text/javascript'>
+const arrowIndices = [ 0,0 ]
+</script>
+<table class="code" data-fileid="1">
+<tr class="codeline" data-linenumber="1"><td class="num" id="LN1">1</td><td class="line"><span class='comment'>/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */</span></td></tr>
+<tr class="codeline" data-linenumber="2"><td class="num" id="LN2">2</td><td class="line"><span class='comment'>/*</span></td></tr>
+<tr class="codeline" data-linenumber="3"><td class="num" id="LN3">3</td><td class="line"> <span class='comment'>* pluma-spell-checker-language.c</span></td></tr>
+<tr class="codeline" data-linenumber="4"><td class="num" id="LN4">4</td><td class="line"> <span class='comment'>* This file is part of pluma</span></td></tr>
+<tr class="codeline" data-linenumber="5"><td class="num" id="LN5">5</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="6"><td class="num" id="LN6">6</td><td class="line"> <span class='comment'>* Copyright (C) 2006 Paolo Maggi</span></td></tr>
+<tr class="codeline" data-linenumber="7"><td class="num" id="LN7">7</td><td class="line"> <span class='comment'>* Copyright (C) 2012-2021 MATE Developers</span></td></tr>
+<tr class="codeline" data-linenumber="8"><td class="num" id="LN8">8</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="9"><td class="num" id="LN9">9</td><td class="line"> <span class='comment'>* This program is free software; you can redistribute it and/or modify</span></td></tr>
+<tr class="codeline" data-linenumber="10"><td class="num" id="LN10">10</td><td class="line"> <span class='comment'>* it under the terms of the GNU General Public License as published by</span></td></tr>
+<tr class="codeline" data-linenumber="11"><td class="num" id="LN11">11</td><td class="line"> <span class='comment'>* the Free Software Foundation; either version 2 of the License, or</span></td></tr>
+<tr class="codeline" data-linenumber="12"><td class="num" id="LN12">12</td><td class="line"> <span class='comment'>* (at your option) any later version.</span></td></tr>
+<tr class="codeline" data-linenumber="13"><td class="num" id="LN13">13</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="14"><td class="num" id="LN14">14</td><td class="line"> <span class='comment'>* This program is distributed in the hope that it will be useful,</span></td></tr>
+<tr class="codeline" data-linenumber="15"><td class="num" id="LN15">15</td><td class="line"> <span class='comment'>* but WITHOUT ANY WARRANTY; without even the implied warranty of</span></td></tr>
+<tr class="codeline" data-linenumber="16"><td class="num" id="LN16">16</td><td class="line"> <span class='comment'>* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></td></tr>
+<tr class="codeline" data-linenumber="17"><td class="num" id="LN17">17</td><td class="line"> <span class='comment'>* GNU General Public License for more details.</span></td></tr>
+<tr class="codeline" data-linenumber="18"><td class="num" id="LN18">18</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="19"><td class="num" id="LN19">19</td><td class="line"> <span class='comment'>* You should have received a copy of the GNU General Public License</span></td></tr>
+<tr class="codeline" data-linenumber="20"><td class="num" id="LN20">20</td><td class="line"> <span class='comment'>* along with this program; if not, write to the Free Software</span></td></tr>
+<tr class="codeline" data-linenumber="21"><td class="num" id="LN21">21</td><td class="line"> <span class='comment'>* Foundation, Inc., 51 Franklin St, Fifth Floor,</span></td></tr>
+<tr class="codeline" data-linenumber="22"><td class="num" id="LN22">22</td><td class="line"> <span class='comment'>* Boston, MA 02110-1301, USA.</span></td></tr>
+<tr class="codeline" data-linenumber="23"><td class="num" id="LN23">23</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="24"><td class="num" id="LN24">24</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="25"><td class="num" id="LN25">25</td><td class="line"><span class='comment'>/*</span></td></tr>
+<tr class="codeline" data-linenumber="26"><td class="num" id="LN26">26</td><td class="line"> <span class='comment'>* Modified by the pluma Team, 2006. See the AUTHORS file for a</span></td></tr>
+<tr class="codeline" data-linenumber="27"><td class="num" id="LN27">27</td><td class="line"> <span class='comment'>* list of people on the pluma Team.</span></td></tr>
+<tr class="codeline" data-linenumber="28"><td class="num" id="LN28">28</td><td class="line"> <span class='comment'>* See the ChangeLog files for a list of changes.</span></td></tr>
+<tr class="codeline" data-linenumber="29"><td class="num" id="LN29">29</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="30"><td class="num" id="LN30">30</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="31"><td class="num" id="LN31">31</td><td class="line"><span class='comment'>/* Part of the code taked from Epiphany.</span></td></tr>
+<tr class="codeline" data-linenumber="32"><td class="num" id="LN32">32</td><td class="line"> <span class='comment'>*</span></td></tr>
+<tr class="codeline" data-linenumber="33"><td class="num" id="LN33">33</td><td class="line"> <span class='comment'>* Copyright (C) 2003, 2004 Christian Persch</span></td></tr>
+<tr class="codeline" data-linenumber="34"><td class="num" id="LN34">34</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="35"><td class="num" id="LN35">35</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="36"><td class="num" id="LN36">36</td><td class="line"><span class='directive'>#ifdef <span class='macro'>HAVE_CONFIG_H<span class='macro_popup'>1</span></span></span></td></tr>
+<tr class="codeline" data-linenumber="37"><td class="num" id="LN37">37</td><td class="line"><span class='directive'>#include &lt;config.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="38"><td class="num" id="LN38">38</td><td class="line"><span class='directive'>#endif</span></td></tr>
+<tr class="codeline" data-linenumber="39"><td class="num" id="LN39">39</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="40"><td class="num" id="LN40">40</td><td class="line"><span class='directive'>#include &lt;string.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="41"><td class="num" id="LN41">41</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="42"><td class="num" id="LN42">42</td><td class="line"><span class='directive'>#include &lt;enchant.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="43"><td class="num" id="LN43">43</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="44"><td class="num" id="LN44">44</td><td class="line"><span class='directive'>#include &lt;glib/gi18n.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="45"><td class="num" id="LN45">45</td><td class="line"><span class='directive'>#include &lt;libxml/xmlreader.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="46"><td class="num" id="LN46">46</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="47"><td class="num" id="LN47">47</td><td class="line"><span class='directive'>#include "pluma-spell-checker-language.h"</span></td></tr>
+<tr class="codeline" data-linenumber="48"><td class="num" id="LN48">48</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="49"><td class="num" id="LN49">49</td><td class="line"><span class='directive'>#include &lt;pluma/pluma-debug.h&gt;</span></td></tr>
+<tr class="codeline" data-linenumber="50"><td class="num" id="LN50">50</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="51"><td class="num" id="LN51">51</td><td class="line"><span class='directive'>#define <span class='macro'>ISO_639_DOMAIN<span class='macro_popup'>"iso_639"</span></span> "iso_639"</span></td></tr>
+<tr class="codeline" data-linenumber="52"><td class="num" id="LN52">52</td><td class="line"><span class='directive'>#define <span class='macro'>ISO_3166_DOMAIN<span class='macro_popup'>"iso_3166"</span></span> "iso_3166"</span></td></tr>
+<tr class="codeline" data-linenumber="53"><td class="num" id="LN53">53</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="54"><td class="num" id="LN54">54</td><td class="line"><span class='directive'>#define <span class='macro'>ISOCODESLOCALEDIR<span class='macro_popup'>"/usr" "/share/locale"</span></span> <span class='macro'>ISO_CODES_PREFIX<span class='macro_popup'>"/usr"</span></span> "/share/locale"</span></td></tr>
+<tr class="codeline" data-linenumber="55"><td class="num" id="LN55">55</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="56"><td class="num" id="LN56">56</td><td class="line"><span class='keyword'>struct</span> _PlumaSpellCheckerLanguage</td></tr>
+<tr class="codeline" data-linenumber="57"><td class="num" id="LN57">57</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="58"><td class="num" id="LN58">58</td><td class="line"> gchar *abrev;</td></tr>
+<tr class="codeline" data-linenumber="59"><td class="num" id="LN59">59</td><td class="line"> gchar *name;</td></tr>
+<tr class="codeline" data-linenumber="60"><td class="num" id="LN60">60</td><td class="line">};</td></tr>
+<tr class="codeline" data-linenumber="61"><td class="num" id="LN61">61</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="62"><td class="num" id="LN62">62</td><td class="line"><span class='keyword'>static</span> gboolean available_languages_initialized = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="63"><td class="num" id="LN63">63</td><td class="line"><span class='keyword'>static</span> GSList *available_languages = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="64"><td class="num" id="LN64">64</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="65"><td class="num" id="LN65">65</td><td class="line"><span class='keyword'>static</span> GHashTable *iso_639_table = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="66"><td class="num" id="LN66">66</td><td class="line"><span class='keyword'>static</span> GHashTable *iso_3166_table = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="67"><td class="num" id="LN67">67</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="68"><td class="num" id="LN68">68</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="69"><td class="num" id="LN69">69</td><td class="line">bind_iso_domains (<span class='keyword'>void</span>)</td></tr>
+<tr class="codeline" data-linenumber="70"><td class="num" id="LN70">70</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="71"><td class="num" id="LN71">71</td><td class="line"> <span class='keyword'>static</span> gboolean bound = <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="72"><td class="num" id="LN72">72</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="73"><td class="num" id="LN73">73</td><td class="line"> <span class='keyword'>if</span> (bound == <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="74"><td class="num" id="LN74">74</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="75"><td class="num" id="LN75">75</td><td class="line"> bindtextdomain (<span class='macro'>ISO_639_DOMAIN<span class='macro_popup'>"iso_639"</span></span>, <span class='macro'>ISOCODESLOCALEDIR<span class='macro_popup'>"/usr" "/share/locale"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="76"><td class="num" id="LN76">76</td><td class="line"> bind_textdomain_codeset (<span class='macro'>ISO_639_DOMAIN<span class='macro_popup'>"iso_639"</span></span>, <span class='string_literal'>"UTF-8"</span>);</td></tr>
+<tr class="codeline" data-linenumber="77"><td class="num" id="LN77">77</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="78"><td class="num" id="LN78">78</td><td class="line"> bindtextdomain(<span class='macro'>ISO_3166_DOMAIN<span class='macro_popup'>"iso_3166"</span></span>, <span class='macro'>ISOCODESLOCALEDIR<span class='macro_popup'>"/usr" "/share/locale"</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="79"><td class="num" id="LN79">79</td><td class="line"> bind_textdomain_codeset (<span class='macro'>ISO_3166_DOMAIN<span class='macro_popup'>"iso_3166"</span></span>, <span class='string_literal'>"UTF-8"</span>);</td></tr>
+<tr class="codeline" data-linenumber="80"><td class="num" id="LN80">80</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="81"><td class="num" id="LN81">81</td><td class="line"> bound = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="82"><td class="num" id="LN82">82</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="83"><td class="num" id="LN83">83</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="84"><td class="num" id="LN84">84</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="85"><td class="num" id="LN85">85</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="86"><td class="num" id="LN86">86</td><td class="line">read_iso_639_entry (xmlTextReaderPtr reader,</td></tr>
+<tr class="codeline" data-linenumber="87"><td class="num" id="LN87">87</td><td class="line"> GHashTable *table)</td></tr>
+<tr class="codeline" data-linenumber="88"><td class="num" id="LN88">88</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="89"><td class="num" id="LN89">89</td><td class="line"> xmlChar *code, *name;</td></tr>
+<tr class="codeline" data-linenumber="90"><td class="num" id="LN90">90</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="91"><td class="num" id="LN91">91</td><td class="line"> code = xmlTextReaderGetAttribute (reader, (<span class='keyword'>const</span> xmlChar *) <span class='string_literal'>"iso_639_1_code"</span>);</td></tr>
+<tr class="codeline" data-linenumber="92"><td class="num" id="LN92">92</td><td class="line"> name = xmlTextReaderGetAttribute (reader, (<span class='keyword'>const</span> xmlChar *) <span class='string_literal'>"name"</span>);</td></tr>
+<tr class="codeline" data-linenumber="93"><td class="num" id="LN93">93</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="94"><td class="num" id="LN94">94</td><td class="line"> <span class='comment'>/* Get iso-639-2 code */</span></td></tr>
+<tr class="codeline" data-linenumber="95"><td class="num" id="LN95">95</td><td class="line"> <span class='keyword'>if</span> (code == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> || code[0] == '\0')</td></tr>
+<tr class="codeline" data-linenumber="96"><td class="num" id="LN96">96</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="97"><td class="num" id="LN97">97</td><td class="line"> xmlFree (code);</td></tr>
+<tr class="codeline" data-linenumber="98"><td class="num" id="LN98">98</td><td class="line"> <span class='comment'>/* FIXME: use the 2T or 2B code? */</span></td></tr>
+<tr class="codeline" data-linenumber="99"><td class="num" id="LN99">99</td><td class="line"> code = xmlTextReaderGetAttribute (reader, (<span class='keyword'>const</span> xmlChar *) <span class='string_literal'>"iso_639_2T_code"</span>);</td></tr>
+<tr class="codeline" data-linenumber="100"><td class="num" id="LN100">100</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="101"><td class="num" id="LN101">101</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="102"><td class="num" id="LN102">102</td><td class="line"> <span class='keyword'>if</span> (code != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> &amp;&amp; code[0] != '\0' &amp;&amp; name != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> &amp;&amp; name[0] != '\0')</td></tr>
+<tr class="codeline" data-linenumber="103"><td class="num" id="LN103">103</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="104"><td class="num" id="LN104">104</td><td class="line"> g_hash_table_insert (table, code, name);</td></tr>
+<tr class="codeline" data-linenumber="105"><td class="num" id="LN105">105</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="106"><td class="num" id="LN106">106</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="107"><td class="num" id="LN107">107</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="108"><td class="num" id="LN108">108</td><td class="line"> xmlFree (code);</td></tr>
+<tr class="codeline" data-linenumber="109"><td class="num" id="LN109">109</td><td class="line"> xmlFree (name);</td></tr>
+<tr class="codeline" data-linenumber="110"><td class="num" id="LN110">110</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="111"><td class="num" id="LN111">111</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="112"><td class="num" id="LN112">112</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="113"><td class="num" id="LN113">113</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="114"><td class="num" id="LN114">114</td><td class="line">read_iso_3166_entry (xmlTextReaderPtr reader,</td></tr>
+<tr class="codeline" data-linenumber="115"><td class="num" id="LN115">115</td><td class="line"> GHashTable *table)</td></tr>
+<tr class="codeline" data-linenumber="116"><td class="num" id="LN116">116</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="117"><td class="num" id="LN117">117</td><td class="line"> xmlChar *code, *name;</td></tr>
+<tr class="codeline" data-linenumber="118"><td class="num" id="LN118">118</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="119"><td class="num" id="LN119">119</td><td class="line"> code = xmlTextReaderGetAttribute (reader, (<span class='keyword'>const</span> xmlChar *) <span class='string_literal'>"alpha_2_code"</span>);</td></tr>
+<tr class="codeline" data-linenumber="120"><td class="num" id="LN120">120</td><td class="line"> name = xmlTextReaderGetAttribute (reader, (<span class='keyword'>const</span> xmlChar *) <span class='string_literal'>"name"</span>);</td></tr>
+<tr class="codeline" data-linenumber="121"><td class="num" id="LN121">121</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="122"><td class="num" id="LN122">122</td><td class="line"> <span class='keyword'>if</span> (code != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> &amp;&amp; code[0] != '\0' &amp;&amp; name != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span> &amp;&amp; name[0] != '\0')</td></tr>
+<tr class="codeline" data-linenumber="123"><td class="num" id="LN123">123</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="124"><td class="num" id="LN124">124</td><td class="line"> <span class='keyword'>char</span> *lcode;</td></tr>
+<tr class="codeline" data-linenumber="125"><td class="num" id="LN125">125</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="126"><td class="num" id="LN126">126</td><td class="line"> lcode = g_ascii_strdown ((<span class='keyword'>char</span> *) code, -1);</td></tr>
+<tr class="codeline" data-linenumber="127"><td class="num" id="LN127">127</td><td class="line"> xmlFree (code);</td></tr>
+<tr class="codeline" data-linenumber="128"><td class="num" id="LN128">128</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="129"><td class="num" id="LN129">129</td><td class="line"> <span class='comment'>/* g_print ("%s -&gt; %s\n", lcode, name); */</span></td></tr>
+<tr class="codeline" data-linenumber="130"><td class="num" id="LN130">130</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="131"><td class="num" id="LN131">131</td><td class="line"> g_hash_table_insert (table, lcode, name);</td></tr>
+<tr class="codeline" data-linenumber="132"><td class="num" id="LN132">132</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="133"><td class="num" id="LN133">133</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="134"><td class="num" id="LN134">134</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="135"><td class="num" id="LN135">135</td><td class="line"> xmlFree (code);</td></tr>
+<tr class="codeline" data-linenumber="136"><td class="num" id="LN136">136</td><td class="line"> xmlFree (name);</td></tr>
+<tr class="codeline" data-linenumber="137"><td class="num" id="LN137">137</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="138"><td class="num" id="LN138">138</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="139"><td class="num" id="LN139">139</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="140"><td class="num" id="LN140">140</td><td class="line"><span class='keyword'>typedef</span> <span class='keyword'>enum</span></td></tr>
+<tr class="codeline" data-linenumber="141"><td class="num" id="LN141">141</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="142"><td class="num" id="LN142">142</td><td class="line"> STATE_START,</td></tr>
+<tr class="codeline" data-linenumber="143"><td class="num" id="LN143">143</td><td class="line"> STATE_STOP,</td></tr>
+<tr class="codeline" data-linenumber="144"><td class="num" id="LN144">144</td><td class="line"> STATE_ENTRIES,</td></tr>
+<tr class="codeline" data-linenumber="145"><td class="num" id="LN145">145</td><td class="line">} ParserState;</td></tr>
+<tr class="codeline" data-linenumber="146"><td class="num" id="LN146">146</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="147"><td class="num" id="LN147">147</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="148"><td class="num" id="LN148">148</td><td class="line">load_iso_entries (<span class='keyword'>int</span> iso,</td></tr>
+<tr class="codeline" data-linenumber="149"><td class="num" id="LN149">149</td><td class="line"> GFunc read_entry_func,</td></tr>
+<tr class="codeline" data-linenumber="150"><td class="num" id="LN150">150</td><td class="line"> gpointer user_data)</td></tr>
+<tr class="codeline" data-linenumber="151"><td class="num" id="LN151">151</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="152"><td class="num" id="LN152">152</td><td class="line"> xmlTextReaderPtr reader;</td></tr>
+<tr class="codeline" data-linenumber="153"><td class="num" id="LN153">153</td><td class="line"> ParserState state = STATE_START;</td></tr>
+<tr class="codeline" data-linenumber="154"><td class="num" id="LN154">154</td><td class="line"> xmlChar iso_entries[32], iso_entry[32];</td></tr>
+<tr class="codeline" data-linenumber="155"><td class="num" id="LN155">155</td><td class="line"> <span class='keyword'>char</span> *filename;</td></tr>
+<tr class="codeline" data-linenumber="156"><td class="num" id="LN156">156</td><td class="line"> <span class='keyword'>int</span> ret = -1;</td></tr>
+<tr class="codeline" data-linenumber="157"><td class="num" id="LN157">157</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="158"><td class="num" id="LN158">158</td><td class="line"> pluma_debug_message (<span class='macro'>DEBUG_PLUGINS<span class='macro_popup'>PLUMA_DEBUG_PLUGINS, "pluma-spell-checker-language.c", 158, (<br>(const char*) (__func__))</span></span>, <span class='string_literal'>"Loading ISO-%d codes"</span>, iso);</td></tr>
+<tr class="codeline" data-linenumber="159"><td class="num" id="LN159">159</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="160"><td class="num" id="LN160">160</td><td class="line"> filename = g_strdup_printf (<span class='macro'>ISO_CODES_PREFIX<span class='macro_popup'>"/usr"</span></span> <span class='string_literal'>"/share/xml/iso-codes/iso_%d.xml"</span>, iso);</td></tr>
+<tr class="codeline" data-linenumber="161"><td class="num" id="LN161">161</td><td class="line"> reader = xmlNewTextReaderFilename (filename);</td></tr>
+<tr class="codeline" data-linenumber="162"><td class="num" id="LN162">162</td><td class="line"> <span class='keyword'>if</span> (reader == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>) <span class='keyword'>goto</span> out;</td></tr>
+<tr class="codeline" data-linenumber="163"><td class="num" id="LN163">163</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="164"><td class="num" id="LN164">164</td><td class="line"> xmlStrPrintf (iso_entries, <span class='keyword'>sizeof</span> (iso_entries), (<span class='keyword'>const</span> <span class='keyword'>char</span> *)<span class='string_literal'>"iso_%d_entries"</span>, iso);</td></tr>
+<tr class="codeline" data-linenumber="165"><td class="num" id="LN165">165</td><td class="line"> xmlStrPrintf (iso_entry, <span class='keyword'>sizeof</span> (iso_entry), (<span class='keyword'>const</span> <span class='keyword'>char</span> *)<span class='string_literal'>"iso_%d_entry"</span>, iso);</td></tr>
+<tr class="codeline" data-linenumber="166"><td class="num" id="LN166">166</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="167"><td class="num" id="LN167">167</td><td class="line"> ret = xmlTextReaderRead (reader);</td></tr>
+<tr class="codeline" data-linenumber="168"><td class="num" id="LN168">168</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="169"><td class="num" id="LN169">169</td><td class="line"> <span class='keyword'>while</span> (ret == 1)</td></tr>
+<tr class="codeline" data-linenumber="170"><td class="num" id="LN170">170</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="171"><td class="num" id="LN171">171</td><td class="line"> <span class='keyword'>const</span> xmlChar *tag;</td></tr>
+<tr class="codeline" data-linenumber="172"><td class="num" id="LN172">172</td><td class="line"> xmlReaderTypes type;</td></tr>
+<tr class="codeline" data-linenumber="173"><td class="num" id="LN173">173</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="174"><td class="num" id="LN174">174</td><td class="line"> tag = xmlTextReaderConstName (reader);</td></tr>
+<tr class="codeline" data-linenumber="175"><td class="num" id="LN175">175</td><td class="line"> type = xmlTextReaderNodeType (reader);</td></tr>
+<tr class="codeline" data-linenumber="176"><td class="num" id="LN176">176</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="177"><td class="num" id="LN177">177</td><td class="line"> <span class='keyword'>if</span> (state == STATE_ENTRIES &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="178"><td class="num" id="LN178">178</td><td class="line"> type == XML_READER_TYPE_ELEMENT &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="179"><td class="num" id="LN179">179</td><td class="line"> xmlStrEqual (tag, iso_entry))</td></tr>
+<tr class="codeline" data-linenumber="180"><td class="num" id="LN180">180</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="181"><td class="num" id="LN181">181</td><td class="line"> read_entry_func (reader, user_data);</td></tr>
+<tr class="codeline" data-linenumber="182"><td class="num" id="LN182">182</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="183"><td class="num" id="LN183">183</td><td class="line"> <span class='keyword'>else</span> <span class='keyword'>if</span> (state == STATE_START &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="184"><td class="num" id="LN184">184</td><td class="line"> type == XML_READER_TYPE_ELEMENT &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="185"><td class="num" id="LN185">185</td><td class="line"> xmlStrEqual (tag, iso_entries))</td></tr>
+<tr class="codeline" data-linenumber="186"><td class="num" id="LN186">186</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="187"><td class="num" id="LN187">187</td><td class="line"> state = STATE_ENTRIES;</td></tr>
+<tr class="codeline" data-linenumber="188"><td class="num" id="LN188">188</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="189"><td class="num" id="LN189">189</td><td class="line"> <span class='keyword'>else</span> <span class='keyword'>if</span> (state == STATE_ENTRIES &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="190"><td class="num" id="LN190">190</td><td class="line"> type == XML_READER_TYPE_END_ELEMENT &amp;&amp;</td></tr>
+<tr class="codeline" data-linenumber="191"><td class="num" id="LN191">191</td><td class="line"> xmlStrEqual (tag, iso_entries))</td></tr>
+<tr class="codeline" data-linenumber="192"><td class="num" id="LN192">192</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="193"><td class="num" id="LN193">193</td><td class="line"> state = STATE_STOP;</td></tr>
+<tr class="codeline" data-linenumber="194"><td class="num" id="LN194">194</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="195"><td class="num" id="LN195">195</td><td class="line"> <span class='keyword'>else</span> <span class='keyword'>if</span> (type == XML_READER_TYPE_SIGNIFICANT_WHITESPACE ||</td></tr>
+<tr><td class="num"></td><td class="line"><div id="EndPath" class="msg msgEvent" style="margin-left:22ex">true and false branches are identical</div></td></tr>
+<tr class="codeline" data-linenumber="196"><td class="num" id="LN196">196</td><td class="line"> type == XML_READER_TYPE_WHITESPACE ||</td></tr>
+<tr class="codeline" data-linenumber="197"><td class="num" id="LN197">197</td><td class="line"> type == XML_READER_TYPE_TEXT ||</td></tr>
+<tr class="codeline" data-linenumber="198"><td class="num" id="LN198">198</td><td class="line"> type == XML_READER_TYPE_COMMENT)</td></tr>
+<tr class="codeline" data-linenumber="199"><td class="num" id="LN199">199</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="200"><td class="num" id="LN200">200</td><td class="line"> <span class='comment'>/* eat it */</span></td></tr>
+<tr class="codeline" data-linenumber="201"><td class="num" id="LN201">201</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="202"><td class="num" id="LN202">202</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="203"><td class="num" id="LN203">203</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="204"><td class="num" id="LN204">204</td><td class="line"> <span class='comment'>/* ignore it */</span></td></tr>
+<tr class="codeline" data-linenumber="205"><td class="num" id="LN205">205</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="206"><td class="num" id="LN206">206</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="207"><td class="num" id="LN207">207</td><td class="line"> ret = xmlTextReaderRead (reader);</td></tr>
+<tr class="codeline" data-linenumber="208"><td class="num" id="LN208">208</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="209"><td class="num" id="LN209">209</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="210"><td class="num" id="LN210">210</td><td class="line"> xmlFreeTextReader (reader);</td></tr>
+<tr class="codeline" data-linenumber="211"><td class="num" id="LN211">211</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="212"><td class="num" id="LN212">212</td><td class="line">out:</td></tr>
+<tr class="codeline" data-linenumber="213"><td class="num" id="LN213">213</td><td class="line"> <span class='keyword'>if</span> (ret &lt; 0 || state != STATE_STOP)</td></tr>
+<tr class="codeline" data-linenumber="214"><td class="num" id="LN214">214</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="215"><td class="num" id="LN215">215</td><td class="line"> g_warning (<span class='string_literal'>"Failed to load ISO-%d codes from %s!\n"</span>,</td></tr>
+<tr class="codeline" data-linenumber="216"><td class="num" id="LN216">216</td><td class="line"> iso, filename);</td></tr>
+<tr class="codeline" data-linenumber="217"><td class="num" id="LN217">217</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="218"><td class="num" id="LN218">218</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="219"><td class="num" id="LN219">219</td><td class="line"> g_free (filename);</td></tr>
+<tr class="codeline" data-linenumber="220"><td class="num" id="LN220">220</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="221"><td class="num" id="LN221">221</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="222"><td class="num" id="LN222">222</td><td class="line"><span class='keyword'>static</span> GHashTable *</td></tr>
+<tr class="codeline" data-linenumber="223"><td class="num" id="LN223">223</td><td class="line">create_iso_639_table (<span class='keyword'>void</span>)</td></tr>
+<tr class="codeline" data-linenumber="224"><td class="num" id="LN224">224</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="225"><td class="num" id="LN225">225</td><td class="line"> GHashTable *table;</td></tr>
+<tr class="codeline" data-linenumber="226"><td class="num" id="LN226">226</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="227"><td class="num" id="LN227">227</td><td class="line"> bind_iso_domains ();</td></tr>
+<tr class="codeline" data-linenumber="228"><td class="num" id="LN228">228</td><td class="line"> table = g_hash_table_new_full (g_str_hash, g_str_equal,</td></tr>
+<tr class="codeline" data-linenumber="229"><td class="num" id="LN229">229</td><td class="line"> (GDestroyNotify) xmlFree,</td></tr>
+<tr class="codeline" data-linenumber="230"><td class="num" id="LN230">230</td><td class="line"> (GDestroyNotify) xmlFree);</td></tr>
+<tr class="codeline" data-linenumber="231"><td class="num" id="LN231">231</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="232"><td class="num" id="LN232">232</td><td class="line"> load_iso_entries (639, (GFunc) read_iso_639_entry, table);</td></tr>
+<tr class="codeline" data-linenumber="233"><td class="num" id="LN233">233</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="234"><td class="num" id="LN234">234</td><td class="line"> <span class='keyword'>return</span> table;</td></tr>
+<tr class="codeline" data-linenumber="235"><td class="num" id="LN235">235</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="236"><td class="num" id="LN236">236</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="237"><td class="num" id="LN237">237</td><td class="line"><span class='keyword'>static</span> GHashTable *</td></tr>
+<tr class="codeline" data-linenumber="238"><td class="num" id="LN238">238</td><td class="line">create_iso_3166_table (<span class='keyword'>void</span>)</td></tr>
+<tr class="codeline" data-linenumber="239"><td class="num" id="LN239">239</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="240"><td class="num" id="LN240">240</td><td class="line"> GHashTable *table;</td></tr>
+<tr class="codeline" data-linenumber="241"><td class="num" id="LN241">241</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="242"><td class="num" id="LN242">242</td><td class="line"> bind_iso_domains ();</td></tr>
+<tr class="codeline" data-linenumber="243"><td class="num" id="LN243">243</td><td class="line"> table = g_hash_table_new_full (g_str_hash, g_str_equal,</td></tr>
+<tr class="codeline" data-linenumber="244"><td class="num" id="LN244">244</td><td class="line"> (GDestroyNotify) g_free,</td></tr>
+<tr class="codeline" data-linenumber="245"><td class="num" id="LN245">245</td><td class="line"> (GDestroyNotify) xmlFree);</td></tr>
+<tr class="codeline" data-linenumber="246"><td class="num" id="LN246">246</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="247"><td class="num" id="LN247">247</td><td class="line"> load_iso_entries (3166, (GFunc) read_iso_3166_entry, table);</td></tr>
+<tr class="codeline" data-linenumber="248"><td class="num" id="LN248">248</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="249"><td class="num" id="LN249">249</td><td class="line"> <span class='keyword'>return</span> table;</td></tr>
+<tr class="codeline" data-linenumber="250"><td class="num" id="LN250">250</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="251"><td class="num" id="LN251">251</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="252"><td class="num" id="LN252">252</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>char</span> *</td></tr>
+<tr class="codeline" data-linenumber="253"><td class="num" id="LN253">253</td><td class="line">create_name_for_language (<span class='keyword'>const</span> <span class='keyword'>char</span> *code)</td></tr>
+<tr class="codeline" data-linenumber="254"><td class="num" id="LN254">254</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="255"><td class="num" id="LN255">255</td><td class="line"> <span class='keyword'>char</span> **str;</td></tr>
+<tr class="codeline" data-linenumber="256"><td class="num" id="LN256">256</td><td class="line"> <span class='keyword'>char</span> *name = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="257"><td class="num" id="LN257">257</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> *langname, *localename;</td></tr>
+<tr class="codeline" data-linenumber="258"><td class="num" id="LN258">258</td><td class="line"> <span class='keyword'>int</span> len;</td></tr>
+<tr class="codeline" data-linenumber="259"><td class="num" id="LN259">259</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="260"><td class="num" id="LN260">260</td><td class="line"> <span class='macro'>g_return_val_if_fail (iso_639_table != NULL, NULL)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_16<br>; if (iso_639_table != ((void*)0)) _g_boolean_var_16 = 1; else<br> _g_boolean_var_16 = 0; _g_boolean_var_16; }), 1))) { } else {<br> g_return_if_fail_warning (((gchar*) 0), ((const char*) (__func__<br>)), "iso_639_table != NULL"); return (((void*)0)); } } while (<br>0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="261"><td class="num" id="LN261">261</td><td class="line"> <span class='macro'>g_return_val_if_fail (iso_3166_table != NULL, NULL)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_17<br>; if (iso_3166_table != ((void*)0)) _g_boolean_var_17 = 1; else<br> _g_boolean_var_17 = 0; _g_boolean_var_17; }), 1))) { } else {<br> g_return_if_fail_warning (((gchar*) 0), ((const char*) (__func__<br>)), "iso_3166_table != NULL"); return (((void*)0)); } } while<br> (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="262"><td class="num" id="LN262">262</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="263"><td class="num" id="LN263">263</td><td class="line"> str = g_strsplit (code, <span class='string_literal'>"_"</span>, -1);</td></tr>
+<tr class="codeline" data-linenumber="264"><td class="num" id="LN264">264</td><td class="line"> len = g_strv_length (str);</td></tr>
+<tr class="codeline" data-linenumber="265"><td class="num" id="LN265">265</td><td class="line"> <span class='macro'>g_return_val_if_fail (len != 0, NULL)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_18<br>; if (len != 0) _g_boolean_var_18 = 1; else _g_boolean_var_18<br> = 0; _g_boolean_var_18; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "len != 0"); return<br> (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="266"><td class="num" id="LN266">266</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="267"><td class="num" id="LN267">267</td><td class="line"> langname = (<span class='keyword'>const</span> <span class='keyword'>char</span> *) g_hash_table_lookup (iso_639_table, str[0]);</td></tr>
+<tr class="codeline" data-linenumber="268"><td class="num" id="LN268">268</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="269"><td class="num" id="LN269">269</td><td class="line"> <span class='keyword'>if</span> (len == 1 &amp;&amp; langname != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="270"><td class="num" id="LN270">270</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="271"><td class="num" id="LN271">271</td><td class="line"> name = <span class='macro'>g_strdup (dgettext (ISO_639_DOMAIN, langname))<span class='macro_popup'>g_strdup_inline (dcgettext ("iso_639", langname, 5))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="272"><td class="num" id="LN272">272</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="273"><td class="num" id="LN273">273</td><td class="line"> <span class='keyword'>else</span> <span class='keyword'>if</span> (len == 2 &amp;&amp; langname != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="274"><td class="num" id="LN274">274</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="275"><td class="num" id="LN275">275</td><td class="line"> gchar *locale_code = g_ascii_strdown (str[1], -1);</td></tr>
+<tr class="codeline" data-linenumber="276"><td class="num" id="LN276">276</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="277"><td class="num" id="LN277">277</td><td class="line"> localename = (<span class='keyword'>const</span> <span class='keyword'>char</span> *) g_hash_table_lookup (iso_3166_table, locale_code);</td></tr>
+<tr class="codeline" data-linenumber="278"><td class="num" id="LN278">278</td><td class="line"> g_free (locale_code);</td></tr>
+<tr class="codeline" data-linenumber="279"><td class="num" id="LN279">279</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="280"><td class="num" id="LN280">280</td><td class="line"> <span class='keyword'>if</span> (localename != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="281"><td class="num" id="LN281">281</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="282"><td class="num" id="LN282">282</td><td class="line"> <span class='comment'>/* Translators: the first %s is the language name, and</span></td></tr>
+<tr class="codeline" data-linenumber="283"><td class="num" id="LN283">283</td><td class="line"> <span class='comment'>* the second %s is the locale name. Example:</span></td></tr>
+<tr class="codeline" data-linenumber="284"><td class="num" id="LN284">284</td><td class="line"> <span class='comment'>* "French (France)"</span></td></tr>
+<tr class="codeline" data-linenumber="285"><td class="num" id="LN285">285</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="286"><td class="num" id="LN286">286</td><td class="line"> name = g_strdup_printf (<span class='macro'>C_(<span class='string_literal'>"language"</span>, <span class='string_literal'>"%s (%s)"</span>)<span class='macro_popup'>g_dpgettext (((void*)0), "language" "\004" "%s (%s)", strlen (<br>"language") + 1)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="287"><td class="num" id="LN287">287</td><td class="line"> <span class='macro'>dgettext (ISO_639_DOMAIN, langname)<span class='macro_popup'>dcgettext ("iso_639", langname, 5)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="288"><td class="num" id="LN288">288</td><td class="line"> <span class='macro'>dgettext (ISO_3166_DOMAIN, localename)<span class='macro_popup'>dcgettext ("iso_3166", localename, 5)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="289"><td class="num" id="LN289">289</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="290"><td class="num" id="LN290">290</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="291"><td class="num" id="LN291">291</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="292"><td class="num" id="LN292">292</td><td class="line"> name = g_strdup_printf (<span class='macro'>C_(<span class='string_literal'>"language"</span>, <span class='string_literal'>"%s (%s)"</span>)<span class='macro_popup'>g_dpgettext (((void*)0), "language" "\004" "%s (%s)", strlen (<br>"language") + 1)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="293"><td class="num" id="LN293">293</td><td class="line"> <span class='macro'>dgettext (ISO_639_DOMAIN, langname)<span class='macro_popup'>dcgettext ("iso_639", langname, 5)</span></span>, str[1]);</td></tr>
+<tr class="codeline" data-linenumber="294"><td class="num" id="LN294">294</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="295"><td class="num" id="LN295">295</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="296"><td class="num" id="LN296">296</td><td class="line"> <span class='keyword'>else</span></td></tr>
+<tr class="codeline" data-linenumber="297"><td class="num" id="LN297">297</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="298"><td class="num" id="LN298">298</td><td class="line"> <span class='comment'>/* Translators: this refers to an unknown language code</span></td></tr>
+<tr class="codeline" data-linenumber="299"><td class="num" id="LN299">299</td><td class="line"> <span class='comment'>* (one which isn't in our built-in list).</span></td></tr>
+<tr class="codeline" data-linenumber="300"><td class="num" id="LN300">300</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="301"><td class="num" id="LN301">301</td><td class="line"> name = g_strdup_printf (<span class='macro'>C_(<span class='string_literal'>"language"</span>, <span class='string_literal'>"Unknown (%s)"</span>)<span class='macro_popup'>g_dpgettext (((void*)0), "language" "\004" "Unknown (%s)", strlen<br> ("language") + 1)</span></span>, code);</td></tr>
+<tr class="codeline" data-linenumber="302"><td class="num" id="LN302">302</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="303"><td class="num" id="LN303">303</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="304"><td class="num" id="LN304">304</td><td class="line"> g_strfreev (str);</td></tr>
+<tr class="codeline" data-linenumber="305"><td class="num" id="LN305">305</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="306"><td class="num" id="LN306">306</td><td class="line"> <span class='keyword'>return</span> name;</td></tr>
+<tr class="codeline" data-linenumber="307"><td class="num" id="LN307">307</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="308"><td class="num" id="LN308">308</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="309"><td class="num" id="LN309">309</td><td class="line"><span class='keyword'>static</span> <span class='keyword'>void</span></td></tr>
+<tr class="codeline" data-linenumber="310"><td class="num" id="LN310">310</td><td class="line">enumerate_dicts (<span class='keyword'>const</span> <span class='keyword'>char</span> * <span class='keyword'>const</span> lang_tag,</td></tr>
+<tr class="codeline" data-linenumber="311"><td class="num" id="LN311">311</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> * <span class='keyword'>const</span> provider_name,</td></tr>
+<tr class="codeline" data-linenumber="312"><td class="num" id="LN312">312</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> * <span class='keyword'>const</span> provider_desc,</td></tr>
+<tr class="codeline" data-linenumber="313"><td class="num" id="LN313">313</td><td class="line"> <span class='keyword'>const</span> <span class='keyword'>char</span> * <span class='keyword'>const</span> provider_file,</td></tr>
+<tr class="codeline" data-linenumber="314"><td class="num" id="LN314">314</td><td class="line"> <span class='keyword'>void</span> * user_data)</td></tr>
+<tr class="codeline" data-linenumber="315"><td class="num" id="LN315">315</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="316"><td class="num" id="LN316">316</td><td class="line"> gchar *lang_name;</td></tr>
+<tr class="codeline" data-linenumber="317"><td class="num" id="LN317">317</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="318"><td class="num" id="LN318">318</td><td class="line"> GTree *dicts = (GTree *)user_data;</td></tr>
+<tr class="codeline" data-linenumber="319"><td class="num" id="LN319">319</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="320"><td class="num" id="LN320">320</td><td class="line"> lang_name = create_name_for_language (lang_tag);</td></tr>
+<tr class="codeline" data-linenumber="321"><td class="num" id="LN321">321</td><td class="line"> <span class='macro'>g_return_if_fail (lang_name != NULL)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_19<br>; if (lang_name != ((void*)0)) _g_boolean_var_19 = 1; else _g_boolean_var_19<br> = 0; _g_boolean_var_19; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "lang_name != NULL"<br>); return; } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="322"><td class="num" id="LN322">322</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="323"><td class="num" id="LN323">323</td><td class="line"> <span class='comment'>/* g_print ("%s - %s\n", lang_tag, lang_name); */</span></td></tr>
+<tr class="codeline" data-linenumber="324"><td class="num" id="LN324">324</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="325"><td class="num" id="LN325">325</td><td class="line"> g_tree_replace (dicts, <span class='macro'>g_strdup (lang_tag)<span class='macro_popup'>g_strdup_inline (lang_tag)</span></span>, lang_name);</td></tr>
+<tr class="codeline" data-linenumber="326"><td class="num" id="LN326">326</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="327"><td class="num" id="LN327">327</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="328"><td class="num" id="LN328">328</td><td class="line"><span class='keyword'>static</span> gint</td></tr>
+<tr class="codeline" data-linenumber="329"><td class="num" id="LN329">329</td><td class="line">key_cmp (gconstpointer a, gconstpointer b, gpointer user_data)</td></tr>
+<tr class="codeline" data-linenumber="330"><td class="num" id="LN330">330</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="331"><td class="num" id="LN331">331</td><td class="line"> <span class='keyword'>return</span> strcmp (a, b);</td></tr>
+<tr class="codeline" data-linenumber="332"><td class="num" id="LN332">332</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="333"><td class="num" id="LN333">333</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="334"><td class="num" id="LN334">334</td><td class="line"><span class='keyword'>static</span> gint</td></tr>
+<tr class="codeline" data-linenumber="335"><td class="num" id="LN335">335</td><td class="line">lang_cmp (<span class='keyword'>const</span> PlumaSpellCheckerLanguage *a,</td></tr>
+<tr class="codeline" data-linenumber="336"><td class="num" id="LN336">336</td><td class="line"> <span class='keyword'>const</span> PlumaSpellCheckerLanguage *b)</td></tr>
+<tr class="codeline" data-linenumber="337"><td class="num" id="LN337">337</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="338"><td class="num" id="LN338">338</td><td class="line"> <span class='keyword'>return</span> g_utf8_collate (a-&gt;name, b-&gt;name);</td></tr>
+<tr class="codeline" data-linenumber="339"><td class="num" id="LN339">339</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="340"><td class="num" id="LN340">340</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="341"><td class="num" id="LN341">341</td><td class="line"><span class='keyword'>static</span> gboolean</td></tr>
+<tr class="codeline" data-linenumber="342"><td class="num" id="LN342">342</td><td class="line">build_langs_list (<span class='keyword'>const</span> gchar *key,</td></tr>
+<tr class="codeline" data-linenumber="343"><td class="num" id="LN343">343</td><td class="line"> <span class='keyword'>const</span> gchar *value,</td></tr>
+<tr class="codeline" data-linenumber="344"><td class="num" id="LN344">344</td><td class="line"> gpointer data)</td></tr>
+<tr class="codeline" data-linenumber="345"><td class="num" id="LN345">345</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="346"><td class="num" id="LN346">346</td><td class="line"> PlumaSpellCheckerLanguage *lang = <span class='macro'>g_new (PlumaSpellCheckerLanguage, 1)<span class='macro_popup'>(PlumaSpellCheckerLanguage *) (__extension__ ({ gsize __n = (<br>gsize) (1); gsize __s = sizeof (PlumaSpellCheckerLanguage); gpointer<br> __p; if (__s == 1) __p = g_malloc (__n); else if (__builtin_constant_p<br> (__n) &amp;&amp; (__s == 0 || __n &lt;= (9223372036854775807L<br> *2UL+1UL) / __s)) __p = g_malloc (__n * __s); else __p = g_malloc_n<br> (__n, __s); __p; }))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="347"><td class="num" id="LN347">347</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="348"><td class="num" id="LN348">348</td><td class="line"> lang-&gt;abrev = <span class='macro'>g_strdup (key)<span class='macro_popup'>g_strdup_inline (key)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="349"><td class="num" id="LN349">349</td><td class="line"> lang-&gt;name = <span class='macro'>g_strdup (value)<span class='macro_popup'>g_strdup_inline (value)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="350"><td class="num" id="LN350">350</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="351"><td class="num" id="LN351">351</td><td class="line"> available_languages = g_slist_insert_sorted (available_languages,</td></tr>
+<tr class="codeline" data-linenumber="352"><td class="num" id="LN352">352</td><td class="line"> lang,</td></tr>
+<tr class="codeline" data-linenumber="353"><td class="num" id="LN353">353</td><td class="line"> (GCompareFunc)lang_cmp);</td></tr>
+<tr class="codeline" data-linenumber="354"><td class="num" id="LN354">354</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="355"><td class="num" id="LN355">355</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>FALSE<span class='macro_popup'>(0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="356"><td class="num" id="LN356">356</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="357"><td class="num" id="LN357">357</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="358"><td class="num" id="LN358">358</td><td class="line"><span class='keyword'>const</span> GSList *</td></tr>
+<tr class="codeline" data-linenumber="359"><td class="num" id="LN359">359</td><td class="line">pluma_spell_checker_get_available_languages (<span class='keyword'>void</span>)</td></tr>
+<tr class="codeline" data-linenumber="360"><td class="num" id="LN360">360</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="361"><td class="num" id="LN361">361</td><td class="line"> EnchantBroker *broker;</td></tr>
+<tr class="codeline" data-linenumber="362"><td class="num" id="LN362">362</td><td class="line"> GTree *dicts;</td></tr>
+<tr class="codeline" data-linenumber="363"><td class="num" id="LN363">363</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="364"><td class="num" id="LN364">364</td><td class="line"> <span class='keyword'>if</span> (available_languages_initialized)</td></tr>
+<tr class="codeline" data-linenumber="365"><td class="num" id="LN365">365</td><td class="line"> <span class='keyword'>return</span> available_languages;</td></tr>
+<tr class="codeline" data-linenumber="366"><td class="num" id="LN366">366</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="367"><td class="num" id="LN367">367</td><td class="line"> <span class='macro'>g_return_val_if_fail (available_languages == NULL, NULL)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_20<br>; if (available_languages == ((void*)0)) _g_boolean_var_20 = 1<br>; else _g_boolean_var_20 = 0; _g_boolean_var_20; }), 1))) { }<br> else { g_return_if_fail_warning (((gchar*) 0), ((const char*<br>) (__func__)), "available_languages == NULL"); return (((void<br>*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="368"><td class="num" id="LN368">368</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="369"><td class="num" id="LN369">369</td><td class="line"> available_languages_initialized = <span class='macro'>TRUE<span class='macro_popup'>(!(0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="370"><td class="num" id="LN370">370</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="371"><td class="num" id="LN371">371</td><td class="line"> broker = enchant_broker_init ();</td></tr>
+<tr class="codeline" data-linenumber="372"><td class="num" id="LN372">372</td><td class="line"> <span class='macro'>g_return_val_if_fail (broker != NULL, NULL)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_21<br>; if (broker != ((void*)0)) _g_boolean_var_21 = 1; else _g_boolean_var_21<br> = 0; _g_boolean_var_21; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "broker != NULL")<br>; return (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="373"><td class="num" id="LN373">373</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="374"><td class="num" id="LN374">374</td><td class="line"> <span class='comment'>/* Use a GTree to efficiently remove duplicates while building the list */</span></td></tr>
+<tr class="codeline" data-linenumber="375"><td class="num" id="LN375">375</td><td class="line"> dicts = g_tree_new_full (key_cmp,</td></tr>
+<tr class="codeline" data-linenumber="376"><td class="num" id="LN376">376</td><td class="line"> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>,</td></tr>
+<tr class="codeline" data-linenumber="377"><td class="num" id="LN377">377</td><td class="line"> (GDestroyNotify)g_free,</td></tr>
+<tr class="codeline" data-linenumber="378"><td class="num" id="LN378">378</td><td class="line"> (GDestroyNotify)g_free);</td></tr>
+<tr class="codeline" data-linenumber="379"><td class="num" id="LN379">379</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="380"><td class="num" id="LN380">380</td><td class="line"> iso_639_table = create_iso_639_table ();</td></tr>
+<tr class="codeline" data-linenumber="381"><td class="num" id="LN381">381</td><td class="line"> iso_3166_table = create_iso_3166_table ();</td></tr>
+<tr class="codeline" data-linenumber="382"><td class="num" id="LN382">382</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="383"><td class="num" id="LN383">383</td><td class="line"> enchant_broker_list_dicts (broker, enumerate_dicts, dicts);</td></tr>
+<tr class="codeline" data-linenumber="384"><td class="num" id="LN384">384</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="385"><td class="num" id="LN385">385</td><td class="line"> enchant_broker_free (broker);</td></tr>
+<tr class="codeline" data-linenumber="386"><td class="num" id="LN386">386</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="387"><td class="num" id="LN387">387</td><td class="line"> g_hash_table_destroy (iso_639_table);</td></tr>
+<tr class="codeline" data-linenumber="388"><td class="num" id="LN388">388</td><td class="line"> g_hash_table_destroy (iso_3166_table);</td></tr>
+<tr class="codeline" data-linenumber="389"><td class="num" id="LN389">389</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="390"><td class="num" id="LN390">390</td><td class="line"> iso_639_table = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="391"><td class="num" id="LN391">391</td><td class="line"> iso_3166_table = <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="392"><td class="num" id="LN392">392</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="393"><td class="num" id="LN393">393</td><td class="line"> g_tree_foreach (dicts, (GTraverseFunc)build_langs_list, <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>);</td></tr>
+<tr class="codeline" data-linenumber="394"><td class="num" id="LN394">394</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="395"><td class="num" id="LN395">395</td><td class="line"> g_tree_destroy (dicts);</td></tr>
+<tr class="codeline" data-linenumber="396"><td class="num" id="LN396">396</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="397"><td class="num" id="LN397">397</td><td class="line"> <span class='keyword'>return</span> available_languages;</td></tr>
+<tr class="codeline" data-linenumber="398"><td class="num" id="LN398">398</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="399"><td class="num" id="LN399">399</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="400"><td class="num" id="LN400">400</td><td class="line"><span class='keyword'>const</span> gchar *</td></tr>
+<tr class="codeline" data-linenumber="401"><td class="num" id="LN401">401</td><td class="line">pluma_spell_checker_language_to_string (<span class='keyword'>const</span> PlumaSpellCheckerLanguage *lang)</td></tr>
+<tr class="codeline" data-linenumber="402"><td class="num" id="LN402">402</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="403"><td class="num" id="LN403">403</td><td class="line"> <span class='keyword'>if</span> (lang == <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="404"><td class="num" id="LN404">404</td><td class="line"> <span class='comment'>/* Translators: this refers the Default language used by the</span></td></tr>
+<tr class="codeline" data-linenumber="405"><td class="num" id="LN405">405</td><td class="line"> <span class='comment'>* spell checker</span></td></tr>
+<tr class="codeline" data-linenumber="406"><td class="num" id="LN406">406</td><td class="line"> <span class='comment'>*/</span></td></tr>
+<tr class="codeline" data-linenumber="407"><td class="num" id="LN407">407</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>C_(<span class='string_literal'>"language"</span>, <span class='string_literal'>"Default"</span>)<span class='macro_popup'>g_dpgettext (((void*)0), "language" "\004" "Default", strlen (<br>"language") + 1)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="408"><td class="num" id="LN408">408</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="409"><td class="num" id="LN409">409</td><td class="line"> <span class='keyword'>return</span> lang-&gt;name;</td></tr>
+<tr class="codeline" data-linenumber="410"><td class="num" id="LN410">410</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="411"><td class="num" id="LN411">411</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="412"><td class="num" id="LN412">412</td><td class="line"><span class='keyword'>const</span> gchar *</td></tr>
+<tr class="codeline" data-linenumber="413"><td class="num" id="LN413">413</td><td class="line">pluma_spell_checker_language_to_key (<span class='keyword'>const</span> PlumaSpellCheckerLanguage *lang)</td></tr>
+<tr class="codeline" data-linenumber="414"><td class="num" id="LN414">414</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="415"><td class="num" id="LN415">415</td><td class="line"> <span class='macro'>g_return_val_if_fail (lang != NULL, NULL)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_22<br>; if (lang != ((void*)0)) _g_boolean_var_22 = 1; else _g_boolean_var_22<br> = 0; _g_boolean_var_22; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "lang != NULL"); return<br> (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="416"><td class="num" id="LN416">416</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="417"><td class="num" id="LN417">417</td><td class="line"> <span class='keyword'>return</span> lang-&gt;abrev;</td></tr>
+<tr class="codeline" data-linenumber="418"><td class="num" id="LN418">418</td><td class="line">}</td></tr>
+<tr class="codeline" data-linenumber="419"><td class="num" id="LN419">419</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="420"><td class="num" id="LN420">420</td><td class="line"><span class='keyword'>const</span> PlumaSpellCheckerLanguage *</td></tr>
+<tr class="codeline" data-linenumber="421"><td class="num" id="LN421">421</td><td class="line">pluma_spell_checker_language_from_key (<span class='keyword'>const</span> gchar *key)</td></tr>
+<tr class="codeline" data-linenumber="422"><td class="num" id="LN422">422</td><td class="line">{</td></tr>
+<tr class="codeline" data-linenumber="423"><td class="num" id="LN423">423</td><td class="line"> <span class='keyword'>const</span> GSList *langs;</td></tr>
+<tr class="codeline" data-linenumber="424"><td class="num" id="LN424">424</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="425"><td class="num" id="LN425">425</td><td class="line"> <span class='macro'>g_return_val_if_fail (key != NULL, NULL)<span class='macro_popup'>do { if ((__builtin_expect (__extension__ ({ int _g_boolean_var_23<br>; if (key != ((void*)0)) _g_boolean_var_23 = 1; else _g_boolean_var_23<br> = 0; _g_boolean_var_23; }), 1))) { } else { g_return_if_fail_warning<br> (((gchar*) 0), ((const char*) (__func__)), "key != NULL"); return<br> (((void*)0)); } } while (0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="426"><td class="num" id="LN426">426</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="427"><td class="num" id="LN427">427</td><td class="line"> langs = pluma_spell_checker_get_available_languages ();</td></tr>
+<tr class="codeline" data-linenumber="428"><td class="num" id="LN428">428</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="429"><td class="num" id="LN429">429</td><td class="line"> <span class='keyword'>while</span> (langs != <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>)</td></tr>
+<tr class="codeline" data-linenumber="430"><td class="num" id="LN430">430</td><td class="line"> {</td></tr>
+<tr class="codeline" data-linenumber="431"><td class="num" id="LN431">431</td><td class="line"> <span class='keyword'>const</span> PlumaSpellCheckerLanguage *l = (<span class='keyword'>const</span> PlumaSpellCheckerLanguage *)langs-&gt;data;</td></tr>
+<tr class="codeline" data-linenumber="432"><td class="num" id="LN432">432</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="433"><td class="num" id="LN433">433</td><td class="line"> <span class='keyword'>if</span> (g_ascii_strcasecmp (key, l-&gt;abrev) == 0)</td></tr>
+<tr class="codeline" data-linenumber="434"><td class="num" id="LN434">434</td><td class="line"> <span class='keyword'>return</span> l;</td></tr>
+<tr class="codeline" data-linenumber="435"><td class="num" id="LN435">435</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="436"><td class="num" id="LN436">436</td><td class="line"> langs = <span class='macro'>g_slist_next (langs)<span class='macro_popup'>((langs) ? (((GSList *)(langs))-&gt;next) : ((void*)0))</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="437"><td class="num" id="LN437">437</td><td class="line"> }</td></tr>
+<tr class="codeline" data-linenumber="438"><td class="num" id="LN438">438</td><td class="line"> </td></tr>
+<tr class="codeline" data-linenumber="439"><td class="num" id="LN439">439</td><td class="line"> <span class='keyword'>return</span> <span class='macro'>NULL<span class='macro_popup'>((void*)0)</span></span>;</td></tr>
+<tr class="codeline" data-linenumber="440"><td class="num" id="LN440">440</td><td class="line">}</td></tr>
+</table></body></html>
diff --git a/2023-05-28-030536-6612-1@f643dde74cbd_master/scanview.css b/2023-05-28-030536-6612-1@f643dde74cbd_master/scanview.css
new file mode 100644
index 00000000..cf8a5a6a
--- /dev/null
+++ b/2023-05-28-030536-6612-1@f643dde74cbd_master/scanview.css
@@ -0,0 +1,62 @@
+body { color:#000000; background-color:#ffffff }
+body { font-family: Helvetica, sans-serif; font-size:9pt }
+h1 { font-size: 14pt; }
+h2 { font-size: 12pt; }
+table { font-size:9pt }
+table { border-spacing: 0px; border: 1px solid black }
+th, table thead {
+ background-color:#eee; color:#666666;
+ font-weight: bold; cursor: default;
+ text-align:center;
+ font-weight: bold; font-family: Verdana;
+ white-space:nowrap;
+}
+.W { font-size:0px }
+th, td { padding:5px; padding-left:8px; text-align:left }
+td.SUMM_DESC { padding-left:12px }
+td.DESC { white-space:pre }
+td.Q { text-align:right }
+td { text-align:left }
+tbody.scrollContent { overflow:auto }
+
+table.form_group {
+ background-color: #ccc;
+ border: 1px solid #333;
+ padding: 2px;
+}
+
+table.form_inner_group {
+ background-color: #ccc;
+ border: 1px solid #333;
+ padding: 0px;
+}
+
+table.form {
+ background-color: #999;
+ border: 1px solid #333;
+ padding: 2px;
+}
+
+td.form_label {
+ text-align: right;
+ vertical-align: top;
+}
+/* For one line entires */
+td.form_clabel {
+ text-align: right;
+ vertical-align: center;
+}
+td.form_value {
+ text-align: left;
+ vertical-align: top;
+}
+td.form_submit {
+ text-align: right;
+ vertical-align: top;
+}
+
+h1.SubmitFail {
+ color: #f00;
+}
+h1.SubmitOk {
+}
diff --git a/2023-05-28-030536-6612-1@f643dde74cbd_master/sorttable.js b/2023-05-28-030536-6612-1@f643dde74cbd_master/sorttable.js
new file mode 100644
index 00000000..32faa078
--- /dev/null
+++ b/2023-05-28-030536-6612-1@f643dde74cbd_master/sorttable.js
@@ -0,0 +1,492 @@
+/*
+ SortTable
+ version 2
+ 7th April 2007
+ Stuart Langridge, http://www.kryogenix.org/code/browser/sorttable/
+
+ Instructions:
+ Download this file
+ Add <script src="sorttable.js"></script> to your HTML
+ Add class="sortable" to any table you'd like to make sortable
+ Click on the headers to sort
+
+ Thanks to many, many people for contributions and suggestions.
+ Licenced as X11: http://www.kryogenix.org/code/browser/licence.html
+ This basically means: do what you want with it.
+*/
+
+
+var stIsIE = /*@cc_on!@*/false;
+
+sorttable = {
+ init: function() {
+ // quit if this function has already been called
+ if (arguments.callee.done) return;
+ // flag this function so we don't do the same thing twice
+ arguments.callee.done = true;
+ // kill the timer
+ if (_timer) clearInterval(_timer);
+
+ if (!document.createElement || !document.getElementsByTagName) return;
+
+ sorttable.DATE_RE = /^(\d\d?)[\/\.-](\d\d?)[\/\.-]((\d\d)?\d\d)$/;
+
+ forEach(document.getElementsByTagName('table'), function(table) {
+ if (table.className.search(/\bsortable\b/) != -1) {
+ sorttable.makeSortable(table);
+ }
+ });
+
+ },
+
+ makeSortable: function(table) {
+ if (table.getElementsByTagName('thead').length == 0) {
+ // table doesn't have a tHead. Since it should have, create one and
+ // put the first table row in it.
+ the = document.createElement('thead');
+ the.appendChild(table.rows[0]);
+ table.insertBefore(the,table.firstChild);
+ }
+ // Safari doesn't support table.tHead, sigh
+ if (table.tHead == null) table.tHead = table.getElementsByTagName('thead')[0];
+
+ if (table.tHead.rows.length != 1) return; // can't cope with two header rows
+
+ // Sorttable v1 put rows with a class of "sortbottom" at the bottom (as
+ // "total" rows, for example). This is B&R, since what you're supposed
+ // to do is put them in a tfoot. So, if there are sortbottom rows,
+ // for backward compatibility, move them to tfoot (creating it if needed).
+ sortbottomrows = [];
+ for (var i=0; i<table.rows.length; i++) {
+ if (table.rows[i].className.search(/\bsortbottom\b/) != -1) {
+ sortbottomrows[sortbottomrows.length] = table.rows[i];
+ }
+ }
+ if (sortbottomrows) {
+ if (table.tFoot == null) {
+ // table doesn't have a tfoot. Create one.
+ tfo = document.createElement('tfoot');
+ table.appendChild(tfo);
+ }
+ for (var i=0; i<sortbottomrows.length; i++) {
+ tfo.appendChild(sortbottomrows[i]);
+ }
+ delete sortbottomrows;
+ }
+
+ // work through each column and calculate its type
+ headrow = table.tHead.rows[0].cells;
+ for (var i=0; i<headrow.length; i++) {
+ // manually override the type with a sorttable_type attribute
+ if (!headrow[i].className.match(/\bsorttable_nosort\b/)) { // skip this col
+ mtch = headrow[i].className.match(/\bsorttable_([a-z0-9]+)\b/);
+ if (mtch) { override = mtch[1]; }
+ if (mtch && typeof sorttable["sort_"+override] == 'function') {
+ headrow[i].sorttable_sortfunction = sorttable["sort_"+override];
+ } else {
+ headrow[i].sorttable_sortfunction = sorttable.guessType(table,i);
+ }
+ // make it clickable to sort
+ headrow[i].sorttable_columnindex = i;
+ headrow[i].sorttable_tbody = table.tBodies[0];
+ dean_addEvent(headrow[i],"click", function(e) {
+
+ if (this.className.search(/\bsorttable_sorted\b/) != -1) {
+ // if we're already sorted by this column, just
+ // reverse the table, which is quicker
+ sorttable.reverse(this.sorttable_tbody);
+ this.className = this.className.replace('sorttable_sorted',
+ 'sorttable_sorted_reverse');
+ this.removeChild(document.getElementById('sorttable_sortfwdind'));
+ sortrevind = document.createElement('span');
+ sortrevind.id = "sorttable_sortrevind";
+ sortrevind.innerHTML = stIsIE ? '&nbsp<font face="webdings">5</font>' : '&nbsp;&#x25B4;';
+ this.appendChild(sortrevind);
+ return;
+ }
+ if (this.className.search(/\bsorttable_sorted_reverse\b/) != -1) {
+ // if we're already sorted by this column in reverse, just
+ // re-reverse the table, which is quicker
+ sorttable.reverse(this.sorttable_tbody);
+ this.className = this.className.replace('sorttable_sorted_reverse',
+ 'sorttable_sorted');
+ this.removeChild(document.getElementById('sorttable_sortrevind'));
+ sortfwdind = document.createElement('span');
+ sortfwdind.id = "sorttable_sortfwdind";
+ sortfwdind.innerHTML = stIsIE ? '&nbsp<font face="webdings">6</font>' : '&nbsp;&#x25BE;';
+ this.appendChild(sortfwdind);
+ return;
+ }
+
+ // remove sorttable_sorted classes
+ theadrow = this.parentNode;
+ forEach(theadrow.childNodes, function(cell) {
+ if (cell.nodeType == 1) { // an element
+ cell.className = cell.className.replace('sorttable_sorted_reverse','');
+ cell.className = cell.className.replace('sorttable_sorted','');
+ }
+ });
+ sortfwdind = document.getElementById('sorttable_sortfwdind');
+ if (sortfwdind) { sortfwdind.parentNode.removeChild(sortfwdind); }
+ sortrevind = document.getElementById('sorttable_sortrevind');
+ if (sortrevind) { sortrevind.parentNode.removeChild(sortrevind); }
+
+ this.className += ' sorttable_sorted';
+ sortfwdind = document.createElement('span');
+ sortfwdind.id = "sorttable_sortfwdind";
+ sortfwdind.innerHTML = stIsIE ? '&nbsp<font face="webdings">6</font>' : '&nbsp;&#x25BE;';
+ this.appendChild(sortfwdind);
+
+ // build an array to sort. This is a Schwartzian transform thing,
+ // i.e., we "decorate" each row with the actual sort key,
+ // sort based on the sort keys, and then put the rows back in order
+ // which is a lot faster because you only do getInnerText once per row
+ row_array = [];
+ col = this.sorttable_columnindex;
+ rows = this.sorttable_tbody.rows;
+ for (var j=0; j<rows.length; j++) {
+ row_array[row_array.length] = [sorttable.getInnerText(rows[j].cells[col]), rows[j]];
+ }
+ /* If you want a stable sort, uncomment the following line */
+ sorttable.shaker_sort(row_array, this.sorttable_sortfunction);
+ /* and comment out this one */
+ //row_array.sort(this.sorttable_sortfunction);
+
+ tb = this.sorttable_tbody;
+ for (var j=0; j<row_array.length; j++) {
+ tb.appendChild(row_array[j][1]);
+ }
+
+ delete row_array;
+ });
+ }
+ }
+ },
+
+ guessType: function(table, column) {
+ // guess the type of a column based on its first non-blank row
+ sortfn = sorttable.sort_alpha;
+ for (var i=0; i<table.tBodies[0].rows.length; i++) {
+ text = sorttable.getInnerText(table.tBodies[0].rows[i].cells[column]);
+ if (text != '') {
+ if (text.match(/^-?[�$�]?[\d,.]+%?$/)) {
+ return sorttable.sort_numeric;
+ }
+ // check for a date: dd/mm/yyyy or dd/mm/yy
+ // can have / or . or - as separator
+ // can be mm/dd as well
+ possdate = text.match(sorttable.DATE_RE)
+ if (possdate) {
+ // looks like a date
+ first = parseInt(possdate[1]);
+ second = parseInt(possdate[2]);
+ if (first > 12) {
+ // definitely dd/mm
+ return sorttable.sort_ddmm;
+ } else if (second > 12) {
+ return sorttable.sort_mmdd;
+ } else {
+ // looks like a date, but we can't tell which, so assume
+ // that it's dd/mm (English imperialism!) and keep looking
+ sortfn = sorttable.sort_ddmm;
+ }
+ }
+ }
+ }
+ return sortfn;
+ },
+
+ getInnerText: function(node) {
+ // gets the text we want to use for sorting for a cell.
+ // strips leading and trailing whitespace.
+ // this is *not* a generic getInnerText function; it's special to sorttable.
+ // for example, you can override the cell text with a customkey attribute.
+ // it also gets .value for <input> fields.
+
+ hasInputs = (typeof node.getElementsByTagName == 'function') &&
+ node.getElementsByTagName('input').length;
+
+ if (node.getAttribute("sorttable_customkey") != null) {
+ return node.getAttribute("sorttable_customkey");
+ }
+ else if (typeof node.textContent != 'undefined' && !hasInputs) {
+ return node.textContent.replace(/^\s+|\s+$/g, '');
+ }
+ else if (typeof node.innerText != 'undefined' && !hasInputs) {
+ return node.innerText.replace(/^\s+|\s+$/g, '');
+ }
+ else if (typeof node.text != 'undefined' && !hasInputs) {
+ return node.text.replace(/^\s+|\s+$/g, '');
+ }
+ else {
+ switch (node.nodeType) {
+ case 3:
+ if (node.nodeName.toLowerCase() == 'input') {
+ return node.value.replace(/^\s+|\s+$/g, '');
+ }
+ case 4:
+ return node.nodeValue.replace(/^\s+|\s+$/g, '');
+ break;
+ case 1:
+ case 11:
+ var innerText = '';
+ for (var i = 0; i < node.childNodes.length; i++) {
+ innerText += sorttable.getInnerText(node.childNodes[i]);
+ }
+ return innerText.replace(/^\s+|\s+$/g, '');
+ break;
+ default:
+ return '';
+ }
+ }
+ },
+
+ reverse: function(tbody) {
+ // reverse the rows in a tbody
+ newrows = [];
+ for (var i=0; i<tbody.rows.length; i++) {
+ newrows[newrows.length] = tbody.rows[i];
+ }
+ for (var i=newrows.length-1; i>=0; i--) {
+ tbody.appendChild(newrows[i]);
+ }
+ delete newrows;
+ },
+
+ /* sort functions
+ each sort function takes two parameters, a and b
+ you are comparing a[0] and b[0] */
+ sort_numeric: function(a,b) {
+ aa = parseFloat(a[0].replace(/[^0-9.-]/g,''));
+ if (isNaN(aa)) aa = 0;
+ bb = parseFloat(b[0].replace(/[^0-9.-]/g,''));
+ if (isNaN(bb)) bb = 0;
+ return aa-bb;
+ },
+ sort_alpha: function(a,b) {
+ if (a[0]==b[0]) return 0;
+ if (a[0]<b[0]) return -1;
+ return 1;
+ },
+ sort_ddmm: function(a,b) {
+ mtch = a[0].match(sorttable.DATE_RE);
+ y = mtch[3]; m = mtch[2]; d = mtch[1];
+ if (m.length == 1) m = '0'+m;
+ if (d.length == 1) d = '0'+d;
+ dt1 = y+m+d;
+ mtch = b[0].match(sorttable.DATE_RE);
+ y = mtch[3]; m = mtch[2]; d = mtch[1];
+ if (m.length == 1) m = '0'+m;
+ if (d.length == 1) d = '0'+d;
+ dt2 = y+m+d;
+ if (dt1==dt2) return 0;
+ if (dt1<dt2) return -1;
+ return 1;
+ },
+ sort_mmdd: function(a,b) {
+ mtch = a[0].match(sorttable.DATE_RE);
+ y = mtch[3]; d = mtch[2]; m = mtch[1];
+ if (m.length == 1) m = '0'+m;
+ if (d.length == 1) d = '0'+d;
+ dt1 = y+m+d;
+ mtch = b[0].match(sorttable.DATE_RE);
+ y = mtch[3]; d = mtch[2]; m = mtch[1];
+ if (m.length == 1) m = '0'+m;
+ if (d.length == 1) d = '0'+d;
+ dt2 = y+m+d;
+ if (dt1==dt2) return 0;
+ if (dt1<dt2) return -1;
+ return 1;
+ },
+
+ shaker_sort: function(list, comp_func) {
+ // A stable sort function to allow multi-level sorting of data
+ // see: http://en.wikipedia.org/wiki/Cocktail_sort
+ // thanks to Joseph Nahmias
+ var b = 0;
+ var t = list.length - 1;
+ var swap = true;
+
+ while(swap) {
+ swap = false;
+ for(var i = b; i < t; ++i) {
+ if ( comp_func(list[i], list[i+1]) > 0 ) {
+ var q = list[i]; list[i] = list[i+1]; list[i+1] = q;
+ swap = true;
+ }
+ } // for
+ t--;
+
+ if (!swap) break;
+
+ for(var i = t; i > b; --i) {
+ if ( comp_func(list[i], list[i-1]) < 0 ) {
+ var q = list[i]; list[i] = list[i-1]; list[i-1] = q;
+ swap = true;
+ }
+ } // for
+ b++;
+
+ } // while(swap)
+ }
+}
+
+/* ******************************************************************
+ Supporting functions: bundled here to avoid depending on a library
+ ****************************************************************** */
+
+// Dean Edwards/Matthias Miller/John Resig
+
+/* for Mozilla/Opera9 */
+if (document.addEventListener) {
+ document.addEventListener("DOMContentLoaded", sorttable.init, false);
+}
+
+/* for Internet Explorer */
+/*@cc_on @*/
+/*@if (@_win32)
+ document.write("<script id=__ie_onload defer src=javascript:void(0)><\/script>");
+ var script = document.getElementById("__ie_onload");
+ script.onreadystatechange = function() {
+ if (this.readyState == "complete") {
+ sorttable.init(); // call the onload handler
+ }
+ };
+/*@end @*/
+
+/* for Safari */
+if (/WebKit/i.test(navigator.userAgent)) { // sniff
+ var _timer = setInterval(function() {
+ if (/loaded|complete/.test(document.readyState)) {
+ sorttable.init(); // call the onload handler
+ }
+ }, 10);
+}
+
+/* for other browsers */
+window.onload = sorttable.init;
+
+// written by Dean Edwards, 2005
+// with input from Tino Zijdel, Matthias Miller, Diego Perini
+
+// http://dean.edwards.name/weblog/2005/10/add-event/
+
+function dean_addEvent(element, type, handler) {
+ if (element.addEventListener) {
+ element.addEventListener(type, handler, false);
+ } else {
+ // assign each event handler a unique ID
+ if (!handler.$$guid) handler.$$guid = dean_addEvent.guid++;
+ // create a hash table of event types for the element
+ if (!element.events) element.events = {};
+ // create a hash table of event handlers for each element/event pair
+ var handlers = element.events[type];
+ if (!handlers) {
+ handlers = element.events[type] = {};
+ // store the existing event handler (if there is one)
+ if (element["on" + type]) {
+ handlers[0] = element["on" + type];
+ }
+ }
+ // store the event handler in the hash table
+ handlers[handler.$$guid] = handler;
+ // assign a global event handler to do all the work
+ element["on" + type] = handleEvent;
+ }
+};
+// a counter used to create unique IDs
+dean_addEvent.guid = 1;
+
+function removeEvent(element, type, handler) {
+ if (element.removeEventListener) {
+ element.removeEventListener(type, handler, false);
+ } else {
+ // delete the event handler from the hash table
+ if (element.events && element.events[type]) {
+ delete element.events[type][handler.$$guid];
+ }
+ }
+};
+
+function handleEvent(event) {
+ var returnValue = true;
+ // grab the event object (IE uses a global event object)
+ event = event || fixEvent(((this.ownerDocument || this.document || this).parentWindow || window).event);
+ // get a reference to the hash table of event handlers
+ var handlers = this.events[event.type];
+ // execute each event handler
+ for (var i in handlers) {
+ this.$$handleEvent = handlers[i];
+ if (this.$$handleEvent(event) === false) {
+ returnValue = false;
+ }
+ }
+ return returnValue;
+};
+
+function fixEvent(event) {
+ // add W3C standard event methods
+ event.preventDefault = fixEvent.preventDefault;
+ event.stopPropagation = fixEvent.stopPropagation;
+ return event;
+};
+fixEvent.preventDefault = function() {
+ this.returnValue = false;
+};
+fixEvent.stopPropagation = function() {
+ this.cancelBubble = true;
+}
+
+// Dean's forEach: http://dean.edwards.name/base/forEach.js
+/*
+ forEach, version 1.0
+ Copyright 2006, Dean Edwards
+ License: http://www.opensource.org/licenses/mit-license.php
+*/
+
+// array-like enumeration
+if (!Array.forEach) { // mozilla already supports this
+ Array.forEach = function(array, block, context) {
+ for (var i = 0; i < array.length; i++) {
+ block.call(context, array[i], i, array);
+ }
+ };
+}
+
+// generic enumeration
+Function.prototype.forEach = function(object, block, context) {
+ for (var key in object) {
+ if (typeof this.prototype[key] == "undefined") {
+ block.call(context, object[key], key, object);
+ }
+ }
+};
+
+// character enumeration
+String.forEach = function(string, block, context) {
+ Array.forEach(string.split(""), function(chr, index) {
+ block.call(context, chr, index, string);
+ });
+};
+
+// globally resolve forEach enumeration
+var forEach = function(object, block, context) {
+ if (object) {
+ var resolve = Object; // default
+ if (object instanceof Function) {
+ // functions have a "length" property
+ resolve = Function;
+ } else if (object.forEach instanceof Function) {
+ // the object implements a custom forEach method so use that
+ object.forEach(block, context);
+ return;
+ } else if (typeof object == "string") {
+ // the object is a string
+ resolve = String;
+ } else if (typeof object.length == "number") {
+ // the object is array-like
+ resolve = Array;
+ }
+ resolve.forEach(object, block, context);
+ }
+};