summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/Fl_Search_Chooser.H13
-rw-r--r--src/Fl_Search_Chooser.cxx40
-rw-r--r--src/GipfelWidget.cxx3
-rw-r--r--src/ImageMetaData.cxx2
-rw-r--r--src/Panorama.cxx1
5 files changed, 40 insertions, 19 deletions
diff --git a/src/Fl_Search_Chooser.H b/src/Fl_Search_Chooser.H
index e968452..aacb57e 100644
--- a/src/Fl_Search_Chooser.H
+++ b/src/Fl_Search_Chooser.H
@@ -17,22 +17,27 @@ class Fl_Search_Browser : public Fl_Select_Browser {
Fl_Search_Browser(int X, int Y, int W, int H, const char *c):Fl_Select_Browser(X,Y,W,H,c){};
int find_prefix(const char *p);
+
private:
int find_prefix(const char *p, int s, int e);
};
-class Fl_Search_Chooser {
+class Fl_Search_Chooser : public Fl_Window {
private:
+ int visible_focus;
+
public:
- Fl_Window *w;
Fl_Search_Browser *sb;
Fl_Search_Chooser(const char *title);
+ void close();
+
void add(const char *t, void *d);
+
void *data();
- void show();
- int shown();
+
+ int handle(int event);
};
#endif
diff --git a/src/Fl_Search_Chooser.cxx b/src/Fl_Search_Chooser.cxx
index d4f93b2..0b3cc93 100644
--- a/src/Fl_Search_Chooser.cxx
+++ b/src/Fl_Search_Chooser.cxx
@@ -22,7 +22,7 @@ Fl_Search_Browser::find_prefix(const char *p) {
select(i);
return 0;
}
-};
+}
int
Fl_Search_Browser::find_prefix(const char *p, int s, int e) {
@@ -56,19 +56,20 @@ static void input_cb(Fl_Input* in, void*c) {
static void ok_cb(Fl_Input* in, void*c) {
Fl_Search_Chooser *sc = (Fl_Search_Chooser *) c;
- sc->w->hide();
+ sc->close();
}
static void cancel_cb(Fl_Input* in, void*c) {
Fl_Search_Chooser *sc = (Fl_Search_Chooser *) c;
sc->sb->deselect();
- sc->w->hide();
+ sc->close();
}
-Fl_Search_Chooser::Fl_Search_Chooser(const char *title) {
- w = new Fl_Window(320, 320, title?title:"Choose");
- Fl_Group *g = new Fl_Group(10, 10, w->w() - 10, w->h() - 10);
+Fl_Search_Chooser::Fl_Search_Chooser(const char *title) : Fl_Window(320, 320, title?title:"Choose") {
+ visible_focus = Fl::visible_focus();
+ Fl::visible_focus(0);
+ Fl_Group *g = new Fl_Group(10, 10, w() - 10, h() - 10);
sb = new Fl_Search_Browser(g->x(), g->y(), g->w() , g->h() - 100, NULL);
sb->type(FL_HOLD_BROWSER);
Fl_Input *in = new Fl_Input(g->x()+50, g->h()-80, g->w()-80, 20, "Search");
@@ -80,7 +81,13 @@ Fl_Search_Chooser::Fl_Search_Chooser(const char *title) {
ok_b->callback((Fl_Callback*) ok_cb, this);
Fl::focus(in);
g->end();
- w->end();
+ end();
+}
+
+void
+Fl_Search_Chooser::close() {
+ hide();
+ Fl::visible_focus(visible_focus);
}
void
@@ -98,12 +105,19 @@ Fl_Search_Chooser::data() {
}
}
-void
-Fl_Search_Chooser::show() {
- w->show();
-}
int
-Fl_Search_Chooser::shown() {
- return w->shown();
+Fl_Search_Chooser::handle(int event) {
+ switch(event) {
+ case FL_KEYBOARD:
+ int key = Fl::event_key();
+
+ if (key == FL_Up || key == FL_Down) {
+ return sb->handle(event);
+ } else if (key == FL_Enter) {
+ close();
+ }
+ }
+
+ return Fl_Window::handle(event);
}
diff --git a/src/GipfelWidget.cxx b/src/GipfelWidget.cxx
index 4f250cb..9d43f7b 100644
--- a/src/GipfelWidget.cxx
+++ b/src/GipfelWidget.cxx
@@ -193,7 +193,7 @@ GipfelWidget::set_viewpoint(const char *pos) {
r = pan->set_viewpoint(pos);
set_labels(pan->get_visible_mountains());
-
+ redraw();
return r;
}
@@ -201,6 +201,7 @@ void
GipfelWidget::set_viewpoint(const Hill *m) {
pan->set_viewpoint(m);
set_labels(pan->get_visible_mountains());
+ redraw();
}
static void
diff --git a/src/ImageMetaData.cxx b/src/ImageMetaData.cxx
index 55ee08e..e9a1241 100644
--- a/src/ImageMetaData.cxx
+++ b/src/ImageMetaData.cxx
@@ -169,7 +169,7 @@ ImageMetaData::load_image_jpgcom(char *name) {
int status;
char buf[1024];
double lo, la, he, dir, ni, ti, fr, _k0, _k1;
- int pt;
+ int pt = 0;
int n, ret = 1;
args[0] = "rdjpgcom";
diff --git a/src/Panorama.cxx b/src/Panorama.cxx
index 27e4ab0..b1d42d3 100644
--- a/src/Panorama.cxx
+++ b/src/Panorama.cxx
@@ -233,6 +233,7 @@ Panorama::set_projection(ProjectionLSQ::Projection_t p) {
if (proj) {
delete proj;
+ proj = NULL;
}
switch(projection_type) {