add max number of tabs
This commit is contained in:
parent
995f455ece
commit
8d2811c5f9
|
@ -41,6 +41,7 @@ You can also create a rose.desktop file so that it will show up in your desktop
|
||||||
- Customize appearance of the browser through css
|
- Customize appearance of the browser through css
|
||||||
- Built-in rose-mklink script for in-shell static links
|
- Built-in rose-mklink script for in-shell static links
|
||||||
- Optional adblocking through [wyebadblock](https://github.com/jun7/wyebadblock)
|
- Optional adblocking through [wyebadblock](https://github.com/jun7/wyebadblock)
|
||||||
|
- Max number of tabs (by default 8), configurable.
|
||||||
- Plugin system, seeded with:
|
- Plugin system, seeded with:
|
||||||
- Libre redirect: Redirect annoying websites to open source frontends
|
- Libre redirect: Redirect annoying websites to open source frontends
|
||||||
- Readability: Strip webpages of unnecessary elements for ease of reading with a custom shortcut
|
- Readability: Strip webpages of unnecessary elements for ease of reading with a custom shortcut
|
||||||
|
|
1
config.h
1
config.h
|
@ -21,6 +21,7 @@
|
||||||
#define ZOOM_VAL .1 /* Zooming value in zoomin/zoomout functions */
|
#define ZOOM_VAL .1 /* Zooming value in zoomin/zoomout functions */
|
||||||
#define BG_COLOR "#FEFEFE" /* "FEFEFE", "#1E1E2E" */
|
#define BG_COLOR "#FEFEFE" /* "FEFEFE", "#1E1E2E" */
|
||||||
#define DEBUG false
|
#define DEBUG false
|
||||||
|
#define MAX_NUM_TABS 8 // set to 0 or false if you want unlimited tabs, or look at the relevant rose.c code.
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
goback,
|
goback,
|
||||||
|
|
12
rose.c
12
rose.c
|
@ -16,6 +16,7 @@ int LIBRE_REDIRECT_ENABLED = true;
|
||||||
int READABILITY_ENABLED = true;
|
int READABILITY_ENABLED = true;
|
||||||
int CUSTOM_STYLE_ENABLED = true;
|
int CUSTOM_STYLE_ENABLED = true;
|
||||||
int CUSTOM_USER_AGENT = true;
|
int CUSTOM_USER_AGENT = true;
|
||||||
|
int NUM_TABS = 0;
|
||||||
|
|
||||||
// to enable plugins,
|
// to enable plugins,
|
||||||
// 1. Enable them:
|
// 1. Enable them:
|
||||||
|
@ -194,12 +195,17 @@ GtkWidget* handle_create_new_tab(WebKitWebView* self,
|
||||||
WebKitNavigationAction* navigation_action,
|
WebKitNavigationAction* navigation_action,
|
||||||
GtkNotebook* notebook)
|
GtkNotebook* notebook)
|
||||||
{
|
{
|
||||||
|
if(NUM_TABS < MAX_NUM_TABS || NUM_TABS == 0){
|
||||||
WebKitURIRequest* uri_request = webkit_navigation_action_get_request(navigation_action);
|
WebKitURIRequest* uri_request = webkit_navigation_action_get_request(navigation_action);
|
||||||
const char* uri = webkit_uri_request_get_uri(uri_request);
|
const char* uri = webkit_uri_request_get_uri(uri_request);
|
||||||
printf("Creating new window: %s\n", uri);
|
printf("Creating new window: %s\n", uri);
|
||||||
notebook_append(notebook, uri);
|
notebook_append(notebook, uri);
|
||||||
gtk_notebook_set_show_tabs(notebook, true);
|
gtk_notebook_set_show_tabs(notebook, true);
|
||||||
return NULL;
|
return NULL;
|
||||||
|
} else {
|
||||||
|
webkit_web_view_run_javascript(notebook_get_webview(notebook),
|
||||||
|
"alert('Too many tabs, not opening a new one')", NULL, NULL, NULL);
|
||||||
|
}
|
||||||
/* WebKitGTK documentation recommends returning the new webview.
|
/* WebKitGTK documentation recommends returning the new webview.
|
||||||
* I imagine that this might allow e.g., to go back in a new tab
|
* I imagine that this might allow e.g., to go back in a new tab
|
||||||
* or generally to keep track of history.
|
* or generally to keep track of history.
|
||||||
|
@ -210,6 +216,7 @@ GtkWidget* handle_create_new_tab(WebKitWebView* self,
|
||||||
|
|
||||||
void notebook_append(GtkNotebook* notebook, const char* uri)
|
void notebook_append(GtkNotebook* notebook, const char* uri)
|
||||||
{
|
{
|
||||||
|
if(NUM_TABS < MAX_NUM_TABS || NUM_TABS == 0){
|
||||||
GdkScreen* screen = gtk_window_get_screen(GTK_WINDOW(window));
|
GdkScreen* screen = gtk_window_get_screen(GTK_WINDOW(window));
|
||||||
GdkVisual* rgba_visual = gdk_screen_get_rgba_visual(screen);
|
GdkVisual* rgba_visual = gdk_screen_get_rgba_visual(screen);
|
||||||
GdkRGBA rgba;
|
GdkRGBA rgba;
|
||||||
|
@ -231,6 +238,11 @@ void notebook_append(GtkNotebook* notebook, const char* uri)
|
||||||
gtk_notebook_set_current_page(notebook, n);
|
gtk_notebook_set_current_page(notebook, n);
|
||||||
gtk_notebook_set_tab_label_text(notebook, GTK_WIDGET(view), "-");
|
gtk_notebook_set_tab_label_text(notebook, GTK_WIDGET(view), "-");
|
||||||
webkit_web_view_set_zoom_level(view, ZOOM);
|
webkit_web_view_set_zoom_level(view, ZOOM);
|
||||||
|
NUM_TABS+=1;
|
||||||
|
} else {
|
||||||
|
webkit_web_view_run_javascript(notebook_get_webview(notebook),
|
||||||
|
"alert('Too many tabs, not opening a new one')", NULL, NULL, NULL);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void show_bar(GtkNotebook* notebook)
|
void show_bar(GtkNotebook* notebook)
|
||||||
|
|
Loading…
Reference in New Issue
Block a user