GtkWidget* RenderThemeGtk::gtkScrollbar() { return moz_gtk_get_scrollbar_widget(); }
nsresult nsLookAndFeel::GetIntImpl(IntID aID, PRInt32 &aResult) { nsresult res = NS_OK; // Set these before they can get overrided in the nsXPLookAndFeel. switch (aID) { case eIntID_ScrollButtonLeftMouseButtonAction: aResult = 0; return NS_OK; case eIntID_ScrollButtonMiddleMouseButtonAction: aResult = 1; return NS_OK; case eIntID_ScrollButtonRightMouseButtonAction: aResult = 2; return NS_OK; default: break; } res = nsXPLookAndFeel::GetIntImpl(aID, aResult); if (NS_SUCCEEDED(res)) return res; res = NS_OK; switch (aID) { case eIntID_CaretBlinkTime: { GtkSettings *settings; gint blink_time; gboolean blink; settings = gtk_settings_get_default (); g_object_get (settings, "gtk-cursor-blink-time", &blink_time, "gtk-cursor-blink", &blink, NULL); if (blink) aResult = (PRInt32) blink_time; else aResult = 0; break; } case eIntID_CaretWidth: aResult = 1; break; case eIntID_ShowCaretDuringSelection: aResult = 0; break; case eIntID_SelectTextfieldsOnKeyFocus: { GtkWidget *entry; GtkSettings *settings; gboolean select_on_focus; entry = gtk_entry_new(); g_object_ref_sink(entry); settings = gtk_widget_get_settings(entry); g_object_get(settings, "gtk-entry-select-on-focus", &select_on_focus, NULL); if(select_on_focus) aResult = 1; else aResult = 0; gtk_widget_destroy(entry); g_object_unref(entry); } break; case eIntID_SubmenuDelay: { GtkSettings *settings; gint delay; settings = gtk_settings_get_default (); g_object_get (settings, "gtk-menu-popup-delay", &delay, NULL); aResult = (PRInt32) delay; break; } case eIntID_MenusCanOverlapOSBar: // we want XUL popups to be able to overlap the task bar. aResult = 1; break; case eIntID_SkipNavigatingDisabledMenuItem: aResult = 1; break; case eIntID_DragThresholdX: case eIntID_DragThresholdY: { GtkWidget* box = gtk_hbox_new(FALSE, 5); gint threshold = 0; g_object_get(gtk_widget_get_settings(box), "gtk-dnd-drag-threshold", &threshold, NULL); g_object_ref_sink(box); aResult = threshold; } break; case eIntID_ScrollArrowStyle: moz_gtk_init(); aResult = ConvertGTKStepperStyleToMozillaScrollArrowStyle(moz_gtk_get_scrollbar_widget()); break; case eIntID_ScrollSliderStyle: aResult = eScrollThumbStyle_Proportional; break; case eIntID_TreeOpenDelay: aResult = 1000; break; case eIntID_TreeCloseDelay: aResult = 1000; break; case eIntID_TreeLazyScrollDelay: aResult = 150; break; case eIntID_TreeScrollDelay: aResult = 100; break; case eIntID_TreeScrollLinesMax: aResult = 3; break; case eIntID_DWMCompositor: case eIntID_WindowsClassic: case eIntID_WindowsDefaultTheme: case eIntID_WindowsThemeIdentifier: aResult = 0; res = NS_ERROR_NOT_IMPLEMENTED; break; case eIntID_TouchEnabled: #ifdef MOZ_PLATFORM_MAEMO // All Hildon devices are touch-enabled aResult = 1; #else aResult = 0; res = NS_ERROR_NOT_IMPLEMENTED; #endif break; case eIntID_MaemoClassic: #ifdef MOZ_PLATFORM_MAEMO { aResult = 0; nsCOMPtr<nsIPropertyBag2> infoService(do_GetService("@mozilla.org/system-info;1")); if (infoService) { nsCString deviceType; nsresult rv = infoService->GetPropertyAsACString(NS_LITERAL_STRING("device"), deviceType); if (NS_SUCCEEDED(rv)) { if (deviceType.EqualsLiteral("Nokia N8xx")) aResult = 1; } } } #else aResult = 0; res = NS_ERROR_NOT_IMPLEMENTED; #endif break; case eIntID_MacGraphiteTheme: case eIntID_MacLionTheme: aResult = 0; res = NS_ERROR_NOT_IMPLEMENTED; break; case eIntID_IMERawInputUnderlineStyle: case eIntID_IMEConvertedTextUnderlineStyle: aResult = NS_STYLE_TEXT_DECORATION_STYLE_SOLID; break; case eIntID_IMESelectedRawTextUnderlineStyle: case eIntID_IMESelectedConvertedTextUnderline: aResult = NS_STYLE_TEXT_DECORATION_STYLE_NONE; break; case eIntID_SpellCheckerUnderlineStyle: aResult = NS_STYLE_TEXT_DECORATION_STYLE_WAVY; break; case eIntID_ImagesInMenus: aResult = moz_gtk_images_in_menus(); break; case eIntID_ImagesInButtons: aResult = moz_gtk_images_in_buttons(); break; case eIntID_MenuBarDrag: aResult = sMenuSupportsDrag; break; case eIntID_ScrollbarButtonAutoRepeatBehavior: aResult = 1; break; default: aResult = 0; res = NS_ERROR_FAILURE; } return res; }