gtk3: select old/new gtk theme behaviour etc at runtime
Change-Id: Ie09419049e3d839315f4fc8a937f0dde74688d98
Reviewed-on: https://gerrit.libreoffice.org/29969
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Tested-by: Caolán McNamara <caolanm@redhat.com>
diff --git a/vcl/unx/gtk3/gtk3gtkframe.cxx b/vcl/unx/gtk3/gtk3gtkframe.cxx
index 5d4b92b..d86860b 100644
--- a/vcl/unx/gtk3/gtk3gtkframe.cxx
+++ b/vcl/unx/gtk3/gtk3gtkframe.cxx
@@ -2071,17 +2071,23 @@ void GtkSalFrame::grabPointer( bool bGrab, bool bOwnerEvents )
return;
#if GTK_CHECK_VERSION(3, 19, 2)
GdkSeat* pSeat = gdk_display_get_default_seat(getGdkDisplay());
if (bGrab)
if (gtk_check_version(3, 19, 2) == nullptr)
{
gdk_seat_grab(pSeat, widget_get_window(getMouseEventWidget()), GDK_SEAT_CAPABILITY_ALL_POINTING,
bOwnerEvents, nullptr, nullptr, nullptr, nullptr);
GdkSeat* pSeat = gdk_display_get_default_seat(getGdkDisplay());
if (bGrab)
{
gdk_seat_grab(pSeat, widget_get_window(getMouseEventWidget()), GDK_SEAT_CAPABILITY_ALL_POINTING,
bOwnerEvents, nullptr, nullptr, nullptr, nullptr);
}
else
{
gdk_seat_ungrab(pSeat);
}
return;
}
else
{
gdk_seat_ungrab(pSeat);
}
#else
#endif
//else older gtk3
const int nMask = (GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK);
GdkDeviceManager* pDeviceManager = gdk_display_get_device_manager(getGdkDisplay());
@@ -2095,7 +2101,6 @@ void GtkSalFrame::grabPointer( bool bGrab, bool bOwnerEvents )
{
gdk_device_ungrab(pPointer, gtk_get_current_event_time());
}
#endif
}
void GtkSalFrame::CaptureMouse( bool bCapture )
diff --git a/vcl/unx/gtk3/gtk3salnativewidgets-gtk.cxx b/vcl/unx/gtk3/gtk3salnativewidgets-gtk.cxx
index 0ede991..a485343 100644
--- a/vcl/unx/gtk3/gtk3salnativewidgets-gtk.cxx
+++ b/vcl/unx/gtk3/gtk3salnativewidgets-gtk.cxx
@@ -852,159 +852,160 @@ void GtkSalGraphics::PaintCombobox( GtkStateFlags flags, cairo_t *cr,
}
}
#if GTK_CHECK_VERSION(3, 19, 2)
typedef void (*gtk_widget_path_iter_set_object_nameFunc)(GtkWidgetPath *, guint, const char*);
static GtkStyleContext* createStyleContext(GtkControlPart ePart, GtkStyleContext* parent = nullptr)
static GtkStyleContext* createNewStyleContext(gtk_widget_path_iter_set_object_nameFunc set_object_name,
GtkControlPart ePart, GtkStyleContext* parent)
{
GtkWidgetPath *path = parent ? gtk_widget_path_copy(gtk_style_context_get_path(parent)) : gtk_widget_path_new();
switch (ePart)
{
case GtkControlPart::Button:
gtk_widget_path_append_type(path, GTK_TYPE_BUTTON);
gtk_widget_path_iter_set_object_name(path, -1, "button");
set_object_name(path, -1, "button");
break;
case GtkControlPart::LinkButton:
gtk_widget_path_append_type(path, GTK_TYPE_BUTTON);
gtk_widget_path_iter_set_object_name(path, -1, "button");
set_object_name(path, -1, "button");
gtk_widget_path_iter_add_class(path, -1, "link");
break;
case GtkControlPart::CheckButton:
gtk_widget_path_append_type(path, GTK_TYPE_CHECK_BUTTON);
gtk_widget_path_iter_set_object_name(path, -1, "checkbutton");
set_object_name(path, -1, "checkbutton");
break;
case GtkControlPart::CheckButtonCheck:
gtk_widget_path_append_type(path, GTK_TYPE_CHECK_BUTTON);
gtk_widget_path_iter_set_object_name(path, -1, "check");
set_object_name(path, -1, "check");
break;
case GtkControlPart::RadioButton:
gtk_widget_path_append_type(path, GTK_TYPE_RADIO_BUTTON);
gtk_widget_path_iter_set_object_name(path, -1, "radiobutton");
set_object_name(path, -1, "radiobutton");
break;
case GtkControlPart::RadioButtonRadio:
gtk_widget_path_append_type(path, GTK_TYPE_RADIO_BUTTON);
gtk_widget_path_iter_set_object_name(path, -1, "radio");
set_object_name(path, -1, "radio");
break;
case GtkControlPart::Arrow:
gtk_widget_path_append_type(path, GTK_TYPE_BUTTON);
gtk_widget_path_iter_set_object_name(path, -1, "arrow");
set_object_name(path, -1, "arrow");
break;
case GtkControlPart::Entry:
gtk_widget_path_append_type(path, GTK_TYPE_ENTRY);
gtk_widget_path_iter_set_object_name(path, -1, "entry");
set_object_name(path, -1, "entry");
break;
case GtkControlPart::SpinButton:
gtk_widget_path_append_type(path, GTK_TYPE_SPIN_BUTTON);
gtk_widget_path_iter_set_object_name(path, -1, "spinbutton");
set_object_name(path, -1, "spinbutton");
gtk_widget_path_iter_add_class(path, -1, GTK_STYLE_CLASS_HORIZONTAL);
break;
case GtkControlPart::SpinButtonUpButton:
case GtkControlPart::SpinButtonDownButton:
gtk_widget_path_append_type(path, GTK_TYPE_SPIN_BUTTON);
gtk_widget_path_iter_set_object_name(path, -1, "button");
set_object_name(path, -1, "button");
gtk_widget_path_iter_add_class(path, -1, ePart == GtkControlPart::SpinButtonUpButton ? "up" : "down");
break;
case GtkControlPart::ScrollbarVertical:
case GtkControlPart::ScrollbarHorizontal:
gtk_widget_path_append_type(path, GTK_TYPE_SCROLLBAR);
gtk_widget_path_iter_set_object_name(path, -1, "scrollbar");
set_object_name(path, -1, "scrollbar");
gtk_widget_path_iter_add_class(path, -1, ePart == GtkControlPart::ScrollbarVertical ? "vertical" : "horizontal");
break;
case GtkControlPart::ScrollbarContents:
gtk_widget_path_append_type(path, GTK_TYPE_SCROLLBAR);
gtk_widget_path_iter_set_object_name(path, -1, "contents");
set_object_name(path, -1, "contents");
break;
case GtkControlPart::ScrollbarTrough:
gtk_widget_path_append_type(path, GTK_TYPE_SCROLLBAR);
gtk_widget_path_iter_set_object_name(path, -1, "trough");
set_object_name(path, -1, "trough");
break;
case GtkControlPart::ScrollbarSlider:
gtk_widget_path_append_type(path, GTK_TYPE_SCROLLBAR);
gtk_widget_path_iter_set_object_name(path, -1, "slider");
set_object_name(path, -1, "slider");
break;
case GtkControlPart::ScrollbarButton:
gtk_widget_path_append_type(path, GTK_TYPE_SCROLLBAR);
gtk_widget_path_iter_set_object_name(path, -1, "button");
set_object_name(path, -1, "button");
break;
case GtkControlPart::ProgressBar:
gtk_widget_path_append_type(path, GTK_TYPE_PROGRESS_BAR);
gtk_widget_path_iter_set_object_name(path, -1, "progressbar");
set_object_name(path, -1, "progressbar");
gtk_widget_path_iter_add_class(path, -1, GTK_STYLE_CLASS_HORIZONTAL);
break;
case GtkControlPart::ProgressBarTrough:
gtk_widget_path_append_type(path, GTK_TYPE_PROGRESS_BAR);
gtk_widget_path_iter_set_object_name(path, -1, "trough");
set_object_name(path, -1, "trough");
break;
case GtkControlPart::ProgressBarProgress:
gtk_widget_path_append_type(path, GTK_TYPE_PROGRESS_BAR);
gtk_widget_path_iter_set_object_name(path, -1, "progress");
set_object_name(path, -1, "progress");
break;
case GtkControlPart::MenuBar:
gtk_widget_path_append_type(path, GTK_TYPE_MENU_BAR);
gtk_widget_path_iter_set_object_name(path, -1, "menubar");
set_object_name(path, -1, "menubar");
break;
case GtkControlPart::MenuItem:
gtk_widget_path_append_type(path, GTK_TYPE_MENU_ITEM);
gtk_widget_path_iter_set_object_name(path, -1, "menuitem");
set_object_name(path, -1, "menuitem");
break;
case GtkControlPart::MenuItemArrow:
gtk_widget_path_append_type(path, GTK_TYPE_MENU_ITEM);
gtk_widget_path_iter_set_object_name(path, -1, "arrow");
set_object_name(path, -1, "arrow");
break;
case GtkControlPart::Menu:
gtk_widget_path_append_type(path, GTK_TYPE_MENU);
gtk_widget_path_iter_set_object_name(path, -1, "menu");
set_object_name(path, -1, "menu");
break;
case GtkControlPart::CheckMenuItem:
gtk_widget_path_append_type(path, GTK_TYPE_CHECK_MENU_ITEM);
gtk_widget_path_iter_set_object_name(path, -1, "menuitem");
set_object_name(path, -1, "menuitem");
break;
case GtkControlPart::CheckMenuItemCheck:
gtk_widget_path_append_type(path, GTK_TYPE_CHECK_MENU_ITEM);
gtk_widget_path_iter_set_object_name(path, -1, "check");
set_object_name(path, -1, "check");
break;
case GtkControlPart::RadioMenuItem:
gtk_widget_path_append_type(path, GTK_TYPE_RADIO_MENU_ITEM);
gtk_widget_path_iter_set_object_name(path, -1, "menuitem");
set_object_name(path, -1, "menuitem");
break;
case GtkControlPart::RadioMenuItemRadio:
gtk_widget_path_append_type(path, GTK_TYPE_RADIO_MENU_ITEM);
gtk_widget_path_iter_set_object_name(path, -1, "radio");
set_object_name(path, -1, "radio");
break;
case GtkControlPart::SeparatorMenuItem:
gtk_widget_path_append_type(path, GTK_TYPE_SEPARATOR_MENU_ITEM);
gtk_widget_path_iter_set_object_name(path, -1, "menuitem");
set_object_name(path, -1, "menuitem");
break;
case GtkControlPart::SeparatorMenuItemSeparator:
gtk_widget_path_append_type(path, GTK_TYPE_SEPARATOR_MENU_ITEM);
gtk_widget_path_iter_set_object_name(path, -1, "separator");
set_object_name(path, -1, "separator");
break;
case GtkControlPart::Notebook:
gtk_widget_path_append_type(path, GTK_TYPE_NOTEBOOK);
gtk_widget_path_iter_set_object_name(path, -1, "notebook");
set_object_name(path, -1, "notebook");
break;
case GtkControlPart::NotebookStack:
gtk_widget_path_append_type(path, GTK_TYPE_NOTEBOOK);
gtk_widget_path_iter_set_object_name(path, -1, "stack");
set_object_name(path, -1, "stack");
break;
case GtkControlPart::NotebookHeader:
gtk_widget_path_append_type(path, GTK_TYPE_NOTEBOOK);
gtk_widget_path_iter_set_object_name(path, -1, "header");
set_object_name(path, -1, "header");
gtk_widget_path_iter_add_class(path, -1, "frame");
gtk_widget_path_iter_add_class(path, -1, "top");
break;
case GtkControlPart::NotebookHeaderTabs:
gtk_widget_path_append_type(path, GTK_TYPE_NOTEBOOK);
gtk_widget_path_iter_set_object_name(path, -1, "tabs");
set_object_name(path, -1, "tabs");
gtk_widget_path_iter_add_class(path, -1, "top");
break;
case GtkControlPart::NotebookHeaderTabsTab:
gtk_widget_path_append_type(path, GTK_TYPE_NOTEBOOK);
gtk_widget_path_iter_set_object_name(path, -1, "tab");
set_object_name(path, -1, "tab");
gtk_widget_path_iter_add_class(path, -1, "top");
break;
case GtkControlPart::FrameBorder:
gtk_widget_path_append_type(path, GTK_TYPE_FRAME);
gtk_widget_path_iter_set_object_name(path, -1, "frame");
set_object_name(path, -1, "frame");
gtk_widget_path_iter_add_class(path, -1, "frame");
break;
}
@@ -1017,9 +1018,7 @@ static GtkStyleContext* createStyleContext(GtkControlPart ePart, GtkStyleContext
return context;
}
#else
static GtkStyleContext* createStyleContext(GtkControlPart ePart, GtkStyleContext* parent = nullptr)
static GtkStyleContext* createOldStyleContext(GtkControlPart ePart, GtkStyleContext* parent)
{
GtkWidgetPath *path = parent ? gtk_widget_path_copy(gtk_style_context_get_path(parent)) : gtk_widget_path_new();
switch (ePart)
@@ -1192,7 +1191,13 @@ static GtkStyleContext* createStyleContext(GtkControlPart ePart, GtkStyleContext
return context;
}
#endif
static GtkStyleContext* createStyleContext(gtk_widget_path_iter_set_object_nameFunc set_object_name,
GtkControlPart ePart, GtkStyleContext* parent = nullptr)
{
if (set_object_name)
return createNewStyleContext(set_object_name, ePart, parent);
return createOldStyleContext(ePart, parent);
}
#if GTK_CHECK_VERSION(3,13,7)
# define CHECKED GTK_STATE_FLAG_CHECKED
@@ -1259,9 +1264,7 @@ bool GtkSalGraphics::drawNativeControl( ControlType nType, ControlPart nPart, co
{
RenderType renderType = nPart == ControlPart::Focus ? RenderType::Focus : RenderType::BackgroundAndFrame;
GtkStyleContext *context = nullptr;
#if !GTK_CHECK_VERSION(3,19,2)
const gchar *styleClass = nullptr;
#endif
GdkPixbuf *pixbuf = nullptr;
bool bInMenu = false;
@@ -1302,12 +1305,13 @@ bool GtkSalGraphics::drawNativeControl( ControlType nType, ControlPart nPart, co
renderType = RenderType::BackgroundAndFrame;
break;
case ControlPart::MenuItemCheckMark:
#if GTK_CHECK_VERSION(3,19,2)
context = mpCheckMenuItemStyle;
#else
context = gtk_widget_get_style_context(gCheckMenuItemWidget);
styleClass = GTK_STYLE_CLASS_CHECK;
#endif
if (gtk_check_version(3, 19, 2) == nullptr)
context = mpCheckMenuItemStyle;
else
{
context = gtk_widget_get_style_context(gCheckMenuItemWidget);
styleClass = GTK_STYLE_CLASS_CHECK;
}
renderType = RenderType::Check;
nType = ControlType::Checkbox;
if (nState & ControlState::PRESSED)
@@ -1316,12 +1320,13 @@ bool GtkSalGraphics::drawNativeControl( ControlType nType, ControlPart nPart, co
}
break;
case ControlPart::MenuItemRadioMark:
#if GTK_CHECK_VERSION(3,19,2)
context = mpRadioMenuItemStyle;
#else
context = gtk_widget_get_style_context(gCheckMenuItemWidget);
styleClass = GTK_STYLE_CLASS_RADIO;
#endif
if (gtk_check_version(3, 19, 2) == nullptr)
context = mpRadioMenuItemStyle;
else
{
context = gtk_widget_get_style_context(gCheckMenuItemWidget);
styleClass = GTK_STYLE_CLASS_RADIO;
}
renderType = RenderType::Radio;
nType = ControlType::Radiobutton;
if (nState & ControlState::PRESSED)
@@ -1335,12 +1340,13 @@ bool GtkSalGraphics::drawNativeControl( ControlType nType, ControlPart nPart, co
renderType = RenderType::MenuSeparator;
break;
case ControlPart::SubmenuArrow:
#if GTK_CHECK_VERSION(3,19,2)
context = mpMenuItemArrowStyle;
#else
context = gtk_widget_get_style_context(gCheckMenuItemWidget);
styleClass = GTK_STYLE_CLASS_ARROW;
#endif
if (gtk_check_version(3, 19, 2) == nullptr)
context = mpMenuItemArrowStyle;
else
{
context = gtk_widget_get_style_context(gCheckMenuItemWidget);
styleClass = GTK_STYLE_CLASS_ARROW;
}
renderType = RenderType::Arrow;
break;
case ControlPart::Entire:
@@ -1494,26 +1500,28 @@ bool GtkSalGraphics::drawNativeControl( ControlType nType, ControlPart nPart, co
if (nType == ControlType::TabItem)
{
GtkBorder margin;
#if GTK_CHECK_VERSION(3,19,2)
gtk_style_context_get_margin(mpNotebookHeaderTabsTabStyle, gtk_style_context_get_state(mpNotebookHeaderTabsTabStyle), &margin);
#else
gint initial_gap(0);
gtk_style_context_get_style(mpNotebookStyle,
"initial-gap", &initial_gap,
nullptr);
if (gtk_check_version(3, 19, 2) == nullptr)
{
gtk_style_context_get_margin(mpNotebookHeaderTabsTabStyle,
gtk_style_context_get_state(mpNotebookHeaderTabsTabStyle), &margin);
}
else
{
gint initial_gap(0);
gtk_style_context_get_style(mpNotebookStyle,
"initial-gap", &initial_gap,
nullptr);
margin.left = margin.right = initial_gap/2;
#endif
margin.left = margin.right = initial_gap/2;
}
nX += margin.left;
nWidth -= (margin.left + margin.right);
}
#if !GTK_CHECK_VERSION(3,19,2)
if (styleClass)
{
gtk_style_context_add_class(context, styleClass);
}
#endif
switch(renderType)
{
@@ -1614,12 +1622,10 @@ bool GtkSalGraphics::drawNativeControl( ControlType nType, ControlPart nPart, co
break;
}
#if !GTK_CHECK_VERSION(3,19,2)
if (styleClass)
{
gtk_style_context_remove_class(context, styleClass);
}
#endif
cairo_destroy(cr); // unref
@@ -2083,7 +2089,7 @@ void GtkSalGraphics::updateSettings( AllSettings& rSettings )
aStyleSet.SetVisitedLinkColor(getColor(text_color));
#endif
#if GTK_CHECK_VERSION(3, 19, 2)
if (gtk_check_version(3, 19, 2) == nullptr)
{
GtkStyleContext *pCStyle = mpNotebookHeaderTabsTabStyle;
@@ -2103,7 +2109,7 @@ void GtkSalGraphics::updateSettings( AllSettings& rSettings )
aTextColor = getColor( text_color );
aStyleSet.SetTabHighlightTextColor(aTextColor);
}
#else
else
{
GtkStyleContext *pCStyle = gtk_style_context_new();
gtk_style_context_set_screen( pCStyle, gtk_window_get_screen( GTK_WINDOW( mpWindow ) ) );
@@ -2141,7 +2147,6 @@ void GtkSalGraphics::updateSettings( AllSettings& rSettings )
g_object_unref( pCStyle );
}
#endif
// get cursor blink time
gboolean blink = false;
@@ -2392,13 +2397,20 @@ GtkSalGraphics::GtkSalGraphics( GtkSalFrame *pFrame, GtkWidget *pWindow )
mpFrame( pFrame ),
mpWindow( pWindow )
{
if(style_loaded)
if (style_loaded)
return;
style_loaded = true;
/* Load the GtkStyleContexts, it might be a bit slow, but usually,
* gtk apps create a lot of widgets at startup, so, it shouldn't be
* too slow */
gtk_widget_path_iter_set_object_nameFunc set_object_name =
reinterpret_cast<gtk_widget_path_iter_set_object_nameFunc>(osl_getAsciiFunctionSymbol(nullptr,
"gtk_widget_path_iter_set_object_name"));
fprintf(stderr, "set_object_name is %p\n", set_object_name);
gCacheWindow = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gDumbContainer = gtk_fixed_new();
gtk_container_add(GTK_CONTAINER(gCacheWindow), gDumbContainer);
@@ -2407,12 +2419,12 @@ GtkSalGraphics::GtkSalGraphics( GtkSalFrame *pFrame, GtkWidget *pWindow )
gEntryBox = gtk_entry_new();
gtk_container_add(GTK_CONTAINER(gDumbContainer), gEntryBox);
mpEntryStyle = createStyleContext(GtkControlPart::Entry);
mpEntryStyle = createStyleContext(set_object_name, GtkControlPart::Entry);
getStyleContext(&mpTextViewStyle, gtk_text_view_new());
mpButtonStyle = createStyleContext(GtkControlPart::Button);
mpLinkButtonStyle = createStyleContext(GtkControlPart::LinkButton);
mpButtonStyle = createStyleContext(set_object_name, GtkControlPart::Button);
mpLinkButtonStyle = createStyleContext(set_object_name, GtkControlPart::LinkButton);
GtkWidget* pToolbar = gtk_toolbar_new();
mpToolbarStyle = gtk_widget_get_style_context(pToolbar);
@@ -2428,26 +2440,26 @@ GtkSalGraphics::GtkSalGraphics( GtkSalFrame *pFrame, GtkWidget *pWindow )
gtk_toolbar_insert(GTK_TOOLBAR(pToolbar), item, -1);
mpToolButtonStyle = gtk_widget_get_style_context(GTK_WIDGET(pButton));
mpVScrollbarStyle = createStyleContext(GtkControlPart::ScrollbarVertical);
mpVScrollbarContentsStyle = createStyleContext(GtkControlPart::ScrollbarContents, mpVScrollbarStyle);
mpVScrollbarTroughStyle = createStyleContext(GtkControlPart::ScrollbarTrough, mpVScrollbarContentsStyle);
mpVScrollbarSliderStyle = createStyleContext(GtkControlPart::ScrollbarSlider, mpVScrollbarTroughStyle);
mpVScrollbarButtonStyle = createStyleContext(GtkControlPart::ScrollbarButton, mpVScrollbarStyle);
mpHScrollbarStyle = createStyleContext(GtkControlPart::ScrollbarHorizontal);
mpHScrollbarContentsStyle = createStyleContext(GtkControlPart::ScrollbarContents, mpHScrollbarStyle);
mpHScrollbarTroughStyle = createStyleContext(GtkControlPart::ScrollbarTrough, mpHScrollbarContentsStyle);
mpHScrollbarSliderStyle = createStyleContext(GtkControlPart::ScrollbarSlider, mpHScrollbarTroughStyle);
mpHScrollbarButtonStyle = createStyleContext(GtkControlPart::ScrollbarButton, mpHScrollbarStyle);
mpVScrollbarStyle = createStyleContext(set_object_name, GtkControlPart::ScrollbarVertical);
mpVScrollbarContentsStyle = createStyleContext(set_object_name, GtkControlPart::ScrollbarContents, mpVScrollbarStyle);
mpVScrollbarTroughStyle = createStyleContext(set_object_name, GtkControlPart::ScrollbarTrough, mpVScrollbarContentsStyle);
mpVScrollbarSliderStyle = createStyleContext(set_object_name, GtkControlPart::ScrollbarSlider, mpVScrollbarTroughStyle);
mpVScrollbarButtonStyle = createStyleContext(set_object_name, GtkControlPart::ScrollbarButton, mpVScrollbarStyle);
mpHScrollbarStyle = createStyleContext(set_object_name, GtkControlPart::ScrollbarHorizontal);
mpHScrollbarContentsStyle = createStyleContext(set_object_name, GtkControlPart::ScrollbarContents, mpHScrollbarStyle);
mpHScrollbarTroughStyle = createStyleContext(set_object_name, GtkControlPart::ScrollbarTrough, mpHScrollbarContentsStyle);
mpHScrollbarSliderStyle = createStyleContext(set_object_name, GtkControlPart::ScrollbarSlider, mpHScrollbarTroughStyle);
mpHScrollbarButtonStyle = createStyleContext(set_object_name, GtkControlPart::ScrollbarButton, mpHScrollbarStyle);
{
GtkStyleContext* parentContext = createStyleContext(GtkControlPart::CheckButton);
mpCheckButtonStyle = createStyleContext(GtkControlPart::CheckButtonCheck, parentContext);
GtkStyleContext* parentContext = createStyleContext(set_object_name, GtkControlPart::CheckButton);
mpCheckButtonStyle = createStyleContext(set_object_name, GtkControlPart::CheckButtonCheck, parentContext);
g_object_unref(parentContext);
}
{
GtkStyleContext* parentContext = createStyleContext(GtkControlPart::RadioButton);
mpRadioButtonStyle = createStyleContext(GtkControlPart::RadioButtonRadio, parentContext);
GtkStyleContext* parentContext = createStyleContext(set_object_name, GtkControlPart::RadioButton);
mpRadioButtonStyle = createStyleContext(set_object_name, GtkControlPart::RadioButtonRadio, parentContext);
g_object_unref(parentContext);
}
@@ -2457,11 +2469,11 @@ GtkSalGraphics::GtkSalGraphics( GtkSalFrame *pFrame, GtkWidget *pWindow )
gtk_menu_shell_append(GTK_MENU_SHELL(gMenuBarWidget), gMenuItemMenuBarWidget);
gtk_container_add(GTK_CONTAINER(gDumbContainer), gMenuBarWidget);
mpMenuBarStyle = createStyleContext(GtkControlPart::MenuBar, gtk_widget_get_style_context(mpWindow));
mpMenuBarItemStyle = createStyleContext(GtkControlPart::MenuItem, mpMenuBarStyle);
mpMenuBarStyle = createStyleContext(set_object_name, GtkControlPart::MenuBar, gtk_widget_get_style_context(mpWindow));
mpMenuBarItemStyle = createStyleContext(set_object_name, GtkControlPart::MenuItem, mpMenuBarStyle);
/* Menu */
mpMenuStyle = createStyleContext(GtkControlPart::Menu, gtk_widget_get_style_context(mpWindow));
mpMenuStyle = createStyleContext(set_object_name, GtkControlPart::Menu, gtk_widget_get_style_context(mpWindow));
GtkWidget *menu = gtk_menu_new();
gtk_menu_item_set_submenu(GTK_MENU_ITEM(gMenuItemMenuBarWidget), menu);
@@ -2469,41 +2481,41 @@ GtkSalGraphics::GtkSalGraphics( GtkSalFrame *pFrame, GtkWidget *pWindow )
gCheckMenuItemWidget = gtk_check_menu_item_new_with_label("M");
gtk_menu_shell_append(GTK_MENU_SHELL(menu), gCheckMenuItemWidget);
mpMenuItemStyle = createStyleContext(GtkControlPart::MenuItem, mpMenuStyle);
mpMenuItemArrowStyle = createStyleContext(GtkControlPart::MenuItemArrow, mpMenuItemStyle);
mpCheckMenuItemStyle = createStyleContext(GtkControlPart::CheckMenuItemCheck, mpMenuItemStyle);
mpRadioMenuItemStyle = createStyleContext(GtkControlPart::RadioMenuItemRadio, mpMenuItemStyle);
mpSeparatorMenuItemStyle = createStyleContext(GtkControlPart::SeparatorMenuItemSeparator, mpMenuItemStyle);
mpMenuItemStyle = createStyleContext(set_object_name, GtkControlPart::MenuItem, mpMenuStyle);
mpMenuItemArrowStyle = createStyleContext(set_object_name, GtkControlPart::MenuItemArrow, mpMenuItemStyle);
mpCheckMenuItemStyle = createStyleContext(set_object_name, GtkControlPart::CheckMenuItemCheck, mpMenuItemStyle);
mpRadioMenuItemStyle = createStyleContext(set_object_name, GtkControlPart::RadioMenuItemRadio, mpMenuItemStyle);
mpSeparatorMenuItemStyle = createStyleContext(set_object_name, GtkControlPart::SeparatorMenuItemSeparator, mpMenuItemStyle);
/* Spinbutton */
gSpinBox = gtk_spin_button_new(nullptr, 0, 0);
gtk_container_add(GTK_CONTAINER(gDumbContainer), gSpinBox);
mpSpinStyle = createStyleContext(GtkControlPart::SpinButton);
mpSpinUpStyle = createStyleContext(GtkControlPart::SpinButtonUpButton, mpSpinStyle);
mpSpinDownStyle = createStyleContext(GtkControlPart::SpinButtonDownButton, mpSpinStyle);
mpSpinStyle = createStyleContext(set_object_name, GtkControlPart::SpinButton);
mpSpinUpStyle = createStyleContext(set_object_name, GtkControlPart::SpinButtonUpButton, mpSpinStyle);
mpSpinDownStyle = createStyleContext(set_object_name, GtkControlPart::SpinButtonDownButton, mpSpinStyle);
/* NoteBook */
mpNotebookStyle = createStyleContext(GtkControlPart::Notebook, gtk_widget_get_style_context(mpWindow));
mpNotebookStackStyle = createStyleContext(GtkControlPart::NotebookStack, mpNotebookStyle);
mpNotebookHeaderStyle = createStyleContext(GtkControlPart::NotebookHeader, mpNotebookStyle);
mpNotebookHeaderTabsStyle = createStyleContext(GtkControlPart::NotebookHeaderTabs, mpNotebookHeaderStyle);
mpNotebookHeaderTabsTabStyle = createStyleContext(GtkControlPart::NotebookHeaderTabsTab, mpNotebookHeaderTabsStyle);
mpNotebookStyle = createStyleContext(set_object_name, GtkControlPart::Notebook, gtk_widget_get_style_context(mpWindow));
mpNotebookStackStyle = createStyleContext(set_object_name, GtkControlPart::NotebookStack, mpNotebookStyle);
mpNotebookHeaderStyle = createStyleContext(set_object_name, GtkControlPart::NotebookHeader, mpNotebookStyle);
mpNotebookHeaderTabsStyle = createStyleContext(set_object_name, GtkControlPart::NotebookHeaderTabs, mpNotebookHeaderStyle);
mpNotebookHeaderTabsTabStyle = createStyleContext(set_object_name, GtkControlPart::NotebookHeaderTabsTab, mpNotebookHeaderTabsStyle);
/* Combobox */
gComboBox = gtk_combo_box_text_new_with_entry();
getStyleContext(&mpComboboxStyle, gComboBox);
mpComboboxButtonStyle = createStyleContext(GtkControlPart::Button, mpComboboxStyle);
mpComboboxButtonArrowStyle = createStyleContext(GtkControlPart::Arrow, mpComboboxButtonStyle);
mpComboboxButtonStyle = createStyleContext(set_object_name, GtkControlPart::Button, mpComboboxStyle);
mpComboboxButtonArrowStyle = createStyleContext(set_object_name, GtkControlPart::Arrow, mpComboboxButtonStyle);
/* Listbox */
gListBox = gtk_combo_box_text_new();
gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(gListBox), "sample");
getStyleContext(&mpListboxStyle, gListBox);
mpListboxButtonStyle = createStyleContext(GtkControlPart::Button, mpListboxStyle);
mpListboxButtonArrowStyle = createStyleContext(GtkControlPart::Arrow, mpListboxButtonStyle);
mpListboxButtonStyle = createStyleContext(set_object_name, GtkControlPart::Button, mpListboxStyle);
mpListboxButtonArrowStyle = createStyleContext(set_object_name, GtkControlPart::Arrow, mpListboxButtonStyle);
/* Frames */
mpFrameOutStyle = mpFrameInStyle = createStyleContext(GtkControlPart::FrameBorder);
mpFrameOutStyle = mpFrameInStyle = createStyleContext(set_object_name, GtkControlPart::FrameBorder);
getStyleContext(&mpFixedHoriLineStyle, gtk_separator_new(GTK_ORIENTATION_HORIZONTAL));
getStyleContext(&mpFixedVertLineStyle, gtk_separator_new(GTK_ORIENTATION_VERTICAL));
@@ -2530,9 +2542,9 @@ GtkSalGraphics::GtkSalGraphics( GtkSalFrame *pFrame, GtkWidget *pWindow )
mpTreeHeaderButtonStyle = gtk_widget_get_style_context(pTreeHeaderCellWidget);
/* Progress Bar */
mpProgressBarStyle = createStyleContext(GtkControlPart::ProgressBar);
mpProgressBarTroughStyle = createStyleContext(GtkControlPart::ProgressBar, mpProgressBarStyle);
mpProgressBarProgressStyle = createStyleContext(GtkControlPart::ProgressBarProgress, mpProgressBarTroughStyle);
mpProgressBarStyle = createStyleContext(set_object_name, GtkControlPart::ProgressBar);
mpProgressBarTroughStyle = createStyleContext(set_object_name, GtkControlPart::ProgressBar, mpProgressBarStyle);
mpProgressBarProgressStyle = createStyleContext(set_object_name, GtkControlPart::ProgressBarProgress, mpProgressBarTroughStyle);
gtk_widget_show_all(gDumbContainer);
}