aboutsummaryrefslogtreecommitdiff
path: root/main.c
diff options
context:
space:
mode:
authorArslaan Pathan <[email protected]>2026-04-04 22:11:56 +1300
committerArslaan Pathan <[email protected]>2026-04-04 22:11:56 +1300
commit191f74d6d2d81c22840ca8407be1c5c746b042ed (patch)
tree2b9bff275edae6f1de85308c0b6dd2af2174a356 /main.c
parenta0df420a325d0f8e60a0ce00c329ce112f251ad7 (diff)
downloadcinnamon-browser-191f74d6d2d81c22840ca8407be1c5c746b042ed.tar.xz
cinnamon-browser-191f74d6d2d81c22840ca8407be1c5c746b042ed.zip
Add an indicator for the current mode, improve config file a bit, and add dedicated mode setter
Diffstat (limited to 'main.c')
-rw-r--r--main.c24
1 files changed, 20 insertions, 4 deletions
diff --git a/main.c b/main.c
index 811bd6a..5f2ef12 100644
--- a/main.c
+++ b/main.c
@@ -10,6 +10,7 @@ typedef struct {
GtkWidget *window;
GtkWidget *notebook;
GtkWidget *cmdbar;
+ GtkWidget *indicator;
} Cinnamon;
typedef struct {
@@ -26,7 +27,7 @@ typedef struct {
#include "config.h"
/* 0 = normal mode, 1 = insert, 2 = passthrough */
-int mode = 0;
+static int mode = 0;
bool cmdbar_focused = false;
static void parse_keybind(const char *key, guint *keyval, GdkModifierType *mods) {
@@ -61,7 +62,7 @@ static gboolean on_key_press(GtkWidget *widget, GdkEventKey *event, gpointer dat
Cinnamon* cinnamon = (Cinnamon*)data;
if (mode == 1 || mode == 2) {
if (mode == 1 && event->keyval == GDK_KEY_Escape) {
- mode = 0;
+ set_mode(cinnamon, 0);
if (cmdbar_focused) {
gtk_widget_hide(cinnamon->cmdbar);
cmdbar_focused = false;
@@ -73,7 +74,7 @@ static gboolean on_key_press(GtkWidget *widget, GdkEventKey *event, gpointer dat
gtk_widget_show(cinnamon->cmdbar);
gtk_widget_grab_focus(cinnamon->cmdbar);
cmdbar_focused = true;
- mode = 1;
+ set_mode(cinnamon, 1);
return TRUE;
}
@@ -98,6 +99,15 @@ static gboolean on_key_press(GtkWidget *widget, GdkEventKey *event, gpointer dat
return FALSE;
}
+void set_mode(Cinnamon* cinnamon, int new_mode) {
+ mode = new_mode;
+ switch (new_mode) {
+ case 0: gtk_label_set_text(GTK_LABEL(cinnamon->indicator), "-- NORMAL --"); break;
+ case 1: gtk_label_set_text(GTK_LABEL(cinnamon->indicator), "-- INSERT --"); break;
+ case 2: gtk_label_set_text(GTK_LABEL(cinnamon->indicator), "-- PASSTHROUGH --"); break;
+ }
+}
+
void tabopen(Cinnamon* cinnamon) {
GtkWidget *webview = webkit_web_view_new();
gtk_notebook_append_page(GTK_NOTEBOOK(cinnamon->notebook), webview, gtk_label_new("New Tab"));
@@ -149,8 +159,11 @@ int main(int argc, char *argv[]) {
/* Create initial tab */
tabopen(&cinnamon);
+ /* Indicator label */
+ cinnamon.indicator = gtk_label_new("-- NORMAL --");
+ gtk_box_pack_end(GTK_BOX(vbox), cinnamon.indicator, FALSE, FALSE, 0);
+
/* Create cmdbar */
- /* im sleepy so just add a placeholder commented-out pack for future reference */
cinnamon.cmdbar = gtk_entry_new();
gtk_box_pack_end(GTK_BOX(vbox), cinnamon.cmdbar, FALSE, FALSE, 0);
@@ -159,6 +172,9 @@ int main(int argc, char *argv[]) {
gtk_widget_show_all(cinnamon.window);
gtk_widget_hide(cinnamon.cmdbar);
+#ifdef HIDE_TAB_BAR
+ gtk_notebook_set_show_tabs(GTK_NOTEBOOK(cinnamon.notebook), FALSE);
+#endif
gtk_main();
return 0;