summaryrefslogtreecommitdiff
path: root/src/GipfelWidget.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'src/GipfelWidget.cxx')
-rw-r--r--src/GipfelWidget.cxx22
1 files changed, 15 insertions, 7 deletions
diff --git a/src/GipfelWidget.cxx b/src/GipfelWidget.cxx
index 0f94f9f..b895ecb 100644
--- a/src/GipfelWidget.cxx
+++ b/src/GipfelWidget.cxx
@@ -33,6 +33,7 @@
static double pi_d, deg2rad;
GipfelWidget::GipfelWidget(int X,int Y,int W, int H): Fl_Group(X, Y, W, H) {
+ end();
pi_d = asin(1.0) * 2.0;
deg2rad = pi_d / 180.0;
img = NULL;
@@ -286,19 +287,16 @@ GipfelWidget::draw() {
}
if (focused_mountain) {
- static char buf[128];
m = focused_mountain;
int m_x = w() / 2 + x() + (int) rint(m->x);
int m_y = h() / 2 + y() + (int) rint(m->y);
- snprintf(buf, sizeof(buf), "%s (%dm), distance %.2fkm",
- m->name, (int) m->height, pan->get_real_distance(m) / 1000.0);
-
fl_color(FL_YELLOW);
- fl_rectf(m_x, m_y - height, (int) fl_width(buf) + 2, height + 2);
+ fl_rectf(m_x, m_y - height,
+ (int) fl_width(focused_mountain_label) + 2, height + 2);
fl_color(FL_BLACK);
- fl_draw(buf, m_x, m_y);
+ fl_draw(focused_mountain_label, m_x, m_y);
}
@@ -613,6 +611,10 @@ GipfelWidget::handle(int event) {
cur_mountain = m;
} else if (Fl::event_button() == 2) {
toggle_known_mountain(mark_x, mark_y);
+ if (focused_mountain) {
+ focused_mountain = NULL;
+ redraw();
+ }
}
Fl::focus(this);
@@ -629,7 +631,13 @@ GipfelWidget::handle(int event) {
return 1;
case FL_MOVE:
m = find_mountain(pan->get_visible_mountains(), Fl::event_x()-x(), Fl::event_y()-y());
- if (m && m != focused_mountain) {
+ if (m != focused_mountain && (!m || !known_hills->contains(m))) {
+ if (m)
+ snprintf(focused_mountain_label,
+ sizeof(focused_mountain_label) - 1,
+ "%s (%dm), distance %.2fkm",
+ m->name, (int) m->height, pan->get_real_distance(m) / 1000.0);
+
focused_mountain = m;
redraw();
}