mozilla-gtk3_20.patch
author Wolfgang Rosenauer <wr@rosenauer.org>
Thu, 18 Aug 2016 08:58:07 +0200
branchfirefox48
changeset 926 6ab8b16f232c
parent 919 6838f0c032f8
permissions -rw-r--r--
merge latest changes from Factory
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
     1
diff -up firefox-48.0/widget/gtk/gtk3drawing.cpp.gtk3-20 firefox-48.0/widget/gtk/gtk3drawing.cpp
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
     2
--- firefox-48.0/widget/gtk/gtk3drawing.cpp.gtk3-20	2016-07-25 22:22:07.000000000 +0200
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
     3
+++ firefox-48.0/widget/gtk/gtk3drawing.cpp	2016-07-29 09:15:11.822285857 +0200
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
     4
@@ -18,15 +18,9 @@
907
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
     5
 
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
     6
 #include <math.h>
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
     7
 
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
     8
-static GtkWidget* gProtoWindow;
907
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
     9
 static GtkWidget* gProtoLayout;
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    10
-static GtkWidget* gButtonWidget;
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
    11
-static GtkWidget* gToggleButtonWidget;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
    12
-static GtkWidget* gButtonArrowWidget;
907
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    13
-static GtkWidget* gSpinWidget;
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    14
 static GtkWidget* gHScaleWidget;
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    15
 static GtkWidget* gVScaleWidget;
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    16
-static GtkWidget* gEntryWidget;
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    17
 static GtkWidget* gComboBoxWidget;
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    18
 static GtkWidget* gComboBoxButtonWidget;
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    19
 static GtkWidget* gComboBoxArrowWidget;
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
    20
@@ -35,30 +29,15 @@ static GtkWidget* gComboBoxEntryWidget;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
    21
 static GtkWidget* gComboBoxEntryTextareaWidget;
907
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    22
 static GtkWidget* gComboBoxEntryButtonWidget;
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    23
 static GtkWidget* gComboBoxEntryArrowWidget;
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
    24
-static GtkWidget* gHandleBoxWidget;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
    25
-static GtkWidget* gToolbarWidget;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
    26
-static GtkWidget* gFrameWidget;
907
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    27
-static GtkWidget* gProgressWidget;
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    28
 static GtkWidget* gTabWidget;
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
    29
-static GtkWidget* gTextViewWidget;
919
6838f0c032f8 -------------------------------------------------------------------
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 909
diff changeset
    30
-static GtkWidget* gTooltipWidget;
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
    31
-static GtkWidget* gMenuBarWidget;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
    32
-static GtkWidget* gMenuBarItemWidget;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
    33
-static GtkWidget* gMenuPopupWidget;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
    34
-static GtkWidget* gMenuItemWidget;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
    35
 static GtkWidget* gImageMenuItemWidget;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
    36
 static GtkWidget* gCheckMenuItemWidget;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
    37
 static GtkWidget* gTreeViewWidget;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
    38
 static GtkTreeViewColumn* gMiddleTreeViewColumn;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
    39
 static GtkWidget* gTreeHeaderCellWidget;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
    40
 static GtkWidget* gTreeHeaderSortArrowWidget;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
    41
-static GtkWidget* gExpanderWidget;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
    42
-static GtkWidget* gToolbarSeparatorWidget;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
    43
-static GtkWidget* gMenuSeparatorWidget;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
    44
 static GtkWidget* gHPanedWidget;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
    45
 static GtkWidget* gVPanedWidget;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
    46
-static GtkWidget* gScrolledWindowWidget;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
    47
-static GtkWidget* gInfoBar;
907
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    48
 
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
    49
 static style_prop_t style_prop_func;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
    50
 static gboolean have_arrow_scaling;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
    51
@@ -94,15 +73,6 @@ GetStateFlagsFromGtkWidgetState(GtkWidge
907
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    52
     return stateFlags;
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    53
 }
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    54
 
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
    55
-/* Because we have such an unconventional way of drawing widgets, signal to the GTK theme engine
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
    56
-   that they are drawing for Mozilla instead of a conventional GTK app so they can do any specific
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
    57
-   things they may want to do. */
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
    58
-static void
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
    59
-moz_gtk_set_widget_name(GtkWidget* widget)
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
    60
-{
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
    61
-    gtk_widget_set_name(widget, "MozillaGtkWidget");
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
    62
-}
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
    63
-
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
    64
 gint
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
    65
 moz_gtk_enable_style_props(style_prop_t styleGetProp)
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
    66
 {
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
    67
@@ -111,15 +81,6 @@ moz_gtk_enable_style_props(style_prop_t
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
    68
 }
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
    69
 
907
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    70
 static gint
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
    71
-ensure_window_widget()
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
    72
-{
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
    73
-    if (!gProtoWindow) {
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
    74
-        gProtoWindow = GetWidget(MOZ_GTK_WINDOW);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
    75
-    }
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
    76
-    return MOZ_GTK_SUCCESS;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
    77
-}
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
    78
-
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
    79
-static gint
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
    80
 setup_widget_prototype(GtkWidget* widget)
907
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    81
 {
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
    82
     if (!gProtoLayout) {
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
    83
@@ -130,16 +91,6 @@ setup_widget_prototype(GtkWidget* widget
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
    84
 }
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
    85
 
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
    86
 static gint
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
    87
-ensure_button_widget()
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
    88
-{
907
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    89
-    if (!gButtonWidget) {
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    90
-        gButtonWidget = gtk_button_new_with_label("M");
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    91
-        setup_widget_prototype(gButtonWidget);
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
    92
-    }
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
    93
-    return MOZ_GTK_SUCCESS;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
    94
-}
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
    95
-
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
    96
-static gint
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
    97
 ensure_hpaned_widget()
907
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    98
 {
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
    99
     if (!gHPanedWidget) {
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   100
@@ -160,40 +111,6 @@ ensure_vpaned_widget()
907
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   101
 }
908
b29b47737173 sync from mozilla:Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 907
diff changeset
   102
 
907
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   103
 static gint
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   104
-ensure_toggle_button_widget()
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   105
-{
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   106
-    if (!gToggleButtonWidget) {
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   107
-        gToggleButtonWidget = gtk_toggle_button_new();
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   108
-        setup_widget_prototype(gToggleButtonWidget);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   109
-  }
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   110
-  return MOZ_GTK_SUCCESS;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   111
-}
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   112
-
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   113
-static gint
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   114
-ensure_button_arrow_widget()
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   115
-{
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   116
-    if (!gButtonArrowWidget) {
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   117
-        ensure_toggle_button_widget();
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   118
-
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   119
-        gButtonArrowWidget = gtk_arrow_new(GTK_ARROW_DOWN, GTK_SHADOW_OUT);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   120
-        gtk_container_add(GTK_CONTAINER(gToggleButtonWidget), gButtonArrowWidget);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   121
-        gtk_widget_realize(gButtonArrowWidget);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   122
-        gtk_widget_show(gButtonArrowWidget);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   123
-    }
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   124
-    return MOZ_GTK_SUCCESS;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   125
-}
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   126
-
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   127
-static gint
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   128
-ensure_spin_widget()
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   129
-{
907
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   130
-  if (!gSpinWidget) {
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   131
-    gSpinWidget = gtk_spin_button_new(NULL, 1, 0);
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   132
-    setup_widget_prototype(gSpinWidget);
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   133
-  }
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   134
-  return MOZ_GTK_SUCCESS;
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   135
-}
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   136
-
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   137
-static gint
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   138
 ensure_scale_widget()
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   139
 {
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   140
   if (!gHScaleWidget) {
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   141
@@ -207,16 +124,6 @@ ensure_scale_widget()
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   142
   return MOZ_GTK_SUCCESS;
907
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   143
 }
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   144
 
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   145
-static gint
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   146
-ensure_entry_widget()
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   147
-{
907
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   148
-    if (!gEntryWidget) {
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   149
-        gEntryWidget = gtk_entry_new();
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   150
-        setup_widget_prototype(gEntryWidget);
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   151
-    }
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   152
-    return MOZ_GTK_SUCCESS;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   153
-}
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   154
-
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   155
 /* We need to have pointers to the inner widgets (button, separator, arrow)
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   156
  * of the ComboBox to get the correct rendering from theme engines which
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   157
  * special cases their look. Since the inner layout can change, we ask GTK
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   158
@@ -225,7 +132,7 @@ ensure_entry_widget()
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   159
  * g_object_add_weak_pointer().
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   160
  * Note that if we don't find the inner widgets (which shouldn't happen), we
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   161
  * fallback to use generic "non-inner" widgets, and they don't need that kind
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   162
- * of weak pointer since they are explicit children of gProtoWindow and as
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   163
+ * of weak pointer since they are explicit children of gProtoLayout and as
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   164
  * such GTK holds a strong reference to them. */
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   165
 static void
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   166
 moz_gtk_get_combo_box_inner_button(GtkWidget *widget, gpointer client_data)
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   167
@@ -297,16 +204,14 @@ ensure_combo_box_widgets()
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   168
         /* Shouldn't be reached with current internal gtk implementation; we
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   169
          * use a generic toggle button as last resort fallback to avoid
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   170
          * crashing. */
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   171
-        ensure_toggle_button_widget();
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   172
-        gComboBoxButtonWidget = gToggleButtonWidget;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   173
+        gComboBoxButtonWidget = GetWidget(MOZ_GTK_TOGGLE_BUTTON);
907
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   174
     }
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   175
 
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   176
     if (!gComboBoxArrowWidget) {
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   177
         /* Shouldn't be reached with current internal gtk implementation;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   178
          * we gButtonArrowWidget as last resort fallback to avoid
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   179
          * crashing. */
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   180
-        ensure_button_arrow_widget();
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   181
-        gComboBoxArrowWidget = gButtonArrowWidget;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   182
+        gComboBoxArrowWidget = GetWidget(MOZ_GTK_BUTTON_ARROW);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   183
     }
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   184
 
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   185
     /* We don't test the validity of gComboBoxSeparatorWidget since there
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   186
@@ -316,15 +221,6 @@ ensure_combo_box_widgets()
907
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   187
     return MOZ_GTK_SUCCESS;
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   188
 }
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   189
 
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   190
-static void
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   191
-ensure_info_bar()
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   192
-{
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   193
-  if (!gInfoBar) {
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   194
-      gInfoBar = gtk_info_bar_new();
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   195
-      setup_widget_prototype(gInfoBar);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   196
-  }
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   197
-}
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   198
-
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   199
 /* We need to have pointers to the inner widgets (entry, button, arrow) of
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   200
  * the ComboBoxEntry to get the correct rendering from theme engines which
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   201
  * special cases their look. Since the inner layout can change, we ask GTK
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   202
@@ -333,7 +229,7 @@ ensure_info_bar()
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   203
  * g_object_add_weak_pointer().
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   204
  * Note that if we don't find the inner widgets (which shouldn't happen), we
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   205
  * fallback to use generic "non-inner" widgets, and they don't need that kind
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   206
- * of weak pointer since they are explicit children of gProtoWindow and as
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   207
+ * of weak pointer since they are explicit children of gProtoLayout and as
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   208
  * such GTK holds a strong reference to them. */
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   209
 static void
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   210
 moz_gtk_get_combo_box_entry_inner_widgets(GtkWidget *widget,
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   211
@@ -385,8 +281,7 @@ ensure_combo_box_entry_widgets()
907
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   212
                          NULL);
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   213
 
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   214
     if (!gComboBoxEntryTextareaWidget) {
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   215
-        ensure_entry_widget();
907
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   216
-        gComboBoxEntryTextareaWidget = gEntryWidget;
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   217
+        gComboBoxEntryTextareaWidget = GetWidget(MOZ_GTK_ENTRY);
907
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   218
     }
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   219
 
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   220
     if (gComboBoxEntryButtonWidget) {
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   221
@@ -412,68 +307,19 @@ ensure_combo_box_entry_widgets()
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   222
         /* Shouldn't be reached with current internal gtk implementation;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   223
          * we use a generic toggle button as last resort fallback to avoid
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   224
          * crashing. */
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   225
-        ensure_toggle_button_widget();
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   226
-        gComboBoxEntryButtonWidget = gToggleButtonWidget;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   227
+        gComboBoxEntryButtonWidget = GetWidget(MOZ_GTK_TOGGLE_BUTTON);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   228
     }
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   229
 
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   230
     if (!gComboBoxEntryArrowWidget) {
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   231
         /* Shouldn't be reached with current internal gtk implementation;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   232
          * we gButtonArrowWidget as last resort fallback to avoid
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   233
          * crashing. */
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   234
-        ensure_button_arrow_widget();
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   235
-        gComboBoxEntryArrowWidget = gButtonArrowWidget;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   236
+        gComboBoxEntryArrowWidget = GetWidget(MOZ_GTK_BUTTON_ARROW);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   237
     }
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   238
 
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   239
     return MOZ_GTK_SUCCESS;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   240
 }
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   241
 
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   242
-
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   243
-static gint
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   244
-ensure_handlebox_widget()
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   245
-{
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   246
-    if (!gHandleBoxWidget) {
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   247
-        gHandleBoxWidget = gtk_handle_box_new();
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   248
-        setup_widget_prototype(gHandleBoxWidget);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   249
-    }
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   250
-    return MOZ_GTK_SUCCESS;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   251
-}
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   252
-
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   253
-static gint
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   254
-ensure_toolbar_widget()
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   255
-{
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   256
-    if (!gToolbarWidget) {
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   257
-        ensure_handlebox_widget();
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   258
-        gToolbarWidget = gtk_toolbar_new();
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   259
-        gtk_container_add(GTK_CONTAINER(gHandleBoxWidget), gToolbarWidget);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   260
-        gtk_widget_realize(gToolbarWidget);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   261
-    }
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   262
-    return MOZ_GTK_SUCCESS;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   263
-}
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   264
-
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   265
-static gint
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   266
-ensure_toolbar_separator_widget()
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   267
-{
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   268
-    if (!gToolbarSeparatorWidget) {
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   269
-        ensure_toolbar_widget();
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   270
-        gToolbarSeparatorWidget = GTK_WIDGET(gtk_separator_tool_item_new());
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   271
-        setup_widget_prototype(gToolbarSeparatorWidget);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   272
-    }
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   273
-    return MOZ_GTK_SUCCESS;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   274
-}
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   275
-
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   276
-static gint
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   277
-ensure_tooltip_widget()
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   278
-{
919
6838f0c032f8 -------------------------------------------------------------------
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 909
diff changeset
   279
-    if (!gTooltipWidget) {
6838f0c032f8 -------------------------------------------------------------------
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 909
diff changeset
   280
-        gTooltipWidget = gtk_window_new(GTK_WINDOW_POPUP);
6838f0c032f8 -------------------------------------------------------------------
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 909
diff changeset
   281
-        GtkStyleContext* style = gtk_widget_get_style_context(gTooltipWidget);
6838f0c032f8 -------------------------------------------------------------------
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 909
diff changeset
   282
-        gtk_style_context_add_class(style, GTK_STYLE_CLASS_TOOLTIP);
6838f0c032f8 -------------------------------------------------------------------
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 909
diff changeset
   283
-        gtk_widget_realize(gTooltipWidget);
6838f0c032f8 -------------------------------------------------------------------
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 909
diff changeset
   284
-        moz_gtk_set_widget_name(gTooltipWidget);
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   285
-    }
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   286
-    return MOZ_GTK_SUCCESS;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   287
-}
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   288
-
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   289
 static gint
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   290
 ensure_tab_widget()
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   291
 {
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   292
@@ -485,81 +331,11 @@ ensure_tab_widget()
919
6838f0c032f8 -------------------------------------------------------------------
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 909
diff changeset
   293
 }
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   294
 
907
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   295
 static gint
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   296
-ensure_progress_widget()
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   297
-{
907
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   298
-    if (!gProgressWidget) {
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   299
-        gProgressWidget = gtk_progress_bar_new();
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   300
-        setup_widget_prototype(gProgressWidget);
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   301
-    }
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   302
-    return MOZ_GTK_SUCCESS;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   303
-}
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   304
-
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   305
-static gint
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   306
-ensure_frame_widget()
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   307
-{
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   308
-    if (!gFrameWidget) {
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   309
-        gFrameWidget = gtk_frame_new(NULL);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   310
-        setup_widget_prototype(gFrameWidget);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   311
-    }
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   312
-    return MOZ_GTK_SUCCESS;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   313
-}
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   314
-
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   315
-static gint
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   316
-ensure_menu_bar_widget()
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   317
-{
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   318
-    if (!gMenuBarWidget) {
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   319
-        gMenuBarWidget = gtk_menu_bar_new();
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   320
-        setup_widget_prototype(gMenuBarWidget);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   321
-    }
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   322
-    return MOZ_GTK_SUCCESS;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   323
-}
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   324
-
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   325
-static gint
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   326
-ensure_menu_bar_item_widget()
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   327
-{
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   328
-    if (!gMenuBarItemWidget) {
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   329
-        ensure_menu_bar_widget();
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   330
-        gMenuBarItemWidget = gtk_menu_item_new();
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   331
-        gtk_menu_shell_append(GTK_MENU_SHELL(gMenuBarWidget),
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   332
-                              gMenuBarItemWidget);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   333
-        gtk_widget_realize(gMenuBarItemWidget);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   334
-    }
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   335
-    return MOZ_GTK_SUCCESS;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   336
-}
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   337
-
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   338
-static gint
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   339
-ensure_menu_popup_widget()
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   340
-{
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   341
-    if (!gMenuPopupWidget) {
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   342
-        ensure_window_widget();
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   343
-        gMenuPopupWidget = gtk_menu_new();
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   344
-        gtk_menu_attach_to_widget(GTK_MENU(gMenuPopupWidget), gProtoWindow,
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   345
-                                  NULL);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   346
-        gtk_widget_realize(gMenuPopupWidget);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   347
-    }
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   348
-    return MOZ_GTK_SUCCESS;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   349
-}
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   350
-
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   351
-static gint
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   352
-ensure_menu_item_widget()
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   353
-{
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   354
-    if (!gMenuItemWidget) {
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   355
-        ensure_menu_popup_widget();
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   356
-        gMenuItemWidget = gtk_menu_item_new_with_label("M");
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   357
-        gtk_menu_shell_append(GTK_MENU_SHELL(gMenuPopupWidget),
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   358
-                              gMenuItemWidget);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   359
-        gtk_widget_realize(gMenuItemWidget);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   360
-    }
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   361
-    return MOZ_GTK_SUCCESS;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   362
-}
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   363
-
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   364
-static gint
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   365
 ensure_image_menu_item_widget()
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   366
 {
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   367
     if (!gImageMenuItemWidget) {
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   368
-        ensure_menu_popup_widget();
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   369
         gImageMenuItemWidget = gtk_image_menu_item_new();
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   370
-        gtk_menu_shell_append(GTK_MENU_SHELL(gMenuPopupWidget),
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   371
+        gtk_menu_shell_append(GTK_MENU_SHELL(GetWidget(MOZ_GTK_MENUPOPUP)),
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   372
                               gImageMenuItemWidget);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   373
         gtk_widget_realize(gImageMenuItemWidget);
907
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   374
     }
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   375
@@ -567,25 +343,11 @@ ensure_image_menu_item_widget()
907
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   376
 }
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   377
 
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   378
 static gint
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   379
-ensure_menu_separator_widget()
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   380
-{
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   381
-    if (!gMenuSeparatorWidget) {
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   382
-        ensure_menu_popup_widget();
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   383
-        gMenuSeparatorWidget = gtk_separator_menu_item_new();
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   384
-        gtk_menu_shell_append(GTK_MENU_SHELL(gMenuPopupWidget),
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   385
-                              gMenuSeparatorWidget);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   386
-        gtk_widget_realize(gMenuSeparatorWidget);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   387
-    }
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   388
-    return MOZ_GTK_SUCCESS;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   389
-}
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   390
-
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   391
-static gint
907
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   392
 ensure_check_menu_item_widget()
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   393
 {
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   394
     if (!gCheckMenuItemWidget) {
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   395
-        ensure_menu_popup_widget();
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   396
-        gCheckMenuItemWidget = gtk_check_menu_item_new_with_label("M");
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   397
-        gtk_menu_shell_append(GTK_MENU_SHELL(gMenuPopupWidget),
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   398
+        gCheckMenuItemWidget = gtk_check_menu_item_new();
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   399
+        gtk_menu_shell_append(GTK_MENU_SHELL(GetWidget(MOZ_GTK_MENUPOPUP)),
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   400
                               gCheckMenuItemWidget);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   401
         gtk_widget_realize(gCheckMenuItemWidget);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   402
     }
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   403
@@ -646,37 +408,6 @@ ensure_tree_header_cell_widget()
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   404
     return MOZ_GTK_SUCCESS;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   405
 }
907
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   406
 
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   407
-static gint
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   408
-ensure_expander_widget()
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   409
-{
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   410
-    if (!gExpanderWidget) {
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   411
-        gExpanderWidget = gtk_expander_new("M");
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   412
-        setup_widget_prototype(gExpanderWidget);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   413
-    }
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   414
-    return MOZ_GTK_SUCCESS;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   415
-}
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   416
-
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   417
-static gint
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   418
-ensure_scrolled_window_widget()
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   419
-{
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   420
-    if (!gScrolledWindowWidget) {
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   421
-        gScrolledWindowWidget = gtk_scrolled_window_new(NULL, NULL);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   422
-        setup_widget_prototype(gScrolledWindowWidget);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   423
-    }
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   424
-    return MOZ_GTK_SUCCESS;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   425
-}
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   426
-
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   427
-static void
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   428
-ensure_text_view_widget()
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   429
-{
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   430
-    if (gTextViewWidget)
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   431
-        return;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   432
-
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   433
-    gTextViewWidget = gtk_text_view_new();
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   434
-    ensure_scrolled_window_widget();
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   435
-    gtk_container_add(GTK_CONTAINER(gScrolledWindowWidget), gTextViewWidget);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   436
-}
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   437
-
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   438
 gint
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   439
 moz_gtk_init()
907
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   440
 {
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   441
@@ -729,26 +460,21 @@ moz_gtk_get_focus_outline_size(gint* foc
907
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   442
 {
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   443
     GtkBorder border;
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   444
     GtkBorder padding;
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   445
-    GtkStyleContext *style;
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   446
-
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   447
-    ensure_entry_widget();
907
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   448
-    style = gtk_widget_get_style_context(gEntryWidget);
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   449
-
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   450
+    GtkStyleContext *style = ClaimStyleContext(MOZ_GTK_ENTRY);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   451
     gtk_style_context_get_border(style, GTK_STATE_FLAG_NORMAL, &border);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   452
     gtk_style_context_get_padding(style, GTK_STATE_FLAG_NORMAL, &padding);
907
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   453
     *focus_h_width = border.left + padding.left;
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   454
     *focus_v_width = border.top + padding.top;
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   455
+    ReleaseStyleContext(style);
907
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   456
     return MOZ_GTK_SUCCESS;
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   457
 }
907
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   458
 
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   459
 gint
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   460
 moz_gtk_menuitem_get_horizontal_padding(gint* horizontal_padding)
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   461
 {
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   462
-    ensure_menu_item_widget();
907
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   463
-
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   464
-    gtk_style_context_get_style(gtk_widget_get_style_context(gMenuItemWidget),
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   465
-                                "horizontal-padding", horizontal_padding,
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   466
-                                NULL);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   467
+    gtk_widget_style_get(GetWidget(MOZ_GTK_MENUITEM),
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   468
+                         "horizontal-padding", horizontal_padding,
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   469
+                         nullptr);
907
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   470
 
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   471
     return MOZ_GTK_SUCCESS;
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   472
 }
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   473
@@ -771,10 +497,11 @@ moz_gtk_button_get_default_overflow(gint
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   474
 {
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   475
     GtkBorder* default_outside_border;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   476
 
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   477
-    ensure_button_widget();
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   478
-    gtk_style_context_get_style(gtk_widget_get_style_context(gButtonWidget),
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   479
+    GtkStyleContext *style = ClaimStyleContext(MOZ_GTK_BUTTON);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   480
+    gtk_style_context_get_style(style,
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   481
                                 "default-outside-border", &default_outside_border,
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   482
                                 NULL);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   483
+    ReleaseStyleContext(style);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   484
 
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   485
     if (default_outside_border) {
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   486
         *border_top = default_outside_border->top;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   487
@@ -794,10 +521,11 @@ moz_gtk_button_get_default_border(gint*
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   488
 {
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   489
     GtkBorder* default_border;
907
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   490
 
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   491
-    ensure_button_widget();
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   492
-    gtk_style_context_get_style(gtk_widget_get_style_context(gButtonWidget),
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   493
+    GtkStyleContext *style = ClaimStyleContext(MOZ_GTK_BUTTON);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   494
+    gtk_style_context_get_style(style,
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   495
                                 "default-border", &default_border,
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   496
                                 NULL);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   497
+    ReleaseStyleContext(style);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   498
 
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   499
     if (default_border) {
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   500
         *border_top = default_border->top;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   501
@@ -831,17 +559,15 @@ static gint
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   502
 moz_gtk_window_paint(cairo_t *cr, GdkRectangle* rect,
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   503
                      GtkTextDirection direction)
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   504
 {
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   505
-    GtkStyleContext* style;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   506
-
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   507
-    ensure_window_widget();
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   508
-    gtk_widget_set_direction(gProtoWindow, direction);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   509
+    GtkStyleContext* style = ClaimStyleContext(MOZ_GTK_WINDOW, direction);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   510
 
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   511
-    style = gtk_widget_get_style_context(gProtoWindow);	
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   512
     gtk_style_context_save(style);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   513
     gtk_style_context_add_class(style, GTK_STYLE_CLASS_BACKGROUND);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   514
     gtk_render_background(style, cr, rect->x, rect->y, rect->width, rect->height);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   515
     gtk_style_context_restore(style);
907
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   516
 
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   517
+    ReleaseStyleContext(style);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   518
+
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   519
     return MOZ_GTK_SUCCESS;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   520
 }
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   521
 
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   522
@@ -1118,6 +844,36 @@ moz_gtk_scrollbar_button_paint(cairo_t *
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   523
     return MOZ_GTK_SUCCESS;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   524
 }
907
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   525
 
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   526
+static void
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   527
+moz_gtk_update_scrollbar_style(GtkStyleContext* style,
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   528
+                               WidgetNodeType widget,
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   529
+                               GtkTextDirection direction)
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   530
+{
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   531
+    if (widget == MOZ_GTK_SCROLLBAR_HORIZONTAL) {
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   532
+        gtk_style_context_add_class(style, GTK_STYLE_CLASS_BOTTOM);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   533
+    } else {
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   534
+        if (direction == GTK_TEXT_DIR_LTR) {
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   535
+            gtk_style_context_add_class(style, GTK_STYLE_CLASS_RIGHT);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   536
+            gtk_style_context_remove_class(style, GTK_STYLE_CLASS_LEFT);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   537
+        } else {
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   538
+            gtk_style_context_add_class(style, GTK_STYLE_CLASS_LEFT);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   539
+            gtk_style_context_remove_class(style, GTK_STYLE_CLASS_RIGHT);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   540
+        }
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   541
+    }
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   542
+}
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   543
+
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   544
+static void
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   545
+moz_gtk_draw_styled_frame(GtkStyleContext* style, cairo_t *cr,
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   546
+                          GdkRectangle* rect, bool drawFocus)
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   547
+{
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   548
+    gtk_render_background(style, cr, rect->x, rect->y, rect->width, rect->height);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   549
+    gtk_render_frame(style, cr, rect->x, rect->y, rect->width, rect->height);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   550
+    if (drawFocus) {
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   551
+        gtk_render_focus(style, cr,
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   552
+                         rect->x, rect->y, rect->width, rect->height);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   553
+    }
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   554
+}
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   555
+
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   556
 static gint
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   557
 moz_gtk_scrollbar_trough_paint(WidgetNodeType widget,
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   558
                                cairo_t *cr, GdkRectangle* rect,
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   559
@@ -1126,26 +882,34 @@ moz_gtk_scrollbar_trough_paint(WidgetNod
907
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   560
                                GtkTextDirection direction)
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   561
 {
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   562
     if (flags & MOZ_GTK_TRACK_OPAQUE) {
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   563
-        GtkStyleContext* style =
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   564
-            gtk_widget_get_style_context(GTK_WIDGET(gProtoWindow));
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   565
-        gtk_render_background(style, cr, rect->x, rect->y, rect->width, rect->height);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   566
+        GtkStyleContext* style = ClaimStyleContext(MOZ_GTK_WINDOW, direction);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   567
+        gtk_render_background(style, cr,
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   568
+                              rect->x, rect->y, rect->width, rect->height);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   569
+        ReleaseStyleContext(style);
907
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   570
     }
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   571
 
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   572
-    GtkStyleContext* style =
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   573
-        ClaimStyleContext(widget == MOZ_GTK_SCROLLBAR_HORIZONTAL ?
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   574
-                          MOZ_GTK_SCROLLBAR_TROUGH_HORIZONTAL :
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   575
-                          MOZ_GTK_SCROLLBAR_TROUGH_VERTICAL,
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   576
-                          direction);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   577
-    // TODO - integate with ClaimStyleContext()?
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   578
-    gtk_style_context_set_direction(style, direction);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   579
+    bool isHorizontal = (widget == MOZ_GTK_SCROLLBAR_HORIZONTAL);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   580
+    GtkStyleContext* style;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   581
 
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   582
-    gtk_render_background(style, cr, rect->x, rect->y, rect->width, rect->height);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   583
-    gtk_render_frame(style, cr, rect->x, rect->y, rect->width, rect->height);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   584
+    // Draw all child CSS Nodes for Gtk >= 3.20
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   585
+    if (gtk_check_version(3, 20, 0) == nullptr) {
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   586
+        style = ClaimStyleContext(widget, direction);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   587
+        moz_gtk_update_scrollbar_style(style, widget, direction);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   588
+        moz_gtk_draw_styled_frame(style, cr, rect, state->focused);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   589
+        ReleaseStyleContext(style);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   590
 
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   591
-    if (state->focused) {
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   592
-        gtk_render_focus(style, cr,
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   593
-                         rect->x, rect->y, rect->width, rect->height);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   594
+        style = ClaimStyleContext(isHorizontal ?
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   595
+                                  MOZ_GTK_SCROLLBAR_CONTENTS_HORIZONTAL :
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   596
+                                  MOZ_GTK_SCROLLBAR_CONTENTS_VERTICAL,
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   597
+                                  direction);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   598
+        moz_gtk_draw_styled_frame(style, cr, rect, state->focused);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   599
+        ReleaseStyleContext(style);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   600
     }
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   601
+    style = ClaimStyleContext(isHorizontal ?
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   602
+                              MOZ_GTK_SCROLLBAR_TROUGH_HORIZONTAL :
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   603
+                              MOZ_GTK_SCROLLBAR_TROUGH_VERTICAL,
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   604
+                              direction);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   605
+    moz_gtk_draw_styled_frame(style, cr, rect, state->focused);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   606
     ReleaseStyleContext(style);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   607
 
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   608
     return MOZ_GTK_SUCCESS;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   609
@@ -1160,12 +924,7 @@ moz_gtk_scrollbar_thumb_paint(WidgetNode
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   610
     GtkStateFlags state_flags = GetStateFlagsFromGtkWidgetState(state);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   611
     GtkBorder margin;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   612
 
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   613
-    GtkStyleContext* style = ClaimStyleContext(widget, direction);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   614
-
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   615
-    // TODO - integate those with ClaimStyleContext()?
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   616
-    gtk_style_context_set_state(style, state_flags);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   617
-    gtk_style_context_set_direction(style, direction);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   618
-
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   619
+    GtkStyleContext* style = ClaimStyleContext(widget, direction, state_flags);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   620
     gtk_style_context_get_margin (style, state_flags, &margin);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   621
 
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   622
     gtk_render_slider(style, cr,
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   623
@@ -1185,17 +944,10 @@ static gint
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   624
 moz_gtk_spin_paint(cairo_t *cr, GdkRectangle* rect,
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   625
                    GtkTextDirection direction)
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   626
 {
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   627
-    GtkStyleContext* style;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   628
-
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   629
-    ensure_spin_widget();
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   630
-    gtk_widget_set_direction(gSpinWidget, direction);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   631
-    style = gtk_widget_get_style_context(gSpinWidget);
907
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   632
-    gtk_style_context_save(style);
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   633
-    gtk_style_context_add_class(style, GTK_STYLE_CLASS_SPINBUTTON);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   634
+    GtkStyleContext* style = ClaimStyleContext(MOZ_GTK_SPINBUTTON, direction);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   635
     gtk_render_background(style, cr, rect->x, rect->y, rect->width, rect->height);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   636
     gtk_render_frame(style, cr, rect->x, rect->y, rect->width, rect->height);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   637
-    gtk_style_context_restore(style);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   638
-
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   639
+    ReleaseStyleContext(style);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   640
     return MOZ_GTK_SUCCESS;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   641
 }
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   642
 
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   643
@@ -1204,21 +956,14 @@ moz_gtk_spin_updown_paint(cairo_t *cr, G
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   644
                           gboolean isDown, GtkWidgetState* state,
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   645
                           GtkTextDirection direction)
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   646
 {
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   647
-    GdkRectangle arrow_rect;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   648
-    GtkStyleContext* style;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   649
-
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   650
-    ensure_spin_widget();
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   651
-    style = gtk_widget_get_style_context(gSpinWidget);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   652
-    gtk_style_context_save(style);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   653
-    gtk_style_context_add_class(style, GTK_STYLE_CLASS_SPINBUTTON);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   654
-    gtk_style_context_set_state(style, GetStateFlagsFromGtkWidgetState(state));
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   655
-    gtk_widget_set_direction(gSpinWidget, direction);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   656
+    GtkStyleContext* style = ClaimStyleContext(MOZ_GTK_SPINBUTTON, direction,
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   657
+                                 GetStateFlagsFromGtkWidgetState(state));
909
c6717354928b Firefox 46.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 908
diff changeset
   658
 
907
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   659
     gtk_render_background(style, cr, rect->x, rect->y, rect->width, rect->height);
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   660
     gtk_render_frame(style, cr, rect->x, rect->y, rect->width, rect->height);
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   661
 
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   662
-
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   663
     /* hard code these values */
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   664
+    GdkRectangle arrow_rect;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   665
     arrow_rect.width = 6;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   666
     arrow_rect.height = 6;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   667
     arrow_rect.x = rect->x + (rect->width - arrow_rect.width) / 2;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   668
@@ -1229,7 +974,8 @@ moz_gtk_spin_updown_paint(cairo_t *cr, G
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   669
                     isDown ? ARROW_DOWN : ARROW_UP,
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   670
                     arrow_rect.x, arrow_rect.y,
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   671
                     arrow_rect.width);
907
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   672
-    gtk_style_context_restore(style);
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   673
+
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   674
+    ReleaseStyleContext(style);
907
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   675
     return MOZ_GTK_SUCCESS;
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   676
 }
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   677
 
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   678
@@ -1295,8 +1041,8 @@ moz_gtk_scale_thumb_paint(cairo_t *cr, G
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   679
   gtk_widget_set_direction(widget, direction);
907
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   680
 
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   681
   style = gtk_widget_get_style_context(widget);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   682
-  gtk_style_context_add_class(style, GTK_STYLE_CLASS_SLIDER);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   683
   gtk_style_context_save(style);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   684
+  gtk_style_context_add_class(style, GTK_STYLE_CLASS_SLIDER);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   685
   gtk_style_context_set_state(style, state_flags);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   686
   /* determine the thumb size, and position the thumb in the center in the opposite axis 
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   687
   */
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   688
@@ -1321,20 +1067,12 @@ moz_gtk_gripper_paint(cairo_t *cr, GdkRe
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   689
                       GtkWidgetState* state,
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   690
                       GtkTextDirection direction)
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   691
 {
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   692
-    GtkStyleContext* style;
907
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   693
-
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   694
-    ensure_handlebox_widget();
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   695
-    gtk_widget_set_direction(gHandleBoxWidget, direction);
907
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   696
-
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   697
-    style = gtk_widget_get_style_context(gHandleBoxWidget);
907
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   698
-    gtk_style_context_save(style);
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   699
-    gtk_style_context_add_class(style, GTK_STYLE_CLASS_GRIP);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   700
-    gtk_style_context_set_state(style, GetStateFlagsFromGtkWidgetState(state));
907
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   701
-
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   702
+    GtkStyleContext* style =
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   703
+            ClaimStyleContext(MOZ_GTK_GRIPPER, direction,
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   704
+                              GetStateFlagsFromGtkWidgetState(state));
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   705
     gtk_render_background(style, cr, rect->x, rect->y, rect->width, rect->height);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   706
     gtk_render_frame(style, cr, rect->x, rect->y, rect->width, rect->height);
907
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   707
-    gtk_style_context_restore(style);
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   708
-
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   709
+    ReleaseStyleContext(style);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   710
     return MOZ_GTK_SUCCESS;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   711
 }
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   712
 
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   713
@@ -1435,6 +1173,38 @@ moz_gtk_entry_paint(cairo_t *cr, GdkRect
907
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   714
     return MOZ_GTK_SUCCESS;
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   715
 }
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   716
 
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   717
+static gint
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   718
+moz_gtk_text_view_paint(cairo_t *cr, GdkRectangle* rect,
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   719
+                        GtkWidgetState* state,
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   720
+                        GtkTextDirection direction)
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   721
+{
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   722
+    GtkStateFlags state_flags = GetStateFlagsFromGtkWidgetState(state);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   723
+
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   724
+    GtkStyleContext* style_frame =
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   725
+        ClaimStyleContext(MOZ_GTK_SCROLLED_WINDOW, direction, state_flags);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   726
+    gtk_render_frame(style_frame, cr, rect->x, rect->y, rect->width, rect->height);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   727
+
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   728
+    GtkBorder border, padding;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   729
+    gtk_style_context_get_border(style_frame, state_flags, &border);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   730
+    gtk_style_context_get_padding(style_frame, state_flags, &padding);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   731
+    ReleaseStyleContext(style_frame);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   732
+
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   733
+    GtkStyleContext* style =
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   734
+        ClaimStyleContext(MOZ_GTK_TEXT_VIEW, direction, state_flags);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   735
+
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   736
+    gint xthickness = border.left + padding.left;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   737
+    gint ythickness = border.top + padding.top;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   738
+
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   739
+    gtk_render_background(style, cr,
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   740
+                          rect->x + xthickness, rect->y + ythickness,
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   741
+                          rect->width - 2 * xthickness,
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   742
+                          rect->height - 2 * ythickness);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   743
+
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   744
+    ReleaseStyleContext(style);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   745
+
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   746
+    return MOZ_GTK_SUCCESS;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   747
+}
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   748
+
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   749
 static gint 
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   750
 moz_gtk_treeview_paint(cairo_t *cr, GdkRectangle* rect,
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   751
                        GtkWidgetState* state,
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   752
@@ -1447,18 +1217,13 @@ moz_gtk_treeview_paint(cairo_t *cr, GdkR
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   753
     GtkBorder border;
907
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   754
 
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   755
     ensure_tree_view_widget();
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   756
-    ensure_scrolled_window_widget();
907
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   757
-
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   758
     gtk_widget_set_direction(gTreeViewWidget, direction);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   759
-    gtk_widget_set_direction(gScrolledWindowWidget, direction);
907
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   760
 
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   761
     /* only handle disabled and normal states, otherwise the whole background
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   762
      * area will be painted differently with other states */
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   763
     state_flags = state->disabled ? GTK_STATE_FLAG_INSENSITIVE : GTK_STATE_FLAG_NORMAL;
907
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   764
 
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   765
-    style = gtk_widget_get_style_context(gScrolledWindowWidget);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   766
-    gtk_style_context_save(style);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   767
-    gtk_style_context_add_class(style, GTK_STYLE_CLASS_FRAME);    
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   768
+    style = ClaimStyleContext(MOZ_GTK_SCROLLED_WINDOW, direction);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   769
     gtk_style_context_get_border(style, state_flags, &border);
907
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   770
     xthickness = border.left;
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   771
     ythickness = border.top;    
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   772
@@ -1473,7 +1238,7 @@ moz_gtk_treeview_paint(cairo_t *cr, GdkR
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   773
                           rect->height - 2 * ythickness);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   774
     gtk_render_frame(style, cr, 
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   775
                      rect->x, rect->y, rect->width, rect->height); 
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   776
-    gtk_style_context_restore(style);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   777
+    ReleaseStyleContext(style);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   778
     gtk_style_context_restore(style_tree);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   779
     return MOZ_GTK_SUCCESS;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   780
 }
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   781
@@ -1648,20 +1413,9 @@ moz_gtk_arrow_paint(cairo_t *cr, GdkRect
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   782
                     GtkWidgetState* state,
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   783
                     GtkArrowType arrow_type, GtkTextDirection direction)
907
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   784
 {
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   785
-    GtkStyleContext* style;
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   786
-    GtkStateFlags state_flags = GetStateFlagsFromGtkWidgetState(state);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   787
     GdkRectangle arrow_rect;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   788
     gdouble arrow_angle;
907
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   789
 
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   790
-    ensure_button_arrow_widget();
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   791
-    style = gtk_widget_get_style_context(gButtonArrowWidget);
907
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   792
-    gtk_style_context_save(style);
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   793
-    gtk_style_context_set_state(style, state_flags);
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   794
-    gtk_widget_set_direction(gButtonArrowWidget, direction);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   795
-
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   796
-    calculate_arrow_rect(gButtonArrowWidget, rect, &arrow_rect,
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   797
-                         direction);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   798
-
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   799
     if (direction == GTK_TEXT_DIR_RTL) {
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   800
         arrow_type = (arrow_type == GTK_ARROW_LEFT) ?
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   801
                          GTK_ARROW_RIGHT : GTK_ARROW_LEFT;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   802
@@ -1680,10 +1434,17 @@ moz_gtk_arrow_paint(cairo_t *cr, GdkRect
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   803
         arrow_angle = ARROW_UP;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   804
         break;
907
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   805
     }
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   806
-    if (arrow_type != GTK_ARROW_NONE)
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   807
-        gtk_render_arrow(style, cr, arrow_angle,
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   808
-                         arrow_rect.x, arrow_rect.y, arrow_rect.width);                    
907
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   809
-    gtk_style_context_restore(style);
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   810
+    if (arrow_type == GTK_ARROW_NONE)
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   811
+        return MOZ_GTK_SUCCESS;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   812
+
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   813
+    calculate_arrow_rect(GetWidget(MOZ_GTK_BUTTON_ARROW), rect, &arrow_rect,
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   814
+                         direction);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   815
+    GtkStateFlags state_flags = GetStateFlagsFromGtkWidgetState(state);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   816
+    GtkStyleContext* style = ClaimStyleContext(MOZ_GTK_BUTTON_ARROW,
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   817
+                                               direction, state_flags);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   818
+    gtk_render_arrow(style, cr, arrow_angle,
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   819
+                     arrow_rect.x, arrow_rect.y, arrow_rect.width);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   820
+    ReleaseStyleContext(style);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   821
     return MOZ_GTK_SUCCESS;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   822
 }
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   823
 
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   824
@@ -1776,19 +1537,10 @@ static gint
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   825
 moz_gtk_toolbar_paint(cairo_t *cr, GdkRectangle* rect,
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   826
                       GtkTextDirection direction)
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   827
 {
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   828
-    GtkStyleContext* style;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   829
-
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   830
-    ensure_toolbar_widget();
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   831
-    gtk_widget_set_direction(gToolbarWidget, direction);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   832
-
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   833
-    style = gtk_widget_get_style_context(gToolbarWidget);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   834
-    gtk_style_context_save(style);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   835
-    gtk_style_context_add_class(style, GTK_STYLE_CLASS_TOOLBAR);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   836
-
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   837
+    GtkStyleContext* style = ClaimStyleContext(MOZ_GTK_TOOLBAR, direction);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   838
     gtk_render_background(style, cr, rect->x, rect->y, rect->width, rect->height);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   839
     gtk_render_frame(style, cr, rect->x, rect->y, rect->width, rect->height);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   840
-    gtk_style_context_restore(style);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   841
-
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   842
+    ReleaseStyleContext(style);
907
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   843
     return MOZ_GTK_SUCCESS;
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   844
 }
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   845
 
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   846
@@ -1798,7 +1550,6 @@ static gint
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   847
 moz_gtk_toolbar_separator_paint(cairo_t *cr, GdkRectangle* rect,
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   848
                                 GtkTextDirection direction)
907
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   849
 {
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   850
-    GtkStyleContext* style;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   851
     gint     separator_width;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   852
     gint     paint_width;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   853
     gboolean wide_separators;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   854
@@ -1807,16 +1558,14 @@ moz_gtk_toolbar_separator_paint(cairo_t
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   855
     const double start_fraction = 0.2;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   856
     const double end_fraction = 0.8;
907
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   857
 
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   858
-    ensure_toolbar_separator_widget();
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   859
-    gtk_widget_set_direction(gToolbarSeparatorWidget, direction);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   860
-
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   861
-    style = gtk_widget_get_style_context(gToolbarSeparatorWidget);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   862
-
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   863
-    gtk_style_context_get_style(gtk_widget_get_style_context(gToolbarWidget),
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   864
+    GtkStyleContext* style = ClaimStyleContext(MOZ_GTK_TOOLBAR);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   865
+    gtk_style_context_get_style(style,
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   866
                                 "wide-separators", &wide_separators,
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   867
                                 "separator-width", &separator_width,
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   868
                                 NULL);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   869
+    ReleaseStyleContext(style);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   870
 
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   871
+    style = ClaimStyleContext(MOZ_GTK_TOOLBAR_SEPARATOR, direction);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   872
     if (wide_separators) {
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   873
         if (separator_width > rect->width)
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   874
             separator_width = rect->width;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   875
@@ -1840,7 +1589,7 @@ moz_gtk_toolbar_separator_paint(cairo_t
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   876
                         rect->x + (rect->width - paint_width) / 2,
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   877
                         rect->y + rect->height * end_fraction);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   878
     }
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   879
-
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   880
+    ReleaseStyleContext(style);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   881
     return MOZ_GTK_SUCCESS;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   882
 }
907
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   883
 
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   884
@@ -1848,14 +1597,10 @@ static gint
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   885
 moz_gtk_tooltip_paint(cairo_t *cr, GdkRectangle* rect,
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   886
                       GtkTextDirection direction)
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   887
 {
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   888
-    GtkStyleContext* style;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   889
-
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   890
-    ensure_tooltip_widget();
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   891
-    gtk_widget_set_direction(gTooltipWidget, direction);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   892
-
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   893
-    style = gtk_widget_get_style_context(gTooltipWidget);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   894
+    GtkStyleContext* style = ClaimStyleContext(MOZ_GTK_TOOLTIP, direction);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   895
     gtk_render_background(style, cr, rect->x, rect->y, rect->width, rect->height);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   896
     gtk_render_frame(style, cr, rect->x, rect->y, rect->width, rect->height);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   897
+    ReleaseStyleContext(style);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   898
     return MOZ_GTK_SUCCESS;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   899
 }
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   900
 
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   901
@@ -1870,14 +1615,11 @@ moz_gtk_resizer_paint(cairo_t *cr, GdkRe
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   902
     // GTK_STYLE_CLASS_VIEW to match the background with textarea elements.
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   903
     // The resizer is drawn with shaded variants of the background color, and
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   904
     // so a transparent background would lead to a transparent resizer.
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   905
-    ensure_text_view_widget();
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   906
-    gtk_widget_set_direction(gTextViewWidget, GTK_TEXT_DIR_LTR);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   907
-
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   908
-    style = gtk_widget_get_style_context(gTextViewWidget);
907
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   909
-    gtk_style_context_save(style);
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   910
-    gtk_style_context_add_class(style, GTK_STYLE_CLASS_VIEW);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   911
+    style = ClaimStyleContext(MOZ_GTK_TEXT_VIEW, GTK_TEXT_DIR_LTR,
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   912
+                              GetStateFlagsFromGtkWidgetState(state));
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   913
+    // TODO - we need to save/restore style when gtk 3.20 CSS node path
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   914
+    // is used
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   915
     gtk_style_context_add_class(style, GTK_STYLE_CLASS_GRIP);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   916
-    gtk_style_context_set_state(style, GetStateFlagsFromGtkWidgetState(state));
907
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   917
 
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   918
     // Workaround unico not respecting the text direction for resizers.
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   919
     // See bug 1174248.
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   920
@@ -1891,7 +1633,7 @@ moz_gtk_resizer_paint(cairo_t *cr, GdkRe
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   921
 
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   922
     gtk_render_handle(style, cr, rect->x, rect->y, rect->width, rect->height);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   923
     cairo_restore(cr);
907
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   924
-    gtk_style_context_restore(style);
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   925
+    ReleaseStyleContext(style);
907
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   926
 
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   927
     return MOZ_GTK_SUCCESS;
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   928
 }
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   929
@@ -1900,16 +1642,9 @@ static gint
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   930
 moz_gtk_frame_paint(cairo_t *cr, GdkRectangle* rect,
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   931
                     GtkTextDirection direction)
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   932
 {
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   933
-    GtkStyleContext* style;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   934
-
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   935
-    ensure_frame_widget();
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   936
-    gtk_widget_set_direction(gFrameWidget, direction);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   937
-    style = gtk_widget_get_style_context(gFrameWidget);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   938
-    gtk_style_context_save(style);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   939
-    gtk_style_context_add_class(style, GTK_STYLE_CLASS_FRAME);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   940
-
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   941
+    GtkStyleContext* style = ClaimStyleContext(MOZ_GTK_FRAME, direction);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   942
     gtk_render_frame(style, cr, rect->x, rect->y, rect->width, rect->height);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   943
-    gtk_style_context_restore(style);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   944
+    ReleaseStyleContext(style);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   945
     return MOZ_GTK_SUCCESS;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   946
 }
919
6838f0c032f8 -------------------------------------------------------------------
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 909
diff changeset
   947
 
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   948
@@ -1917,18 +1652,11 @@ static gint
907
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   949
 moz_gtk_progressbar_paint(cairo_t *cr, GdkRectangle* rect,
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   950
                           GtkTextDirection direction)
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   951
 {
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   952
-    GtkStyleContext* style;
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   953
-
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   954
-    ensure_progress_widget();
907
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   955
-    gtk_widget_set_direction(gProgressWidget, direction);
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   956
-
907
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   957
-    style = gtk_widget_get_style_context(gProgressWidget);
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   958
-    gtk_style_context_save(style);
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   959
-    gtk_style_context_add_class(style, GTK_STYLE_CLASS_TROUGH);
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   960
-    
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   961
+    GtkStyleContext* style = ClaimStyleContext(MOZ_GTK_PROGRESS_TROUGH,
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   962
+                                               direction);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   963
     gtk_render_background(style, cr, rect->x, rect->y, rect->width, rect->height);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   964
     gtk_render_frame(style, cr, rect->x, rect->y, rect->width, rect->height);
907
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   965
-    gtk_style_context_restore(style);
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   966
+    ReleaseStyleContext(style);
907
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   967
 
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   968
     return MOZ_GTK_SUCCESS;
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   969
 }
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   970
@@ -1940,13 +1668,15 @@ moz_gtk_progress_chunk_paint(cairo_t *cr
907
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   971
 {
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   972
     GtkStyleContext* style;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   973
 
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   974
-    ensure_progress_widget();
907
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   975
-    gtk_widget_set_direction(gProgressWidget, direction);
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   976
-
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   977
-    style = gtk_widget_get_style_context(gProgressWidget);
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   978
-    gtk_style_context_save(style);
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   979
-    gtk_style_context_remove_class(style, GTK_STYLE_CLASS_TROUGH);
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   980
-    gtk_style_context_add_class(style, GTK_STYLE_CLASS_PROGRESSBAR);
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   981
+    if (gtk_check_version(3, 20, 0) != nullptr) {
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   982
+      /* Ask for MOZ_GTK_PROGRESS_TROUGH instead of MOZ_GTK_PROGRESSBAR
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   983
+       * because ClaimStyleContext() saves/restores that style */
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   984
+      style = ClaimStyleContext(MOZ_GTK_PROGRESS_TROUGH, direction);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   985
+      gtk_style_context_remove_class(style, GTK_STYLE_CLASS_TROUGH);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   986
+      gtk_style_context_add_class(style, GTK_STYLE_CLASS_PROGRESSBAR);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   987
+    } else {
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   988
+      style = ClaimStyleContext(MOZ_GTK_PROGRESS_CHUNK, direction);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   989
+    }
907
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   990
 
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   991
     if (widget == MOZ_GTK_PROGRESS_CHUNK_INDETERMINATE ||
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   992
         widget == MOZ_GTK_PROGRESS_CHUNK_VERTICAL_INDETERMINATE) {
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   993
@@ -1990,7 +1720,7 @@ moz_gtk_progress_chunk_paint(cairo_t *cr
907
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   994
     } else {
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   995
       gtk_render_activity(style, cr, rect->x, rect->y, rect->width, rect->height);
907
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   996
     }
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   997
-    gtk_style_context_restore(style);
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
   998
+    ReleaseStyleContext(style);
907
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   999
 
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1000
     return MOZ_GTK_SUCCESS;
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1001
 }
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1002
@@ -2324,10 +2054,10 @@ moz_gtk_menu_bar_paint(cairo_t *cr, GdkR
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1003
 {
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1004
     GtkStyleContext* style;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1005
 
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1006
-    ensure_menu_bar_widget();
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1007
-    gtk_widget_set_direction(gMenuBarWidget, direction);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1008
+    GtkWidget* widget = GetWidget(MOZ_GTK_MENUBAR);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1009
+    gtk_widget_set_direction(widget, direction);
907
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1010
 
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1011
-    style = gtk_widget_get_style_context(gMenuBarWidget);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1012
+    style = gtk_widget_get_style_context(widget);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1013
     gtk_style_context_save(style);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1014
     gtk_style_context_add_class(style, GTK_STYLE_CLASS_MENUBAR);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1015
     gtk_render_background(style, cr, rect->x, rect->y, rect->width, rect->height);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1016
@@ -2343,14 +2073,14 @@ moz_gtk_menu_popup_paint(cairo_t *cr, Gd
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1017
 {
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1018
     GtkStyleContext* style;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1019
 
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1020
-    ensure_menu_popup_widget();
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1021
-    gtk_widget_set_direction(gMenuPopupWidget, direction);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1022
+    GtkWidget* widget = GetWidget(MOZ_GTK_MENUPOPUP);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1023
+    gtk_widget_set_direction(widget, direction);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1024
 
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1025
     // Draw a backing toplevel. This fixes themes that don't provide a menu
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1026
     // background, and depend on the GtkMenu's implementation window to provide it.
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1027
     moz_gtk_window_paint(cr, rect, direction);
907
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1028
 
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1029
-    style = gtk_widget_get_style_context(gMenuPopupWidget);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1030
+    style = gtk_widget_get_style_context(widget);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1031
     gtk_style_context_save(style);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1032
     gtk_style_context_add_class(style, GTK_STYLE_CLASS_MENU);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1033
 
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1034
@@ -2373,12 +2103,10 @@ moz_gtk_menu_separator_paint(cairo_t *cr
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1035
     gint x, y, w;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1036
     GtkBorder padding;
907
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1037
 
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1038
-    ensure_menu_separator_widget();
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1039
-    gtk_widget_set_direction(gMenuSeparatorWidget, direction);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1040
-
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1041
-    border_width = gtk_container_get_border_width(GTK_CONTAINER(gMenuSeparatorWidget));
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1042
-
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1043
-    style = gtk_widget_get_style_context(gMenuSeparatorWidget);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1044
+    border_width =
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1045
+        gtk_container_get_border_width(GTK_CONTAINER(
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1046
+                                       GetWidget(MOZ_GTK_MENUSEPARATOR)));
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1047
+    style = ClaimStyleContext(MOZ_GTK_MENUSEPARATOR, direction);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1048
     gtk_style_context_get_padding(style, GTK_STATE_FLAG_NORMAL, &padding);
907
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1049
 
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1050
     x = rect->x + border_width;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1051
@@ -2408,42 +2136,36 @@ moz_gtk_menu_separator_paint(cairo_t *cr
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1052
     }
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1053
 
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1054
     gtk_style_context_restore(style);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1055
+    ReleaseStyleContext(style);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1056
 
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1057
     return MOZ_GTK_SUCCESS;
907
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1058
 }
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1059
 
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1060
 // See gtk_menu_item_draw() for reference.
907
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1061
 static gint
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1062
-moz_gtk_menu_item_paint(cairo_t *cr, GdkRectangle* rect,
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1063
-                        GtkWidgetState* state,
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1064
-                        gint flags, GtkTextDirection direction)
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1065
+moz_gtk_menu_item_paint(WidgetNodeType widget, cairo_t *cr, GdkRectangle* rect,
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1066
+                        GtkWidgetState* state, GtkTextDirection direction)
907
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1067
 {
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1068
-    GtkStyleContext* style;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1069
-    GtkWidget* item_widget;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1070
-    guint border_width;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1071
     gint x, y, w, h;
907
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1072
 
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1073
     if (state->inHover && !state->disabled) {   
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1074
-        if (flags & MOZ_TOPLEVEL_MENU_ITEM) {
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1075
-            ensure_menu_bar_item_widget();
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1076
-            item_widget = gMenuBarItemWidget;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1077
-        } else {
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1078
-            ensure_menu_item_widget();
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1079
-            item_widget = gMenuItemWidget;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1080
-        }
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1081
-        style = gtk_widget_get_style_context(item_widget);
907
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1082
-        gtk_style_context_save(style);
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1083
+        guint border_width =
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1084
+            gtk_container_get_border_width(GTK_CONTAINER(GetWidget(widget)));
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1085
+        GtkStateFlags state_flags = GetStateFlagsFromGtkWidgetState(state);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1086
+        GtkStyleContext* style =
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1087
+            ClaimStyleContext(widget, direction, state_flags);
907
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1088
 
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1089
-        if (flags & MOZ_TOPLEVEL_MENU_ITEM) {
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1090
-            gtk_style_context_add_class(style, GTK_STYLE_CLASS_MENUBAR);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1091
+        bool pre_3_6 = gtk_check_version(3, 6, 0) != nullptr;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1092
+        if (pre_3_6) {
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1093
+            // GTK+ 3.4 saves the style context and adds the menubar class to
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1094
+            // menubar children, but does each of these only when drawing, not
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1095
+            // during layout.
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1096
+            gtk_style_context_save(style);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1097
+            if (widget == MOZ_GTK_MENUBARITEM) {
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1098
+                gtk_style_context_add_class(style, GTK_STYLE_CLASS_MENUBAR);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1099
+            }
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1100
         }
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1101
 
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1102
-        gtk_widget_set_direction(item_widget, direction);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1103
-        gtk_style_context_add_class(style, GTK_STYLE_CLASS_MENUITEM);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1104
-        gtk_style_context_set_state(style, GetStateFlagsFromGtkWidgetState(state));
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1105
-
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1106
-        border_width = gtk_container_get_border_width(GTK_CONTAINER(item_widget));
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1107
-
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1108
         x = rect->x + border_width;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1109
         y = rect->y + border_width;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1110
         w = rect->width - border_width * 2;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1111
@@ -2451,7 +2173,11 @@ moz_gtk_menu_item_paint(cairo_t *cr, Gdk
907
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1112
 
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1113
         gtk_render_background(style, cr, x, y, w, h);
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1114
         gtk_render_frame(style, cr, x, y, w, h);
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1115
-        gtk_style_context_restore(style);
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1116
+
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1117
+        if (pre_3_6) {
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1118
+            gtk_style_context_restore(style);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1119
+        }
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1120
+        ReleaseStyleContext(style);
907
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1121
     }
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1122
 
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1123
     return MOZ_GTK_SUCCESS;
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1124
@@ -2462,21 +2188,13 @@ moz_gtk_menu_arrow_paint(cairo_t *cr, Gd
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1125
                          GtkWidgetState* state,
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1126
                          GtkTextDirection direction)
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1127
 {
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1128
-    GtkStyleContext* style;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1129
     GtkStateFlags state_flags = GetStateFlagsFromGtkWidgetState(state);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1130
-
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1131
-    ensure_menu_item_widget();
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1132
-    gtk_widget_set_direction(gMenuItemWidget, direction);
907
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1133
-
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1134
-    style = gtk_widget_get_style_context(gMenuItemWidget);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1135
-    gtk_style_context_save(style);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1136
-    gtk_style_context_add_class(style, GTK_STYLE_CLASS_MENUITEM);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1137
-    gtk_style_context_set_state(style, state_flags);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1138
+    GtkStyleContext* style = ClaimStyleContext(MOZ_GTK_MENUITEM,
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1139
+                                               direction, state_flags);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1140
     gtk_render_arrow(style, cr,
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1141
                     (direction == GTK_TEXT_DIR_LTR) ? ARROW_RIGHT : ARROW_LEFT,
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1142
                     rect->x, rect->y, rect->width);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1143
-    gtk_style_context_restore(style);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1144
-
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1145
+    ReleaseStyleContext(style);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1146
     return MOZ_GTK_SUCCESS;
907
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1147
 }
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1148
 
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1149
@@ -2494,7 +2212,7 @@ moz_gtk_check_menu_item_paint(cairo_t *c
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1150
     gint indicator_size, horizontal_padding;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1151
     gint x, y;
907
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1152
 
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1153
-    moz_gtk_menu_item_paint(cr, rect, state, FALSE, direction);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1154
+    moz_gtk_menu_item_paint(MOZ_GTK_MENUITEM, cr, rect, state, direction);
907
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1155
 
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1156
     ensure_check_menu_item_widget();
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1157
     gtk_widget_set_direction(gCheckMenuItemWidget, direction);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1158
@@ -2545,21 +2263,13 @@ static gint
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1159
 moz_gtk_info_bar_paint(cairo_t *cr, GdkRectangle* rect,
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1160
                        GtkWidgetState* state)
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1161
 {
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1162
-    GtkStateFlags state_flags = GetStateFlagsFromGtkWidgetState(state);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1163
-    GtkStyleContext *style;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1164
-    ensure_info_bar();
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1165
-
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1166
-    style = gtk_widget_get_style_context(gInfoBar);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1167
-    gtk_style_context_save(style);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1168
-
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1169
-    gtk_style_context_set_state(style, state_flags);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1170
-    gtk_style_context_add_class(style, GTK_STYLE_CLASS_INFO);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1171
-
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1172
+    GtkStyleContext *style =
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1173
+        ClaimStyleContext(MOZ_GTK_INFO_BAR, GTK_TEXT_DIR_LTR,
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1174
+                          GetStateFlagsFromGtkWidgetState(state));
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1175
     gtk_render_background(style, cr, rect->x, rect->y, rect->width,
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1176
                           rect->height);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1177
     gtk_render_frame(style, cr, rect->x, rect->y, rect->width, rect->height);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1178
-
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1179
-    gtk_style_context_restore(style);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1180
+    ReleaseStyleContext(style);
907
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1181
 
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1182
     return MOZ_GTK_SUCCESS;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1183
 }
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1184
@@ -2605,18 +2315,18 @@ moz_gtk_get_widget_border(WidgetNodeType
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1185
     case MOZ_GTK_BUTTON:
907
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1186
     case MOZ_GTK_TOOLBAR_BUTTON:
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1187
         {
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1188
-            ensure_button_widget();
907
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1189
-            style = gtk_widget_get_style_context(gButtonWidget);
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1190
+            style = ClaimStyleContext(MOZ_GTK_BUTTON);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1191
 
907
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1192
-            *left = *top = *right = *bottom = gtk_container_get_border_width(GTK_CONTAINER(gButtonWidget));
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1193
+            *left = *top = *right = *bottom =
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1194
+                gtk_container_get_border_width(GTK_CONTAINER(GetWidget(MOZ_GTK_BUTTON)));
908
b29b47737173 sync from mozilla:Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 907
diff changeset
  1195
 
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1196
             if (widget == MOZ_GTK_TOOLBAR_BUTTON) {
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1197
                 gtk_style_context_save(style);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1198
                 gtk_style_context_add_class(style, "image-button");
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1199
             }
907
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1200
-              
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1201
+
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1202
             moz_gtk_add_style_padding(style, left, top, right, bottom);
907
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1203
-                
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1204
+
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1205
             if (widget == MOZ_GTK_TOOLBAR_BUTTON)
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1206
                 gtk_style_context_restore(style);
907
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1207
 
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1208
@@ -2624,12 +2334,13 @@ moz_gtk_get_widget_border(WidgetNodeType
907
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1209
             // -moz-focus-inner border (Bug 1228281).
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1210
             *left -= 1; *top -= 1; *right -= 1; *bottom -= 1;
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1211
             moz_gtk_add_style_border(style, left, top, right, bottom);
907
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1212
+
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1213
+            ReleaseStyleContext(style);
907
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1214
             return MOZ_GTK_SUCCESS;
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1215
         }
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1216
     case MOZ_GTK_ENTRY:
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1217
         {
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1218
-            ensure_entry_widget();
907
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1219
-            style = gtk_widget_get_style_context(gEntryWidget);
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1220
+            style = ClaimStyleContext(MOZ_GTK_ENTRY);
907
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1221
 
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1222
             // XXX: Subtract 1 pixel from the padding to account for the default
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1223
             // padding in forms.css. See bug 1187385.
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1224
@@ -2637,16 +2348,15 @@ moz_gtk_get_widget_border(WidgetNodeType
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1225
             moz_gtk_add_style_padding(style, left, top, right, bottom);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1226
             moz_gtk_add_style_border(style, left, top, right, bottom);
919
6838f0c032f8 -------------------------------------------------------------------
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 909
diff changeset
  1227
 
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1228
+            ReleaseStyleContext(style);
907
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1229
             return MOZ_GTK_SUCCESS;
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1230
         }
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1231
+    case MOZ_GTK_TEXT_VIEW:
919
6838f0c032f8 -------------------------------------------------------------------
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 909
diff changeset
  1232
     case MOZ_GTK_TREEVIEW:
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1233
         {
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1234
-            ensure_scrolled_window_widget();
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1235
-            style = gtk_widget_get_style_context(gScrolledWindowWidget);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1236
-            gtk_style_context_save(style);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1237
-            gtk_style_context_add_class(style, GTK_STYLE_CLASS_FRAME);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1238
+            style = ClaimStyleContext(MOZ_GTK_SCROLLED_WINDOW);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1239
             moz_gtk_add_style_border(style, left, top, right, bottom);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1240
-            gtk_style_context_restore(style);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1241
+            ReleaseStyleContext(style);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1242
             return MOZ_GTK_SUCCESS;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1243
         }
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1244
     case MOZ_GTK_TREE_HEADER_CELL:
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1245
@@ -2726,14 +2436,12 @@ moz_gtk_get_widget_border(WidgetNodeType
907
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1246
         w = gTabWidget;
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1247
         break;
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1248
     case MOZ_GTK_PROGRESSBAR:
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1249
-        ensure_progress_widget();
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1250
-        w = gProgressWidget;
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1251
+        w = GetWidget(MOZ_GTK_PROGRESSBAR);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1252
         break;
907
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1253
     case MOZ_GTK_SPINBUTTON_ENTRY:
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1254
     case MOZ_GTK_SPINBUTTON_UP:
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1255
     case MOZ_GTK_SPINBUTTON_DOWN:
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1256
-        ensure_spin_widget();
907
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1257
-        w = gSpinWidget;
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1258
+        w = GetWidget(MOZ_GTK_SPINBUTTON);
907
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1259
         break;
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1260
     case MOZ_GTK_SCALE_HORIZONTAL:
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1261
         ensure_scale_widget();
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1262
@@ -2744,8 +2452,7 @@ moz_gtk_get_widget_border(WidgetNodeType
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1263
         w = gVScaleWidget;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1264
         break;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1265
     case MOZ_GTK_FRAME:
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1266
-        ensure_frame_widget();
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1267
-        w = gFrameWidget;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1268
+        w = GetWidget(MOZ_GTK_FRAME);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1269
         break;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1270
     case MOZ_GTK_CHECKBUTTON_CONTAINER:
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1271
     case MOZ_GTK_RADIOBUTTON_CONTAINER:
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1272
@@ -2761,19 +2468,17 @@ moz_gtk_get_widget_border(WidgetNodeType
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1273
             return MOZ_GTK_SUCCESS;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1274
         }
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1275
     case MOZ_GTK_MENUPOPUP:
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1276
-        ensure_menu_popup_widget();
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1277
-        w = gMenuPopupWidget;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1278
+        w = GetWidget(MOZ_GTK_MENUPOPUP);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1279
         break;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1280
+    case MOZ_GTK_MENUBARITEM:
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1281
     case MOZ_GTK_MENUITEM:
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1282
     case MOZ_GTK_CHECKMENUITEM:
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1283
     case MOZ_GTK_RADIOMENUITEM:
907
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1284
         {
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1285
-            if (widget == MOZ_GTK_MENUITEM) {
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1286
-                ensure_menu_item_widget();
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1287
-                ensure_menu_bar_item_widget();
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1288
-                w = gMenuItemWidget;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1289
-            }
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1290
-            else {
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1291
+            if (widget == MOZ_GTK_MENUBARITEM || widget == MOZ_GTK_MENUITEM) {
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1292
+                // Bug 1274143 for MOZ_GTK_MENUBARITEM
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1293
+                w = GetWidget(MOZ_GTK_MENUITEM);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1294
+            } else {
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1295
                 ensure_check_menu_item_widget();
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1296
                 w = gCheckMenuItemWidget;
907
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1297
             }
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1298
@@ -2784,9 +2489,16 @@ moz_gtk_get_widget_border(WidgetNodeType
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1299
             return MOZ_GTK_SUCCESS;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1300
         }
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1301
     case MOZ_GTK_INFO_BAR:
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1302
-        ensure_info_bar();
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1303
-        w = gInfoBar;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1304
+        w = GetWidget(MOZ_GTK_INFO_BAR);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1305
         break;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1306
+    case MOZ_GTK_TOOLTIP:
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1307
+        {
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1308
+            style = ClaimStyleContext(MOZ_GTK_TOOLTIP);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1309
+            moz_gtk_add_style_border(style, left, top, right, bottom);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1310
+            moz_gtk_add_style_padding(style, left, top, right, bottom);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1311
+            ReleaseStyleContext(style);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1312
+            return MOZ_GTK_SUCCESS;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1313
+        }
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1314
     /* These widgets have no borders, since they are not containers. */
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1315
     case MOZ_GTK_CHECKBUTTON_LABEL:
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1316
     case MOZ_GTK_RADIOBUTTON_LABEL:
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1317
@@ -2810,7 +2522,6 @@ moz_gtk_get_widget_border(WidgetNodeType
919
6838f0c032f8 -------------------------------------------------------------------
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 909
diff changeset
  1318
     case MOZ_GTK_MENUSEPARATOR:
6838f0c032f8 -------------------------------------------------------------------
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 909
diff changeset
  1319
     /* These widgets have no borders.*/
6838f0c032f8 -------------------------------------------------------------------
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 909
diff changeset
  1320
     case MOZ_GTK_SPINBUTTON:
6838f0c032f8 -------------------------------------------------------------------
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 909
diff changeset
  1321
-    case MOZ_GTK_TOOLTIP:
6838f0c032f8 -------------------------------------------------------------------
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 909
diff changeset
  1322
     case MOZ_GTK_WINDOW:
6838f0c032f8 -------------------------------------------------------------------
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 909
diff changeset
  1323
     case MOZ_GTK_RESIZER:
6838f0c032f8 -------------------------------------------------------------------
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 909
diff changeset
  1324
     case MOZ_GTK_MENUARROW:
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1325
@@ -2908,8 +2619,7 @@ moz_gtk_get_arrow_size(WidgetNodeType wi
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1326
             widget = gComboBoxArrowWidget;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1327
             break;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1328
         default:
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1329
-            ensure_button_arrow_widget();
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1330
-            widget = gButtonArrowWidget;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1331
+            widget = GetWidget(MOZ_GTK_BUTTON_ARROW);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1332
             break;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1333
     }
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1334
 
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1335
@@ -2924,11 +2634,9 @@ moz_gtk_get_toolbar_separator_width(gint
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1336
 {
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1337
     gboolean wide_separators;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1338
     gint separator_width;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1339
-    GtkStyleContext* style;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1340
     GtkBorder border;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1341
 
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1342
-    ensure_toolbar_widget();
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1343
-    style = gtk_widget_get_style_context(gToolbarWidget);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1344
+    GtkStyleContext* style = ClaimStyleContext(MOZ_GTK_TOOLBAR);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1345
     gtk_style_context_get_style(style,
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1346
                                 "space-size", size,
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1347
                                 "wide-separators",  &wide_separators,
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1348
@@ -2937,17 +2645,18 @@ moz_gtk_get_toolbar_separator_width(gint
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1349
     /* Just in case... */
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1350
     gtk_style_context_get_border(style, GTK_STATE_FLAG_NORMAL, &border);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1351
     *size = MAX(*size, (wide_separators ? separator_width : border.left));
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1352
+    ReleaseStyleContext(style);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1353
     return MOZ_GTK_SUCCESS;
907
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1354
 }
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1355
 
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1356
 gint
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1357
 moz_gtk_get_expander_size(gint* size)
907
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1358
 {
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1359
-    ensure_expander_widget();
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1360
-    gtk_style_context_get_style(gtk_widget_get_style_context(gExpanderWidget),
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1361
+    GtkStyleContext* style = ClaimStyleContext(MOZ_GTK_EXPANDER);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1362
+    gtk_style_context_get_style(style,
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1363
                                 "expander-size", size,
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1364
                                 NULL);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1365
-
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1366
+    ReleaseStyleContext(style);
907
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1367
     return MOZ_GTK_SUCCESS;
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1368
 }
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1369
 
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1370
@@ -2972,11 +2681,11 @@ moz_gtk_get_menu_separator_height(gint *
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1371
     GtkStyleContext* style;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1372
     guint border_width;
907
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1373
 
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1374
-    ensure_menu_separator_widget();
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1375
-
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1376
-    border_width = gtk_container_get_border_width(GTK_CONTAINER(gMenuSeparatorWidget));
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1377
+    border_width =
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1378
+        gtk_container_get_border_width(GTK_CONTAINER(
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1379
+                                       GetWidget(MOZ_GTK_MENUSEPARATOR)));
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1380
 
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1381
-    style = gtk_widget_get_style_context(gMenuSeparatorWidget);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1382
+    style = ClaimStyleContext(MOZ_GTK_MENUSEPARATOR);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1383
     gtk_style_context_get_padding(style, GTK_STATE_FLAG_NORMAL, &padding);
907
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1384
 
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1385
     gtk_style_context_save(style);
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1386
@@ -2988,6 +2697,7 @@ moz_gtk_get_menu_separator_height(gint *
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1387
                                 NULL);
907
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1388
 
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1389
     gtk_style_context_restore(style);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1390
+    ReleaseStyleContext(style);
907
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1391
 
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1392
     *size = padding.top + padding.bottom + border_width*2;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1393
     *size += (wide_separators) ? separator_height : 1;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1394
@@ -2998,8 +2708,7 @@ moz_gtk_get_menu_separator_height(gint *
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1395
 void
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1396
 moz_gtk_get_entry_min_height(gint* height)
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1397
 {
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1398
-    ensure_entry_widget();
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1399
-    GtkStyleContext* style = gtk_widget_get_style_context(gEntryWidget);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1400
+    GtkStyleContext* style = ClaimStyleContext(MOZ_GTK_ENTRY);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1401
     if (!gtk_check_version(3, 20, 0)) {
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1402
         gtk_style_context_get(style, gtk_style_context_get_state(style),
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1403
                               "min-height", height,
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1404
@@ -3014,6 +2723,7 @@ moz_gtk_get_entry_min_height(gint* heigh
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1405
     gtk_style_context_get_padding(style, GTK_STATE_FLAG_NORMAL, &padding);
907
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1406
 
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1407
     *height += (border.top + border.bottom + padding.top + padding.bottom);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1408
+    ReleaseStyleContext(style);
907
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1409
 }
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1410
 
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1411
 void
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1412
@@ -3094,8 +2804,7 @@ moz_gtk_images_in_buttons()
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1413
     gboolean result;
907
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1414
     GtkSettings* settings;
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1415
 
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1416
-    ensure_button_widget();
907
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1417
-    settings = gtk_widget_get_settings(gButtonWidget);
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1418
+    settings = gtk_widget_get_settings(GetWidget(MOZ_GTK_BUTTON));
907
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1419
 
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1420
     g_object_get(settings, "gtk-button-images", &result, NULL);
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1421
     return result;
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1422
@@ -3116,14 +2825,14 @@ moz_gtk_widget_paint(WidgetNodeType widg
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1423
     case MOZ_GTK_BUTTON:
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1424
     case MOZ_GTK_TOOLBAR_BUTTON:
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1425
         if (state->depressed) {
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1426
-            ensure_toggle_button_widget();
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1427
             return moz_gtk_button_paint(cr, rect, state,
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1428
                                         (GtkReliefStyle) flags,
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1429
-                                        gToggleButtonWidget, direction);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1430
+                                        GetWidget(MOZ_GTK_TOGGLE_BUTTON),
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1431
+                                        direction);
907
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1432
         }
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1433
-        ensure_button_widget();
907
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1434
         return moz_gtk_button_paint(cr, rect, state,
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1435
-                                    (GtkReliefStyle) flags, gButtonWidget,
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1436
+                                    (GtkReliefStyle) flags,
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1437
+                                    GetWidget(MOZ_GTK_BUTTON),
907
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1438
                                     direction);
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1439
         break;
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1440
     case MOZ_GTK_CHECKBUTTON:
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1441
@@ -3171,9 +2880,9 @@ moz_gtk_widget_paint(WidgetNodeType widg
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1442
                                          state, direction);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1443
         break;
907
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1444
     case MOZ_GTK_SPINBUTTON_ENTRY:
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1445
-        ensure_spin_widget();
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1446
+        // TODO - use MOZ_GTK_SPINBUTTON_ENTRY style directly
907
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1447
         return moz_gtk_entry_paint(cr, rect, state,
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1448
-                                   gSpinWidget, direction);
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1449
+                                   GetWidget(MOZ_GTK_SPINBUTTON), direction);
907
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1450
         break;
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1451
     case MOZ_GTK_GRIPPER:
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1452
         return moz_gtk_gripper_paint(cr, rect, state,
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1453
@@ -3198,9 +2907,11 @@ moz_gtk_widget_paint(WidgetNodeType widg
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1454
                                                (GtkExpanderStyle) flags, direction);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1455
         break;
907
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1456
     case MOZ_GTK_ENTRY:
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1457
-        ensure_entry_widget();
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1458
-        return moz_gtk_entry_paint(cr, rect, state,
907
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1459
-                                   gEntryWidget, direction);
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1460
+        return moz_gtk_entry_paint(cr, rect, state, GetWidget(MOZ_GTK_ENTRY),
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1461
+                                   direction);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1462
+        break;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1463
+    case MOZ_GTK_TEXT_VIEW:
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1464
+        return moz_gtk_text_view_paint(cr, rect, state, direction);
907
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1465
         break;
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1466
     case MOZ_GTK_DROPDOWN:
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1467
         return moz_gtk_combo_box_paint(cr, rect, state, direction);
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1468
@@ -3271,9 +2982,9 @@ moz_gtk_widget_paint(WidgetNodeType widg
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1469
         return moz_gtk_menu_separator_paint(cr, rect,
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1470
                                             direction);
907
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1471
         break;
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1472
+    case MOZ_GTK_MENUBARITEM:
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1473
     case MOZ_GTK_MENUITEM:
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1474
-        return moz_gtk_menu_item_paint(cr, rect, state, flags,
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1475
-                                       direction);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1476
+        return moz_gtk_menu_item_paint(widget, cr, rect, state, direction);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1477
         break;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1478
     case MOZ_GTK_MENUARROW:
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1479
         return moz_gtk_menu_arrow_paint(cr, rect, state,
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1480
@@ -3333,25 +3044,16 @@ gboolean moz_gtk_has_scrollbar_buttons(v
919
6838f0c032f8 -------------------------------------------------------------------
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 909
diff changeset
  1481
 gint
6838f0c032f8 -------------------------------------------------------------------
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 909
diff changeset
  1482
 moz_gtk_shutdown()
6838f0c032f8 -------------------------------------------------------------------
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 909
diff changeset
  1483
 {
6838f0c032f8 -------------------------------------------------------------------
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 909
diff changeset
  1484
-    if (gTooltipWidget)
6838f0c032f8 -------------------------------------------------------------------
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 909
diff changeset
  1485
-        gtk_widget_destroy(gTooltipWidget);
6838f0c032f8 -------------------------------------------------------------------
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 909
diff changeset
  1486
     /* This will destroy all of our widgets */
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1487
-
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1488
     ResetWidgetCache();
907
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1489
 
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1490
     /* TODO - replace it with appropriate widget */
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1491
     if (gTreeHeaderSortArrowWidget)
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1492
         gtk_widget_destroy(gTreeHeaderSortArrowWidget);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1493
 
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1494
-    gProtoWindow = NULL;
907
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1495
     gProtoLayout = NULL;
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1496
-    gButtonWidget = NULL;
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1497
-    gToggleButtonWidget = NULL;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1498
-    gButtonArrowWidget = NULL;
907
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1499
-    gSpinWidget = NULL;
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1500
     gHScaleWidget = NULL;
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1501
     gVScaleWidget = NULL;
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1502
-    gEntryWidget = NULL;
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1503
     gComboBoxWidget = NULL;
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1504
     gComboBoxButtonWidget = NULL;
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1505
     gComboBoxSeparatorWidget = NULL;
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1506
@@ -3360,29 +3062,15 @@ moz_gtk_shutdown()
907
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1507
     gComboBoxEntryButtonWidget = NULL;
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1508
     gComboBoxEntryArrowWidget = NULL;
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1509
     gComboBoxEntryTextareaWidget = NULL;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1510
-    gHandleBoxWidget = NULL;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1511
-    gToolbarWidget = NULL;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1512
-    gFrameWidget = NULL;
907
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1513
-    gProgressWidget = NULL;
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1514
     gTabWidget = NULL;
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1515
-    gTextViewWidget = nullptr;
919
6838f0c032f8 -------------------------------------------------------------------
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 909
diff changeset
  1516
-    gTooltipWidget = NULL;
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1517
-    gMenuBarWidget = NULL;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1518
-    gMenuBarItemWidget = NULL;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1519
-    gMenuPopupWidget = NULL;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1520
-    gMenuItemWidget = NULL;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1521
     gImageMenuItemWidget = NULL;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1522
     gCheckMenuItemWidget = NULL;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1523
     gTreeViewWidget = NULL;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1524
     gMiddleTreeViewColumn = NULL;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1525
     gTreeHeaderCellWidget = NULL;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1526
     gTreeHeaderSortArrowWidget = NULL;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1527
-    gExpanderWidget = NULL;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1528
-    gToolbarSeparatorWidget = NULL;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1529
-    gMenuSeparatorWidget = NULL;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1530
     gHPanedWidget = NULL;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1531
     gVPanedWidget = NULL;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1532
-    gScrolledWindowWidget = NULL;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1533
 
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1534
     is_initialized = FALSE;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1535
 
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1536
diff -up firefox-48.0/widget/gtk/gtkdrawing.h.gtk3-20 firefox-48.0/widget/gtk/gtkdrawing.h
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1537
--- firefox-48.0/widget/gtk/gtkdrawing.h.gtk3-20	2016-07-25 22:22:07.000000000 +0200
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1538
+++ firefox-48.0/widget/gtk/gtkdrawing.h	2016-07-29 09:15:11.822285857 +0200
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1539
@@ -69,12 +69,6 @@ typedef enum {
907
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1540
   MOZ_GTK_TAB_SELECTED        = 1 << 10
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1541
 } GtkTabFlags;
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1542
 
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1543
-/** flags for menuitems **/
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1544
-typedef enum {
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1545
-  /* menuitem is part of the menubar */
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1546
-  MOZ_TOPLEVEL_MENU_ITEM      = 1 << 0
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1547
-} GtkMenuItemFlags;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1548
-
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1549
 /* function type for moz_gtk_enable_style_props */
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1550
 typedef gint (*style_prop_t)(GtkStyle*, const gchar*, gint);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1551
 
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1552
@@ -93,6 +87,10 @@ typedef enum {
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1553
   MOZ_GTK_BUTTON,
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1554
   /* Paints a button with image and no text */
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1555
   MOZ_GTK_TOOLBAR_BUTTON,
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1556
+  /* Paints a toggle button */
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1557
+  MOZ_GTK_TOGGLE_BUTTON,
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1558
+  /* Paints a button arrow */
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1559
+  MOZ_GTK_BUTTON_ARROW,
907
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1560
 
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1561
   /* Paints the container part of a GtkCheckButton. */
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1562
   MOZ_GTK_CHECKBUTTON_CONTAINER,
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1563
@@ -115,6 +113,7 @@ typedef enum {
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1564
 
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1565
   /* Horizontal GtkScrollbar counterparts */
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1566
   MOZ_GTK_SCROLLBAR_HORIZONTAL,
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1567
+  MOZ_GTK_SCROLLBAR_CONTENTS_HORIZONTAL,
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1568
   /* Paints the trough (track) of a GtkScrollbar. */
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1569
   MOZ_GTK_SCROLLBAR_TROUGH_HORIZONTAL,
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1570
   /* Paints the slider (thumb) of a GtkScrollbar. */
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1571
@@ -122,6 +121,7 @@ typedef enum {
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1572
 
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1573
   /* Vertical GtkScrollbar counterparts */
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1574
   MOZ_GTK_SCROLLBAR_VERTICAL,
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1575
+  MOZ_GTK_SCROLLBAR_CONTENTS_VERTICAL,
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1576
   MOZ_GTK_SCROLLBAR_TROUGH_VERTICAL,
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1577
   MOZ_GTK_SCROLLBAR_THUMB_VERTICAL,
907
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1578
 
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1579
@@ -140,6 +140,10 @@ typedef enum {
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1580
   MOZ_GTK_GRIPPER,
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1581
   /* Paints a GtkEntry. */
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1582
   MOZ_GTK_ENTRY,
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1583
+  /* Paints a GtkExpander. */
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1584
+  MOZ_GTK_EXPANDER,
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1585
+  /* Paints a GtkTextView. */
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1586
+  MOZ_GTK_TEXT_VIEW,
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1587
   /* Paints a GtkOptionMenu. */
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1588
   MOZ_GTK_DROPDOWN,
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1589
   /* Paints a dropdown arrow (a GtkButton containing a down GtkArrow). */
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1590
@@ -159,6 +163,8 @@ typedef enum {
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1591
   MOZ_GTK_RESIZER,
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1592
   /* Paints a GtkProgressBar. */
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1593
   MOZ_GTK_PROGRESSBAR,
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1594
+  /* Paints a trough (track) of a GtkProgressBar */
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1595
+  MOZ_GTK_PROGRESS_TROUGH,
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1596
   /* Paints a progress chunk of a GtkProgressBar. */
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1597
   MOZ_GTK_PROGRESS_CHUNK,
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1598
   /* Paints a progress chunk of an indeterminated GtkProgressBar. */
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1599
@@ -187,7 +193,9 @@ typedef enum {
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1600
   MOZ_GTK_MENUARROW,
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1601
   /* Paints an arrow in a toolbar button. flags is a GtkArrowType. */
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1602
   MOZ_GTK_TOOLBARBUTTON_ARROW,
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1603
-  /* Paints items of menubar and popups. */
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1604
+  /* Paints items of menubar. */
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1605
+  MOZ_GTK_MENUBARITEM,
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1606
+  /* Paints items of popup menus. */
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1607
   MOZ_GTK_MENUITEM,
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1608
   MOZ_GTK_CHECKMENUITEM,
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1609
   MOZ_GTK_RADIOMENUITEM,
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1610
@@ -202,6 +210,8 @@ typedef enum {
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1611
   MOZ_GTK_WINDOW_CONTAINER,
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1612
   /* Paints a GtkInfoBar, for notifications. */
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1613
   MOZ_GTK_INFO_BAR,
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1614
+  /* Used for scrolled window shell. */
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1615
+  MOZ_GTK_SCROLLED_WINDOW,
907
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1616
 
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1617
   MOZ_GTK_WIDGET_NODE_COUNT
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1618
 } WidgetNodeType;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1619
diff -up firefox-48.0/widget/gtk/mozgtk/mozgtk.c.gtk3-20 firefox-48.0/widget/gtk/mozgtk/mozgtk.c
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1620
--- firefox-48.0/widget/gtk/mozgtk/mozgtk.c.gtk3-20	2016-07-25 22:22:07.000000000 +0200
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1621
+++ firefox-48.0/widget/gtk/mozgtk/mozgtk.c	2016-07-29 09:15:11.823285862 +0200
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1622
@@ -517,6 +517,7 @@ STUB(gdk_event_get_source_device)
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1623
 STUB(gdk_window_get_type)
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1624
 STUB(gdk_x11_window_get_xid)
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1625
 STUB(gdk_x11_display_get_type)
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1626
+STUB(gtk_box_new)
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1627
 STUB(gtk_cairo_should_draw_window)
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1628
 STUB(gtk_cairo_transform_to_window)
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1629
 STUB(gtk_combo_box_text_append)
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1630
@@ -570,6 +571,7 @@ STUB(gtk_tree_view_column_get_button)
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1631
 STUB(gtk_widget_get_preferred_size)
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1632
 STUB(gtk_widget_get_state_flags)
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1633
 STUB(gtk_widget_get_style_context)
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1634
+STUB(gtk_widget_path_append_for_widget)
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1635
 STUB(gtk_widget_path_append_type)
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1636
 STUB(gtk_widget_path_copy)
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1637
 STUB(gtk_widget_path_free)
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1638
@@ -587,6 +589,10 @@ STUB(gtk_color_chooser_get_type)
907
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1639
 STUB(gtk_color_chooser_set_rgba)
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1640
 STUB(gtk_color_chooser_get_rgba)
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1641
 STUB(gtk_color_chooser_set_use_alpha)
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1642
+STUB(gtk_check_menu_item_new)
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1643
+STUB(gtk_style_context_get_direction)
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1644
+STUB(gtk_style_context_invalidate)
919
6838f0c032f8 -------------------------------------------------------------------
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 909
diff changeset
  1645
+STUB(gtk_tooltip_get_type)
907
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1646
 #endif
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1647
 
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1648
 #ifdef GTK2_SYMBOLS
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1649
diff -up firefox-48.0/widget/gtk/nsLookAndFeel.cpp.gtk3-20 firefox-48.0/widget/gtk/nsLookAndFeel.cpp
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1650
--- firefox-48.0/widget/gtk/nsLookAndFeel.cpp.gtk3-20	2016-06-01 06:11:44.000000000 +0200
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1651
+++ firefox-48.0/widget/gtk/nsLookAndFeel.cpp	2016-07-29 09:15:54.943459700 +0200
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1652
@@ -31,6 +31,7 @@
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1653
 
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1654
 #if MOZ_WIDGET_GTK != 2
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1655
 #include <cairo-gobject.h>
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1656
+#include "WidgetStyleCache.h"
907
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1657
 #endif
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1658
 
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1659
 using mozilla::LookAndFeel;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1660
@@ -1135,15 +1136,24 @@ nsLookAndFeel::Init()
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1661
     gtk_style_context_get_color(style, GTK_STATE_FLAG_NORMAL, &color);
907
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1662
     sMozWindowText = GDK_RGBA_TO_NS_RGBA(color);
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1663
     gtk_style_context_restore(style);
919
6838f0c032f8 -------------------------------------------------------------------
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 909
diff changeset
  1664
+    g_object_unref(style);
907
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1665
 
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1666
     // tooltip foreground and background
919
6838f0c032f8 -------------------------------------------------------------------
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 909
diff changeset
  1667
-    gtk_style_context_add_class(style, GTK_STYLE_CLASS_TOOLTIP);
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1668
-    gtk_style_context_add_class(style, GTK_STYLE_CLASS_BACKGROUND);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1669
+    style = ClaimStyleContext(MOZ_GTK_TOOLTIP);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1670
     gtk_style_context_get_background_color(style, GTK_STATE_FLAG_NORMAL, &color);
907
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1671
     sInfoBackground = GDK_RGBA_TO_NS_RGBA(color);
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1672
-    gtk_style_context_get_color(style, GTK_STATE_FLAG_NORMAL, &color);
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1673
+    {
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1674
+        GtkStyleContext* boxStyle =
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1675
+            CreateStyleForWidget(gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0),
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1676
+                                 style);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1677
+        GtkStyleContext* labelStyle =
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1678
+            CreateStyleForWidget(gtk_label_new(nullptr), boxStyle);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1679
+        gtk_style_context_get_color(labelStyle, GTK_STATE_FLAG_NORMAL, &color);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1680
+        g_object_unref(labelStyle);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1681
+        g_object_unref(boxStyle);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1682
+    }
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1683
     sInfoText = GDK_RGBA_TO_NS_RGBA(color);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1684
-    g_object_unref(style);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1685
+    ReleaseStyleContext(style);
907
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1686
 
919
6838f0c032f8 -------------------------------------------------------------------
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 909
diff changeset
  1687
     // menu foreground & menu background
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1688
     GtkWidget *accel_label = gtk_accel_label_new("M");
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1689
diff -up firefox-48.0/widget/gtk/nsNativeThemeGTK.cpp.gtk3-20 firefox-48.0/widget/gtk/nsNativeThemeGTK.cpp
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1690
--- firefox-48.0/widget/gtk/nsNativeThemeGTK.cpp.gtk3-20	2016-07-25 22:22:07.000000000 +0200
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1691
+++ firefox-48.0/widget/gtk/nsNativeThemeGTK.cpp	2016-07-29 09:15:11.824285865 +0200
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1692
@@ -354,10 +354,8 @@ nsNativeThemeGTK::GetGtkWidgetAndState(u
907
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1693
 
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1694
           if (isTopLevel) {
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1695
             aState->inHover = menuFrame->IsOpen();
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1696
-            *aWidgetFlags |= MOZ_TOPLEVEL_MENU_ITEM;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1697
           } else {
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1698
             aState->inHover = CheckBooleanAttr(aFrame, nsGkAtoms::menuactive);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1699
-            *aWidgetFlags &= ~MOZ_TOPLEVEL_MENU_ITEM;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1700
           }
907
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1701
 
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1702
           aState->active = FALSE;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1703
@@ -510,8 +508,14 @@ nsNativeThemeGTK::GetGtkWidgetAndState(u
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1704
     break;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1705
   case NS_THEME_NUMBER_INPUT:
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1706
   case NS_THEME_TEXTFIELD:
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1707
+    aGtkWidgetType = MOZ_GTK_ENTRY;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1708
+    break;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1709
   case NS_THEME_TEXTFIELD_MULTILINE:
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1710
+#if (MOZ_WIDGET_GTK == 3)
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1711
+    aGtkWidgetType = MOZ_GTK_TEXT_VIEW;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1712
+#else
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1713
     aGtkWidgetType = MOZ_GTK_ENTRY;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1714
+#endif
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1715
     break;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1716
   case NS_THEME_LISTBOX:
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1717
   case NS_THEME_TREEVIEW:
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1718
@@ -673,6 +677,13 @@ nsNativeThemeGTK::GetGtkWidgetAndState(u
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1719
     aGtkWidgetType = MOZ_GTK_MENUPOPUP;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1720
     break;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1721
   case NS_THEME_MENUITEM:
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1722
+    {
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1723
+      nsMenuFrame *menuFrame = do_QueryFrame(aFrame);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1724
+      if (menuFrame && menuFrame->IsOnMenuBar()) {
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1725
+        aGtkWidgetType = MOZ_GTK_MENUBARITEM;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1726
+        break;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1727
+      }
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1728
+    }
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1729
     aGtkWidgetType = MOZ_GTK_MENUITEM;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1730
     break;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1731
   case NS_THEME_MENUSEPARATOR:
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1732
diff -up firefox-48.0/widget/gtk/WidgetStyleCache.cpp.gtk3-20 firefox-48.0/widget/gtk/WidgetStyleCache.cpp
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1733
--- firefox-48.0/widget/gtk/WidgetStyleCache.cpp.gtk3-20	2016-07-25 22:22:07.000000000 +0200
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1734
+++ firefox-48.0/widget/gtk/WidgetStyleCache.cpp	2016-07-29 09:15:11.825285869 +0200
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1735
@@ -22,7 +22,7 @@ static bool sStyleContextNeedsRestore;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1736
 static GtkStyleContext* sCurrentStyleContext;
907
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1737
 #endif
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1738
 static GtkStyleContext*
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1739
-GetStyleInternal(WidgetNodeType aNodeType);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1740
+GetCssNodeStyleInternal(WidgetNodeType aNodeType);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1741
 
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1742
 static GtkWidget*
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1743
 CreateWindowWidget()
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1744
@@ -67,12 +67,175 @@ CreateCheckboxWidget()
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1745
 static GtkWidget*
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1746
 CreateRadiobuttonWidget()
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1747
 {
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1748
-  GtkWidget* widget = gtk_radio_button_new_with_label(NULL, "M");
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1749
+  GtkWidget* widget = gtk_radio_button_new_with_label(nullptr, "M");
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1750
   AddToWindowContainer(widget);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1751
   return widget;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1752
 }
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1753
 
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1754
 static GtkWidget*
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1755
+CreateMenuBarWidget()
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1756
+{
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1757
+  GtkWidget* widget = gtk_menu_bar_new();
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1758
+  AddToWindowContainer(widget);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1759
+  return widget;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1760
+}
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1761
+
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1762
+static GtkWidget*
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1763
+CreateMenuPopupWidget()
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1764
+{
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1765
+  GtkWidget* widget = gtk_menu_new();
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1766
+  gtk_menu_attach_to_widget(GTK_MENU(widget), GetWidget(MOZ_GTK_WINDOW),
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1767
+                            nullptr);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1768
+  return widget;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1769
+}
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1770
+
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1771
+static GtkWidget*
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1772
+CreateMenuItemWidget(WidgetNodeType aShellType)
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1773
+{
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1774
+  GtkWidget* widget = gtk_menu_item_new();
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1775
+  gtk_menu_shell_append(GTK_MENU_SHELL(GetWidget(aShellType)), widget);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1776
+  return widget;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1777
+}
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1778
+
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1779
+static GtkWidget*
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1780
+CreateProgressWidget()
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1781
+{
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1782
+  GtkWidget* widget = gtk_progress_bar_new();
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1783
+  AddToWindowContainer(widget);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1784
+  return widget;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1785
+}
907
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1786
+
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1787
+static GtkWidget*
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1788
+CreateTooltipWidget()
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1789
+{
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1790
+  MOZ_ASSERT(gtk_check_version(3, 20, 0) != nullptr,
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1791
+             "CreateTooltipWidget should be used for Gtk < 3.20 only.");
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1792
+  GtkWidget* widget = CreateWindowWidget();
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1793
+  GtkStyleContext* style = gtk_widget_get_style_context(widget);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1794
+  gtk_style_context_add_class(style, GTK_STYLE_CLASS_TOOLTIP);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1795
+  return widget;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1796
+}
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1797
+
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1798
+static GtkWidget*
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1799
+CreateExpanderWidget()
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1800
+{
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1801
+  GtkWidget* widget = gtk_expander_new("M");
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1802
+  AddToWindowContainer(widget);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1803
+  return widget;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1804
+}
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1805
+
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1806
+static GtkWidget*
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1807
+CreateFrameWidget()
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1808
+{
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1809
+  GtkWidget* widget = gtk_frame_new(nullptr);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1810
+  AddToWindowContainer(widget);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1811
+  return widget;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1812
+}
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1813
+
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1814
+static GtkWidget*
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1815
+CreateGripperWidget()
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1816
+{
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1817
+  GtkWidget* widget = gtk_handle_box_new();
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1818
+  AddToWindowContainer(widget);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1819
+  return widget;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1820
+}
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1821
+
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1822
+static GtkWidget*
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1823
+CreateToolbarWidget()
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1824
+{
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1825
+  GtkWidget* widget = gtk_toolbar_new();
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1826
+  gtk_container_add(GTK_CONTAINER(GetWidget(MOZ_GTK_GRIPPER)), widget);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1827
+  gtk_widget_realize(widget);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1828
+  return widget;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1829
+}
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1830
+
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1831
+static GtkWidget*
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1832
+CreateToolbarSeparatorWidget()
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1833
+{
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1834
+  GtkWidget* widget = GTK_WIDGET(gtk_separator_tool_item_new());
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1835
+  AddToWindowContainer(widget);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1836
+  return widget;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1837
+}
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1838
+
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1839
+static GtkWidget*
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1840
+CreateInfoBarWidget()
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1841
+{
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1842
+  GtkWidget* widget = gtk_info_bar_new();
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1843
+  AddToWindowContainer(widget);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1844
+  return widget;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1845
+}
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1846
+
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1847
+static GtkWidget*
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1848
+CreateButtonWidget()
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1849
+{
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1850
+  GtkWidget* widget = gtk_button_new_with_label("M");
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1851
+  AddToWindowContainer(widget);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1852
+  return widget;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1853
+}
907
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1854
+
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1855
+static GtkWidget*
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1856
+CreateToggleButtonWidget()
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1857
+{
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1858
+  GtkWidget* widget = gtk_toggle_button_new();
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1859
+  AddToWindowContainer(widget);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1860
+  return widget;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1861
+}
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1862
+
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1863
+static GtkWidget*
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1864
+CreateButtonArrowWidget()
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1865
+{
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1866
+  GtkWidget* widget = gtk_arrow_new(GTK_ARROW_DOWN, GTK_SHADOW_OUT);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1867
+  gtk_container_add(GTK_CONTAINER(GetWidget(MOZ_GTK_TOGGLE_BUTTON)), widget);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1868
+  gtk_widget_realize(widget);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1869
+  gtk_widget_show(widget);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1870
+  return widget;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1871
+}
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1872
+
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1873
+static GtkWidget*
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1874
+CreateSpinWidget()
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1875
+{
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1876
+  GtkWidget* widget = gtk_spin_button_new(nullptr, 1, 0);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1877
+  AddToWindowContainer(widget);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1878
+  return widget;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1879
+}
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1880
+
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1881
+static GtkWidget*
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1882
+CreateEntryWidget()
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1883
+{
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1884
+  GtkWidget* widget = gtk_entry_new();
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1885
+  AddToWindowContainer(widget);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1886
+  return widget;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1887
+}
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1888
+
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1889
+static GtkWidget*
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1890
+CreateScrolledWindowWidget()
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1891
+{
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1892
+  GtkWidget* widget = gtk_scrolled_window_new(nullptr, nullptr);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1893
+  AddToWindowContainer(widget);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1894
+  return widget;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1895
+}
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1896
+
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1897
+static GtkWidget*
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1898
+CreateTextViewWidget()
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1899
+{
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1900
+  GtkWidget* widget = gtk_text_view_new();
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1901
+  gtk_container_add(GTK_CONTAINER(GetWidget(MOZ_GTK_SCROLLED_WINDOW)),
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1902
+                    widget);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1903
+  return widget;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1904
+}
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1905
+
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1906
+static GtkWidget*
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1907
+CreateMenuSeparatorWidget()
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1908
+{
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1909
+  GtkWidget* widget = gtk_separator_menu_item_new();
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1910
+  gtk_menu_shell_append(GTK_MENU_SHELL(GetWidget(MOZ_GTK_MENUPOPUP)),
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1911
+                        widget);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1912
+  gtk_widget_realize(widget);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1913
+  return widget;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1914
+}
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1915
+
907
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1916
+
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1917
+static GtkWidget*
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1918
 CreateWidget(WidgetNodeType aWidgetType)
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1919
 {
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1920
   switch (aWidgetType) {
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1921
@@ -80,16 +243,54 @@ CreateWidget(WidgetNodeType aWidgetType)
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1922
       return CreateWindowWidget();
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1923
     case MOZ_GTK_WINDOW_CONTAINER:
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1924
       return CreateWindowContainerWidget();
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1925
+    case MOZ_GTK_CHECKBUTTON_CONTAINER:
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1926
+      return CreateCheckboxWidget();
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1927
+    case MOZ_GTK_PROGRESSBAR:
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1928
+      return CreateProgressWidget();
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1929
+    case MOZ_GTK_RADIOBUTTON_CONTAINER:
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1930
+      return CreateRadiobuttonWidget();
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1931
     case MOZ_GTK_SCROLLBAR_HORIZONTAL:
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1932
       return CreateScrollbarWidget(aWidgetType,
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1933
                                    GTK_ORIENTATION_HORIZONTAL);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1934
     case MOZ_GTK_SCROLLBAR_VERTICAL:
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1935
       return CreateScrollbarWidget(aWidgetType,
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1936
                                    GTK_ORIENTATION_VERTICAL);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1937
-    case MOZ_GTK_CHECKBUTTON_CONTAINER:
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1938
-      return CreateCheckboxWidget();
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1939
-    case MOZ_GTK_RADIOBUTTON_CONTAINER:
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1940
-      return CreateRadiobuttonWidget();
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1941
+    case MOZ_GTK_MENUBAR:
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1942
+      return CreateMenuBarWidget();
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1943
+    case MOZ_GTK_MENUPOPUP:
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1944
+      return CreateMenuPopupWidget();
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1945
+    case MOZ_GTK_MENUBARITEM:
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1946
+      return CreateMenuItemWidget(MOZ_GTK_MENUBAR);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1947
+    case MOZ_GTK_MENUITEM:
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1948
+      return CreateMenuItemWidget(MOZ_GTK_MENUPOPUP);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1949
+    case MOZ_GTK_MENUSEPARATOR:
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1950
+      return CreateMenuSeparatorWidget();
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1951
+    case MOZ_GTK_EXPANDER:
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1952
+      return CreateExpanderWidget();
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1953
+    case MOZ_GTK_FRAME:
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1954
+      return CreateFrameWidget();
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1955
+    case MOZ_GTK_GRIPPER:
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1956
+      return CreateGripperWidget();
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1957
+    case MOZ_GTK_TOOLBAR:
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1958
+      return CreateToolbarWidget();
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1959
+    case MOZ_GTK_TOOLBAR_SEPARATOR:
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1960
+      return CreateToolbarSeparatorWidget();
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1961
+    case MOZ_GTK_INFO_BAR:
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1962
+      return CreateInfoBarWidget();
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1963
+    case MOZ_GTK_SPINBUTTON:
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1964
+      return CreateSpinWidget();
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1965
+    case MOZ_GTK_BUTTON:
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1966
+      return CreateButtonWidget();
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1967
+    case MOZ_GTK_TOGGLE_BUTTON:
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1968
+      return CreateToggleButtonWidget();
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1969
+    case MOZ_GTK_BUTTON_ARROW:
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1970
+      return CreateButtonArrowWidget();
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1971
+    case MOZ_GTK_ENTRY:
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1972
+      return CreateEntryWidget();
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1973
+    case MOZ_GTK_SCROLLED_WINDOW: 
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1974
+      return CreateScrolledWindowWidget();
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1975
+    case MOZ_GTK_TEXT_VIEW:
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1976
+      return CreateTextViewWidget();
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1977
     default:
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1978
       /* Not implemented */
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1979
       return nullptr;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1980
@@ -107,17 +308,42 @@ GetWidget(WidgetNodeType aWidgetType)
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1981
   return widget;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1982
 }
907
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1983
 
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1984
-static GtkStyleContext*
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1985
-CreateCSSNode(const char* aName, GtkStyleContext *aParentStyle)
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1986
+GtkStyleContext*
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1987
+CreateStyleForWidget(GtkWidget* aWidget, GtkStyleContext* aParentStyle)
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1988
+{
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1989
+  GtkWidgetPath* path = aParentStyle ?
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1990
+    gtk_widget_path_copy(gtk_style_context_get_path(aParentStyle)) :
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1991
+    gtk_widget_path_new();
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1992
+
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1993
+  // Work around https://bugzilla.gnome.org/show_bug.cgi?id=767312
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1994
+  // which exists in GTK+ 3.20.
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1995
+  gtk_widget_get_style_context(aWidget);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1996
+
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1997
+  gtk_widget_path_append_for_widget(path, aWidget);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1998
+  // Release any floating reference on aWidget.
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  1999
+  g_object_ref_sink(aWidget);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2000
+  g_object_unref(aWidget);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2001
+
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2002
+  GtkStyleContext *context = gtk_style_context_new();
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2003
+  gtk_style_context_set_path(context, path);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2004
+  gtk_style_context_set_parent(context, aParentStyle);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2005
+  gtk_widget_path_unref(path);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2006
+
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2007
+  return context;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2008
+}
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2009
+
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2010
+GtkStyleContext*
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2011
+CreateCSSNode(const char* aName, GtkStyleContext* aParentStyle, GType aType)
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2012
 {
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2013
   static auto sGtkWidgetPathIterSetObjectName =
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2014
     reinterpret_cast<void (*)(GtkWidgetPath *, gint, const char *)>
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2015
     (dlsym(RTLD_DEFAULT, "gtk_widget_path_iter_set_object_name"));
907
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  2016
 
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2017
-  GtkWidgetPath* path =
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2018
-    gtk_widget_path_copy(gtk_style_context_get_path(aParentStyle));
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2019
+  GtkWidgetPath* path = aParentStyle ?
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2020
+    gtk_widget_path_copy(gtk_style_context_get_path(aParentStyle)) :
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2021
+    gtk_widget_path_new();
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2022
 
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2023
-  gtk_widget_path_append_type(path, G_TYPE_NONE);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2024
+  gtk_widget_path_append_type(path, aType);
907
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  2025
 
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2026
   (*sGtkWidgetPathIterSetObjectName)(path, -1, aName);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2027
 
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2028
@@ -130,95 +356,168 @@ CreateCSSNode(const char* aName, GtkStyl
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2029
 }
907
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  2030
 
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2031
 static GtkStyleContext*
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2032
-GetChildNodeStyle(WidgetNodeType aStyleType,
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2033
-                  WidgetNodeType aWidgetType,
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2034
-                  const gchar*   aStyleClass,
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2035
-                  WidgetNodeType aParentNodeType)
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2036
+CreateChildCSSNode(const char* aName, WidgetNodeType aParentNodeType)
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2037
 {
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2038
-  GtkStyleContext* style;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2039
-
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2040
-  if (gtk_check_version(3, 20, 0) != nullptr) {
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2041
-    style = gtk_widget_get_style_context(sWidgetStorage[aWidgetType]);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2042
-
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2043
-    gtk_style_context_save(style);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2044
-    MOZ_ASSERT(!sStyleContextNeedsRestore);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2045
-    sStyleContextNeedsRestore = true;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2046
-
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2047
-    gtk_style_context_add_class(style, aStyleClass);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2048
-  }
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2049
-  else {
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2050
-    style = sStyleStorage[aStyleType];
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2051
-    if (!style) {
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2052
-      style = CreateCSSNode(aStyleClass, GetStyleInternal(aParentNodeType));
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2053
-      MOZ_ASSERT(!sStyleContextNeedsRestore);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2054
-      sStyleStorage[aStyleType] = style;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2055
-    }
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2056
-  }
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2057
+  return CreateCSSNode(aName, GetCssNodeStyleInternal(aParentNodeType));
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2058
+}
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2059
 
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2060
+static GtkStyleContext*
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2061
+GetWidgetStyleWithClass(WidgetNodeType aWidgetType, const gchar* aStyleClass)
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2062
+{
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2063
+  GtkStyleContext* style = gtk_widget_get_style_context(GetWidget(aWidgetType));
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2064
+  gtk_style_context_save(style);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2065
+  MOZ_ASSERT(!sStyleContextNeedsRestore);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2066
+  sStyleContextNeedsRestore = true;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2067
+  gtk_style_context_add_class(style, aStyleClass);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2068
   return style;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2069
 }
907
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  2070
 
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2071
+/* GetCssNodeStyleInternal is used by Gtk >= 3.20 */
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2072
 static GtkStyleContext*
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2073
-GetStyleInternal(WidgetNodeType aNodeType)
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2074
+GetCssNodeStyleInternal(WidgetNodeType aNodeType)
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2075
 {
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2076
+  GtkStyleContext* style = sStyleStorage[aNodeType];
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2077
+  if (style)
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2078
+    return style;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2079
+
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2080
   switch (aNodeType) {
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2081
-    case MOZ_GTK_SCROLLBAR_HORIZONTAL:
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2082
-      /* Root CSS node / widget for scrollbars */
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2083
+    case MOZ_GTK_SCROLLBAR_CONTENTS_HORIZONTAL:
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2084
+      style = CreateChildCSSNode("contents",
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2085
+                                 MOZ_GTK_SCROLLBAR_HORIZONTAL);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2086
       break;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2087
     case MOZ_GTK_SCROLLBAR_TROUGH_HORIZONTAL:
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2088
-      return GetChildNodeStyle(aNodeType,
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2089
-                               MOZ_GTK_SCROLLBAR_HORIZONTAL,
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2090
-                               GTK_STYLE_CLASS_TROUGH,
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2091
-                               MOZ_GTK_SCROLLBAR_HORIZONTAL);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2092
-
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2093
+      style = CreateChildCSSNode(GTK_STYLE_CLASS_TROUGH,
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2094
+                                 MOZ_GTK_SCROLLBAR_CONTENTS_HORIZONTAL);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2095
+      break;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2096
     case MOZ_GTK_SCROLLBAR_THUMB_HORIZONTAL:
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2097
-      return GetChildNodeStyle(aNodeType,
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2098
-                               MOZ_GTK_SCROLLBAR_HORIZONTAL,
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2099
-                               GTK_STYLE_CLASS_SLIDER,
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2100
-                               MOZ_GTK_SCROLLBAR_TROUGH_HORIZONTAL);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2101
-
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2102
-    case MOZ_GTK_SCROLLBAR_VERTICAL:
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2103
-      /* Root CSS node / widget for scrollbars */
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2104
+      style = CreateChildCSSNode(GTK_STYLE_CLASS_SLIDER,
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2105
+                                 MOZ_GTK_SCROLLBAR_TROUGH_HORIZONTAL);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2106
+      break;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2107
+    case MOZ_GTK_SCROLLBAR_CONTENTS_VERTICAL:
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2108
+      style = CreateChildCSSNode("contents",
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2109
+                                 MOZ_GTK_SCROLLBAR_VERTICAL);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2110
       break;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2111
     case MOZ_GTK_SCROLLBAR_TROUGH_VERTICAL:
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2112
-      return GetChildNodeStyle(aNodeType,
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2113
-                               MOZ_GTK_SCROLLBAR_VERTICAL,
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2114
-                               GTK_STYLE_CLASS_TROUGH,
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2115
-                               MOZ_GTK_SCROLLBAR_VERTICAL);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2116
-
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2117
+      style = CreateChildCSSNode(GTK_STYLE_CLASS_TROUGH,
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2118
+                                 MOZ_GTK_SCROLLBAR_CONTENTS_VERTICAL);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2119
+      break;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2120
     case MOZ_GTK_SCROLLBAR_THUMB_VERTICAL:
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2121
-      return GetChildNodeStyle(aNodeType,
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2122
-                               MOZ_GTK_SCROLLBAR_VERTICAL,
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2123
-                               GTK_STYLE_CLASS_SLIDER,
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2124
-                               MOZ_GTK_SCROLLBAR_TROUGH_VERTICAL);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2125
-
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2126
-    case MOZ_GTK_RADIOBUTTON_CONTAINER:
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2127
-      /* Root CSS node / widget for checkboxes */
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2128
+      style = CreateChildCSSNode(GTK_STYLE_CLASS_SLIDER,
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2129
+                                 MOZ_GTK_SCROLLBAR_TROUGH_VERTICAL);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2130
       break;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2131
     case MOZ_GTK_RADIOBUTTON:
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2132
-      return GetChildNodeStyle(aNodeType,
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2133
-                               MOZ_GTK_RADIOBUTTON_CONTAINER,
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2134
-                               GTK_STYLE_CLASS_RADIO,
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2135
-                               MOZ_GTK_RADIOBUTTON_CONTAINER);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2136
-    case MOZ_GTK_CHECKBUTTON_CONTAINER:
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2137
-      /* Root CSS node / widget for radiobuttons */
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2138
+      style = CreateChildCSSNode(GTK_STYLE_CLASS_RADIO,
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2139
+                                 MOZ_GTK_RADIOBUTTON_CONTAINER);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2140
       break;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2141
     case MOZ_GTK_CHECKBUTTON:
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2142
-      return GetChildNodeStyle(aNodeType,
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2143
-                               MOZ_GTK_CHECKBUTTON_CONTAINER,
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2144
-                               GTK_STYLE_CLASS_CHECK,
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2145
-                               MOZ_GTK_CHECKBUTTON_CONTAINER);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2146
-    default:
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2147
+      style = CreateChildCSSNode(GTK_STYLE_CLASS_CHECK,
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2148
+                                 MOZ_GTK_CHECKBUTTON_CONTAINER);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2149
+      break;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2150
+    case MOZ_GTK_PROGRESS_TROUGH:
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2151
+      /* Progress bar background (trough) */
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2152
+      style = CreateChildCSSNode(GTK_STYLE_CLASS_TROUGH,
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2153
+                                 MOZ_GTK_PROGRESSBAR);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2154
+      break;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2155
+    case MOZ_GTK_PROGRESS_CHUNK:
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2156
+      style = CreateChildCSSNode("progress",
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2157
+                                 MOZ_GTK_PROGRESS_TROUGH);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2158
       break;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2159
+    case MOZ_GTK_TOOLTIP:
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2160
+      // We create this from the path because GtkTooltipWindow is not public.
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2161
+      style = CreateCSSNode("tooltip", nullptr, GTK_TYPE_TOOLTIP);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2162
+      gtk_style_context_add_class(style, GTK_STYLE_CLASS_BACKGROUND);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2163
+      break; 
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2164
+    case MOZ_GTK_GRIPPER:
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2165
+      // TODO - create from CSS node
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2166
+      return GetWidgetStyleWithClass(MOZ_GTK_GRIPPER,
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2167
+                                     GTK_STYLE_CLASS_GRIP);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2168
+    case MOZ_GTK_INFO_BAR:
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2169
+      // TODO - create from CSS node
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2170
+      return GetWidgetStyleWithClass(MOZ_GTK_INFO_BAR,
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2171
+                                     GTK_STYLE_CLASS_INFO);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2172
+    case MOZ_GTK_SPINBUTTON_ENTRY:
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2173
+      // TODO - create from CSS node
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2174
+      return GetWidgetStyleWithClass(MOZ_GTK_SPINBUTTON,
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2175
+                                     GTK_STYLE_CLASS_ENTRY);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2176
+    case MOZ_GTK_SCROLLED_WINDOW:
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2177
+      // TODO - create from CSS node
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2178
+      return GetWidgetStyleWithClass(MOZ_GTK_SCROLLED_WINDOW,
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2179
+                                     GTK_STYLE_CLASS_FRAME);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2180
+    case MOZ_GTK_TEXT_VIEW:
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2181
+      // TODO - create from CSS node
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2182
+      return GetWidgetStyleWithClass(MOZ_GTK_TEXT_VIEW,
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2183
+                                     GTK_STYLE_CLASS_VIEW);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2184
+    default:
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2185
+      // TODO - create style from style path
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2186
+      GtkWidget* widget = GetWidget(aNodeType);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2187
+      return gtk_widget_get_style_context(widget);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2188
   }
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2189
 
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2190
-  GtkWidget* widget = GetWidget(aNodeType);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2191
-  if (widget) {
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2192
-    return gtk_widget_get_style_context(widget);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2193
-  }
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2194
+  MOZ_ASSERT(style, "missing style context for node type");
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2195
+  sStyleStorage[aNodeType] = style;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2196
+  return style;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2197
+}
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2198
 
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2199
-  MOZ_ASSERT_UNREACHABLE("missing style context for node type");
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2200
-  return nullptr;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2201
+/* GetWidgetStyleInternal is used by Gtk < 3.20 */
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2202
+static GtkStyleContext*
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2203
+GetWidgetStyleInternal(WidgetNodeType aNodeType)
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2204
+{
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2205
+  switch (aNodeType) {
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2206
+    case MOZ_GTK_SCROLLBAR_TROUGH_HORIZONTAL:
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2207
+      return GetWidgetStyleWithClass(MOZ_GTK_SCROLLBAR_HORIZONTAL,
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2208
+                                     GTK_STYLE_CLASS_TROUGH);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2209
+    case MOZ_GTK_SCROLLBAR_THUMB_HORIZONTAL:
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2210
+      return GetWidgetStyleWithClass(MOZ_GTK_SCROLLBAR_HORIZONTAL,
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2211
+                                     GTK_STYLE_CLASS_SLIDER);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2212
+    case MOZ_GTK_SCROLLBAR_TROUGH_VERTICAL:
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2213
+      return GetWidgetStyleWithClass(MOZ_GTK_SCROLLBAR_VERTICAL,
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2214
+                                     GTK_STYLE_CLASS_TROUGH);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2215
+    case MOZ_GTK_SCROLLBAR_THUMB_VERTICAL:
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2216
+      return GetWidgetStyleWithClass(MOZ_GTK_SCROLLBAR_VERTICAL,
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2217
+                                     GTK_STYLE_CLASS_SLIDER);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2218
+    case MOZ_GTK_RADIOBUTTON:
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2219
+      return GetWidgetStyleWithClass(MOZ_GTK_RADIOBUTTON_CONTAINER,
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2220
+                                     GTK_STYLE_CLASS_RADIO);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2221
+    case MOZ_GTK_CHECKBUTTON:
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2222
+      return GetWidgetStyleWithClass(MOZ_GTK_CHECKBUTTON_CONTAINER,
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2223
+                                     GTK_STYLE_CLASS_CHECK);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2224
+    case MOZ_GTK_PROGRESS_TROUGH:
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2225
+      return GetWidgetStyleWithClass(MOZ_GTK_PROGRESSBAR,
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2226
+                                     GTK_STYLE_CLASS_TROUGH);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2227
+    case MOZ_GTK_TOOLTIP: {
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2228
+      GtkStyleContext* style = sStyleStorage[aNodeType];
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2229
+      if (style)
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2230
+        return style;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2231
+
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2232
+      // The tooltip style class is added first in CreateTooltipWidget() so
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2233
+      // that gtk_widget_path_append_for_widget() in CreateStyleForWidget()
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2234
+      // will find it.
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2235
+      GtkWidget* tooltipWindow = CreateTooltipWidget();
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2236
+      style = CreateStyleForWidget(tooltipWindow, nullptr);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2237
+      gtk_widget_destroy(tooltipWindow); // Release GtkWindow self-reference.
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2238
+      sStyleStorage[aNodeType] = style;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2239
+      return style;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2240
+    }
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2241
+    case MOZ_GTK_GRIPPER:
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2242
+      return GetWidgetStyleWithClass(MOZ_GTK_GRIPPER,
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2243
+                                     GTK_STYLE_CLASS_GRIP);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2244
+    case MOZ_GTK_INFO_BAR:
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2245
+      return GetWidgetStyleWithClass(MOZ_GTK_INFO_BAR,
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2246
+                                     GTK_STYLE_CLASS_INFO);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2247
+    case MOZ_GTK_SPINBUTTON_ENTRY:
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2248
+      return GetWidgetStyleWithClass(MOZ_GTK_SPINBUTTON,
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2249
+                                     GTK_STYLE_CLASS_ENTRY);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2250
+    case MOZ_GTK_SCROLLED_WINDOW:
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2251
+      return GetWidgetStyleWithClass(MOZ_GTK_SCROLLED_WINDOW,
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2252
+                                     GTK_STYLE_CLASS_FRAME);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2253
+    case MOZ_GTK_TEXT_VIEW:
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2254
+      return GetWidgetStyleWithClass(MOZ_GTK_TEXT_VIEW,
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2255
+                                     GTK_STYLE_CLASS_VIEW);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2256
+    default:
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2257
+      GtkWidget* widget = GetWidget(aNodeType);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2258
+      MOZ_ASSERT(widget);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2259
+      return gtk_widget_get_style_context(widget);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2260
+  }
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2261
 }
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2262
 
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2263
 void
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2264
@@ -245,13 +544,39 @@ ResetWidgetCache(void)
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2265
 
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2266
 GtkStyleContext*
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2267
 ClaimStyleContext(WidgetNodeType aNodeType, GtkTextDirection aDirection,
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2268
-                  StyleFlags aFlags)
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2269
+                  GtkStateFlags aStateFlags, StyleFlags aFlags)
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2270
 {
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2271
-  GtkStyleContext* style = GetStyleInternal(aNodeType);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2272
+  MOZ_ASSERT(!sStyleContextNeedsRestore);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2273
+  GtkStyleContext* style;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2274
+  if (gtk_check_version(3, 20, 0) != nullptr) {
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2275
+    style = GetWidgetStyleInternal(aNodeType);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2276
+  } else {
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2277
+    style = GetCssNodeStyleInternal(aNodeType);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2278
+  }
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2279
 #ifdef DEBUG
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2280
   MOZ_ASSERT(!sCurrentStyleContext);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2281
   sCurrentStyleContext = style;
907
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  2282
 #endif
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2283
+  GtkStateFlags oldState = gtk_style_context_get_state(style);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2284
+  GtkTextDirection oldDirection = gtk_style_context_get_direction(style);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2285
+  if (oldState != aStateFlags || oldDirection != aDirection) {
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2286
+    // From GTK 3.8, set_state() will overwrite the direction, so set
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2287
+    // direction after state.
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2288
+    gtk_style_context_set_state(style, aStateFlags);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2289
+    gtk_style_context_set_direction(style, aDirection);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2290
+
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2291
+    // This invalidate is necessary for unsaved style contexts from GtkWidgets
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2292
+    // in pre-3.18 GTK, because automatic invalidation of such contexts
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2293
+    // was delayed until a resize event runs.
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2294
+    //
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2295
+    // https://bugzilla.mozilla.org/show_bug.cgi?id=1272194#c7
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2296
+    //
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2297
+    // Avoid calling invalidate on saved contexts to avoid performing
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2298
+    // build_properties() (in 3.16 stylecontext.c) unnecessarily early.
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2299
+    if (!sStyleContextNeedsRestore) {
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2300
+      gtk_style_context_invalidate(style);
907
3ccb278a9ceb prepare gtk3
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  2301
+    }
926
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2302
+  }
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2303
   return style;
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2304
 }
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2305
 
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2306
diff -up firefox-48.0/widget/gtk/WidgetStyleCache.h.gtk3-20 firefox-48.0/widget/gtk/WidgetStyleCache.h
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2307
--- firefox-48.0/widget/gtk/WidgetStyleCache.h.gtk3-20	2016-07-25 22:22:07.000000000 +0200
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2308
+++ firefox-48.0/widget/gtk/WidgetStyleCache.h	2016-07-29 09:15:11.825285869 +0200
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2309
@@ -21,10 +21,24 @@ enum : StyleFlags {
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2310
 GtkWidget*
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2311
 GetWidget(WidgetNodeType aNodeType);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2312
 
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2313
+/*
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2314
+ * Return a new style context based on aWidget, as a child of aParentStyle.
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2315
+ * If aWidget still has a floating reference, then it is sunk and released.
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2316
+ */
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2317
+GtkStyleContext*
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2318
+CreateStyleForWidget(GtkWidget* aWidget, GtkStyleContext* aParentStyle);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2319
+
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2320
+// CreateCSSNode is implemented for gtk >= 3.20 only.
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2321
+GtkStyleContext*
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2322
+CreateCSSNode(const char*      aName,
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2323
+              GtkStyleContext* aParentStyle,
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2324
+              GType            aType = G_TYPE_NONE);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2325
+
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2326
 // Callers must call ReleaseStyleContext() on the returned context.
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2327
 GtkStyleContext*
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2328
 ClaimStyleContext(WidgetNodeType aNodeType,
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2329
                   GtkTextDirection aDirection = GTK_TEXT_DIR_LTR,
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2330
+                  GtkStateFlags aStateFlags = GTK_STATE_FLAG_NORMAL,
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2331
                   StyleFlags aFlags = NO_STYLE_FLAGS);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2332
 void
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2333
 ReleaseStyleContext(GtkStyleContext* style);
6ab8b16f232c merge latest changes from Factory
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 919
diff changeset
  2334