Ignore:
Timestamp:
Aug 22, 2010, 6:02:21 PM (11 years ago)
Author:
sam
Message:

Add an about dialogue and fix an initialisation bug in the map viewer
scrollbar handling.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/gtk/glmapview.cpp

    r162 r163  
    7070    // FIXME: detect when the map viewer is killed
    7171    mapviewer = new MapViewer(path);
     72
     73    UpdateAdjustments();
    7274}
    7375
     
    7577{
    7678    // FIXME: do not do anything if the previous tick was too recent?
    77 
    7879    ticking = TRUE;
    7980
     
    9293gboolean GlMapView::Setup()
    9394{
    94     if (mapviewer)
    95     {
    96         /* Manage adjustments */
    97         struct { GtkAdjustment *adj; float map_size, sw_size; } s[2] =
    98         {
    99             { hadj, mapviewer->GetWidth(), glarea->allocation.width },
    100             { vadj, mapviewer->GetHeight(), glarea->allocation.height },
    101         };
    102 
    103         for (int i = 0; i < 2; i++)
    104         {
    105             gtk_adjustment_set_lower(s[i].adj, 0);
    106             gtk_adjustment_set_upper(s[i].adj, s[i].map_size);
    107             gtk_adjustment_set_step_increment(s[i].adj, 1);
    108             gtk_adjustment_set_page_increment(s[i].adj, s[i].sw_size);
    109             gtk_adjustment_set_page_size(s[i].adj, s[i].sw_size);
    110 
    111             float val = gtk_adjustment_get_value(s[i].adj);
    112             if (val + s[i].sw_size > s[i].map_size)
    113             {
    114                 gtk_adjustment_set_value(s[i].adj,
    115                                          s[i].map_size - s[i].sw_size);
    116                 gtk_adjustment_value_changed(s[i].adj);
    117             }
    118         }
    119     }
    120 
    12195    /* Set up display */
    12296    if (gtk_gl_area_make_current(GTK_GL_AREA(glarea)))
    12397        Video::Setup(glarea->allocation.width, glarea->allocation.height);
     98
     99    UpdateAdjustments();
    124100
    125101    return TRUE;
     
    150126            ;
    151127        Ticker::ClampFps(1000.0f / FPS);
     128    }
     129
     130    return TRUE;
     131}
     132
     133gboolean GlMapView::UpdateAdjustments()
     134{
     135    float w = mapviewer ? mapviewer->GetWidth() : glarea->allocation.width;
     136    float h = mapviewer ? mapviewer->GetHeight() : glarea->allocation.height;
     137
     138    /* Manage adjustments */
     139    struct { GtkAdjustment *adj; float map_size, sw_size; } s[2] =
     140    {
     141        { hadj, w, glarea->allocation.width },
     142        { vadj, h, glarea->allocation.height },
     143    };
     144
     145    for (int i = 0; i < 2; i++)
     146    {
     147        gtk_adjustment_set_lower(s[i].adj, 0);
     148        gtk_adjustment_set_upper(s[i].adj, s[i].map_size);
     149        gtk_adjustment_set_step_increment(s[i].adj, 1);
     150        gtk_adjustment_set_page_increment(s[i].adj, s[i].sw_size);
     151        gtk_adjustment_set_page_size(s[i].adj, s[i].sw_size);
     152
     153        float val = gtk_adjustment_get_value(s[i].adj);
     154        if (val + s[i].sw_size > s[i].map_size)
     155        {
     156            gtk_adjustment_set_value(s[i].adj,
     157                                     s[i].map_size - s[i].sw_size);
     158            gtk_adjustment_value_changed(s[i].adj);
     159        }
    152160    }
    153161
Note: See TracChangeset for help on using the changeset viewer.