0
0
mirror of https://github.com/vim/vim.git synced 2025-09-25 03:54:15 -04:00

patch 8.1.2034: dark them of GTK 3 not supported

Problem:    Dark them of GTK 3 not supported.
Solution:   Add the "d" flag in 'guioptions'. (Jonathan Conder, closes #4934)
This commit is contained in:
Bram Moolenaar
2019-09-15 13:17:00 +02:00
parent 0571f3d6f9
commit 50bf7ce0c9
8 changed files with 56 additions and 1 deletions

View File

@@ -856,6 +856,8 @@ A jump table for the options with a short description can be found at |Q_op|.
:set background& :set background&
< Vim will guess the value. In the GUI this should work correctly, < Vim will guess the value. In the GUI this should work correctly,
in other cases Vim might not be able to guess the right value. in other cases Vim might not be able to guess the right value.
If the GUI supports a dark them, you can use the "d" flag in
'guioptions', see 'go-d'.
When the |t_RB| option is set, Vim will use it to request the background When the |t_RB| option is set, Vim will use it to request the background
color from the terminal. If the returned RGB value is dark/light and color from the terminal. If the returned RGB value is dark/light and
@@ -3740,6 +3742,9 @@ A jump table for the options with a short description can be found at |Q_op|.
*'go-c'* *'go-c'*
'c' Use console dialogs instead of popup dialogs for simple 'c' Use console dialogs instead of popup dialogs for simple
choices. choices.
*'go-d'*
'd' Use dark theme variant if available. Currently only works for
GTK+ GUI.
*'go-e'* *'go-e'*
'e' Add tab pages when indicated with 'showtabline'. 'e' Add tab pages when indicated with 'showtabline'.
'guitablabel' can be used to change the text in the labels. 'guitablabel' can be used to change the text in the labels.

View File

@@ -646,6 +646,13 @@
# define FEAT_MENU # define FEAT_MENU
#endif #endif
/*
* GUI dark theme variant
*/
#if defined(FEAT_GUI_GTK) && defined(USE_GTK3)
# define FEAT_GUI_DARKTHEME
#endif
/* /*
* GUI tabline * GUI tabline
*/ */

View File

@@ -3425,6 +3425,10 @@ static int prev_which_scrollbars[3];
void void
gui_init_which_components(char_u *oldval UNUSED) gui_init_which_components(char_u *oldval UNUSED)
{ {
#ifdef FEAT_GUI_DARKTHEME
static int prev_dark_theme = -1;
int using_dark_theme = FALSE;
#endif
#ifdef FEAT_MENU #ifdef FEAT_MENU
static int prev_menu_is_active = -1; static int prev_menu_is_active = -1;
#endif #endif
@@ -3495,6 +3499,11 @@ gui_init_which_components(char_u *oldval UNUSED)
case GO_BOT: case GO_BOT:
gui.which_scrollbars[SBAR_BOTTOM] = TRUE; gui.which_scrollbars[SBAR_BOTTOM] = TRUE;
break; break;
#ifdef FEAT_GUI_DARKTHEME
case GO_DARKTHEME:
using_dark_theme = TRUE;
break;
#endif
#ifdef FEAT_MENU #ifdef FEAT_MENU
case GO_MENUS: case GO_MENUS:
gui.menu_is_active = TRUE; gui.menu_is_active = TRUE;
@@ -3528,6 +3537,14 @@ gui_init_which_components(char_u *oldval UNUSED)
need_set_size = 0; need_set_size = 0;
fix_size = FALSE; fix_size = FALSE;
#ifdef FEAT_GUI_DARKTHEME
if (using_dark_theme != prev_dark_theme)
{
gui_mch_set_dark_theme(using_dark_theme);
prev_dark_theme = using_dark_theme;
}
#endif
#ifdef FEAT_GUI_TABLINE #ifdef FEAT_GUI_TABLINE
/* Update the GUI tab line, it may appear or disappear. This may /* Update the GUI tab line, it may appear or disappear. This may
* cause the non-GUI tab line to disappear or appear. */ * cause the non-GUI tab line to disappear or appear. */

View File

@@ -3130,6 +3130,19 @@ update_window_manager_hints(int force_width, int force_height)
} }
} }
#if defined(FEAT_GUI_DARKTHEME) || defined(PROTO)
void
gui_mch_set_dark_theme(int dark)
{
# if GTK_CHECK_VERSION(3,0,0)
GtkSettings *gtk_settings;
gtk_settings = gtk_settings_get_for_screen(gdk_screen_get_default());
g_object_set(gtk_settings, "gtk-application-prefer-dark-theme", (gboolean)dark, NULL);
# endif
}
#endif /* FEAT_GUI_DARKTHEME */
#ifdef FEAT_TOOLBAR #ifdef FEAT_TOOLBAR
/* /*

View File

@@ -213,6 +213,7 @@
#define GO_ASELML 'A' // autoselect modeless selection #define GO_ASELML 'A' // autoselect modeless selection
#define GO_BOT 'b' // use bottom scrollbar #define GO_BOT 'b' // use bottom scrollbar
#define GO_CONDIALOG 'c' // use console dialog #define GO_CONDIALOG 'c' // use console dialog
#define GO_DARKTHEME 'd' // use dark theme variant
#define GO_TABLINE 'e' // may show tabline #define GO_TABLINE 'e' // may show tabline
#define GO_FORG 'f' // start GUI in foreground #define GO_FORG 'f' // start GUI in foreground
#define GO_GREY 'g' // use grey menu items #define GO_GREY 'g' // use grey menu items
@@ -231,7 +232,7 @@
#define GO_FOOTER 'F' // add footer #define GO_FOOTER 'F' // add footer
#define GO_VERTICAL 'v' // arrange dialog buttons vertically #define GO_VERTICAL 'v' // arrange dialog buttons vertically
#define GO_KEEPWINSIZE 'k' // keep GUI window size #define GO_KEEPWINSIZE 'k' // keep GUI window size
#define GO_ALL "!aAbcefFghilmMprtTvk" // all possible flags for 'go' #define GO_ALL "!aAbcdefFghilmMprtTvk" // all possible flags for 'go'
// flags for 'comments' option // flags for 'comments' option
#define COM_NEST 'n' // comments strings nest #define COM_NEST 'n' // comments strings nest

View File

@@ -8,6 +8,7 @@ void gui_mch_stop_blink(int may_call_gui_update_cursor);
void gui_mch_start_blink(void); void gui_mch_start_blink(void);
int gui_mch_early_init_check(int give_message); int gui_mch_early_init_check(int give_message);
int gui_mch_init_check(void); int gui_mch_init_check(void);
void gui_mch_set_dark_theme(int dark);
void gui_mch_show_tabline(int showit); void gui_mch_show_tabline(int showit);
int gui_mch_showing_tabline(void); int gui_mch_showing_tabline(void);
void gui_mch_update_tabline(void); void gui_mch_update_tabline(void);

View File

@@ -643,6 +643,15 @@ func Test_set_guioptions()
call assert_equal('aegi', &guioptions) call assert_equal('aegi', &guioptions)
endif endif
if has('gui_gtk3')
set guioptions+=d
exec 'sleep' . duration
call assert_equal('aegid', &guioptions)
set guioptions-=d
exec 'sleep' . duration
call assert_equal('aegi', &guioptions)
endif
" Restore GUI ornaments to the default state. " Restore GUI ornaments to the default state.
set guioptions+=m set guioptions+=m
exec 'sleep' . duration exec 'sleep' . duration

View File

@@ -757,6 +757,8 @@ static char *(features[]) =
static int included_patches[] = static int included_patches[] =
{ /* Add new patch number below this line */ { /* Add new patch number below this line */
/**/
2034,
/**/ /**/
2033, 2033,
/**/ /**/