summaryrefslogtreecommitdiffstats
path: root/src/application.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/application.c')
-rw-r--r--src/application.c46
1 files changed, 46 insertions, 0 deletions
diff --git a/src/application.c b/src/application.c
index d4fa802..531eb53 100644
--- a/src/application.c
+++ b/src/application.c
@@ -70,3 +70,49 @@ mq_application_delete_window(MqApplication *application, MqWindow *window)
gtk_main_quit();
}
}
+
+static gboolean
+scroll_tab_labels(MqApplication *application)
+{
+ GList *item;
+
+ if (application->marquee_mode) {
+ for (item = application->windows; item; item = item->next) {
+ mq_window_scroll_tab_labels(item->data);
+ }
+ return G_SOURCE_CONTINUE;
+ } else {
+ return G_SOURCE_REMOVE;
+ }
+}
+
+void
+mq_application_marquee_mode_activate(MqApplication *application)
+{
+ GList *item;
+
+ for (item = application->windows; item; item = item->next) {
+ mq_window_begin_scrolling_tab_labels(item->data);
+ }
+
+ application->marquee_mode = TRUE;
+ g_timeout_add(125, (GSourceFunc) scroll_tab_labels, application);
+}
+
+void
+mq_application_marquee_mode_deactivate(MqApplication *application)
+{
+ GList *item;
+
+ for (item = application->windows; item; item = item->next) {
+ mq_window_end_scrolling_tab_labels(item->data);
+ }
+
+ application->marquee_mode = FALSE;
+}
+
+gboolean
+mq_application_marquee_mode_on(MqApplication *application)
+{
+ return application->marquee_mode;
+}