Merge lp:~nomeata/widelands/plot-improvements into lp:widelands

Proposed by Joachim Breitner
Status: Merged
Merged at revision: 6088
Proposed branch: lp:~nomeata/widelands/plot-improvements
Merge into: lp:widelands
Prerequisite: lp:~nomeata/widelands/statistics-menu-settings-persistent
Diff against target: 100 lines (+25/-21)
2 files modified
src/ui_basic/slider.cc (+22/-21)
src/ui_basic/slider.h (+3/-0)
To merge this branch: bzr merge lp:~nomeata/widelands/plot-improvements
Reviewer Review Type Date Requested Status
Widelands Developers Pending
Review via email: mp+81412@code.launchpad.net

Description of the change

This fixes a small visual bug with the slider, whereas if the slider widget is resized, the position of the cursor was not recalculated.

To post a comment you must log in.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'src/ui_basic/slider.cc'
2--- src/ui_basic/slider.cc 2011-11-06 12:23:20 +0000
3+++ src/ui_basic/slider.cc 2011-11-06 18:28:26 +0000
4@@ -71,13 +71,10 @@
5 m_x_gap (x_gap),
6 m_y_gap (y_gap),
7 m_bar_size (bar_size),
8- m_cursor_pos
9- (m_value <= m_min_value ? 0 :
10- m_value >= m_max_value ? get_bar_size() :
11- (m_value - m_min_value) * get_bar_size() / (m_max_value - m_min_value)),
12 m_cursor_size (cursor_size)
13 {
14 set_think(false);
15+ calc_cursor_pos();
16 }
17
18 void Slider::set_value(int32_t new_value)
19@@ -86,17 +83,32 @@
20
21 if (new_value != m_value) {
22 m_value = new_value;
23+ calc_cursor_pos();
24+ send_value_changed();
25+ update();
26+ }
27+}
28+
29+void Slider::calc_cursor_pos() {
30+ if (m_max_value == m_min_value) {
31+ m_cursor_pos = m_min_value;
32+ } else if (m_value == m_min_value) {
33+ m_cursor_pos = 0;
34+ } else if (m_value == m_max_value) {
35+ m_cursor_pos = get_bar_size();
36+ } else {
37 m_cursor_pos =
38- m_value <= m_min_value ? 0 :
39- m_value >= m_max_value ? get_bar_size() :
40 (m_value - m_min_value) * get_bar_size()
41 /
42 (m_max_value - m_min_value);
43- send_value_changed();
44- update();
45 }
46 }
47
48+void Slider::layout() {
49+ Panel::layout();
50+ calc_cursor_pos();
51+}
52+
53 /**
54 * \brief Sets max value.
55 *
56@@ -245,18 +257,7 @@
57 m_pressed = false;
58
59 // cursor position: align to integer value
60- if (m_max_value == m_min_value) {
61- m_cursor_pos = m_min_value;
62- } else if (m_value == m_min_value) {
63- m_cursor_pos = 0;
64- } else if (m_value == m_max_value) {
65- m_cursor_pos = get_bar_size();
66- } else {
67- m_cursor_pos =
68- (m_value - m_min_value) * get_bar_size()
69- /
70- (m_max_value - m_min_value);
71- }
72+ calc_cursor_pos();
73
74 update();
75 }
76@@ -464,9 +465,9 @@
77 }
78
79 void HorizontalSlider::layout() {
80- Slider::layout();
81 m_y_gap = get_h() / 2 - 2;
82 m_bar_size = get_w() - m_cursor_size;
83+ Slider::layout();
84 }
85
86 ////////////////////////////////////////////////////////////////////////////////
87
88=== modified file 'src/ui_basic/slider.h'
89--- src/ui_basic/slider.h 2011-11-06 12:23:20 +0000
90+++ src/ui_basic/slider.h 2011-11-06 18:28:26 +0000
91@@ -62,6 +62,9 @@
92
93
94 protected:
95+ void layout();
96+ void calc_cursor_pos();
97+
98 // drawing
99 int32_t get_x_gap() const {return m_x_gap;}
100 int32_t get_y_gap() const {return m_y_gap;}

Subscribers

People subscribed via source and target branches

to status/vote changes: