Author: mordante
Date: Tue Sep  2 20:04:28 2008
New Revision: 29204

URL: http://svn.gna.org/viewcvs/wesnoth?rev=29204&view=rev
Log:
Enable page up and page down in the listbox.

Modified:
    trunk/src/gui/widgets/listbox.cpp

Modified: trunk/src/gui/widgets/listbox.cpp
URL: 
http://svn.gna.org/viewcvs/wesnoth/trunk/src/gui/widgets/listbox.cpp?rev=29204&r1=29203&r2=29204&view=diff
==============================================================================
--- trunk/src/gui/widgets/listbox.cpp (original)
+++ trunk/src/gui/widgets/listbox.cpp Tue Sep  2 20:04:28 2008
@@ -263,43 +263,56 @@
         * glitches exist in this hack.
         */
        tscrollbar_* sb = scrollbar();
+       int row = get_selected_row();
        switch(key) {
 
-               case SDLK_UP : {
-
-                       int i = get_selected_row() - 1;
-                       while(i >= 0 && !rows_[i].get_active()) {
-                               --i;
-                       }
-                       if(i >= 0) {
-                               select_row(i);
+               case SDLK_PAGEUP :
+                       row -= sb->get_visible_items() - 1;
+                       if(row <= 0) {
+                               row = 1;
+                       }
+                       // FALL DOWN
+
+               case SDLK_UP : 
+
+                       --row;
+                       while(row >= 0 && !rows_[row].get_active()) {
+                               --row;
+                       }
+                       if(row >= 0) {
+                               select_row(row);
                                handled = true;
 
-                               if(i < sb->get_item_position()) {
-                                       sb->set_item_position(i);
+                               if(row < sb->get_item_position()) {
+                                       sb->set_item_position(row);
                                        set_scrollbar_button_status();
                                }
                        }
                        break;
-               }
                        
-               case SDLK_DOWN : {
-
-                       int i = get_selected_row() + 1;
-                       while(i <  rows_.size() && !rows_[i].get_active()) {
-                               ++i;
-                       }
-                       if(i < rows_.size()) {
-                               select_row(i);
+               case SDLK_PAGEDOWN :
+                       row += sb->get_visible_items() - 1;
+                       if(row + 1 >= rows_.size()) {
+                               row = rows_.size() - 2;
+                       }
+                       // FALL DOWN
+
+               case SDLK_DOWN : 
+
+                       ++row;
+                       while(row < rows_.size() && !rows_[row].get_active()) {
+                               ++row;
+                       }
+                       if(row < rows_.size()) {
+                               select_row(row);
                                handled = true;
-                               if(i >= sb->get_item_position() + 
sb->get_visible_items()) {
-
-                                       sb->set_item_position(i + 1 -  
sb->get_visible_items());
+                               if(row >= sb->get_item_position() + 
sb->get_visible_items()) {
+
+                                       sb->set_item_position(row + 1 - 
sb->get_visible_items());
                                        set_scrollbar_button_status();
                                }
                        }
                        break;
-               }
 
                default :
                        /* DO NOTHING */


_______________________________________________
Wesnoth-commits mailing list
[email protected]
https://mail.gna.org/listinfo/wesnoth-commits

Reply via email to