Changeset 6c9d74065d52c4d84d6feefb2cf82387956d527b

Show
Ignore:
Timestamp:
01/06/07 23:32:52 (6 years ago)
Author:
Philipp Kern <phil@…>
Parents:
a6a7a4b670967df95a82c0d1e7ba565ce99d114d
Children:
f49bdc2a81e372ad133581e2f56a92d47a1fe7ab
git-committer:
Philipp Kern <phil@0x539.de> / 2007-01-06T22:32:52Z+0000
Message:

[project @ Gobby sends positions now in bytes and no longer in characters.]
libobby takes all positions in bytes to having not to care about different
encodings.

Original author: Armin Burgmeier <armin@…>
Date: 2005-05-05 14:00:18+00:00

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • src/document.cpp

    rafb963a r6c9d740  
    8989 
    9090        // Obby signal handlers 
    91         doc.insert_event().connect( 
     91        doc.insert_event().before().connect( 
    9292                sigc::mem_fun(*this, &Document::on_obby_insert) ); 
    93         doc.delete_event().connect( 
     93        doc.delete_event().before().connect( 
    9494                sigc::mem_fun(*this, &Document::on_obby_delete) ); 
    9595 
     
    122122{ 
    123123        if(m_editing) return; 
    124         m_doc.insert(begin.get_offset(), text); 
     124        m_editing = true; 
     125         
     126        m_doc.insert( 
     127                m_doc.coord_to_position( 
     128                        begin.get_line(), 
     129                        begin.get_line_index() 
     130                ), 
     131                text 
     132        ); 
     133 
     134        m_editing = false; 
    125135} 
    126136 
     
    129139{ 
    130140        if(m_editing) return; 
    131         m_doc.erase(begin.get_offset(), end.get_offset() ); 
     141        m_editing = true; 
     142 
     143        m_doc.erase( 
     144                m_doc.coord_to_position( 
     145                        begin.get_line(), 
     146                        begin.get_line_index() 
     147                ), 
     148                m_doc.coord_to_position( 
     149                        end.get_line(), 
     150                        end.get_line_index() 
     151                ) 
     152        ); 
     153 
     154        m_editing = false; 
    132155} 
    133156 
    134157void Gobby::Document::on_obby_insert(const obby::insert_record& record) 
    135158{ 
    136         m_editing = true; 
     159        if(m_editing) return; 
     160        m_editing = true; 
     161 
    137162        Glib::RefPtr<Gtk::TextBuffer> buffer = m_view.get_buffer(); 
    138         buffer->insert(buffer->get_iter_at_offset(record.get_position()), 
    139                        record.get_text() ); 
     163 
     164        unsigned int row, col; 
     165        m_doc.position_to_coord(record.get_position(), row, col); 
     166        buffer->insert( 
     167                buffer->get_iter_at_line_index(row, col), 
     168                record.get_text() 
     169        ); 
     170 
    140171        m_editing = false; 
    141172} 
     
    143174void Gobby::Document::on_obby_delete(const obby::delete_record& record) 
    144175{ 
    145         m_editing = true; 
     176        if(m_editing) return; 
     177        m_editing = true; 
     178 
    146179        Glib::RefPtr<Gtk::TextBuffer> buffer = m_view.get_buffer(); 
    147         buffer->erase(buffer->get_iter_at_offset(record.get_begin()), 
    148                       buffer->get_iter_at_offset(record.get_end()) ); 
     180 
     181        unsigned int brow, bcol, erow, ecol; 
     182        m_doc.position_to_coord(record.get_begin(), brow, bcol); 
     183        m_doc.position_to_coord(record.get_end(), erow, ecol); 
     184 
     185        buffer->erase( 
     186                buffer->get_iter_at_line_index(brow, bcol), 
     187                buffer->get_iter_at_line_index(erow, ecol) 
     188        ); 
    149189        m_editing = false; 
    150190}