Changeset 50c17ccd97678c0e4b7cf718b0c74fd410b1a4c0

Show
Ignore:
Timestamp:
11/17/09 22:04:09 (4 years ago)
Author:
Armin Burgmeier <armin@…>
Parents:
83d7081d3d98bcf0b5f7c21f8f5636ebb80e89be
Children:
614d0889e1ce6a96593948aa77f299b21bf8623b
git-committer:
Armin Burgmeier <armin@arbur.net> / 2009-11-17T22:04:09Z+0100
Message:

Switch to chat on Ctrl+M, switch back on Ctrl+Shift+M

2009-11-17 Armin Burgmeier <armin@…>

  • code/core/chatsessionview.hpp: Added get_chat().
  • code/window.hpp:
  • code/window.cpp: Added Ctrl+M and Ctrl+Shift+M shortcuts to easily jump between chat and document.
Files:
4 modified

Legend:

Unmodified
Added
Removed
  • ChangeLog

    r83d7081 r50c17cc  
     12009-11-17  Armin Burgmeier  <armin@arbur.net> 
     2 
     3        * code/core/chatsessionview.hpp: Added get_chat(). 
     4 
     5        * code/window.hpp: 
     6        * code/window.cpp: Added Ctrl+M and Ctrl+Shift+M shortcuts to easily 
     7        jump between chat and document. 
     8 
    192009-11-17  Armin Burgmeier  <armin@arbur.net> 
    210 
  • code/core/chatsessionview.hpp

    r877d323 r50c17cc  
    4141        // Override base class covariantly 
    4242        InfChatSession* get_session() { return INF_CHAT_SESSION(m_session); } 
     43        InfGtkChat* get_chat() { return m_chat; } 
    4344 
    4445        InfUser* get_active_user() const; 
  • code/window.cpp

    r83d7081 r50c17cc  
    8787 
    8888        // Build UI 
    89         add_accel_group(m_header.get_accel_group() ); 
     89        Glib::RefPtr<Gtk::AccelGroup> group = m_header.get_accel_group(); 
     90        // Add focus shortcuts; unfortunately gtkmm does not wrap that API 
     91        GClosure* closure = g_cclosure_new( 
     92                G_CALLBACK(on_switch_to_chat_static), this, NULL); 
     93        gtk_accel_group_connect(group->gobj(), GDK_m, GDK_CONTROL_MASK, 
     94                                static_cast<GtkAccelFlags>(0), closure); 
     95        //g_closure_unref(closure); 
     96        GClosure* closure2 = g_cclosure_new( 
     97                G_CALLBACK(on_switch_to_text_static), this, NULL); 
     98        gtk_accel_group_connect(group->gobj(), GDK_m, 
     99                                static_cast<GdkModifierType>( 
     100                                        GDK_CONTROL_MASK | GDK_SHIFT_MASK), 
     101                                static_cast<GtkAccelFlags>(0), closure2); 
     102        //g_closure_unref(closure2); 
     103        add_accel_group(group); 
    90104 
    91105        Gtk::Frame* frame_browser = Gtk::manage(new ClosableFrame( 
     
    249263        // Don't show again 
    250264        m_config.get_root()["initial"].set_value("run", true); 
     265} 
     266 
     267bool Gobby::Window::on_switch_to_chat() 
     268{ 
     269        SessionView* view = m_chat_folder.get_current_document(); 
     270        if(!view) return false; 
     271 
     272        ChatSessionView* chat_view = dynamic_cast<ChatSessionView*>(view); 
     273        if(!chat_view) return false; 
     274 
     275        m_preferences.appearance.show_chat = true; 
     276        InfGtkChat* chat = chat_view->get_chat(); 
     277        GtkWidget* entry = inf_gtk_chat_get_entry(chat); 
     278        gtk_widget_grab_focus(GTK_WIDGET(entry)); 
     279        return true; 
     280} 
     281 
     282bool Gobby::Window::on_switch_to_text() 
     283{ 
     284        SessionView* view = m_text_folder.get_current_document(); 
     285        if(!view) return false; 
     286 
     287        TextSessionView* text_view = dynamic_cast<TextSessionView*>(view); 
     288        if(!text_view) return false; 
     289 
     290        GtkSourceView* gtk_view = text_view->get_text_view(); 
     291        gtk_widget_grab_focus(GTK_WIDGET(gtk_view)); 
     292        // TODO: Turn chat back off if previously activated 
     293        // via on_switch_to_chat()? 
     294        return true; 
    251295} 
    252296 
  • code/window.hpp

    r83d7081 r50c17cc  
    108108        void on_initial_dialog_hide(); 
    109109 
     110        static gboolean on_switch_to_chat_static(GtkAccelGroup* group, 
     111                                                 GObject* acceleratable, 
     112                                                 guint keyval, 
     113                                                 GdkModifierType modifier, 
     114                                                 gpointer user_data) 
     115        { 
     116                return static_cast<Window*>(user_data)->on_switch_to_chat(); 
     117        } 
     118 
     119        static gboolean on_switch_to_text_static(GtkAccelGroup* group, 
     120                                                 GObject* acceleratable, 
     121                                                 guint keyval, 
     122                                                 GdkModifierType modifier, 
     123                                                 gpointer user_data) 
     124        { 
     125                return static_cast<Window*>(user_data)->on_switch_to_text(); 
     126        } 
     127 
     128        bool on_switch_to_chat(); 
     129        bool on_switch_to_text(); 
     130 
    110131#ifdef WITH_UNIQUE 
    111132        UniqueResponse on_message_received(UniqueCommand command,