added moving tabs

This commit is contained in:
WanderingPenwing 2024-08-05 18:13:05 +02:00
parent cae16dc8dc
commit 30e39c17fd
2 changed files with 41 additions and 20 deletions

View file

@ -1,11 +1,10 @@
/* modifier 0 means no modifier */ /* modifier 0 means no modifier */
static int surfuseragent = 1; /* Append Surf version to default WebKit user agent */ static int surfuseragent = 1; /* Append Surf version to default WebKit user agent */
static char *fulluseragent = ""; /* Or override the whole user agent string */ static char *fulluseragent = ""; /* Or override the whole user agent string */
static char *scriptfile = "~/.config/surf/script.js"; static char *scriptfile = "~/.config/savoia/script.js";
static char *styledir = "~/.config/surf/styles/"; static char *styledir = "~/.config/savoia/styles/";
static char *tabstyle = "~/.config/surf/styles/tab_bar.css"; static char *certdir = "~/.config/savoia/certificates/";
static char *certdir = "~/.config/surf/certificates/"; static char *dlstatus = "~/.config/savoia/dlstatus/";
static char *dlstatus = "~/.config/surf/dlstatus/";
static char *cachedir = "/tmp/cache"; static char *cachedir = "/tmp/cache";
static char *cookiefile = "/tmp/cookies.txt"; static char *cookiefile = "/tmp/cookies.txt";
static char *dldir = "~/dl/"; static char *dldir = "~/dl/";
@ -13,9 +12,7 @@ static char *dldir = "~/dl/";
static int tab_bar_height = 27; static int tab_bar_height = 27;
static int tab_spacer_height = 4; static int tab_spacer_height = 4;
static const char *tab_bar_color[] = {"#222222", "#318d56"}; static const char *tab_bar_color[] = {"#222222", "#318d56"};
static const char tabfont[] = "Mononoki Nerd Font:size=16";
static int min_tab_fraction_size = 4; // 1/4th of the screen static int min_tab_fraction_size = 4; // 1/4th of the screen
static int click_cooldown_ms = 200;
static SearchEngine searchengines[] = { static SearchEngine searchengines[] = {
{ " ", "https://web.penwing.org/search?q=%s" }, { " ", "https://web.penwing.org/search?q=%s" },
@ -85,7 +82,7 @@ static WebKitFindOptions findopts = WEBKIT_FIND_OPTIONS_CASE_INSENSITIVE |
.v = (const char *[]){ "/bin/sh", "-c", \ .v = (const char *[]){ "/bin/sh", "-c", \
"prop=\"$(printf '%b' \"$(xprop -id $1 "r" " \ "prop=\"$(printf '%b' \"$(xprop -id $1 "r" " \
"| sed -e 's/^"r"(UTF8_STRING) = \"\\(.*\\)\"/\\1/' " \ "| sed -e 's/^"r"(UTF8_STRING) = \"\\(.*\\)\"/\\1/' " \
" -e 's/\\\\\\(.\\)/\\1/g' && cat ~/.config/surf/bookmarks)\" " \ " -e 's/\\\\\\(.\\)/\\1/g' && cat ~/.config/savoia/bookmarks)\" " \
"| marukuru -p '"p"' -w $1)\" " \ "| marukuru -p '"p"' -w $1)\" " \
"&& xprop -id $1 -f "s" 8u -set "s" \"$prop\"", \ "&& xprop -id $1 -f "s" 8u -set "s" \"$prop\"", \
"surf-setprop", winid, NULL \ "surf-setprop", winid, NULL \
@ -122,9 +119,9 @@ static WebKitFindOptions findopts = WEBKIT_FIND_OPTIONS_CASE_INSENSITIVE |
#define BM_ADD(r) {\ #define BM_ADD(r) {\
.v = (const char *[]){ "/bin/sh", "-c", \ .v = (const char *[]){ "/bin/sh", "-c", \
"(echo $(xprop -id $0 $1) | cut -d '\"' -f2 " \ "(echo $(xprop -id $0 $1) | cut -d '\"' -f2 " \
"| sed 's/.*https*:\\/\\/\\(www\\.\\)\\?//' && cat ~/.config/surf/bookmarks) " \ "| sed 's/.*https*:\\/\\/\\(www\\.\\)\\?//' && cat ~/.config/savoia/bookmarks) " \
"| awk '!seen[$0]++' > ~/.config/surf/bookmarks.tmp && " \ "| awk '!seen[$0]++' > ~/.config/savoia/bookmarks.tmp && " \
"mv ~/.config/surf/bookmarks.tmp ~/.config/surf/bookmarks &&" \ "mv ~/.config/savoia/bookmarks.tmp ~/.config/savoia/bookmarks &&" \
"notify-send -u low -a 'savoia' 'added bookmark'", \ "notify-send -u low -a 'savoia' 'added bookmark'", \
winid, r, NULL \ winid, r, NULL \
} \ } \

42
surf.c
View file

@ -151,6 +151,7 @@ typedef struct Client {
guint selected_tab; guint selected_tab;
GtkWidget *tab_bar; GtkWidget *tab_bar;
int tab_click_index; int tab_click_index;
bool tab_drag;
} Client; } Client;
typedef struct { typedef struct {
@ -582,9 +583,7 @@ void tab_bar_mouse_press(GtkWidget *w, GdkEvent *e, Client *c) {
} }
tab_mouse_pos_index(e, c, &c->tab_click_index, NULL); tab_mouse_pos_index(e, c, &c->tab_click_index, NULL);
c->tab_drag = false;
g_print("press\n");
} }
void tab_bar_mouse_release(GtkWidget *w, GdkEvent *e, Client *c) { void tab_bar_mouse_release(GtkWidget *w, GdkEvent *e, Client *c) {
@ -596,20 +595,47 @@ void tab_bar_mouse_release(GtkWidget *w, GdkEvent *e, Client *c) {
bool close_tab_flag; bool close_tab_flag;
tab_mouse_pos_index(e, c, &press_index, &close_tab_flag); tab_mouse_pos_index(e, c, &press_index, &close_tab_flag);
g_print("%i # %i\n", c->tab_click_index, press_index); if (!c->tab_drag) {
if (c->tab_click_index == press_index) {
tab_bar_click(c, close_tab_flag); tab_bar_click(c, close_tab_flag);
} }
c->tab_click_index = -1; c->tab_click_index = -1;
} }
void tab_bar_mouse_move(GtkWidget *w, GdkEvent *e, Client *c) { void tab_bar_mouse_move(GtkWidget *w, GdkEvent *e, Client *c) {
if (c->tab_click_index == -1) { if (c->tab_click_index == -1) {
return; return;
} }
g_print("move\n"); int move_index;
tab_mouse_pos_index(e, c, &move_index, NULL);
if (move_index == c->tab_click_index) {
return;
}
if (move_index < 0 || move_index >= g_list_length(c->tabs) ||
c->tab_click_index < 0 || c->tab_click_index >= g_list_length(c->tabs)) {
return;
}
GList *node1 = g_list_nth(c->tabs, c->tab_click_index);
GList *node2 = g_list_nth(c->tabs, move_index);
if (node1 && node2) {
GList *temp = node1->data;
node1->data = node2->data;
node2->data = temp;
}
if (c->selected_tab == move_index) {
c->selected_tab = c->tab_click_index;
} else if (c->selected_tab == c->tab_click_index) {
c->selected_tab = move_index;
}
c->tab_click_index = move_index;
c->tab_drag = true;
update_tab_bar(c);
} }
void tab_bar_click(Client *c, bool close) { void tab_bar_click(Client *c, bool close) {
@ -617,8 +643,6 @@ void tab_bar_click(Client *c, bool close) {
return; return;
} }
g_print("click\n");
if (close) { if (close) {
Arg close_arg = {.i = c->tab_click_index}; Arg close_arg = {.i = c->tab_click_index};
close_tab(c, &close_arg); close_tab(c, &close_arg);