| 152 | } |
| 153 | |
| 154 | void Int::commit() |
| 155 | { |
| 156 | assert(_setter); |
| 157 | |
| 158 | if (!_spin_box) |
| 159 | return; |
| 160 | |
| 161 | assert(_value); |
| 162 | |
| 163 | GVariant *new_value = NULL; |
| 164 | const GVariantType *const type = g_variant_get_type(_value); |
| 165 | assert(type); |
| 166 | |
| 167 | if (g_variant_type_equal(type, G_VARIANT_TYPE_BYTE)) |
| 168 | new_value = g_variant_new_byte(_spin_box->value()); |
| 169 | else if (g_variant_type_equal(type, G_VARIANT_TYPE_INT16)) |
| 170 | new_value = g_variant_new_int16(_spin_box->value()); |
| 171 | else if (g_variant_type_equal(type, G_VARIANT_TYPE_UINT16)) |
| 172 | new_value = g_variant_new_uint16(_spin_box->value()); |
| 173 | else if (g_variant_type_equal(type, G_VARIANT_TYPE_INT32)) |
| 174 | new_value = g_variant_new_int32(_spin_box->value()); |
| 175 | else if (g_variant_type_equal(type, G_VARIANT_TYPE_UINT32)) |
| 176 | new_value = g_variant_new_int32(_spin_box->value()); |
| 177 | else if (g_variant_type_equal(type, G_VARIANT_TYPE_INT64)) |
| 178 | new_value = g_variant_new_int64(_spin_box->value()); |
| 179 | else if (g_variant_type_equal(type, G_VARIANT_TYPE_UINT64)) |
| 180 | new_value = g_variant_new_uint64(_spin_box->value()); |
| 181 | else |
| 182 | { |
| 183 | // Unexpected value type. |
| 184 | assert(0); |
| 185 | } |
| 186 | |
| 187 | assert(new_value); |
| 188 | |
| 189 | g_variant_unref(_value); |
| 190 | g_variant_ref(new_value); |
| 191 | _value = new_value; |
| 192 | |
| 193 | _setter(new_value); |
| 194 | } |
| 195 | |
| 196 | void Int::on_value_changed(int) |
| 197 | { |
no test coverage detected