Changeset 50c17ccd97678c0e4b7cf718b0c74fd410b1a4c0
- 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:
-
Legend:
- Unmodified
- Added
- Removed
-
|
r83d7081
|
r50c17cc
|
|
| | 1 | 2009-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 | |
| 1 | 9 | 2009-11-17 Armin Burgmeier <armin@arbur.net> |
| 2 | 10 | |
-
|
r877d323
|
r50c17cc
|
|
| 41 | 41 | // Override base class covariantly |
| 42 | 42 | InfChatSession* get_session() { return INF_CHAT_SESSION(m_session); } |
| | 43 | InfGtkChat* get_chat() { return m_chat; } |
| 43 | 44 | |
| 44 | 45 | InfUser* get_active_user() const; |
-
|
r83d7081
|
r50c17cc
|
|
| 87 | 87 | |
| 88 | 88 | // 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); |
| 90 | 104 | |
| 91 | 105 | Gtk::Frame* frame_browser = Gtk::manage(new ClosableFrame( |
| … |
… |
|
| 249 | 263 | // Don't show again |
| 250 | 264 | m_config.get_root()["initial"].set_value("run", true); |
| | 265 | } |
| | 266 | |
| | 267 | bool 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 | |
| | 282 | bool 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; |
| 251 | 295 | } |
| 252 | 296 | |
-
|
r83d7081
|
r50c17cc
|
|
| 108 | 108 | void on_initial_dialog_hide(); |
| 109 | 109 | |
| | 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 | |
| 110 | 131 | #ifdef WITH_UNIQUE |
| 111 | 132 | UniqueResponse on_message_received(UniqueCommand command, |