summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/Fl_Help_Dialog.cxx61
-rw-r--r--src/Fl_Help_Dialog.fl66
2 files changed, 82 insertions, 45 deletions
diff --git a/src/Fl_Help_Dialog.cxx b/src/Fl_Help_Dialog.cxx
index 0795d784d..6e2b83d23 100644
--- a/src/Fl_Help_Dialog.cxx
+++ b/src/Fl_Help_Dialog.cxx
@@ -32,34 +32,43 @@
#include <FL/fl_ask.H>
void Fl_Help_Dialog::cb_view__i(Fl_Help_View*, void*) {
- if (view_->changed())
+ if (view_->filename())
{
- index_ ++;
-
- if (index_ >= 100)
+ if (view_->changed())
{
- memmove(line_, line_ + 10, sizeof(line_[0]) * 90);
- memmove(file_, file_ + 10, sizeof(file_[0]) * 90);
- index_ -= 10;
- }
+ index_ ++;
+
+ if (index_ >= 100)
+ {
+ memmove(line_, line_ + 10, sizeof(line_[0]) * 90);
+ memmove(file_, file_ + 10, sizeof(file_[0]) * 90);
+ index_ -= 10;
+ }
- max_ = index_;
+ max_ = index_;
- strlcpy(file_[index_], view_->filename(),sizeof(file_[0]));
- line_[index_] = view_->topline();
+ strlcpy(file_[index_], view_->filename(),sizeof(file_[0]));
+ line_[index_] = view_->topline();
- if (index_ > 0)
- back_->activate();
- else
- back_->deactivate();
+ if (index_ > 0)
+ back_->activate();
+ else
+ back_->deactivate();
- forward_->deactivate();
- window_->label(view_->title());
-}
-else if (view_->filename())
-{
- strlcpy(file_[index_], view_->filename(), sizeof(file_[0]));
+ forward_->deactivate();
+ window_->label(view_->title());
+ }
+ else // if ! view_->changed()
+ {
+ strlcpy(file_[index_], view_->filename(), sizeof(file_[0]));
+ line_[index_] = view_->topline();
+ }
+} else { // if ! view_->filename()
+ index_ = 0; // hitting an internal page will disable the back/fwd buffer
+ file_[index_][0] = 0; // unnamed internal page
line_[index_] = view_->topline();
+ back_->deactivate();
+ forward_->deactivate();
};
}
void Fl_Help_Dialog::cb_view_(Fl_Help_View* o, void* v) {
@@ -281,6 +290,16 @@ void Fl_Help_Dialog::topline(int n) {
view_->topline(n);
}
+void Fl_Help_Dialog::value(const char *f) {
+ view_->set_changed();
+view_->value(f);
+window_->label(view_->title());
+}
+
+const char * Fl_Help_Dialog::value() const {
+ return view_->value();
+}
+
int Fl_Help_Dialog::visible() {
return (window_->visible());
}
diff --git a/src/Fl_Help_Dialog.fl b/src/Fl_Help_Dialog.fl
index 311d69c26..ddf680764 100644
--- a/src/Fl_Help_Dialog.fl
+++ b/src/Fl_Help_Dialog.fl
@@ -42,41 +42,49 @@ class FL_EXPORT Fl_Help_Dialog {open
decl {int line_[100];} {}
decl {char file_[100][256];} {}
decl {int find_pos_;} {}
- Function {Fl_Help_Dialog()} {open
- } {
+ Function {Fl_Help_Dialog()} {} {
Fl_Window window_ {
- label {Help Dialog} open selected
+ label {Help Dialog} open
private xywh {398 65 530 385} type Double resizable size_range {260 150 0 0} visible
} {
Fl_Group view_ {
- callback {if (view_->changed())
+ callback {if (view_->filename())
{
- index_ ++;
-
- if (index_ >= 100)
+ if (view_->changed())
{
- memmove(line_, line_ + 10, sizeof(line_[0]) * 90);
- memmove(file_, file_ + 10, sizeof(file_[0]) * 90);
- index_ -= 10;
- }
+ index_ ++;
+
+ if (index_ >= 100)
+ {
+ memmove(line_, line_ + 10, sizeof(line_[0]) * 90);
+ memmove(file_, file_ + 10, sizeof(file_[0]) * 90);
+ index_ -= 10;
+ }
- max_ = index_;
+ max_ = index_;
- strlcpy(file_[index_], view_->filename(),sizeof(file_[0]));
- line_[index_] = view_->topline();
+ strlcpy(file_[index_], view_->filename(),sizeof(file_[0]));
+ line_[index_] = view_->topline();
- if (index_ > 0)
- back_->activate();
- else
- back_->deactivate();
+ if (index_ > 0)
+ back_->activate();
+ else
+ back_->deactivate();
- forward_->deactivate();
- window_->label(view_->title());
-}
-else if (view_->filename())
-{
- strlcpy(file_[index_], view_->filename(), sizeof(file_[0]));
+ forward_->deactivate();
+ window_->label(view_->title());
+ }
+ else // if ! view_->changed()
+ {
+ strlcpy(file_[index_], view_->filename(), sizeof(file_[0]));
+ line_[index_] = view_->topline();
+ }
+} else { // if ! view_->filename()
+ index_ = 0; // hitting an internal page will disable the back/fwd buffer
+ file_[index_][0] = 0; // unnamed internal page
line_[index_] = view_->topline();
+ back_->deactivate();
+ forward_->deactivate();
}} open
private xywh {10 10 510 330} box DOWN_BOX selection_color 15 resizable
code0 {\#include <FL/Fl_Help_View.H>}
@@ -226,6 +234,16 @@ else
} {
code {view_->topline(n);} {}
}
+ Function {value(const char *f)} {return_type void
+ } {
+ code {view_->set_changed();
+view_->value(f);
+window_->label(view_->title());} {}
+ }
+ Function {value() const} {selected return_type {const char *}
+ } {
+ code {return view_->value();} {}
+ }
Function {visible()} {return_type int
} {
code {return (window_->visible());} {}